From c5b6330368c2fe35725a232c66cf786098fe79fb Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 6 Mar 2023 15:30:59 +0300 Subject: [PATCH 01/42] Update ubuntu:20.04 dockerfile (#636) * Update Dockerfile * Update Dockerfile --------- Co-authored-by: neodiX42 --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 7536a492..38ea6267 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ FROM ubuntu:20.04 as builder RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential cmake clang-6.0 openssl libssl-dev zlib1g-dev gperf wget git ninja-build && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential cmake clang-6.0 openssl libmicrohttpd-dev pkg-config libssl-dev zlib1g-dev gperf wget git ninja-build && \ rm -rf /var/lib/apt/lists/* ENV CC clang-6.0 ENV CXX clang++-6.0 @@ -33,4 +33,4 @@ WORKDIR /var/ton-work/db COPY init.sh control.template ./ RUN chmod +x init.sh -ENTRYPOINT ["/var/ton-work/db/init.sh"] \ No newline at end of file +ENTRYPOINT ["/var/ton-work/db/init.sh"] From eabcb6a8e9847a384b2ba6ad5b03e9af5a4daf43 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Sun, 2 Apr 2023 14:27:31 +0000 Subject: [PATCH 02/42] Better error handling in stack serialization (#664) --- crypto/vm/stack.cpp | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/crypto/vm/stack.cpp b/crypto/vm/stack.cpp index 9a17c8e2..e82b25de 100644 --- a/crypto/vm/stack.cpp +++ b/crypto/vm/stack.cpp @@ -908,23 +908,29 @@ bool Stack::serialize(vm::CellBuilder& cb, int mode) const { if (vsi && !vsi->register_op()) { return false; } - // vm_stack#_ depth:(## 24) stack:(VmStackList depth) = VmStack; - unsigned n = depth(); - if (!cb.store_ulong_rchk_bool(n, 24)) { // vm_stack#_ depth:(## 24) - return false; - } - if (!n) { - return true; - } - vm::CellBuilder cb2; - Ref rest = cb2.finalize(); // vm_stk_nil#_ = VmStackList 0; - for (unsigned i = 0; i < n - 1; i++) { - // vm_stk_cons#_ {n:#} rest:^(VmStackList n) tos:VmStackValue = VmStackList (n + 1); - if (!(cb2.store_ref_bool(std::move(rest)) && stack[i].serialize(cb2, mode) && cb2.finalize_to(rest))) { + try { + // vm_stack#_ depth:(## 24) stack:(VmStackList depth) = VmStack; + unsigned n = depth(); + if (!cb.store_ulong_rchk_bool(n, 24)) { // vm_stack#_ depth:(## 24) return false; } + if (!n) { + return true; + } + vm::CellBuilder cb2; + Ref rest = cb2.finalize(); // vm_stk_nil#_ = VmStackList 0; + for (unsigned i = 0; i < n - 1; i++) { + // vm_stk_cons#_ {n:#} rest:^(VmStackList n) tos:VmStackValue = VmStackList (n + 1); + if (!(cb2.store_ref_bool(std::move(rest)) && stack[i].serialize(cb2, mode) && cb2.finalize_to(rest))) { + return false; + } + } + return cb.store_ref_bool(std::move(rest)) && stack[n - 1].serialize(cb, mode); + } catch (CellBuilder::CellCreateError) { + return false; + } catch (CellBuilder::CellWriteError) { + return false; } - return cb.store_ref_bool(std::move(rest)) && stack[n - 1].serialize(cb, mode); } bool Stack::deserialize(vm::CellSlice& cs, int mode) { From f51eb2d7476b523e4c8e650e8c7ccdede57fd528 Mon Sep 17 00:00:00 2001 From: krigga Date: Sun, 2 Apr 2023 17:28:18 +0300 Subject: [PATCH 03/42] Add debug enabled flag to transaction and TVM emulator (#662) * Add debug enabled flag to transaction and TVM emulator * Set debug_enabled false in Emulator constructor --- crypto/smc-envelope/SmartContract.cpp | 8 ++++---- crypto/smc-envelope/SmartContract.h | 5 +++++ emulator/emulator-emscripten.cpp | 12 +++++++++++- emulator/emulator-extern.cpp | 14 ++++++++++++++ emulator/emulator-extern.h | 16 ++++++++++++++++ emulator/emulator_export_list | 2 ++ emulator/transaction-emulator.cpp | 6 +++++- emulator/transaction-emulator.h | 4 +++- emulator/tvm-emulator.hpp | 4 ++++ 9 files changed, 64 insertions(+), 7 deletions(-) diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 46e90093..7ba768a4 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -168,9 +168,9 @@ td::Ref prepare_vm_c7(SmartContract::Args args) { } SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref stack, td::Ref c7, - vm::GasLimits gas, bool ignore_chksig, td::Ref libraries, int vm_log_verbosity) { + vm::GasLimits gas, bool ignore_chksig, td::Ref libraries, int vm_log_verbosity, bool debug_enabled) { auto gas_credit = gas.gas_credit; - vm::init_op_cp0(); + vm::init_op_cp0(debug_enabled); vm::DictionaryBase::get_empty_dictionary(); class Logger : public td::LogInterface { @@ -289,7 +289,7 @@ SmartContract::Answer SmartContract::run_method(Args args) { args.stack.value().write().push_smallint(args.method_id.unwrap()); auto res = run_smartcont(get_state(), args.stack.unwrap(), args.c7.unwrap(), args.limits.unwrap(), args.ignore_chksig, - args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, args.vm_log_verbosity_level); + args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, args.vm_log_verbosity_level, args.debug_enabled); state_ = res.new_state; return res; } @@ -307,7 +307,7 @@ SmartContract::Answer SmartContract::run_get_method(Args args) const { CHECK(args.method_id); args.stack.value().write().push_smallint(args.method_id.unwrap()); return run_smartcont(get_state(), args.stack.unwrap(), args.c7.unwrap(), args.limits.unwrap(), args.ignore_chksig, - args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, args.vm_log_verbosity_level); + args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, args.vm_log_verbosity_level, args.debug_enabled); } SmartContract::Answer SmartContract::run_get_method(td::Slice method, Args args) const { diff --git a/crypto/smc-envelope/SmartContract.h b/crypto/smc-envelope/SmartContract.h index 6da74bc6..ce349de3 100644 --- a/crypto/smc-envelope/SmartContract.h +++ b/crypto/smc-envelope/SmartContract.h @@ -65,6 +65,7 @@ class SmartContract : public td::CntObject { td::uint64 amount{0}; td::uint64 balance{0}; int vm_log_verbosity_level{0}; + bool debug_enabled{false}; td::optional address; td::optional> config; @@ -135,6 +136,10 @@ class SmartContract : public td::CntObject { this->vm_log_verbosity_level = vm_log_verbosity_level; return std::move(*this); } + Args&& set_debug_enabled(bool debug_enabled) { + this->debug_enabled = debug_enabled; + return std::move(*this); + } td::Result get_method_id() const { if (!method_id) { diff --git a/emulator/emulator-emscripten.cpp b/emulator/emulator-emscripten.cpp index f0f2c903..881664bd 100644 --- a/emulator/emulator-emscripten.cpp +++ b/emulator/emulator-emscripten.cpp @@ -12,6 +12,7 @@ struct TransactionEmulationParams { uint64_t lt; td::optional rand_seed_hex; bool ignore_chksig; + bool debug_enabled; }; td::Result decode_transaction_emulation_params(const char* json) { @@ -37,6 +38,9 @@ td::Result decode_transaction_emulation_params(const TRY_RESULT(ignore_chksig, td::get_json_object_bool_field(obj, "ignore_chksig", false)); params.ignore_chksig = ignore_chksig; + TRY_RESULT(debug_enabled, td::get_json_object_bool_field(obj, "debug_enabled", false)); + params.debug_enabled = debug_enabled; + return params; } @@ -51,6 +55,7 @@ struct GetMethodParams { std::string rand_seed_hex; int64_t gas_limit; int method_id; + bool debug_enabled; }; td::Result decode_get_method_params(const char* json) { @@ -95,6 +100,9 @@ td::Result decode_get_method_params(const char* json) { TRY_RESULT(method_id, td::get_json_object_int_field(obj, "method_id", false)); params.method_id = method_id; + TRY_RESULT(debug_enabled, td::get_json_object_bool_field(obj, "debug_enabled", false)); + params.debug_enabled = debug_enabled; + return params; } @@ -123,6 +131,7 @@ const char *emulate(const char *config, const char* libs, int verbosity, const c !transaction_emulator_set_lt(em, decoded_params.lt) || !transaction_emulator_set_unixtime(em, decoded_params.utime) || !transaction_emulator_set_ignore_chksig(em, decoded_params.ignore_chksig) || + !transaction_emulator_set_debug_enabled(em, decoded_params.debug_enabled) || !rand_seed_set) { transaction_emulator_destroy(em); return strdup(R"({"fail":true,"message":"Can't set params"})"); @@ -163,7 +172,8 @@ const char *run_get_method(const char *params, const char* stack, const char* co if ((decoded_params.libs && !tvm_emulator_set_libraries(tvm, decoded_params.libs.value().c_str())) || !tvm_emulator_set_c7(tvm, decoded_params.address.c_str(), decoded_params.unixtime, decoded_params.balance, decoded_params.rand_seed_hex.c_str(), config) || - (decoded_params.gas_limit > 0 && !tvm_emulator_set_gas_limit(tvm, decoded_params.gas_limit))) { + (decoded_params.gas_limit > 0 && !tvm_emulator_set_gas_limit(tvm, decoded_params.gas_limit)) || + !tvm_emulator_set_debug_enabled(tvm, decoded_params.debug_enabled)) { tvm_emulator_destroy(tvm); return strdup(R"({"fail":true,"message":"Can't set params"})"); } diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 238ff670..31a7b649 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -249,6 +249,14 @@ bool transaction_emulator_set_libs(void *transaction_emulator, const char* shard return true; } +bool transaction_emulator_set_debug_enabled(void *transaction_emulator, bool debug_enabled) { + auto emulator = static_cast(transaction_emulator); + + emulator->set_debug_enabled(debug_enabled); + + return true; +} + void transaction_emulator_destroy(void *transaction_emulator) { delete static_cast(transaction_emulator); } @@ -337,6 +345,12 @@ bool tvm_emulator_set_gas_limit(void *tvm_emulator, int64_t gas_limit) { return true; } +bool tvm_emulator_set_debug_enabled(void *tvm_emulator, bool debug_enabled) { + auto emulator = static_cast(tvm_emulator); + emulator->set_debug_enabled(debug_enabled); + return true; +} + const char *tvm_emulator_run_get_method(void *tvm_emulator, int method_id, const char *stack_boc) { auto stack_cell = boc_b64_to_cell(stack_boc); if (stack_cell.is_error()) { diff --git a/emulator/emulator-extern.h b/emulator/emulator-extern.h index ad5972de..db59a822 100644 --- a/emulator/emulator-extern.h +++ b/emulator/emulator-extern.h @@ -64,6 +64,14 @@ EMULATOR_EXPORT bool transaction_emulator_set_config(void *transaction_emulator, */ EMULATOR_EXPORT bool transaction_emulator_set_libs(void *transaction_emulator, const char* libs_boc); +/** + * @brief Enable or disable TVM debug primitives + * @param transaction_emulator Pointer to TransactionEmulator object + * @param debug_enabled Whether debug primitives should be enabled or not + * @return true in case of success, false in case of error + */ +EMULATOR_EXPORT bool transaction_emulator_set_debug_enabled(void *transaction_emulator, bool debug_enabled); + /** * @brief Emulate transaction * @param transaction_emulator Pointer to TransactionEmulator object @@ -134,6 +142,14 @@ EMULATOR_EXPORT bool tvm_emulator_set_c7(void *tvm_emulator, const char *address */ EMULATOR_EXPORT bool tvm_emulator_set_gas_limit(void *tvm_emulator, int64_t gas_limit); +/** + * @brief Enable or disable TVM debug primitives + * @param tvm_emulator Pointer to TVM emulator + * @param debug_enabled Whether debug primitives should be enabled or not + * @return true in case of success, false in case of error + */ +EMULATOR_EXPORT bool tvm_emulator_set_debug_enabled(void *tvm_emulator, bool debug_enabled); + /** * @brief Run get method * @param tvm_emulator Pointer to TVM emulator diff --git a/emulator/emulator_export_list b/emulator/emulator_export_list index 0e9fd51a..64d4ff59 100644 --- a/emulator/emulator_export_list +++ b/emulator/emulator_export_list @@ -5,6 +5,7 @@ _transaction_emulator_set_rand_seed _transaction_emulator_set_ignore_chksig _transaction_emulator_set_config _transaction_emulator_set_libs +_transaction_emulator_set_debug_enabled _transaction_emulator_emulate_transaction _transaction_emulator_destroy _emulator_set_verbosity_level @@ -12,6 +13,7 @@ _tvm_emulator_create _tvm_emulator_set_libraries _tvm_emulator_set_c7 _tvm_emulator_set_gas_limit +_tvm_emulator_set_debug_enabled _tvm_emulator_run_get_method _tvm_emulator_send_external_message _tvm_emulator_send_internal_message diff --git a/emulator/transaction-emulator.cpp b/emulator/transaction-emulator.cpp index a5fea51c..7c8ade62 100644 --- a/emulator/transaction-emulator.cpp +++ b/emulator/transaction-emulator.cpp @@ -34,7 +34,7 @@ td::Result> TransactionEmu return fetch_res.move_as_error_prefix("cannot fetch config params "); } - vm::init_op_cp0(); + vm::init_op_cp0(debug_enabled_); if (!lt) { lt = lt_; @@ -257,4 +257,8 @@ void TransactionEmulator::set_libs(vm::Dictionary &&libs) { libraries_ = std::forward(libs); } +void TransactionEmulator::set_debug_enabled(bool debug_enabled) { + debug_enabled_ = debug_enabled; +} + } // namespace emulator diff --git a/emulator/transaction-emulator.h b/emulator/transaction-emulator.h index 02f875e2..08343cb8 100644 --- a/emulator/transaction-emulator.h +++ b/emulator/transaction-emulator.h @@ -16,11 +16,12 @@ class TransactionEmulator { ton::LogicalTime lt_; td::BitArray<256> rand_seed_; bool ignore_chksig_; + bool debug_enabled_; public: TransactionEmulator(block::Config&& config, int vm_log_verbosity = 0) : config_(std::move(config)), libraries_(256), vm_log_verbosity_(vm_log_verbosity), - unixtime_(0), lt_(0), rand_seed_(td::BitArray<256>::zero()), ignore_chksig_(false) { + unixtime_(0), lt_(0), rand_seed_(td::BitArray<256>::zero()), ignore_chksig_(false), debug_enabled_(false) { } struct EmulationResult { @@ -70,6 +71,7 @@ public: void set_ignore_chksig(bool ignore_chksig); void set_config(block::Config &&config); void set_libs(vm::Dictionary &&libs); + void set_debug_enabled(bool debug_enabled); private: bool check_state_update(const block::Account& account, const block::gen::Transaction::Record& trans); diff --git a/emulator/tvm-emulator.hpp b/emulator/tvm-emulator.hpp index dfbc20b1..0236f0ca 100644 --- a/emulator/tvm-emulator.hpp +++ b/emulator/tvm-emulator.hpp @@ -31,6 +31,10 @@ public: args_.set_config(config); } + void set_debug_enabled(bool debug_enabled) { + args_.set_debug_enabled(debug_enabled); + } + Answer run_get_method(int method_id, td::Ref stack) { return smc_.run_get_method(args_.set_stack(stack).set_method_id(method_id)); } From 8eb167b76a9e346236f3a2416d86991fc0d2c22c Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 3 Apr 2023 10:13:39 +0300 Subject: [PATCH 04/42] Fix FunC UB (#656) * Fix UB in func * Improve optimizing int consts and unused variables in FunC * Bump funC version to 0.4.3 * Fix analyzing repeat loop --------- Co-authored-by: SpyCheese --- crypto/func/abscode.cpp | 2 +- crypto/func/analyzer.cpp | 7 ++++++- crypto/func/builtins.cpp | 4 ++++ crypto/func/func.h | 4 +++- crypto/func/gen-abscode.cpp | 4 ++++ crypto/func/parse-func.cpp | 10 +++++++++- crypto/parser/symtable.cpp | 4 ++-- crypto/parser/symtable.h | 4 ++-- 8 files changed, 31 insertions(+), 8 deletions(-) diff --git a/crypto/func/abscode.cpp b/crypto/func/abscode.cpp index 21d172cf..933edc3d 100644 --- a/crypto/func/abscode.cpp +++ b/crypto/func/abscode.cpp @@ -179,7 +179,7 @@ void VarDescr::set_const_nan() { void VarDescr::operator|=(const VarDescr& y) { val &= y.val; - if (is_int_const() && cmp(int_const, y.int_const) != 0) { + if (is_int_const() && y.is_int_const() && cmp(int_const, y.int_const) != 0) { val &= ~_Const; } if (!(val & _Const)) { diff --git a/crypto/func/analyzer.cpp b/crypto/func/analyzer.cpp index 5d9b3991..989e9ebe 100644 --- a/crypto/func/analyzer.cpp +++ b/crypto/func/analyzer.cpp @@ -388,7 +388,7 @@ bool Op::compute_used_vars(const CodeBlob& code, bool edit) { for (; l_it < left.cend(); ++l_it, ++r_it) { if (std::find(l_it + 1, left.cend(), *l_it) == left.cend()) { auto p = next_var_info[*l_it]; - new_var_info.add_var(*r_it, !p || p->is_unused()); + new_var_info.add_var(*r_it, edit && (!p || p->is_unused())); new_left.push_back(*l_it); new_right.push_back(*r_it); } @@ -500,7 +500,12 @@ bool Op::compute_used_vars(const CodeBlob& code, bool edit) { } changes = (new_var_info.size() == n); } while (changes <= edit); + assert(left.size() == 1); + bool last = new_var_info.count_used(left) == 0; new_var_info += left; + if (last) { + new_var_info[left[0]]->flags |= VarDescr::_Last; + } return set_var_info(std::move(new_var_info)); } case _Again: { diff --git a/crypto/func/builtins.cpp b/crypto/func/builtins.cpp index b8524bb9..29691034 100644 --- a/crypto/func/builtins.cpp +++ b/crypto/func/builtins.cpp @@ -29,8 +29,12 @@ using namespace std::literals::string_literals; int glob_func_cnt, undef_func_cnt, glob_var_cnt, const_cnt; std::vector glob_func, glob_vars; +std::set prohibited_var_names; SymDef* predefine_builtin_func(std::string name, TypeExpr* func_type) { + if (name.back() == '_') { + prohibited_var_names.insert(name); + } sym_idx_t name_idx = sym::symbols.lookup(name, 1); if (sym::symbols.is_keyword(name_idx)) { std::cerr << "fatal: global function `" << name << "` already defined as a keyword" << std::endl; diff --git a/crypto/func/func.h b/crypto/func/func.h index 27656fed..10039ffa 100644 --- a/crypto/func/func.h +++ b/crypto/func/func.h @@ -19,6 +19,7 @@ #pragma once #include #include +#include #include #include #include @@ -40,7 +41,7 @@ extern std::string generated_from; constexpr int optimize_depth = 20; -const std::string func_version{"0.4.2"}; +const std::string func_version{"0.4.3"}; enum Keyword { _Eof = -1, @@ -839,6 +840,7 @@ struct SymValConst : sym::SymValBase { extern int glob_func_cnt, undef_func_cnt, glob_var_cnt; extern std::vector glob_func, glob_vars; +extern std::set prohibited_var_names; /* * diff --git a/crypto/func/gen-abscode.cpp b/crypto/func/gen-abscode.cpp index a2b98878..6af8e5b8 100644 --- a/crypto/func/gen-abscode.cpp +++ b/crypto/func/gen-abscode.cpp @@ -205,6 +205,10 @@ int Expr::predefine_vars() { case _Var: if (!sym) { assert(val < 0 && here.defined()); + if (prohibited_var_names.count(sym::symbols.get_name(~val))) { + throw src::ParseError{ + here, PSTRING() << "symbol `" << sym::symbols.get_name(~val) << "` cannot be redefined as a variable"}; + } sym = sym::define_symbol(~val, false, here); // std::cerr << "predefining variable " << sym::symbols.get_name(~val) << std::endl; if (!sym) { diff --git a/crypto/func/parse-func.cpp b/crypto/func/parse-func.cpp index 19481a07..06c695bf 100644 --- a/crypto/func/parse-func.cpp +++ b/crypto/func/parse-func.cpp @@ -172,6 +172,10 @@ FormalArg parse_formal_arg(Lexer& lex, int fa_idx) { lex.expect(_Ident, "formal parameter name"); } loc = lex.cur().loc; + if (prohibited_var_names.count(sym::symbols.get_name(lex.cur().val))) { + throw src::ParseError{ + loc, PSTRING() << "symbol `" << sym::symbols.get_name(lex.cur().val) << "` cannot be redefined as a variable"}; + } SymDef* new_sym_def = sym::define_symbol(lex.cur().val, true, loc); if (!new_sym_def) { lex.cur().error_at("cannot define symbol `", "`"); @@ -397,7 +401,7 @@ bool check_global_func(const Lexem& cur, sym_idx_t func_name = 0) { def = sym::define_global_symbol(func_name, 0, cur.loc); assert(def && "cannot define global function"); ++undef_func_cnt; - make_new_glob_func(def, TypeExpr::new_hole()); // was: ... ::new_func() + make_new_glob_func(def, TypeExpr::new_func()); // was: ... ::new_func() return true; } SymVal* val = dynamic_cast(def->value); @@ -1369,6 +1373,10 @@ std::vector parse_type_var_list(Lexer& lex) { throw src::ParseError{lex.cur().loc, "free type identifier expected"}; } auto loc = lex.cur().loc; + if (prohibited_var_names.count(sym::symbols.get_name(lex.cur().val))) { + throw src::ParseError{loc, PSTRING() << "symbol `" << sym::symbols.get_name(lex.cur().val) + << "` cannot be redefined as a variable"}; + } SymDef* new_sym_def = sym::define_symbol(lex.cur().val, true, loc); if (!new_sym_def || new_sym_def->value) { lex.cur().error_at("redefined type variable `", "`"); diff --git a/crypto/parser/symtable.cpp b/crypto/parser/symtable.cpp index a8843da9..d52d9648 100644 --- a/crypto/parser/symtable.cpp +++ b/crypto/parser/symtable.cpp @@ -32,8 +32,8 @@ int scope_level; SymTable<100003> symbols; -SymDef* sym_def[symbols.hprime]; -SymDef* global_sym_def[symbols.hprime]; +SymDef* sym_def[symbols.hprime + 1]; +SymDef* global_sym_def[symbols.hprime + 1]; std::vector> symbol_stack; std::vector scope_opened_at; diff --git a/crypto/parser/symtable.h b/crypto/parser/symtable.h index 9489b2bc..51d59dfa 100644 --- a/crypto/parser/symtable.h +++ b/crypto/parser/symtable.h @@ -161,8 +161,8 @@ struct SymDef { } }; -extern SymDef* sym_def[symbols.hprime]; -extern SymDef* global_sym_def[symbols.hprime]; +extern SymDef* sym_def[symbols.hprime + 1]; +extern SymDef* global_sym_def[symbols.hprime + 1]; extern std::vector> symbol_stack; extern std::vector scope_opened_at; From 35889fa5f5e20c05e016304d2bdf27e0d07e23bc Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Tue, 4 Apr 2023 16:35:25 +0400 Subject: [PATCH 05/42] Update CMakeLists.txt (#665) Introduce USE_EMSCRIPTEN_NO_WASM flag to build emulator without wasm dependencies. --- emulator/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/emulator/CMakeLists.txt b/emulator/CMakeLists.txt index 2fb27519..4e67d32c 100644 --- a/emulator/CMakeLists.txt +++ b/emulator/CMakeLists.txt @@ -51,5 +51,8 @@ if (USE_EMSCRIPTEN) target_link_options(emulator-emscripten PRIVATE -sENVIRONMENT=web) target_link_options(emulator-emscripten PRIVATE -sFILESYSTEM=0) target_link_options(emulator-emscripten PRIVATE -fexceptions) + if (USE_EMSCRIPTEN_NO_WASM) + target_link_options(emulator-emscripten PRIVATE -sWASM=0) + endif() target_compile_options(emulator-emscripten PRIVATE -fexceptions) endif() From e3af63e6c0601a23ddd9f3ff9658e8670469fb47 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Tue, 4 Apr 2023 18:26:02 +0300 Subject: [PATCH 06/42] Fix PUSHSLICE for some unfortunate slice lengths --- crypto/fift/lib/Asm.fif | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/fift/lib/Asm.fif b/crypto/fift/lib/Asm.fif index 5922ee18..85045f29 100644 --- a/crypto/fift/lib/Asm.fif +++ b/crypto/fift/lib/Asm.fif @@ -266,7 +266,7 @@ x{89} @Defop(ref) PUSHREFSLICE x{8A} @Defop(ref) PUSHREFCONT { 1- dup 0< over 8 >= or abort"invalid slice padding" swap 1 1 u, 0 rot u, } : @scomplete -{ tuck sbitrefs swap 17 + swap @havebitrefs not +{ tuck sbitrefs swap 26 + swap @havebitrefs not { PUSHREFSLICE } { over sbitrefs 2dup 123 0 2x<= { drop tuck 4 + 3 >> swap x{8B} s, over 4 u, 3 roll s, From bb21f732fd65411ef949dcda9f7c56962216742a Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Fri, 7 Apr 2023 12:50:07 +0000 Subject: [PATCH 07/42] Recent updates in storage (#667) * Fix error handling in Torrent.cpp, improve choosing peers for upload * Various improvements in storage daemon "get-pieces-info" Store "added at" Improve calculating up/down speed Improve TL protocol for future compatibility Remove empty directories on "--remove-files" Better windows support Debug logs in PeerActor More restrictions on TorrentInfo Bugfixes * Global speed limits for download and upload +bugfix * Reset download/upload speed on changing settings or completion * Exclude some system files in TorrentCreator --- storage/CMakeLists.txt | 5 +- storage/LoadSpeed.cpp | 6 +- storage/LoadSpeed.h | 1 + storage/NodeActor.cpp | 109 ++-- storage/NodeActor.h | 20 +- storage/PeerActor.cpp | 138 ++++- storage/PeerActor.h | 5 + storage/PeerState.h | 6 +- storage/SpeedLimiter.cpp | 82 +++ storage/SpeedLimiter.h | 52 ++ storage/Torrent.cpp | 12 +- storage/TorrentCreator.cpp | 25 +- storage/TorrentInfo.cpp | 6 + storage/storage-cli.cpp | 6 +- storage/storage-daemon/StorageManager.cpp | 106 +++- storage/storage-daemon/StorageManager.h | 14 + storage/storage-daemon/storage-daemon-cli.cpp | 476 +++++++++++++----- storage/storage-daemon/storage-daemon.cpp | 70 +++ storage/test/storage.cpp | 4 +- tl/generate/scheme/ton_api.tl | 44 +- tl/generate/scheme/ton_api.tlo | Bin 84224 -> 86540 bytes 21 files changed, 974 insertions(+), 213 deletions(-) create mode 100644 storage/SpeedLimiter.cpp create mode 100644 storage/SpeedLimiter.h diff --git a/storage/CMakeLists.txt b/storage/CMakeLists.txt index 840dfd46..a5f36ff2 100644 --- a/storage/CMakeLists.txt +++ b/storage/CMakeLists.txt @@ -8,9 +8,11 @@ endif() set(STORAGE_SOURCE LoadSpeed.cpp MerkleTree.cpp + MicrochunkTree.cpp NodeActor.cpp PeerActor.cpp PeerState.cpp + SpeedLimiter.cpp Torrent.cpp TorrentCreator.cpp TorrentHeader.cpp @@ -25,13 +27,14 @@ set(STORAGE_SOURCE PartsHelper.h PeerActor.h PeerState.h + SpeedLimiter.h Torrent.h TorrentCreator.h TorrentHeader.h TorrentInfo.h TorrentMeta.h PeerManager.h - MicrochunkTree.h MicrochunkTree.cpp) + MicrochunkTree.h) set(STORAGE_CLI_SOURCE storage-cli.cpp ) diff --git a/storage/LoadSpeed.cpp b/storage/LoadSpeed.cpp index b47f4120..46aac2ff 100644 --- a/storage/LoadSpeed.cpp +++ b/storage/LoadSpeed.cpp @@ -31,13 +31,17 @@ double LoadSpeed::speed(td::Timestamp now) const { update(now); return (double)total_size_ / duration(now); } +void LoadSpeed::reset() { + events_ = {}; + total_size_ = 0; +} td::StringBuilder &operator<<(td::StringBuilder &sb, const LoadSpeed &speed) { return sb << td::format::as_size(static_cast(speed.speed())) << "/s"; } void LoadSpeed::update(td::Timestamp now) const { - while (duration(now) > 30) { + while (duration(now) > 10) { total_size_ -= events_.front().size; events_.pop(); } diff --git a/storage/LoadSpeed.h b/storage/LoadSpeed.h index 92d947f7..37115b88 100644 --- a/storage/LoadSpeed.h +++ b/storage/LoadSpeed.h @@ -28,6 +28,7 @@ class LoadSpeed { public: void add(td::uint64 size, td::Timestamp now = td::Timestamp::now()); double speed(td::Timestamp now = td::Timestamp::now()) const; + void reset(); friend td::StringBuilder &operator<<(td::StringBuilder &sb, const LoadSpeed &speed); private: diff --git a/storage/NodeActor.cpp b/storage/NodeActor.cpp index 041d74cd..e24fffff 100644 --- a/storage/NodeActor.cpp +++ b/storage/NodeActor.cpp @@ -25,27 +25,14 @@ #include "td/utils/Enumerator.h" #include "td/utils/tests.h" #include "td/utils/overloaded.h" -#include "tl-utils/common-utils.hpp" #include "tl-utils/tl-utils.hpp" #include "auto/tl/ton_api.hpp" #include "td/actor/MultiPromise.h" namespace ton { NodeActor::NodeActor(PeerId self_id, Torrent torrent, td::unique_ptr callback, - td::unique_ptr node_callback, std::shared_ptr db, bool should_download, - bool should_upload) - : self_id_(self_id) - , torrent_(std::move(torrent)) - , callback_(std::move(callback)) - , node_callback_(std::move(node_callback)) - , db_(std::move(db)) - , should_download_(should_download) - , should_upload_(should_upload) { -} - -NodeActor::NodeActor(PeerId self_id, ton::Torrent torrent, td::unique_ptr callback, - td::unique_ptr node_callback, std::shared_ptr db, bool should_download, - bool should_upload, DbInitialData db_initial_data) + td::unique_ptr node_callback, std::shared_ptr db, + SpeedLimiters speed_limiters, bool should_download, bool should_upload) : self_id_(self_id) , torrent_(std::move(torrent)) , callback_(std::move(callback)) @@ -53,6 +40,23 @@ NodeActor::NodeActor(PeerId self_id, ton::Torrent torrent, td::unique_ptr callback, + td::unique_ptr node_callback, std::shared_ptr db, + SpeedLimiters speed_limiters, bool should_download, bool should_upload, + DbInitialData db_initial_data) + : self_id_(self_id) + , torrent_(std::move(torrent)) + , callback_(std::move(callback)) + , node_callback_(std::move(node_callback)) + , db_(std::move(db)) + , should_download_(should_download) + , should_upload_(should_upload) + , added_at_(db_initial_data.added_at) + , speed_limiters_(std::move(speed_limiters)) , pending_set_file_priority_(std::move(db_initial_data.priorities)) , pieces_in_db_(std::move(db_initial_data.pieces_in_db)) { } @@ -100,12 +104,12 @@ void NodeActor::init_torrent() { } } - torrent_info_str_ = - std::make_shared(vm::std_boc_serialize(torrent_.get_info().as_cell()).move_as_ok()); + torrent_info_shared_ = std::make_shared(torrent_.get_info()); for (auto &p : peers_) { auto &state = p.second.state; - state->torrent_info_str_ = torrent_info_str_; + state->torrent_info_ = torrent_info_shared_; CHECK(!state->torrent_info_ready_.exchange(true)); + state->notify_peer(); } LOG(INFO) << "Inited torrent info for " << torrent_.get_hash().to_hex() << ": size=" << torrent_.get_info().file_size << ", pieces=" << torrent_.get_info().pieces_count(); @@ -185,7 +189,7 @@ void NodeActor::loop_will_upload() { auto &state = it.second.state; bool needed = false; if (state->peer_state_ready_) { - needed = state->peer_state_.load().want_download; + needed = state->peer_state_.load().want_download && state->peer_online_; } peers.emplace_back(!needed, !state->node_state_.load().want_download, -it.second.download_speed.speed(), it.first); } @@ -247,6 +251,10 @@ void NodeActor::loop() { } wait_for_completion_.clear(); is_completed_ = true; + download_speed_.reset(); + for (auto &peer : peers_) { + peer.second.download_speed.reset(); + } callback_->on_completed(); } } @@ -398,6 +406,12 @@ void NodeActor::set_should_download(bool should_download) { return; } should_download_ = should_download; + if (!should_download_) { + download_speed_.reset(); + for (auto &peer : peers_) { + peer.second.download_speed.reset(); + } + } db_store_torrent(); yield(); } @@ -407,7 +421,14 @@ void NodeActor::set_should_upload(bool should_upload) { return; } should_upload_ = should_upload; + if (!should_upload_) { + upload_speed_.reset(); + for (auto &peer : peers_) { + peer.second.upload_speed.reset(); + } + } db_store_torrent(); + will_upload_at_ = td::Timestamp::now(); yield(); } @@ -478,6 +499,7 @@ void NodeActor::loop_start_stop_peers() { if (peer.actor.empty()) { auto &state = peer.state = std::make_shared(peer.notifier.get()); + state->speed_limiters_ = speed_limiters_; if (torrent_.inited_info()) { std::vector node_ready_parts; for (td::uint32 i = 0; i < parts_.parts.size(); i++) { @@ -486,7 +508,7 @@ void NodeActor::loop_start_stop_peers() { } } state->node_ready_parts_.add_elements(std::move(node_ready_parts)); - state->torrent_info_str_ = torrent_info_str_; + state->torrent_info_ = torrent_info_shared_; state->torrent_info_ready_ = true; } else { state->torrent_info_response_callback_ = [SelfId = actor_id(this)](td::BufferSlice data) { @@ -575,6 +597,11 @@ void NodeActor::loop_peer(const PeerId &peer_id, Peer &peer) { for (auto part_id : state->peer_ready_parts_.read()) { parts_helper_.on_peer_part_ready(peer.peer_token, part_id); } + if (state->peer_online_set_.load()) { + state->peer_online_set_ = false; + will_upload_at_ = td::Timestamp::now(); + loop_will_upload(); + } // Answer queries from peer bool should_notify_peer = false; @@ -600,7 +627,7 @@ void NodeActor::loop_peer(const PeerId &peer_id, Peer &peer) { TRY_RESULT(proof_serialized, vm::std_boc_serialize(std::move(proof))); res.proof = std::move(proof_serialized); res.data = td::BufferSlice(std::move(data)); - td::uint64 size = res.data.size() + res.proof.size(); + td::uint64 size = res.data.size(); upload_speed_.add(size); peer.upload_speed.add(size); return std::move(res); @@ -701,10 +728,11 @@ void NodeActor::db_store_torrent() { if (!db_) { return; } - auto obj = create_tl_object(); + auto obj = create_tl_object(); obj->active_download_ = should_download_; obj->active_upload_ = should_upload_; obj->root_dir_ = torrent_.get_root_dir(); + obj->added_at_ = added_at_; db_->set(create_hash_tl_object(torrent_.get_hash()), serialize_tl_object(obj, true), [](td::Result R) { if (R.is_error()) { @@ -823,16 +851,18 @@ void NodeActor::db_update_pieces_list() { } void NodeActor::load_from_db(std::shared_ptr db, td::Bits256 hash, td::unique_ptr callback, - td::unique_ptr node_callback, + td::unique_ptr node_callback, SpeedLimiters speed_limiters, td::Promise> promise) { class Loader : public td::actor::Actor { public: Loader(std::shared_ptr db, td::Bits256 hash, td::unique_ptr callback, - td::unique_ptr node_callback, td::Promise> promise) + td::unique_ptr node_callback, SpeedLimiters speed_limiters, + td::Promise> promise) : db_(std::move(db)) , hash_(hash) , callback_(std::move(callback)) , node_callback_(std::move(node_callback)) + , speed_limiters_(std::move(speed_limiters)) , promise_(std::move(promise)) { } @@ -842,9 +872,9 @@ void NodeActor::load_from_db(std::shared_ptr db, td::Bits256 hash, t } void start_up() override { - db::db_get( + db::db_get( *db_, create_hash_tl_object(hash_), false, - [SelfId = actor_id(this)](td::Result> R) { + [SelfId = actor_id(this)](td::Result> R) { if (R.is_error()) { td::actor::send_closure(SelfId, &Loader::finish, R.move_as_error_prefix("Torrent: ")); } else { @@ -853,10 +883,20 @@ void NodeActor::load_from_db(std::shared_ptr db, td::Bits256 hash, t }); } - void got_torrent(tl_object_ptr obj) { - root_dir_ = std::move(obj->root_dir_); - active_download_ = obj->active_download_; - active_upload_ = obj->active_upload_; + void got_torrent(tl_object_ptr obj) { + ton_api::downcast_call(*obj, td::overloaded( + [&](ton_api::storage_db_torrent &t) { + root_dir_ = std::move(t.root_dir_); + active_download_ = t.active_download_; + active_upload_ = t.active_upload_; + added_at_ = (td::uint32)td::Clocks::system(); + }, + [&](ton_api::storage_db_torrentV2 &t) { + root_dir_ = std::move(t.root_dir_); + active_download_ = t.active_download_; + active_upload_ = t.active_upload_; + added_at_ = t.added_at_; + })); db_->get(create_hash_tl_object(hash_), [SelfId = actor_id(this)](td::Result R) { if (R.is_error()) { @@ -980,9 +1020,10 @@ void NodeActor::load_from_db(std::shared_ptr db, td::Bits256 hash, t DbInitialData data; data.priorities = std::move(priorities_); data.pieces_in_db = std::move(pieces_in_db_); + data.added_at = added_at_; finish(td::actor::create_actor("Node", 1, torrent_.unwrap(), std::move(callback_), - std::move(node_callback_), std::move(db_), active_download_, - active_upload_, std::move(data))); + std::move(node_callback_), std::move(db_), std::move(speed_limiters_), + active_download_, active_upload_, std::move(data))); } private: @@ -990,18 +1031,20 @@ void NodeActor::load_from_db(std::shared_ptr db, td::Bits256 hash, t td::Bits256 hash_; td::unique_ptr callback_; td::unique_ptr node_callback_; + SpeedLimiters speed_limiters_; td::Promise> promise_; std::string root_dir_; bool active_download_{false}; bool active_upload_{false}; + td::uint32 added_at_; td::optional torrent_; std::vector priorities_; std::set pieces_in_db_; size_t remaining_pieces_in_db_ = 0; }; td::actor::create_actor("loader", std::move(db), hash, std::move(callback), std::move(node_callback), - std::move(promise)) + std::move(speed_limiters), std::move(promise)) .release(); } diff --git a/storage/NodeActor.h b/storage/NodeActor.h index f8cadce2..2f0a3232 100644 --- a/storage/NodeActor.h +++ b/storage/NodeActor.h @@ -23,6 +23,7 @@ #include "PartsHelper.h" #include "PeerActor.h" #include "Torrent.h" +#include "SpeedLimiter.h" #include "td/utils/Random.h" #include "td/utils/Variant.h" @@ -31,6 +32,7 @@ #include "db.h" namespace ton { + class NodeActor : public td::actor::Actor { public: class NodeCallback { @@ -60,14 +62,15 @@ class NodeActor : public td::actor::Actor { struct DbInitialData { std::vector priorities; std::set pieces_in_db; + td::uint32 added_at; }; NodeActor(PeerId self_id, ton::Torrent torrent, td::unique_ptr callback, - td::unique_ptr node_callback, std::shared_ptr db, bool should_download = true, - bool should_upload = true); + td::unique_ptr node_callback, std::shared_ptr db, SpeedLimiters speed_limiters, + bool should_download = true, bool should_upload = true); NodeActor(PeerId self_id, ton::Torrent torrent, td::unique_ptr callback, - td::unique_ptr node_callback, std::shared_ptr db, bool should_download, - bool should_upload, DbInitialData db_initial_data); + td::unique_ptr node_callback, std::shared_ptr db, SpeedLimiters speed_limiters, + bool should_download, bool should_upload, DbInitialData db_initial_data); void start_peer(PeerId peer_id, td::Promise> promise); struct NodeState { @@ -76,11 +79,12 @@ class NodeActor : public td::actor::Actor { bool active_upload; double download_speed; double upload_speed; + td::uint32 added_at; const std::vector &file_priority; }; void with_torrent(td::Promise promise) { promise.set_value(NodeState{torrent_, should_download_, should_upload_, download_speed_.speed(), - upload_speed_.speed(), file_priority_}); + upload_speed_.speed(), added_at_, file_priority_}); } std::string get_stats_str(); @@ -98,20 +102,22 @@ class NodeActor : public td::actor::Actor { void get_peers_info(td::Promise> promise); static void load_from_db(std::shared_ptr db, td::Bits256 hash, td::unique_ptr callback, - td::unique_ptr node_callback, + td::unique_ptr node_callback, SpeedLimiters speed_limiters, td::Promise> promise); static void cleanup_db(std::shared_ptr db, td::Bits256 hash, td::Promise promise); private: PeerId self_id_; ton::Torrent torrent_; - std::shared_ptr torrent_info_str_; + std::shared_ptr torrent_info_shared_; std::vector file_priority_; td::unique_ptr callback_; td::unique_ptr node_callback_; std::shared_ptr db_; bool should_download_{false}; bool should_upload_{false}; + td::uint32 added_at_{0}; + SpeedLimiters speed_limiters_; class Notifier : public td::actor::Actor { public: diff --git a/storage/PeerActor.cpp b/storage/PeerActor.cpp index b2bf5a89..0cb21c0a 100644 --- a/storage/PeerActor.cpp +++ b/storage/PeerActor.cpp @@ -24,6 +24,7 @@ #include "td/utils/overloaded.h" #include "td/utils/Random.h" +#include "vm/boc.h" namespace ton { @@ -44,7 +45,7 @@ PeerActor::PeerActor(td::unique_ptr callback, std::shared_ptr -td::uint64 PeerActor::create_and_send_query(ArgsT &&... args) { +td::uint64 PeerActor::create_and_send_query(ArgsT &&...args) { return send_query(ton::create_serialize_tl_object(std::forward(args)...)); } @@ -86,7 +87,9 @@ void PeerActor::on_ping_result(td::Result r_answer) { void PeerActor::on_pong() { wait_pong_till_ = td::Timestamp::in(10); - state_->peer_online_ = true; + if (!state_->peer_online_.exchange(true)) { + state_->peer_online_set_ = true; + } notify_node(); } @@ -115,6 +118,11 @@ void PeerActor::on_get_piece_result(PartId piece_id, td::Result res.proof = std::move(piece->proof_); return std::move(res); }(); + if (res.is_error()) { + LOG(DEBUG) << "getPiece " << piece_id << "query: " << res.error(); + } else { + LOG(DEBUG) << "getPiece " << piece_id << "query: OK"; + } state_->node_queries_results_.add_element(std::make_pair(piece_id, std::move(res))); notify_node(); } @@ -130,13 +138,16 @@ void PeerActor::on_get_info_result(td::Result r_answer) { next_get_info_at_ = td::Timestamp::in(5.0); alarm_timestamp().relax(next_get_info_at_); if (r_answer.is_error()) { + LOG(DEBUG) << "getTorrentInfo query: " << r_answer.move_as_error(); return; } auto R = fetch_tl_object(r_answer.move_as_ok(), true); if (R.is_error()) { + LOG(DEBUG) << "getTorrentInfo query: " << R.move_as_error(); return; } td::BufferSlice data = std::move(R.ok_ref()->data_); + LOG(DEBUG) << "getTorrentInfo query: got result (" << data.size() << " bytes)"; if (!data.empty() && !state_->torrent_info_ready_) { state_->torrent_info_response_callback_(std::move(data)); } @@ -245,6 +256,8 @@ void PeerActor::loop_update_init() { update_state_query_.state = node_state; update_state_query_.query_id = 0; + LOG(DEBUG) << "Sending updateInit query (" << update_state_query_.state.want_download << ", " + << update_state_query_.state.will_upload << ", offset=" << peer_init_offset_ * 8 << ")"; update_query_id_ = send_query(std::move(query)); } @@ -265,13 +278,15 @@ void PeerActor::loop_update_state() { auto query = create_update_query( ton::create_tl_object(to_ton_api(update_state_query_.state))); + LOG(DEBUG) << "Sending updateState query (" << update_state_query_.state.want_download << ", " + << update_state_query_.state.will_upload << ")"; update_state_query_.query_id = send_query(std::move(query)); } void PeerActor::update_have_pieces() { auto node_ready_parts = state_->node_ready_parts_.read(); for (auto piece_id : node_ready_parts) { - if (piece_id < peer_init_offset_ + UPDATE_INIT_BLOCK_SIZE) { + if (piece_id < (peer_init_offset_ + UPDATE_INIT_BLOCK_SIZE) * 8 && !have_pieces_.get(piece_id)) { have_pieces_list_.push_back(piece_id); } have_pieces_.set_one(piece_id); @@ -291,23 +306,49 @@ void PeerActor::loop_update_pieces() { have_pieces_list_.erase(have_pieces_list_.end() - count, have_pieces_list_.end()); auto query = create_update_query(ton::create_tl_object( td::transform(sent_have_pieces_list_, [](auto x) { return static_cast(x); }))); + LOG(DEBUG) << "Sending updateHavePieces query (" << sent_have_pieces_list_.size() << " pieces)"; update_query_id_ = send_query(std::move(query)); } } void PeerActor::loop_get_torrent_info() { - if (get_info_query_id_ || state_->torrent_info_ready_) { + if (state_->torrent_info_ready_) { + if (!torrent_info_) { + torrent_info_ = state_->torrent_info_; + for (const auto &u : pending_update_peer_parts_) { + process_update_peer_parts(u); + } + pending_update_peer_parts_.clear(); + } + return; + } + if (get_info_query_id_) { return; } if (next_get_info_at_ && !next_get_info_at_.is_in_past()) { return; } + LOG(DEBUG) << "Sending getTorrentInfo query"; get_info_query_id_ = create_and_send_query(); } void PeerActor::loop_node_get_piece() { for (auto part : state_->node_queries_.read()) { - node_get_piece_.emplace(part, NodePieceQuery{}); + if (state_->speed_limiters_.download.empty()) { + node_get_piece_.emplace(part, NodePieceQuery{}); + } else { + if (!torrent_info_) { + CHECK(state_->torrent_info_ready_); + loop_get_torrent_info(); + } + auto piece_size = + std::min(torrent_info_->piece_size, torrent_info_->file_size - part * torrent_info_->piece_size); + td::actor::send_closure(state_->speed_limiters_.download, &SpeedLimiter::enqueue, (double)piece_size, + td::Timestamp::in(3.0), [part, SelfId = actor_id(this)](td::Result R) { + td::actor::send_closure(SelfId, &PeerActor::node_get_piece_query_ready, part, + std::move(R)); + }); + } } for (auto &query_it : node_get_piece_) { @@ -315,11 +356,21 @@ void PeerActor::loop_node_get_piece() { continue; } + LOG(DEBUG) << "Sending getPiece " << query_it.first << " query"; query_it.second.query_id = create_and_send_query(static_cast(query_it.first)); } } +void PeerActor::node_get_piece_query_ready(PartId part, td::Result R) { + if (R.is_error()) { + on_get_piece_result(part, R.move_as_error()); + } else { + node_get_piece_.emplace(part, NodePieceQuery{}); + } + schedule_loop(); +} + void PeerActor::loop_peer_get_piece() { // process answers for (auto &p : state_->peer_queries_results_.read()) { @@ -328,9 +379,26 @@ void PeerActor::loop_peer_get_piece() { if (promise_it == peer_get_piece_.end()) { continue; } - promise_it->second.promise.set_result(p.second.move_map([](PeerState::Part part) { - return ton::create_serialize_tl_object(std::move(part.proof), std::move(part.data)); - })); + td::Promise promise = + [i = p.first, promise = std::move(promise_it->second.promise)](td::Result R) mutable { + LOG(DEBUG) << "Responding to getPiece " << i << ": " << (R.is_ok() ? "OK" : R.error().to_string()); + promise.set_result(R.move_map([](PeerState::Part part) { + return create_serialize_tl_object(std::move(part.proof), std::move(part.data)); + })); + }; + if (p.second.is_error()) { + promise.set_error(p.second.move_as_error()); + } else { + auto part = p.second.move_as_ok(); + auto size = (double)part.data.size(); + td::Promise P = promise.wrap([part = std::move(part)](td::Unit) mutable { return std::move(part); }); + if (state_->speed_limiters_.upload.empty()) { + P.set_result(td::Unit()); + } else { + td::actor::send_closure(state_->speed_limiters_.upload, &SpeedLimiter::enqueue, size, td::Timestamp::in(3.0), + std::move(P)); + } + } peer_get_piece_.erase(promise_it); notify_node(); } @@ -373,18 +441,8 @@ void PeerActor::execute_add_update(ton::ton_api::storage_addUpdate &add_update, promise.set_error(td::Status::Error(404, "INVALID_SESSION")); return; } - promise.set_value(ton::create_serialize_tl_object()); - std::vector new_peer_ready_parts; - auto add_piece = [&](PartId id) { - if (!peer_have_pieces_.get(id)) { - peer_have_pieces_.set_one(id); - new_peer_ready_parts.push_back(id); - notify_node(); - } - }; - auto seqno = static_cast(add_update.seqno_); auto update_peer_state = [&](PeerState::State peer_state) { if (peer_seqno_ >= seqno) { @@ -393,22 +451,48 @@ void PeerActor::execute_add_update(ton::ton_api::storage_addUpdate &add_update, if (state_->peer_state_ready_ && state_->peer_state_.load() == peer_state) { return; } + LOG(DEBUG) << "Processing update peer state query (" << peer_state.want_download << ", " << peer_state.will_upload + << ")"; peer_seqno_ = seqno; state_->peer_state_.exchange(peer_state); state_->peer_state_ready_ = true; notify_node(); }; + downcast_call( + *add_update.update_, + td::overloaded( + [&](const ton::ton_api::storage_updateHavePieces &have_pieces) {}, + [&](const ton::ton_api::storage_updateState &state) { update_peer_state(from_ton_api(*state.state_)); }, + [&](const ton::ton_api::storage_updateInit &init) { update_peer_state(from_ton_api(*init.state_)); })); + if (torrent_info_) { + process_update_peer_parts(add_update.update_); + } else { + pending_update_peer_parts_.push_back(std::move(add_update.update_)); + } +} - downcast_call(*add_update.update_, +void PeerActor::process_update_peer_parts(const tl_object_ptr &update) { + CHECK(torrent_info_); + td::uint64 pieces_count = torrent_info_->pieces_count(); + std::vector new_peer_ready_parts; + auto add_piece = [&](PartId id) { + if (id < pieces_count && !peer_have_pieces_.get(id)) { + peer_have_pieces_.set_one(id); + new_peer_ready_parts.push_back(id); + notify_node(); + } + }; + downcast_call(*update, td::overloaded( - [&](ton::ton_api::storage_updateHavePieces &have_pieces) { + [&](const ton::ton_api::storage_updateHavePieces &have_pieces) { + LOG(DEBUG) << "Processing updateHavePieces query (" << have_pieces.piece_id_ << " pieces)"; for (auto id : have_pieces.piece_id_) { add_piece(id); } }, - [&](ton::ton_api::storage_updateState &state) { update_peer_state(from_ton_api(*state.state_)); }, - [&](ton::ton_api::storage_updateInit &init) { - update_peer_state(from_ton_api(*init.state_)); + [&](const ton::ton_api::storage_updateState &state) {}, + [&](const ton::ton_api::storage_updateInit &init) { + LOG(DEBUG) << "Processing updateInit query (offset=" << init.have_pieces_offset_ * 8 << ")"; td::Bitset new_bitset; new_bitset.set_raw(init.have_pieces_.as_slice().str()); size_t offset = init.have_pieces_offset_ * 8; @@ -428,7 +512,13 @@ void PeerActor::execute_get_piece(ton::ton_api::storage_getPiece &get_piece, td: void PeerActor::execute_get_torrent_info(td::Promise promise) { td::BufferSlice result = create_serialize_tl_object( - state_->torrent_info_ready_ ? state_->torrent_info_str_->clone() : td::BufferSlice()); + state_->torrent_info_ready_ ? vm::std_boc_serialize(state_->torrent_info_->as_cell()).move_as_ok() + : td::BufferSlice()); + if (state_->torrent_info_ready_) { + LOG(DEBUG) << "Responding to getTorrentInfo: " << result.size() << " bytes"; + } else { + LOG(DEBUG) << "Responding to getTorrentInfo: no info"; + } promise.set_result(std::move(result)); } } // namespace ton diff --git a/storage/PeerActor.h b/storage/PeerActor.h index fd34bc88..a4229e16 100644 --- a/storage/PeerActor.h +++ b/storage/PeerActor.h @@ -59,6 +59,10 @@ class PeerActor : public td::actor::Actor { // startSession td::uint64 node_session_id_; td::Bitset peer_have_pieces_; + std::shared_ptr torrent_info_; + std::vector> pending_update_peer_parts_; + + void process_update_peer_parts(const tl_object_ptr &update); // update td::optional peer_session_id_; @@ -112,6 +116,7 @@ class PeerActor : public td::actor::Actor { td::BufferSlice create_update_query(ton::tl_object_ptr update); void loop_node_get_piece(); + void node_get_piece_query_ready(PartId part, td::Result R); void loop_peer_get_piece(); diff --git a/storage/PeerState.h b/storage/PeerState.h index c578b544..29c080a2 100644 --- a/storage/PeerState.h +++ b/storage/PeerState.h @@ -23,6 +23,8 @@ #include "td/utils/optional.h" #include "td/actor/actor.h" +#include "TorrentInfo.h" +#include "SpeedLimiter.h" #include #include @@ -100,6 +102,8 @@ struct PeerState { std::atomic_bool peer_state_ready_{false}; std::atomic peer_state_{State{false, false}}; std::atomic_bool peer_online_{false}; + std::atomic_bool peer_online_set_{false}; + SpeedLimiters speed_limiters_; struct Part { td::BufferSlice proof; @@ -121,7 +125,7 @@ struct PeerState { // Node -> Peer std::atomic_bool torrent_info_ready_{false}; - std::shared_ptr torrent_info_str_; + std::shared_ptr torrent_info_; std::function torrent_info_response_callback_; const td::actor::ActorId<> node; diff --git a/storage/SpeedLimiter.cpp b/storage/SpeedLimiter.cpp new file mode 100644 index 00000000..952005fe --- /dev/null +++ b/storage/SpeedLimiter.cpp @@ -0,0 +1,82 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include "SpeedLimiter.h" + +namespace ton { + +SpeedLimiter::SpeedLimiter(double max_speed) : max_speed_(max_speed) { +} + +void SpeedLimiter::set_max_speed(double max_speed) { + max_speed_ = max_speed; + auto old_queue = std::move(queue_); + unlock_at_ = (queue_.empty() ? td::Timestamp::now() : queue_.front().execute_at_); + queue_ = {}; + while (!old_queue.empty()) { + auto &e = old_queue.front(); + enqueue(e.size_, e.timeout_, std::move(e.promise_)); + old_queue.pop(); + } + process_queue(); +} + +void SpeedLimiter::enqueue(double size, td::Timestamp timeout, td::Promise promise) { + if (max_speed_ < 0.0) { + promise.set_result(td::Unit()); + return; + } + if (max_speed_ == 0.0) { + promise.set_error(td::Status::Error("Speed limit is 0")); + return; + } + if (timeout < unlock_at_) { + promise.set_error(td::Status::Error("Timeout caused by speed limit")); + return; + } + if (queue_.empty() && unlock_at_.is_in_past()) { + unlock_at_ = td::Timestamp::now(); + promise.set_result(td::Unit()); + } else { + queue_.push({unlock_at_, size, timeout, std::move(promise)}); + } + unlock_at_ = td::Timestamp::in(size / max_speed_, unlock_at_); + if (!queue_.empty()) { + alarm_timestamp() = queue_.front().execute_at_; + } +} + +void SpeedLimiter::alarm() { + process_queue(); +} + +void SpeedLimiter::process_queue() { + while (!queue_.empty()) { + auto &e = queue_.front(); + if (e.execute_at_.is_in_past()) { + e.promise_.set_result(td::Unit()); + queue_.pop(); + } else { + break; + } + } + if (!queue_.empty()) { + alarm_timestamp() = queue_.front().execute_at_; + } +} + +} // namespace ton diff --git a/storage/SpeedLimiter.h b/storage/SpeedLimiter.h new file mode 100644 index 00000000..b6230732 --- /dev/null +++ b/storage/SpeedLimiter.h @@ -0,0 +1,52 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#pragma once +#include "td/actor/actor.h" +#include + +namespace ton { + +class SpeedLimiter : public td::actor::Actor { + public: + explicit SpeedLimiter(double max_speed); + + void set_max_speed(double max_speed); // Negative = unlimited + void enqueue(double size, td::Timestamp timeout, td::Promise promise); + + void alarm() override; + + private: + double max_speed_ = -1.0; + td::Timestamp unlock_at_ = td::Timestamp::never(); + + struct Event { + td::Timestamp execute_at_; + double size_; + td::Timestamp timeout_; + td::Promise promise_; + }; + std::queue queue_; + + void process_queue(); +}; + +struct SpeedLimiters { + td::actor::ActorId download, upload; +}; + +} // namespace ton diff --git a/storage/Torrent.cpp b/storage/Torrent.cpp index 1dafb999..6807519c 100644 --- a/storage/Torrent.cpp +++ b/storage/Torrent.cpp @@ -266,7 +266,9 @@ td::Result Torrent::get_piece_data(td::uint64 piece_i) { if (!inited_info_) { return td::Status::Error("Torrent info not inited"); } - CHECK(piece_i < info_.pieces_count()); + if (piece_i >= info_.pieces_count()) { + return td::Status::Error("Piece idx is too big"); + } if (!piece_is_ready_[piece_i]) { return td::Status::Error("Piece is not ready"); } @@ -291,7 +293,9 @@ td::Result> Torrent::get_piece_proof(td::uint64 piece_i) { if (!inited_info_) { return td::Status::Error("Torrent info not inited"); } - CHECK(piece_i < info_.pieces_count()); + if (piece_i >= info_.pieces_count()) { + return td::Status::Error("Piece idx is too big"); + } return merkle_tree_.gen_proof(piece_i, piece_i); } @@ -305,7 +309,9 @@ td::Status Torrent::add_piece(td::uint64 piece_i, td::Slice data, td::Ref= info_.pieces_count()) { + return td::Status::Error("Piece idx is too big"); + } if (piece_is_ready_[piece_i]) { return td::Status::OK(); } diff --git a/storage/TorrentCreator.cpp b/storage/TorrentCreator.cpp index 35fb8212..ab060023 100644 --- a/storage/TorrentCreator.cpp +++ b/storage/TorrentCreator.cpp @@ -29,18 +29,22 @@ #include "TorrentHeader.hpp" namespace ton { +static bool is_dir_slash(char c) { + return (c == TD_DIR_SLASH) | (c == '/'); +} + td::Result Torrent::Creator::create_from_path(Options options, td::CSlice raw_path) { TRY_RESULT(path, td::realpath(raw_path)); TRY_RESULT(stat, td::stat(path)); std::string root_dir = path; - while (!root_dir.empty() && root_dir.back() == TD_DIR_SLASH) { + while (!root_dir.empty() && is_dir_slash(root_dir.back())) { root_dir.pop_back(); } - while (!root_dir.empty() && root_dir.back() != TD_DIR_SLASH) { + while (!root_dir.empty() && !is_dir_slash(root_dir.back())) { root_dir.pop_back(); } if (stat.is_dir_) { - if (!path.empty() && path.back() != TD_DIR_SLASH) { + if (!path.empty() && !is_dir_slash(path.back())) { path += TD_DIR_SLASH; } if (!options.dir_name) { @@ -50,7 +54,20 @@ td::Result Torrent::Creator::create_from_path(Options options, td::CSli td::Status status; auto walk_status = td::WalkPath::run(path, [&](td::CSlice name, td::WalkPath::Type type) { if (type == td::WalkPath::Type::NotDir) { - status = creator.add_file(td::PathView::relative(name, path), name); + std::string rel_name = td::PathView::relative(name, path).str(); + td::Slice file_name = rel_name; + for (size_t i = 0; i < rel_name.size(); ++i) { + if (is_dir_slash(rel_name[i])) { + rel_name[i] = '/'; + file_name = td::Slice(rel_name.c_str() + i + 1, rel_name.c_str() + rel_name.size()); + } + } + // Exclude OS-created files that can be modified automatically and thus break some torrent pieces + if (file_name == ".DS_Store" || td::to_lower(file_name) == "desktop.ini" || + td::to_lower(file_name) == "thumbs.db") { + return td::WalkPath::Action::Continue; + } + status = creator.add_file(rel_name, name); if (status.is_error()) { return td::WalkPath::Action::Abort; } diff --git a/storage/TorrentInfo.cpp b/storage/TorrentInfo.cpp index 48b0d592..26aa092e 100644 --- a/storage/TorrentInfo.cpp +++ b/storage/TorrentInfo.cpp @@ -73,6 +73,12 @@ td::Status TorrentInfo::validate() const { if (description.size() > 1024) { return td::Status::Error("Description is too long"); } + if (piece_size > (1 << 23)) { + return td::Status::Error("Piece size is too big"); + } + if (pieces_count() >= (1ULL << 31)) { + return td::Status::Error("Too many pieces"); + } return td::Status::OK(); } } // namespace ton diff --git a/storage/storage-cli.cpp b/storage/storage-cli.cpp index 43ddbeaf..858433d1 100644 --- a/storage/storage-cli.cpp +++ b/storage/storage-cli.cpp @@ -458,9 +458,9 @@ class StorageCli : public td::actor::Actor { } auto callback = td::make_unique(actor_id(this), ptr->id, std::move(on_completed)); auto context = PeerManager::create_callback(ptr->peer_manager.get()); - ptr->node = - td::actor::create_actor(PSLICE() << "Node#" << self_id, self_id, ptr->torrent.unwrap(), - std::move(callback), std::move(context), nullptr, should_download); + ptr->node = td::actor::create_actor(PSLICE() << "Node#" << self_id, self_id, ptr->torrent.unwrap(), + std::move(callback), std::move(context), nullptr, + ton::SpeedLimiters{}, should_download); td::TerminalIO::out() << "Torrent #" << ptr->id << " started\n"; promise.release().release(); if (promise) { diff --git a/storage/storage-daemon/StorageManager.cpp b/storage/storage-daemon/StorageManager.cpp index 8edd5224..cf93f735 100644 --- a/storage/storage-daemon/StorageManager.cpp +++ b/storage/storage-daemon/StorageManager.cpp @@ -50,6 +50,29 @@ void StorageManager::start_up() { db_ = std::make_shared( std::make_shared(td::RocksDb::open(db_root_ + "/torrent-db").move_as_ok())); + + db::db_get( + *db_, create_hash_tl_object(), true, + [SelfId = actor_id(this)](td::Result> R) { + if (R.is_error()) { + LOG(ERROR) << "Failed to load config from db: " << R.move_as_error(); + td::actor::send_closure(SelfId, &StorageManager::loaded_config_from_db, nullptr); + } else { + td::actor::send_closure(SelfId, &StorageManager::loaded_config_from_db, R.move_as_ok()); + } + }); +} + +void StorageManager::loaded_config_from_db(tl_object_ptr config) { + if (config) { + LOG(INFO) << "Loaded config from DB. Speed limits: download=" << config->download_speed_limit_ + << ", upload=" << config->upload_speed_limit_; + download_speed_limit_ = config->download_speed_limit_; + upload_speed_limit_ = config->upload_speed_limit_; + td::actor::send_closure(download_speed_limiter_, &SpeedLimiter::set_max_speed, download_speed_limit_); + td::actor::send_closure(upload_speed_limiter_, &SpeedLimiter::set_max_speed, upload_speed_limit_); + } + db::db_get( *db_, create_hash_tl_object(), true, [SelfId = actor_id(this)](td::Result> R) { @@ -79,6 +102,7 @@ void StorageManager::load_torrents_from_db(std::vector torrents) { client_mode_, overlays_, adnl_, rldp_); NodeActor::load_from_db( db_, hash, create_callback(hash, entry.closing_state), PeerManager::create_callback(entry.peer_manager.get()), + SpeedLimiters{download_speed_limiter_.get(), upload_speed_limiter_.get()}, [SelfId = actor_id(this), hash, promise = ig.get_promise()](td::Result> R) mutable { td::actor::send_closure(SelfId, &StorageManager::loaded_torrent_from_db, hash, std::move(R)); @@ -162,9 +186,9 @@ td::Status StorageManager::add_torrent_impl(Torrent torrent, bool start_download client_mode_, overlays_, adnl_, rldp_); auto context = PeerManager::create_callback(entry.peer_manager.get()); LOG(INFO) << "Added torrent " << hash.to_hex() << " , root_dir = " << torrent.get_root_dir(); - entry.actor = - td::actor::create_actor("Node", 1, std::move(torrent), create_callback(hash, entry.closing_state), - std::move(context), db_, start_download, allow_upload); + entry.actor = td::actor::create_actor( + "Node", 1, std::move(torrent), create_callback(hash, entry.closing_state), std::move(context), db_, + SpeedLimiters{download_speed_limiter_.get(), upload_speed_limiter_.get()}, start_download, allow_upload); return td::Status::OK(); } @@ -210,6 +234,18 @@ void StorageManager::get_all_torrents(td::Promise> prom promise.set_result(std::move(result)); } +void StorageManager::db_store_config() { + auto config = create_tl_object(); + config->download_speed_limit_ = download_speed_limit_; + config->upload_speed_limit_ = upload_speed_limit_; + db_->set(create_hash_tl_object(), serialize_tl_object(config, true), + [](td::Result R) { + if (R.is_error()) { + LOG(ERROR) << "Failed to save config to db: " << R.move_as_error(); + } + }); +} + void StorageManager::db_store_torrent_list() { std::vector torrents; for (const auto& p : torrents_) { @@ -259,19 +295,55 @@ void StorageManager::load_from(td::Bits256 hash, td::optional meta, std::move(promise)); } +static bool try_rm_empty_dir(const std::string& path) { + auto stat = td::stat(path); + if (stat.is_error() || !stat.ok().is_dir_) { + return true; + } + size_t cnt = 0; + td::WalkPath::run(path, [&](td::CSlice name, td::WalkPath::Type type) { + if (type != td::WalkPath::Type::ExitDir) { + ++cnt; + } + if (cnt < 2) { + return td::WalkPath::Action::Continue; + } else { + return td::WalkPath::Action::Abort; + } + }).ignore(); + if (cnt == 1) { + td::rmdir(path).ignore(); + return true; + } + return false; +} + void StorageManager::on_torrent_closed(Torrent torrent, std::shared_ptr closing_state) { if (!closing_state->removing) { return; } if (closing_state->remove_files && torrent.inited_header()) { + // Ignore all errors: files may just not exist size_t files_count = torrent.get_files_count().unwrap(); for (size_t i = 0; i < files_count; ++i) { std::string path = torrent.get_file_path(i); td::unlink(path).ignore(); - // TODO: Check errors, remove empty directories + std::string name = torrent.get_file_name(i).str(); + for (int j = (int)name.size() - 1; j >= 0; --j) { + if (name[j] == '/') { + name.resize(j + 1); + if (!try_rm_empty_dir(torrent.get_root_dir() + '/' + torrent.get_header().dir_name + '/' + name)) { + break; + } + } + } + if (!torrent.get_header().dir_name.empty()) { + try_rm_empty_dir(torrent.get_root_dir() + '/' + torrent.get_header().dir_name); + } } } - td::rmrf(db_root_ + "/torrent-files/" + torrent.get_hash().to_hex()).ignore(); + std::string path = db_root_ + "/torrent-files/" + torrent.get_hash().to_hex(); + td::rmrf(path).ignore(); NodeActor::cleanup_db(db_, torrent.get_hash(), [promise = std::move(closing_state->promise)](td::Result R) mutable { if (R.is_error()) { @@ -292,4 +364,28 @@ void StorageManager::get_peers_info(td::Bits256 hash, td::actor::send_closure(entry->actor, &NodeActor::get_peers_info, std::move(promise)); } +void StorageManager::get_speed_limits(td::Promise> promise) { + promise.set_result(std::make_pair(download_speed_limit_, upload_speed_limit_)); +} + +void StorageManager::set_download_speed_limit(double max_speed) { + if (max_speed < 0.0) { + max_speed = -1.0; + } + LOG(INFO) << "Set download speed limit to " << max_speed; + download_speed_limit_ = max_speed; + td::actor::send_closure(download_speed_limiter_, &SpeedLimiter::set_max_speed, max_speed); + db_store_config(); +} + +void StorageManager::set_upload_speed_limit(double max_speed) { + if (max_speed < 0.0) { + max_speed = -1.0; + } + LOG(INFO) << "Set upload speed limit to " << max_speed; + upload_speed_limit_ = max_speed; + td::actor::send_closure(upload_speed_limiter_, &SpeedLimiter::set_max_speed, max_speed); + db_store_config(); +} + } // namespace ton \ No newline at end of file diff --git a/storage/storage-daemon/StorageManager.h b/storage/storage-daemon/StorageManager.h index 102e1b9a..fbfd68eb 100644 --- a/storage/storage-daemon/StorageManager.h +++ b/storage/storage-daemon/StorageManager.h @@ -22,6 +22,7 @@ #include "overlay/overlays.h" #include "storage/PeerManager.h" #include "storage/db.h" +#include "SpeedLimiter.h" namespace ton { @@ -63,6 +64,10 @@ class StorageManager : public td::actor::Actor { void wait_for_completion(td::Bits256 hash, td::Promise promise); void get_peers_info(td::Bits256 hash, td::Promise> promise); + void get_speed_limits(td::Promise> promise); // Download, upload + void set_download_speed_limit(double max_speed); + void set_upload_speed_limit(double max_speed); + private: adnl::AdnlNodeIdShort local_id_; std::string db_root_; @@ -89,6 +94,13 @@ class StorageManager : public td::actor::Actor { std::map torrents_; + double download_speed_limit_ = -1.0; + double upload_speed_limit_ = -1.0; + td::actor::ActorOwn download_speed_limiter_ = + td::actor::create_actor("DownloadRateLimitrer", -1.0); + td::actor::ActorOwn upload_speed_limiter_ = + td::actor::create_actor("DownloadRateLimitrer", -1.0); + td::Status add_torrent_impl(Torrent torrent, bool start_download, bool allow_upload); td::Result get_torrent(td::Bits256 hash) { @@ -102,9 +114,11 @@ class StorageManager : public td::actor::Actor { td::unique_ptr create_callback(td::Bits256 hash, std::shared_ptr closing_state); + void loaded_config_from_db(tl_object_ptr config); void load_torrents_from_db(std::vector torrents); void loaded_torrent_from_db(td::Bits256 hash, td::Result> R); void after_load_torrents_from_db(); + void db_store_config(); void db_store_torrent_list(); void on_torrent_closed(Torrent torrent, std::shared_ptr closing_state); diff --git a/storage/storage-daemon/storage-daemon-cli.cpp b/storage/storage-daemon/storage-daemon-cli.cpp index 4d9345a8..9cb1d417 100644 --- a/storage/storage-daemon/storage-daemon-cli.cpp +++ b/storage/storage-daemon/storage-daemon-cli.cpp @@ -107,6 +107,29 @@ std::string size_to_str(td::uint64 size) { return s.as_cslice().str(); } +td::Result str_to_size(std::string s) { + if (!s.empty() && std::tolower(s.back()) == 'b') { + s.pop_back(); + } + int shift = 0; + if (!s.empty()) { + auto c = std::tolower(s.back()); + static std::string suffixes = "kmgtpe"; + for (size_t i = 0; i < suffixes.size(); ++i) { + if (c == suffixes[i]) { + shift = 10 * (int)(i + 1); + s.pop_back(); + break; + } + } + } + TRY_RESULT(x, td::to_integer_safe(s)); + if (td::count_leading_zeroes64(x) < shift) { + return td::Status::Error("Number is too big"); + } + return x << shift; +} + std::string time_to_str(td::uint32 time) { char time_buffer[80]; time_t rawtime = time; @@ -285,10 +308,13 @@ class StorageDaemonCli : public td::actor::Actor { } std::_Exit(0); } else if (tokens[0] == "help") { - if (tokens.size() != 1) { + std::string category; + if (tokens.size() == 2) { + category = tokens[1]; + } else if (tokens.size() != 1) { return td::Status::Error("Unexpected tokens"); } - return execute_help(); + return execute_help(category); } else if (tokens[0] == "setverbosity") { if (tokens.size() != 2) { return td::Status::Error("Expected level"); @@ -460,6 +486,46 @@ class StorageDaemonCli : public td::actor::Actor { return td::Status::Error("Unexpected EOLN"); } return execute_get_peers(hash, json); + } else if (tokens[0] == "get-pieces-info") { + td::Bits256 hash; + bool found_hash = false; + bool json = false; + bool files = false; + td::uint64 offset = 0; + td::optional max_pieces; + for (size_t i = 1; i < tokens.size(); ++i) { + if (!tokens[i].empty() && tokens[i][0] == '-') { + if (tokens[i] == "--json") { + json = true; + continue; + } + if (tokens[i] == "--files") { + files = true; + continue; + } + if (tokens[i] == "--offset") { + TRY_RESULT_PREFIX_ASSIGN(offset, td::to_integer_safe(tokens[i + 1]), "Invalid offset: "); + ++i; + continue; + } + if (tokens[i] == "--max-pieces") { + TRY_RESULT_PREFIX_ASSIGN(max_pieces, td::to_integer_safe(tokens[i + 1]), "Invalid offset: "); + max_pieces.value() = std::min(max_pieces.value(), ((td::uint64)1 << 62)); + ++i; + continue; + } + return td::Status::Error(PSTRING() << "Unknown flag " << tokens[i]); + } + if (found_hash) { + return td::Status::Error("Unexpected token"); + } + TRY_RESULT_ASSIGN(hash, parse_torrent(tokens[i])); + found_hash = true; + } + if (!found_hash) { + return td::Status::Error("Unexpected EOLN"); + } + return execute_get_pieces_info(hash, files, offset, max_pieces, json); } else if (tokens[0] == "download-pause" || tokens[0] == "download-resume") { if (tokens.size() != 2) { return td::Status::Error("Expected bag"); @@ -544,6 +610,48 @@ class StorageDaemonCli : public td::actor::Actor { return td::Status::Error("Unexpected EOLN"); } return execute_load_from(hash, std::move(meta), std::move(path)); + } else if (tokens[0] == "get-speed-limits") { + bool json = false; + for (size_t i = 1; i < tokens.size(); ++i) { + if (!tokens[i].empty() && tokens[i][0] == '-') { + if (tokens[i] == "--json") { + json = true; + continue; + } + return td::Status::Error(PSTRING() << "Unknown flag " << tokens[i]); + } + return td::Status::Error("Unexpected token"); + } + return execute_get_speed_limits(json); + } else if (tokens[0] == "set-speed-limits") { + td::optional download, upload; + for (size_t i = 1; i < tokens.size(); ++i) { + if (!tokens[i].empty() && tokens[i][0] == '-') { + if (tokens[i] == "--download") { + ++i; + if (tokens[i] == "unlimited") { + download = -1.0; + } else { + TRY_RESULT_PREFIX(x, str_to_size(tokens[i]), "Invalid download speed: "); + download = (double)x; + } + continue; + } + if (tokens[i] == "--upload") { + ++i; + if (tokens[i] == "unlimited") { + upload = -1.0; + } else { + TRY_RESULT_PREFIX(x, str_to_size(tokens[i]), "Invalid upload speed: "); + upload = (double)x; + } + continue; + } + return td::Status::Error(PSTRING() << "Unknown flag " << tokens[i]); + } + return td::Status::Error("Unexpected token"); + } + return execute_set_speed_limits(download, upload); } else if (tokens[0] == "new-contract-message") { td::Bits256 hash; std::string file; @@ -659,12 +767,12 @@ class StorageDaemonCli : public td::actor::Actor { continue; } if (tokens[i] == "--min-file-size") { - TRY_RESULT_PREFIX(x, td::to_integer_safe(tokens[i + 1]), "Invalid value for --min-file-size: "); + TRY_RESULT_PREFIX(x, str_to_size(tokens[i + 1]), "Invalid value for --min-file-size: "); new_params.minimal_file_size = x; continue; } if (tokens[i] == "--max-file-size") { - TRY_RESULT_PREFIX(x, td::to_integer_safe(tokens[i + 1]), "Invalid value for --max-file-size: "); + TRY_RESULT_PREFIX(x, str_to_size(tokens[i + 1]), "Invalid value for --max-file-size: "); new_params.maximal_file_size = x; continue; } @@ -708,7 +816,7 @@ class StorageDaemonCli : public td::actor::Actor { continue; } if (tokens[i] == "--max-total-size") { - TRY_RESULT_PREFIX(x, td::to_integer_safe(tokens[i + 1]), "Invalid value for --max-total-size: "); + TRY_RESULT_PREFIX(x, str_to_size(tokens[i + 1]), "Invalid value for --max-total-size: "); new_config.max_total_size = x; continue; } @@ -765,93 +873,111 @@ class StorageDaemonCli : public td::actor::Actor { } } - td::Status execute_help() { - td::TerminalIO::out() << "help\tPrint this help\n"; - td::TerminalIO::out() - << "create [-d description] [--no-upload] [--copy] [--json] \tCreate bag of files from \n"; - td::TerminalIO::out() << "\t-d\tDescription will be stored in torrent info\n"; - td::TerminalIO::out() << "\t--no-upload\tDon't share bag with peers\n"; - td::TerminalIO::out() << "\t--copy\tFiles will be copied to an internal directory of storage-daemon\n"; - td::TerminalIO::out() << "\t--json\tOutput in json\n"; - td::TerminalIO::out() << "add-by-hash [-d root_dir] [--paused] [--no-upload] [--json] [--partial file1 " - "file2 ...]\tAdd bag with given BagID (in hex)\n"; - td::TerminalIO::out() << "\t-d\tTarget directory, default is an internal directory of storage-daemon\n"; - td::TerminalIO::out() << "\t--paused\tDon't start download immediately\n"; - td::TerminalIO::out() << "\t--no-upload\tDon't share bag with peers\n"; - td::TerminalIO::out() - << "\t--partial\tEverything after this flag is a list of filenames. Only these files will be downloaded.\n"; - td::TerminalIO::out() << "\t--json\tOutput in json\n"; - td::TerminalIO::out() << "add-by-meta [-d root_dir] [--paused] [--no-upload] [--json] [--partial file1 " - "file2 ...]\tLoad meta from file and add bag\n"; - td::TerminalIO::out() << "\tFlags are the same as in add-by-hash\n"; - td::TerminalIO::out() << "list [--hashes] [--json]\tPrint list of bags\n"; - td::TerminalIO::out() << "\t--hashes\tPrint full BagID\n"; - td::TerminalIO::out() << "\t--json\tOutput in json\n"; - td::TerminalIO::out() << "get [--json]\tPrint information about \n"; - td::TerminalIO::out() << "\t--json\tOutput in json\n"; - td::TerminalIO::out() << "\tHere and below bags are identified by BagID (in hex) or index (see bag list)\n"; - td::TerminalIO::out() << "get-meta \tSave bag meta of to \n"; - td::TerminalIO::out() << "get-peers [--json]\tPrint a list of peers\n"; - td::TerminalIO::out() << "\t--json\tOutput in json\n"; - td::TerminalIO::out() << "download-pause \tPause download of \n"; - td::TerminalIO::out() << "download-resume \tResume download of \n"; - td::TerminalIO::out() << "upload-pause \tPause upload of \n"; - td::TerminalIO::out() << "upload-resume \tResume upload of \n"; - td::TerminalIO::out() << "priority-all

\tSet priority of all files in to

\n"; - td::TerminalIO::out() << "\tPriority is in [0..255], 0 - don't download\n"; - td::TerminalIO::out() << "priority-idx

\tSet priority of file # in to

\n"; - td::TerminalIO::out() << "\tPriority is in [0..255], 0 - don't download\n"; - td::TerminalIO::out() << "priority-name

\tSet priority of file in to

\n"; - td::TerminalIO::out() << "\tPriority is in [0..255], 0 - don't download\n"; - td::TerminalIO::out() << "remove [--remove-files]\tRemove \n"; - td::TerminalIO::out() << "\t--remove-files - also remove all files\n"; - td::TerminalIO::out() << "load-from [--meta meta] [--files path]\tProvide meta and data for an existing " - "incomplete bag.\n"; - td::TerminalIO::out() << "\t--meta meta\ttorrent info and header will be inited (if not ready) from meta file\n"; - td::TerminalIO::out() << "\t--files path\tdata for files will be taken from here\n"; - td::TerminalIO::out() << "new-contract-message [--query-id id] --provider \tCreate " - "\"new contract message\" for storage provider. Saves message body to .\n"; - td::TerminalIO::out() << "\t\tAddress of storage provider account to take parameters from.\n"; - td::TerminalIO::out() << "new-contract-message [--query-id id] --rate --max-span " - "\tSame thing, but parameters are not fetched automatically.\n"; - td::TerminalIO::out() << "exit\tExit\n"; - td::TerminalIO::out() << "quit\tExit\n"; - td::TerminalIO::out() << "setverbosity \tSet vetbosity to in [0..10]\n"; - td::TerminalIO::out() << "\nStorage provider control:\n"; - td::TerminalIO::out() << "import-pk \tImport private key from \n"; - td::TerminalIO::out() << "deploy-provider\tInit storage provider by deploying a new provider smart contract\n"; - td::TerminalIO::out() - << "init-provider \tInit storage provider using the existing provider smart contract\n"; - td::TerminalIO::out() << "remove-storage-provider\tRemove storage provider\n"; - td::TerminalIO::out() - << "\tSmart contracts in blockchain and bags will remain intact, but they will not be managed anymore\n"; - td::TerminalIO::out() << "get-provider-params [address] [--json]\tPrint parameters of the smart contract\n"; - td::TerminalIO::out() - << "\taddress\tAddress of a smart contract. Default is the provider managed by this daemon.\n"; - td::TerminalIO::out() << "\t--json\tOutput in json\n"; - td::TerminalIO::out() << "set-provider-params [--accept x] [--rate x] [--max-span x] [--min-file-size x] " - "[--max-file-size x]\tSet parameters of the smart contract\n"; - td::TerminalIO::out() << "\t--accept\tAccept new contracts: 0 (no) or 1 (yes)\n"; - td::TerminalIO::out() << "\t--rate\tPrice of storage, nanoTON per MB*day\n"; - td::TerminalIO::out() << "\t--max-span\n"; - td::TerminalIO::out() << "\t--min-file-size\tMinimal total size of a bag of files (bytes)\n"; - td::TerminalIO::out() << "\t--max-file-size\tMaximal total size of a bag of files (bytes)\n"; - td::TerminalIO::out() - << "get-provider-info [--balances] [--contracts] [--json]\tPrint information about storage provider\n"; - td::TerminalIO::out() << "\t--contracts\tPrint list of storage contracts\n"; - td::TerminalIO::out() << "\t--balances\tPrint balances of the main contract and storage contracts\n"; - td::TerminalIO::out() << "\t--json\tOutput in json\n"; - td::TerminalIO::out() - << "set-provider-config [--max-contracts x] [--max-total-size x]\tSet configuration parameters\n"; - td::TerminalIO::out() << "\t--max-contracts\tMaximal number of storage contracts\n"; - td::TerminalIO::out() << "\t--max-total-size\tMaximal total size storage contracts (in bytes)\n"; - td::TerminalIO::out() << "withdraw

\tSend bounty from storage contract
to the main contract\n"; - td::TerminalIO::out() << "withdraw-all\tSend bounty from all storage contracts (where at least 1 TON is available) " - "to the main contract\n"; - td::TerminalIO::out() - << "send-coins
[--message msg]\tSend nanoTON to
from the main contract\n"; - td::TerminalIO::out() - << "close-contract
\tClose storage contract
and delete bag (if possible)\n"; + td::Status execute_help(std::string category) { + if (category == "") { + td::TerminalIO::out() << "create [-d description] [--no-upload] [--copy] [--json] \tCreate bag of " + "files from \n"; + td::TerminalIO::out() << "\t-d\tDescription will be stored in torrent info\n"; + td::TerminalIO::out() << "\t--no-upload\tDon't share bag with peers\n"; + td::TerminalIO::out() << "\t--copy\tFiles will be copied to an internal directory of storage-daemon\n"; + td::TerminalIO::out() << "\t--json\tOutput in json\n"; + td::TerminalIO::out() << "add-by-hash [-d root_dir] [--paused] [--no-upload] [--json] [--partial file1 " + "file2 ...]\tAdd bag with given BagID (in hex)\n"; + td::TerminalIO::out() << "\t-d\tTarget directory, default is an internal directory of storage-daemon\n"; + td::TerminalIO::out() << "\t--paused\tDon't start download immediately\n"; + td::TerminalIO::out() << "\t--no-upload\tDon't share bag with peers\n"; + td::TerminalIO::out() + << "\t--partial\tEverything after this flag is a list of filenames. Only these files will be downloaded.\n"; + td::TerminalIO::out() << "\t--json\tOutput in json\n"; + td::TerminalIO::out() << "add-by-meta [-d root_dir] [--paused] [--no-upload] [--json] [--partial file1 " + "file2 ...]\tLoad meta from file and add bag\n"; + td::TerminalIO::out() << "\tFlags are the same as in add-by-hash\n"; + td::TerminalIO::out() << "list [--hashes] [--json]\tPrint list of bags\n"; + td::TerminalIO::out() << "\t--hashes\tPrint full BagID\n"; + td::TerminalIO::out() << "\t--json\tOutput in json\n"; + td::TerminalIO::out() << "get [--json]\tPrint information about \n"; + td::TerminalIO::out() << "\t--json\tOutput in json\n"; + td::TerminalIO::out() << "\tHere and below bags are identified by BagID (in hex) or index (see bag list)\n"; + td::TerminalIO::out() << "get-meta \tSave bag meta of to \n"; + td::TerminalIO::out() << "get-peers [--json]\tPrint a list of peers\n"; + td::TerminalIO::out() << "get-pieces-info [--files] [--offset l] [--max-pieces m] [--json]\tPrint " + "information about ready pieces\n"; + td::TerminalIO::out() << "\t--files\tShow piece ranges for each file\n"; + td::TerminalIO::out() << "\t--offset l\tShow pieces starting from l (deafault: 0)\n"; + td::TerminalIO::out() << "\t--max-pieces m\tShow no more than m pieces (deafault: unlimited)\n"; + td::TerminalIO::out() << "\t--json\tOutput in json\n"; + td::TerminalIO::out() << "download-pause \tPause download of \n"; + td::TerminalIO::out() << "download-resume \tResume download of \n"; + td::TerminalIO::out() << "upload-pause \tPause upload of \n"; + td::TerminalIO::out() << "upload-resume \tResume upload of \n"; + td::TerminalIO::out() << "priority-all

\tSet priority of all files in to

\n"; + td::TerminalIO::out() << "\tPriority is in [0..255], 0 - don't download\n"; + td::TerminalIO::out() << "priority-idx

\tSet priority of file # in to

\n"; + td::TerminalIO::out() << "\tPriority is in [0..255], 0 - don't download\n"; + td::TerminalIO::out() << "priority-name

\tSet priority of file in to

\n"; + td::TerminalIO::out() << "\tPriority is in [0..255], 0 - don't download\n"; + td::TerminalIO::out() << "remove [--remove-files]\tRemove \n"; + td::TerminalIO::out() << "\t--remove-files - also remove all files\n"; + td::TerminalIO::out() << "load-from [--meta meta] [--files path]\tProvide meta and data for an existing " + "incomplete bag.\n"; + td::TerminalIO::out() << "\t--meta meta\ttorrent info and header will be inited (if not ready) from meta file\n"; + td::TerminalIO::out() << "\t--files path\tdata for files will be taken from here\n"; + td::TerminalIO::out() << "get-speed-limits [--json]\tShow global limits for download and upload speed\n"; + td::TerminalIO::out() << "\t--json\tOutput in json\n"; + td::TerminalIO::out() + << "set-speed-limits [--download x] [--upload x]\tSet global limits for download and upload speed\n"; + td::TerminalIO::out() << "\t--download x\tDownload speed limit in bytes/s, or \"unlimited\"\n"; + td::TerminalIO::out() << "\t--upload x\tUpload speed limit in bytes/s, or \"unlimited\"\n"; + td::TerminalIO::out() << "new-contract-message [--query-id id] --provider \tCreate " + "\"new contract message\" for storage provider. Saves message body to .\n"; + td::TerminalIO::out() << "\t\tAddress of storage provider account to take parameters from.\n"; + td::TerminalIO::out() << "new-contract-message [--query-id id] --rate --max-span " + "\tSame thing, but parameters are not fetched automatically.\n"; + td::TerminalIO::out() << "exit\tExit\n"; + td::TerminalIO::out() << "quit\tExit\n"; + td::TerminalIO::out() << "setverbosity \tSet vetbosity to in [0..10]\n"; + td::TerminalIO::out() << "help\tPrint this help\n"; + td::TerminalIO::out() << "help provider\tcommands for deploying and controling storage provider\n"; + } else if (category == "provider") { + td::TerminalIO::out() << "\nStorage provider control:\n"; + td::TerminalIO::out() << "import-pk \tImport private key from \n"; + td::TerminalIO::out() << "deploy-provider\tInit storage provider by deploying a new provider smart contract\n"; + td::TerminalIO::out() + << "init-provider \tInit storage provider using the existing provider smart contract\n"; + td::TerminalIO::out() << "remove-storage-provider\tRemove storage provider\n"; + td::TerminalIO::out() + << "\tSmart contracts in blockchain and bags will remain intact, but they will not be managed anymore\n"; + td::TerminalIO::out() << "get-provider-params [address] [--json]\tPrint parameters of the smart contract\n"; + td::TerminalIO::out() + << "\taddress\tAddress of a smart contract. Default is the provider managed by this daemon.\n"; + td::TerminalIO::out() << "\t--json\tOutput in json\n"; + td::TerminalIO::out() << "set-provider-params [--accept x] [--rate x] [--max-span x] [--min-file-size x] " + "[--max-file-size x]\tSet parameters of the smart contract\n"; + td::TerminalIO::out() << "\t--accept\tAccept new contracts: 0 (no) or 1 (yes)\n"; + td::TerminalIO::out() << "\t--rate\tPrice of storage, nanoTON per MB*day\n"; + td::TerminalIO::out() << "\t--max-span\n"; + td::TerminalIO::out() << "\t--min-file-size\tMinimal total size of a bag of files (bytes)\n"; + td::TerminalIO::out() << "\t--max-file-size\tMaximal total size of a bag of files (bytes)\n"; + td::TerminalIO::out() + << "get-provider-info [--balances] [--contracts] [--json]\tPrint information about storage provider\n"; + td::TerminalIO::out() << "\t--contracts\tPrint list of storage contracts\n"; + td::TerminalIO::out() << "\t--balances\tPrint balances of the main contract and storage contracts\n"; + td::TerminalIO::out() << "\t--json\tOutput in json\n"; + td::TerminalIO::out() + << "set-provider-config [--max-contracts x] [--max-total-size x]\tSet configuration parameters\n"; + td::TerminalIO::out() << "\t--max-contracts\tMaximal number of storage contracts\n"; + td::TerminalIO::out() << "\t--max-total-size\tMaximal total size storage contracts (in bytes)\n"; + td::TerminalIO::out() << "withdraw

\tSend bounty from storage contract
to the main contract\n"; + td::TerminalIO::out() + << "withdraw-all\tSend bounty from all storage contracts (where at least 1 TON is available) " + "to the main contract\n"; + td::TerminalIO::out() << "send-coins
[--message msg]\tSend nanoTON to
from " + "the main contract\n"; + td::TerminalIO::out() + << "close-contract
\tClose storage contract
and delete bag (if possible)\n"; + } else { + td::TerminalIO::out() << "Unknown command 'help " << category << "'\n"; + } command_finished(td::Status::OK()); return td::Status::OK(); } @@ -871,7 +997,7 @@ class StorageDaemonCli : public td::actor::Actor { td::Status execute_create(std::string path, std::string description, bool upload, bool copy, bool json) { TRY_RESULT_PREFIX_ASSIGN(path, td::realpath(path), "Invalid path: "); - auto query = create_tl_object(path, description, upload, copy); + auto query = create_tl_object(path, description, upload, copy, 0); send_query(std::move(query), [=, SelfId = actor_id(this)](td::Result> R) { if (R.is_error()) { @@ -904,7 +1030,7 @@ class StorageDaemonCli : public td::actor::Actor { } } auto query = create_tl_object(hash, std::move(root_dir), !paused, upload, - std::move(priorities)); + std::move(priorities), 0); send_query(std::move(query), [=, SelfId = actor_id(this)](td::Result> R) { if (R.is_error()) { @@ -938,7 +1064,7 @@ class StorageDaemonCli : public td::actor::Actor { } } auto query = create_tl_object(std::move(meta), std::move(root_dir), !paused, - upload, std::move(priorities)); + upload, std::move(priorities), 0); send_query(std::move(query), [=, SelfId = actor_id(this)](td::Result> R) { if (R.is_error()) { @@ -957,7 +1083,7 @@ class StorageDaemonCli : public td::actor::Actor { } td::Status execute_list(bool with_hashes, bool json) { - auto query = create_tl_object(); + auto query = create_tl_object(0); send_query(std::move(query), [=, SelfId = actor_id(this)](td::Result> R) { if (R.is_error()) { @@ -975,7 +1101,7 @@ class StorageDaemonCli : public td::actor::Actor { } td::Status execute_get(td::Bits256 hash, bool json) { - auto query = create_tl_object(hash); + auto query = create_tl_object(hash, 0); send_query(std::move(query), [=, SelfId = actor_id(this)](td::Result> R) { if (R.is_error()) { @@ -993,7 +1119,7 @@ class StorageDaemonCli : public td::actor::Actor { } td::Status execute_get_meta(td::Bits256 hash, std::string meta_file) { - auto query = create_tl_object(hash); + auto query = create_tl_object(hash, 0); send_query(std::move(query), [SelfId = actor_id(this), meta_file](td::Result> R) { if (R.is_error()) { @@ -1014,7 +1140,7 @@ class StorageDaemonCli : public td::actor::Actor { } td::Status execute_get_peers(td::Bits256 hash, bool json) { - auto query = create_tl_object(hash); + auto query = create_tl_object(hash, 0); send_query( std::move(query), [=, SelfId = actor_id(this)](td::Result> R) { if (R.is_error()) { @@ -1054,6 +1180,63 @@ class StorageDaemonCli : public td::actor::Actor { return td::Status::OK(); } + td::Status execute_get_pieces_info(td::Bits256 hash, bool files, td::uint64 offset, + td::optional max_pieces, bool json) { + auto query = create_tl_object(hash, files ? 1 : 0, offset, + max_pieces ? max_pieces.value() : -1); + send_query(std::move(query), + [=, SelfId = actor_id(this)](td::Result> R) { + if (R.is_error()) { + return; + } + if (json) { + print_json(R.ok()); + td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); + return; + } + auto obj = R.move_as_ok(); + td::TerminalIO::out() << "BagID " << hash.to_hex() << "\n"; + td::TerminalIO::out() << "Total pieces: " << obj->total_pieces_ << ", piece size: " << obj->piece_size_ + << "\n"; + if (files) { + if (obj->flags_ & 1) { + td::TerminalIO::out() << "Files:\n"; + std::vector> table; + table.push_back({"#####", "Piece range", "Name"}); + size_t i = 0; + for (const auto& f : obj->files_) { + table.push_back({i == 0 ? "" : td::to_string(i - 1), + PSTRING() << "[" << f->range_l_ << ".." << f->range_r_ << ")", + f->name_.empty() ? "[HEADER]" : f->name_}); + ++i; + } + print_table(table, {1, 2}); + } else { + td::TerminalIO::out() << "Cannot show files: torrent header is not available\n"; + } + } + td::uint64 l = obj->range_l_, r = obj->range_r_; + td::TerminalIO::out() << "Pieces [" << l << ".." << r << ")\n"; + if (obj->range_l_ != obj->range_r_) { + std::vector> table; + td::uint64 i = l; + while (i < r) { + td::uint64 ir = std::min(i + 100, r); + std::string s = "["; + for (td::uint64 j = i; j < ir; ++j) { + s += (obj->piece_ready_bitset_[(j - l) / 8] & (1 << ((j - l) % 8)) ? '#' : '-'); + } + s += ']'; + table.push_back({std::to_string(i), s}); + i = ir; + } + print_table(table, {1}); + } + td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); + }); + return td::Status::OK(); + } + td::Status execute_set_active_download(td::Bits256 hash, bool active) { auto query = create_tl_object(hash, active); send_query(std::move(query), @@ -1156,7 +1339,7 @@ class StorageDaemonCli : public td::actor::Actor { if (!path.empty()) { TRY_RESULT_PREFIX_ASSIGN(path, td::realpath(path), "Invalid path: "); } - auto query = create_tl_object(hash, std::move(meta_data), std::move(path)); + auto query = create_tl_object(hash, std::move(meta_data), std::move(path), 0); send_query(std::move(query), [SelfId = actor_id(this)](td::Result> R) { if (R.is_error()) { @@ -1183,6 +1366,59 @@ class StorageDaemonCli : public td::actor::Actor { return td::Status::OK(); } + td::Status execute_get_speed_limits(bool json) { + auto query = create_tl_object(0); + send_query(std::move(query), [=, SelfId = actor_id(this)]( + td::Result> R) { + if (R.is_error()) { + return; + } + if (json) { + print_json(R.ok()); + td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); + return; + } + auto obj = R.move_as_ok(); + if (obj->download_ < 0.0) { + td::TerminalIO::out() << "Download speed limit: unlimited\n"; + } else { + td::TerminalIO::out() << "Download speed limit: " << td::format::as_size((td::uint64)obj->download_) << "/s\n"; + } + if (obj->upload_ < 0.0) { + td::TerminalIO::out() << "Upload speed limit: unlimited\n"; + } else { + td::TerminalIO::out() << "Upload speed limit: " << td::format::as_size((td::uint64)obj->upload_) << "/s\n"; + } + td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); + }); + return td::Status::OK(); + } + + td::Status execute_set_speed_limits(td::optional download, td::optional upload) { + if (!download && !upload) { + return td::Status::Error("No parameters are set"); + } + auto query = create_tl_object(); + query->flags_ = 0; + if (download) { + query->flags_ |= 1; + query->download_ = download.value(); + } + if (upload) { + query->flags_ |= 2; + query->upload_ = upload.value(); + } + send_query(std::move(query), + [SelfId = actor_id(this)](td::Result> R) { + if (R.is_error()) { + return; + } + td::TerminalIO::out() << "Speed limits were set\n"; + td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); + }); + return td::Status::OK(); + } + td::Status execute_new_contract_message(td::Bits256 hash, std::string file, td::uint64 query_id, td::optional provider_address, td::optional rate, td::optional max_span) { @@ -1282,25 +1518,26 @@ class StorageDaemonCli : public td::actor::Actor { td::Status execute_get_provider_params(std::string address, bool json) { auto query = create_tl_object(address); - send_query(std::move(query), - [=, SelfId = actor_id(this)](td::Result> R) { - if (R.is_error()) { - return; - } - if (json) { - print_json(R.ok()); - td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); - return; - } - auto params = R.move_as_ok(); - td::TerminalIO::out() << "Storage provider parameters:\n"; - td::TerminalIO::out() << "Accept new contracts: " << params->accept_new_contracts_ << "\n"; - td::TerminalIO::out() << "Rate (nanoTON per day*MB): " << params->rate_per_mb_day_ << "\n"; - td::TerminalIO::out() << "Max span: " << (td::uint32)params->max_span_ << "\n"; - td::TerminalIO::out() << "Min file size: " << (td::uint64)params->minimal_file_size_ << "\n"; - td::TerminalIO::out() << "Max file size: " << (td::uint64)params->maximal_file_size_ << "\n"; - td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); - }); + send_query(std::move(query), [=, SelfId = actor_id(this)]( + td::Result> R) { + if (R.is_error()) { + return; + } + if (json) { + print_json(R.ok()); + td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); + return; + } + auto params = R.move_as_ok(); + td::TerminalIO::out() << "Storage provider parameters:\n"; + td::TerminalIO::out() << "Accept new contracts: " << params->accept_new_contracts_ << "\n"; + td::TerminalIO::out() << "Rate (nanoTON per day*MB): " << params->rate_per_mb_day_ << "\n"; + td::TerminalIO::out() << "Max span: " << (td::uint32)params->max_span_ << "\n"; + auto min_size = (td::uint64)params->minimal_file_size_, max_size = (td::uint64)params->maximal_file_size_; + td::TerminalIO::out() << "Min file size: " << td::format::as_size(min_size) << " (" << min_size << ")\n"; + td::TerminalIO::out() << "Max file size: " << td::format::as_size(max_size) << " (" << max_size << ")\n"; + td::actor::send_closure(SelfId, &StorageDaemonCli::command_finished, td::Status::OK()); + }); return td::Status::OK(); } @@ -1632,6 +1869,7 @@ class StorageDaemonCli : public td::actor::Actor { add_id(obj.torrent_->hash_); td::TerminalIO::out() << "BagID = " << obj.torrent_->hash_.to_hex() << "\n"; td::TerminalIO::out() << "Index = " << hash_to_id_[obj.torrent_->hash_] << "\n"; + td::TerminalIO::out() << "Added: " << time_to_str(obj.torrent_->added_at_) << "\n"; if (obj.torrent_->flags_ & 4) { // fatal error td::TerminalIO::out() << "FATAL ERROR: " << obj.torrent_->fatal_error_ << "\n"; } diff --git a/storage/storage-daemon/storage-daemon.cpp b/storage/storage-daemon/storage-daemon.cpp index 7563332a..372829f4 100644 --- a/storage/storage-daemon/storage-daemon.cpp +++ b/storage/storage-daemon/storage-daemon.cpp @@ -180,6 +180,9 @@ class StorageDaemon : public td::actor::Actor { dht_id_ = dht_id_full.compute_short_id(); td::actor::send_closure(adnl_, &adnl::Adnl::add_id, dht_id_full, addr_list, static_cast(0)); + LOG(INFO) << "Storage daemon ADNL id is " << local_id_; + LOG(INFO) << "DHT id is " << dht_id_; + if (client_mode_) { auto D = dht::Dht::create_client(dht_id_, db_root_, dht_config_, keyring_.get(), adnl_.get()); D.ensure(); @@ -431,6 +434,52 @@ class StorageDaemon : public td::actor::Actor { })); } + void run_control_query(ton_api::storage_daemon_getTorrentPiecesInfo &query, td::Promise promise) { + td::Bits256 hash = query.hash_; + td::actor::send_closure( + manager_, &StorageManager::with_torrent, hash, + promise.wrap([query = std::move(query)](NodeActor::NodeState state) -> td::Result { + Torrent &torrent = state.torrent; + if (!torrent.inited_info()) { + return td::Status::Error("Torrent info is not available"); + } + td::uint64 total_pieces = torrent.get_info().pieces_count(); + td::uint64 range_l = std::min(total_pieces, query.offset_); + td::uint64 size = query.max_pieces_ != -1 ? std::min(total_pieces - range_l, query.max_pieces_) + : total_pieces - range_l; + td::BufferSlice piece_ready((size + 7) / 8); + std::fill(piece_ready.data(), piece_ready.data() + piece_ready.size(), 0); + for (td::uint64 i = range_l; i < range_l + size; ++i) { + if (torrent.is_piece_ready(i)) { + piece_ready.data()[(i - range_l) / 8] |= (1 << ((i - range_l) % 8)); + } + } + + auto result = create_tl_object(); + result->total_pieces_ = total_pieces; + result->piece_size_ = torrent.get_info().piece_size; + result->range_l_ = range_l; + result->range_r_ = range_l + size; + result->piece_ready_bitset_ = std::move(piece_ready); + + if ((query.flags_ & 1) && torrent.inited_header()) { + result->flags_ = 1; + auto range = torrent.get_header_parts_range(); + result->files_.push_back( + create_tl_object("", range.begin, range.end)); + for (size_t i = 0; i < torrent.get_files_count().value(); ++i) { + auto range = torrent.get_file_parts_range(i); + result->files_.push_back(create_tl_object( + torrent.get_file_name(i).str(), range.begin, range.end)); + } + } else { + result->flags_ = 0; + } + + return serialize_tl_object(result, true); + })); + } + void run_control_query(ton_api::storage_daemon_setFilePriorityAll &query, td::Promise promise) { TRY_RESULT_PROMISE(promise, priority, td::narrow_cast_safe(query.priority_)); td::actor::send_closure(manager_, &StorageManager::set_all_files_priority, query.hash_, priority, @@ -491,6 +540,24 @@ class StorageDaemon : public td::actor::Actor { }); } + void run_control_query(ton_api::storage_daemon_getSpeedLimits &query, td::Promise promise) { + td::actor::send_closure(manager_, &StorageManager::get_speed_limits, + promise.wrap([](std::pair limits) -> td::BufferSlice { + return create_serialize_tl_object(limits.first, + limits.second); + })); + } + + void run_control_query(ton_api::storage_daemon_setSpeedLimits &query, td::Promise promise) { + if (query.flags_ & 1) { + td::actor::send_closure(manager_, &StorageManager::set_download_speed_limit, query.download_); + } + if (query.flags_ & 2) { + td::actor::send_closure(manager_, &StorageManager::set_upload_speed_limit, query.upload_); + } + promise.set_result(create_serialize_tl_object()); + } + void run_control_query(ton_api::storage_daemon_getNewContractMessage &query, td::Promise promise) { td::Promise> P = [promise = std::move(promise), hash = query.hash_, query_id = query.query_id_, @@ -779,6 +846,7 @@ class StorageDaemon : public td::actor::Actor { file->name_ = torrent.get_file_name(i).str(); file->size_ = torrent.get_file_size(i); file->downloaded_size_ = torrent.get_file_ready_size(i); + file->flags_ = 0; obj.files_.push_back(std::move(file)); } } @@ -798,6 +866,7 @@ class StorageDaemon : public td::actor::Actor { obj->active_upload_ = state.active_upload; obj->download_speed_ = state.download_speed; obj->upload_speed_ = state.upload_speed; + obj->added_at_ = state.added_at; promise.set_result(std::move(obj)); }); } @@ -816,6 +885,7 @@ class StorageDaemon : public td::actor::Actor { obj->torrent_->active_upload_ = state.active_upload; obj->torrent_->download_speed_ = state.download_speed; obj->torrent_->upload_speed_ = state.upload_speed; + obj->torrent_->added_at_ = state.added_at; for (size_t i = 0; i < obj->files_.size(); ++i) { obj->files_[i]->priority_ = (i < state.file_priority.size() ? state.file_priority[i] : 1); diff --git a/storage/test/storage.cpp b/storage/test/storage.cpp index b4f67b9b..e7a97352 100644 --- a/storage/test/storage.cpp +++ b/storage/test/storage.cpp @@ -1342,7 +1342,7 @@ TEST(Torrent, Peer) { guard->push_back(td::actor::create_actor( "Node#1", 1, std::move(torrent), td::make_unique(stop_watcher, complete_watcher), - td::make_unique(peer_manager.get(), 1, gen_peers(1, 2)), nullptr)); + td::make_unique(peer_manager.get(), 1, gen_peers(1, 2)), nullptr, ton::SpeedLimiters{})); for (size_t i = 2; i <= peers_n; i++) { ton::Torrent::Options options; options.in_memory = true; @@ -1351,7 +1351,7 @@ TEST(Torrent, Peer) { PSLICE() << "Node#" << i, i, std::move(other_torrent), td::make_unique(stop_watcher, complete_watcher), td::make_unique(peer_manager.get(), i, gen_peers(i, 2)), - nullptr); + nullptr, ton::SpeedLimiters{}); if (i == 3) { td::actor::create_actor("StatsActor", node_actor.get()).release(); diff --git a/tl/generate/scheme/ton_api.tl b/tl/generate/scheme/ton_api.tl index e9b41182..66e6f4a6 100644 --- a/tl/generate/scheme/ton_api.tl +++ b/tl/generate/scheme/ton_api.tl @@ -764,9 +764,12 @@ storage.db.key.torrentMeta hash:int256 = storage.db.key.TorrentMeta; storage.db.key.priorities hash:int256 = storage.db.key.Priorities; storage.db.key.piecesInDb hash:int256 = storage.db.key.PiecesInDb; storage.db.key.pieceInDb hash:int256 idx:long = storage.db.key.PieceInDb; +storage.db.key.config = storage.db.key.Config; +storage.db.config flags:# download_speed_limit:double upload_speed_limit:double = storage.db.Config; storage.db.torrentList torrents:(vector int256) = storage.db.TorrentList; storage.db.torrent root_dir:string active_download:Bool active_upload:Bool = storage.db.TorrentShort; +storage.db.torrentV2 flags:# root_dir:string added_at:int active_download:Bool active_upload:Bool = storage.db.TorrentShort; storage.db.priorities actions:(vector storage.PriorityAction) = storage.db.Priorities; storage.db.piecesInDb pieces:(vector long) = storage.db.PiecesInDb; @@ -794,6 +797,7 @@ storage.provider.db.microchunkTree data:bytes = storage.provider.db.MicrochunkTr storage.daemon.queryError message:string = storage.daemon.QueryError; storage.daemon.success = storage.daemon.Success; + storage.daemon.torrent hash:int256 flags:# // 0 - info ready @@ -802,19 +806,29 @@ storage.daemon.torrent total_size:flags.0?long description:flags.0?string files_count:flags.1?long included_size:flags.1?long dir_name:flags.1?string downloaded_size:long - root_dir:string active_download:Bool active_upload:Bool completed:Bool + added_at:int root_dir:string active_download:Bool active_upload:Bool completed:Bool download_speed:double upload_speed:double fatal_error:flags.2?string = storage.daemon.Torrent; + storage.daemon.fileInfo - name:string size:long + name:string size:long flags:# priority:int downloaded_size:long = storage.daemon.FileInfo; + storage.daemon.torrentFull torrent:storage.daemon.torrent files:(vector storage.daemon.fileInfo) = storage.daemon.TorrentFull; storage.daemon.torrentList torrents:(vector storage.daemon.torrent) = storage.daemon.TorrentList; storage.daemon.torrentMeta meta:bytes = storage.daemon.TorrentMeta; +storage.daemon.filePiecesInfo name:string range_l:long range_r:long = storage.daemon.FilePiecesInfo; +storage.daemon.torrentPiecesInfo + flags:# // 0 - with file ranges + total_pieces:long piece_size:int + range_l:long range_r:long piece_ready_bitset:bytes + files:flags.0?(vector storage.daemon.filePiecesInfo) // files[0] is header + = storage.daemon.TorrentPiecesInfo; + storage.daemon.newContractParams rate:string max_span:int = storage.daemon.NewContractParams; storage.daemon.newContractParamsAuto provider_address:string = storage.daemon.NewContractParams; storage.daemon.newContractMessage body:bytes rate:string max_span:int = storage.daemon.NewContractMessage; @@ -827,6 +841,8 @@ storage.daemon.priorityPending = storage.daemon.SetPriorityStatus; storage.daemon.keyHash key_hash:int256 = storage.daemon.KeyHash; +storage.daemon.speedLimits download:double upload:double = storage.daemon.SpeedLimits; + storage.daemon.providerConfig max_contracts:int max_total_size:long = storage.daemon.ProviderConfig; storage.daemon.contractInfo address:string state:int torrent:int256 created_time:int file_size:long downloaded_size:long rate:string max_span:int client_balance:string contract_balance:string = storage.daemon.ContractInfo; @@ -837,24 +853,32 @@ storage.daemon.providerAddress address:string = storage.daemon.ProviderAddress; ---functions--- storage.daemon.setVerbosity verbosity:int = storage.daemon.Success; -storage.daemon.createTorrent path:string description:string allow_upload:Bool copy_inside:Bool = storage.daemon.TorrentFull; -storage.daemon.addByHash hash:int256 root_dir:string start_download:Bool allow_upload:Bool priorities:(vector storage.PriorityAction) = storage.daemon.TorrentFull; -storage.daemon.addByMeta meta:bytes root_dir:string start_download:Bool allow_upload:Bool priorities:(vector storage.PriorityAction) = storage.daemon.TorrentFull; +storage.daemon.createTorrent path:string description:string allow_upload:Bool copy_inside:Bool flags:# = storage.daemon.TorrentFull; +storage.daemon.addByHash hash:int256 root_dir:string start_download:Bool allow_upload:Bool priorities:(vector storage.PriorityAction) flags:# = storage.daemon.TorrentFull; +storage.daemon.addByMeta meta:bytes root_dir:string start_download:Bool allow_upload:Bool priorities:(vector storage.PriorityAction) flags:# = storage.daemon.TorrentFull; storage.daemon.setActiveDownload hash:int256 active:Bool = storage.daemon.Success; storage.daemon.setActiveUpload hash:int256 active:Bool = storage.daemon.Success; -storage.daemon.getTorrents = storage.daemon.TorrentList; -storage.daemon.getTorrentFull hash:int256 = storage.daemon.TorrentFull; -storage.daemon.getTorrentMeta hash:int256 = storage.daemon.TorrentMeta; +storage.daemon.getTorrents flags:# = storage.daemon.TorrentList; +storage.daemon.getTorrentFull hash:int256 flags:# = storage.daemon.TorrentFull; +storage.daemon.getTorrentMeta hash:int256 flags:# = storage.daemon.TorrentMeta; storage.daemon.getNewContractMessage hash:int256 query_id:long params:storage.daemon.NewContractParams = storage.daemon.NewContractMessage; -storage.daemon.getTorrentPeers hash:int256 = storage.daemon.PeerList; +storage.daemon.getTorrentPeers hash:int256 flags:# = storage.daemon.PeerList; +storage.daemon.getTorrentPiecesInfo hash:int256 + flags:# // 0 - with file ranges + offset:long max_pieces:long + = storage.daemon.TorrentPiecesInfo; storage.daemon.setFilePriorityAll hash:int256 priority:int = storage.daemon.SetPriorityStatus; storage.daemon.setFilePriorityByIdx hash:int256 idx:long priority:int = storage.daemon.SetPriorityStatus; storage.daemon.setFilePriorityByName hash:int256 name:string priority:int = storage.daemon.SetPriorityStatus; storage.daemon.removeTorrent hash:int256 remove_files:Bool = storage.daemon.Success; -storage.daemon.loadFrom hash:int256 meta:bytes path:string = storage.daemon.Torrent; +storage.daemon.loadFrom hash:int256 meta:bytes path:string flags:# = storage.daemon.Torrent; + +storage.daemon.getSpeedLimits flags:# = storage.daemon.SpeedLimits; +storage.daemon.setSpeedLimits flags:# download:flags.0?double upload:flags.1?double = storage.daemon.Success; + storage.daemon.importPrivateKey key:PrivateKey = storage.daemon.KeyHash; storage.daemon.initProvider account_address:string = storage.daemon.Success; diff --git a/tl/generate/scheme/ton_api.tlo b/tl/generate/scheme/ton_api.tlo index 702fbd6a0c352460d7c5afd18bac916f9a57acda..8ce7a57915b72831287ea6490d8590216472546b 100644 GIT binary patch delta 1608 zcmZvce`p(J7{~9;?wX`Owlw{9OD^`>rZ!#LB(1B6I0y+rPQlTZF7>+}3*yj5&fQTq_zua* zq?Ay?GjdYN1lbnz-o@|RD(pw4lloz{H{F1qR^JRfbguBiTc5I4^3-qE>>&n@1v|iY z(FO-rdAK#|hUKd~1jg#%`PDu9h?jxr>pSWvYjK&rjSEE)9};a=t_3cKIW_%-6`2K5l*EXDukA!Gbt&J0 zXyOd-eHkh&==Fe(5vP5Khl%xxqJ90$kY3l?H%!I_&$X7&P5Fw2dSqC0GEOrD7cA!8 zR!gx+3S1v|!PWdIiFu$pW{rj@J&xE&MwLj&o;tb7-i1zQkDHO)MPHg3c^}{OAUCSh zg`(Y!C;HJD*cx@?MIU16C)ywV0B`jZ5A525HcA#udr_SBezf!wR=miA8~c$JzwSjZ zz>PeuH5#v8Y7ziOAUZD2z{JUMI!b}jMKsMlQ`r<9!PI` zin?YCnf^U^I7LhjyzWCgEA7BXOYP8e!_dDzuPlvbJJWB-oyIPjPc?Z%hA*qGlb&I;P1a)@m3?%+T%8)+@C9IN#IsvqKJ?a fTj1=Pt=SkWdLwBsK+uJq_(?CaWna7-#qIwCIdMMe delta 532 zcmeBK!rCy2mG{wXeJchi__dMuvOLQaC!fg4Pvi|Y2Pil&O+KMy!s5nvE@hJPjmZ)! z6`K#Ja4@pWGS^)@`HZT>eogC<;K3zedamDlwBSs09H;b)HrgIp8WTrD(GOAD3IIl9j!ho>_EIr-A zkTHiPi-&i@^c9AT8jLK{FB&pV23fLwf)S$t6N}4|cXuLLqmOfJY2nGTX* z;a@3e1rnEsm{>c+g z3b2Om-_|MxQBus{Bq8Gu^5FCf=8SJx&J?wEO+R44hzLsN=?^U!lP7OD&H)a Date: Mon, 10 Apr 2023 09:32:49 +0300 Subject: [PATCH 08/42] Add notes on mainnet version to config-code --- crypto/smartcont/config-code.fc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crypto/smartcont/config-code.fc b/crypto/smartcont/config-code.fc index a638144e..b3aa04c4 100644 --- a/crypto/smartcont/config-code.fc +++ b/crypto/smartcont/config-code.fc @@ -1,4 +1,6 @@ ;; Simple configuration smart contract +;; Currently deployed config-contract in mainnet can be found +;; on https://verifier.ton.org/Ef9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVbxn () set_conf_param(int index, cell value) impure { var cs = get_data().begin_parse(); @@ -397,6 +399,7 @@ int register_voting_proposal(slice cs, int msg_value) impure inline_ref { hash = -0xcd506e6c; ;; cannot set mandatory parameter to null } } + ;; Note, in config contract currently deployed in mainnet, this limit is 256 if (param_val.cell_depth() >= 128) { hash = -0xc2616456; ;; bad value } @@ -601,7 +604,7 @@ _ unpack_proposal(slice pstatus) inline_ref { voters_list = cons(voter_id, voters_list); } } until (~ f); - ;; Note there is a bug in config contract currently deployed in testnet2: + ;; Note there is a bug in config contract currently deployed in mainnet: ;; wins and losses are messed up var (rounds_remaining, wins, losses) = (rest~load_uint(8), rest~load_uint(8), rest~load_uint(8)); rest.end_parse(); From 479edc909f5d62b9a35bc09b4dc0e38b52d198b1 Mon Sep 17 00:00:00 2001 From: Andrey Pfau Date: Mon, 10 Apr 2023 11:10:56 +0400 Subject: [PATCH 09/42] fix date for matching to version in release (#639) --- Changelog.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Changelog.md b/Changelog.md index be18efc2..cd2ac755 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,18 +1,18 @@ -## 03.2023 Update +## 2023.03 Update 1. Improvement of ADNL connection stability 2. Transaction emulator support and getAccountStateByTransaction method 3. Fixes of typos, undefined behavior and timer warnings 4. Handling incorrect integer literal values in funC; funC version bumped to 0.4.2 5. FunC Mathlib -## 01.2023 Update +## 2023.01 Update 1. Added ConfigParam 44: `SuspendedAddressList`. Upon being set this config suspends initialisation of **uninit** addresses from the list for given time. 2. FunC: `v0.4.1` added pragmas for precise control of computation order 3. FunC: fixed compiler crashes for some exotic inputs 4. FunC: added legacy tester, a collection of smart-contracts which is used to check whether compilator update change compilation result 5. Improved archive manager: proper handling of recently garbage-collected blocks -## 12.2022 Update +## 2022.12 Update Node update: 1. Improvements of ton-proxy: fixed few bugs, improved stability 2. Improved collator/validator checks, added optimization of storage stat calculation, generation and validation of new blocks is made safer @@ -27,7 +27,7 @@ Node update: Besides the work of the core team, this update is based on the efforts of @vtamara (help with abseil-cpp upgrade), @krigga(in-place modification of global variables) and third-party security auditors. -## 10.2022 Update +## 2022.10 Update * Added extended block creation and general perfomance stats gathering * Forbidden report data on blocks not committed to the master chain for LS * Improved debug in TVM @@ -39,7 +39,7 @@ Besides the work of the core team, this update is based on the efforts of @vtama Besides the work of the core team, this update is based on the efforts of @tvorogme (debug improvements), @AlexeyFSL (WASM builds) and third-party security auditors. -## 08.2022 Update +## 2022.08 Update * Blockchain state serialization now works via separate db-handler which simplfies memory clearing after serialization * CellDB now works asynchronously which substantially increase database access throughput * Abseil-cpp and crc32 updated: solve issues with compilation on recent OS distributives @@ -54,7 +54,7 @@ Update coincided with persistent state serialization event which lead to block p Besides the work of the core team, this update is based on the efforts of @awesome-doge (help with abseil-cpp upgrade), @rec00rsiff (noted issues for exotic endianess and implemented network stats) and third-party security auditors. -## 05.2022 Update +## 2022.05 Update * Initial synchronization improved: adjusted timeouts for state download and the way of choosing which state to download. Nodes with low network speed and/or bad connectivity will synchronize faster and consistently. * Improved peer-to-peer network stability and DDoS resistance: now peers will only relay valid messages to the network. Large messages, which require splitting for relaying, will be retranslated as well, but only after the node gets all parts, and reassembles and checks them. Validators may sign certificates for network peers, which allow relaying large messages by parts without checks. It is used now by validators to faster relay new blocks. Sign and import certificate commands are exposed via `validator-engine-console`. * Fixed some rare edge cases in TVM arithmetic operations related to big numbers (`2**63+`) From f55ddb3de86c1d280fb47cc509f78efa105ce236 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 10 Apr 2023 10:41:21 +0300 Subject: [PATCH 10/42] Update Changelog --- Changelog.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Changelog.md b/Changelog.md index cd2ac755..9fd649c4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,13 @@ +## 2023.04 Update +1. CPU load optimization: previous DHT reconnect policy was too aggressive +2. Network throughput improvements: granular control on external message broadcast, optimize celldb GC, adjust state serialization and block downloading timings, rldp2 for states and archives +3. Update for Fift (namespaces) and Fift libraries (list of improvements: https://github.com/ton-blockchain/ton/issues/631) +4. Better handling of incorrect inputs in funC: fix UB and prevent crashes on some inputs, improve optimizing int consts and unused variables in FunC, fix analyzing repeat loop. FunC version is increase to 0.4.3. +5. `listBlockTransactionsExt` in liteserver added +6. Tvm emulator improvements + +Besides the work of the core team, this update is based on the efforts of @krigga (tvm emulator improvement), @ex3ndr (`PUSHSLICE` fift-asm improvement) and [sec3-service](https://github.com/sec3-service) security auditors (funC improvements). + ## 2023.03 Update 1. Improvement of ADNL connection stability 2. Transaction emulator support and getAccountStateByTransaction method From fd4c512de51251b8a5cbd62f3d2cb24063292e42 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 17 Apr 2023 15:54:33 +0300 Subject: [PATCH 11/42] Move JettonBridge config num for BNB, Polygon --- crypto/block/block.tlb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index 8662e243..0c8fdb83 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -778,8 +778,8 @@ jetton_bridge_params_v0#00 bridge_address:bits256 oracles_address:bits256 oracle jetton_bridge_params_v1#01 bridge_address:bits256 oracles_address:bits256 oracles:(HashmapE 256 uint256) state_flags:uint8 prices:^JettonBridgePrices external_chain_address:bits256 = JettonBridgeParams; _ JettonBridgeParams = ConfigParam 79; // ETH->TON token bridge -_ JettonBridgeParams = ConfigParam 80; // BNB->TON token bridge -_ JettonBridgeParams = ConfigParam 81; // Polygon->TON token bridge +_ JettonBridgeParams = ConfigParam 81; // BNB->TON token bridge +_ JettonBridgeParams = ConfigParam 82; // Polygon->TON token bridge // From 8d919a5db9af1af66ac6475ce28249e157a5deb2 Mon Sep 17 00:00:00 2001 From: Ilyar <761285+ilyar@users.noreply.github.com> Date: Wed, 19 Apr 2023 19:09:15 +0200 Subject: [PATCH 12/42] add missing VM opcode definition (#670) --- crypto/fift/lib/Asm.fif | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crypto/fift/lib/Asm.fif b/crypto/fift/lib/Asm.fif index 85045f29..937358e0 100644 --- a/crypto/fift/lib/Asm.fif +++ b/crypto/fift/lib/Asm.fif @@ -1194,6 +1194,11 @@ x{FA01} @Defop LDVARINT16 x{FA02} dup @Defop STGRAMS @Defop STVARUINT16 x{FA03} @Defop STVARINT16 +x{FA04} @Defop LDVARUINT32 // (s -- x s') +x{FA05} @Defop LDVARINT32 // (s -- x s') +x{FA06} @Defop STVARUINT32 // (b x -- b') +x{FA07} @Defop STVARINT32 // (b x -- b') + x{FA40} @Defop LDMSGADDR x{FA41} @Defop LDMSGADDRQ x{FA42} @Defop PARSEMSGADDR From 8b0d6a2665cb8049dbe08790172874143a07db8a Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 19 Apr 2023 21:29:41 +0300 Subject: [PATCH 13/42] Add WASM FunC autotests (#673) * feat: func wasm autotests * fixes necessary for func wasm autotests --------- Co-authored-by: krigga --- crypto/func/asmops.cpp | 6 +- crypto/func/auto-tests/legacy_tester.js | 27 ++++++++ crypto/func/auto-tests/legacy_tests.json | 1 + crypto/func/auto-tests/run_tests.js | 77 +++++++++++++++++++++ crypto/func/auto-tests/wasm_tests_common.js | 63 +++++++++++++++++ crypto/funcfiftlib/funcfiftlib.cpp | 1 + 6 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 crypto/func/auto-tests/legacy_tester.js create mode 100644 crypto/func/auto-tests/legacy_tests.json create mode 100644 crypto/func/auto-tests/run_tests.js create mode 100644 crypto/func/auto-tests/wasm_tests_common.js diff --git a/crypto/func/asmops.cpp b/crypto/func/asmops.cpp index ccc409d3..71ee58f6 100644 --- a/crypto/func/asmops.cpp +++ b/crypto/func/asmops.cpp @@ -166,7 +166,7 @@ AsmOp AsmOp::UnTuple(int a) { AsmOp AsmOp::IntConst(td::RefInt256 x) { if (x->signed_fits_bits(8)) { - return AsmOp::Const(dec_string(std::move(x)) + " PUSHINT", x); + return AsmOp::Const(dec_string(x) + " PUSHINT", x); } if (!x->is_valid()) { return AsmOp::Const("PUSHNAN", x); @@ -184,9 +184,9 @@ AsmOp AsmOp::IntConst(td::RefInt256 x) { return AsmOp::Const(k, "PUSHNEGPOW2", x); } if (!x->mod_pow2_short(23)) { - return AsmOp::Const(dec_string(std::move(x)) + " PUSHINTX", x); + return AsmOp::Const(dec_string(x) + " PUSHINTX", x); } - return AsmOp::Const(dec_string(std::move(x)) + " PUSHINT", x); + return AsmOp::Const(dec_string(x) + " PUSHINT", x); } AsmOp AsmOp::BoolConst(bool f) { diff --git a/crypto/func/auto-tests/legacy_tester.js b/crypto/func/auto-tests/legacy_tester.js new file mode 100644 index 00000000..57092d68 --- /dev/null +++ b/crypto/func/auto-tests/legacy_tester.js @@ -0,0 +1,27 @@ +const fs = require('fs/promises'); +const { compileWasm, compileFile } = require('./wasm_tests_common'); + +async function main() { + const tests = JSON.parse((await fs.readFile('../legacy_tests.json')).toString('utf-8')) + + for (const [filename, hashstr] of tests) { + if (filename.includes('storage-provider')) continue; + + const mod = await compileWasm() + + const response = await compileFile(mod, filename); + + if (response.status !== 'ok') { + console.error(response); + throw new Error('Could not compile ' + filename); + } + + if (BigInt('0x' + response.codeHashHex) !== BigInt(hashstr)) { + throw new Error('Compilation result is different for ' + filename); + } + + console.log(filename, 'ok'); + } +} + +main() \ No newline at end of file diff --git a/crypto/func/auto-tests/legacy_tests.json b/crypto/func/auto-tests/legacy_tests.json new file mode 100644 index 00000000..61a433bb --- /dev/null +++ b/crypto/func/auto-tests/legacy_tests.json @@ -0,0 +1 @@ +[["elector/elector-code.fc", "115226404411715505328583639896096915745686314074575650766750648324043316883483"], ["config/config-code.fc", "10913070768607625342121305745084703121685937915388357634624451844356456145601"], ["eth-bridge-multisig/multisig-code.fc", "101509909129354488841890823627011033360100627957439967918234053299675481277954"], ["bsc-bridge-collector/votes-collector.fc", "62190447221288642706570413295807615918589884489514159926097051017036969900417"], ["uni-lock-wallet/uni-lockup-wallet.fc", "61959738324779104851267145467044677651344601417998258530238254441977103654381"], ["nft-collection/nft-collection-editable.fc", "45561997735512210616567774035540357815786262097548276229169737015839077731274"], ["dns-collection/nft-collection.fc", "107999822699841936063083742021519765435859194241091312445235370766165379261859"], ["tele-nft-item/nft-item.fc", "69777543125381987786450436977742010705076866061362104025338034583422166453344"], ["storage/storage-contract.fc", "91377830060355733016937375216020277778264560226873154627574229667513068328151"], ["storage/storage-provider.fc", "13618336676213331164384407184540461509022654507176709588621016553953760588122"], ["nominator-pool/pool.fc", "69767057279163099864792356875696330339149706521019810113334238732928422055375"], ["jetton-minter/jetton-minter.fc", "9028309926287301331466371999814928201427184114165428257502393474125007156494"], ["gg-marketplace/nft-marketplace-v2.fc", "92199806964112524639740773542356508485601908152150843819273107618799016205930"], ["jetton-wallet/jetton-wallet.fc", "86251125787443633057458168028617933212663498001665054651523310772884328206542"], ["whales-nominators/nominators.fc", "8941364499854379927692172316865293429893094891593442801401542636695127885153"], ["tact-examples/treasure_Treasure.code.fc", "13962538639825790677138656603323869918938565499584297120566680287245364723897"], ["tact-examples/jetton_SampleJetton.code.fc", "94076762218493729104783735200107713211245710256802265203823917715299139499110"], ["tact-examples/jetton_JettonDefaultWallet.code.fc", "29421313492520031238091587108198906058157443241743283101866538036369069620563"], ["tact-examples/maps_MapTestContract.code.fc", "22556550222249123835909180266811414538971143565993192846012583552876721649744"]] \ No newline at end of file diff --git a/crypto/func/auto-tests/run_tests.js b/crypto/func/auto-tests/run_tests.js new file mode 100644 index 00000000..f8e6c6a7 --- /dev/null +++ b/crypto/func/auto-tests/run_tests.js @@ -0,0 +1,77 @@ +const fs = require('fs/promises'); +const os = require('os'); +const path = require('path'); +const { compileWasm, compileFile } = require('./wasm_tests_common'); +const { execSync } = require('child_process'); + +async function main() { + const compiledPath = path.join(os.tmpdir(), 'compiled.fif'); + const runnerPath = path.join(os.tmpdir(), 'runner.fif'); + + const tests = (await fs.readdir('.')).filter(f => f.endsWith('.fc')).sort(); + + const mathChars = '0x123456789()+-*/<>'.split('') + + for (const testFile of tests) { + const mod = await compileWasm() + + const result = await compileFile(mod, testFile) + + if (result.status !== 'ok') { + console.error(result); + throw new Error('Could not compile ' + filename); + } + + const fileLines = (await fs.readFile(testFile)).toString('utf-8').split('\n'); + + const testCases = []; + + for (const line of fileLines) { + const parts = line.split('|').map(c => c.trim()); + + if (parts.length !== 4 || parts[0] !== 'TESTCASE') continue; + + const processedInputs = []; + + for (const input of parts[2].split(' ')) { + if (input.includes('x{')) { + processedInputs.push(input); + continue; + } + + if (input.length === 0) { + continue + } + + const replacedInput = input.split('').filter(c => mathChars.includes(c)).join('').replace('//', '/').replace(/([0-9a-f])($|[^0-9a-fx])/gmi, '$1n$2') + + processedInputs.push(eval(replacedInput).toString()); + } + + testCases.push([parts[1], processedInputs.join(' '), parts[3]]); + } + + await fs.writeFile(compiledPath, '"Asm.fif" include\n' + JSON.parse('"' + result.fiftCode + '"')); + await fs.writeFile(runnerPath, `"${compiledPath}" include `${t[1]} ${t[0]} code 1 runvmx abort"exitcode is not 0" .s cr { drop } depth 1- times`).join('\n')}`) + + const fiftResult = execSync(`${process.env.FIFT_EXECUTABLE || 'fift'} -I ${process.env.FIFT_LIBS} /tmp/runner.fif`, { + stdio: ['pipe', 'pipe', 'ignore'] + }).toString('utf-8') + + const testResults = fiftResult.split('\n').map(s => s.trim()).filter(s => s.length > 0) + + if (testResults.length !== testCases.length) { + throw new Error(`Got ${testResults.length} results but there are ${testCases.length} cases`) + } + + for (let i = 0; i < testResults.length; i++) { + if (testResults[i] !== testCases[i][2]) { + throw new Error(`Unequal result ${testResults[i]} and case ${testCases[i][2]}`) + } + } + + console.log(testFile, 'ok') + } +} + +main() \ No newline at end of file diff --git a/crypto/func/auto-tests/wasm_tests_common.js b/crypto/func/auto-tests/wasm_tests_common.js new file mode 100644 index 00000000..84d8e0d5 --- /dev/null +++ b/crypto/func/auto-tests/wasm_tests_common.js @@ -0,0 +1,63 @@ +const fsSync = require('fs'); + +const copyToCString = (mod, str) => { + const len = mod.lengthBytesUTF8(str) + 1; + const ptr = mod._malloc(len); + mod.stringToUTF8(str, ptr, len); + return ptr; +}; + +const copyToCStringPtr = (mod, str, ptr) => { + const allocated = copyToCString(mod, str); + mod.setValue(ptr, allocated, '*'); + return allocated; +}; + +const copyFromCString = (mod, ptr) => { + return mod.UTF8ToString(ptr); +}; + +async function compileFile(mod, filename) { + const callbackPtr = mod.addFunction((_kind, _data, contents, error) => { + const kind = copyFromCString(mod, _kind); + const data = copyFromCString(mod, _data); + if (kind === 'realpath') { + copyToCStringPtr(mod, fsSync.realpathSync(data), contents); + } else if (kind === 'source') { + const path = fsSync.realpathSync(data); + try { + copyToCStringPtr(mod, fsSync.readFileSync(path).toString('utf-8'), contents); + } catch (err) { + copyToCStringPtr(mod, e.message, error); + } + } else { + copyToCStringPtr(mod, 'Unknown callback kind ' + kind, error); + } + }, 'viiii'); + + const config = { + optLevel: 2, + sources: [filename] + }; + + const configPtr = copyToCString(mod, JSON.stringify(config)); + + const responsePtr = mod._func_compile(configPtr, callbackPtr); + + return JSON.parse(copyFromCString(mod, responsePtr)); +} + +const wasmModule = require(process.env.FUNCFIFTLIB_MODULE) + +const wasmBinary = new Uint8Array(fsSync.readFileSync(process.env.FUNCFIFTLIB_WASM)) + +async function compileWasm() { + const mod = await wasmModule({ wasmBinary }) + + return mod +} + +module.exports = { + compileFile, + compileWasm +} diff --git a/crypto/funcfiftlib/funcfiftlib.cpp b/crypto/funcfiftlib/funcfiftlib.cpp index 070c3e0d..c8bf4fc5 100644 --- a/crypto/funcfiftlib/funcfiftlib.cpp +++ b/crypto/funcfiftlib/funcfiftlib.cpp @@ -92,6 +92,7 @@ td::Result compile_internal(char *config_json) { result_obj("status", "ok"); result_obj("codeBoc", td::base64_encode(boc)); result_obj("fiftCode", escape_json(outs.str())); + result_obj("codeHashHex", code_cell->get_hash().to_hex()); result_obj.leave(); outs.clear(); From 7ee70778d2f2d2e06d83a545ec83e9c09267ef79 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 26 Apr 2023 09:15:16 +0300 Subject: [PATCH 14/42] Add timeout for out_msg_queue_cleanup (#679) Co-authored-by: SpyCheese --- validator/impl/collator-impl.h | 2 +- validator/impl/collator.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/validator/impl/collator-impl.h b/validator/impl/collator-impl.h index dfe844a3..7b136953 100644 --- a/validator/impl/collator-impl.h +++ b/validator/impl/collator-impl.h @@ -73,7 +73,7 @@ class Collator final : public td::actor::Actor { Ref validator_set_; td::actor::ActorId manager; td::Timestamp timeout; - td::Timestamp soft_timeout_, medium_timeout_; + td::Timestamp queue_cleanup_timeout_, soft_timeout_, medium_timeout_; td::Promise main_promise; ton::BlockSeqno last_block_seqno{0}; ton::BlockSeqno prev_mc_block_seqno{0}; diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 83bc710c..6debf2de 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -67,6 +67,7 @@ Collator::Collator(ShardIdFull shard, bool is_hardfork, UnixTime min_ts, BlockId , validator_set_(std::move(validator_set)) , manager(manager) , timeout(timeout) + , queue_cleanup_timeout_(td::Timestamp::at(timeout.at() - 5.0)) , soft_timeout_(td::Timestamp::at(timeout.at() - 3.0)) , medium_timeout_(td::Timestamp::at(timeout.at() - 1.5)) , main_promise(std::move(promise)) @@ -1814,6 +1815,11 @@ bool Collator::out_msg_queue_cleanup() { auto res = out_msg_queue_->filter([&](vm::CellSlice& cs, td::ConstBitPtr key, int n) -> int { assert(n == 352); // LOG(DEBUG) << "key is " << key.to_hex(n); + if (queue_cleanup_timeout_.is_in_past(td::Timestamp::now())) { + LOG(WARNING) << "cleaning up outbound queue takes too long, ending"; + outq_cleanup_partial_ = true; + return (1 << 30) + 1; // retain all remaining outbound queue entries including this one without processing + } if (block_full_) { LOG(WARNING) << "BLOCK FULL while cleaning up outbound queue, cleanup completed only partially"; outq_cleanup_partial_ = true; From d067e6ca3fa6a694905b1a7c93bb1748bd287195 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 26 Apr 2023 21:32:26 +0300 Subject: [PATCH 15/42] Make stricter cleanup timelimit --- validator/impl/collator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 6debf2de..6935f83c 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -67,7 +67,7 @@ Collator::Collator(ShardIdFull shard, bool is_hardfork, UnixTime min_ts, BlockId , validator_set_(std::move(validator_set)) , manager(manager) , timeout(timeout) - , queue_cleanup_timeout_(td::Timestamp::at(timeout.at() - 5.0)) + , queue_cleanup_timeout_(td::Timestamp::at(timeout.at() - 9.0)) , soft_timeout_(td::Timestamp::at(timeout.at() - 3.0)) , medium_timeout_(td::Timestamp::at(timeout.at() - 1.5)) , main_promise(std::move(promise)) From aab1fe0751a9bcddf076144f387db732b36c32af Mon Sep 17 00:00:00 2001 From: "aleksej.paschenko" Date: Thu, 27 Apr 2023 09:33:32 +0300 Subject: [PATCH 16/42] Use BUILD_SHARED_LIBS to decide whether to build libemulator.so (#671) * Update ubuntu:20.04 dockerfile (#636) * Update Dockerfile * Update Dockerfile --------- Co-authored-by: neodiX42 * Use BUILD_SHARED_LIBS to decide whether to build libemulator.so --------- Co-authored-by: EmelyanenkoK Co-authored-by: neodiX42 --- emulator/CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/emulator/CMakeLists.txt b/emulator/CMakeLists.txt index 4e67d32c..1389050c 100644 --- a/emulator/CMakeLists.txt +++ b/emulator/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) +option(BUILD_SHARED_LIBS "Use \"OFF\" for a static build." ON) + if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) endif() @@ -27,7 +29,12 @@ include(GenerateExportHeader) add_library(emulator_static STATIC ${EMULATOR_STATIC_SOURCE}) target_link_libraries(emulator_static PUBLIC ton_crypto ton_block smc-envelope) -add_library(emulator STATIC ${EMULATOR_SOURCE} ${EMULATOR_HEADERS}) +if (NOT USE_EMSCRIPTEN AND BUILD_SHARED_LIBS) + add_library(emulator SHARED ${EMULATOR_SOURCE} ${EMULATOR_HEADERS}) +else() + add_library(emulator STATIC ${EMULATOR_SOURCE} ${EMULATOR_HEADERS}) +endif() + target_link_libraries(emulator PUBLIC emulator_static) generate_export_header(emulator EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/emulator_export.h) target_include_directories(emulator PUBLIC From 5606418234d1074ce523c76da1a9ac9bfc760c2a Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Thu, 27 Apr 2023 10:23:04 +0300 Subject: [PATCH 17/42] FunC: Prohibit unifying tensors and "forall" vars (#684) * FunC: Prohibit unifying tensors and "forall" vars * Bump funC version to 0.4.4 --------- Co-authored-by: SpyCheese --- crypto/func/func.h | 5 +++-- crypto/func/unify-types.cpp | 31 +++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/crypto/func/func.h b/crypto/func/func.h index 10039ffa..33f8c86f 100644 --- a/crypto/func/func.h +++ b/crypto/func/func.h @@ -41,7 +41,7 @@ extern std::string generated_from; constexpr int optimize_depth = 20; -const std::string func_version{"0.4.3"}; +const std::string func_version{"0.4.4"}; enum Keyword { _Eof = -1, @@ -159,6 +159,7 @@ struct TypeExpr { int minw, maxw; static constexpr int w_inf = 1023; std::vector args; + bool was_forall_var = false; TypeExpr(te_type _constr, int _val = 0) : constr(_constr), value(_val), minw(0), maxw(w_inf) { } TypeExpr(te_type _constr, int _val, int width) : constr(_constr), value(_val), minw(width), maxw(width) { @@ -265,7 +266,7 @@ struct TypeExpr { return new TypeExpr{te_ForAll, body, std::move(list)}; } static bool remove_indirect(TypeExpr*& te, TypeExpr* forbidden = nullptr); - static bool remove_forall(TypeExpr*& te); + static std::vector remove_forall(TypeExpr*& te); static bool remove_forall_in(TypeExpr*& te, TypeExpr* te2, const std::vector& new_vars); }; diff --git a/crypto/func/unify-types.cpp b/crypto/func/unify-types.cpp index 517299e9..dfa1f602 100644 --- a/crypto/func/unify-types.cpp +++ b/crypto/func/unify-types.cpp @@ -146,11 +146,8 @@ bool TypeExpr::remove_indirect(TypeExpr*& te, TypeExpr* forbidden) { return res; } -bool TypeExpr::remove_forall(TypeExpr*& te) { - assert(te); - if (te->constr != te_ForAll) { - return false; - } +std::vector TypeExpr::remove_forall(TypeExpr*& te) { + assert(te && te->constr == te_ForAll); assert(te->args.size() >= 1); std::vector new_vars; for (std::size_t i = 1; i < te->args.size(); i++) { @@ -161,7 +158,7 @@ bool TypeExpr::remove_forall(TypeExpr*& te) { te = te->args[0]; remove_forall_in(te, te2, new_vars); // std::cerr << "-> " << te << std::endl; - return true; + return new_vars; } bool TypeExpr::remove_forall_in(TypeExpr*& te, TypeExpr* te2, const std::vector& new_vars) { @@ -363,20 +360,34 @@ void unify(TypeExpr*& te1, TypeExpr*& te2) { } if (te1->constr == TypeExpr::te_ForAll) { TypeExpr* te = te1; - if (!TypeExpr::remove_forall(te)) { - throw UnifyError{te1, te2, "cannot remove universal type quantifier while performing type unification"}; + std::vector new_vars = TypeExpr::remove_forall(te); + for (TypeExpr* t : new_vars) { + t->was_forall_var = true; } unify(te, te2); + for (TypeExpr* t : new_vars) { + t->was_forall_var = false; + } return; } if (te2->constr == TypeExpr::te_ForAll) { TypeExpr* te = te2; - if (!TypeExpr::remove_forall(te)) { - throw UnifyError{te2, te1, "cannot remove universal type quantifier while performing type unification"}; + std::vector new_vars = TypeExpr::remove_forall(te); + for (TypeExpr* t : new_vars) { + t->was_forall_var = true; } unify(te1, te); + for (TypeExpr* t : new_vars) { + t->was_forall_var = false; + } return; } + if (te1->was_forall_var && te2->constr == TypeExpr::te_Tensor) { + throw UnifyError{te1, te2, "cannot unify generic type and tensor"}; + } + if (te2->was_forall_var && te1->constr == TypeExpr::te_Tensor) { + throw UnifyError{te2, te1, "cannot unify generic type and tensor"}; + } if (te1->constr == TypeExpr::te_Unknown) { if (te2->constr == TypeExpr::te_Unknown) { assert(te1->value != te2->value); From dd8658c4db2e3975e61f9aee6db59a049d79ac97 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Thu, 27 Apr 2023 14:43:37 +0300 Subject: [PATCH 18/42] Comment out excessive checks of outbound messages queue --- validator/impl/collator.cpp | 1 + validator/impl/validate-query.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 6935f83c..1c3cafe6 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -67,6 +67,7 @@ Collator::Collator(ShardIdFull shard, bool is_hardfork, UnixTime min_ts, BlockId , validator_set_(std::move(validator_set)) , manager(manager) , timeout(timeout) + // default timeout is 10 seconds, declared in validator/validator-group.cpp:generate_block_candidate:run_collate_query , queue_cleanup_timeout_(td::Timestamp::at(timeout.at() - 9.0)) , soft_timeout_(td::Timestamp::at(timeout.at() - 3.0)) , medium_timeout_(td::Timestamp::at(timeout.at() - 1.5)) diff --git a/validator/impl/validate-query.cpp b/validator/impl/validate-query.cpp index 7d8104e0..0e1b1199 100644 --- a/validator/impl/validate-query.cpp +++ b/validator/impl/validate-query.cpp @@ -5540,9 +5540,10 @@ bool ValidateQuery::try_validate() { if (!check_in_queue()) { return reject_query("cannot check inbound message queues"); } - if (!check_delivered_dequeued()) { + // Excessive check: validity of message in queue is checked elsewhere + /*if (!check_delivered_dequeued()) { return reject_query("cannot check delivery status of all outbound messages"); - } + }*/ if (!check_transactions()) { return reject_query("invalid collection of account transactions in ShardAccountBlocks"); } From 8bc20ede2e148aa08444fa415fc7c5f15eb4ef0d Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 28 Apr 2023 12:58:02 +0300 Subject: [PATCH 19/42] Add archive manager index (#685) * Optimize get_file_desc_by_ seqno/lt/ut * Optimize get_next_file_desc --------- Co-authored-by: SpyCheese --- validator/db/archive-manager.cpp | 333 +++++++++++++++++-------------- validator/db/archive-manager.hpp | 103 +++++++--- 2 files changed, 260 insertions(+), 176 deletions(-) diff --git a/validator/db/archive-manager.cpp b/validator/db/archive-manager.cpp index bd239bfc..7c2aefe3 100644 --- a/validator/db/archive-manager.cpp +++ b/validator/db/archive-manager.cpp @@ -74,7 +74,7 @@ void ArchiveManager::add_handle(BlockHandle handle, td::Promise promis } void ArchiveManager::update_handle(BlockHandle handle, td::Promise promise) { - FileDescription *f; + const FileDescription *f; if (handle->handle_moved_to_archive()) { CHECK(handle->inited_unix_time()); if (!handle->need_flush()) { @@ -439,15 +439,15 @@ void ArchiveManager::check_persistent_state(BlockIdExt block_id, BlockIdExt mast void ArchiveManager::get_block_by_unix_time(AccountIdPrefixFull account_id, UnixTime ts, td::Promise promise) { - auto f = get_file_desc_by_unix_time(account_id, ts, false); - if (f) { - auto n = f; - do { - n = get_next_file_desc(n); - } while (n != nullptr && !n->has_account_prefix(account_id)); + auto f1 = get_file_desc_by_unix_time(account_id, ts, false); + auto f2 = get_next_file_desc(f1, account_id, false); + if (!f1) { + std::swap(f1, f2); + } + if (f1) { td::actor::ActorId aid; - if (n) { - aid = n->file_actor_id(); + if (f2) { + aid = f2->file_actor_id(); } auto P = td::PromiseCreator::lambda( [aid, account_id, ts, promise = std::move(promise)](td::Result R) mutable { @@ -457,7 +457,7 @@ void ArchiveManager::get_block_by_unix_time(AccountIdPrefixFull account_id, Unix td::actor::send_closure(aid, &ArchiveSlice::get_block_by_unix_time, account_id, ts, std::move(promise)); } }); - td::actor::send_closure(f->file_actor_id(), &ArchiveSlice::get_block_by_unix_time, account_id, ts, std::move(P)); + td::actor::send_closure(f1->file_actor_id(), &ArchiveSlice::get_block_by_unix_time, account_id, ts, std::move(P)); } else { promise.set_error(td::Status::Error(ErrorCode::notready, "ts not in db")); } @@ -465,15 +465,15 @@ void ArchiveManager::get_block_by_unix_time(AccountIdPrefixFull account_id, Unix void ArchiveManager::get_block_by_lt(AccountIdPrefixFull account_id, LogicalTime lt, td::Promise promise) { - auto f = get_file_desc_by_lt(account_id, lt, false); - if (f) { - auto n = f; - do { - n = get_next_file_desc(n); - } while (n != nullptr && !n->has_account_prefix(account_id)); + auto f1 = get_file_desc_by_lt(account_id, lt, false); + auto f2 = get_next_file_desc(f1, account_id, false); + if (!f1) { + std::swap(f1, f2); + } + if (f1) { td::actor::ActorId aid; - if (n) { - aid = n->file_actor_id(); + if (f2) { + aid = f2->file_actor_id(); } auto P = td::PromiseCreator::lambda( [aid, account_id, lt, promise = std::move(promise)](td::Result R) mutable { @@ -483,7 +483,7 @@ void ArchiveManager::get_block_by_lt(AccountIdPrefixFull account_id, LogicalTime td::actor::send_closure(aid, &ArchiveSlice::get_block_by_lt, account_id, lt, std::move(promise)); } }); - td::actor::send_closure(f->file_actor_id(), &ArchiveSlice::get_block_by_lt, account_id, lt, std::move(P)); + td::actor::send_closure(f1->file_actor_id(), &ArchiveSlice::get_block_by_lt, account_id, lt, std::move(P)); } else { promise.set_error(td::Status::Error(ErrorCode::notready, "lt not in db")); } @@ -558,7 +558,7 @@ void ArchiveManager::deleted_package(PackageId id, td::Promise promise auto it = m.find(id); CHECK(it != m.end()); CHECK(it->second.deleted); - it->second.clear_actor_id(); + it->second.file.reset(); promise.set_value(td::Unit()); } @@ -598,8 +598,8 @@ void ArchiveManager::load_package(PackageId id) { get_file_map(id).emplace(id, std::move(desc)); } -ArchiveManager::FileDescription *ArchiveManager::get_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, - UnixTime ts, LogicalTime lt, bool force) { +const ArchiveManager::FileDescription *ArchiveManager::get_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, + UnixTime ts, LogicalTime lt, bool force) { auto &f = get_file_map(id); auto it = f.find(id); if (it != f.end()) { @@ -607,7 +607,7 @@ ArchiveManager::FileDescription *ArchiveManager::get_file_desc(ShardIdFull shard return nullptr; } if (force && !id.temp) { - update_desc(it->second, shard, seqno, ts, lt); + update_desc(f, it->second, shard, seqno, ts, lt); } return &it->second; } @@ -618,17 +618,18 @@ ArchiveManager::FileDescription *ArchiveManager::get_file_desc(ShardIdFull shard return add_file_desc(shard, id, seqno, ts, lt); } -ArchiveManager::FileDescription *ArchiveManager::add_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, - UnixTime ts, LogicalTime lt) { +const ArchiveManager::FileDescription *ArchiveManager::add_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, + UnixTime ts, LogicalTime lt) { auto &f = get_file_map(id); CHECK(f.count(id) == 0); - FileDescription desc{id, false}; + FileDescription new_desc{id, false}; td::mkdir(db_root_ + id.path()).ensure(); std::string prefix = PSTRING() << db_root_ << id.path() << id.name(); - desc.file = td::actor::create_actor("slice", id.id, id.key, id.temp, false, db_root_); + new_desc.file = td::actor::create_actor("slice", id.id, id.key, id.temp, false, db_root_); + const FileDescription &desc = f.emplace(id, std::move(new_desc)); if (!id.temp) { - update_desc(desc, shard, seqno, ts, lt); + update_desc(f, desc, shard, seqno, ts, lt); } std::vector> vec; @@ -668,17 +669,16 @@ ArchiveManager::FileDescription *ArchiveManager::add_file_desc(ShardIdFull shard .ensure(); } index_->commit_transaction().ensure(); - - return &f.emplace(id, std::move(desc)).first->second; + return &desc; } -void ArchiveManager::update_desc(FileDescription &desc, ShardIdFull shard, BlockSeqno seqno, UnixTime ts, - LogicalTime lt) { +void ArchiveManager::update_desc(FileMap &f, const FileDescription &desc, ShardIdFull shard, BlockSeqno seqno, + UnixTime ts, LogicalTime lt) { auto it = desc.first_blocks.find(shard); if (it != desc.first_blocks.end() && it->second.seqno <= seqno) { return; } - desc.first_blocks[shard] = FileDescription::Desc{seqno, ts, lt}; + f.set_shard_first_block(desc, shard, FileDescription::Desc{seqno, ts, lt}); std::vector> vec; for (auto &e : desc.first_blocks) { vec.push_back(create_tl_object(e.first.workchain, e.first.shard, @@ -694,150 +694,91 @@ void ArchiveManager::update_desc(FileDescription &desc, ShardIdFull shard, Block index_->commit_transaction().ensure(); } -ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_seqno(ShardIdFull shard, BlockSeqno seqno, - bool key_block) { - auto &f = get_file_map(PackageId{0, key_block, false}); - for (auto it = f.rbegin(); it != f.rend(); it++) { - auto i = it->second.first_blocks.find(shard); - if (i != it->second.first_blocks.end() && i->second.seqno <= seqno) { - if (it->second.deleted) { - return nullptr; - } else { - return &it->second; - } - } - } - return nullptr; +const ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_seqno(ShardIdFull shard, BlockSeqno seqno, + bool key_block) { + return get_file_map(PackageId{0, key_block, false}).get_file_desc_by_seqno(shard, seqno); } -ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_unix_time(ShardIdFull shard, UnixTime ts, - bool key_block) { - auto &f = get_file_map(PackageId{0, key_block, false}); - for (auto it = f.rbegin(); it != f.rend(); it++) { - auto i = it->second.first_blocks.find(shard); - if (i != it->second.first_blocks.end() && i->second.ts <= ts) { - if (it->second.deleted) { - return nullptr; - } else { - return &it->second; - } - } - } - return nullptr; +const ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_unix_time(ShardIdFull shard, UnixTime ts, + bool key_block) { + return get_file_map(PackageId{0, key_block, false}).get_file_desc_by_unix_time(shard, ts); } -ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_lt(ShardIdFull shard, LogicalTime lt, - bool key_block) { - auto &f = get_file_map(PackageId{0, key_block, false}); - for (auto it = f.rbegin(); it != f.rend(); it++) { - auto i = it->second.first_blocks.find(shard); - if (i != it->second.first_blocks.end() && i->second.lt <= lt) { - if (it->second.deleted) { - return nullptr; - } else { - return &it->second; - } - } - } - return nullptr; +const ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_lt(ShardIdFull shard, LogicalTime lt, + bool key_block) { + return get_file_map(PackageId{0, key_block, false}).get_file_desc_by_lt(shard, lt); } -ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_seqno(AccountIdPrefixFull account, BlockSeqno seqno, - bool key_block) { - auto &f = get_file_map(PackageId{0, key_block, false}); +const ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_seqno(AccountIdPrefixFull account, + BlockSeqno seqno, bool key_block) { if (account.is_masterchain()) { return get_file_desc_by_seqno(ShardIdFull{masterchainId}, seqno, key_block); } - for (auto it = f.rbegin(); it != f.rend(); it++) { - if (it->second.deleted) { - continue; - } - bool found = false; - for (int i = 0; i < 60; i++) { - auto shard = shard_prefix(account, i); - auto it2 = it->second.first_blocks.find(shard); - if (it2 != it->second.first_blocks.end()) { - if (it2->second.seqno <= seqno) { - return &it->second; - } - found = true; - } else if (found) { - break; - } + auto &f = get_file_map(PackageId{0, key_block, false}); + const FileDescription *result = nullptr; + for (int i = 0; i <= 60; i++) { + const FileDescription *desc = f.get_file_desc_by_seqno(shard_prefix(account, i), seqno); + if (desc && (!result || result->id < desc->id)) { + result = desc; + } else if (result && (!desc || desc->id < result->id)) { + break; } } - return nullptr; + return result; } -ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_unix_time(AccountIdPrefixFull account, UnixTime ts, - bool key_block) { - auto &f = get_file_map(PackageId{0, key_block, false}); +const ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_unix_time(AccountIdPrefixFull account, + UnixTime ts, bool key_block) { if (account.is_masterchain()) { return get_file_desc_by_unix_time(ShardIdFull{masterchainId}, ts, key_block); } - for (auto it = f.rbegin(); it != f.rend(); it++) { - if (it->second.deleted) { - continue; - } - bool found = false; - for (int i = 0; i < 60; i++) { - auto shard = shard_prefix(account, i); - auto it2 = it->second.first_blocks.find(shard); - if (it2 != it->second.first_blocks.end()) { - if (it2->second.ts <= ts) { - return &it->second; - } - found = true; - } else if (found) { - break; - } + auto &f = get_file_map(PackageId{0, key_block, false}); + const FileDescription *result = nullptr; + for (int i = 0; i <= 60; i++) { + const FileDescription *desc = f.get_file_desc_by_unix_time(shard_prefix(account, i), ts); + if (desc && (!result || result->id < desc->id)) { + result = desc; + } else if (result && (!desc || desc->id < result->id)) { + break; } } - return nullptr; + return result; } -ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_lt(AccountIdPrefixFull account, LogicalTime lt, - bool key_block) { - auto &f = get_file_map(PackageId{0, key_block, false}); +const ArchiveManager::FileDescription *ArchiveManager::get_file_desc_by_lt(AccountIdPrefixFull account, LogicalTime lt, + bool key_block) { if (account.is_masterchain()) { return get_file_desc_by_lt(ShardIdFull{masterchainId}, lt, key_block); } - for (auto it = f.rbegin(); it != f.rend(); it++) { - if (it->second.deleted) { - continue; - } - bool found = false; - for (int i = 0; i < 60; i++) { - auto shard = shard_prefix(account, i); - auto it2 = it->second.first_blocks.find(shard); - if (it2 != it->second.first_blocks.end()) { - if (it2->second.lt <= lt) { - return &it->second; - } - found = true; - } else if (found) { - break; - } + auto &f = get_file_map(PackageId{0, key_block, false}); + const FileDescription *result = nullptr; + for (int i = 0; i <= 60; i++) { + const FileDescription *desc = f.get_file_desc_by_lt(shard_prefix(account, i), lt); + if (desc && (!result || result->id < desc->id)) { + result = desc; + } else if (result && (!desc || desc->id < result->id)) { + break; } } - return nullptr; + return result; } -ArchiveManager::FileDescription *ArchiveManager::get_next_file_desc(FileDescription *f) { - auto &m = get_file_map(f->id); - auto it = m.find(f->id); - CHECK(it != m.end()); - while (true) { - it++; - if (it == m.end()) { - return nullptr; - } else if (!it->second.deleted) { - return &it->second; +const ArchiveManager::FileDescription *ArchiveManager::get_next_file_desc(const FileDescription *f, + AccountIdPrefixFull shard, bool key_block) { + auto &m = get_file_map(PackageId{0, key_block, false}); + const FileDescription *result = nullptr; + for (int i = 0; i <= 60; i++) { + const FileDescription *desc = m.get_next_file_desc(shard_prefix(shard, i), f); + if (desc && (!result || desc->id < result->id)) { + result = desc; + } else if (result && (!desc || result->id < desc->id)) { + break; } } + return result; } -ArchiveManager::FileDescription *ArchiveManager::get_temp_file_desc_by_idx(PackageId idx) { +const ArchiveManager::FileDescription *ArchiveManager::get_temp_file_desc_by_idx(PackageId idx) { auto it = temp_files_.find(idx); if (it != temp_files_.end()) { if (it->second.deleted) { @@ -1257,14 +1198,100 @@ void ArchiveManager::truncate(BlockSeqno masterchain_seqno, ConstBlockHandle han } } -bool ArchiveManager::FileDescription::has_account_prefix(AccountIdPrefixFull account_id) const { - for (int i = 0; i < 60; i++) { - auto shard = shard_prefix(account_id, i); - if (first_blocks.count(shard)) { - return true; - } +void ArchiveManager::FileMap::shard_index_add(const FileDescription &desc) { + for (const auto &p : desc.first_blocks) { + ShardIndex &s = shards_[p.first]; + s.seqno_index_[p.second.seqno] = &desc; + s.lt_index_[p.second.lt] = &desc; + s.unix_time_index_[p.second.ts] = &desc; + s.packages_index_[desc.id] = &desc; } - return false; +} + +void ArchiveManager::FileMap::shard_index_del(const FileDescription &desc) { + for (const auto &p : desc.first_blocks) { + ShardIndex &s = shards_[p.first]; + s.seqno_index_.erase(p.second.seqno); + s.lt_index_.erase(p.second.lt); + s.unix_time_index_.erase(p.second.ts); + s.packages_index_.erase(desc.id); + } +} + +void ArchiveManager::FileMap::set_shard_first_block(const FileDescription &desc, ShardIdFull shard, + FileDescription::Desc v) { + ShardIndex &s = shards_[shard]; + auto &d = const_cast(desc); + auto it = d.first_blocks.find(shard); + if (it != d.first_blocks.end()) { + s.seqno_index_.erase(it->second.seqno); + s.lt_index_.erase(it->second.lt); + s.unix_time_index_.erase(it->second.ts); + } + d.first_blocks[shard] = v; + s.seqno_index_[v.seqno] = &d; + s.lt_index_[v.lt] = &d; + s.unix_time_index_[v.ts] = &d; + s.packages_index_[d.id] = &d; +} + +const ArchiveManager::FileDescription *ArchiveManager::FileMap::get_file_desc_by_seqno(ShardIdFull shard, + BlockSeqno seqno) const { + auto it = shards_.find(shard); + if (it == shards_.end()) { + return nullptr; + } + const auto &map = it->second.seqno_index_; + auto it2 = map.upper_bound(seqno); + if (it2 == map.begin()) { + return nullptr; + } + --it2; + return it2->second->deleted ? nullptr : it2->second; +} + +const ArchiveManager::FileDescription *ArchiveManager::FileMap::get_file_desc_by_lt(ShardIdFull shard, + LogicalTime lt) const { + auto it = shards_.find(shard); + if (it == shards_.end()) { + return nullptr; + } + const auto &map = it->second.lt_index_; + auto it2 = map.upper_bound(lt); + if (it2 == map.begin()) { + return nullptr; + } + --it2; + return it2->second->deleted ? nullptr : it2->second; +} + +const ArchiveManager::FileDescription *ArchiveManager::FileMap::get_file_desc_by_unix_time(ShardIdFull shard, + UnixTime ts) const { + auto it = shards_.find(shard); + if (it == shards_.end()) { + return nullptr; + } + const auto &map = it->second.unix_time_index_; + auto it2 = map.upper_bound(ts); + if (it2 == map.begin()) { + return nullptr; + } + --it2; + return it2->second->deleted ? nullptr : it2->second; +} + +const ArchiveManager::FileDescription *ArchiveManager::FileMap::get_next_file_desc(ShardIdFull shard, + const FileDescription *desc) const { + auto it = shards_.find(shard); + if (it == shards_.end()) { + return nullptr; + } + const auto &map = it->second.packages_index_; + auto it2 = desc ? map.upper_bound(desc->id) : map.begin(); + if (it2 == map.end()) { + return nullptr; + } + return it2->second->deleted ? nullptr : it2->second; } } // namespace validator diff --git a/validator/db/archive-manager.hpp b/validator/db/archive-manager.hpp index 79e6a2d7..e5008764 100644 --- a/validator/db/archive-manager.hpp +++ b/validator/db/archive-manager.hpp @@ -71,7 +71,6 @@ class ArchiveManager : public td::actor::Actor { void start_up() override; - void begin_transaction(); void commit_transaction(); void set_async_mode(bool mode, td::Promise promise); @@ -94,26 +93,83 @@ class ArchiveManager : public td::actor::Actor { auto file_actor_id() const { return file.get(); } - void clear_actor_id() { - file.reset(); - } - bool has_account_prefix(AccountIdPrefixFull account_id) const; PackageId id; - bool deleted; + mutable bool deleted; std::map first_blocks; - td::actor::ActorOwn file; + mutable td::actor::ActorOwn file; }; - std::map files_; - std::map key_files_; - std::map temp_files_; + class FileMap { + public: + std::map::const_iterator begin() const { + return files_.cbegin(); + } + std::map::const_iterator end() const { + return files_.cend(); + } + std::map::const_reverse_iterator rbegin() const { + return files_.crbegin(); + } + std::map::const_reverse_iterator rend() const { + return files_.crend(); + } + std::map::const_iterator find(PackageId x) const { + return files_.find(x); + } + size_t count(const PackageId &x) const { + return files_.count(x); + } + size_t size() const { + return files_.size(); + } + std::map::const_iterator lower_bound(const PackageId &x) const { + return files_.lower_bound(x); + } + std::map::const_iterator upper_bound(const PackageId &x) const { + return files_.upper_bound(x); + } + void clear() { + files_.clear(); + shards_.clear(); + } + const FileDescription &emplace(const PackageId &id, FileDescription desc) { + auto it = files_.emplace(id, std::move(desc)); + if (it.second) { + shard_index_add(it.first->second); + } + return it.first->second; + } + void erase(std::map::const_iterator it) { + shard_index_del(it->second); + files_.erase(it); + } + void set_shard_first_block(const FileDescription &desc, ShardIdFull shard, FileDescription::Desc v); + const FileDescription *get_file_desc_by_seqno(ShardIdFull shard, BlockSeqno seqno) const; + const FileDescription *get_file_desc_by_lt(ShardIdFull shard, LogicalTime lt) const; + const FileDescription *get_file_desc_by_unix_time(ShardIdFull shard, UnixTime ts) const; + const FileDescription *get_next_file_desc(ShardIdFull shard, const FileDescription *desc) const; + + private: + std::map files_; + struct ShardIndex { + std::map seqno_index_; + std::map lt_index_; + std::map unix_time_index_; + std::map packages_index_; + }; + std::map shards_; + + void shard_index_add(const FileDescription &desc); + void shard_index_del(const FileDescription &desc); + }; + FileMap files_, key_files_, temp_files_; BlockSeqno finalized_up_to_{0}; bool async_mode_ = false; bool huge_transaction_started_ = false; td::uint32 huge_transaction_size_ = 0; - auto &get_file_map(const PackageId &p) { + FileMap &get_file_map(const PackageId &p) { return p.key ? key_files_ : p.temp ? temp_files_ : files_; } @@ -126,18 +182,19 @@ class ArchiveManager : public td::actor::Actor { void get_handle_finish(BlockHandle handle, td::Promise promise); void get_file_short_cont(FileReference ref_id, PackageId idx, td::Promise promise); - FileDescription *get_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, UnixTime ts, LogicalTime lt, - bool force); - FileDescription *add_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, UnixTime ts, LogicalTime lt); - void update_desc(FileDescription &desc, ShardIdFull shard, BlockSeqno seqno, UnixTime ts, LogicalTime lt); - FileDescription *get_file_desc_by_seqno(ShardIdFull shard, BlockSeqno seqno, bool key_block); - FileDescription *get_file_desc_by_lt(ShardIdFull shard, LogicalTime lt, bool key_block); - FileDescription *get_file_desc_by_unix_time(ShardIdFull shard, UnixTime ts, bool key_block); - FileDescription *get_file_desc_by_seqno(AccountIdPrefixFull shard, BlockSeqno seqno, bool key_block); - FileDescription *get_file_desc_by_lt(AccountIdPrefixFull shard, LogicalTime lt, bool key_block); - FileDescription *get_file_desc_by_unix_time(AccountIdPrefixFull shard, UnixTime ts, bool key_block); - FileDescription *get_next_file_desc(FileDescription *f); - FileDescription *get_temp_file_desc_by_idx(PackageId idx); + const FileDescription *get_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, UnixTime ts, LogicalTime lt, + bool force); + const FileDescription *add_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, UnixTime ts, LogicalTime lt); + void update_desc(FileMap &f, const FileDescription &desc, ShardIdFull shard, BlockSeqno seqno, UnixTime ts, + LogicalTime lt); + const FileDescription *get_file_desc_by_seqno(ShardIdFull shard, BlockSeqno seqno, bool key_block); + const FileDescription *get_file_desc_by_lt(ShardIdFull shard, LogicalTime lt, bool key_block); + const FileDescription *get_file_desc_by_unix_time(ShardIdFull shard, UnixTime ts, bool key_block); + const FileDescription *get_file_desc_by_seqno(AccountIdPrefixFull shard, BlockSeqno seqno, bool key_block); + const FileDescription *get_file_desc_by_lt(AccountIdPrefixFull shard, LogicalTime lt, bool key_block); + const FileDescription *get_file_desc_by_unix_time(AccountIdPrefixFull shard, UnixTime ts, bool key_block); + const FileDescription *get_next_file_desc(const FileDescription *f, AccountIdPrefixFull shard, bool key_block); + const FileDescription *get_temp_file_desc_by_idx(PackageId idx); PackageId get_max_temp_file_desc_idx(); PackageId get_prev_temp_file_desc_idx(PackageId id); From 444dda8d6264bc00ab7c63ea8560ba336210b47b Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 28 Apr 2023 16:42:11 +0300 Subject: [PATCH 20/42] Revert too strictening of queue_cleanup_timeout --- validator/impl/collator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 1c3cafe6..4e68b07c 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -68,7 +68,7 @@ Collator::Collator(ShardIdFull shard, bool is_hardfork, UnixTime min_ts, BlockId , manager(manager) , timeout(timeout) // default timeout is 10 seconds, declared in validator/validator-group.cpp:generate_block_candidate:run_collate_query - , queue_cleanup_timeout_(td::Timestamp::at(timeout.at() - 9.0)) + , queue_cleanup_timeout_(td::Timestamp::at(timeout.at() - 5.0)) , soft_timeout_(td::Timestamp::at(timeout.at() - 3.0)) , medium_timeout_(td::Timestamp::at(timeout.at() - 1.5)) , main_promise(std::move(promise)) From 87d4f4bc7fe63a92b22dcc0cc1a5e10f9e01d8b1 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Tue, 2 May 2023 18:32:20 +0300 Subject: [PATCH 21/42] Fix saving list of packages in archive manager --- validator/db/archive-manager.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/validator/db/archive-manager.cpp b/validator/db/archive-manager.cpp index 7c2aefe3..91b7b880 100644 --- a/validator/db/archive-manager.cpp +++ b/validator/db/archive-manager.cpp @@ -563,6 +563,11 @@ void ArchiveManager::deleted_package(PackageId id, td::Promise promise } void ArchiveManager::load_package(PackageId id) { + auto &m = get_file_map(id); + if (m.count(id)) { + LOG(WARNING) << "Duplicate id " << id.name(); + return; + } auto key = create_serialize_tl_object(id.id, id.key, id.temp); std::string value; @@ -595,7 +600,7 @@ void ArchiveManager::load_package(PackageId id) { desc.file = td::actor::create_actor("slice", id.id, id.key, id.temp, false, db_root_); - get_file_map(id).emplace(id, std::move(desc)); + m.emplace(id, std::move(desc)); } const ArchiveManager::FileDescription *ArchiveManager::get_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno, @@ -653,7 +658,6 @@ const ArchiveManager::FileDescription *ArchiveManager::add_file_desc(ShardIdFull for (auto &e : temp_files_) { tt.push_back(e.first.id); } - (id.temp ? tt : (id.key ? tk : t)).push_back(id.id); index_ ->set(create_serialize_tl_object().as_slice(), create_serialize_tl_object(std::move(t), std::move(tk), std::move(tt)) From a78adf3062b73136a4f8cf558b3b46f92498af30 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 3 May 2023 14:18:18 +0300 Subject: [PATCH 22/42] Increase limit for t_Block.validate, simplify validating StateInit (#691) Co-authored-by: SpyCheese --- crypto/block/block-parse.cpp | 32 +++++++++++++++++++++++++++++++ crypto/block/block-parse.h | 4 ++++ crypto/block/block.tlb | 9 +++++++-- crypto/block/transaction.cpp | 9 +++++++-- validator/impl/collator.cpp | 11 +++++++++-- validator/impl/validate-query.cpp | 8 ++++---- 6 files changed, 63 insertions(+), 10 deletions(-) diff --git a/crypto/block/block-parse.cpp b/crypto/block/block-parse.cpp index e9eb8209..7d51b2e2 100644 --- a/crypto/block/block-parse.cpp +++ b/crypto/block/block-parse.cpp @@ -2292,5 +2292,37 @@ bool Aug_ShardFees::eval_leaf(vm::CellBuilder& cb, vm::CellSlice& cs) const { const Aug_ShardFees aug_ShardFees; +bool validate_message_libs(const td::Ref &cell) { + gen::Message::Record rec; + if (!type_unpack_cell(cell, gen::t_Message_Any, rec)) { + return false; + } + vm::CellSlice& state_init = rec.init.write(); + if (!state_init.fetch_long(1)) { + return true; + } + if (state_init.fetch_long(1)) { + return gen::t_StateInitWithLibs.validate_ref(state_init.prefetch_ref()); + } else { + return gen::t_StateInitWithLibs.validate_csr(rec.init); + } +} + +bool validate_message_relaxed_libs(const td::Ref &cell) { + gen::MessageRelaxed::Record rec; + if (!type_unpack_cell(cell, gen::t_MessageRelaxed_Any, rec)) { + return false; + } + vm::CellSlice& state_init = rec.init.write(); + if (!state_init.fetch_long(1)) { + return true; + } + if (state_init.fetch_long(1)) { + return gen::t_StateInitWithLibs.validate_ref(state_init.prefetch_ref()); + } else { + return gen::t_StateInitWithLibs.validate_csr(rec.init); + } +} + } // namespace tlb } // namespace block diff --git a/crypto/block/block-parse.h b/crypto/block/block-parse.h index ad4faec0..c0b11745 100644 --- a/crypto/block/block-parse.h +++ b/crypto/block/block-parse.h @@ -1113,5 +1113,9 @@ struct Aug_ShardFees final : AugmentationCheckData { extern const Aug_ShardFees aug_ShardFees; +// Validate dict of libraries in message: used when sending and receiving message +bool validate_message_libs(const td::Ref &cell); +bool validate_message_relaxed_libs(const td::Ref &cell); + } // namespace tlb } // namespace block diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index 0c8fdb83..6ab03508 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -143,8 +143,13 @@ tick_tock$_ tick:Bool tock:Bool = TickTock; _ split_depth:(Maybe (## 5)) special:(Maybe TickTock) code:(Maybe ^Cell) data:(Maybe ^Cell) - library:(HashmapE 256 SimpleLib) = StateInit; - + library:(Maybe ^Cell) = StateInit; + +// StateInitWithLibs is used to validate sent and received messages +_ split_depth:(Maybe (## 5)) special:(Maybe TickTock) + code:(Maybe ^Cell) data:(Maybe ^Cell) + library:(HashmapE 256 SimpleLib) = StateInitWithLibs; + simple_lib$_ public:Bool root:^Cell = SimpleLib; message$_ {X:Type} info:CommonMsgInfo diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index fcabf0c0..1a8f111c 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -635,14 +635,15 @@ bool Transaction::unpack_input_msg(bool ihr_delivered, const ActionPhaseConfig* vm::CellBuilder cb; if (!(cs.advance(2) && block::gen::t_StateInit.fetch_to(cs, state_init) && cb.append_cellslice_bool(std::move(state_init)) && cb.finalize_to(in_msg_state) && - block::gen::t_StateInit.validate_ref(in_msg_state))) { + block::gen::t_StateInitWithLibs.validate_ref(in_msg_state))) { LOG(DEBUG) << "cannot parse StateInit in inbound message"; return false; } break; } case 3: { // (just$1 (right$1 _:^StateInit )) - if (!(cs.advance(2) && cs.fetch_ref_to(in_msg_state) && block::gen::t_StateInit.validate_ref(in_msg_state))) { + if (!(cs.advance(2) && cs.fetch_ref_to(in_msg_state) && + block::gen::t_StateInitWithLibs.validate_ref(in_msg_state))) { LOG(DEBUG) << "cannot parse ^StateInit in inbound message"; return false; } @@ -1534,6 +1535,10 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, if (!tlb::type_unpack_cell(act_rec.out_msg, block::gen::t_MessageRelaxed_Any, msg)) { return -1; } + if (!block::tlb::validate_message_relaxed_libs(act_rec.out_msg)) { + LOG(DEBUG) << "outbound message has invalid libs in StateInit"; + return -1; + } if (redoing >= 1) { if (msg.init->size_refs() >= 2) { LOG(DEBUG) << "moving the StateInit of a suggested outbound message into a separate cell"; diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 4e68b07c..9a6c512b 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -2565,7 +2565,7 @@ bool Collator::process_inbound_message(Ref enq_msg, ton::LogicalT return false; } if (!block::tlb::t_MsgEnvelope.validate_ref(msg_env)) { - LOG(ERROR) << "inbound internal MsgEnvelope is invalid according to automated checks"; + LOG(ERROR) << "inbound internal MsgEnvelope is invalid according to hand-written checks"; return false; } // 1. unpack MsgEnvelope @@ -2590,6 +2590,10 @@ bool Collator::process_inbound_message(Ref enq_msg, ton::LogicalT "its contents"; return false; } + if (!block::tlb::validate_message_libs(env.msg)) { + LOG(ERROR) << "inbound internal message has invalid StateInit"; + return false; + } // 2.0. update last_proc_int_msg if (!update_last_proc_int_msg(std::pair(lt, env.msg->get_hash().bits()))) { return fatal_error("processing a message AFTER a newer message has been processed"); @@ -3876,7 +3880,7 @@ bool Collator::create_block() { } if (verify >= 1) { LOG(INFO) << "verifying new Block"; - if (!block::gen::t_Block.validate_ref(1000000, new_block)) { + if (!block::gen::t_Block.validate_ref(10000000, new_block)) { return fatal_error("new Block failed to pass automatic validity tests"); } } @@ -4030,6 +4034,9 @@ td::Result Collator::register_external_message_cell(Ref ext_msg, if (!block::tlb::t_Message.validate_ref(256, ext_msg)) { return td::Status::Error("external message is not a (Message Any) according to hand-written checks"); } + if (!block::tlb::validate_message_libs(ext_msg)) { + return td::Status::Error("external message has invalid libs in StateInit"); + } block::gen::CommonMsgInfo::Record_ext_in_msg_info info; if (!tlb::unpack_cell_inexact(ext_msg, info)) { return td::Status::Error("cannot unpack external message header"); diff --git a/validator/impl/validate-query.cpp b/validator/impl/validate-query.cpp index 0e1b1199..b47254c3 100644 --- a/validator/impl/validate-query.cpp +++ b/validator/impl/validate-query.cpp @@ -2111,13 +2111,13 @@ bool ValidateQuery::unpack_block_data() { auto outmsg_cs = vm::load_cell_slice_ref(std::move(extra.out_msg_descr)); // run some hand-written checks from block::tlb:: // (automatic tests from block::gen:: have been already run for the entire block) - if (!block::tlb::t_InMsgDescr.validate_upto(1000000, *inmsg_cs)) { + if (!block::tlb::t_InMsgDescr.validate_upto(10000000, *inmsg_cs)) { return reject_query("InMsgDescr of the new block failed to pass handwritten validity tests"); } - if (!block::tlb::t_OutMsgDescr.validate_upto(1000000, *outmsg_cs)) { + if (!block::tlb::t_OutMsgDescr.validate_upto(10000000, *outmsg_cs)) { return reject_query("OutMsgDescr of the new block failed to pass handwritten validity tests"); } - if (!block::tlb::t_ShardAccountBlocks.validate_ref(1000000, extra.account_blocks)) { + if (!block::tlb::t_ShardAccountBlocks.validate_ref(10000000, extra.account_blocks)) { return reject_query("ShardAccountBlocks of the new block failed to pass handwritten validity tests"); } in_msg_dict_ = std::make_unique(std::move(inmsg_cs), 256, block::tlb::aug_InMsgDescr); @@ -5507,7 +5507,7 @@ bool ValidateQuery::try_validate() { } } LOG(INFO) << "running automated validity checks for block candidate " << id_.to_str(); - if (!block::gen::t_Block.validate_ref(1000000, block_root_)) { + if (!block::gen::t_Block.validate_ref(10000000, block_root_)) { return reject_query("block "s + id_.to_str() + " failed to pass automated validity checks"); } if (!fix_all_processed_upto()) { From 1696ebfa203f2c93c9956e8bac1ca89f7d3446b6 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Thu, 4 May 2023 14:45:42 +0300 Subject: [PATCH 23/42] Account for unprocessed messages in estimate_block_size; check consensus_config limits in collator (#692) Co-authored-by: SpyCheese --- crypto/block/block.cpp | 2 +- crypto/block/block.h | 3 ++- validator/impl/collator.cpp | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/crypto/block/block.cpp b/crypto/block/block.cpp index 9e2caef5..e1790cbf 100644 --- a/crypto/block/block.cpp +++ b/crypto/block/block.cpp @@ -715,7 +715,7 @@ td::uint64 BlockLimitStatus::estimate_block_size(const vm::NewCellStorageStat::S sum += *extra; } return 2000 + (sum.bits >> 3) + sum.cells * 12 + sum.internal_refs * 3 + sum.external_refs * 40 + accounts * 200 + - transactions * 200 + (extra ? 200 : 0); + transactions * 200 + (extra ? 200 : 0) + extra_out_msgs * 300; } int BlockLimitStatus::classify() const { diff --git a/crypto/block/block.h b/crypto/block/block.h index 6c460e31..f5b47a63 100644 --- a/crypto/block/block.h +++ b/crypto/block/block.h @@ -261,7 +261,7 @@ struct BlockLimitStatus { ton::LogicalTime cur_lt; td::uint64 gas_used{}; vm::NewCellStorageStat st_stat; - unsigned accounts{}, transactions{}; + unsigned accounts{}, transactions{}, extra_out_msgs{}; BlockLimitStatus(const BlockLimits& limits_, ton::LogicalTime lt = 0) : limits(limits_), cur_lt(std::max(limits_.start_lt, lt)) { } @@ -270,6 +270,7 @@ struct BlockLimitStatus { st_stat.set_zero(); transactions = accounts = 0; gas_used = 0; + extra_out_msgs = 0; } td::uint64 estimate_block_size(const vm::NewCellStorageStat::Stat* extra = nullptr) const; int classify() const; diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 9a6c512b..34dfca61 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -2961,6 +2961,7 @@ bool Collator::process_new_messages(bool enqueue_only) { while (!new_msgs.empty()) { block::NewOutMsg msg = new_msgs.top(); new_msgs.pop(); + block_limit_status_->extra_out_msgs--; if (block_full_ && !enqueue_only) { LOG(INFO) << "BLOCK FULL, enqueue all remaining new messages"; enqueue_only = true; @@ -2982,6 +2983,7 @@ void Collator::register_new_msg(block::NewOutMsg new_msg) { min_new_msg_lt = new_msg.lt; } new_msgs.push(std::move(new_msg)); + block_limit_status_->extra_out_msgs++; } void Collator::register_new_msgs(block::transaction::Transaction& trans) { @@ -3972,6 +3974,18 @@ bool Collator::create_block_candidate() { ton::BlockIdExt{ton::BlockId{shard_, new_block_seqno}, new_block->get_hash().bits(), block::compute_file_hash(blk_slice.as_slice())}, block::compute_file_hash(cdata_slice.as_slice()), blk_slice.clone(), cdata_slice.clone()); + // 3.1 check block and collated data size + auto consensus_config = config_->get_consensus_config(); + if (block_candidate->data.size() > consensus_config.max_block_size) { + return fatal_error(PSTRING() << "block size (" << block_candidate->data.size() + << ") exceeds the limit in consensus config (" << consensus_config.max_block_size + << ")"); + } + if (block_candidate->collated_data.size() > consensus_config.max_collated_data_size) { + return fatal_error(PSTRING() << "collated data size (" << block_candidate->collated_data.size() + << ") exceeds the limit in consensus config (" + << consensus_config.max_collated_data_size << ")"); + } // 4. save block candidate LOG(INFO) << "saving new BlockCandidate"; td::actor::send_closure_later(manager, &ValidatorManager::set_block_candidate, block_candidate->id, From f8b585df39630b63cdc0de44056621eb65372291 Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Thu, 4 May 2023 08:49:43 -0500 Subject: [PATCH 24/42] Fix missing git revision when built with Nix. (#680) --- flake.nix | 3 +++ git_watcher.cmake | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/flake.nix b/flake.nix index e7b0422e..d3fca85c 100644 --- a/flake.nix +++ b/flake.nix @@ -50,6 +50,9 @@ "-static-libstdc++" ]); + GIT_REVISION = if self ? rev then self.rev else "dirty"; + GIT_REVISION_DATE = (builtins.concatStringsSep "-" (builtins.match "(.{4})(.{2})(.{2}).*" self.lastModifiedDate)) + " " + (builtins.concatStringsSep ":" (builtins.match "^........(.{2})(.{2})(.{2}).*" self.lastModifiedDate)); + postInstall = '' moveToOutput bin "$bin" ''; diff --git a/git_watcher.cmake b/git_watcher.cmake index ab135e80..78e57ba1 100644 --- a/git_watcher.cmake +++ b/git_watcher.cmake @@ -139,6 +139,8 @@ function(GetGitState _working_dir) RunGitCommand(show -s "--format=%H" ${object}) if(exit_code EQUAL 0) set(ENV{GIT_HEAD_SHA1} ${output}) + else() + set(ENV{GIT_HEAD_SHA1} "$ENV{GIT_REVISION}") endif() RunGitCommand(show -s "--format=%an" ${object}) @@ -154,6 +156,8 @@ function(GetGitState _working_dir) RunGitCommand(show -s "--format=%ci" ${object}) if(exit_code EQUAL 0) set(ENV{GIT_COMMIT_DATE_ISO8601} "${output}") + else() + set(ENV{GIT_COMMIT_DATE_ISO8601} "$ENV{GIT_REVISION_DATE}") endif() RunGitCommand(show -s "--format=%s" ${object}) From 1aadc80742b55487355412633d2241bbf64747bf Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Thu, 4 May 2023 08:50:25 -0500 Subject: [PATCH 25/42] More portable (#681) * integrate static openssl into linux binaries; do not use AVX and AVX2 CPU instructions in windows binaries. * integrate static openssl into linux binaries; do not use AVX and AVX2 CPU instructions in windows binaries. --- .github/workflows/ubuntu-22.04-compile.yml | 12 +++++++++++- .github/workflows/ubuntu-compile.yml | 13 ++++++++++++- .github/workflows/win-2019-compile.yml | 7 +------ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ubuntu-22.04-compile.yml b/.github/workflows/ubuntu-22.04-compile.yml index d27d1b4d..8032e498 100644 --- a/.github/workflows/ubuntu-22.04-compile.yml +++ b/.github/workflows/ubuntu-22.04-compile.yml @@ -27,9 +27,19 @@ jobs: export CC=$(which clang) export CXX=$(which clang++) export CCACHE_DISABLE=1 + + git clone https://github.com/openssl/openssl openssl_1_1_1 + cd openssl_1_1_1 + git checkout OpenSSL_1_1_1-stable + ./config + make build_libs -j4 + + cd .. + rootPath=`pwd` mkdir build cd build - cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. + + cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state - name: Find & copy binaries diff --git a/.github/workflows/ubuntu-compile.yml b/.github/workflows/ubuntu-compile.yml index dd246a39..b303e143 100644 --- a/.github/workflows/ubuntu-compile.yml +++ b/.github/workflows/ubuntu-compile.yml @@ -30,9 +30,20 @@ jobs: export CC=$(which clang) export CXX=$(which clang++) export CCACHE_DISABLE=1 + mkdir build-${{ matrix.os }} cd build-${{ matrix.os }} - cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. + + git clone https://github.com/openssl/openssl openssl_1_1_1 + cd openssl_1_1_1 + git checkout OpenSSL_1_1_1-stable + ./config + make build_libs -j4 + + cd .. + buildPath=`pwd` + + cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$buildPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$buildPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork - name: Find & copy binaries diff --git a/.github/workflows/win-2019-compile.yml b/.github/workflows/win-2019-compile.yml index bd174a15..b0c99971 100644 --- a/.github/workflows/win-2019-compile.yml +++ b/.github/workflows/win-2019-compile.yml @@ -48,18 +48,13 @@ jobs: curl -Lo libmicrohttpd-latest-w32-bin.zip https://ftpmirror.gnu.org/libmicrohttpd/libmicrohttpd-latest-w32-bin.zip unzip libmicrohttpd-latest-w32-bin.zip - - name: Install pre-compiled Readline Win64 - run: | - curl -Lo readline-5.0-1-lib.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/readline-5.0-1-lib.zip - unzip readline-5.0-1-lib.zip - - name: Compile run: | set root=%cd% echo %root% mkdir build cd build - cmake -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1/x64/lib/libcrypto.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. + cmake -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1/x64/lib/libcrypto.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork --config Release - name: Show executables From 7878578dba955d51ea4f0e0753070f92a9c0f636 Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Fri, 5 May 2023 03:50:46 -0500 Subject: [PATCH 26/42] Add day to the git tag name (#652) * Add day to the git tag name * Change release tag generation method. v2023.04 v2023.04-1 v2023.04-2 v2023.04-3 etc * add git fetch to get all tags * add git fetch to get all tags --- .github/workflows/create-release.yml | 179 ++++++++++++++------------- recent_changelog.md | 6 + 2 files changed, 100 insertions(+), 85 deletions(-) create mode 100644 recent_changelog.md diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 85d0dc25..cb665122 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -27,21 +27,21 @@ jobs: workflow_conclusion: success skip_unpack: false -# - name: Download Linux arm64 artifacts -# uses: dawidd6/action-download-artifact@v2 -# with: -# workflow: ton-aarch64-linux.yml -# path: artifacts -# workflow_conclusion: success -# skip_unpack: true -# -# - name: Download and unzip Linux arm64 artifacts -# uses: dawidd6/action-download-artifact@v2 -# with: -# workflow: ton-aarch64-linux.yml -# path: artifacts -# workflow_conclusion: success -# skip_unpack: false + # - name: Download Linux arm64 artifacts + # uses: dawidd6/action-download-artifact@v2 + # with: + # workflow: ton-aarch64-linux.yml + # path: artifacts + # workflow_conclusion: success + # skip_unpack: true + # + # - name: Download and unzip Linux arm64 artifacts + # uses: dawidd6/action-download-artifact@v2 + # with: + # workflow: ton-aarch64-linux.yml + # path: artifacts + # workflow_conclusion: success + # skip_unpack: false - name: Download Mac x86-64 artifacts uses: dawidd6/action-download-artifact@v2 @@ -59,21 +59,21 @@ jobs: workflow_conclusion: success skip_unpack: false -# - name: Download Mac arm64 artifacts -# uses: dawidd6/action-download-artifact@v2 -# with: -# workflow: ton-aarch64-macos.yml -# path: artifacts -# workflow_conclusion: success -# skip_unpack: true -# -# - name: Download and unzip Mac arm64 artifacts -# uses: dawidd6/action-download-artifact@v2 -# with: -# workflow: ton-aarch64-macos.yml -# path: artifacts -# workflow_conclusion: success -# skip_unpack: false + # - name: Download Mac arm64 artifacts + # uses: dawidd6/action-download-artifact@v2 + # with: + # workflow: ton-aarch64-macos.yml + # path: artifacts + # workflow_conclusion: success + # skip_unpack: true + # + # - name: Download and unzip Mac arm64 artifacts + # uses: dawidd6/action-download-artifact@v2 + # with: + # workflow: ton-aarch64-macos.yml + # path: artifacts + # workflow_conclusion: success + # skip_unpack: false - name: Download Windows artifacts uses: dawidd6/action-download-artifact@v2 @@ -104,26 +104,35 @@ jobs: tree artifacts -# create release + # create release - name: Read Changelog.md and use it as a body of new release id: read_release shell: bash run: | - r=$(cat Changelog.md) + r=$(cat recent_changelog.md) r="${r//'%'/'%25'}" r="${r//$'\n'/'%0A'}" r="${r//$'\r'/'%0D'}" echo "::set-output name=CHANGELOG_BODY::$r" - - name: Get current date - id: date - run: echo "::set-output name=date::$(date +'%Y.%m')" + - name: Get next tag + id: tag + run: | + git fetch --all --tags + git tag -l + NEW_TAG=v$(date +'%Y.%m') + FOUND=$(git tag -l | grep $NEW_TAG | wc -l) + if [ $FOUND -eq 0 ]; then + echo "TAG=$NEW_TAG" >> $GITHUB_OUTPUT + else + echo "TAG=$NEW_TAG-$FOUND" >> $GITHUB_OUTPUT + fi - name: Get registration token id: getRegToken run: | - curl -X POST -H \"Accept: application/vnd.github+json\" -H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' https://api.github.com/repos/ton-blockchain/ton/actions/runners/registration-token + curl -X POST -H \"Accept: application/vnd.github+json\" -H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' https://api.github.com/repos/ton-blockchain/ton/actions/runners/registration-token - name: Create release id: create_release @@ -131,16 +140,16 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tag_name: v${{ steps.date.outputs.date }} - release_name: v${{ steps.date.outputs.date }} + tag_name: ${{ steps.tag.outputs.TAG }} + release_name: TON ${{ steps.tag.outputs.TAG }} body: | ${{ steps.read_release.outputs.CHANGELOG_BODY }} draft: false prerelease: false -# upload + # upload -# win + # win - name: Upload Windows 2019 artifacts uses: svenstaro/upload-release-action@v2 @@ -148,7 +157,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries.zip asset_name: ton-win-x86-64.zip - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Windows 2019 single artifact - fift uses: svenstaro/upload-release-action@v2 @@ -156,7 +165,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries/fift.exe asset_name: fift.exe - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Windows 2019 single artifact - func uses: svenstaro/upload-release-action@v2 @@ -164,7 +173,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries/func.exe asset_name: func.exe - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Windows 2019 single artifact - lite-client uses: svenstaro/upload-release-action@v2 @@ -172,7 +181,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries/lite-client.exe asset_name: lite-client.exe - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Windows 2019 single artifact - rldp-http-proxy uses: svenstaro/upload-release-action@v2 @@ -180,7 +189,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries/rldp-http-proxy.exe asset_name: rldp-http-proxy.exe - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Windows 2019 single artifact - http-proxy uses: svenstaro/upload-release-action@v2 @@ -188,7 +197,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries/http-proxy.exe asset_name: http-proxy.exe - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Windows 2019 single artifact - storage-daemon-cli uses: svenstaro/upload-release-action@v2 @@ -196,7 +205,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries/storage-daemon-cli.exe asset_name: storage-daemon-cli.exe - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Windows 2019 single artifact - tonlibjson uses: svenstaro/upload-release-action@v2 @@ -204,7 +213,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries/tonlibjson.dll asset_name: tonlibjson.dll - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Windows 2019 single artifact - tonlib-cli uses: svenstaro/upload-release-action@v2 @@ -212,9 +221,9 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-win-binaries/tonlib-cli.exe asset_name: tonlib-cli.exe - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} -# mac x86-64 + # mac x86-64 - name: Upload Mac x86-64 artifacts uses: svenstaro/upload-release-action@v2 @@ -222,7 +231,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries.zip asset_name: ton-mac-x86-64.zip - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Mac x86-64 single artifact - fift uses: svenstaro/upload-release-action@v2 @@ -230,7 +239,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries/fift asset_name: fift-mac-x86-64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Mac x86-64 single artifact - func uses: svenstaro/upload-release-action@v2 @@ -238,7 +247,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries/func asset_name: func-mac-x86-64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Mac x86-64 single artifact - lite-client uses: svenstaro/upload-release-action@v2 @@ -246,7 +255,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries/lite-client asset_name: lite-client-mac-x86-64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Mac x86-64 single artifact - rldp-http-proxy uses: svenstaro/upload-release-action@v2 @@ -254,7 +263,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries/rldp-http-proxy asset_name: rldp-http-proxy-mac-x86-64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Mac x86-64 single artifact - http-proxy uses: svenstaro/upload-release-action@v2 @@ -262,7 +271,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries/http-proxy asset_name: http-proxy-mac-x86-64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Mac x86-64 single artifact - storage-daemon-cli uses: svenstaro/upload-release-action@v2 @@ -270,7 +279,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries/storage-daemon-cli asset_name: storage-daemon-cli-mac-x86-64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Mac x86-64 single artifact - tonlibjson uses: svenstaro/upload-release-action@v2 @@ -278,7 +287,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries/libtonlibjson.dylib asset_name: tonlibjson-mac-x86-64.dylib - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Mac x86-64 single artifact - tonlib-cli uses: svenstaro/upload-release-action@v2 @@ -286,9 +295,9 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-macos-binaries/tonlib-cli asset_name: tonlib-cli-mac-x86-64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} -# linux x86-64 + # linux x86-64 - name: Upload Linux x86-64 artifacts uses: svenstaro/upload-release-action@v2 @@ -296,7 +305,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries.zip asset_name: ton-linux-x86_64.zip - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Linux x86-64 single artifact - fift uses: svenstaro/upload-release-action@v2 @@ -304,7 +313,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries/fift asset_name: fift-linux-x86_64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Linux x86-64 single artifact - func uses: svenstaro/upload-release-action@v2 @@ -312,7 +321,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries/func asset_name: func-linux-x86_64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Linux x86-64 single artifact - lite-client uses: svenstaro/upload-release-action@v2 @@ -320,7 +329,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries/lite-client asset_name: lite-client-linux-x86_64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Linux x86-64 single artifact - rldp-http-proxy uses: svenstaro/upload-release-action@v2 @@ -328,7 +337,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries/rldp-http-proxy asset_name: rldp-http-proxy-linux-x86_64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Linux x86-64 single artifact - http-proxy uses: svenstaro/upload-release-action@v2 @@ -336,7 +345,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries/http-proxy asset_name: http-proxy-linux-x86_64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Linux x86-64 single artifact - storage-daemon-cli uses: svenstaro/upload-release-action@v2 @@ -344,7 +353,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries/storage-daemon-cli asset_name: storage-daemon-cli-linux-x86_64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Linux x86-64 single artifact - tonlibjson uses: svenstaro/upload-release-action@v2 @@ -352,7 +361,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so.0.5 asset_name: tonlibjson-linux-x86_64.so - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} - name: Upload Linux x86-64 single artifact - tonlib-cli uses: svenstaro/upload-release-action@v2 @@ -360,23 +369,23 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-x86_64-linux-binaries/tonlib-cli asset_name: tonlib-cli-linux-x86_64 - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} -# - name: Upload Linux arm64 artifacts -# uses: svenstaro/upload-release-action@v2 -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# file: artifacts/ton-aarch64-linux-binaries.zip -# asset_name: ton-linux-arm64.zip -# tag: v${{ steps.date.outputs.date }} -# -# - name: Upload Mac arm64 artifacts -# uses: svenstaro/upload-release-action@v2 -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# file: artifacts/ton-aarch64-macos-binaries -# asset_name: ton-mac-arm64.zip -# tag: v${{ steps.date.outputs.date }} + # - name: Upload Linux arm64 artifacts + # uses: svenstaro/upload-release-action@v2 + # with: + # repo_token: ${{ secrets.GITHUB_TOKEN }} + # file: artifacts/ton-aarch64-linux-binaries.zip + # asset_name: ton-linux-arm64.zip + # tag: ${{ steps.tag.outputs.TAG }} + # + # - name: Upload Mac arm64 artifacts + # uses: svenstaro/upload-release-action@v2 + # with: + # repo_token: ${{ secrets.GITHUB_TOKEN }} + # file: artifacts/ton-aarch64-macos-binaries + # asset_name: ton-mac-arm64.zip + # tag: ${{ steps.tag.outputs.TAG }} - name: Upload WASM artifacts uses: svenstaro/upload-release-action@v2 @@ -384,4 +393,4 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} file: artifacts/ton-wasm-binaries.zip asset_name: ton-wasm-binaries.zip - tag: v${{ steps.date.outputs.date }} + tag: ${{ steps.tag.outputs.TAG }} diff --git a/recent_changelog.md b/recent_changelog.md new file mode 100644 index 00000000..59297669 --- /dev/null +++ b/recent_changelog.md @@ -0,0 +1,6 @@ +## 03.2023 Update +1. Improvement of ADNL connection stability +2. Transaction emulator support and getAccountStateByTransaction method +3. Fixes of typos, undefined behavior and timer warnings +4. Handling incorrect integer literal values in funC; funC version bumped to 0.4.2 +5. FunC Mathlib \ No newline at end of file From 5abfe2337e26e214dc04d2e7840fb9b2e640e530 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Wed, 10 May 2023 12:57:57 +0300 Subject: [PATCH 27/42] Catchain improvements (#698) * Fix "sgn" in fift; fix marking infinite loops as noterurn in func * TON-P1-1: Remove unused catchain queries * TON-P1-15: Avoid synchronization with self * TON-P1-3, TON-P1-17: Disallow more than one candidate per src per round (to prevent flood), add checks to process_broadcast * TON-P1-10: Fix fast/slow attempts * TON-P1-14: Add named constants * TON-P1-18, TON-P1-19: Alloc temporary memory in the same way as persistent memory * TON-P1-20: Add comment to choose_blocks_to_approve * TON-P1-16: Avoid creating two catchain blocks on need_new_block * TON-P1-8: Add some validation to validator-engine parameters * TON-P1-6: Don't allow sending the same block many times Many requests for the same block are not unusual (however, there's no need to answer them all) * TON-P1-2: Enable prohibiting dependencies from blamed nodes (2.7.5 in CatChain doc), fix processing blame proofs * Best practices bp-6: Fix incorrect warning bp-7: Remove unused code bp-8: Bring back PerfWarningTimer logging (only when no callback) bp-9: Remove unnecessary condition bp-11: Remove commented-out code bp-13: Divide code in validator-session-state Adherence to Specification: Fix typo --- catchain/catchain-receiver-interface.h | 1 + catchain/catchain-receiver-source.cpp | 27 +- catchain/catchain-receiver-source.h | 3 + catchain/catchain-receiver-source.hpp | 7 + catchain/catchain-receiver.cpp | 154 ++--- catchain/catchain-receiver.h | 2 +- catchain/catchain-receiver.hpp | 17 +- catchain/catchain.cpp | 15 +- crypto/fift/words.cpp | 2 +- crypto/func/analyzer.cpp | 2 +- doc/catchain.tex | 2 +- tdutils/td/utils/Timer.cpp | 9 +- tdutils/td/utils/Timer.h | 2 +- tl/generate/scheme/ton_api.tl | 4 - tl/generate/scheme/ton_api.tlo | Bin 86540 -> 86116 bytes validator-engine/validator-engine.cpp | 80 ++- validator-session/CMakeLists.txt | 3 +- validator-session/persistent-vector.h | 7 - .../validator-session-description.cpp | 95 +-- .../validator-session-description.hpp | 32 +- .../validator-session-round-attempt-state.cpp | 486 ++++++++++++++ .../validator-session-round-attempt-state.h | 620 ++++++++++++++++++ validator-session/validator-session-state.cpp | 473 +------------ validator-session/validator-session-state.h | 590 +---------------- validator-session/validator-session-types.h | 6 + validator-session/validator-session.cpp | 70 +- validator-session/validator-session.hpp | 11 +- 27 files changed, 1417 insertions(+), 1303 deletions(-) create mode 100644 validator-session/validator-session-round-attempt-state.cpp create mode 100644 validator-session/validator-session-round-attempt-state.h diff --git a/catchain/catchain-receiver-interface.h b/catchain/catchain-receiver-interface.h index c8f1ef66..bc02832a 100644 --- a/catchain/catchain-receiver-interface.h +++ b/catchain/catchain-receiver-interface.h @@ -52,6 +52,7 @@ class CatChainReceiverInterface : public td::actor::Actor { td::BufferSlice query, td::uint64 max_answer_size, td::actor::ActorId via) = 0; virtual void send_custom_message_data(const PublicKeyHash &dst, td::BufferSlice query) = 0; + virtual void on_blame_processed(td::uint32 source_id) = 0; virtual void destroy() = 0; diff --git a/catchain/catchain-receiver-source.cpp b/catchain/catchain-receiver-source.cpp index 6a9e0777..e758b335 100644 --- a/catchain/catchain-receiver-source.cpp +++ b/catchain/catchain-receiver-source.cpp @@ -60,15 +60,15 @@ td::Result> CatChainReceiverSource::crea void CatChainReceiverSourceImpl::blame(td::uint32 fork, CatChainBlockHeight height) { blame(); - if (!blamed_heights_.empty()) { - if (blamed_heights_.size() <= fork) { - blamed_heights_.resize(fork + 1, 0); - } - if (blamed_heights_[fork] == 0 || blamed_heights_[fork] > height) { - VLOG(CATCHAIN_INFO) << this << ": blamed at " << fork << " " << height; - blamed_heights_[fork] = height; - } + // if (!blamed_heights_.empty()) { + if (blamed_heights_.size() <= fork) { + blamed_heights_.resize(fork + 1, 0); } + if (blamed_heights_[fork] == 0 || blamed_heights_[fork] > height) { + VLOG(CATCHAIN_INFO) << this << ": blamed at " << fork << " " << height; + blamed_heights_[fork] = height; + } + // } } void CatChainReceiverSourceImpl::blame() { @@ -144,7 +144,7 @@ void CatChainReceiverSourceImpl::on_new_block(CatChainReceivedBlock *block) { on_found_fork_proof(create_serialize_tl_object(block->export_tl_dep(), it->second->export_tl_dep()) .as_slice()); - chain_->add_prepared_event(fork_proof()); + chain_->on_found_fork_proof(id_, fork_proof()); } blame(); return; @@ -162,6 +162,15 @@ void CatChainReceiverSourceImpl::on_found_fork_proof(const td::Slice &proof) { } } +bool CatChainReceiverSourceImpl::allow_send_block(CatChainBlockHash hash) { + td::uint32 count = ++block_requests_count_[hash]; + if (count > MAX_BLOCK_REQUESTS) { + VLOG(CATCHAIN_INFO) << this << ": node requested block " << hash << " " << count << " times"; + return false; + } + return true; +} + } // namespace catchain } // namespace ton diff --git a/catchain/catchain-receiver-source.h b/catchain/catchain-receiver-source.h index e805c2a5..55035e77 100644 --- a/catchain/catchain-receiver-source.h +++ b/catchain/catchain-receiver-source.h @@ -61,6 +61,9 @@ class CatChainReceiverSource { virtual td::BufferSlice fork_proof() const = 0; virtual bool fork_is_found() const = 0; + // One block can be sent to one node only a limited number of times to prevent DoS + virtual bool allow_send_block(CatChainBlockHash hash) = 0; + static td::Result> create(CatChainReceiver *chain, PublicKey pub_key, adnl::AdnlNodeIdShort adnl_id, td::uint32 id); diff --git a/catchain/catchain-receiver-source.hpp b/catchain/catchain-receiver-source.hpp index 0785d8c2..cf08c421 100644 --- a/catchain/catchain-receiver-source.hpp +++ b/catchain/catchain-receiver-source.hpp @@ -111,6 +111,8 @@ class CatChainReceiverSourceImpl : public CatChainReceiverSource { return chain_; } + bool allow_send_block(CatChainBlockHash hash) override; + CatChainReceiverSourceImpl(CatChainReceiver *chain, PublicKey source, adnl::AdnlNodeIdShort adnl_id, td::uint32 id); private: @@ -130,6 +132,11 @@ class CatChainReceiverSourceImpl : public CatChainReceiverSource { CatChainBlockHeight delivered_height_ = 0; CatChainBlockHeight received_height_ = 0; + + std::map block_requests_count_; + // One block can be sent to one node up to 5 times + + static const td::uint32 MAX_BLOCK_REQUESTS = 5; }; } // namespace catchain diff --git a/catchain/catchain-receiver.cpp b/catchain/catchain-receiver.cpp index 488fbb9d..482cfb43 100644 --- a/catchain/catchain-receiver.cpp +++ b/catchain/catchain-receiver.cpp @@ -168,13 +168,6 @@ void CatChainReceiverImpl::receive_message_from_overlay(adnl::AdnlNodeIdShort sr return; } - /*auto S = get_source_by_hash(src); - CHECK(S != nullptr); - - if (S->blamed()) { - VLOG(CATCHAIN_INFO) << this << ": dropping block update from blamed source " << src; - return; - }*/ if (data.size() > opts_.max_serialized_block_size) { VLOG(CATCHAIN_WARNING) << this << ": dropping broken block from " << src << ": too big (size=" << data.size() << ", limit=" << opts_.max_serialized_block_size << ")"; @@ -197,19 +190,6 @@ void CatChainReceiverImpl::receive_broadcast_from_overlay(const PublicKeyHash &s callback_->on_broadcast(src, std::move(data)); } -/*void CatChainReceiverImpl::send_block(const PublicKeyHash &src, tl_object_ptr block, - td::BufferSlice payload) { - CHECK(read_db_); - CHECK(src == local_id_); - - validate_block_sync(block, payload.as_slice()).ensure(); - auto B = create_block(std::move(block), td::SharedSlice{payload.as_slice()}); - CHECK(B != nullptr); - - run_scheduler(); - CHECK(B->delivered()); -}*/ - CatChainReceivedBlock *CatChainReceiverImpl::create_block(tl_object_ptr block, td::SharedSlice payload) { if (block->height_ == 0) { @@ -267,21 +247,16 @@ td::Status CatChainReceiverImpl::validate_block_sync(const tl_object_ptr &block, const td::Slice &payload) const { - //LOG(INFO) << ton_api::to_string(block); TRY_STATUS_PREFIX(CatChainReceivedBlock::pre_validate_block(this, block, payload), "failed to validate block: "); + // After pre_validate_block, block->height_ > 0 + auto id = CatChainReceivedBlock::block_id(this, block, payload); + td::BufferSlice B = serialize_tl_object(id, true); - if (block->height_ > 0) { - auto id = CatChainReceivedBlock::block_id(this, block, payload); - td::BufferSlice B = serialize_tl_object(id, true); - - CatChainReceiverSource *S = get_source_by_hash(PublicKeyHash{id->src_}); - CHECK(S != nullptr); - Encryptor *E = S->get_encryptor_sync(); - CHECK(E != nullptr); - return E->check_signature(B.as_slice(), block->signature_.as_slice()); - } else { - return td::Status::OK(); - } + CatChainReceiverSource *S = get_source_by_hash(PublicKeyHash{id->src_}); + CHECK(S != nullptr); + Encryptor *E = S->get_encryptor_sync(); + CHECK(E != nullptr); + return E->check_signature(B.as_slice(), block->signature_.as_slice()); } void CatChainReceiverImpl::run_scheduler() { @@ -515,7 +490,6 @@ CatChainReceiverImpl::CatChainReceiverImpl(std::unique_ptr callback, } CHECK(local_idx_ != static_cast(ids.size())); - //std::sort(short_ids.begin(), short_ids.end()); auto F = create_tl_object(unique_hash, std::move(short_ids)); overlay_full_id_ = overlay::OverlayIdFull{serialize_tl_object(F, true)}; @@ -527,6 +501,8 @@ CatChainReceiverImpl::CatChainReceiverImpl(std::unique_ptr callback, blocks_[root_block_->get_hash()] = std::move(R); last_sent_block_ = root_block_; + blame_processed_.resize(sources_.size(), false); + choose_neighbours(); } @@ -704,7 +680,6 @@ void CatChainReceiverImpl::receive_query_from_overlay(adnl::AdnlNodeIdShort src, auto F = fetch_tl_object(data.clone(), true); if (F.is_error()) { callback_->on_custom_query(get_source_by_adnl_id(src)->get_hash(), std::move(data), std::move(promise)); - //LOG(WARNING) << this << ": unknown query from " << src; return; } auto f = F.move_as_ok(); @@ -717,68 +692,15 @@ void CatChainReceiverImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::cat if (it == blocks_.end() || it->second->get_height() == 0 || !it->second->initialized()) { promise.set_value(serialize_tl_object(create_tl_object(), true)); } else { - promise.set_value(serialize_tl_object(create_tl_object(it->second->export_tl()), - true, it->second->get_payload().as_slice())); - } -} - -void CatChainReceiverImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::catchain_getBlocks query, - td::Promise promise) { - if (query.blocks_.size() > MAX_QUERY_BLOCKS) { - promise.set_error(td::Status::Error(ErrorCode::protoviolation, "too many blocks")); - return; - } - td::int32 cnt = 0; - for (const CatChainBlockHash &b : query.blocks_) { - auto it = blocks_.find(b); - if (it != blocks_.end() && it->second->get_height() > 0) { - auto block = create_tl_object(it->second->export_tl()); - CHECK(!it->second->get_payload().empty()); - td::BufferSlice B = serialize_tl_object(block, true, it->second->get_payload().clone()); - CHECK(B.size() <= opts_.max_serialized_block_size); - td::actor::send_closure(overlay_manager_, &overlay::Overlays::send_message, src, - get_source(local_idx_)->get_adnl_id(), overlay_id_, std::move(B)); - cnt++; + CatChainReceiverSource *S = get_source_by_adnl_id(src); + CHECK(S != nullptr); + if (S->allow_send_block(it->second->get_hash())) { + promise.set_value(serialize_tl_object(create_tl_object(it->second->export_tl()), + true, it->second->get_payload().as_slice())); + } else { + promise.set_error(td::Status::Error("block was requested too many times")); } } - promise.set_value(serialize_tl_object(create_tl_object(cnt), true)); -} - -void CatChainReceiverImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::catchain_getBlockHistory query, - td::Promise promise) { - int64_t h = query.height_; - if (h <= 0) { - promise.set_error(td::Status::Error(ErrorCode::protoviolation, "not-positive height")); - return; - } - if (h > MAX_QUERY_HEIGHT) { - h = MAX_QUERY_HEIGHT; - } - std::set s{query.stop_if_.begin(), query.stop_if_.end()}; - - CatChainReceivedBlock *B = get_block(query.block_); - if (B == nullptr) { - promise.set_value(serialize_tl_object(create_tl_object(0), true)); - return; - } - if (static_cast(h) > B->get_height()) { - h = B->get_height(); - } - td::uint32 cnt = 0; - while (h-- > 0) { - if (s.find(B->get_hash()) != s.end()) { - break; - } - auto block = create_tl_object(B->export_tl()); - CHECK(!B->get_payload().empty()); - td::BufferSlice BB = serialize_tl_object(block, true, B->get_payload().as_slice()); - CHECK(BB.size() <= opts_.max_serialized_block_size); - td::actor::send_closure(overlay_manager_, &overlay::Overlays::send_message, src, - get_source(local_idx_)->get_adnl_id(), overlay_id_, std::move(BB)); - B = B->get_prev(); - cnt++; - } - promise.set_value(serialize_tl_object(create_tl_object(cnt), true)); } void CatChainReceiverImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::catchain_getDifference query, @@ -832,6 +754,8 @@ void CatChainReceiverImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::cat } } CHECK(right > 0); + CatChainReceiverSource *S0 = get_source_by_adnl_id(src); + CHECK(S0 != nullptr); for (td::uint32 i = 0; i < get_sources_cnt(); i++) { if (vt[i] >= 0 && my_vt[i] > vt[i]) { CatChainReceiverSource *S = get_source(i); @@ -839,12 +763,14 @@ void CatChainReceiverImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::cat while (t-- > 0) { CatChainReceivedBlock *M = S->get_block(++vt[i]); CHECK(M != nullptr); - auto block = create_tl_object(M->export_tl()); - CHECK(!M->get_payload().empty()); - td::BufferSlice BB = serialize_tl_object(block, true, M->get_payload().as_slice()); - CHECK(BB.size() <= opts_.max_serialized_block_size); - td::actor::send_closure(overlay_manager_, &overlay::Overlays::send_message, src, - get_source(local_idx_)->get_adnl_id(), overlay_id_, std::move(BB)); + if (S0->allow_send_block(M->get_hash())) { + auto block = create_tl_object(M->export_tl()); + CHECK(!M->get_payload().empty()); + td::BufferSlice BB = serialize_tl_object(block, true, M->get_payload().as_slice()); + CHECK(BB.size() <= opts_.max_serialized_block_size); + td::actor::send_closure(overlay_manager_, &overlay::Overlays::send_message, src, + get_source(local_idx_)->get_adnl_id(), overlay_id_, std::move(BB)); + } } } } @@ -1031,10 +957,15 @@ void CatChainReceiverImpl::written_unsafe_root_block(CatChainReceivedBlock *bloc void CatChainReceiverImpl::alarm() { alarm_timestamp() = td::Timestamp::never(); - if (next_sync_ && next_sync_.is_in_past()) { + if (next_sync_ && next_sync_.is_in_past() && get_sources_cnt() > 1) { next_sync_ = td::Timestamp::in(td::Random::fast(SYNC_INTERVAL_MIN, SYNC_INTERVAL_MAX)); for (unsigned i = 0; i < SYNC_ITERATIONS; i++) { - CatChainReceiverSource *S = get_source(td::Random::fast(0, static_cast(get_sources_cnt()) - 1)); + auto idx = td::Random::fast(1, static_cast(get_sources_cnt()) - 1); + if (idx == static_cast(local_idx_)) { + idx = 0; + } + // idx is a random number in [0, get_sources_cnt-1] not equal to local_idx + CatChainReceiverSource *S = get_source(idx); CHECK(S != nullptr); if (!S->blamed()) { synchronize_with(S); @@ -1117,6 +1048,23 @@ static void destroy_db(const std::string& name, td::uint32 attempt) { } } +void CatChainReceiverImpl::on_found_fork_proof(td::uint32 source_id, td::BufferSlice data) { + if (blame_processed_[source_id]) { + add_block(std::move(data), std::vector()); + } else { + pending_fork_proofs_[source_id] = std::move(data); + } +} + +void CatChainReceiverImpl::on_blame_processed(td::uint32 source_id) { + blame_processed_[source_id] = true; + auto it = pending_fork_proofs_.find(source_id); + if (it != pending_fork_proofs_.end()) { + add_block(std::move(it->second), std::vector()); + pending_fork_proofs_.erase(it); + } +} + void CatChainReceiverImpl::destroy() { auto name = db_root_ + "/catchainreceiver" + db_suffix_ + td::base64url_encode(as_slice(incarnation_)); delay_action([name]() { destroy_db(name, 0); }, td::Timestamp::in(DESTROY_DB_DELAY)); diff --git a/catchain/catchain-receiver.h b/catchain/catchain-receiver.h index 2c959fbc..75c87351 100644 --- a/catchain/catchain-receiver.h +++ b/catchain/catchain-receiver.h @@ -56,7 +56,7 @@ class CatChainReceiver : public CatChainReceiverInterface { virtual void run_block(CatChainReceivedBlock *block) = 0; virtual void deliver_block(CatChainReceivedBlock *block) = 0; virtual td::uint32 add_fork() = 0; - virtual void add_prepared_event(td::BufferSlice data) = 0; + virtual void on_found_fork_proof(td::uint32 source_id, td::BufferSlice data) = 0; virtual void on_blame(td::uint32 source_id) = 0; virtual const CatChainOptions &opts() const = 0; diff --git a/catchain/catchain-receiver.hpp b/catchain/catchain-receiver.hpp index 5da4001c..5c4d3764 100644 --- a/catchain/catchain-receiver.hpp +++ b/catchain/catchain-receiver.hpp @@ -39,9 +39,6 @@ class CatChainReceiverImpl final : public CatChainReceiver { return PrintId{incarnation_, local_id_}; } - void add_prepared_event(td::BufferSlice data) override { - add_block(std::move(data), std::vector()); - } CatChainSessionId get_incarnation() const override { return incarnation_; } @@ -73,15 +70,10 @@ class CatChainReceiverImpl final : public CatChainReceiver { void receive_query_from_overlay(adnl::AdnlNodeIdShort src, td::BufferSlice data, td::Promise promise); void process_query(adnl::AdnlNodeIdShort src, ton_api::catchain_getBlock query, td::Promise promise); - void process_query(adnl::AdnlNodeIdShort src, ton_api::catchain_getBlocks query, - td::Promise promise); - void process_query(adnl::AdnlNodeIdShort src, ton_api::catchain_getBlockHistory query, - td::Promise promise); void process_query(adnl::AdnlNodeIdShort src, ton_api::catchain_getDifference query, td::Promise promise); template void process_query(adnl::AdnlNodeIdShort src, const T &query, td::Promise promise) { - //LOG(WARNING) << this << ": unknown query from " << src; callback_->on_custom_query(get_source_by_adnl_id(src)->get_hash(), serialize_tl_object(&query, true), std::move(promise)); } @@ -89,7 +81,6 @@ class CatChainReceiverImpl final : public CatChainReceiver { void receive_block(adnl::AdnlNodeIdShort src, tl_object_ptr block, td::BufferSlice payload); void receive_block_answer(adnl::AdnlNodeIdShort src, td::BufferSlice); - //void send_block(const PublicKeyHash &src, tl_object_ptr block, td::BufferSlice payload); CatChainReceivedBlock *create_block(tl_object_ptr block, td::SharedSlice payload) override; CatChainReceivedBlock *create_block(tl_object_ptr block) override; @@ -117,6 +108,8 @@ class CatChainReceiverImpl final : public CatChainReceiver { void on_blame(td::uint32 src) override { callback_->blame(src); } + void on_found_fork_proof(td::uint32 source_id, td::BufferSlice data) override; + void on_blame_processed(td::uint32 source_id) override; const CatChainOptions &opts() const override { return opts_; } @@ -204,9 +197,6 @@ class CatChainReceiverImpl final : public CatChainReceiver { std::vector neighbours_; - //std::queue> events_; - //std::queue raw_events_; - td::actor::ActorId keyring_; td::actor::ActorId adnl_; td::actor::ActorId overlay_manager_; @@ -231,6 +221,9 @@ class CatChainReceiverImpl final : public CatChainReceiver { bool started_{false}; std::list to_run_; + + std::vector blame_processed_; + std::map pending_fork_proofs_; }; } // namespace catchain diff --git a/catchain/catchain.cpp b/catchain/catchain.cpp index 001840fd..53ae16b5 100644 --- a/catchain/catchain.cpp +++ b/catchain/catchain.cpp @@ -108,11 +108,12 @@ void CatChainImpl::need_new_block(td::Timestamp t) { if (!receiver_started_) { return; } - if (!force_process_) { + if (!force_process_ || !active_process_) { VLOG(CATCHAIN_INFO) << this << ": forcing creation of new block"; } - force_process_ = true; - if (!active_process_) { + if (active_process_) { + force_process_ = true; + } else { alarm_timestamp().relax(t); } } @@ -197,6 +198,14 @@ void CatChainImpl::on_blame(td::uint32 src_id) { } } } + for (td::uint32 i = 0; i < process_deps_.size(); ++i) { + if (blocks_[process_deps_[i]]->source() == src_id) { + process_deps_[i] = process_deps_.back(); + process_deps_.pop_back(); + --i; + } + } + td::actor::send_closure(receiver_, &CatChainReceiverInterface::on_blame_processed, src_id); } void CatChainImpl::on_custom_query(const PublicKeyHash &src, td::BufferSlice data, td::Promise promise) { diff --git a/crypto/fift/words.cpp b/crypto/fift/words.cpp index 964b4328..b5e6dbd6 100644 --- a/crypto/fift/words.cpp +++ b/crypto/fift/words.cpp @@ -235,7 +235,7 @@ void interpret_cmp(vm::Stack& stack, const char opt[3]) { } void interpret_sgn(vm::Stack& stack, const char opt[3]) { - auto x = stack.pop_int(); + auto x = stack.pop_int_finite(); int r = x->sgn(); assert((unsigned)(r + 1) <= 2); stack.push_smallint(((const signed char*)opt)[r + 1]); diff --git a/crypto/func/analyzer.cpp b/crypto/func/analyzer.cpp index 989e9ebe..d59230e8 100644 --- a/crypto/func/analyzer.cpp +++ b/crypto/func/analyzer.cpp @@ -894,7 +894,7 @@ bool Op::mark_noreturn() { return set_noreturn((block0->mark_noreturn() & (block1 && block1->mark_noreturn())) | next->mark_noreturn()); case _Again: block0->mark_noreturn(); - return set_noreturn(false); + return set_noreturn(true); case _Until: return set_noreturn(block0->mark_noreturn() | next->mark_noreturn()); case _While: diff --git a/doc/catchain.tex b/doc/catchain.tex index b3cae642..b1a27164 100644 --- a/doc/catchain.tex +++ b/doc/catchain.tex @@ -243,7 +243,7 @@ Notice that an external punishment for creating catchain forks may be used in th Once a fork (created by~$i$) is detected (by another process~$j$), i.e.\ $j$ learns about two different messages $m_{i,s}$ and $m'_{i,s}$ created by $i$ and having same height $s$ (usually this happens while recursively downloading dependencies of some other messages), $j$ starts ignoring~$i$ and all of its subsequent messages. They are not accepted and not broadcast further. However, messages created by~$i$ prior to the fork detection may be still downloaded if they are referred to in messages (blocks) created by processes that did not see this fork before referring to such messages created by~$i$. \nxsubpoint\emb{Accepting messages from a ``bad'' process is bad}\label{sp:no.bad.accept} -Furthermore, if process $i$ learns about a fork created by process $j$, then $i$ shows this to its neighbors by creating a new service broadcast message that contains the corresponding fork proof (cf.~\ptref{sp:fork.proofs}). Afterwards, this and all subsequent messages of $j$ cannot directly depend on any messages by the known ``bad'' producer $i$ (but they still can refer to messages from another party $k$ that directly or indirectly refer to messages of~$i$ if no fork by~$i$ was known to $k$ at the time when the referring message was created). If $j$ violates this restriction and creates messages with such invalid references, these messages will be discarded by all honest processes in the group. +Furthermore, if process $i$ learns about a fork created by process $j$, then $i$ shows this to its neighbors by creating a new service broadcast message that contains the corresponding fork proof (cf.~\ptref{sp:fork.proofs}). Afterwards, this and all subsequent messages of $i$ cannot directly depend on any messages by the known ``bad'' producer $j$ (but they still can refer to messages from another party $k$ that directly or indirectly refer to messages of~$i$ if no fork by~$i$ was known to $k$ at the time when the referring message was created). If $i$ violates this restriction and creates messages with such invalid references, these messages will be discarded by all honest processes in the group. \nxsubpoint\emb{The set of ``bad'' group members is a part of the intrinsic state}\label{sp:bad.proc.set} Each process~$i$ keeps its own copy of the set of known ``bad'' processes in the group, i.e., those processes that have created at least one fork or have violated \ptref{sp:no.bad.accept}. This set is updated by adding~$j$ into it as soon as $i$ learns about a fork created by~$j$ (or about a violation of~\ptref{sp:no.bad.accept} by $j$); after that, a callback provided by the higher-level protocol is invoked. This set is used when a new broadcast message arrives: if the sender is bad, then the message is ignored and discarded. diff --git a/tdutils/td/utils/Timer.cpp b/tdutils/td/utils/Timer.cpp index f33a30dc..0f6a7d6e 100644 --- a/tdutils/td/utils/Timer.cpp +++ b/tdutils/td/utils/Timer.cpp @@ -78,9 +78,12 @@ void PerfWarningTimer::reset() { return; } double duration = Time::now() - start_at_; - //LOG_IF(WARNING, duration > max_duration_) - //<< "SLOW: " << tag("name", name_) << tag("duration", format::as_time(duration)); - callback_(duration); + if (callback_) { + callback_(duration); + } else { + LOG_IF(WARNING, duration > max_duration_) + << "SLOW: " << tag("name", name_) << tag("duration", format::as_time(duration)); + } start_at_ = 0; } diff --git a/tdutils/td/utils/Timer.h b/tdutils/td/utils/Timer.h index 64f3e934..18ea35d7 100644 --- a/tdutils/td/utils/Timer.h +++ b/tdutils/td/utils/Timer.h @@ -46,7 +46,7 @@ class Timer { class PerfWarningTimer { public: - explicit PerfWarningTimer(string name, double max_duration = 0.1, std::function&& callback = [] (double) {}); + explicit PerfWarningTimer(string name, double max_duration = 0.1, std::function&& callback = {}); PerfWarningTimer(const PerfWarningTimer &) = delete; PerfWarningTimer &operator=(const PerfWarningTimer &) = delete; PerfWarningTimer(PerfWarningTimer &&other); diff --git a/tl/generate/scheme/ton_api.tl b/tl/generate/scheme/ton_api.tl index 66e6f4a6..346d9152 100644 --- a/tl/generate/scheme/ton_api.tl +++ b/tl/generate/scheme/ton_api.tl @@ -277,14 +277,10 @@ catchain.differenceFork left:catchain.block.dep right:catchain.block.dep = catch catchain.blockNotFound = catchain.BlockResult; catchain.blockResult block:catchain.block = catchain.BlockResult; -catchain.sent cnt:int = catchain.Sent; - ---functions--- catchain.getBlock block:int256 = catchain.BlockResult; -catchain.getBlocks blocks:(vector int256) = catchain.Sent; catchain.getDifference rt:(vector int) = catchain.Difference; -catchain.getBlockHistory block:int256 height:long stop_if:(vector int256) = catchain.Sent; //catchain.getForkDifference src:int fork:catchain.fork = catchain.ForkDifference; ---types--- diff --git a/tl/generate/scheme/ton_api.tlo b/tl/generate/scheme/ton_api.tlo index 8ce7a57915b72831287ea6490d8590216472546b..5b8e1c725e39ceff4097e4a654c796c9f84ff73e 100644 GIT binary patch delta 54 zcmeBK!un(ZEAOM(`c@23@NXmUdbZ6k*luVs)@(j#*si&GPV|wDjP=tKc^S8Fci?9{ G;{*T`CKL$( delta 237 zcmaE|fVF1{EAOM(`c@23@P8xkdN!f;f!}}eCMT98XC!9k=>@0el}x_JEVX$L+YK$o z+Ral9+chOnl@tS&Fff3`CNF5wVF58V3q)Vo$k;gjArIqr&2PD3DV)4 zdt?@u5LY-v8h|u`U9!E0m+^)Z072GV?*IS* diff --git a/validator-engine/validator-engine.cpp b/validator-engine/validator-engine.cpp index 02ab42f9..65b93df7 100644 --- a/validator-engine/validator-engine.cpp +++ b/validator-engine/validator-engine.cpp @@ -1319,9 +1319,6 @@ td::Status ValidatorEngine::load_global_config() { } CHECK(mode == ton::validator::ValidatorManagerOptions::ShardCheckMode::m_validate); return true; - /*ton::ShardIdFull p{ton::basechainId, ((cc_seqno * 1ull % 4) << 62) + 1}; - auto s = ton::shard_prefix(p, 2); - return shard.is_masterchain() || ton::shard_intersects(shard, s);*/ }); if (state_ttl_ != 0) { validator_options_.write().set_state_ttl(state_ttl_); @@ -3647,34 +3644,61 @@ int main(int argc, char *argv[]) { logger_ = td::TsFileLog::create(fname.str()).move_as_ok(); td::log_interface = logger_.get(); }); - p.add_option('s', "state-ttl", "state will be gc'd after this time (in seconds) default=3600", [&](td::Slice fname) { - auto v = td::to_double(fname); - acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_state_ttl, v); }); - }); - p.add_option('m', "mempool-num", "Maximal number of mempool external message", [&](td::Slice fname) { + p.add_checked_option('s', "state-ttl", "state will be gc'd after this time (in seconds) default=3600", + [&](td::Slice fname) { + auto v = td::to_double(fname); + if (v <= 0) { + return td::Status::Error("state-ttl should be positive"); + } + acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_state_ttl, v); }); + return td::Status::OK(); + }); + p.add_checked_option('m', "mempool-num", "Maximal number of mempool external message", [&](td::Slice fname) { auto v = td::to_double(fname); + if (v < 0) { + return td::Status::Error("mempool-num should be non-negative"); + } acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_max_mempool_num, v); }); + return td::Status::OK(); }); - p.add_option('b', "block-ttl", "blocks will be gc'd after this time (in seconds) default=7*86400", - [&](td::Slice fname) { - auto v = td::to_double(fname); - acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_block_ttl, v); }); - }); - p.add_option('A', "archive-ttl", "archived blocks will be deleted after this time (in seconds) default=365*86400", - [&](td::Slice fname) { - auto v = td::to_double(fname); - acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_archive_ttl, v); }); - }); - p.add_option('K', "key-proof-ttl", "key blocks will be deleted after this time (in seconds) default=365*86400*10", - [&](td::Slice fname) { - auto v = td::to_double(fname); - acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_key_proof_ttl, v); }); - }); - p.add_option('S', "sync-before", "in initial sync download all blocks for last given seconds default=3600", - [&](td::Slice fname) { - auto v = td::to_double(fname); - acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_sync_ttl, v); }); - }); + p.add_checked_option('b', "block-ttl", "blocks will be gc'd after this time (in seconds) default=7*86400", + [&](td::Slice fname) { + auto v = td::to_double(fname); + if (v <= 0) { + return td::Status::Error("block-ttl should be positive"); + } + acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_block_ttl, v); }); + return td::Status::OK(); + }); + p.add_checked_option( + 'A', "archive-ttl", "archived blocks will be deleted after this time (in seconds) default=365*86400", + [&](td::Slice fname) { + auto v = td::to_double(fname); + if (v <= 0) { + return td::Status::Error("archive-ttl should be positive"); + } + acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_archive_ttl, v); }); + return td::Status::OK(); + }); + p.add_checked_option( + 'K', "key-proof-ttl", "key blocks will be deleted after this time (in seconds) default=365*86400*10", + [&](td::Slice fname) { + auto v = td::to_double(fname); + if (v <= 0) { + return td::Status::Error("key-proof-ttl should be positive"); + } + acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_key_proof_ttl, v); }); + return td::Status::OK(); + }); + p.add_checked_option('S', "sync-before", "in initial sync download all blocks for last given seconds default=3600", + [&](td::Slice fname) { + auto v = td::to_double(fname); + if (v <= 0) { + return td::Status::Error("sync-before should be positive"); + } + acts.push_back([&x, v]() { td::actor::send_closure(x, &ValidatorEngine::set_sync_ttl, v); }); + return td::Status::OK(); + }); p.add_option('T', "truncate-db", "truncate db (with specified seqno as new top masterchain block seqno)", [&](td::Slice fname) { auto v = td::to_integer(fname); diff --git a/validator-session/CMakeLists.txt b/validator-session/CMakeLists.txt index dc837219..4931e464 100644 --- a/validator-session/CMakeLists.txt +++ b/validator-session/CMakeLists.txt @@ -9,6 +9,7 @@ set(VALIDATOR_SESSION_SOURCE validator-session-description.cpp validator-session-state.cpp validator-session.cpp + validator-session-round-attempt-state.cpp persistent-vector.h validator-session-description.h @@ -16,7 +17,7 @@ set(VALIDATOR_SESSION_SOURCE validator-session-state.h validator-session.h validator-session.hpp -) + validator-session-round-attempt-state.h) add_library(validatorsession STATIC ${VALIDATOR_SESSION_SOURCE}) diff --git a/validator-session/persistent-vector.h b/validator-session/persistent-vector.h index 77852f80..3491164c 100644 --- a/validator-session/persistent-vector.h +++ b/validator-session/persistent-vector.h @@ -322,7 +322,6 @@ class CntVector : public ValidatorSessionDescription::RootObject { CHECK(idx < size()); return data_[idx]; } - //const T& at(size_t idx) const; private: const td::uint32 data_size_; @@ -546,7 +545,6 @@ class CntVector : public ValidatorSessionDescription::RootObject { CHECK(idx < max_size()); return get_bit(data_, idx); } - //const T& at(size_t idx) const; private: const td::uint32 data_size_; @@ -734,10 +732,6 @@ class CntSortedVector : public ValidatorSessionDescription::RootObject { return CntSortedVector::create(desc, std::move(v)); } - /*static const CntSortedVector* merge(ValidatorSessionDescription& desc, const CntSortedVector* l, - const CntSortedVector* r) { - return merge(desc, l, r, [](T l, T r) { return l; }); - }*/ static const CntSortedVector* push(ValidatorSessionDescription& desc, const CntSortedVector* v, T value) { if (!v) { return create(desc, std::vector{value}); @@ -795,7 +789,6 @@ class CntSortedVector : public ValidatorSessionDescription::RootObject { CHECK(idx < size()); return data_[idx]; } - //const T& at(size_t idx) const; private: const td::uint32 data_size_; diff --git a/validator-session/validator-session-description.cpp b/validator-session/validator-session-description.cpp index eb4c3a8e..34dc9021 100644 --- a/validator-session/validator-session-description.cpp +++ b/validator-session/validator-session-description.cpp @@ -51,13 +51,6 @@ ValidatorSessionDescriptionImpl::ValidatorSessionDescriptionImpl(ValidatorSessio CHECK(it != rev_sources_.end()); self_idx_ = it->second; - pdata_temp_ptr_ = 0; - pdata_temp_size_ = 1 << 27; - pdata_temp_ = new td::uint8[pdata_temp_size_]; - - pdata_perm_size_ = 1ull << 27; - pdata_perm_ptr_ = 0; - for (auto &el : cache_) { Cached v{nullptr}; el.store(v, std::memory_order_relaxed); @@ -162,43 +155,11 @@ void ValidatorSessionDescriptionImpl::update_hash(const RootObject *obj, HashTyp } void *ValidatorSessionDescriptionImpl::alloc(size_t size, size_t align, bool temp) { - CHECK(align && !(align & (align - 1))); // align should be a power of 2 - auto get_padding = [&](const uint8_t* ptr) { - return (-(size_t)ptr) & (align - 1); - }; - if (temp) { - pdata_temp_ptr_ += get_padding(pdata_temp_ + pdata_temp_ptr_); - auto s = pdata_temp_ptr_; - pdata_temp_ptr_ += size; - CHECK(s + size <= pdata_temp_size_); - return static_cast(pdata_temp_ + s); - } else { - while (true) { - size_t idx = pdata_perm_ptr_ / pdata_perm_size_; - if (idx < pdata_perm_.size()) { - auto ptr = pdata_perm_[idx] + (pdata_perm_ptr_ % pdata_perm_size_); - pdata_perm_ptr_ += get_padding(ptr); - ptr += get_padding(ptr); - pdata_perm_ptr_ += size; - if (pdata_perm_ptr_ <= pdata_perm_.size() * pdata_perm_size_) { - return static_cast(ptr); - } - } - pdata_perm_.push_back(new td::uint8[pdata_perm_size_]); - } - } + return (temp ? mem_temp_ : mem_perm_).alloc(size, align); } bool ValidatorSessionDescriptionImpl::is_persistent(const void *ptr) const { - if (ptr == nullptr) { - return true; - } - for (auto &v : pdata_perm_) { - if (ptr >= v && ptr <= v + pdata_perm_size_) { - return true; - } - } - return false; + return mem_perm_.contains(ptr); } std::unique_ptr ValidatorSessionDescription::create( @@ -206,6 +167,58 @@ std::unique_ptr ValidatorSessionDescription::create return std::make_unique(std::move(opts), nodes, local_id); } +ValidatorSessionDescriptionImpl::MemPool::MemPool(size_t chunk_size) : chunk_size_(chunk_size) { +} + +ValidatorSessionDescriptionImpl::MemPool::~MemPool() { + for (auto &v : data_) { + delete[] v; + } +} + +void *ValidatorSessionDescriptionImpl::MemPool::alloc(size_t size, size_t align) { + CHECK(align && !(align & (align - 1))); // align should be a power of 2 + CHECK(size + align <= chunk_size_); + auto get_padding = [&](const uint8_t* ptr) { + return (-(size_t)ptr) & (align - 1); + }; + while (true) { + size_t idx = ptr_ / chunk_size_; + if (idx < data_.size()) { + auto ptr = data_[idx] + (ptr_ % chunk_size_); + ptr_ += get_padding(ptr); + ptr += get_padding(ptr); + ptr_ += size; + if (ptr_ <= data_.size() * chunk_size_) { + return static_cast(ptr); + } else { + ptr_ = data_.size() * chunk_size_; + } + } + data_.push_back(new td::uint8[chunk_size_]); + } +} + +void ValidatorSessionDescriptionImpl::MemPool::clear() { + while (data_.size() > 1) { + delete[] data_.back(); + data_.pop_back(); + } + ptr_ = 0; +} + +bool ValidatorSessionDescriptionImpl::MemPool::contains(const void* ptr) const { + if (ptr == nullptr) { + return true; + } + for (auto &v : data_) { + if (ptr >= v && ptr <= v + chunk_size_) { + return true; + } + } + return false; +} + } // namespace validatorsession } // namespace ton diff --git a/validator-session/validator-session-description.hpp b/validator-session/validator-session-description.hpp index d65369ac..0c662b7a 100644 --- a/validator-session/validator-session-description.hpp +++ b/validator-session/validator-session-description.hpp @@ -50,20 +50,30 @@ class ValidatorSessionDescriptionImpl : public ValidatorSessionDescription { td::uint32 self_idx_; static constexpr td::uint32 cache_size = (1 << 20); + static constexpr size_t mem_chunk_size_perm = (1 << 27); + static constexpr size_t mem_chunk_size_temp = (1 << 27); struct Cached { const RootObject *ptr; }; std::array, cache_size> cache_; - //std::array, cache_size> temp_cache_; - td::uint8 *pdata_temp_; - size_t pdata_temp_ptr_; - size_t pdata_temp_size_; + class MemPool { + public: + explicit MemPool(size_t chunk_size); + ~MemPool(); + void *alloc(size_t size, size_t align); + void clear(); + bool contains(const void* ptr) const; + + private: + size_t chunk_size_; + std::vector data_; + size_t ptr_ = 0; + }; + MemPool mem_perm_ = MemPool(mem_chunk_size_perm); + MemPool mem_temp_ = MemPool(mem_chunk_size_temp); - size_t pdata_perm_size_; - std::vector pdata_perm_; - size_t pdata_perm_ptr_; std::atomic reuse_{0}; public: @@ -116,7 +126,7 @@ class ValidatorSessionDescriptionImpl : public ValidatorSessionDescription { void update_hash(const RootObject *obj, HashType hash) override; void *alloc(size_t size, size_t align, bool temp) override; void clear_temp_memory() override { - pdata_temp_ptr_ = 0; + mem_temp_.clear(); } bool is_persistent(const void *ptr) const override; HashType compute_hash(td::Slice data) const override; @@ -152,12 +162,6 @@ class ValidatorSessionDescriptionImpl : public ValidatorSessionDescription { const ValidatorSessionOptions &opts() const override { return opts_; } - ~ValidatorSessionDescriptionImpl() { - delete[] pdata_temp_; - for (auto &x : pdata_perm_) { - delete[] x; - } - } }; } // namespace validatorsession diff --git a/validator-session/validator-session-round-attempt-state.cpp b/validator-session/validator-session-round-attempt-state.cpp new file mode 100644 index 00000000..33c3d804 --- /dev/null +++ b/validator-session/validator-session-round-attempt-state.cpp @@ -0,0 +1,486 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . + + Copyright 2017-2020 Telegram Systems LLP +*/ +#include "validator-session-state.h" +#include "td/utils/Random.h" +#include "auto/tl/ton_api.hpp" + +#include + +namespace ton { + +namespace validatorsession { + +static const SessionVoteCandidate* get_candidate(const VoteVector* vec, ValidatorSessionCandidateId id) { + if (!vec) { + return nullptr; + } + auto size = vec->size(); + auto v = vec->data(); + for (td::uint32 i = 0; i < size; i++) { + if (v[i]->get_id() == id) { + return v[i]; + } + } + return nullptr; +} + +// +// +// SessionBlockCandidateSignature +// +// + +const SessionBlockCandidateSignature* SessionBlockCandidateSignature::merge(ValidatorSessionDescription& desc, + const SessionBlockCandidateSignature* l, + const SessionBlockCandidateSignature* r) { + if (!l) { + return r; + } + if (!r) { + return l; + } + if (l == r) { + return l; + } + if (l->as_slice() < r->as_slice()) { + return l; + } else { + return r; + } +} + +// +// +// SessionBlockCandidate +// +// + +bool SessionBlockCandidate::check_block_is_approved(ValidatorSessionDescription& desc) const { + ValidatorWeight w = 0; + for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { + if (approved_by_->at(i)) { + w += desc.get_node_weight(i); + if (w >= desc.get_cutoff_weight()) { + return true; + } + } + } + return false; +} + +const SessionBlockCandidate* SessionBlockCandidate::merge(ValidatorSessionDescription& desc, + const SessionBlockCandidate* l, + const SessionBlockCandidate* r) { + if (!l) { + return r; + } + if (!r) { + return l; + } + if (l == r) { + return l; + } + CHECK(l->get_id() == r->get_id()); + auto v = SessionBlockCandidateSignatureVector::merge( + desc, l->approved_by_, r->approved_by_, + [&](const SessionBlockCandidateSignature* l, const SessionBlockCandidateSignature* r) { + return SessionBlockCandidateSignature::merge(desc, l, r); + }); + return SessionBlockCandidate::create(desc, l->block_, std::move(v)); +} + +// +// +// SessionVoteCandidate +// +// + +bool SessionVoteCandidate::check_block_is_voted(ValidatorSessionDescription& desc) const { + ValidatorWeight w = 0; + for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { + if (voted_by_->at(i)) { + w += desc.get_node_weight(i); + if (w >= desc.get_cutoff_weight()) { + return true; + } + } + } + return false; +} + +const SessionVoteCandidate* SessionVoteCandidate::merge(ValidatorSessionDescription& desc, + const SessionVoteCandidate* l, const SessionVoteCandidate* r) { + if (!l) { + return r; + } + if (!r) { + return l; + } + if (l == r) { + return l; + } + CHECK(l->get_id() == r->get_id()); + auto v = CntVector::merge(desc, l->voted_by_, r->voted_by_); + return SessionVoteCandidate::create(desc, l->block_, std::move(v)); +} + +// +// +// ATTEMPT STATE +// +// + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::merge( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* left, + const ValidatorSessionRoundAttemptState* right) { + if (!left) { + return right; + } + if (!right) { + return left; + } + if (left == right) { + return left; + } + CHECK(left->seqno_ == right->seqno_); + + const SentBlock* vote_for = nullptr; + bool vote_for_inited = false; + if (!left->vote_for_inited_) { + vote_for = right->vote_for_; + vote_for_inited = right->vote_for_inited_; + } else if (!right->vote_for_inited_) { + vote_for = left->vote_for_; + vote_for_inited = left->vote_for_inited_; + } else if (left->vote_for_ == right->vote_for_) { + vote_for_inited = true; + vote_for = left->vote_for_; + } else { + auto l = SentBlock::get_block_id(left->vote_for_); + auto r = SentBlock::get_block_id(right->vote_for_); + + vote_for_inited = true; + if (l < r) { + vote_for = left->vote_for_; + } else { + vote_for = right->vote_for_; + } + } + + auto precommitted = CntVector::merge(desc, left->precommitted_, right->precommitted_); + auto votes = VoteVector::merge(desc, left->votes_, right->votes_, + [&](const SessionVoteCandidate* l, const SessionVoteCandidate* r) { + return SessionVoteCandidate::merge(desc, l, r); + }); + + return ValidatorSessionRoundAttemptState::create(desc, left->seqno_, std::move(votes), std::move(precommitted), + vote_for, vote_for_inited); +} + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, + td::uint32 att, const ton_api::validatorSession_message_voteFor& act, const ValidatorSessionRoundState* round) { + if (state->vote_for_inited_) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: invalid message: duplicate VOTEFOR"; + return state; + } + if (src_idx != desc.get_vote_for_author(att)) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: invalid message: bad VOTEFOR author"; + return state; + } + if (round->get_first_attempt(src_idx) == 0 && desc.opts().max_round_attempts > 0) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: invalid message: too early for VOTEFOR"; + return state; + } + if (round->get_first_attempt(src_idx) + desc.opts().max_round_attempts > att && desc.opts().max_round_attempts > 0) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: invalid message: too early for VOTEFOR"; + return state; + } + + auto x = round->get_block(act.candidate_); + + if (!x) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: invalid message: VOTEFOR for not submitted block"; + return state; + } + if (!x->check_block_is_approved(desc)) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: invalid message: VOTEFOR for not approved block"; + return state; + } + + return ValidatorSessionRoundAttemptState::create(desc, state->seqno_, state->votes_, state->precommitted_, + x->get_block(), true); +} + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, + td::uint32 att, const ton_api::validatorSession_message_vote& act, const ValidatorSessionRoundState* round) { + bool made; + return make_one(desc, state, src_idx, att, round, &act, made); +} + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, + td::uint32 att, const ton_api::validatorSession_message_precommit& act, const ValidatorSessionRoundState* round) { + bool made; + return make_one(desc, state, src_idx, att, round, &act, made); +} + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, + td::uint32 att, const ton_api::validatorSession_message_empty& act, const ValidatorSessionRoundState* round) { + bool made; + return make_one(desc, state, src_idx, att, round, &act, made); +} + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::try_vote( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, + td::uint32 att, const ValidatorSessionRoundState* round, const ton_api::validatorSession_round_Message* act, + bool& made) { + made = false; + if (state->check_vote_received_from(src_idx)) { + return state; + } + auto found = false; + auto block = round->choose_block_to_vote(desc, src_idx, att, state->vote_for_, state->vote_for_inited_, found); + if (!found) { + return state; + } + auto block_id = SentBlock::get_block_id(block); + made = true; + + if (act) { + if (act->get_id() != ton_api::validatorSession_message_vote::ID) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: expected VOTE(" << block_id << ")"; + } else { + auto x = static_cast(act); + if (x->candidate_ != block_id) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: expected VOTE(" << block_id << ")"; + } + } + } else { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) + << "]: making implicit VOTE(" << block_id << ")"; + } + + auto candidate = get_candidate(state->votes_, block_id); + if (!candidate) { + candidate = SessionVoteCandidate::create(desc, block); + } + candidate = SessionVoteCandidate::push(desc, candidate, src_idx); + auto v = VoteVector::push(desc, state->votes_, candidate); + return ValidatorSessionRoundAttemptState::create(desc, state->seqno_, std::move(v), state->precommitted_, + state->vote_for_, state->vote_for_inited_); +} + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::try_precommit( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, + td::uint32 att, const ValidatorSessionRoundState* round, const ton_api::validatorSession_round_Message* act, + bool& made) { + made = false; + if (state->check_precommit_received_from(src_idx)) { + return state; + } + bool found; + auto block = state->get_voted_block(desc, found); + if (!found) { + return state; + } + made = true; + auto block_id = SentBlock::get_block_id(block); + + if (act) { + if (act->get_id() != ton_api::validatorSession_message_precommit::ID) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: expected PRECOMMIT(" << block_id << ")"; + } else { + auto x = static_cast(act); + if (x->candidate_ != block_id) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: expected PRECOMMIT(" << block_id << ")"; + } + } + } else { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) + << "]: making implicit PRECOMMIT(" << block_id << ")"; + } + + auto v = CntVector::change(desc, state->precommitted_, src_idx, true); + return ValidatorSessionRoundAttemptState::create(desc, state->seqno_, state->votes_, std::move(v), state->vote_for_, + state->vote_for_inited_); +} + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::make_one( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, + td::uint32 att, const ValidatorSessionRoundState* round, const ton_api::validatorSession_round_Message* act, + bool& made) { + made = false; + state = try_vote(desc, state, src_idx, att, round, act, made); + if (made) { + return state; + } + state = try_precommit(desc, state, src_idx, att, round, act, made); + if (made) { + return state; + } + if (act && act->get_id() != ton_api::validatorSession_message_empty::ID) { + VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act + << "]: invalid message: expected EMPTY"; + } + return state; +} + +const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( + ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, + td::uint32 att, const ton_api::validatorSession_round_Message* act, const ValidatorSessionRoundState* round) { + ton_api::downcast_call(*const_cast(act), + [&](auto& obj) { state = action(desc, state, src_idx, att, obj, round); }); + return state; +} + +bool ValidatorSessionRoundAttemptState::check_vote_received_from(td::uint32 src_idx) const { + if (!votes_) { + return false; + } + auto size = votes_->size(); + auto v = votes_->data(); + for (td::uint32 i = 0; i < size; i++) { + if (v[i]->check_block_is_voted_by(src_idx)) { + return true; + } + } + return false; +} + +bool ValidatorSessionRoundAttemptState::check_precommit_received_from(td::uint32 src_idx) const { + return precommitted_->at(src_idx); +} + +const SentBlock* ValidatorSessionRoundAttemptState::get_voted_block(ValidatorSessionDescription& desc, bool& f) const { + f = false; + if (!votes_) { + return nullptr; + } + + auto size = votes_->size(); + auto v = votes_->data(); + for (td::uint32 i = 0; i < size; i++) { + if (v[i]->check_block_is_voted(desc)) { + f = true; + return v[i]->get_block(); + } + } + return nullptr; +} + +bool ValidatorSessionRoundAttemptState::check_attempt_is_precommitted(ValidatorSessionDescription& desc) const { + ValidatorWeight weight = 0; + for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { + if (precommitted_->at(i)) { + weight += desc.get_node_weight(i); + if (weight >= desc.get_cutoff_weight()) { + return true; + } + } + } + return false; +} + +tl_object_ptr ValidatorSessionRoundAttemptState::create_action( + ValidatorSessionDescription& desc, const ValidatorSessionRoundState* round, td::uint32 src_idx, + td::uint32 att) const { + if (!check_vote_received_from(src_idx)) { + auto found = false; + auto B = round->choose_block_to_vote(desc, src_idx, att, vote_for_, vote_for_inited_, found); + if (found) { + auto block_id = SentBlock::get_block_id(B); + return create_tl_object(round->get_seqno(), seqno_, block_id); + } + } + if (!check_precommit_received_from(src_idx)) { + bool f = false; + auto B = get_voted_block(desc, f); + + if (f) { + auto block_id = SentBlock::get_block_id(B); + + return create_tl_object(round->get_seqno(), seqno_, block_id); + } + } + + return create_tl_object(round->get_seqno(), seqno_); +} + +void ValidatorSessionRoundAttemptState::dump(ValidatorSessionDescription& desc, td::StringBuilder& sb) const { + sb << "attempt=" << seqno_ << "\n"; + sb << ">>>>\n"; + + if (vote_for_inited_) { + sb << "vote_for=" << (vote_for_ ? vote_for_->get_src_idx() : std::numeric_limits::max()) << "\n"; + } else { + sb << "vote_for=NONE\n"; + } + + if (votes_) { + auto s = votes_->size(); + sb << "votes: "; + std::vector R; + R.resize(desc.get_total_nodes(), -1); + for (td::uint32 i = 0; i < s; i++) { + const auto e = votes_->at(i); + const auto& x = e->get_voters_list(); + for (td::uint32 j = 0; j < desc.get_total_nodes(); j++) { + if (x->at(j)) { + R[j] = e->get_src_idx(); + } + } + } + for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { + sb << R[i] << " "; + } + sb << "\n"; + } else { + sb << "votes: EMPTY\n"; + } + + sb << "precommits: "; + for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { + const auto e = precommitted_->at(i); + if (e) { + sb << "+ "; + } else { + sb << "- "; + } + } + sb << "\n"; + sb << "<<<<\n"; +} + + +} // namespace validatorsession + +} // namespace ton diff --git a/validator-session/validator-session-round-attempt-state.h b/validator-session/validator-session-round-attempt-state.h new file mode 100644 index 00000000..a4a6b68b --- /dev/null +++ b/validator-session/validator-session-round-attempt-state.h @@ -0,0 +1,620 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#pragma once + +#include "td/utils/int_types.h" +#include "td/utils/buffer.h" +#include "adnl/utils.hpp" +#include "common/io.hpp" + +#include "persistent-vector.h" + +#include "validator-session-description.h" + +#include "validator-session-types.h" + +#include + + +namespace ton { + +namespace validatorsession { + +using HashType = ValidatorSessionDescription::HashType; + +struct SessionBlockCandidateSignature : public ValidatorSessionDescription::RootObject { + public: + static auto create_hash(ValidatorSessionDescription& desc, td::Slice data) { + auto obj = create_tl_object(desc.compute_hash(data)); + return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); + } + + static bool compare(const RootObject* r, td::Slice data, HashType hash) { + if (!r || r->get_size() < sizeof(SessionBlockCandidateSignature)) { + return false; + } + auto R = static_cast(r); + return R->hash_ == hash && R->data_.ubegin() == data.ubegin() && R->data_.size() == data.size(); + } + + static auto lookup(ValidatorSessionDescription& desc, td::Slice data, HashType hash, bool temp) { + auto r = desc.get_by_hash(hash, temp); + if (compare(r, data, hash)) { + desc.on_reuse(); + return static_cast(r); + } + return static_cast(nullptr); + } + static SessionBlockCandidateSignature* create(ValidatorSessionDescription& desc, td::BufferSlice value) { + auto hash = create_hash(desc, value.as_slice()); + auto d = static_cast(desc.alloc(value.size(), 8, false)); + td::MutableSlice s{d, value.size()}; + s.copy_from(value.as_slice()); + return new (desc, true) SessionBlockCandidateSignature{desc, s, hash}; + } + static const SessionBlockCandidateSignature* move_to_persistent(ValidatorSessionDescription& desc, + const SessionBlockCandidateSignature* b) { + if (desc.is_persistent(b)) { + return b; + } + CHECK(desc.is_persistent(b->data_.ubegin())); + auto r = lookup(desc, b->data_, b->hash_, false); + if (r) { + return r; + } + return new (desc, false) SessionBlockCandidateSignature{desc, b->data_, b->hash_}; + } + static const SessionBlockCandidateSignature* merge(ValidatorSessionDescription& desc, + const SessionBlockCandidateSignature* l, + const SessionBlockCandidateSignature* r); + SessionBlockCandidateSignature(ValidatorSessionDescription& desc, td::Slice data, HashType hash) + : RootObject(sizeof(SessionBlockCandidateSignature)), data_{data}, hash_(std::move(hash)) { + desc.update_hash(this, hash_); + } + td::BufferSlice value() const { + return td::BufferSlice{data_}; + } + td::Slice as_slice() const { + return data_; + } + auto get_hash(ValidatorSessionDescription& desc) const { + return hash_; + } + + private: + const td::Slice data_; + const HashType hash_; +}; + +using SessionBlockCandidateSignatureVector = CntVector; + +class SentBlock : public ValidatorSessionDescription::RootObject { + public: + static HashType create_hash(ValidatorSessionDescription& desc, td::uint32 src_idx, ValidatorSessionRootHash root_hash, + ValidatorSessionFileHash file_hash, + ValidatorSessionCollatedDataFileHash collated_data_file_hash) { + auto obj = create_tl_object(src_idx, get_vs_hash(desc, root_hash), + get_vs_hash(desc, file_hash), + get_vs_hash(desc, collated_data_file_hash)); + return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); + } + static bool compare(const RootObject* root_object, td::uint32 src_idx, const ValidatorSessionRootHash& root_hash, + const ValidatorSessionFileHash& file_hash, + const ValidatorSessionCollatedDataFileHash& collated_data_file_hash, HashType hash) { + if (!root_object || root_object->get_size() < sizeof(SentBlock)) { + return false; + } + auto obj = static_cast(root_object); + return obj->src_idx_ == src_idx && obj->root_hash_ == root_hash && obj->file_hash_ == file_hash && + obj->collated_data_file_hash_ == collated_data_file_hash && obj->hash_ == hash; + } + static auto lookup(ValidatorSessionDescription& desc, td::uint32 src_idx, const ValidatorSessionRootHash& root_hash, + const ValidatorSessionFileHash& file_hash, + const ValidatorSessionCollatedDataFileHash& collated_data_file_hash, HashType hash, bool temp) { + auto r = desc.get_by_hash(hash, temp); + if (compare(r, src_idx, root_hash, file_hash, collated_data_file_hash, hash)) { + desc.on_reuse(); + return static_cast(r); + } + return static_cast(nullptr); + } + static const SentBlock* create(ValidatorSessionDescription& desc, td::uint32 src_idx, + const ValidatorSessionRootHash& root_hash, const ValidatorSessionFileHash& file_hash, + const ValidatorSessionCollatedDataFileHash& collated_data_file_hash) { + auto hash = create_hash(desc, src_idx, root_hash, file_hash, collated_data_file_hash); + auto r = lookup(desc, src_idx, root_hash, file_hash, collated_data_file_hash, hash, true); + if (r) { + return r; + } + + auto candidate_id = desc.candidate_id(src_idx, root_hash, file_hash, collated_data_file_hash); + + return new (desc, true) SentBlock{desc, src_idx, root_hash, file_hash, collated_data_file_hash, candidate_id, hash}; + } + static const SentBlock* create(ValidatorSessionDescription& desc, const ValidatorSessionCandidateId& zero) { + CHECK(zero.is_zero()); + auto hash = create_hash(desc, 0, ValidatorSessionRootHash::zero(), ValidatorSessionFileHash::zero(), + ValidatorSessionCollatedDataFileHash::zero()); + + return new (desc, true) SentBlock{desc, + 0, + ValidatorSessionRootHash::zero(), + ValidatorSessionFileHash::zero(), + ValidatorSessionCollatedDataFileHash::zero(), + zero, + hash}; + } + static const SentBlock* move_to_persistent(ValidatorSessionDescription& desc, const SentBlock* b) { + if (desc.is_persistent(b)) { + return b; + } + auto r = lookup(desc, b->src_idx_, b->root_hash_, b->file_hash_, b->collated_data_file_hash_, b->hash_, false); + if (r) { + return r; + } + + return new (desc, false) SentBlock{ + desc, b->src_idx_, b->root_hash_, b->file_hash_, b->collated_data_file_hash_, b->candidate_id_, b->hash_}; + } + SentBlock(ValidatorSessionDescription& desc, td::uint32 src_idx, ValidatorSessionRootHash root_hash, + ValidatorSessionFileHash file_hash, ValidatorSessionCollatedDataFileHash collated_data_file_hash, + ValidatorSessionCandidateId candidate_id, HashType hash) + : RootObject(sizeof(SentBlock)) + , src_idx_(src_idx) + , root_hash_(std::move(root_hash)) + , file_hash_(std::move(file_hash)) + , collated_data_file_hash_(std::move(collated_data_file_hash)) + , candidate_id_(candidate_id) + , hash_(std::move(hash)) { + desc.update_hash(this, hash_); + } + auto get_src_idx() const { + return src_idx_; + } + auto get_root_hash() const { + return root_hash_; + } + auto get_file_hash() const { + return file_hash_; + } + auto get_collated_data_file_hash() const { + return collated_data_file_hash_; + } + static ValidatorSessionCandidateId get_block_id(const SentBlock* block) { + return block ? block->candidate_id_ : skip_round_candidate_id(); + } + HashType get_hash(ValidatorSessionDescription& desc) const { + return hash_; + } + bool operator<(const SentBlock& block) const { + if (src_idx_ < block.src_idx_) { + return true; + } + if (src_idx_ > block.src_idx_) { + return false; + } + if (candidate_id_ < block.candidate_id_) { + return true; + } + return false; + } + struct Compare { + bool operator()(const SentBlock* a, const SentBlock* b) const { + return *a < *b; + } + }; + + private: + const td::uint32 src_idx_; + const ValidatorSessionRootHash root_hash_; + const ValidatorSessionFileHash file_hash_; + const ValidatorSessionCollatedDataFileHash collated_data_file_hash_; + const ValidatorSessionCandidateId candidate_id_; + const HashType hash_; +}; + +class SessionBlockCandidate : public ValidatorSessionDescription::RootObject { + public: + static HashType create_hash(ValidatorSessionDescription& desc, HashType block, HashType approved) { + auto obj = create_tl_object(block, approved); + return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); + } + static bool compare(const RootObject* r, const SentBlock* block, const SessionBlockCandidateSignatureVector* approved, + HashType hash) { + if (!r || r->get_size() < sizeof(SessionBlockCandidate)) { + return false; + } + auto R = static_cast(r); + return R->block_ == block && R->approved_by_ == approved && R->hash_ == hash; + } + static auto lookup(ValidatorSessionDescription& desc, const SentBlock* block, + const SessionBlockCandidateSignatureVector* approved, HashType hash, bool temp) { + auto r = desc.get_by_hash(hash, temp); + if (compare(r, block, approved, hash)) { + desc.on_reuse(); + return static_cast(r); + } + return static_cast(nullptr); + } + static const SessionBlockCandidate* create(ValidatorSessionDescription& desc, const SentBlock* block, + const SessionBlockCandidateSignatureVector* approved) { + auto hash = create_hash(desc, get_vs_hash(desc, block), get_vs_hash(desc, approved)); + + auto r = lookup(desc, block, approved, hash, true); + if (r) { + return r; + } + + return new (desc, true) SessionBlockCandidate(desc, block, approved, hash); + } + static const SessionBlockCandidate* create(ValidatorSessionDescription& desc, const SentBlock* block) { + std::vector v; + v.resize(desc.get_total_nodes(), nullptr); + auto vec = SessionBlockCandidateSignatureVector::create(desc, std::move(v)); + return create(desc, block, vec); + } + static const SessionBlockCandidate* move_to_persistent(ValidatorSessionDescription& desc, + const SessionBlockCandidate* b) { + if (desc.is_persistent(b)) { + return b; + } + auto block = SentBlock::move_to_persistent(desc, b->block_); + auto approved = SessionBlockCandidateSignatureVector::move_to_persistent(desc, b->approved_by_); + auto r = lookup(desc, block, approved, b->hash_, false); + if (r) { + return r; + } + + return new (desc, false) SessionBlockCandidate{desc, block, approved, b->hash_}; + } + SessionBlockCandidate(ValidatorSessionDescription& desc, const SentBlock* block, + const SessionBlockCandidateSignatureVector* approved, HashType hash) + : RootObject{sizeof(SessionBlockCandidate)}, block_(block), approved_by_(approved), hash_(hash) { + desc.update_hash(this, hash_); + } + static const SessionBlockCandidate* merge(ValidatorSessionDescription& desc, const SessionBlockCandidate* l, + const SessionBlockCandidate* r); + auto get_block() const { + return block_; + } + auto get_id() const { + return SentBlock::get_block_id(block_); + } + auto get_src_idx() const { + return block_ ? block_->get_src_idx() : std::numeric_limits::max(); + } + bool check_block_is_approved_by(td::uint32 src_idx) const { + return approved_by_->at(src_idx); + } + bool check_block_is_approved(ValidatorSessionDescription& desc) const; + auto get_hash(ValidatorSessionDescription& desc) const { + return hash_; + } + auto get_approvers_list() const { + return approved_by_; + } + static const SessionBlockCandidate* push(ValidatorSessionDescription& desc, const SessionBlockCandidate* state, + td::uint32 src_idx, const SessionBlockCandidateSignature* sig) { + CHECK(state); + if (state->approved_by_->at(src_idx)) { + return state; + } + return create(desc, state->block_, + SessionBlockCandidateSignatureVector::change(desc, state->approved_by_, src_idx, sig)); + } + class Compare { + public: + bool operator()(const SessionBlockCandidate* l, const SessionBlockCandidate* r) { + return l->get_id() < r->get_id(); + } + }; + + private: + const SentBlock* block_; + const SessionBlockCandidateSignatureVector* approved_by_; + const HashType hash_; +}; + +class SessionVoteCandidate : public ValidatorSessionDescription::RootObject { + public: + static HashType create_hash(ValidatorSessionDescription& desc, HashType block, HashType voted) { + auto obj = create_tl_object(block, voted); + return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); + } + static bool compare(const RootObject* r, const SentBlock* block, const CntVector* voted, HashType hash) { + if (!r || r->get_size() < sizeof(SessionVoteCandidate)) { + return false; + } + auto R = static_cast(r); + return R->block_ == block && R->voted_by_ == voted && R->hash_ == hash; + } + static auto lookup(ValidatorSessionDescription& desc, const SentBlock* block, const CntVector* voted, + HashType hash, bool temp) { + auto r = desc.get_by_hash(hash, temp); + if (compare(r, block, voted, hash)) { + desc.on_reuse(); + return static_cast(r); + } + return static_cast(nullptr); + } + static const SessionVoteCandidate* create(ValidatorSessionDescription& desc, const SentBlock* block, + const CntVector* voted) { + auto hash = create_hash(desc, get_vs_hash(desc, block), get_vs_hash(desc, voted)); + + auto r = lookup(desc, block, voted, hash, true); + if (r) { + return r; + } + + return new (desc, true) SessionVoteCandidate(desc, block, voted, hash); + } + static const SessionVoteCandidate* create(ValidatorSessionDescription& desc, const SentBlock* block) { + std::vector v; + v.resize(desc.get_total_nodes(), false); + auto vec = CntVector::create(desc, std::move(v)); + return create(desc, block, vec); + } + static const SessionVoteCandidate* move_to_persistent(ValidatorSessionDescription& desc, + const SessionVoteCandidate* b) { + if (desc.is_persistent(b)) { + return b; + } + auto block = SentBlock::move_to_persistent(desc, b->block_); + auto voted = CntVector::move_to_persistent(desc, b->voted_by_); + auto r = lookup(desc, block, voted, b->hash_, false); + if (r) { + return r; + } + + return new (desc, false) SessionVoteCandidate{desc, block, voted, b->hash_}; + } + SessionVoteCandidate(ValidatorSessionDescription& desc, const SentBlock* block, const CntVector* voted, + HashType hash) + : RootObject{sizeof(SessionVoteCandidate)}, block_(block), voted_by_(voted), hash_(hash) { + desc.update_hash(this, hash_); + } + static const SessionVoteCandidate* merge(ValidatorSessionDescription& desc, const SessionVoteCandidate* l, + const SessionVoteCandidate* r); + auto get_block() const { + return block_; + } + auto get_id() const { + return SentBlock::get_block_id(block_); + } + auto get_src_idx() const { + return block_ ? block_->get_src_idx() : std::numeric_limits::max(); + } + bool check_block_is_voted_by(td::uint32 src_idx) const { + return voted_by_->at(src_idx); + } + bool check_block_is_voted(ValidatorSessionDescription& desc) const; + auto get_hash(ValidatorSessionDescription& desc) const { + return hash_; + } + auto get_voters_list() const { + return voted_by_; + } + static const SessionVoteCandidate* push(ValidatorSessionDescription& desc, const SessionVoteCandidate* state, + td::uint32 src_idx) { + CHECK(state); + if (state->voted_by_->at(src_idx)) { + return state; + } + return create(desc, state->block_, CntVector::change(desc, state->voted_by_, src_idx, true)); + } + class Compare { + public: + bool operator()(const SessionVoteCandidate* l, const SessionVoteCandidate* r) { + return l->get_id() < r->get_id(); + } + }; + + private: + const SentBlock* block_; + const CntVector* voted_by_; + const HashType hash_; +}; + +using VoteVector = CntSortedVector; +using ApproveVector = CntSortedVector; +class ValidatorSessionRoundState; + +class ValidatorSessionRoundAttemptState : public ValidatorSessionDescription::RootObject { + public: + static HashType create_hash(ValidatorSessionDescription& desc, td::uint32 seqno, HashType votes, + HashType precommitted, bool vote_for_inited, HashType vote_for) { + auto obj = create_tl_object(seqno, votes, precommitted, + vote_for_inited, vote_for); + return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); + } + static bool compare(const RootObject* r, td::uint32 seqno, const VoteVector* votes, + const CntVector* precommitted, const SentBlock* vote_for, bool vote_for_inited, + HashType hash) { + if (!r || r->get_size() < sizeof(ValidatorSessionRoundAttemptState)) { + return false; + } + auto R = static_cast(r); + return R->seqno_ == seqno && R->votes_ == votes && R->precommitted_ == precommitted && R->vote_for_ == vote_for && + R->vote_for_inited_ == vote_for_inited && R->hash_ == hash; + } + static auto lookup(ValidatorSessionDescription& desc, td::uint32 seqno, const VoteVector* votes, + const CntVector* precommitted, const SentBlock* vote_for, bool vote_for_inited, + HashType hash, bool temp) { + auto r = desc.get_by_hash(hash, temp); + if (compare(r, seqno, votes, precommitted, vote_for, vote_for_inited, hash)) { + desc.on_reuse(); + return static_cast(r); + } + return static_cast(nullptr); + } + static const ValidatorSessionRoundAttemptState* move_to_persistent(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* b) { + if (desc.is_persistent(b)) { + return b; + } + auto votes = VoteVector::move_to_persistent(desc, b->votes_); + auto precommitted = CntVector::move_to_persistent(desc, b->precommitted_); + auto vote_for = SentBlock::move_to_persistent(desc, b->vote_for_); + + auto r = lookup(desc, b->seqno_, votes, precommitted, vote_for, b->vote_for_inited_, b->hash_, false); + if (r) { + return r; + } + + return new (desc, false) ValidatorSessionRoundAttemptState{desc, b->seqno_, votes, precommitted, + vote_for, b->vote_for_inited_, b->hash_}; + } + + static const ValidatorSessionRoundAttemptState* create(ValidatorSessionDescription& desc, td::uint32 seqno, + const VoteVector* votes, const CntVector* precommitted, + const SentBlock* vote_for, bool vote_for_inited) { + auto hash = create_hash(desc, seqno, get_vs_hash(desc, votes), get_vs_hash(desc, precommitted), + get_vs_hash(desc, vote_for), vote_for_inited); + + auto r = lookup(desc, seqno, votes, precommitted, vote_for, vote_for_inited, hash, true); + if (r) { + return r; + } + + return new (desc, true) + ValidatorSessionRoundAttemptState(desc, seqno, votes, precommitted, vote_for, vote_for_inited, hash); + } + static const ValidatorSessionRoundAttemptState* create(ValidatorSessionDescription& desc, td::uint32 seqno) { + std::vector x; + x.resize(desc.get_total_nodes(), false); + auto p = CntVector::create(desc, std::move(x)); + + return create(desc, seqno, nullptr, p, nullptr, false); + } + + ValidatorSessionRoundAttemptState(ValidatorSessionDescription& desc, td::uint32 seqno, const VoteVector* votes, + const CntVector* precommitted, const SentBlock* vote_for, + bool vote_for_inited, HashType hash) + : RootObject{sizeof(ValidatorSessionRoundAttemptState)} + , seqno_(seqno) + , votes_(votes) + , precommitted_(precommitted) + , vote_for_(vote_for) + , vote_for_inited_(vote_for_inited) + , hash_(std::move(hash)) { + desc.update_hash(this, hash_); + } + auto get_hash(ValidatorSessionDescription& desc) const { + return hash_; + } + auto get_seqno() const { + return seqno_; + } + auto get_votes() const { + return votes_; + } + auto get_precommits() const { + return precommitted_; + } + const SentBlock* get_voted_block(ValidatorSessionDescription& desc, bool& f) const; + const SentBlock* get_vote_for_block(ValidatorSessionDescription& desc, bool& f) const { + f = vote_for_inited_; + return vote_for_; + } + bool check_attempt_is_precommitted(ValidatorSessionDescription& desc) const; + bool check_vote_received_from(td::uint32 src_idx) const; + bool check_precommit_received_from(td::uint32 src_idx) const; + + bool operator<(const ValidatorSessionRoundAttemptState& right) const { + return seqno_ < right.seqno_; + } + struct Compare { + bool operator()(const ValidatorSessionRoundAttemptState* a, const ValidatorSessionRoundAttemptState* b) const { + return *a < *b; + } + }; + + static const ValidatorSessionRoundAttemptState* merge(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* left, + const ValidatorSessionRoundAttemptState* right); + static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, + const ton_api::validatorSession_message_voteFor& act, + const ValidatorSessionRoundState* round); + static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, + const ton_api::validatorSession_message_vote& act, + const ValidatorSessionRoundState* round); + static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, + const ton_api::validatorSession_message_precommit& act, + const ValidatorSessionRoundState* round); + static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, + const ton_api::validatorSession_message_empty& act, + const ValidatorSessionRoundState* round); + static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, + const ton_api::validatorSession_round_Message* action, + const ValidatorSessionRoundState* round); + template + static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, const T& action, + const ValidatorSessionRoundState* round) { + UNREACHABLE(); + } + static const ValidatorSessionRoundAttemptState* try_vote(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, + const ValidatorSessionRoundState* round, + const ton_api::validatorSession_round_Message* cmp, + bool& made); + static const ValidatorSessionRoundAttemptState* try_precommit(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, + const ValidatorSessionRoundState* round, + const ton_api::validatorSession_round_Message* cmp, + bool& made); + static const ValidatorSessionRoundAttemptState* make_one(ValidatorSessionDescription& desc, + const ValidatorSessionRoundAttemptState* state, + td::uint32 src_idx, td::uint32 att, + const ValidatorSessionRoundState* round, + const ton_api::validatorSession_round_Message* cmp, + bool& made); + tl_object_ptr create_action(ValidatorSessionDescription& desc, + const ValidatorSessionRoundState* round, + td::uint32 src_idx, td::uint32 att) const; + void dump(ValidatorSessionDescription& desc, td::StringBuilder& sb) const; + + private: + const td::uint32 seqno_; + const VoteVector* votes_; + const CntVector* precommitted_; + const SentBlock* vote_for_; + const bool vote_for_inited_; + const HashType hash_; +}; + +using AttemptVector = + CntSortedVector; + + +} // namespace validatorsession + +} // namespace ton diff --git a/validator-session/validator-session-state.cpp b/validator-session/validator-session-state.cpp index 62a054d5..97b91895 100644 --- a/validator-session/validator-session-state.cpp +++ b/validator-session/validator-session-state.cpp @@ -67,14 +67,6 @@ namespace ton { namespace validatorsession { -static td::uint32 get_round_id(const ton_api::validatorSession_round_Message* message) { - td::uint32 round = 0; - bool is_called = ton_api::downcast_call(*const_cast(message), - [&](auto& obj) { round = obj.round_; }); - CHECK(is_called); - return round; -} - static const ValidatorSessionRoundAttemptState* get_attempt(const AttemptVector* vec, td::uint32 seqno) { if (!vec) { return nullptr; @@ -108,118 +100,12 @@ static const SessionBlockCandidate* get_candidate(const ApproveVector* vec, Vali return nullptr; } -static const SessionVoteCandidate* get_candidate(const VoteVector* vec, ValidatorSessionCandidateId id) { - if (!vec) { - return nullptr; - } - auto size = vec->size(); - auto v = vec->data(); - for (td::uint32 i = 0; i < size; i++) { - if (v[i]->get_id() == id) { - return v[i]; - } - } - return nullptr; -} - -// -// -// SessionBlockCandidateSignature -// -// - -const SessionBlockCandidateSignature* SessionBlockCandidateSignature::merge(ValidatorSessionDescription& desc, - const SessionBlockCandidateSignature* l, - const SessionBlockCandidateSignature* r) { - if (!l) { - return r; - } - if (!r) { - return l; - } - if (l == r) { - return l; - } - if (l->as_slice() < r->as_slice()) { - return l; - } else { - return r; - } -} - -// -// -// SessionBlockCandidate -// -// - -bool SessionBlockCandidate::check_block_is_approved(ValidatorSessionDescription& desc) const { - ValidatorWeight w = 0; - for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { - if (approved_by_->at(i)) { - w += desc.get_node_weight(i); - if (w >= desc.get_cutoff_weight()) { - return true; - } - } - } - return false; -} - -const SessionBlockCandidate* SessionBlockCandidate::merge(ValidatorSessionDescription& desc, - const SessionBlockCandidate* l, - const SessionBlockCandidate* r) { - if (!l) { - return r; - } - if (!r) { - return l; - } - if (l == r) { - return l; - } - CHECK(l->get_id() == r->get_id()); - auto v = SessionBlockCandidateSignatureVector::merge( - desc, l->approved_by_, r->approved_by_, - [&](const SessionBlockCandidateSignature* l, const SessionBlockCandidateSignature* r) { - return SessionBlockCandidateSignature::merge(desc, l, r); - }); - return SessionBlockCandidate::create(desc, l->block_, std::move(v)); -} - -// -// -// SessionVoteCandidate -// -// - -bool SessionVoteCandidate::check_block_is_voted(ValidatorSessionDescription& desc) const { - ValidatorWeight w = 0; - for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { - if (voted_by_->at(i)) { - w += desc.get_node_weight(i); - if (w >= desc.get_cutoff_weight()) { - return true; - } - } - } - return false; -} - -const SessionVoteCandidate* SessionVoteCandidate::merge(ValidatorSessionDescription& desc, - const SessionVoteCandidate* l, const SessionVoteCandidate* r) { - if (!l) { - return r; - } - if (!r) { - return l; - } - if (l == r) { - return l; - } - CHECK(l->get_id() == r->get_id()); - auto v = CntVector::merge(desc, l->voted_by_, r->voted_by_); - return SessionVoteCandidate::create(desc, l->block_, std::move(v)); +static td::uint32 get_round_id(const ton_api::validatorSession_round_Message* message) { + td::uint32 round = 0; + bool is_called = ton_api::downcast_call(*const_cast(message), + [&](auto& obj) { round = obj.round_; }); + CHECK(is_called); + return round; } // @@ -374,346 +260,6 @@ const ValidatorSessionOldRoundState* ValidatorSessionOldRoundState::action( return state; } -// -// -// ATTEMPT STATE -// -// - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::merge( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* left, - const ValidatorSessionRoundAttemptState* right) { - if (!left) { - return right; - } - if (!right) { - return left; - } - if (left == right) { - return left; - } - CHECK(left->seqno_ == right->seqno_); - - const SentBlock* vote_for = nullptr; - bool vote_for_inited = false; - if (!left->vote_for_inited_) { - vote_for = right->vote_for_; - vote_for_inited = right->vote_for_inited_; - } else if (!right->vote_for_inited_) { - vote_for = left->vote_for_; - vote_for_inited = left->vote_for_inited_; - } else if (left->vote_for_ == right->vote_for_) { - vote_for_inited = true; - vote_for = left->vote_for_; - } else { - auto l = SentBlock::get_block_id(left->vote_for_); - auto r = SentBlock::get_block_id(right->vote_for_); - - vote_for_inited = true; - if (l < r) { - vote_for = left->vote_for_; - } else { - vote_for = right->vote_for_; - } - } - - auto precommitted = CntVector::merge(desc, left->precommitted_, right->precommitted_); - auto votes = VoteVector::merge(desc, left->votes_, right->votes_, - [&](const SessionVoteCandidate* l, const SessionVoteCandidate* r) { - return SessionVoteCandidate::merge(desc, l, r); - }); - - return ValidatorSessionRoundAttemptState::create(desc, left->seqno_, std::move(votes), std::move(precommitted), - vote_for, vote_for_inited); -} - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, - td::uint32 att, const ton_api::validatorSession_message_voteFor& act, const ValidatorSessionRoundState* round) { - if (state->vote_for_inited_) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: invalid message: duplicate VOTEFOR"; - return state; - } - if (src_idx != desc.get_vote_for_author(att)) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: invalid message: bad VOTEFOR author"; - return state; - } - if (round->get_first_attempt(src_idx) == 0 && desc.opts().max_round_attempts > 0) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: invalid message: too early for VOTEFOR"; - return state; - } - if (round->get_first_attempt(src_idx) + desc.opts().max_round_attempts > att && desc.opts().max_round_attempts == 0) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: invalid message: too early for VOTEFOR"; - return state; - } - - auto x = round->get_block(act.candidate_); - - if (!x) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: invalid message: VOTEFOR for not approved block"; - return state; - } - if (!x->check_block_is_approved(desc)) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: invalid message: VOTEFOR for not approved block"; - return state; - } - - return ValidatorSessionRoundAttemptState::create(desc, state->seqno_, state->votes_, state->precommitted_, - x->get_block(), true); -} - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, - td::uint32 att, const ton_api::validatorSession_message_vote& act, const ValidatorSessionRoundState* round) { - bool made; - return make_one(desc, state, src_idx, att, round, &act, made); -} - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, - td::uint32 att, const ton_api::validatorSession_message_precommit& act, const ValidatorSessionRoundState* round) { - bool made; - return make_one(desc, state, src_idx, att, round, &act, made); -} - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, - td::uint32 att, const ton_api::validatorSession_message_empty& act, const ValidatorSessionRoundState* round) { - bool made; - return make_one(desc, state, src_idx, att, round, &act, made); -} - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::try_vote( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, - td::uint32 att, const ValidatorSessionRoundState* round, const ton_api::validatorSession_round_Message* act, - bool& made) { - made = false; - if (state->check_vote_received_from(src_idx)) { - return state; - } - auto found = false; - auto block = round->choose_block_to_vote(desc, src_idx, att, state->vote_for_, state->vote_for_inited_, found); - if (!found) { - return state; - } - auto block_id = SentBlock::get_block_id(block); - made = true; - - if (act) { - if (act->get_id() != ton_api::validatorSession_message_vote::ID) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: expected VOTE(" << block_id << ")"; - } else { - auto x = static_cast(act); - if (x->candidate_ != block_id) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: expected VOTE(" << block_id << ")"; - } - } - } else { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) - << "]: making implicit VOTE(" << block_id << ")"; - } - - auto candidate = get_candidate(state->votes_, block_id); - if (!candidate) { - candidate = SessionVoteCandidate::create(desc, block); - } - candidate = SessionVoteCandidate::push(desc, candidate, src_idx); - auto v = VoteVector::push(desc, state->votes_, candidate); - return ValidatorSessionRoundAttemptState::create(desc, state->seqno_, std::move(v), state->precommitted_, - state->vote_for_, state->vote_for_inited_); -} - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::try_precommit( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, - td::uint32 att, const ValidatorSessionRoundState* round, const ton_api::validatorSession_round_Message* act, - bool& made) { - made = false; - if (state->check_precommit_received_from(src_idx)) { - return state; - } - bool found; - auto block = state->get_voted_block(desc, found); - if (!found) { - return state; - } - made = true; - auto block_id = SentBlock::get_block_id(block); - - if (act) { - if (act->get_id() != ton_api::validatorSession_message_precommit::ID) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: expected PRECOMMIT(" << block_id << ")"; - } else { - auto x = static_cast(act); - if (x->candidate_ != block_id) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: expected PRECOMMIT(" << block_id << ")"; - } - } - } else { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) - << "]: making implicit PRECOMMIT(" << block_id << ")"; - } - - auto v = CntVector::change(desc, state->precommitted_, src_idx, true); - return ValidatorSessionRoundAttemptState::create(desc, state->seqno_, state->votes_, std::move(v), state->vote_for_, - state->vote_for_inited_); -} - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::make_one( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, - td::uint32 att, const ValidatorSessionRoundState* round, const ton_api::validatorSession_round_Message* act, - bool& made) { - made = false; - state = try_vote(desc, state, src_idx, att, round, act, made); - if (made) { - return state; - } - state = try_precommit(desc, state, src_idx, att, round, act, made); - if (made) { - return state; - } - if (act && act->get_id() != ton_api::validatorSession_message_empty::ID) { - VLOG(VALIDATOR_SESSION_WARNING) << "[validator session][node " << desc.get_source_id(src_idx) << "][" << act - << "]: invalid message: expected EMPTY"; - } - return state; -} - -const ValidatorSessionRoundAttemptState* ValidatorSessionRoundAttemptState::action( - ValidatorSessionDescription& desc, const ValidatorSessionRoundAttemptState* state, td::uint32 src_idx, - td::uint32 att, const ton_api::validatorSession_round_Message* act, const ValidatorSessionRoundState* round) { - ton_api::downcast_call(*const_cast(act), - [&](auto& obj) { state = action(desc, state, src_idx, att, obj, round); }); - return state; -} - -bool ValidatorSessionRoundAttemptState::check_vote_received_from(td::uint32 src_idx) const { - if (!votes_) { - return false; - } - auto size = votes_->size(); - auto v = votes_->data(); - for (td::uint32 i = 0; i < size; i++) { - if (v[i]->check_block_is_voted_by(src_idx)) { - return true; - } - } - return false; -} - -bool ValidatorSessionRoundAttemptState::check_precommit_received_from(td::uint32 src_idx) const { - return precommitted_->at(src_idx); -} - -const SentBlock* ValidatorSessionRoundAttemptState::get_voted_block(ValidatorSessionDescription& desc, bool& f) const { - f = false; - if (!votes_) { - return nullptr; - } - - auto size = votes_->size(); - auto v = votes_->data(); - for (td::uint32 i = 0; i < size; i++) { - if (v[i]->check_block_is_voted(desc)) { - f = true; - return v[i]->get_block(); - } - } - return nullptr; -} - -bool ValidatorSessionRoundAttemptState::check_attempt_is_precommitted(ValidatorSessionDescription& desc) const { - ValidatorWeight weight = 0; - for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { - if (precommitted_->at(i)) { - weight += desc.get_node_weight(i); - if (weight >= desc.get_cutoff_weight()) { - return true; - } - } - } - return false; -} - -tl_object_ptr ValidatorSessionRoundAttemptState::create_action( - ValidatorSessionDescription& desc, const ValidatorSessionRoundState* round, td::uint32 src_idx, - td::uint32 att) const { - if (!check_vote_received_from(src_idx)) { - auto found = false; - auto B = round->choose_block_to_vote(desc, src_idx, att, vote_for_, vote_for_inited_, found); - if (found) { - auto block_id = SentBlock::get_block_id(B); - return create_tl_object(round->get_seqno(), seqno_, block_id); - } - } - if (!check_precommit_received_from(src_idx)) { - bool f = false; - auto B = get_voted_block(desc, f); - - if (f) { - auto block_id = SentBlock::get_block_id(B); - - return create_tl_object(round->get_seqno(), seqno_, block_id); - } - } - - return create_tl_object(round->get_seqno(), seqno_); -} - -void ValidatorSessionRoundAttemptState::dump(ValidatorSessionDescription& desc, td::StringBuilder& sb) const { - sb << "attempt=" << seqno_ << "\n"; - sb << ">>>>\n"; - - if (vote_for_inited_) { - sb << "vote_for=" << (vote_for_ ? vote_for_->get_src_idx() : std::numeric_limits::max()) << "\n"; - } else { - sb << "vote_for=NONE\n"; - } - - if (votes_) { - auto s = votes_->size(); - sb << "votes: "; - std::vector R; - R.resize(desc.get_total_nodes(), -1); - for (td::uint32 i = 0; i < s; i++) { - const auto e = votes_->at(i); - const auto& x = e->get_voters_list(); - for (td::uint32 j = 0; j < desc.get_total_nodes(); j++) { - if (x->at(j)) { - R[j] = e->get_src_idx(); - } - } - } - for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { - sb << R[i] << " "; - } - sb << "\n"; - } else { - sb << "votes: EMPTY\n"; - } - - sb << "precommits: "; - for (td::uint32 i = 0; i < desc.get_total_nodes(); i++) { - const auto e = precommitted_->at(i); - if (e) { - sb << "+ "; - } else { - sb << "- "; - } - } - sb << "\n"; - sb << "<<<<\n"; -} - // // // ROUND STATE @@ -821,8 +367,6 @@ const ValidatorSessionRoundState* ValidatorSessionRoundState::merge(ValidatorSes return SessionBlockCandidateSignature::merge(desc, l, r); }); - //auto sent_vec = SentBlockVector::merge(desc, left->sent_blocks_, right->sent_blocks_); - auto sent = ApproveVector::merge(desc, left->sent_blocks_, right->sent_blocks_, [&](const SessionBlockCandidate* l, const SessionBlockCandidate* r) { return SessionBlockCandidate::merge(desc, l, r); @@ -985,9 +529,6 @@ const ValidatorSessionRoundState* ValidatorSessionRoundState::forward_action_to_ attempt = ValidatorSessionRoundAttemptState::create(desc, att); } - bool had_voted_block; - attempt->get_voted_block(desc, had_voted_block); - ton_api::downcast_call(*const_cast(act), [&](auto& obj) { attempt = ValidatorSessionRoundAttemptState::action(desc, attempt, src_idx, att, obj, state); }); @@ -1302,6 +843,8 @@ std::vector ValidatorSessionRoundState::choose_blocks_to_appro CHECK(prio >= 0); td::uint32 blk_src_idx = B->get_src_idx(); if (was_source.count(blk_src_idx) > 0) { + // Any honest validator submits at most one block in a round + // Therefore, we can ignore all blocks from a node if it submits more than one x[prio] = nullptr; } else { was_source.insert(blk_src_idx); diff --git a/validator-session/validator-session-state.h b/validator-session/validator-session-state.h index 37708cba..f827b3fc 100644 --- a/validator-session/validator-session-state.h +++ b/validator-session/validator-session-state.h @@ -24,15 +24,15 @@ #include "common/io.hpp" #include "persistent-vector.h" - #include "validator-session-description.h" - #include "validator-session-types.h" +#include "validator-session-round-attempt-state.h" #include namespace td { +td::StringBuilder& operator<<(td::StringBuilder& sb, const ton::ton_api::validatorSession_round_Message& message); td::StringBuilder& operator<<(td::StringBuilder& sb, const ton::ton_api::validatorSession_round_Message* message); } @@ -41,410 +41,6 @@ namespace ton { namespace validatorsession { -using HashType = ValidatorSessionDescription::HashType; - -constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_WARNING) = verbosity_WARNING; -constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_NOTICE) = verbosity_DEBUG; -constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_INFO) = verbosity_DEBUG; -constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_DEBUG) = verbosity_DEBUG; -constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_EXTRA_DEBUG) = verbosity_DEBUG + 1; - -struct SessionBlockCandidateSignature : public ValidatorSessionDescription::RootObject { - public: - static auto create_hash(ValidatorSessionDescription& desc, td::Slice data) { - auto obj = create_tl_object(desc.compute_hash(data)); - return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); - } - - static bool compare(const RootObject* r, td::Slice data, HashType hash) { - if (!r || r->get_size() < sizeof(SessionBlockCandidateSignature)) { - return false; - } - auto R = static_cast(r); - return R->hash_ == hash && R->data_.ubegin() == data.ubegin() && R->data_.size() == data.size(); - } - - static auto lookup(ValidatorSessionDescription& desc, td::Slice data, HashType hash, bool temp) { - auto r = desc.get_by_hash(hash, temp); - if (compare(r, data, hash)) { - desc.on_reuse(); - return static_cast(r); - } - return static_cast(nullptr); - } - static SessionBlockCandidateSignature* create(ValidatorSessionDescription& desc, td::BufferSlice value) { - auto hash = create_hash(desc, value.as_slice()); - auto d = static_cast(desc.alloc(value.size(), 8, false)); - td::MutableSlice s{d, value.size()}; - s.copy_from(value.as_slice()); - return new (desc, true) SessionBlockCandidateSignature{desc, s, hash}; - } - static const SessionBlockCandidateSignature* move_to_persistent(ValidatorSessionDescription& desc, - const SessionBlockCandidateSignature* b) { - if (desc.is_persistent(b)) { - return b; - } - CHECK(desc.is_persistent(b->data_.ubegin())); - auto r = lookup(desc, b->data_, b->hash_, false); - if (r) { - return r; - } - return new (desc, false) SessionBlockCandidateSignature{desc, b->data_, b->hash_}; - } - static const SessionBlockCandidateSignature* merge(ValidatorSessionDescription& desc, - const SessionBlockCandidateSignature* l, - const SessionBlockCandidateSignature* r); - SessionBlockCandidateSignature(ValidatorSessionDescription& desc, td::Slice data, HashType hash) - : RootObject(sizeof(SessionBlockCandidateSignature)), data_{data}, hash_(std::move(hash)) { - desc.update_hash(this, hash_); - } - td::BufferSlice value() const { - return td::BufferSlice{data_}; - } - td::Slice as_slice() const { - return data_; - } - auto get_hash(ValidatorSessionDescription& desc) const { - return hash_; - } - - private: - const td::Slice data_; - const HashType hash_; -}; - -using SessionBlockCandidateSignatureVector = CntVector; - -class SentBlock : public ValidatorSessionDescription::RootObject { - public: - static HashType create_hash(ValidatorSessionDescription& desc, td::uint32 src_idx, ValidatorSessionRootHash root_hash, - ValidatorSessionFileHash file_hash, - ValidatorSessionCollatedDataFileHash collated_data_file_hash) { - auto obj = create_tl_object(src_idx, get_vs_hash(desc, root_hash), - get_vs_hash(desc, file_hash), - get_vs_hash(desc, collated_data_file_hash)); - return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); - } - static bool compare(const RootObject* root_object, td::uint32 src_idx, const ValidatorSessionRootHash& root_hash, - const ValidatorSessionFileHash& file_hash, - const ValidatorSessionCollatedDataFileHash& collated_data_file_hash, HashType hash) { - if (!root_object || root_object->get_size() < sizeof(SentBlock)) { - return false; - } - auto obj = static_cast(root_object); - return obj->src_idx_ == src_idx && obj->root_hash_ == root_hash && obj->file_hash_ == file_hash && - obj->collated_data_file_hash_ == collated_data_file_hash && obj->hash_ == hash; - } - static auto lookup(ValidatorSessionDescription& desc, td::uint32 src_idx, const ValidatorSessionRootHash& root_hash, - const ValidatorSessionFileHash& file_hash, - const ValidatorSessionCollatedDataFileHash& collated_data_file_hash, HashType hash, bool temp) { - auto r = desc.get_by_hash(hash, temp); - if (compare(r, src_idx, root_hash, file_hash, collated_data_file_hash, hash)) { - desc.on_reuse(); - return static_cast(r); - } - return static_cast(nullptr); - } - static const SentBlock* create(ValidatorSessionDescription& desc, td::uint32 src_idx, - const ValidatorSessionRootHash& root_hash, const ValidatorSessionFileHash& file_hash, - const ValidatorSessionCollatedDataFileHash& collated_data_file_hash) { - auto hash = create_hash(desc, src_idx, root_hash, file_hash, collated_data_file_hash); - auto r = lookup(desc, src_idx, root_hash, file_hash, collated_data_file_hash, hash, true); - if (r) { - return r; - } - - auto candidate_id = desc.candidate_id(src_idx, root_hash, file_hash, collated_data_file_hash); - - return new (desc, true) SentBlock{desc, src_idx, root_hash, file_hash, collated_data_file_hash, candidate_id, hash}; - } - static const SentBlock* create(ValidatorSessionDescription& desc, const ValidatorSessionCandidateId& zero) { - CHECK(zero.is_zero()); - auto hash = create_hash(desc, 0, ValidatorSessionRootHash::zero(), ValidatorSessionFileHash::zero(), - ValidatorSessionCollatedDataFileHash::zero()); - - return new (desc, true) SentBlock{desc, - 0, - ValidatorSessionRootHash::zero(), - ValidatorSessionFileHash::zero(), - ValidatorSessionCollatedDataFileHash::zero(), - zero, - hash}; - } - static const SentBlock* move_to_persistent(ValidatorSessionDescription& desc, const SentBlock* b) { - if (desc.is_persistent(b)) { - return b; - } - auto r = lookup(desc, b->src_idx_, b->root_hash_, b->file_hash_, b->collated_data_file_hash_, b->hash_, false); - if (r) { - return r; - } - - return new (desc, false) SentBlock{ - desc, b->src_idx_, b->root_hash_, b->file_hash_, b->collated_data_file_hash_, b->candidate_id_, b->hash_}; - } - SentBlock(ValidatorSessionDescription& desc, td::uint32 src_idx, ValidatorSessionRootHash root_hash, - ValidatorSessionFileHash file_hash, ValidatorSessionCollatedDataFileHash collated_data_file_hash, - ValidatorSessionCandidateId candidate_id, HashType hash) - : RootObject(sizeof(SentBlock)) - , src_idx_(src_idx) - , root_hash_(std::move(root_hash)) - , file_hash_(std::move(file_hash)) - , collated_data_file_hash_(std::move(collated_data_file_hash)) - , candidate_id_(candidate_id) - , hash_(std::move(hash)) { - desc.update_hash(this, hash_); - } - auto get_src_idx() const { - return src_idx_; - } - auto get_root_hash() const { - return root_hash_; - } - auto get_file_hash() const { - return file_hash_; - } - auto get_collated_data_file_hash() const { - return collated_data_file_hash_; - } - static ValidatorSessionCandidateId get_block_id(const SentBlock* block) { - return block ? block->candidate_id_ : skip_round_candidate_id(); - } - HashType get_hash(ValidatorSessionDescription& desc) const { - return hash_; - } - bool operator<(const SentBlock& block) const { - if (src_idx_ < block.src_idx_) { - return true; - } - if (src_idx_ > block.src_idx_) { - return false; - } - if (candidate_id_ < block.candidate_id_) { - return true; - } - return false; - } - struct Compare { - bool operator()(const SentBlock* a, const SentBlock* b) const { - return *a < *b; - } - }; - - private: - const td::uint32 src_idx_; - const ValidatorSessionRootHash root_hash_; - const ValidatorSessionFileHash file_hash_; - const ValidatorSessionCollatedDataFileHash collated_data_file_hash_; - const ValidatorSessionCandidateId candidate_id_; - const HashType hash_; -}; - -class SessionBlockCandidate : public ValidatorSessionDescription::RootObject { - public: - static HashType create_hash(ValidatorSessionDescription& desc, HashType block, HashType approved) { - auto obj = create_tl_object(block, approved); - return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); - } - static bool compare(const RootObject* r, const SentBlock* block, const SessionBlockCandidateSignatureVector* approved, - HashType hash) { - if (!r || r->get_size() < sizeof(SessionBlockCandidate)) { - return false; - } - auto R = static_cast(r); - return R->block_ == block && R->approved_by_ == approved && R->hash_ == hash; - } - static auto lookup(ValidatorSessionDescription& desc, const SentBlock* block, - const SessionBlockCandidateSignatureVector* approved, HashType hash, bool temp) { - auto r = desc.get_by_hash(hash, temp); - if (compare(r, block, approved, hash)) { - desc.on_reuse(); - return static_cast(r); - } - return static_cast(nullptr); - } - static const SessionBlockCandidate* create(ValidatorSessionDescription& desc, const SentBlock* block, - const SessionBlockCandidateSignatureVector* approved) { - auto hash = create_hash(desc, get_vs_hash(desc, block), get_vs_hash(desc, approved)); - - auto r = lookup(desc, block, approved, hash, true); - if (r) { - return r; - } - - return new (desc, true) SessionBlockCandidate(desc, block, approved, hash); - } - static const SessionBlockCandidate* create(ValidatorSessionDescription& desc, const SentBlock* block) { - std::vector v; - v.resize(desc.get_total_nodes(), nullptr); - auto vec = SessionBlockCandidateSignatureVector::create(desc, std::move(v)); - return create(desc, block, vec); - } - static const SessionBlockCandidate* move_to_persistent(ValidatorSessionDescription& desc, - const SessionBlockCandidate* b) { - if (desc.is_persistent(b)) { - return b; - } - auto block = SentBlock::move_to_persistent(desc, b->block_); - auto approved = SessionBlockCandidateSignatureVector::move_to_persistent(desc, b->approved_by_); - auto r = lookup(desc, block, approved, b->hash_, false); - if (r) { - return r; - } - - return new (desc, false) SessionBlockCandidate{desc, block, approved, b->hash_}; - } - SessionBlockCandidate(ValidatorSessionDescription& desc, const SentBlock* block, - const SessionBlockCandidateSignatureVector* approved, HashType hash) - : RootObject{sizeof(SessionBlockCandidate)}, block_(block), approved_by_(approved), hash_(hash) { - desc.update_hash(this, hash_); - } - static const SessionBlockCandidate* merge(ValidatorSessionDescription& desc, const SessionBlockCandidate* l, - const SessionBlockCandidate* r); - auto get_block() const { - return block_; - } - auto get_id() const { - return SentBlock::get_block_id(block_); - } - auto get_src_idx() const { - return block_ ? block_->get_src_idx() : std::numeric_limits::max(); - } - bool check_block_is_approved_by(td::uint32 src_idx) const { - return approved_by_->at(src_idx); - } - bool check_block_is_approved(ValidatorSessionDescription& desc) const; - auto get_hash(ValidatorSessionDescription& desc) const { - return hash_; - } - auto get_approvers_list() const { - return approved_by_; - } - static const SessionBlockCandidate* push(ValidatorSessionDescription& desc, const SessionBlockCandidate* state, - td::uint32 src_idx, const SessionBlockCandidateSignature* sig) { - CHECK(state); - if (state->approved_by_->at(src_idx)) { - return state; - } - return create(desc, state->block_, - SessionBlockCandidateSignatureVector::change(desc, state->approved_by_, src_idx, sig)); - } - class Compare { - public: - bool operator()(const SessionBlockCandidate* l, const SessionBlockCandidate* r) { - return l->get_id() < r->get_id(); - } - }; - - private: - const SentBlock* block_; - const SessionBlockCandidateSignatureVector* approved_by_; - const HashType hash_; -}; - -class SessionVoteCandidate : public ValidatorSessionDescription::RootObject { - public: - static HashType create_hash(ValidatorSessionDescription& desc, HashType block, HashType voted) { - auto obj = create_tl_object(block, voted); - return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); - } - static bool compare(const RootObject* r, const SentBlock* block, const CntVector* voted, HashType hash) { - if (!r || r->get_size() < sizeof(SessionVoteCandidate)) { - return false; - } - auto R = static_cast(r); - return R->block_ == block && R->voted_by_ == voted && R->hash_ == hash; - } - static auto lookup(ValidatorSessionDescription& desc, const SentBlock* block, const CntVector* voted, - HashType hash, bool temp) { - auto r = desc.get_by_hash(hash, temp); - if (compare(r, block, voted, hash)) { - desc.on_reuse(); - return static_cast(r); - } - return static_cast(nullptr); - } - static const SessionVoteCandidate* create(ValidatorSessionDescription& desc, const SentBlock* block, - const CntVector* voted) { - auto hash = create_hash(desc, get_vs_hash(desc, block), get_vs_hash(desc, voted)); - - auto r = lookup(desc, block, voted, hash, true); - if (r) { - return r; - } - - return new (desc, true) SessionVoteCandidate(desc, block, voted, hash); - } - static const SessionVoteCandidate* create(ValidatorSessionDescription& desc, const SentBlock* block) { - std::vector v; - v.resize(desc.get_total_nodes(), false); - auto vec = CntVector::create(desc, std::move(v)); - return create(desc, block, vec); - } - static const SessionVoteCandidate* move_to_persistent(ValidatorSessionDescription& desc, - const SessionVoteCandidate* b) { - if (desc.is_persistent(b)) { - return b; - } - auto block = SentBlock::move_to_persistent(desc, b->block_); - auto voted = CntVector::move_to_persistent(desc, b->voted_by_); - auto r = lookup(desc, block, voted, b->hash_, false); - if (r) { - return r; - } - - return new (desc, false) SessionVoteCandidate{desc, block, voted, b->hash_}; - } - SessionVoteCandidate(ValidatorSessionDescription& desc, const SentBlock* block, const CntVector* voted, - HashType hash) - : RootObject{sizeof(SessionVoteCandidate)}, block_(block), voted_by_(voted), hash_(hash) { - desc.update_hash(this, hash_); - } - static const SessionVoteCandidate* merge(ValidatorSessionDescription& desc, const SessionVoteCandidate* l, - const SessionVoteCandidate* r); - auto get_block() const { - return block_; - } - auto get_id() const { - return SentBlock::get_block_id(block_); - } - auto get_src_idx() const { - return block_ ? block_->get_src_idx() : std::numeric_limits::max(); - } - bool check_block_is_voted_by(td::uint32 src_idx) const { - return voted_by_->at(src_idx); - } - bool check_block_is_voted(ValidatorSessionDescription& desc) const; - auto get_hash(ValidatorSessionDescription& desc) const { - return hash_; - } - auto get_voters_list() const { - return voted_by_; - } - static const SessionVoteCandidate* push(ValidatorSessionDescription& desc, const SessionVoteCandidate* state, - td::uint32 src_idx) { - CHECK(state); - if (state->voted_by_->at(src_idx)) { - return state; - } - return create(desc, state->block_, CntVector::change(desc, state->voted_by_, src_idx, true)); - } - class Compare { - public: - bool operator()(const SessionVoteCandidate* l, const SessionVoteCandidate* r) { - return l->get_id() < r->get_id(); - } - }; - - private: - const SentBlock* block_; - const CntVector* voted_by_; - const HashType hash_; -}; - -//using SentBlockVector = CntSortedVector; - -class ValidatorSessionRoundState; class ValidatorSessionOldRoundState : public ValidatorSessionDescription::RootObject { public: static HashType create_hash(ValidatorSessionDescription& desc, td::uint32 seqno, HashType block, HashType signatures, @@ -582,188 +178,6 @@ class ValidatorSessionOldRoundState : public ValidatorSessionDescription::RootOb const HashType hash_; }; -using VoteVector = CntSortedVector; -using ApproveVector = CntSortedVector; - -class ValidatorSessionRoundAttemptState : public ValidatorSessionDescription::RootObject { - public: - static HashType create_hash(ValidatorSessionDescription& desc, td::uint32 seqno, HashType votes, - HashType precommitted, bool vote_for_inited, HashType vote_for) { - auto obj = create_tl_object(seqno, votes, precommitted, - vote_for_inited, vote_for); - return desc.compute_hash(serialize_tl_object(obj, true).as_slice()); - } - static bool compare(const RootObject* r, td::uint32 seqno, const VoteVector* votes, - const CntVector* precommitted, const SentBlock* vote_for, bool vote_for_inited, - HashType hash) { - if (!r || r->get_size() < sizeof(ValidatorSessionRoundAttemptState)) { - return false; - } - auto R = static_cast(r); - return R->seqno_ == seqno && R->votes_ == votes && R->precommitted_ == precommitted && R->vote_for_ == vote_for && - R->vote_for_inited_ == vote_for_inited && R->hash_ == hash; - } - static auto lookup(ValidatorSessionDescription& desc, td::uint32 seqno, const VoteVector* votes, - const CntVector* precommitted, const SentBlock* vote_for, bool vote_for_inited, - HashType hash, bool temp) { - auto r = desc.get_by_hash(hash, temp); - if (compare(r, seqno, votes, precommitted, vote_for, vote_for_inited, hash)) { - desc.on_reuse(); - return static_cast(r); - } - return static_cast(nullptr); - } - static const ValidatorSessionRoundAttemptState* move_to_persistent(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* b) { - if (desc.is_persistent(b)) { - return b; - } - auto votes = VoteVector::move_to_persistent(desc, b->votes_); - auto precommitted = CntVector::move_to_persistent(desc, b->precommitted_); - auto vote_for = SentBlock::move_to_persistent(desc, b->vote_for_); - - auto r = lookup(desc, b->seqno_, votes, precommitted, vote_for, b->vote_for_inited_, b->hash_, false); - if (r) { - return r; - } - - return new (desc, false) ValidatorSessionRoundAttemptState{desc, b->seqno_, votes, precommitted, - vote_for, b->vote_for_inited_, b->hash_}; - } - - static const ValidatorSessionRoundAttemptState* create(ValidatorSessionDescription& desc, td::uint32 seqno, - const VoteVector* votes, const CntVector* precommitted, - const SentBlock* vote_for, bool vote_for_inited) { - auto hash = create_hash(desc, seqno, get_vs_hash(desc, votes), get_vs_hash(desc, precommitted), - get_vs_hash(desc, vote_for), vote_for_inited); - - auto r = lookup(desc, seqno, votes, precommitted, vote_for, vote_for_inited, hash, true); - if (r) { - return r; - } - - return new (desc, true) - ValidatorSessionRoundAttemptState(desc, seqno, votes, precommitted, vote_for, vote_for_inited, hash); - } - static const ValidatorSessionRoundAttemptState* create(ValidatorSessionDescription& desc, td::uint32 seqno) { - std::vector x; - x.resize(desc.get_total_nodes(), false); - auto p = CntVector::create(desc, std::move(x)); - - return create(desc, seqno, nullptr, p, nullptr, false); - } - - ValidatorSessionRoundAttemptState(ValidatorSessionDescription& desc, td::uint32 seqno, const VoteVector* votes, - const CntVector* precommitted, const SentBlock* vote_for, - bool vote_for_inited, HashType hash) - : RootObject{sizeof(ValidatorSessionRoundAttemptState)} - , seqno_(seqno) - , votes_(votes) - , precommitted_(precommitted) - , vote_for_(vote_for) - , vote_for_inited_(vote_for_inited) - , hash_(std::move(hash)) { - desc.update_hash(this, hash_); - } - auto get_hash(ValidatorSessionDescription& desc) const { - return hash_; - } - auto get_seqno() const { - return seqno_; - } - auto get_votes() const { - return votes_; - } - auto get_precommits() const { - return precommitted_; - } - const SentBlock* get_voted_block(ValidatorSessionDescription& desc, bool& f) const; - const SentBlock* get_vote_for_block(ValidatorSessionDescription& desc, bool& f) const { - f = vote_for_inited_; - return vote_for_; - } - bool check_attempt_is_precommitted(ValidatorSessionDescription& desc) const; - bool check_vote_received_from(td::uint32 src_idx) const; - bool check_precommit_received_from(td::uint32 src_idx) const; - - bool operator<(const ValidatorSessionRoundAttemptState& right) const { - return seqno_ < right.seqno_; - } - struct Compare { - bool operator()(const ValidatorSessionRoundAttemptState* a, const ValidatorSessionRoundAttemptState* b) const { - return *a < *b; - } - }; - - static const ValidatorSessionRoundAttemptState* merge(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* left, - const ValidatorSessionRoundAttemptState* right); - static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, - const ton_api::validatorSession_message_voteFor& act, - const ValidatorSessionRoundState* round); - static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, - const ton_api::validatorSession_message_vote& act, - const ValidatorSessionRoundState* round); - static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, - const ton_api::validatorSession_message_precommit& act, - const ValidatorSessionRoundState* round); - static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, - const ton_api::validatorSession_message_empty& act, - const ValidatorSessionRoundState* round); - static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, - const ton_api::validatorSession_round_Message* action, - const ValidatorSessionRoundState* round); - template - static const ValidatorSessionRoundAttemptState* action(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, const T& action, - const ValidatorSessionRoundState* round) { - UNREACHABLE(); - } - static const ValidatorSessionRoundAttemptState* try_vote(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, - const ValidatorSessionRoundState* round, - const ton_api::validatorSession_round_Message* cmp, - bool& made); - static const ValidatorSessionRoundAttemptState* try_precommit(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, - const ValidatorSessionRoundState* round, - const ton_api::validatorSession_round_Message* cmp, - bool& made); - static const ValidatorSessionRoundAttemptState* make_one(ValidatorSessionDescription& desc, - const ValidatorSessionRoundAttemptState* state, - td::uint32 src_idx, td::uint32 att, - const ValidatorSessionRoundState* round, - const ton_api::validatorSession_round_Message* cmp, - bool& made); - tl_object_ptr create_action(ValidatorSessionDescription& desc, - const ValidatorSessionRoundState* round, - td::uint32 src_idx, td::uint32 att) const; - void dump(ValidatorSessionDescription& desc, td::StringBuilder& sb) const; - - private: - const td::uint32 seqno_; - const VoteVector* votes_; - const CntVector* precommitted_; - const SentBlock* vote_for_; - const bool vote_for_inited_; - const HashType hash_; -}; - -using AttemptVector = - CntSortedVector; class ValidatorSessionRoundState : public ValidatorSessionDescription::RootObject { public: diff --git a/validator-session/validator-session-types.h b/validator-session/validator-session-types.h index 357f6217..57957478 100644 --- a/validator-session/validator-session-types.h +++ b/validator-session/validator-session-types.h @@ -27,6 +27,12 @@ namespace ton { namespace validatorsession { +constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_WARNING) = verbosity_WARNING; +constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_NOTICE) = verbosity_DEBUG; +constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_INFO) = verbosity_DEBUG; +constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_DEBUG) = verbosity_DEBUG; +constexpr int VERBOSITY_NAME(VALIDATOR_SESSION_EXTRA_DEBUG) = verbosity_DEBUG + 1; + using ValidatorSessionRootHash = td::Bits256; using ValidatorSessionFileHash = td::Bits256; using ValidatorSessionCollatedDataFileHash = td::Bits256; diff --git a/validator-session/validator-session.cpp b/validator-session/validator-session.cpp index 2902b082..e08d8a7e 100644 --- a/validator-session/validator-session.cpp +++ b/validator-session/validator-session.cpp @@ -203,7 +203,23 @@ void ValidatorSessionImpl::preprocess_block(catchain::CatChainBlock *block) { << "ms: state=" << state->get_hash(description()); } -void ValidatorSessionImpl::process_broadcast(PublicKeyHash src, td::BufferSlice data) { +bool ValidatorSessionImpl::ensure_candidate_unique(td::uint32 src_idx, td::uint32 round, + ValidatorSessionCandidateId block_id) { + auto it = src_round_candidate_[src_idx].find(round); + if (it != src_round_candidate_[src_idx].end() && it->second != block_id) { + VLOG(VALIDATOR_SESSION_WARNING) << this << "[node " << description_->get_source_adnl_id(src_idx) << "][candidate " + << block_id << "]: this node already has candidate in round " << round; + return false; + } + src_round_candidate_[src_idx][round] = block_id; + return true; +} + +void ValidatorSessionImpl::process_broadcast(PublicKeyHash src, td::BufferSlice data, + td::optional expected_id, + bool is_overlay_broadcast) { + // Note: src is not necessarily equal to the sender of this message: + // If requested using get_broadcast_p2p, src is the creator of the block, sender possibly is some other node. auto src_idx = description().get_source_idx(src); auto R = fetch_tl_object(data.clone(), true); if (R.is_error()) { @@ -230,6 +246,12 @@ void ValidatorSessionImpl::process_broadcast(PublicKeyHash src, td::BufferSlice auto block_round = static_cast(candidate->round_); auto block_id = description().candidate_id(src_idx, candidate->root_hash_, file_hash, collated_data_file_hash); + if (expected_id && expected_id.value() != block_id) { + VLOG(VALIDATOR_SESSION_WARNING) << this << "[node " << src << "][broadcast " << sha256_bits256(data.as_slice()) + << "]: id mismatch"; + return; + } + if ((td::int32)block_round < (td::int32)cur_round_ - MAX_PAST_ROUND_BLOCK || block_round >= cur_round_ + MAX_FUTURE_ROUND_BLOCK) { VLOG(VALIDATOR_SESSION_NOTICE) << this << "[node " << src << "][broadcast " << block_id @@ -250,6 +272,10 @@ void ValidatorSessionImpl::process_broadcast(PublicKeyHash src, td::BufferSlice return; } + if (is_overlay_broadcast && !ensure_candidate_unique(src_idx, block_round, block_id)) { + return; + } + blocks_[block_id] = std::move(candidate); VLOG(VALIDATOR_SESSION_WARNING) << this << ": received broadcast " << block_id; @@ -508,7 +534,11 @@ void ValidatorSessionImpl::try_approve_block(const SentBlock *block) { } if (block) { - auto T = td::Timestamp::at(round_started_at_.at() + description().get_delay(block->get_src_idx()) + 2.0); + if (!ensure_candidate_unique(block->get_src_idx(), cur_round_, SentBlock::get_block_id(block))) { + return; + } + auto T = td::Timestamp::at(round_started_at_.at() + description().get_delay(block->get_src_idx()) + + REQUEST_BROADCAST_P2P_DELAY); auto it = blocks_.find(block_id); if (it != blocks_.end()) { @@ -545,16 +575,18 @@ void ValidatorSessionImpl::try_approve_block(const SentBlock *block) { auto id = description().get_source_id(v[td::Random::fast(0, static_cast(v.size() - 1))]); auto src_id = description().get_source_id(block->get_src_idx()); active_requests_.insert(block_id); - auto P = td::PromiseCreator::lambda([SelfId = actor_id(this), id, src_id, print_id = print_id(), - hash = block_id, round = cur_round_](td::Result R) { - td::actor::send_closure(SelfId, &ValidatorSessionImpl::end_request, round, hash); - if (R.is_error()) { - VLOG(VALIDATOR_SESSION_WARNING) - << print_id << ": failed to get candidate " << hash << " from " << id << ": " << R.move_as_error(); - } else { - td::actor::send_closure(SelfId, &ValidatorSessionImpl::process_broadcast, src_id, R.move_as_ok()); - } - }); + auto P = td::PromiseCreator::lambda( + [SelfId = actor_id(this), id, src_id, print_id = print_id(), hash = block_id, round = cur_round_, + candidate_id = SentBlock::get_block_id(block)](td::Result R) { + td::actor::send_closure(SelfId, &ValidatorSessionImpl::end_request, round, hash); + if (R.is_error()) { + VLOG(VALIDATOR_SESSION_WARNING) << print_id << ": failed to get candidate " << hash << " from " << id + << ": " << R.move_as_error(); + } else { + td::actor::send_closure(SelfId, &ValidatorSessionImpl::process_broadcast, src_id, R.move_as_ok(), + candidate_id, false); + } + }); get_broadcast_p2p(id, block->get_file_hash(), block->get_collated_data_file_hash(), description().get_source_id(block->get_src_idx()), cur_round_, block->get_root_hash(), @@ -586,10 +618,11 @@ void ValidatorSessionImpl::get_broadcast_p2p(PublicKeyHash node, ValidatorSessio round, create_tl_object(src.tl(), root_hash, file_hash, collated_data_file_hash)); - td::actor::send_closure(catchain_, &catchain::CatChain::send_query_via, node, "download candidate", - std::move(promise), timeout, serialize_tl_object(obj, true), - description().opts().max_block_size + description().opts().max_collated_data_size + 1024, - rldp_); + td::actor::send_closure( + catchain_, &catchain::CatChain::send_query_via, node, "download candidate", std::move(promise), timeout, + serialize_tl_object(obj, true), + description().opts().max_block_size + description().opts().max_collated_data_size + MAX_CANDIDATE_EXTRA_SIZE, + rldp_); } void ValidatorSessionImpl::check_sign_slot() { @@ -745,7 +778,6 @@ void ValidatorSessionImpl::on_new_round(td::uint32 round) { while (cur_round_ < round) { auto block = real_state_->get_committed_block(description(), cur_round_); - //CHECK(block); auto sigs = real_state_->get_committed_block_signatures(description(), cur_round_); CHECK(sigs); auto approve_sigs = real_state_->get_committed_block_approve_signatures(description(), cur_round_); @@ -838,7 +870,8 @@ void ValidatorSessionImpl::on_catchain_started() { auto broadcast = create_tl_object( src.tl(), round, root_hash, std::move(B.data), std::move(B.collated_data)); td::actor::send_closure(SelfId, &ValidatorSessionImpl::process_broadcast, src, - serialize_tl_object(broadcast, true)); + serialize_tl_object(broadcast, true), td::optional(), + false); } }); callback_->get_approved_candidate(description().get_source_public_key(x->get_src_idx()), x->get_root_hash(), @@ -866,6 +899,7 @@ ValidatorSessionImpl::ValidatorSessionImpl(catchain::CatChainSessionId session_i , overlay_manager_(overlays) , allow_unsafe_self_blocks_resync_(allow_unsafe_self_blocks_resync) { description_ = ValidatorSessionDescription::create(std::move(opts), nodes, local_id); + src_round_candidate_.resize(description_->get_total_nodes()); } void ValidatorSessionImpl::start() { diff --git a/validator-session/validator-session.hpp b/validator-session/validator-session.hpp index e8274554..1717c99f 100644 --- a/validator-session/validator-session.hpp +++ b/validator-session/validator-session.hpp @@ -74,6 +74,8 @@ class ValidatorSessionImpl : public ValidatorSession { td::BufferSlice signature_; std::map> blocks_; + // src_round_candidate_[src_id][round] -> candidate id + std::vector> src_round_candidate_; catchain::CatChainSessionId unique_hash_; @@ -110,7 +112,8 @@ class ValidatorSessionImpl : public ValidatorSession { td::actor::send_closure(id_, &ValidatorSessionImpl::preprocess_block, block); } void process_broadcast(const PublicKeyHash &src, td::BufferSlice data) override { - td::actor::send_closure(id_, &ValidatorSessionImpl::process_broadcast, src, std::move(data)); + td::actor::send_closure(id_, &ValidatorSessionImpl::process_broadcast, src, std::move(data), + td::optional(), true); } void process_message(const PublicKeyHash &src, td::BufferSlice data) override { td::actor::send_closure(id_, &ValidatorSessionImpl::process_message, src, std::move(data)); @@ -174,7 +177,9 @@ class ValidatorSessionImpl : public ValidatorSession { void process_blocks(std::vector blocks); void finished_processing(); void preprocess_block(catchain::CatChainBlock *block); - void process_broadcast(PublicKeyHash src, td::BufferSlice data); + bool ensure_candidate_unique(td::uint32 src_idx, td::uint32 round, ValidatorSessionCandidateId block_id); + void process_broadcast(PublicKeyHash src, td::BufferSlice data, td::optional expected_id, + bool is_overlay_broadcast); void process_message(PublicKeyHash src, td::BufferSlice data); void process_query(PublicKeyHash src, td::BufferSlice data, td::Promise promise); @@ -206,6 +211,8 @@ class ValidatorSessionImpl : public ValidatorSession { static const size_t MAX_REJECT_REASON_SIZE = 1024; static const td::int32 MAX_FUTURE_ROUND_BLOCK = 100; static const td::int32 MAX_PAST_ROUND_BLOCK = 20; + constexpr static const double REQUEST_BROADCAST_P2P_DELAY = 2.0; + static const td::uint32 MAX_CANDIDATE_EXTRA_SIZE = 1024; }; } // namespace validatorsession From 583178ccb165db42a69556aa58cd12d0f19ef6a6 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 15 May 2023 15:31:42 +0300 Subject: [PATCH 28/42] FunC: enable asserts and fix try/catch stack corruption (#699) * FunC: enable asserts in Release * FunC: Fix analyzing infinite loops * FunC: Allow catch with one tensor argument * FunC: Fix try/catch stack corruption --------- Co-authored-by: SpyCheese --- crypto/func/abscode.cpp | 3 + crypto/func/analyzer.cpp | 26 +++--- crypto/func/auto-tests/tests/try-func.fc | 109 +++++++++++++++++++++++ crypto/func/builtins.cpp | 54 +++++------ crypto/func/codegen.cpp | 93 +++++++++++-------- crypto/func/func.cpp | 9 +- crypto/func/func.h | 34 +++++-- crypto/func/gen-abscode.cpp | 18 ++-- crypto/func/optimize.cpp | 28 +++--- crypto/func/parse-func.cpp | 9 +- crypto/func/stack-transform.cpp | 2 +- crypto/func/unify-types.cpp | 20 ++--- 12 files changed, 276 insertions(+), 129 deletions(-) create mode 100644 crypto/func/auto-tests/tests/try-func.fc diff --git a/crypto/func/abscode.cpp b/crypto/func/abscode.cpp index 933edc3d..f1ffcfa4 100644 --- a/crypto/func/abscode.cpp +++ b/crypto/func/abscode.cpp @@ -38,6 +38,9 @@ TmpVar::TmpVar(var_idx_t _idx, int _cls, TypeExpr* _type, SymDef* sym, const Src if (!_type) { v_type = TypeExpr::new_hole(); } + if (cls == _Named) { + undefined = true; + } } void TmpVar::set_location(const SrcLocation& loc) { diff --git a/crypto/func/analyzer.cpp b/crypto/func/analyzer.cpp index d59230e8..ec6931af 100644 --- a/crypto/func/analyzer.cpp +++ b/crypto/func/analyzer.cpp @@ -42,14 +42,14 @@ int CodeBlob::split_vars(bool strict) { } std::vector comp_types; int k = var.v_type->extract_components(comp_types); - assert(k <= 254 && n <= 0x7fff00); - assert((unsigned)k == comp_types.size()); + func_assert(k <= 254 && n <= 0x7fff00); + func_assert((unsigned)k == comp_types.size()); if (k != 1) { var.coord = ~((n << 8) + k); for (int i = 0; i < k; i++) { auto v = create_var(vars[j].cls, comp_types[i], 0, vars[j].where.get()); - assert(v == n + i); - assert(vars[v].idx == v); + func_assert(v == n + i); + func_assert(vars[v].idx == v); vars[v].name = vars[j].name; vars[v].coord = ((int)j << 8) + i + 1; } @@ -75,9 +75,9 @@ bool CodeBlob::compute_used_code_vars() { } bool CodeBlob::compute_used_code_vars(std::unique_ptr& ops_ptr, const VarDescrList& var_info, bool edit) const { - assert(ops_ptr); + func_assert(ops_ptr); if (!ops_ptr->next) { - assert(ops_ptr->cl == Op::_Nop); + func_assert(ops_ptr->cl == Op::_Nop); return ops_ptr->set_var_info(var_info); } return compute_used_code_vars(ops_ptr->next, var_info, edit) | ops_ptr->compute_used_vars(*this, edit); @@ -346,7 +346,7 @@ bool Op::std_compute_used_vars(bool disabled) { } bool Op::compute_used_vars(const CodeBlob& code, bool edit) { - assert(next); + func_assert(next); const VarDescrList& next_var_info = next->var_info; if (cl == _Nop) { return set_var_info_except(next_var_info, left); @@ -379,7 +379,7 @@ bool Op::compute_used_vars(const CodeBlob& code, bool edit) { case _Let: { // left = right std::size_t cnt = next_var_info.count_used(left); - assert(left.size() == right.size()); + func_assert(left.size() == right.size()); auto l_it = left.cbegin(), r_it = right.cbegin(); VarDescrList new_var_info{next_var_info}; new_var_info -= left; @@ -500,7 +500,7 @@ bool Op::compute_used_vars(const CodeBlob& code, bool edit) { } changes = (new_var_info.size() == n); } while (changes <= edit); - assert(left.size() == 1); + func_assert(left.size() == 1); bool last = new_var_info.count_used(left) == 0; new_var_info += left; if (last) { @@ -655,7 +655,7 @@ bool prune_unreachable(std::unique_ptr& ops) { ops = std::move(op.block0); return false; } - reach = true; + reach = (op.cl != Op::_Again); break; } case Op::_TryCatch: { @@ -684,7 +684,7 @@ void CodeBlob::prune_unreachable_code() { void CodeBlob::fwd_analyze() { VarDescrList values; - assert(ops && ops->cl == Op::_Import); + func_assert(ops && ops->cl == Op::_Import); for (var_idx_t i : ops->left) { values += i; if (vars[i].v_type->is_int()) { @@ -765,7 +765,7 @@ VarDescrList Op::fwd_analyze(VarDescrList values) { break; case _Let: { std::vector old_val; - assert(left.size() == right.size()); + func_assert(left.size() == right.size()); for (std::size_t i = 0; i < right.size(); i++) { const VarDescr* ov = values[right[i]]; if (!ov && verbosity >= 5) { @@ -780,7 +780,7 @@ VarDescrList Op::fwd_analyze(VarDescrList values) { } std::cerr << std::endl; } - // assert(ov); + // func_assert(ov); if (ov) { old_val.push_back(*ov); } else { diff --git a/crypto/func/auto-tests/tests/try-func.fc b/crypto/func/auto-tests/tests/try-func.fc new file mode 100644 index 00000000..5678965e --- /dev/null +++ b/crypto/func/auto-tests/tests/try-func.fc @@ -0,0 +1,109 @@ +int foo(int x) method_id(11) { + try { + if (x == 7) { + throw(44); + } + return x; + } catch (_, _) { + return 2; + } +} + +int foo_inline(int x) inline method_id(12) { + try { + if (x == 7) { + throw(44); + } + return x; + } catch (_, _) { + return 2; + } +} + +int foo_inlineref(int x) inline_ref method_id(13) { + try { + if (x == 7) { + throw(44); + } + return x; + } catch (_, _) { + return 2; + } +} + +int test(int x, int y, int z) method_id(1) { + y = foo(y); + return x * 100 + y * 10 + z; +} + +int test_inline(int x, int y, int z) method_id(2) { + y = foo_inline(y); + return x * 100 + y * 10 + z; +} + +int test_inlineref(int x, int y, int z) method_id(3) { + y = foo_inlineref(y); + return x * 100 + y * 10 + z; +} + +int foo_inline_big( + int x1, int x2, int x3, int x4, int x5, int x6, int x7, int x8, int x9, int x10, + int x11, int x12, int x13, int x14, int x15, int x16, int x17, int x18, int x19, int x20 +) inline method_id(14) { + try { + if (x1 == 7) { + throw(44); + } + return x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20; + } catch (_, _) { + return 1; + } +} + +int test_inline_big(int x, int y, int z) method_id(4) { + y = foo_inline_big( + y, y + 1, y + 2, y + 3, y + 4, y + 5, y + 6, y + 7, y + 8, y + 9, + y + 10, y + 11, y + 12, y + 13, y + 14, y + 15, y + 16, y + 17, y + 18, y + 19); + return x * 1000000 + y * 1000 + z; +} + +int foo_big( + int x1, int x2, int x3, int x4, int x5, int x6, int x7, int x8, int x9, int x10, + int x11, int x12, int x13, int x14, int x15, int x16, int x17, int x18, int x19, int x20 +) method_id(15) { + try { + if (x1 == 7) { + throw(44); + } + return x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20; + } catch (_, _) { + return 1; + } +} + +int test_big(int x, int y, int z) method_id(5) { + y = foo_big( + y, y + 1, y + 2, y + 3, y + 4, y + 5, y + 6, y + 7, y + 8, y + 9, + y + 10, y + 11, y + 12, y + 13, y + 14, y + 15, y + 16, y + 17, y + 18, y + 19); + return x * 1000000 + y * 1000 + z; +} + +() main() { +} + +{- + method_id | in | out +TESTCASE | 1 | 1 2 3 | 123 +TESTCASE | 1 | 3 8 9 | 389 +TESTCASE | 1 | 3 7 9 | 329 +TESTCASE | 2 | 1 2 3 | 123 +TESTCASE | 2 | 3 8 9 | 389 +TESTCASE | 2 | 3 7 9 | 329 +TESTCASE | 3 | 1 2 3 | 123 +TESTCASE | 3 | 3 8 9 | 389 +TESTCASE | 3 | 3 7 9 | 329 +TESTCASE | 4 | 4 8 9 | 4350009 +TESTCASE | 4 | 4 7 9 | 4001009 +TESTCASE | 5 | 4 8 9 | 4350009 +TESTCASE | 5 | 4 7 9 | 4001009 +-} diff --git a/crypto/func/builtins.cpp b/crypto/func/builtins.cpp index 29691034..9de673fd 100644 --- a/crypto/func/builtins.cpp +++ b/crypto/func/builtins.cpp @@ -429,7 +429,7 @@ AsmOp push_const(td::RefInt256 x) { } AsmOp compile_add(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (x.is_int_const() && y.is_int_const()) { r.set_const(x.int_const + y.int_const); @@ -471,7 +471,7 @@ AsmOp compile_add(std::vector& res, std::vector& args, const } AsmOp compile_sub(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (x.is_int_const() && y.is_int_const()) { r.set_const(x.int_const - y.int_const); @@ -504,7 +504,7 @@ AsmOp compile_sub(std::vector& res, std::vector& args, const } AsmOp compile_negate(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 1); + func_assert(res.size() == 1 && args.size() == 1); VarDescr &r = res[0], &x = args[0]; if (x.is_int_const()) { r.set_const(-x.int_const); @@ -519,7 +519,7 @@ AsmOp compile_negate(std::vector& res, std::vector& args, co } AsmOp compile_and(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (x.is_int_const() && y.is_int_const()) { r.set_const(x.int_const & y.int_const); @@ -532,7 +532,7 @@ AsmOp compile_and(std::vector& res, std::vector& args, const } AsmOp compile_or(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (x.is_int_const() && y.is_int_const()) { r.set_const(x.int_const | y.int_const); @@ -545,7 +545,7 @@ AsmOp compile_or(std::vector& res, std::vector& args, const } AsmOp compile_xor(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (x.is_int_const() && y.is_int_const()) { r.set_const(x.int_const ^ y.int_const); @@ -558,7 +558,7 @@ AsmOp compile_xor(std::vector& res, std::vector& args, const } AsmOp compile_not(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 1); + func_assert(res.size() == 1 && args.size() == 1); VarDescr &r = res[0], &x = args[0]; if (x.is_int_const()) { r.set_const(~x.int_const); @@ -638,12 +638,12 @@ AsmOp compile_mul_internal(VarDescr& r, VarDescr& x, VarDescr& y, const SrcLocat } AsmOp compile_mul(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); return compile_mul_internal(res[0], args[0], args[1], where); } AsmOp compile_lshift(std::vector& res, std::vector& args, const SrcLocation& where) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (y.is_int_const()) { auto yv = y.int_const->to_long(); @@ -686,7 +686,7 @@ AsmOp compile_lshift(std::vector& res, std::vector& args, co AsmOp compile_rshift(std::vector& res, std::vector& args, const SrcLocation& where, int round_mode) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (y.is_int_const()) { auto yv = y.int_const->to_long(); @@ -755,13 +755,13 @@ AsmOp compile_div_internal(VarDescr& r, VarDescr& x, VarDescr& y, const SrcLocat } AsmOp compile_div(std::vector& res, std::vector& args, const SrcLocation& where, int round_mode) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); return compile_div_internal(res[0], args[0], args[1], where, round_mode); } AsmOp compile_mod(std::vector& res, std::vector& args, const src::SrcLocation& where, int round_mode) { - assert(res.size() == 1 && args.size() == 2); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (x.is_int_const() && y.is_int_const()) { r.set_const(mod(x.int_const, y.int_const, round_mode)); @@ -802,7 +802,7 @@ AsmOp compile_mod(std::vector& res, std::vector& args, const AsmOp compile_muldiv(std::vector& res, std::vector& args, const SrcLocation& where, int round_mode) { - assert(res.size() == 1 && args.size() == 3); + func_assert(res.size() == 1 && args.size() == 3); VarDescr &r = res[0], &x = args[0], &y = args[1], &z = args[2]; if (x.is_int_const() && y.is_int_const() && z.is_int_const()) { r.set_const(muldiv(x.int_const, y.int_const, z.int_const, round_mode)); @@ -923,8 +923,8 @@ int compute_compare(const VarDescr& x, const VarDescr& y, int mode) { } AsmOp compile_cmp_int(std::vector& res, std::vector& args, int mode) { - assert(mode >= 1 && mode <= 7); - assert(res.size() == 1 && args.size() == 2); + func_assert(mode >= 1 && mode <= 7); + func_assert(res.size() == 1 && args.size() == 2); VarDescr &r = res[0], &x = args[0], &y = args[1]; if (x.is_int_const() && y.is_int_const()) { int v = compute_compare(x.int_const, y.int_const, mode); @@ -935,7 +935,7 @@ AsmOp compile_cmp_int(std::vector& res, std::vector& args, i } int v = compute_compare(x, y, mode); // std::cerr << "compute_compare(" << x << ", " << y << ", " << mode << ") = " << v << std::endl; - assert(v); + func_assert(v); if (!(v & (v - 1))) { r.set_const(v - (v >> 2) - 2); x.unused(); @@ -971,7 +971,7 @@ AsmOp compile_cmp_int(std::vector& res, std::vector& args, i } AsmOp compile_throw(std::vector& res, std::vector& args, const SrcLocation&) { - assert(res.empty() && args.size() == 1); + func_assert(res.empty() && args.size() == 1); VarDescr& x = args[0]; if (x.is_int_const() && x.int_const->unsigned_fits_bits(11)) { x.unused(); @@ -982,7 +982,7 @@ AsmOp compile_throw(std::vector& res, std::vector& args, con } AsmOp compile_cond_throw(std::vector& res, std::vector& args, bool mode) { - assert(res.empty() && args.size() == 2); + func_assert(res.empty() && args.size() == 2); VarDescr &x = args[0], &y = args[1]; std::string suff = (mode ? "IF" : "IFNOT"); bool skip_cond = false; @@ -1003,7 +1003,7 @@ AsmOp compile_cond_throw(std::vector& res, std::vector& args } AsmOp compile_throw_arg(std::vector& res, std::vector& args, const SrcLocation&) { - assert(res.empty() && args.size() == 2); + func_assert(res.empty() && args.size() == 2); VarDescr &x = args[1]; if (x.is_int_const() && x.int_const->unsigned_fits_bits(11)) { x.unused(); @@ -1014,7 +1014,7 @@ AsmOp compile_throw_arg(std::vector& res, std::vector& args, } AsmOp compile_cond_throw_arg(std::vector& res, std::vector& args, bool mode) { - assert(res.empty() && args.size() == 3); + func_assert(res.empty() && args.size() == 3); VarDescr &x = args[1], &y = args[2]; std::string suff = (mode ? "IF" : "IFNOT"); bool skip_cond = false; @@ -1035,7 +1035,7 @@ AsmOp compile_cond_throw_arg(std::vector& res, std::vector& } AsmOp compile_bool_const(std::vector& res, std::vector& args, bool val) { - assert(res.size() == 1 && args.empty()); + func_assert(res.size() == 1 && args.empty()); VarDescr& r = res[0]; r.set_const(val ? -1 : 0); return AsmOp::Const(val ? "TRUE" : "FALSE"); @@ -1046,7 +1046,7 @@ AsmOp compile_bool_const(std::vector& res, std::vector& args // int preload_int(slice s, int len) asm "PLDIX"; // int preload_uint(slice s, int len) asm "PLDUX"; AsmOp compile_fetch_int(std::vector& res, std::vector& args, bool fetch, bool sgnd) { - assert(args.size() == 2 && res.size() == 1 + (unsigned)fetch); + func_assert(args.size() == 2 && res.size() == 1 + (unsigned)fetch); auto &y = args[1], &r = res.back(); r.val = (sgnd ? VarDescr::FiniteInt : VarDescr::FiniteUInt); int v = -1; @@ -1069,7 +1069,7 @@ AsmOp compile_fetch_int(std::vector& res, std::vector& args, // builder store_uint(builder b, int x, int len) asm(x b len) "STUX"; // builder store_int(builder b, int x, int len) asm(x b len) "STIX"; AsmOp compile_store_int(std::vector& res, std::vector& args, bool sgnd) { - assert(args.size() == 3 && res.size() == 1); + func_assert(args.size() == 3 && res.size() == 1); auto& z = args[2]; if (z.is_int_const() && z.int_const > 0 && z.int_const <= 256) { z.unused(); @@ -1079,7 +1079,7 @@ AsmOp compile_store_int(std::vector& res, std::vector& args, } AsmOp compile_fetch_slice(std::vector& res, std::vector& args, bool fetch) { - assert(args.size() == 2 && res.size() == 1 + (unsigned)fetch); + func_assert(args.size() == 2 && res.size() == 1 + (unsigned)fetch); auto& y = args[1]; int v = -1; if (y.is_int_const() && y.int_const > 0 && y.int_const <= 256) { @@ -1094,7 +1094,7 @@ AsmOp compile_fetch_slice(std::vector& res, std::vector& arg // _at(tuple t, int index) asm "INDEXVAR"; AsmOp compile_tuple_at(std::vector& res, std::vector& args, const SrcLocation&) { - assert(args.size() == 2 && res.size() == 1); + func_assert(args.size() == 2 && res.size() == 1); auto& y = args[1]; if (y.is_int_const() && y.int_const >= 0 && y.int_const < 16) { y.unused(); @@ -1105,7 +1105,7 @@ AsmOp compile_tuple_at(std::vector& res, std::vector& args, // int null?(X arg) AsmOp compile_is_null(std::vector& res, std::vector& args, const SrcLocation&) { - assert(args.size() == 1 && res.size() == 1); + func_assert(args.size() == 1 && res.size() == 1); auto &x = args[0], &r = res[0]; if (x.always_null() || x.always_not_null()) { x.unused(); @@ -1118,7 +1118,7 @@ AsmOp compile_is_null(std::vector& res, std::vector& args, c bool compile_run_method(AsmOpList& code, std::vector& res, std::vector& args, int n, bool has_value) { - assert(args.size() == (unsigned)n + 1 && res.size() == (unsigned)has_value); + func_assert(args.size() == (unsigned)n + 1 && res.size() == (unsigned)has_value); auto& x = args[0]; if (x.is_int_const() && x.int_const->unsigned_fits_bits(14)) { x.unused(); diff --git a/crypto/func/codegen.cpp b/crypto/func/codegen.cpp index 87290965..de45c841 100644 --- a/crypto/func/codegen.cpp +++ b/crypto/func/codegen.cpp @@ -165,7 +165,7 @@ void Stack::push_new_const(var_idx_t idx, const_idx_t cidx) { void Stack::assign_var(var_idx_t new_idx, var_idx_t old_idx) { int i = find(old_idx); - assert(i >= 0 && "variable not found in stack"); + func_assert(i >= 0 && "variable not found in stack"); if (new_idx != old_idx) { at(i).first = new_idx; modified(); @@ -174,10 +174,10 @@ void Stack::assign_var(var_idx_t new_idx, var_idx_t old_idx) { void Stack::do_copy_var(var_idx_t new_idx, var_idx_t old_idx) { int i = find(old_idx); - assert(i >= 0 && "variable not found in stack"); + func_assert(i >= 0 && "variable not found in stack"); if (find(old_idx, i + 1) < 0) { issue_push(i); - assert(at(0).first == old_idx); + func_assert(at(0).first == old_idx); } assign_var(new_idx, old_idx); } @@ -199,21 +199,21 @@ void Stack::enforce_state(const StackLayout& req_stack) { j = 0; } issue_xchg(j, depth() - i - 1); - assert(s[i].first == x); + func_assert(s[i].first == x); } while (depth() > k) { issue_pop(0); } - assert(depth() == k); + func_assert(depth() == k); for (int i = 0; i < k; i++) { - assert(s[i].first == req_stack[i]); + func_assert(s[i].first == req_stack[i]); } } void Stack::merge_const(const Stack& req_stack) { - assert(s.size() == req_stack.s.size()); + func_assert(s.size() == req_stack.s.size()); for (std::size_t i = 0; i < s.size(); i++) { - assert(s[i].first == req_stack.s[i].first); + func_assert(s[i].first == req_stack.s[i].first); if (s[i].second != req_stack.s[i].second) { s[i].second = not_const; } @@ -251,15 +251,15 @@ void Stack::rearrange_top(const StackLayout& top, std::vector last) { if (last[i]) { // rearrange x to be at s(ss-1) issue_xchg(--ss, j); - assert(get(ss).first == x); + func_assert(get(ss).first == x); } else { // create a new copy of x issue_push(j); issue_xchg(0, ss); - assert(get(ss).first == x); + func_assert(get(ss).first == x); } } - assert(!ss); + func_assert(!ss); } void Stack::rearrange_top(var_idx_t top, bool last) { @@ -269,7 +269,7 @@ void Stack::rearrange_top(var_idx_t top, bool last) { } else { issue_push(i); } - assert(get(0).first == top); + func_assert(get(0).first == top); } bool Op::generate_code_step(Stack& stack) { @@ -300,7 +300,7 @@ bool Op::generate_code_step(Stack& stack) { stack.o << push_const(int_const); stack.push_new_const(left[0], cidx); } else { - assert(stack.at(i).second == cidx); + func_assert(stack.at(i).second == cidx); stack.do_copy_var(left[0], stack[i]); } return true; @@ -329,7 +329,7 @@ bool Op::generate_code_step(Stack& stack) { std::string name = sym::symbols.get_name(fun_ref->sym_idx); stack.o << AsmOp::Custom(name + " GETGLOB", 0, 1); if (left.size() != 1) { - assert(left.size() <= 15); + func_assert(left.size() <= 15); stack.o << AsmOp::UnTuple((int)left.size()); } for (auto i : left) { @@ -337,7 +337,7 @@ bool Op::generate_code_step(Stack& stack) { } return true; } else { - assert(left.size() == 1); + func_assert(left.size() == 1); auto p = next->var_info[left[0]]; if (!p || p->is_unused() || disabled()) { return true; @@ -349,10 +349,10 @@ bool Op::generate_code_step(Stack& stack) { // TODO: create and compile a true lambda instead of this (so that arg_order and ret_order would work correctly) std::vector args0, res; TypeExpr::remove_indirect(func->sym_type); - assert(func->get_type()->is_map()); + func_assert(func->get_type()->is_map()); auto wr = func->get_type()->args.at(0)->get_width(); auto wl = func->get_type()->args.at(1)->get_width(); - assert(wl >= 0 && wr >= 0); + func_assert(wl >= 0 && wr >= 0); for (int i = 0; i < wl; i++) { res.emplace_back(0); } @@ -370,7 +370,7 @@ bool Op::generate_code_step(Stack& stack) { return true; } case _Let: { - assert(left.size() == right.size()); + func_assert(left.size() == right.size()); int i = 0; std::vector active; active.reserve(left.size()); @@ -420,13 +420,13 @@ bool Op::generate_code_step(Stack& stack) { stack.rearrange_top(right, std::move(last)); stack.opt_show(); int k = (int)stack.depth() - (int)right.size(); - assert(k >= 0); + func_assert(k >= 0); if (cl == _Tuple) { stack.o << AsmOp::Tuple((int)right.size()); - assert(left.size() == 1); + func_assert(left.size() == 1); } else { stack.o << AsmOp::UnTuple((int)left.size()); - assert(right.size() == 1); + func_assert(right.size() == 1); } stack.s.resize(k); for (int i = 0; i < (int)left.size(); i++) { @@ -442,16 +442,16 @@ bool Op::generate_code_step(Stack& stack) { SymValFunc* func = (fun_ref ? dynamic_cast(fun_ref->value) : nullptr); auto arg_order = (func ? func->get_arg_order() : nullptr); auto ret_order = (func ? func->get_ret_order() : nullptr); - assert(!arg_order || arg_order->size() == right.size()); - assert(!ret_order || ret_order->size() == left.size()); + func_assert(!arg_order || arg_order->size() == right.size()); + func_assert(!ret_order || ret_order->size() == left.size()); std::vector right1; if (args.size()) { - assert(args.size() == right.size()); + func_assert(args.size() == right.size()); for (int i = 0; i < (int)right.size(); i++) { int j = arg_order ? arg_order->at(i) : i; const VarDescr& arg = args.at(j); if (!arg.is_unused()) { - assert(var_info[arg.idx] && !var_info[arg.idx]->is_unused()); + func_assert(var_info[arg.idx] && !var_info[arg.idx]->is_unused()); right1.push_back(arg.idx); } } @@ -469,17 +469,25 @@ bool Op::generate_code_step(Stack& stack) { stack.rearrange_top(right1, std::move(last)); stack.opt_show(); int k = (int)stack.depth() - (int)right1.size(); - assert(k >= 0); + func_assert(k >= 0); for (int i = 0; i < (int)right1.size(); i++) { if (stack.s[k + i].first != right1[i]) { std::cerr << stack.o; } - assert(stack.s[k + i].first == right1[i]); + func_assert(stack.s[k + i].first == right1[i]); } + auto exec_callxargs = [&](int args, int ret) { + if (args <= 15 && ret <= 15) { + stack.o << exec_arg2_op("CALLXARGS", args, ret, args + 1, ret); + } else { + func_assert(args <= 254 && ret <= 254); + stack.o << AsmOp::Const(PSTRING() << args << " PUSHINT"); + stack.o << AsmOp::Const(PSTRING() << ret << " PUSHINT"); + stack.o << AsmOp::Custom("CALLXVARARGS", args + 3, ret); + } + }; if (cl == _CallInd) { - // TODO: replace with exec_arg2_op() - stack.o << exec_arg2_op("CALLXARGS", (int)right.size() - 1, (int)left.size(), (int)right.size(), - (int)left.size()); + exec_callxargs((int)right.size() - 1, (int)left.size()); } else { auto func = dynamic_cast(fun_ref->value); if (func) { @@ -493,8 +501,14 @@ bool Op::generate_code_step(Stack& stack) { auto fv = dynamic_cast(fun_ref->value); std::string name = sym::symbols.get_name(fun_ref->sym_idx); bool is_inline = (fv && (fv->flags & 3)); - stack.o << AsmOp::Custom(name + (is_inline ? " INLINECALLDICT" : " CALLDICT"), (int)right.size(), - (int)left.size()); + if (is_inline) { + stack.o << AsmOp::Custom(name + " INLINECALLDICT", (int)right.size(), (int)left.size()); + } else if (fv && fv->code && fv->code->require_callxargs) { + stack.o << AsmOp::Custom(name + (" PREPAREDICT"), 0, 2); + exec_callxargs((int)right.size() + 1, (int)left.size()); + } else { + stack.o << AsmOp::Custom(name + " CALLDICT", (int)right.size(), (int)left.size()); + } } } stack.s.resize(k); @@ -505,7 +519,7 @@ bool Op::generate_code_step(Stack& stack) { return true; } case _SetGlob: { - assert(fun_ref && dynamic_cast(fun_ref->value)); + func_assert(fun_ref && dynamic_cast(fun_ref->value)); std::vector last; for (var_idx_t x : right) { last.push_back(var_info[x] && var_info[x]->is_last()); @@ -513,12 +527,12 @@ bool Op::generate_code_step(Stack& stack) { stack.rearrange_top(right, std::move(last)); stack.opt_show(); int k = (int)stack.depth() - (int)right.size(); - assert(k >= 0); + func_assert(k >= 0); for (int i = 0; i < (int)right.size(); i++) { if (stack.s[k + i].first != right[i]) { std::cerr << stack.o; } - assert(stack.s[k + i].first == right[i]); + func_assert(stack.s[k + i].first == right[i]); } if (right.size() > 1) { stack.o << AsmOp::Tuple((int)right.size()); @@ -539,7 +553,7 @@ bool Op::generate_code_step(Stack& stack) { } var_idx_t x = left[0]; stack.rearrange_top(x, var_info[x] && var_info[x]->is_last()); - assert(stack[0] == x); + func_assert(stack[0] == x); stack.opt_show(); stack.s.pop_back(); stack.modified(); @@ -651,7 +665,7 @@ bool Op::generate_code_step(Stack& stack) { var_idx_t x = left[0]; //stack.drop_vars_except(block0->var_info, x); stack.rearrange_top(x, var_info[x] && var_info[x]->is_last()); - assert(stack[0] == x); + func_assert(stack[0] == x); stack.opt_show(); stack.s.pop_back(); stack.modified(); @@ -877,12 +891,13 @@ void Op::generate_code_all(Stack& stack) { void CodeBlob::generate_code(AsmOpList& out, int mode) { Stack stack{out, mode}; - assert(ops && ops->cl == Op::_Import); + func_assert(ops && ops->cl == Op::_Import); + auto args = (int)ops->left.size(); for (var_idx_t x : ops->left) { stack.push_new_var(x); } ops->generate_code_all(stack); - stack.apply_wrappers(); + stack.apply_wrappers(require_callxargs && (mode & Stack::_InlineAny) ? args : -1); if (!(mode & Stack::_DisableOpt)) { optimize_code(out); } diff --git a/crypto/func/func.cpp b/crypto/func/func.cpp index 87bf23e9..39648c05 100644 --- a/crypto/func/func.cpp +++ b/crypto/func/func.cpp @@ -72,7 +72,7 @@ td::Result fs_read_callback(ReadCallback::Kind kind, const char* qu void generate_output_func(SymDef* func_sym, std::ostream &outs, std::ostream &errs) { SymValCodeFunc* func_val = dynamic_cast(func_sym->value); - assert(func_val); + func_assert(func_val); std::string name = sym::symbols.get_name(func_sym->sym_idx); if (verbosity >= 2) { errs << "\n\n=========================\nfunction " << name << " : " << func_val->get_type() << std::endl; @@ -145,6 +145,9 @@ void generate_output_func(SymDef* func_sym, std::ostream &outs, std::ostream &er if (fv && (fv->flags & 1) && code.ops->noreturn()) { mode |= Stack::_InlineFunc; } + if (fv && (fv->flags & 3)) { + mode |= Stack::_InlineAny; + } code.generate_code(outs, mode, indent + 1); outs << std::string(indent * 2, ' ') << "}>\n"; if (verbosity >= 2) { @@ -163,7 +166,7 @@ int generate_output(std::ostream &outs, std::ostream &errs) { } for (SymDef* func_sym : glob_func) { SymValCodeFunc* func_val = dynamic_cast(func_sym->value); - assert(func_val); + func_assert(func_val); std::string name = sym::symbols.get_name(func_sym->sym_idx); outs << std::string(indent * 2, ' '); if (func_val->method_id.is_null()) { @@ -173,7 +176,7 @@ int generate_output(std::ostream &outs, std::ostream &errs) { } } for (SymDef* gvar_sym : glob_vars) { - assert(dynamic_cast(gvar_sym->value)); + func_assert(dynamic_cast(gvar_sym->value)); std::string name = sym::symbols.get_name(gvar_sym->sym_idx); outs << std::string(indent * 2, ' ') << "DECLGLOBVAR " << name << "\n"; } diff --git a/crypto/func/func.h b/crypto/func/func.h index 33f8c86f..2b95bcbc 100644 --- a/crypto/func/func.h +++ b/crypto/func/func.h @@ -33,6 +33,10 @@ #include "parser/symtable.h" #include "td/utils/Status.h" +#define func_assert(expr) \ + (bool(expr) ? void(0) \ + : throw src::Fatal(PSTRING() << "Assertion failed at " << __FILE__ << ":" << __LINE__ << ": " << #expr)) + namespace funC { extern int verbosity; @@ -310,6 +314,7 @@ struct TmpVar { int coord; std::unique_ptr where; std::vector> on_modification; + bool undefined = false; TmpVar(var_idx_t _idx, int _cls, TypeExpr* _type = 0, SymDef* sym = 0, const SrcLocation* loc = 0); void show(std::ostream& os, int omit_idx = 0) const; void dump(std::ostream& os) const; @@ -694,6 +699,7 @@ struct CodeBlob { std::unique_ptr* cur_ops; std::stack*> cur_ops_stack; int flags = 0; + bool require_callxargs = false; CodeBlob(TypeExpr* ret = nullptr) : var_cnt(0), in_var_cnt(0), op_cnt(0), ret_type(ret), cur_ops(&ops) { } template @@ -1177,7 +1183,7 @@ struct AsmOpList { } template AsmOpList& add(Args&&... args) { - list_.emplace_back(std::forward(args)...); + append(AsmOp(std::forward(args)...)); adjust_last(); return *this; } @@ -1564,8 +1570,8 @@ struct Stack { AsmOpList& o; enum { _StkCmt = 1, _CptStkCmt = 2, _DisableOpt = 4, _DisableOut = 128, _Shown = 256, - _InlineFunc = 512, _NeedRetAlt = 1024, - _ModeSave = _InlineFunc | _NeedRetAlt, + _InlineFunc = 512, _NeedRetAlt = 1024, _InlineAny = 2048, + _ModeSave = _InlineFunc | _NeedRetAlt | _InlineAny, _Garbage = -0x10000 }; int mode; @@ -1612,7 +1618,7 @@ struct Stack { if (i > 255) { throw src::Fatal{"Too deep stack"}; } - assert(i >= 0 && i < depth() && "invalid stack reference"); + func_assert(i >= 0 && i < depth() && "invalid stack reference"); } void modified() { mode &= ~_Shown; @@ -1643,14 +1649,24 @@ struct Stack { bool operator==(const Stack& y) const & { return s == y.s; } - void apply_wrappers() { + void apply_wrappers(int callxargs_count) { + bool is_inline = mode & _InlineFunc; if (o.retalt_) { o.insert(0, "SAMEALTSAVE"); o.insert(0, "c2 SAVE"); - if (mode & _InlineFunc) { - o.indent_all(); - o.insert(0, "CONT:<{"); - o << "}>"; + } + if (callxargs_count != -1 || (is_inline && o.retalt_)) { + o.indent_all(); + o.insert(0, "CONT:<{"); + o << "}>"; + if (callxargs_count != -1) { + if (callxargs_count <= 15) { + o << AsmOp::Custom(PSTRING() << callxargs_count << " -1 CALLXARGS"); + } else { + func_assert(callxargs_count <= 254); + o << AsmOp::Custom(PSTRING() << callxargs_count << " PUSHINT -1 PUSHINT CALLXVARARGS"); + } + } else { o << "EXECUTE"; } } diff --git a/crypto/func/gen-abscode.cpp b/crypto/func/gen-abscode.cpp index 6af8e5b8..9989d10c 100644 --- a/crypto/func/gen-abscode.cpp +++ b/crypto/func/gen-abscode.cpp @@ -92,7 +92,7 @@ bool Expr::deduce_type(const Lexem& lem) { return true; } case _VarApply: { - assert(args.size() == 2); + func_assert(args.size() == 2); TypeExpr* fun_type = TypeExpr::new_map(args[1]->e_type, TypeExpr::new_hole()); try { unify(fun_type, args[0]->e_type); @@ -107,7 +107,7 @@ bool Expr::deduce_type(const Lexem& lem) { return true; } case _Letop: { - assert(args.size() == 2); + func_assert(args.size() == 2); try { // std::cerr << "in assignment: " << args[0]->e_type << " from " << args[1]->e_type << std::endl; unify(args[0]->e_type, args[1]->e_type); @@ -122,7 +122,7 @@ bool Expr::deduce_type(const Lexem& lem) { return true; } case _LetFirst: { - assert(args.size() == 2); + func_assert(args.size() == 2); TypeExpr* rhs_type = TypeExpr::new_tensor({args[0]->e_type, TypeExpr::new_hole()}); try { // std::cerr << "in implicit assignment of a modifying method: " << rhs_type << " and " << args[1]->e_type << std::endl; @@ -140,7 +140,7 @@ bool Expr::deduce_type(const Lexem& lem) { return true; } case _CondExpr: { - assert(args.size() == 3); + func_assert(args.size() == 3); auto flag_type = TypeExpr::new_atomic(_Int); try { unify(args[0]->e_type, flag_type); @@ -204,7 +204,7 @@ int Expr::predefine_vars() { } case _Var: if (!sym) { - assert(val < 0 && here.defined()); + func_assert(val < 0 && here.defined()); if (prohibited_var_names.count(sym::symbols.get_name(~val))) { throw src::ParseError{ here, PSTRING() << "symbol `" << sym::symbols.get_name(~val) << "` cannot be redefined as a variable"}; @@ -274,7 +274,7 @@ std::vector pre_compile_tensor(const std::vector args, CodeBl arg_order.resize(args.size()); std::iota(arg_order.begin(), arg_order.end(), 0); } - assert(args.size() == arg_order.size()); + func_assert(args.size() == arg_order.size()); std::vector> res_lists(args.size()); struct ModifiedVar { @@ -310,7 +310,7 @@ std::vector pre_compile_tensor(const std::vector args, CodeBl } for (const auto& list : res_lists) { for (var_idx_t v : list) { - assert(!code.vars.at(v).on_modification.empty()); + func_assert(!code.vars.at(v).on_modification.empty()); code.vars.at(v).on_modification.pop_back(); } } @@ -339,7 +339,7 @@ std::vector Expr::pre_compile(CodeBlob& code, std::vector(sym->value); std::vector res; if (func && func->arg_order.size() == args.size() && !(code.flags & CodeBlob::_ComputeAsmLtr)) { @@ -426,7 +426,7 @@ std::vector Expr::pre_compile(CodeBlob& code, std::vectorpre_compile(code); - assert(cond.size() == 1); + func_assert(cond.size() == 1); auto rvect = new_tmp_vect(code); Op& if_op = code.emplace_back(here, Op::_If, cond); code.push_set_cur(if_op.block0); diff --git a/crypto/func/optimize.cpp b/crypto/func/optimize.cpp index f8dc3d82..74bb97ec 100644 --- a/crypto/func/optimize.cpp +++ b/crypto/func/optimize.cpp @@ -61,9 +61,9 @@ void Optimizer::apply() { if (!p_ && !q_) { return; } - assert(p_ > 0 && p_ <= l_ && q_ >= 0 && q_ <= n && l_ <= n); + func_assert(p_ > 0 && p_ <= l_ && q_ >= 0 && q_ <= n && l_ <= n); for (int i = p_; i < l_; i++) { - assert(op_[i]); + func_assert(op_[i]); op_cons_[i]->car = std::move(op_[i]); op_cons_[i] = nullptr; } @@ -71,7 +71,7 @@ void Optimizer::apply() { code_ = std::move(code_->cdr); } for (int j = q_ - 1; j >= 0; j--) { - assert(oq_[j]); + func_assert(oq_[j]); oq_[j]->indent = indent_; code_ = AsmOpCons::cons(std::move(oq_[j]), std::move(code_)); } @@ -246,7 +246,7 @@ bool Optimizer::rewrite_const_push_xchgs() { } show_left(); auto c_op = std::move(op_[0]); - assert(c_op->is_gconst()); + func_assert(c_op->is_gconst()); StackTransform t; q_ = 0; int pos = 0; @@ -265,31 +265,31 @@ bool Optimizer::rewrite_const_push_xchgs() { if (b > pos) { oq_[q_]->b = b - 1; } - assert(apply_op(t, *oq_[q_])); + func_assert(apply_op(t, *oq_[q_])); ++q_; } } else { - assert(op_[i]->is_push(&a)); - assert(a != pos); + func_assert(op_[i]->is_push(&a)); + func_assert(a != pos); oq_[q_] = std::move(op_[i]); if (a > pos) { oq_[q_]->a = a - 1; } - assert(apply_op(t, *oq_[q_])); + func_assert(apply_op(t, *oq_[q_])); ++q_; ++pos; } } - assert(!pos); + func_assert(!pos); t.apply_push_newconst(); - assert(t <= tr_[p_ - 1]); + func_assert(t <= tr_[p_ - 1]); oq_[q_++] = std::move(c_op); show_right(); return true; } bool Optimizer::rewrite(int p, AsmOp&& new_op) { - assert(p > 0 && p <= l_); + func_assert(p > 0 && p <= l_); p_ = p; q_ = 1; show_left(); @@ -300,7 +300,7 @@ bool Optimizer::rewrite(int p, AsmOp&& new_op) { } bool Optimizer::rewrite(int p, AsmOp&& new_op1, AsmOp&& new_op2) { - assert(p > 1 && p <= l_); + func_assert(p > 1 && p <= l_); p_ = p; q_ = 2; show_left(); @@ -313,7 +313,7 @@ bool Optimizer::rewrite(int p, AsmOp&& new_op1, AsmOp&& new_op2) { } bool Optimizer::rewrite(int p, AsmOp&& new_op1, AsmOp&& new_op2, AsmOp&& new_op3) { - assert(p > 2 && p <= l_); + func_assert(p > 2 && p <= l_); p_ = p; q_ = 3; show_left(); @@ -328,7 +328,7 @@ bool Optimizer::rewrite(int p, AsmOp&& new_op1, AsmOp&& new_op2, AsmOp&& new_op3 } bool Optimizer::rewrite_nop() { - assert(p_ > 0 && p_ <= l_); + func_assert(p_ > 0 && p_ <= l_); q_ = 0; show_left(); show_right(); diff --git a/crypto/func/parse-func.cpp b/crypto/func/parse-func.cpp index 06c695bf..15794c42 100644 --- a/crypto/func/parse-func.cpp +++ b/crypto/func/parse-func.cpp @@ -399,7 +399,7 @@ bool check_global_func(const Lexem& cur, sym_idx_t func_name = 0) { cur.loc.show_error(std::string{"undefined function `"} + symbols.get_name(func_name) + "`, defining a global function of unknown type"); def = sym::define_global_symbol(func_name, 0, cur.loc); - assert(def && "cannot define global function"); + func_assert(def && "cannot define global function"); ++undef_func_cnt; make_new_glob_func(def, TypeExpr::new_func()); // was: ... ::new_func() return true; @@ -1111,6 +1111,7 @@ blk_fl::val parse_do_stmt(Lexer& lex, CodeBlob& code) { } blk_fl::val parse_try_catch_stmt(Lexer& lex, CodeBlob& code) { + code.require_callxargs = true; lex.expect(_Try); Op& try_catch_op = code.emplace_back(lex.cur().loc, Op::_TryCatch); code.push_set_cur(try_catch_op.block0); @@ -1132,7 +1133,7 @@ blk_fl::val parse_try_catch_stmt(Lexer& lex, CodeBlob& code) { expr->predefine_vars(); expr->define_new_vars(code); try_catch_op.left = expr->pre_compile(code); - assert(try_catch_op.left.size() == 2); + func_assert(try_catch_op.left.size() == 2 || try_catch_op.left.size() == 1); blk_fl::val res1 = parse_block_stmt(lex, code); sym::close_scope(lex); code.close_pop_cur(lex.cur().loc); @@ -1295,7 +1296,7 @@ SymValAsmFunc* parse_asm_func_body(Lexer& lex, TypeExpr* func_type, const Formal } lex.next(); } - assert(arg_order.size() == (unsigned)tot_width); + func_assert(arg_order.size() == (unsigned)tot_width); } if (lex.tp() == _Mapsto) { lex.expect(_Mapsto); @@ -1487,7 +1488,7 @@ void parse_func_def(Lexer& lex) { std::cerr << "function " << func_name.str << " : " << func_type << std::endl; } SymDef* func_sym = sym::define_global_symbol(func_name.val, 0, loc); - assert(func_sym); + func_assert(func_sym); SymValFunc* func_sym_val = dynamic_cast(func_sym->value); if (func_sym->value) { if (func_sym->value->type != SymVal::_Func || !func_sym_val) { diff --git a/crypto/func/stack-transform.cpp b/crypto/func/stack-transform.cpp index 4d9b6a5f..b5290608 100644 --- a/crypto/func/stack-transform.cpp +++ b/crypto/func/stack-transform.cpp @@ -183,7 +183,7 @@ bool StackTransform::is_permutation() const { if (!is_valid() || d) { return false; } - assert(n <= max_n); + func_assert(n <= max_n); std::array X, Y; for (int i = 0; i < n; i++) { X[i] = A[i].first; diff --git a/crypto/func/unify-types.cpp b/crypto/func/unify-types.cpp index dfa1f602..f9b639c0 100644 --- a/crypto/func/unify-types.cpp +++ b/crypto/func/unify-types.cpp @@ -132,7 +132,7 @@ void TypeExpr::replace_with(TypeExpr* te2) { } bool TypeExpr::remove_indirect(TypeExpr*& te, TypeExpr* forbidden) { - assert(te); + func_assert(te); while (te->constr == te_Indirect) { te = te->args[0]; } @@ -147,8 +147,8 @@ bool TypeExpr::remove_indirect(TypeExpr*& te, TypeExpr* forbidden) { } std::vector TypeExpr::remove_forall(TypeExpr*& te) { - assert(te && te->constr == te_ForAll); - assert(te->args.size() >= 1); + func_assert(te && te->constr == te_ForAll); + func_assert(te->args.size() >= 1); std::vector new_vars; for (std::size_t i = 1; i < te->args.size(); i++) { new_vars.push_back(new_hole(1)); @@ -162,8 +162,8 @@ std::vector TypeExpr::remove_forall(TypeExpr*& te) { } bool TypeExpr::remove_forall_in(TypeExpr*& te, TypeExpr* te2, const std::vector& new_vars) { - assert(te); - assert(te2 && te2->constr == te_ForAll); + func_assert(te); + func_assert(te2 && te2->constr == te_ForAll); if (te->constr == te_Var) { for (std::size_t i = 0; i < new_vars.size(); i++) { if (te == te2->args[i + 1]) { @@ -277,7 +277,7 @@ std::ostream& TypeExpr::print(std::ostream& os, int lex_level) { return os << "]"; } case te_Map: { - assert(args.size() == 2); + func_assert(args.size() == 2); if (lex_level > 0) { os << "("; } @@ -290,7 +290,7 @@ std::ostream& TypeExpr::print(std::ostream& os, int lex_level) { return os; } case te_ForAll: { - assert(args.size() >= 1); + func_assert(args.size() >= 1); if (lex_level > 0) { os << '('; } @@ -343,11 +343,11 @@ void check_update_widths(TypeExpr* te1, TypeExpr* te2) { check_width_compat(te1, te2); te1->minw = te2->minw = std::max(te1->minw, te2->minw); te1->maxw = te2->maxw = std::min(te1->maxw, te2->maxw); - assert(te1->minw <= te1->maxw); + func_assert(te1->minw <= te1->maxw); } void unify(TypeExpr*& te1, TypeExpr*& te2) { - assert(te1 && te2); + func_assert(te1 && te2); // std::cerr << "unify( " << te1 << " , " << te2 << " )\n"; while (te1->constr == TypeExpr::te_Indirect) { te1 = te1->args[0]; @@ -390,7 +390,7 @@ void unify(TypeExpr*& te1, TypeExpr*& te2) { } if (te1->constr == TypeExpr::te_Unknown) { if (te2->constr == TypeExpr::te_Unknown) { - assert(te1->value != te2->value); + func_assert(te1->value != te2->value); } if (!TypeExpr::remove_indirect(te2, te1)) { throw UnifyError{te1, te2, "type unification results in an infinite cyclic type"}; From dad980ed09b7aec0c395751cb5671c716b3f5ae2 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Mon, 15 May 2023 16:35:23 +0300 Subject: [PATCH 29/42] Fix STSLICECONST, bump Asm.fif version to 0.4.4 (#700) --- crypto/fift/lib/Asm.fif | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/fift/lib/Asm.fif b/crypto/fift/lib/Asm.fif index 937358e0..64b85009 100644 --- a/crypto/fift/lib/Asm.fif +++ b/crypto/fift/lib/Asm.fif @@ -2,7 +2,7 @@ library TVM_Asm // simple TVM Assembler namespace Asm Asm definitions -"0.4.3" constant asm-fif-version +"0.4.4" constant asm-fif-version variable @atend variable @was-split @@ -578,7 +578,7 @@ x{CF3F} @Defop BCHKBITREFSQ x{CF40} @Defop STZEROES x{CF41} @Defop STONES x{CF42} @Defop STSAME -{ tuck sbitrefs swap 15 + swap @havebitrefs not +{ tuck sbitrefs swap 22 + swap @havebitrefs not { swap PUSHSLICE STSLICER } { over sbitrefs 2dup 57 3 2x<= { rot x{CFC_} s, swap 2 u, over 6 + 3 >> tuck 3 u, 3 roll s, From d5cd5485025fd8389aea99c1831a4fc587071509 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Tue, 16 May 2023 13:28:23 +0300 Subject: [PATCH 30/42] Add 2023.05 changelog --- Changelog.md | 9 +++++++++ recent_changelog.md | 14 ++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Changelog.md b/Changelog.md index 9fd649c4..0f0cd833 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,12 @@ +## 2023.05 Update +1. Archive manager optimization +2. A series of catchain (basic consensus protocol) security improvements +3. Update for Fift libraries and FunC: better error-handling, fixes for `catch` stack recovery +4. A series of out message queue handling optimization (already deployed during emergency upgrades between releases) +5. Improvement of binaries portability + +Besides the work of the core team, this update is based on the efforts of @aleksej-paschenko (portability improvement), [Disintar team](https://github.com/disintar/) (archive manager optimization) and [sec3-service](https://github.com/sec3-service) security auditors (funC improvements). + ## 2023.04 Update 1. CPU load optimization: previous DHT reconnect policy was too aggressive 2. Network throughput improvements: granular control on external message broadcast, optimize celldb GC, adjust state serialization and block downloading timings, rldp2 for states and archives diff --git a/recent_changelog.md b/recent_changelog.md index 59297669..39ca5c94 100644 --- a/recent_changelog.md +++ b/recent_changelog.md @@ -1,6 +1,8 @@ -## 03.2023 Update -1. Improvement of ADNL connection stability -2. Transaction emulator support and getAccountStateByTransaction method -3. Fixes of typos, undefined behavior and timer warnings -4. Handling incorrect integer literal values in funC; funC version bumped to 0.4.2 -5. FunC Mathlib \ No newline at end of file +## 2023.05 Update +1. Archive manager optimization +2. A series of catchain (basic consensus protocol) security improvements +3. Update for Fift libraries and FunC: better error-handling, fixes for `catch` stack recovery +4. A series of out message queue handling optimization (already deployed during emergency upgrades between releases) +5. Improvement of binaries portability + +Besides the work of the core team, this update is based on the efforts of @aleksej-paschenko (portability improvement), [Disintar team](https://github.com/disintar/) (archive manager optimization) and [sec3-service](https://github.com/sec3-service) security auditors (funC improvements). From ef64b92f087a41c5dc9c74085bdab152856039a6 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Thu, 18 May 2023 11:26:02 +0300 Subject: [PATCH 31/42] Add fee burning and blackhole address (#703) * Fix tlbc crash * Burn specified fraction of fees * Add "blackhole" for burning TONs --------- Co-authored-by: SpyCheese --- crypto/block/block.cpp | 68 +++++++++++++++++++----------- crypto/block/block.h | 5 ++- crypto/block/block.tlb | 18 ++++++++ crypto/block/mc-config.cpp | 32 +++++++++++--- crypto/block/mc-config.h | 17 ++++++++ crypto/block/transaction.cpp | 7 +++ crypto/block/transaction.h | 2 + crypto/tl/tlbc.cpp | 2 +- validator/impl/collator.cpp | 20 ++++++++- validator/impl/top-shard-descr.cpp | 10 ++--- validator/impl/validate-query.cpp | 60 +++++++++++++++++++------- validator/impl/validate-query.hpp | 3 +- 12 files changed, 187 insertions(+), 57 deletions(-) diff --git a/crypto/block/block.cpp b/crypto/block/block.cpp index e1790cbf..1131213c 100644 --- a/crypto/block/block.cpp +++ b/crypto/block/block.cpp @@ -1364,42 +1364,61 @@ std::ostream& operator<<(std::ostream& os, const CurrencyCollection& cc) { bool ValueFlow::set_zero() { return from_prev_blk.set_zero() && to_next_blk.set_zero() && imported.set_zero() && exported.set_zero() && fees_collected.set_zero() && fees_imported.set_zero() && recovered.set_zero() && created.set_zero() && - minted.set_zero(); + minted.set_zero() && burned.set_zero(); } bool ValueFlow::validate() const { return is_valid() && from_prev_blk + imported + fees_imported + created + minted + recovered == - to_next_blk + exported + fees_collected; + to_next_blk + exported + fees_collected + burned; } bool ValueFlow::store(vm::CellBuilder& cb) const { vm::CellBuilder cb2; - return cb.store_long_bool(block::gen::ValueFlow::cons_tag[0], 32) // value_flow ^[ - && from_prev_blk.store(cb2) // from_prev_blk:CurrencyCollection - && to_next_blk.store(cb2) // to_next_blk:CurrencyCollection - && imported.store(cb2) // imported:CurrencyCollection - && exported.store(cb2) // exported:CurrencyCollection - && cb.store_ref_bool(cb2.finalize()) // ] - && fees_collected.store(cb) // fees_collected:CurrencyCollection - && fees_imported.store(cb2) // ^[ fees_imported:CurrencyCollection - && recovered.store(cb2) // recovered:CurrencyCollection - && created.store(cb2) // created:CurrencyCollection - && minted.store(cb2) // minted:CurrencyCollection - && cb.store_ref_bool(cb2.finalize()); // ] = ValueFlow; + auto type = burned.is_zero() ? block::gen::ValueFlow::value_flow : block::gen::ValueFlow::value_flow_v2; + return cb.store_long_bool(block::gen::ValueFlow::cons_tag[type], 32) // ^[ + && from_prev_blk.store(cb2) // from_prev_blk:CurrencyCollection + && to_next_blk.store(cb2) // to_next_blk:CurrencyCollection + && imported.store(cb2) // imported:CurrencyCollection + && exported.store(cb2) // exported:CurrencyCollection + && cb.store_ref_bool(cb2.finalize()) // ] + && fees_collected.store(cb) // fees_collected:CurrencyCollection + && (burned.is_zero() || burned.store(cb)) // fees_burned:CurrencyCollection + && fees_imported.store(cb2) // ^[ fees_imported:CurrencyCollection + && recovered.store(cb2) // recovered:CurrencyCollection + && created.store(cb2) // created:CurrencyCollection + && minted.store(cb2) // minted:CurrencyCollection + && cb.store_ref_bool(cb2.finalize()); // ] = ValueFlow; } bool ValueFlow::fetch(vm::CellSlice& cs) { - block::gen::ValueFlow::Record f; - if (!(tlb::unpack(cs, f) && from_prev_blk.validate_unpack(std::move(f.r1.from_prev_blk)) && - to_next_blk.validate_unpack(std::move(f.r1.to_next_blk)) && - imported.validate_unpack(std::move(f.r1.imported)) && exported.validate_unpack(std::move(f.r1.exported)) && - fees_collected.validate_unpack(std::move(f.fees_collected)) && - fees_imported.validate_unpack(std::move(f.r2.fees_imported)) && - recovered.validate_unpack(std::move(f.r2.recovered)) && created.validate_unpack(std::move(f.r2.created)) && - minted.validate_unpack(std::move(f.r2.minted)))) { + if (cs.size() < 32) { return invalidate(); } - return true; + auto tag = cs.prefetch_ulong(32); + block::gen::ValueFlow::Record_value_flow f1; + if (tag == block::gen::ValueFlow::cons_tag[block::gen::ValueFlow::value_flow] && tlb::unpack(cs, f1) && + from_prev_blk.validate_unpack(std::move(f1.r1.from_prev_blk)) && + to_next_blk.validate_unpack(std::move(f1.r1.to_next_blk)) && + imported.validate_unpack(std::move(f1.r1.imported)) && exported.validate_unpack(std::move(f1.r1.exported)) && + fees_collected.validate_unpack(std::move(f1.fees_collected)) && burned.set_zero() && + fees_imported.validate_unpack(std::move(f1.r2.fees_imported)) && + recovered.validate_unpack(std::move(f1.r2.recovered)) && created.validate_unpack(std::move(f1.r2.created)) && + minted.validate_unpack(std::move(f1.r2.minted))) { + return true; + } + block::gen::ValueFlow::Record_value_flow_v2 f2; + if (tag == block::gen::ValueFlow::cons_tag[block::gen::ValueFlow::value_flow_v2] && tlb::unpack(cs, f2) && + from_prev_blk.validate_unpack(std::move(f2.r1.from_prev_blk)) && + to_next_blk.validate_unpack(std::move(f2.r1.to_next_blk)) && + imported.validate_unpack(std::move(f2.r1.imported)) && exported.validate_unpack(std::move(f2.r1.exported)) && + fees_collected.validate_unpack(std::move(f2.fees_collected)) && + burned.validate_unpack(std::move(f2.burned)) && + fees_imported.validate_unpack(std::move(f2.r2.fees_imported)) && + recovered.validate_unpack(std::move(f2.r2.recovered)) && created.validate_unpack(std::move(f2.r2.created)) && + minted.validate_unpack(std::move(f2.r2.minted))) { + return true; + } + return invalidate(); } bool ValueFlow::unpack(Ref csr) { @@ -1424,7 +1443,8 @@ bool ValueFlow::show(std::ostream& os) const { show_one(os, " to_next_blk:", to_next_blk) && show_one(os, " imported:", imported) && show_one(os, " exported:", exported) && show_one(os, " fees_collected:", fees_collected) && show_one(os, " fees_imported:", fees_imported) && show_one(os, " recovered:", recovered) && - show_one(os, " created:", created) && show_one(os, " minted:", minted) && say(os, ")")) || + show_one(os, " created:", created) && show_one(os, " minted:", minted) && + (burned.is_zero() || show_one(os, " burned:", burned)) && say(os, ")")) || (say(os, "...)") && false); } diff --git a/crypto/block/block.h b/crypto/block/block.h index f5b47a63..19d99e6a 100644 --- a/crypto/block/block.h +++ b/crypto/block/block.h @@ -456,7 +456,7 @@ struct ShardState { struct ValueFlow { struct SetZero {}; CurrencyCollection from_prev_blk, to_next_blk, imported, exported, fees_collected, fees_imported, recovered, created, - minted; + minted, burned; ValueFlow() = default; ValueFlow(SetZero) : from_prev_blk{0} @@ -467,7 +467,8 @@ struct ValueFlow { , fees_imported{0} , recovered{0} , created{0} - , minted{0} { + , minted{0} + , burned{0} { } bool is_valid() const { return from_prev_blk.is_valid() && minted.is_valid(); diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index 6ab03508..6b9473ca 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -472,6 +472,19 @@ value_flow#b8e48dfb ^[ from_prev_blk:CurrencyCollection minted:CurrencyCollection ] = ValueFlow; +value_flow_v2#3ebf98b7 ^[ from_prev_blk:CurrencyCollection + to_next_blk:CurrencyCollection + imported:CurrencyCollection + exported:CurrencyCollection ] + fees_collected:CurrencyCollection + burned:CurrencyCollection + ^[ + fees_imported:CurrencyCollection + recovered:CurrencyCollection + created:CurrencyCollection + minted:CurrencyCollection + ] = ValueFlow; + // // bt_leaf$0 {X:Type} leaf:X = BinTree X; @@ -595,6 +608,11 @@ _ minter_addr:bits256 = ConfigParam 2; // ConfigParam 0 is used if absent _ fee_collector_addr:bits256 = ConfigParam 3; // ConfigParam 1 is used if absent _ dns_root_addr:bits256 = ConfigParam 4; // root TON DNS resolver +burning_config#01 + blackhole_addr:(Maybe bits256) + fee_burn_nom:# fee_burn_denom:# { fee_burn_nom <= fee_burn_denom } { fee_burn_denom >= 1 } = BurningConfig; +_ BurningConfig = ConfigParam 5; + _ mint_new_price:Grams mint_add_price:Grams = ConfigParam 6; _ to_mint:ExtraCurrencyCollection = ConfigParam 7; diff --git a/crypto/block/mc-config.cpp b/crypto/block/mc-config.cpp index 9b43075a..e94ff0a4 100644 --- a/crypto/block/mc-config.cpp +++ b/crypto/block/mc-config.cpp @@ -855,11 +855,12 @@ Ref McShardHash::from_block(Ref block_root, const ton::Fi ton::RootHash rhash = block_root->get_hash().bits(); CurrencyCollection fees_collected, funds_created; if (init_fees) { - block::gen::ValueFlow::Record flow; - if (!(tlb::unpack_cell(rec.value_flow, flow) && fees_collected.unpack(flow.fees_collected) && - funds_created.unpack(flow.r2.created))) { + block::ValueFlow flow; + if (!flow.unpack(vm::load_cell_slice_ref(rec.value_flow))) { return {}; } + fees_collected = flow.fees_collected; + funds_created = flow.created; } return Ref(true, ton::BlockId{ton::ShardIdFull(shard), (unsigned)info.seq_no}, info.start_lt, info.end_lt, info.gen_utime, rhash, fhash, fees_collected, funds_created, ~0U, @@ -909,11 +910,12 @@ Ref McShardDescr::from_block(Ref block_root, Refget_hash().bits(); CurrencyCollection fees_collected, funds_created; if (init_fees) { - block::gen::ValueFlow::Record flow; - if (!(tlb::unpack_cell(rec.value_flow, flow) && fees_collected.unpack(flow.fees_collected) && - funds_created.unpack(flow.r2.created))) { + block::ValueFlow flow; + if (!flow.unpack(vm::load_cell_slice_ref(rec.value_flow))) { return {}; } + fees_collected = flow.fees_collected; + funds_created = flow.created; } auto res = Ref(true, ton::BlockId{ton::ShardIdFull(shard), (unsigned)info.seq_no}, info.start_lt, info.end_lt, info.gen_utime, rhash, fhash, fees_collected, funds_created, ~0U, @@ -1954,6 +1956,24 @@ std::unique_ptr Config::get_suspended_addresses(ton::UnixTime no return std::make_unique(rec.addresses->prefetch_ref(), 288); } +BurningConfig Config::get_burning_config() const { + td::Ref param = get_config_param(5); + gen::BurningConfig::Record rec; + if (param.is_null() || !tlb::unpack_cell(param, rec)) { + return {}; + } + BurningConfig c; + c.fee_burn_nom = rec.fee_burn_nom; + c.fee_burn_denom = rec.fee_burn_denom; + vm::CellSlice& addr = rec.blackhole_addr.write(); + if (addr.fetch_long(1)) { + td::Bits256 x; + addr.fetch_bits_to(x.bits(), 256); + c.blackhole_addr = x; + } + return c; +} + td::Result> Config::unpack_validator_set_start_stop(Ref vset_root) { if (vset_root.is_null()) { return td::Status::Error("validator set absent"); diff --git a/crypto/block/mc-config.h b/crypto/block/mc-config.h index aca21475..c56be474 100644 --- a/crypto/block/mc-config.h +++ b/crypto/block/mc-config.h @@ -504,6 +504,22 @@ class ShardConfig { bool set_shard_info(ton::ShardIdFull shard, Ref value); }; +struct BurningConfig { + td::optional blackhole_addr; + td::uint32 fee_burn_nom = 0, fee_burn_denom = 1; + + td::RefInt256 calculate_burned_fees(const td::RefInt256& x) const { + if (x.is_null()) { + return x; + } + return x * fee_burn_nom / td::make_refint(fee_burn_denom); + } + + CurrencyCollection calculate_burned_fees(const CurrencyCollection& x) const { + return CurrencyCollection{calculate_burned_fees(x.grams)}; + } +}; + class Config { enum { default_mc_catchain_lifetime = 200, @@ -617,6 +633,7 @@ class Config { std::vector compute_total_validator_set(int next) const; td::Result get_size_limits_config() const; std::unique_ptr get_suspended_addresses(ton::UnixTime now) const; + BurningConfig get_burning_config() const; static std::vector do_compute_validator_set(const block::CatchainValidatorsConfig& ccv_conf, ton::ShardIdFull shard, const block::ValidatorSet& vset, ton::UnixTime time, diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 1a8f111c..0a02d6fd 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -672,6 +672,12 @@ bool Transaction::unpack_input_msg(bool ihr_delivered, const ActionPhaseConfig* return false; } total_fees += in_fwd_fee; + if (account.workchain == ton::masterchainId && cfg->mc_blackhole_addr && + cfg->mc_blackhole_addr.value() == account.addr) { + blackhole_burned.grams = msg_balance_remaining.grams; + msg_balance_remaining.grams = td::zero_refint(); + LOG(DEBUG) << "Burning " << blackhole_burned.grams << " nanoton (blackhole address)"; + } return true; } @@ -2618,6 +2624,7 @@ td::Status FetchConfigParams::fetch_config_params(const block::Config& config, action_phase_cfg->workchains = &config.get_workchain_list(); action_phase_cfg->bounce_msg_body = (config.has_capability(ton::capBounceMsgBody) ? 256 : 0); action_phase_cfg->size_limits = size_limits; + action_phase_cfg->mc_blackhole_addr = config.get_burning_config().blackhole_addr; } { // fetch block_grams_created diff --git a/crypto/block/transaction.h b/crypto/block/transaction.h index 6346ddcd..bc5adff2 100644 --- a/crypto/block/transaction.h +++ b/crypto/block/transaction.h @@ -153,6 +153,7 @@ struct ActionPhaseConfig { MsgPrices fwd_mc; // from/to masterchain SizeLimitsConfig size_limits; const WorkchainSet* workchains{nullptr}; + td::optional mc_blackhole_addr; const MsgPrices& fetch_msg_prices(bool is_masterchain) const { return is_masterchain ? fwd_mc : fwd_std; } @@ -332,6 +333,7 @@ struct Transaction { td::RefInt256 due_payment; td::RefInt256 in_fwd_fee, msg_fwd_fees; block::CurrencyCollection total_fees{0}; + block::CurrencyCollection blackhole_burned{0}; ton::UnixTime last_paid; Ref root; Ref new_total_state; diff --git a/crypto/tl/tlbc.cpp b/crypto/tl/tlbc.cpp index 01b8a31a..409ac538 100644 --- a/crypto/tl/tlbc.cpp +++ b/crypto/tl/tlbc.cpp @@ -1998,7 +1998,7 @@ TypeExpr* parse_anonymous_constructor(Lexer& lex, Constructor& cs) { if (types[i].parent_type_idx >= 0) { types[i].parent_type_idx = -2; } - delete cs2; + cs2->~Constructor(); return TypeExpr::mk_apply_empty(lex.cur().loc, 0, &types[i]); } } diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index 34dfca61..db86cef1 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -1393,7 +1393,13 @@ bool Collator::import_new_shard_top_blocks() { } LOG(INFO) << "total fees_imported = " << value_flow_.fees_imported.to_str() << " ; out of them, total fees_created = " << import_created_.to_str(); - value_flow_.fees_collected += value_flow_.fees_imported; + block::CurrencyCollection burned = + config_->get_burning_config().calculate_burned_fees(value_flow_.fees_imported - import_created_); + if (!burned.is_valid()) { + return fatal_error("cannot calculate amount of burned imported fees"); + } + value_flow_.burned += burned; + value_flow_.fees_collected += value_flow_.fees_imported - burned; return true; } @@ -2208,6 +2214,7 @@ Ref Collator::create_ordinary_transaction(Ref msg_root) { register_new_msgs(*trans); update_max_lt(acc->last_trans_end_lt_); + value_flow_.burned += trans->blackhole_burned; return trans_root; } @@ -3733,7 +3740,16 @@ bool Collator::compute_total_balance() { LOG(ERROR) << "cannot unpack CurrencyCollection from the root of OutMsgDescr"; return false; } - value_flow_.fees_collected += new_transaction_fees + new_import_fees; + block::CurrencyCollection total_fees = new_transaction_fees + new_import_fees; + value_flow_.fees_collected += total_fees; + if (is_masterchain()) { + block::CurrencyCollection burned = config_->get_burning_config().calculate_burned_fees(total_fees); + if (!burned.is_valid()) { + return fatal_error("cannot calculate amount of burned masterchain fees"); + } + value_flow_.fees_collected -= burned; + value_flow_.burned += burned; + } // 3. compute total_validator_fees total_validator_fees_ += value_flow_.fees_collected; total_validator_fees_ -= value_flow_.recovered; diff --git a/validator/impl/top-shard-descr.cpp b/validator/impl/top-shard-descr.cpp index c6e00edf..8ff8862d 100644 --- a/validator/impl/top-shard-descr.cpp +++ b/validator/impl/top-shard-descr.cpp @@ -62,12 +62,10 @@ td::Status ShardTopBlockDescrQ::unpack_one_proof(BlockIdExt& cur_id, Refget_workchain_list(); action_phase_cfg_.bounce_msg_body = (config_->has_capability(ton::capBounceMsgBody) ? 256 : 0); action_phase_cfg_.size_limits = size_limits; + action_phase_cfg_.mc_blackhole_addr = config_->get_burning_config().blackhole_addr; } { // fetch block_grams_created @@ -2161,6 +2162,11 @@ bool ValidateQuery::unpack_precheck_value_flow(Ref value_flow_root) { return reject_query("ValueFlow of block "s + id_.to_str() + " is invalid (non-zero recovered value in a non-masterchain block)"); } + if (!is_masterchain() && !value_flow_.burned.is_zero()) { + LOG(INFO) << "invalid value flow: " << os.str(); + return reject_query("ValueFlow of block "s + id_.to_str() + + " is invalid (non-zero burned value in a non-masterchain block)"); + } if (!value_flow_.recovered.is_zero() && recover_create_msg_.is_null()) { return reject_query("ValueFlow of block "s + id_.to_str() + " has a non-zero recovered fees value, but there is no recovery InMsg"); @@ -2243,15 +2249,10 @@ bool ValidateQuery::unpack_precheck_value_flow(Ref value_flow_root) { "cannot unpack CurrencyCollection with total transaction fees from the augmentation of the ShardAccountBlocks " "dictionary"); } - auto expected_fees = value_flow_.fees_imported + value_flow_.created + transaction_fees_ + import_fees_; - if (value_flow_.fees_collected != expected_fees) { - return reject_query(PSTRING() << "ValueFlow for " << id_.to_str() << " declares fees_collected=" - << value_flow_.fees_collected.to_str() << " but the total message import fees are " - << import_fees_ << ", the total transaction fees are " << transaction_fees_.to_str() - << ", creation fee for this block is " << value_flow_.created.to_str() - << " and the total imported fees from shards are " - << value_flow_.fees_imported.to_str() << " with a total of " - << expected_fees.to_str()); + if (is_masterchain()) { + auto x = config_->get_burning_config().calculate_burned_fees(transaction_fees_ + import_fees_); + fees_burned_ += x; + total_burned_ += x; } return true; } @@ -4564,6 +4565,7 @@ bool ValidateQuery::check_one_transaction(block::Account& account, ton::LogicalT << "transaction " << lt << " of " << addr.to_hex() << " is invalid: it has produced a set of outbound messages different from that listed in the transaction"); } + total_burned_ += trs->blackhole_burned; // check new balance and value flow auto new_balance = account.get_balance(); block::CurrencyCollection total_fees; @@ -4571,12 +4573,14 @@ bool ValidateQuery::check_one_transaction(block::Account& account, ton::LogicalT return reject_query(PSTRING() << "transaction " << lt << " of " << addr.to_hex() << " has an invalid total_fees value"); } - if (old_balance + money_imported != new_balance + money_exported + total_fees) { - return reject_query(PSTRING() << "transaction " << lt << " of " << addr.to_hex() - << " violates the currency flow condition: old balance=" << old_balance.to_str() - << " + imported=" << money_imported.to_str() << " does not equal new balance=" - << new_balance.to_str() << " + exported=" << money_exported.to_str() - << " + total_fees=" << total_fees.to_str()); + if (old_balance + money_imported != new_balance + money_exported + total_fees + trs->blackhole_burned) { + return reject_query( + PSTRING() << "transaction " << lt << " of " << addr.to_hex() + << " violates the currency flow condition: old balance=" << old_balance.to_str() + << " + imported=" << money_imported.to_str() << " does not equal new balance=" << new_balance.to_str() + << " + exported=" << money_exported.to_str() << " + total_fees=" << total_fees.to_str() + << (trs->blackhole_burned.is_zero() ? "" + : PSTRING() << " burned=" << trs->blackhole_burned.to_str())); } return true; } @@ -5447,6 +5451,9 @@ bool ValidateQuery::check_mc_block_extra() { return reject_query("invalid fees_imported in value flow: declared "s + value_flow_.fees_imported.to_str() + ", correct value is " + fees_imported.to_str()); } + auto x = config_->get_burning_config().calculate_burned_fees(fees_imported - import_created_); + total_burned_ += x; + fees_burned_ += x; // ^[ prev_blk_signatures:(HashmapE 16 CryptoSignaturePair) if (prev_signatures_.not_null() && id_.seqno() == 1) { return reject_query("block contains non-empty signature set for the zero state of the masterchain"); @@ -5464,6 +5471,26 @@ bool ValidateQuery::check_mc_block_extra() { return true; } +bool ValidateQuery::postcheck_value_flow() { + auto expected_fees = + value_flow_.fees_imported + value_flow_.created + transaction_fees_ + import_fees_ - fees_burned_; + if (value_flow_.fees_collected != expected_fees) { + return reject_query(PSTRING() << "ValueFlow for " << id_.to_str() << " declares fees_collected=" + << value_flow_.fees_collected.to_str() << " but the total message import fees are " + << import_fees_ << ", the total transaction fees are " << transaction_fees_.to_str() + << ", creation fee for this block is " << value_flow_.created.to_str() + << ", the total imported fees from shards are " << value_flow_.fees_imported.to_str() + << " and the burned fees are " << fees_burned_.to_str() + << " with a total of " << expected_fees.to_str()); + } + if (total_burned_ != value_flow_.burned) { + return reject_query(PSTRING() << "invalid burned in value flow: " << id_.to_str() << " declared " + << value_flow_.burned.to_str() << ", correct value is " + << total_burned_.to_str()); + } + return true; +} + /* * * MAIN VALIDATOR FUNCTION @@ -5565,6 +5592,9 @@ bool ValidateQuery::try_validate() { if (!check_mc_state_extra()) { return reject_query("new McStateExtra is invalid"); } + if (!postcheck_value_flow()) { + return reject_query("new ValueFlow is invalid"); + } } catch (vm::VmError& err) { return fatal_error(-666, err.get_msg()); } catch (vm::VmVirtError& err) { diff --git a/validator/impl/validate-query.hpp b/validator/impl/validate-query.hpp index 4ef02c86..13a05ec4 100644 --- a/validator/impl/validate-query.hpp +++ b/validator/impl/validate-query.hpp @@ -217,7 +217,7 @@ class ValidateQuery : public td::actor::Actor { std::unique_ptr in_msg_dict_, out_msg_dict_, account_blocks_dict_; block::ValueFlow value_flow_; - block::CurrencyCollection import_created_, transaction_fees_; + block::CurrencyCollection import_created_, transaction_fees_, total_burned_{0}, fees_burned_{0}; td::RefInt256 import_fees_; ton::LogicalTime proc_lt_{0}, claimed_proc_lt_{0}, min_enq_lt_{~0ULL}; @@ -361,6 +361,7 @@ class ValidateQuery : public td::actor::Actor { bool check_one_prev_dict_update(ton::BlockSeqno seqno, Ref old_val_extra, Ref new_val_extra); bool check_mc_state_extra(); + bool postcheck_value_flow(); td::Status check_counter_update(const block::DiscountedCounter& oc, const block::DiscountedCounter& nc, unsigned expected_incr); bool check_one_block_creator_update(td::ConstBitPtr key, Ref old_val, Ref new_val); From 148688572f0acad7ce25927a0c27e6e8073097e4 Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Fri, 19 May 2023 02:24:24 -0500 Subject: [PATCH 32/42] Fix static linking of libcxx on macOS, more portable tonlibjson (#694) * upgrade nix to 22.11 * add static libcxx * fix darwin dylib names * make sure static libs are inside dylib * apply patches only for darwin * apply patches only for darwin * apply patches only for darwin * test builds * test builds 2, remove dependency corefoundation * test builds 3, update flake.lock * test builds 4 * test builds 5, dontAddStaticConfigureFlags only for darwin * test builds 6, put back CoreFoundation flag * improve testing --- .github/workflows/ton-aarch64-linux.yml | 1 + .github/workflows/ton-aarch64-macos.yml | 1 + .github/workflows/ton-x86-64-linux.yml | 1 + .github/workflows/ton-x86-64-macos.yml | 1 + flake.lock | 44 +++++++++++++++++-------- flake.nix | 25 ++++++++++---- 6 files changed, 54 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ton-aarch64-linux.yml b/.github/workflows/ton-aarch64-linux.yml index 83ad8694..ac0d68a5 100644 --- a/.github/workflows/ton-aarch64-linux.yml +++ b/.github/workflows/ton-aarch64-linux.yml @@ -36,6 +36,7 @@ jobs: - name: Simple binaries test run: | + sudo mv /nix/store /nix/store2 artifacts/validator-engine -V artifacts/lite-client -V artifacts/fift -V diff --git a/.github/workflows/ton-aarch64-macos.yml b/.github/workflows/ton-aarch64-macos.yml index 855ffa6c..8ef4b2b2 100644 --- a/.github/workflows/ton-aarch64-macos.yml +++ b/.github/workflows/ton-aarch64-macos.yml @@ -33,6 +33,7 @@ jobs: - name: Simple binaries test run: | + sudo mv /nix/store /nix/store2 artifacts/validator-engine -V artifacts/lite-client -V artifacts/fift -V diff --git a/.github/workflows/ton-x86-64-linux.yml b/.github/workflows/ton-x86-64-linux.yml index 0af0051b..7043d054 100644 --- a/.github/workflows/ton-x86-64-linux.yml +++ b/.github/workflows/ton-x86-64-linux.yml @@ -35,6 +35,7 @@ jobs: - name: Simple binaries test run: | + sudo mv /nix/store /nix/store2 artifacts/validator-engine -V artifacts/lite-client -V artifacts/fift -V diff --git a/.github/workflows/ton-x86-64-macos.yml b/.github/workflows/ton-x86-64-macos.yml index 9d490997..8175a366 100644 --- a/.github/workflows/ton-x86-64-macos.yml +++ b/.github/workflows/ton-x86-64-macos.yml @@ -31,6 +31,7 @@ jobs: - name: Simple binaries test run: | + sudo mv /nix/store /nix/store2 artifacts/validator-engine -V artifacts/lite-client -V artifacts/fift -V diff --git a/flake.lock b/flake.lock index 9a8b67eb..ca44d4c0 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -17,12 +17,15 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "owner": "numtide", "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", "type": "github" }, "original": { @@ -33,11 +36,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1659445012, - "narHash": "sha256-n8/7npmp3hLbPSTRHPW8EPO8qh9vJ10RgkRM3Ve4vfc=", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a9f66ae640146ac16b6e33d2359e9171b27b0993", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { @@ -49,11 +52,11 @@ }, "nixpkgs-trunk": { "locked": { - "lastModified": 1659597264, - "narHash": "sha256-aI/r4XEZwMJnuDjIMnSiDm34vVXP6TPaWgqPIF/65SI=", + "lastModified": 1683098912, + "narHash": "sha256-bFHOixPoHZ5y44FvFgpEuZV0UYTQPNDZK/XqeUi1Lbs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2b22614150a727a8aeedc10395dbd2ff6430841b", + "rev": "abc97d3572dec126eba9fec358eb2f359a944683", "type": "github" }, "original": { @@ -69,8 +72,23 @@ "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-trunk": "nixpkgs-trunk" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", "version": 7 -} +} \ No newline at end of file diff --git a/flake.nix b/flake.nix index d3fca85c..36849ddf 100644 --- a/flake.nix +++ b/flake.nix @@ -31,12 +31,16 @@ openssl_1_1 zlib libmicrohttpd - ] else - [ + ] else [ (openssl_1_1.override { static = true; }).dev (zlib.override { shared = false; }).dev - pkgsStatic.libmicrohttpd.dev - ] ++ optional staticGlibc glibc.static; + ] + ++ optionals (!stdenv.isDarwin) [ pkgsStatic.libmicrohttpd.dev ] + ++ optionals stdenv.isDarwin [ (libiconv.override { enableStatic = true; enableShared = false; }) ] + ++ optionals stdenv.isDarwin (forEach [ libmicrohttpd.dev gmp.dev nettle.dev (gnutls.override { withP11-kit = false; }).dev libtasn1.dev libidn2.dev libunistring.dev gettext ] (x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" ]; dontDisableStatic = true; }))) + ++ optionals staticGlibc [ glibc.static ]; + + dontAddStaticConfigureFlags = stdenv.isDarwin; cmakeFlags = [ "-DTON_USE_ABSEIL=OFF" "-DNIX=ON" ] ++ optionals staticMusl [ "-DCMAKE_CROSSCOMPILING=OFF" # pkgsStatic sets cross @@ -47,6 +51,7 @@ LDFLAGS = optional staticExternalDeps (concatStringsSep " " [ (optionalString stdenv.cc.isGNU "-static-libgcc") + (optionalString stdenv.isDarwin "-framework CoreFoundation") "-static-libstdc++" ]); @@ -57,6 +62,14 @@ moveToOutput bin "$bin" ''; + preFixup = optionalString stdenv.isDarwin '' + for fn in "$bin"/bin/* "$out"/lib/*.dylib; do + echo Fixing libc++ in "$fn" + install_name_tool -change "$(otool -L "$fn" | grep libc++.1 | cut -d' ' -f1 | xargs)" libc++.1.dylib "$fn" + install_name_tool -change "$(otool -L "$fn" | grep libc++abi.1 | cut -d' ' -f1 | xargs)" libc++abi.dylib "$fn" + done + ''; + outputs = [ "bin" "out" ]; }; hostPkgs = system: @@ -131,10 +144,10 @@ }; ton-staticbin-dylib = host.symlinkJoin { name = "ton"; - paths = [ ton-static.bin ton-normal.out ]; + paths = [ ton-static.bin ton-static.out ]; }; }; devShells.default = host.mkShell { inputsFrom = [ packages.ton-normal ]; }; }))); -} +} \ No newline at end of file From b76eff2ddbfae877133e9c71bb2e368c055321f9 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Fri, 19 May 2023 16:09:10 +0300 Subject: [PATCH 33/42] Adjust storage-provider.fc fees --- storage/storage-daemon/smartcont/storage-provider.fc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/storage-daemon/smartcont/storage-provider.fc b/storage/storage-daemon/smartcont/storage-provider.fc index dce2ea6b..07d6b563 100644 --- a/storage/storage-daemon/smartcont/storage-provider.fc +++ b/storage/storage-daemon/smartcont/storage-provider.fc @@ -2,7 +2,7 @@ #include "constants.fc"; -const min_deploy_amount = 50000000; +const min_deploy_amount = 60000000; ;; cell storage_contract_code() asm """ "storage-contract-code.boc" file>B B>boc PUSHREF """; ;; the same constant but more "compiler" friendly From 506cd5ee36686bdecf24e8f4c2e5fab4955939e0 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 24 May 2023 10:29:34 +0300 Subject: [PATCH 34/42] Update storage-provider compilled smartcontracts --- .../smartcont/storage-provider-code.boc | Bin 1380 -> 1380 bytes .../smartcont/storage-provider.fif | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/storage-daemon/smartcont/storage-provider-code.boc b/storage/storage-daemon/smartcont/storage-provider-code.boc index b2f96a42272fd52ab71607dd44e9da3375364340..e331154ff1decb12e6c110aea8f2eb5a74147664 100644 GIT binary patch delta 14 WcmaFD^@MA}F6Ji>4{Y4KoCN?m_Xo%T delta 14 WcmaFD^@MA}F6MoE6gKW%&H?~5?*`of diff --git a/storage/storage-daemon/smartcont/storage-provider.fif b/storage/storage-daemon/smartcont/storage-provider.fif index c4503485..d926c1c6 100644 --- a/storage/storage-daemon/smartcont/storage-provider.fif +++ b/storage/storage-daemon/smartcont/storage-provider.fif @@ -143,7 +143,7 @@ PROGRAM{ IFJMP:<{ // msg_value sender_address op query_id in_msg_body s2 POP // msg_value sender_address in_msg_body query_id s0 s3 XCHG - 50000000 PUSHINT // query_id sender_address in_msg_body msg_value _29=50000000 + 60000000 PUSHINT // query_id sender_address in_msg_body msg_value _29=60000000 GEQ // query_id sender_address in_msg_body _30 1001 THROWIFNOT LDREF // query_id sender_address torrent_info in_msg_body From 86623b4ceaf2354425b950023a895fcd56bafe9a Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Wed, 24 May 2023 10:39:15 +0100 Subject: [PATCH 35/42] Enable more verbose TVM stack dump (#669) * Verbose stack dump * Move vm::VmLog::DumpStack and vm::VmLog::DumpStackVerbose to the next verbosity levels --- crypto/block/transaction.cpp | 8 ++++- crypto/smc-envelope/SmartContract.cpp | 8 ++++- crypto/vm/continuation.cpp | 48 +++++++++++++++++++++++++++ crypto/vm/continuation.h | 12 +++++++ crypto/vm/log.h | 2 +- crypto/vm/stack.cpp | 43 ++++++++++++++++++------ crypto/vm/stack.hpp | 6 ++-- crypto/vm/vm.cpp | 6 +++- 8 files changed, 116 insertions(+), 17 deletions(-) diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index 0a02d6fd..fe359993 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -1081,7 +1081,13 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { if (cfg.vm_log_verbosity > 1) { vm_log.log_mask |= vm::VmLog::ExecLocation; if (cfg.vm_log_verbosity > 2) { - vm_log.log_mask |= vm::VmLog::DumpStack | vm::VmLog::GasRemaining; + vm_log.log_mask |= vm::VmLog::GasRemaining; + if (cfg.vm_log_verbosity > 3) { + vm_log.log_mask |= vm::VmLog::DumpStack; + if (cfg.vm_log_verbosity > 4) { + vm_log.log_mask |= vm::VmLog::DumpStackVerbose; + } + } } } } diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 7ba768a4..4103096c 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -185,7 +185,13 @@ SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref 1) { log.log_mask |= vm::VmLog::ExecLocation; if (vm_log_verbosity > 2) { - log.log_mask |= vm::VmLog::DumpStack | vm::VmLog::GasRemaining; + log.log_mask |= vm::VmLog::GasRemaining; + if (vm_log_verbosity > 3) { + log.log_mask |= vm::VmLog::DumpStack; + if (vm_log_verbosity > 4) { + log.log_mask |= vm::VmLog::DumpStackVerbose; + } + } } } diff --git a/crypto/vm/continuation.cpp b/crypto/vm/continuation.cpp index 94d20125..dc3ad5e9 100644 --- a/crypto/vm/continuation.cpp +++ b/crypto/vm/continuation.cpp @@ -22,6 +22,8 @@ #include "vm/log.h" #include "vm/vm.h" #include "vm/vmstate.h" +#include "vm/boc.h" +#include "td/utils/misc.h" namespace vm { @@ -254,6 +256,16 @@ bool Continuation::deserialize_to(Ref cell, Ref& cont, int m return deserialize_to(cs, cont, mode & ~0x1000) && cs.empty_ext(); } +std::ostream& operator<<(std::ostream& os, const Continuation& cont) { + CellBuilder cb; + if (cont.serialize(cb)) { + auto boc = vm::std_boc_serialize(cb.finalize()); + if (boc.is_ok()) { + os << td::buffer_to_hex(boc.move_as_ok().as_slice()); + } + } +} + bool QuitCont::serialize(CellBuilder& cb) const { // vmc_quit$1000 exit_code:int32 = VmCont; return cb.store_long_bool(8, 4) && cb.store_long_bool(exit_code, 32); @@ -269,6 +281,10 @@ Ref QuitCont::deserialize(CellSlice& cs, int mode) { } } +std::string QuitCont::type() const { + return "vmc_quit"; +} + int ExcQuitCont::jump(VmState* st) const & { int n = 0; try { @@ -280,6 +296,10 @@ int ExcQuitCont::jump(VmState* st) const & { return ~n; } +std::string ExcQuitCont::type() const { + return "vmc_quit_exc"; +} + bool ExcQuitCont::serialize(CellBuilder& cb) const { // vmc_quit_exc$1001 = VmCont; return cb.store_long_bool(9, 4); @@ -302,6 +322,10 @@ int PushIntCont::jump_w(VmState* st) & { return st->jump(std::move(next)); } +std::string PushIntCont::type() const { + return "vmc_pushint"; +} + bool PushIntCont::serialize(CellBuilder& cb) const { // vmc_pushint$1111 value:int32 next:^VmCont = VmCont; return cb.store_long_bool(15, 4) && cb.store_long_bool(push_val, 32) && next->serialize_ref(cb); @@ -353,6 +377,10 @@ Ref ArgContExt::deserialize(CellSlice& cs, int mode) { : Ref{}; } +std::string ArgContExt::type() const { + return "vmc_envelope"; +} + int RepeatCont::jump(VmState* st) const & { VM_LOG(st) << "repeat " << count << " more times (slow)\n"; if (count <= 0) { @@ -401,6 +429,10 @@ Ref RepeatCont::deserialize(CellSlice& cs, int mode) { } } +std::string RepeatCont::type() const { + return "vmc_repeat"; +} + int VmState::repeat(Ref body, Ref after, long long count) { if (count <= 0) { body.clear(); @@ -444,6 +476,10 @@ Ref AgainCont::deserialize(CellSlice& cs, int mode) { } } +std::string AgainCont::type() const { + return "vmc_again"; +} + int VmState::again(Ref body) { return jump(Ref{true, std::move(body)}); } @@ -493,6 +529,10 @@ Ref UntilCont::deserialize(CellSlice& cs, int mode) { } } +std::string UntilCont::type() const { + return "vmc_until"; +} + int VmState::until(Ref body, Ref after) { if (!body->has_c0()) { set_c0(Ref{true, body, std::move(after)}); @@ -575,6 +615,10 @@ Ref WhileCont::deserialize(CellSlice& cs, int mode) { } } +std::string WhileCont::type() const { + return chkcond ? "vmc_while_cond" : "vmc_while_body"; +} + int VmState::loop_while(Ref cond, Ref body, Ref after) { if (!cond->has_c0()) { set_c0(Ref{true, cond, std::move(body), std::move(after), true}); @@ -610,4 +654,8 @@ Ref OrdCont::deserialize(CellSlice& cs, int mode) { : Ref{}; } +std::string OrdCont::type() const { + return "vmc_std"; +} + } // namespace vm diff --git a/crypto/vm/continuation.h b/crypto/vm/continuation.h index 37abe869..8208fc16 100644 --- a/crypto/vm/continuation.h +++ b/crypto/vm/continuation.h @@ -191,8 +191,11 @@ class Continuation : public td::CntObject { return (cont = deserialize(cs, mode)).not_null(); } static bool deserialize_to(Ref cell, Ref& cont, int mode = 0); + virtual std::string type() const = 0; }; +std::ostream& operator<<(std::ostream& os, const Continuation& cont); + class QuitCont : public Continuation { int exit_code; @@ -205,6 +208,7 @@ class QuitCont : public Continuation { } bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class ExcQuitCont : public Continuation { @@ -214,6 +218,7 @@ class ExcQuitCont : public Continuation { int jump(VmState* st) const & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class PushIntCont : public Continuation { @@ -228,6 +233,7 @@ class PushIntCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class RepeatCont : public Continuation { @@ -243,6 +249,7 @@ class RepeatCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class AgainCont : public Continuation { @@ -256,6 +263,7 @@ class AgainCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class UntilCont : public Continuation { @@ -269,6 +277,7 @@ class UntilCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class WhileCont : public Continuation { @@ -284,6 +293,7 @@ class WhileCont : public Continuation { int jump_w(VmState* st) & override; bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class ArgContExt : public Continuation { @@ -315,6 +325,7 @@ class ArgContExt : public Continuation { } bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; class OrdCont : public Continuation { @@ -369,6 +380,7 @@ class OrdCont : public Continuation { } bool serialize(CellBuilder& cb) const override; static Ref deserialize(CellSlice& cs, int mode = 0); + std::string type() const override; }; ControlData* force_cdata(Ref& cont); diff --git a/crypto/vm/log.h b/crypto/vm/log.h index b62ada5e..dc0199b5 100644 --- a/crypto/vm/log.h +++ b/crypto/vm/log.h @@ -31,7 +31,7 @@ namespace vm { struct VmLog { td::LogInterface *log_interface{td::log_interface}; td::LogOptions log_options{td::log_options}; - enum { DumpStack = 2, ExecLocation = 4, GasRemaining = 8 }; + enum { DumpStack = 2, ExecLocation = 4, GasRemaining = 8, DumpStackVerbose = 16 }; int log_mask{1}; static VmLog Null() { VmLog res; diff --git a/crypto/vm/stack.cpp b/crypto/vm/stack.cpp index e82b25de..18589812 100644 --- a/crypto/vm/stack.cpp +++ b/crypto/vm/stack.cpp @@ -21,6 +21,8 @@ #include "vm/box.hpp" #include "vm/atom.h" #include "vm/vmstate.h" +#include "vm/boc.h" +#include "td/utils/misc.h" namespace td { template class td::Cnt; @@ -81,7 +83,7 @@ std::string StackEntry::to_lisp_string() const { return std::move(os).str(); } -void StackEntry::dump(std::ostream& os) const { +void StackEntry::dump(std::ostream& os, bool verbose) const { switch (tp) { case t_null: os << "(null)"; @@ -91,14 +93,23 @@ void StackEntry::dump(std::ostream& os) const { break; case t_cell: if (ref.not_null()) { - os << "C{" << static_cast>(ref)->get_hash().to_hex() << "}"; + if (verbose) { + std::string serialized = "???"; + auto boc = vm::std_boc_serialize(as_cell()); + if (boc.is_ok()) { + serialized = td::buffer_to_hex(boc.move_as_ok().as_slice()); + } + os << "C{" << serialized << "}"; + } else { + os << "C{" << *as_cell() << "}"; + } } else { os << "C{null}"; } break; case t_builder: if (ref.not_null()) { - os << "BC{" << static_cast>(ref)->to_hex() << "}"; + os << "BC{" << *as_builder() << "}"; } else { os << "BC{null}"; } @@ -149,12 +160,24 @@ void StackEntry::dump(std::ostream& os) const { os << "Object{" << (const void*)&*ref << "}"; break; } + case t_vmcont: { + if (ref.not_null()) { + if (verbose) { + os << "Cont{" << *as_cont() << "}"; + } else { + os << "Cont{" << as_cont()->type() << "}"; + } + } else { + os << "Cont{null}"; + } + break; + } default: os << "???"; } } -void StackEntry::print_list(std::ostream& os) const { +void StackEntry::print_list(std::ostream& os, bool verbose) const { switch (tp) { case t_null: os << "()"; @@ -163,7 +186,7 @@ void StackEntry::print_list(std::ostream& os) const { const auto& tuple = *static_cast>(ref); if (is_list()) { os << '('; - tuple[0].print_list(os); + tuple[0].print_list(os, verbose); print_list_tail(os, &tuple[1]); break; } @@ -172,7 +195,7 @@ void StackEntry::print_list(std::ostream& os) const { os << "[]"; } else if (n == 1) { os << "["; - tuple[0].print_list(os); + tuple[0].print_list(os, verbose); os << "]"; } else { os << "["; @@ -181,14 +204,14 @@ void StackEntry::print_list(std::ostream& os) const { if (c++) { os << " "; } - entry.print_list(os); + entry.print_list(os, verbose); } os << ']'; } break; } default: - dump(os); + dump(os, verbose); } } @@ -687,12 +710,12 @@ void Stack::dump(std::ostream& os, int mode) const { os << " [ "; if (mode & 2) { for (const auto& x : stack) { - x.print_list(os); + x.print_list(os, mode & 4); os << ' '; } } else { for (const auto& x : stack) { - x.dump(os); + x.dump(os, mode & 4); os << ' '; } } diff --git a/crypto/vm/stack.hpp b/crypto/vm/stack.hpp index bfc9e7ac..69ed107c 100644 --- a/crypto/vm/stack.hpp +++ b/crypto/vm/stack.hpp @@ -292,8 +292,8 @@ class StackEntry { } bool for_each_scalar(const std::function& func) const; void for_each_scalar(const std::function& func) const; - void dump(std::ostream& os) const; - void print_list(std::ostream& os) const; + void dump(std::ostream& os, bool verbose = false) const; + void print_list(std::ostream& os, bool verbose = false) const; std::string to_string() const; std::string to_lisp_string() const; @@ -558,7 +558,7 @@ class Stack : public td::CntObject { } bool for_each_scalar(const std::function& func) const; void for_each_scalar(const std::function& func) const; - // mode: +1 = add eoln, +2 = Lisp-style lists + // mode: +1 = add eoln, +2 = Lisp-style lists, +4 = serialized bocs void dump(std::ostream& os, int mode = 1) const; bool serialize(vm::CellBuilder& cb, int mode = 0) const; bool deserialize(vm::CellSlice& cs, int mode = 0); diff --git a/crypto/vm/vm.cpp b/crypto/vm/vm.cpp index 3baba279..fbea1952 100644 --- a/crypto/vm/vm.cpp +++ b/crypto/vm/vm.cpp @@ -435,7 +435,11 @@ int VmState::step() { CHECK(code.not_null() && stack.not_null()); if (log.log_mask & vm::VmLog::DumpStack) { std::stringstream ss; - stack->dump(ss, 3); + int mode = 3; + if (log.log_mask & vm::VmLog::DumpStackVerbose) { + mode += 4; + } + stack->dump(ss, mode); VM_LOG(this) << "stack:" << ss.str(); } if (stack_trace) { From c527bfecebb35788978b6c3ab1a6e4f6c7c458bd Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Wed, 24 May 2023 10:40:04 +0100 Subject: [PATCH 36/42] Emulator improvements (#687) * ticktock, unixtime, optional config * documentation * fix account.now * emulate tick/tock for emscripten * remove excessive check * limit stack serialization calls --- emulator/emulator-emscripten.cpp | 23 ++++++- emulator/emulator-extern.cpp | 109 +++++++++++++++++++++++++++---- emulator/emulator-extern.h | 33 ++++++++-- emulator/emulator_export_list | 1 + emulator/transaction-emulator.h | 4 ++ emulator/tvm-emulator.hpp | 4 +- 6 files changed, 154 insertions(+), 20 deletions(-) diff --git a/emulator/emulator-emscripten.cpp b/emulator/emulator-emscripten.cpp index 881664bd..66e97f35 100644 --- a/emulator/emulator-emscripten.cpp +++ b/emulator/emulator-emscripten.cpp @@ -12,6 +12,8 @@ struct TransactionEmulationParams { uint64_t lt; td::optional rand_seed_hex; bool ignore_chksig; + bool is_tick_tock; + bool is_tock; bool debug_enabled; }; @@ -41,6 +43,16 @@ td::Result decode_transaction_emulation_params(const TRY_RESULT(debug_enabled, td::get_json_object_bool_field(obj, "debug_enabled", false)); params.debug_enabled = debug_enabled; + TRY_RESULT(is_tick_tock, td::get_json_object_bool_field(obj, "is_tick_tock", true, false)); + params.is_tick_tock = is_tick_tock; + + TRY_RESULT(is_tock, td::get_json_object_bool_field(obj, "is_tock", true, false)); + params.is_tock = is_tock; + + if (is_tock && !is_tick_tock) { + return td::Status::Error("Inconsistent parameters is_tick_tock=false, is_tock=true"); + } + return params; } @@ -137,7 +149,12 @@ const char *emulate(const char *config, const char* libs, int verbosity, const c return strdup(R"({"fail":true,"message":"Can't set params"})"); } - auto tx = transaction_emulator_emulate_transaction(em, account, message); + const char *result; + if (decoded_params.is_tick_tock) { + result = transaction_emulator_emulate_tick_tock_transaction(em, account, decoded_params.is_tock); + } else { + result = transaction_emulator_emulate_transaction(em, account, message); + } transaction_emulator_destroy(em); @@ -145,12 +162,12 @@ const char *emulate(const char *config, const char* libs, int verbosity, const c { td::JsonBuilder jb; auto json_obj = jb.enter_object(); - json_obj("output", td::JsonRaw(td::Slice(tx))); + json_obj("output", td::JsonRaw(td::Slice(result))); json_obj("logs", logger.get_string()); json_obj.leave(); output = strdup(jb.string_builder().as_cslice().c_str()); } - free((void*) tx); + free((void*) result); return output; } diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 31a7b649..c5717dcd 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -8,6 +8,7 @@ #include "transaction-emulator.h" #include "tvm-emulator.hpp" #include "crypto/vm/stack.hpp" +#include "crypto/vm/memo.h" td::Result> boc_b64_to_cell(const char *boc) { TRY_RESULT_PREFIX(boc_decoded, td::base64_decode(td::Slice(boc)), "Can't decode base64 boc: "); @@ -42,6 +43,7 @@ const char *error_response(std::string&& error) { auto json_obj = jb.enter_object(); json_obj("success", td::JsonFalse()); json_obj("error", std::move(error)); + json_obj("external_not_accepted", td::JsonFalse()); json_obj.leave(); return strdup(jb.string_builder().as_cslice().c_str()); } @@ -51,6 +53,7 @@ const char *external_not_accepted_response(std::string&& vm_log, int vm_exit_cod auto json_obj = jb.enter_object(); json_obj("success", td::JsonFalse()); json_obj("error", "External message not accepted by smart contract"); + json_obj("external_not_accepted", td::JsonTrue()); json_obj("vm_log", std::move(vm_log)); json_obj("vm_exit_code", vm_exit_code); json_obj("elapsed_time", elapsed_time); @@ -131,13 +134,16 @@ const char *transaction_emulator_emulate_transaction(void *transaction_emulator, } auto account = block::Account(wc, addr.bits()); - ton::UnixTime now = (unsigned)std::time(nullptr); + ton::UnixTime now = emulator->get_unixtime(); + if (!now) { + now = (unsigned)std::time(nullptr); + } bool is_special = wc == ton::masterchainId && emulator->get_config().is_special_smartcontract(addr); if (!account.unpack(vm::load_cell_slice_ref(shard_account_cell.move_as_ok()), td::Ref(), now, is_special)) { ERROR_RESPONSE(PSTRING() << "Can't unpack shard account"); } - auto result = emulator->emulate_transaction(std::move(account), message_cell, 0, 0, block::transaction::Transaction::tr_ord); + auto result = emulator->emulate_transaction(std::move(account), message_cell, now, 0, block::transaction::Transaction::tr_ord); if (result.is_error()) { ERROR_RESPONSE(PSTRING() << "Emulate transaction failed: " << result.move_as_error()); } @@ -176,6 +182,79 @@ const char *transaction_emulator_emulate_transaction(void *transaction_emulator, std::move(actions_boc_b64), emulation_success.elapsed_time); } +const char *transaction_emulator_emulate_tick_tock_transaction(void *transaction_emulator, const char *shard_account_boc, bool is_tock) { + auto emulator = static_cast(transaction_emulator); + + auto shard_account_cell = boc_b64_to_cell(shard_account_boc); + if (shard_account_cell.is_error()) { + ERROR_RESPONSE(PSTRING() << "Can't deserialize shard account boc: " << shard_account_cell.move_as_error()); + } + auto shard_account_slice = vm::load_cell_slice(shard_account_cell.ok_ref()); + block::gen::ShardAccount::Record shard_account; + if (!tlb::unpack(shard_account_slice, shard_account)) { + ERROR_RESPONSE(PSTRING() << "Can't unpack shard account cell"); + } + + td::Ref addr_slice; + auto account_slice = vm::load_cell_slice(shard_account.account); + if (block::gen::t_Account.get_tag(account_slice) == block::gen::Account::account_none) { + ERROR_RESPONSE(PSTRING() << "Can't run tick/tock transaction on account_none"); + } + block::gen::Account::Record_account account_record; + if (!tlb::unpack(account_slice, account_record)) { + ERROR_RESPONSE(PSTRING() << "Can't unpack account cell"); + } + addr_slice = std::move(account_record.addr); + ton::WorkchainId wc; + ton::StdSmcAddress addr; + if (!block::tlb::t_MsgAddressInt.extract_std_address(addr_slice, wc, addr)) { + ERROR_RESPONSE(PSTRING() << "Can't extract account address"); + } + + auto account = block::Account(wc, addr.bits()); + ton::UnixTime now = emulator->get_unixtime(); + if (!now) { + now = (unsigned)std::time(nullptr); + } + bool is_special = wc == ton::masterchainId && emulator->get_config().is_special_smartcontract(addr); + if (!account.unpack(vm::load_cell_slice_ref(shard_account_cell.move_as_ok()), td::Ref(), now, is_special)) { + ERROR_RESPONSE(PSTRING() << "Can't unpack shard account"); + } + + auto trans_type = is_tock ? block::transaction::Transaction::tr_tock : block::transaction::Transaction::tr_tick; + auto result = emulator->emulate_transaction(std::move(account), {}, now, 0, trans_type); + if (result.is_error()) { + ERROR_RESPONSE(PSTRING() << "Emulate transaction failed: " << result.move_as_error()); + } + auto emulation_result = result.move_as_ok(); + + auto emulation_success = dynamic_cast(*emulation_result); + auto trans_boc_b64 = cell_to_boc_b64(std::move(emulation_success.transaction)); + if (trans_boc_b64.is_error()) { + ERROR_RESPONSE(PSTRING() << "Can't serialize Transaction to boc " << trans_boc_b64.move_as_error()); + } + + auto new_shard_account_cell = vm::CellBuilder().store_ref(emulation_success.account.total_state) + .store_bits(emulation_success.account.last_trans_hash_.as_bitslice()) + .store_long(emulation_success.account.last_trans_lt_).finalize(); + auto new_shard_account_boc_b64 = cell_to_boc_b64(std::move(new_shard_account_cell)); + if (new_shard_account_boc_b64.is_error()) { + ERROR_RESPONSE(PSTRING() << "Can't serialize ShardAccount to boc " << new_shard_account_boc_b64.move_as_error()); + } + + td::optional actions_boc_b64; + if (emulation_success.actions.not_null()) { + auto actions_boc_b64_result = cell_to_boc_b64(std::move(emulation_success.actions)); + if (actions_boc_b64_result.is_error()) { + ERROR_RESPONSE(PSTRING() << "Can't serialize actions list cell to boc " << actions_boc_b64_result.move_as_error()); + } + actions_boc_b64 = actions_boc_b64_result.move_as_ok(); + } + + return success_response(trans_boc_b64.move_as_ok(), new_shard_account_boc_b64.move_as_ok(), std::move(emulation_success.vm_log), + std::move(actions_boc_b64), emulation_success.elapsed_time); +} + bool transaction_emulator_set_unixtime(void *transaction_emulator, uint32_t unixtime) { auto emulator = static_cast(transaction_emulator); @@ -309,16 +388,19 @@ bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixt return false; } - auto config_params_cell = boc_b64_to_cell(config_boc); - if (config_params_cell.is_error()) { - LOG(ERROR) << "Can't deserialize config params boc: " << config_params_cell.move_as_error(); - return false; - } - auto global_config = std::make_shared(config_params_cell.move_as_ok(), td::Bits256::zero(), block::Config::needWorkchainInfo | block::Config::needSpecialSmc); - auto unpack_res = global_config->unpack(); - if (unpack_res.is_error()) { - LOG(ERROR) << "Can't unpack config params"; - return false; + std::shared_ptr global_config; + if (config_boc != nullptr) { + auto config_params_cell = boc_b64_to_cell(config_boc); + if (config_params_cell.is_error()) { + LOG(ERROR) << "Can't deserialize config params boc: " << config_params_cell.move_as_error(); + return false; + } + global_config = std::make_shared(config_params_cell.move_as_ok(), td::Bits256::zero(), block::Config::needWorkchainInfo | block::Config::needSpecialSmc); + auto unpack_res = global_config->unpack(); + if (unpack_res.is_error()) { + LOG(ERROR) << "Can't unpack config params"; + return false; + } } auto rand_seed_hex_slice = td::Slice(rand_seed_hex); @@ -365,6 +447,9 @@ const char *tvm_emulator_run_get_method(void *tvm_emulator, int method_id, const auto emulator = static_cast(tvm_emulator); auto result = emulator->run_get_method(method_id, stack); + vm::FakeVmStateLimits fstate(1000); // limit recursive (de)serialization calls + vm::VmStateInterface::Guard guard(&fstate); + vm::CellBuilder stack_cb; if (!result.stack->serialize(stack_cb)) { ERROR_RESPONSE(PSTRING() << "Couldn't serialize stack"); diff --git a/emulator/emulator-extern.h b/emulator/emulator-extern.h index db59a822..c2b0bf9a 100644 --- a/emulator/emulator-extern.h +++ b/emulator/emulator-extern.h @@ -80,8 +80,9 @@ EMULATOR_EXPORT bool transaction_emulator_set_debug_enabled(void *transaction_em * @return Json object with error: * { * "success": false, - * "error": "Error description" - * // and optional fields "vm_exit_code" and "vm_log" in case external message was not accepted. + * "error": "Error description", + * "external_not_accepted": false, + * // and optional fields "vm_exit_code", "vm_log", "elapsed_time" in case external message was not accepted. * } * Or success: * { @@ -89,11 +90,35 @@ EMULATOR_EXPORT bool transaction_emulator_set_debug_enabled(void *transaction_em * "transaction": "Base64 encoded Transaction boc", * "shard_account": "Base64 encoded new ShardAccount boc", * "vm_log": "execute DUP...", - * "actions": "Base64 encoded compute phase actions boc (OutList n)" + * "actions": "Base64 encoded compute phase actions boc (OutList n)", + * "elapsed_time": 0.02 * } */ EMULATOR_EXPORT const char *transaction_emulator_emulate_transaction(void *transaction_emulator, const char *shard_account_boc, const char *message_boc); +/** + * @brief Emulate tick tock transaction + * @param transaction_emulator Pointer to TransactionEmulator object + * @param shard_account_boc Base64 encoded BoC serialized ShardAccount of special account + * @param is_tock True for tock transactions, false for tick + * @return Json object with error: + * { + * "success": false, + * "error": "Error description", + * "external_not_accepted": false + * } + * Or success: + * { + * "success": true, + * "transaction": "Base64 encoded Transaction boc", + * "shard_account": "Base64 encoded new ShardAccount boc", + * "vm_log": "execute DUP...", + * "actions": "Base64 encoded compute phase actions boc (OutList n)", + * "elapsed_time": 0.02 + * } + */ +EMULATOR_EXPORT const char *transaction_emulator_emulate_tick_tock_transaction(void *transaction_emulator, const char *shard_account_boc, bool is_tock); + /** * @brief Destroy TransactionEmulator object * @param transaction_emulator Pointer to TransactionEmulator object @@ -129,7 +154,7 @@ EMULATOR_EXPORT bool tvm_emulator_set_libraries(void *tvm_emulator, const char * * @param unixtime Unix timestamp * @param balance Smart contract balance * @param rand_seed_hex Random seed as hex string of length 64 - * @param config Base64 encoded BoC serialized Config dictionary (Hashmap 32 ^Cell) + * @param config Base64 encoded BoC serialized Config dictionary (Hashmap 32 ^Cell). Optional. * @return true in case of success, false in case of error */ EMULATOR_EXPORT bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixtime, uint64_t balance, const char *rand_seed_hex, const char *config); diff --git a/emulator/emulator_export_list b/emulator/emulator_export_list index 64d4ff59..950c57a0 100644 --- a/emulator/emulator_export_list +++ b/emulator/emulator_export_list @@ -7,6 +7,7 @@ _transaction_emulator_set_config _transaction_emulator_set_libs _transaction_emulator_set_debug_enabled _transaction_emulator_emulate_transaction +_transaction_emulator_emulate_tick_tock_transaction _transaction_emulator_destroy _emulator_set_verbosity_level _tvm_emulator_create diff --git a/emulator/transaction-emulator.h b/emulator/transaction-emulator.h index 08343cb8..b26f4e8a 100644 --- a/emulator/transaction-emulator.h +++ b/emulator/transaction-emulator.h @@ -59,6 +59,10 @@ public: return config_; } + ton::UnixTime get_unixtime() { + return unixtime_; + } + td::Result> emulate_transaction( block::Account&& account, td::Ref msg_root, ton::UnixTime utime, ton::LogicalTime lt, int trans_type); diff --git a/emulator/tvm-emulator.hpp b/emulator/tvm-emulator.hpp index 0236f0ca..46e2538d 100644 --- a/emulator/tvm-emulator.hpp +++ b/emulator/tvm-emulator.hpp @@ -28,7 +28,9 @@ public: args_.set_now(unixtime); args_.set_balance(balance); args_.set_rand_seed(rand_seed); - args_.set_config(config); + if (config) { + args_.set_config(config); + } } void set_debug_enabled(bool debug_enabled) { From 8839e3a81427fbacb202a4b5156c5b062063e677 Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Wed, 24 May 2023 10:40:21 +0100 Subject: [PATCH 37/42] [tonlib] Limit stack serialization (#693) --- tonlib/tonlib/TonlibClient.cpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index a2dfa9cf..e29d0b08 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -4262,7 +4262,10 @@ bool is_list(vm::StackEntry entry) { entry = entry.as_tuple()->at(1); } }; -auto to_tonlib_api(const vm::StackEntry& entry) -> tonlib_api::object_ptr { +auto to_tonlib_api(const vm::StackEntry& entry, int& limit) -> td::Result> { + if (limit <= 0) { + return td::Status::Error(PSLICE() << "TVM stack size exceeds limit"); + } switch (entry.type()) { case vm::StackEntry::Type::t_int: return tonlib_api::make_object( @@ -4279,7 +4282,8 @@ auto to_tonlib_api(const vm::StackEntry& entry) -> tonlib_api::object_ptrat(0))); + TRY_RESULT(tl_entry, to_tonlib_api(node.as_tuple()->at(0), --limit)); + elements.push_back(std::move(tl_entry)); node = node.as_tuple()->at(1); } return tonlib_api::make_object( @@ -4287,7 +4291,8 @@ auto to_tonlib_api(const vm::StackEntry& entry) -> tonlib_api::object_ptr( tonlib_api::make_object(std::move(elements))); @@ -4299,6 +4304,16 @@ auto to_tonlib_api(const vm::StackEntry& entry) -> tonlib_api::object_ptr& stack) -> td::Result>> { + int stack_limit = 1000; + std::vector> tl_stack; + for (auto& entry: stack->as_span()) { + TRY_RESULT(tl_entry, to_tonlib_api(entry, --stack_limit)); + tl_stack.push_back(std::move(tl_entry)); + } + return tl_stack; +} + td::Result from_tonlib_api(tonlib_api::tvm_StackEntry& entry) { // TODO: error codes // downcast_call @@ -4510,10 +4525,12 @@ void TonlibClient::perform_smc_execution(td::Ref smc, ton::S auto res = smc->run_get_method(args); // smc.runResult gas_used:int53 stack:vector exit_code:int32 = smc.RunResult; - std::vector> res_stack; - for (auto& entry : res.stack->as_span()) { - res_stack.push_back(to_tonlib_api(entry)); + auto R = to_tonlib_api(res.stack); + if (R.is_error()) { + promise.set_error(R.move_as_error()); + return; } + auto res_stack = R.move_as_ok(); if (res.missing_library.not_null()) { td::Bits256 hash = res.missing_library; From d6b11d9d3613963291bcf11dc284776a76be3eb8 Mon Sep 17 00:00:00 2001 From: Marat <98183742+dungeon-master-666@users.noreply.github.com> Date: Wed, 24 May 2023 14:09:29 +0100 Subject: [PATCH 38/42] build fix (#707) --- crypto/vm/continuation.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/crypto/vm/continuation.cpp b/crypto/vm/continuation.cpp index dc3ad5e9..91386980 100644 --- a/crypto/vm/continuation.cpp +++ b/crypto/vm/continuation.cpp @@ -264,6 +264,7 @@ std::ostream& operator<<(std::ostream& os, const Continuation& cont) { os << td::buffer_to_hex(boc.move_as_ok().as_slice()); } } + return os; } bool QuitCont::serialize(CellBuilder& cb) const { From 9f93888cf402f8421fef38406b67886be043ac58 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Wed, 24 May 2023 21:14:13 +0300 Subject: [PATCH 39/42] TVM Upgrade (#686) * New TVM instructions * Remove PREVBLOCKS * Separate target ton_crypto into TVM-related and -unrelared code * Add fine for failed "send message"; rework SENDMSG * Fix include * Fix bugs, improve action fines * Disable fines for special accounts * Handle msg_balance_remaining.grams == null in transaction.cpp * Bugfixes in SENDMSG * Fix fee calculation in SENDMSG * Fix CellStorageStat and transaction.cpp after merge * SETBOUNCEONACTIONPHASEFAIL instruction * ADDDIVMOD instructions * RUNVM, RUNVMX instructions * Changes in RUNVM * Tests for adddiv and runvm * HASHEXT instruction * Improve opcode-timing More iterations Don't measure preliminary run Remove logs and other excessive operations Add "error" to output * Increase RUNVM gas price * Optimize HASHEXT, adjust gas price * Add "bounce of action fail" flag to actions * Stack operations with unlimited arguments * Ristretto255 instructions * Adjust gas consumption * Optional fixed number of return values in RUNVM, fix exception handling * Adjust gas consumption * Simplify gas consumption logic * Support of secp256k1 and sodium libraries in builds (#11) * add support of secp256k1 library to the builds (linux, win) * add support of secp256k1 library to the builds (linux, win) * install secp256k1 via brew * install libsodium via brew; change sodium to upper case in FindSodium.cmake * install libsodium via brew; change sodium to upper case in FindSodium.cmake * simplify FindSodium.cmake * bug fixing * bug fixing * bug fixing * add macro SODIUM_STATIC * adjust build command for windows * put back original FindSodium.cmake * put back original FindSodium.cmake * fix sodium unzipped path for windows; add ninja * fix sodium unzipped path for windows; add ninja * fix sodium unzipped path for windows; add ninja * Win32 github build for secp256k1 * x64 architecture github build for secp256k1 * fix sodium linking on linux * enable docker buildx arm64 builds from forked repos * enable docker buildx arm64 builds from forked repos * enable docker buildx arm64 builds from forked repos * adjust mac builds for secp2561k and sodium * fix tonlib jni generation * minor fix * sync fixes across platforms * add libsodium build script for android and precompiled static libraries * build tonlib for android (fails) * FindSodium uppercase * remove system libsodium for android, use precompiled instead; specify SECP256K1_INCLUDE_DIR fir mac 12.6 * uppercase sodium * simplify FindSodium * fix windows build sodium path; use ninja for windows * simplify sodium 2 * adjust windows sodium paths; add paths to android jni * add ninja build windows * add ninja build windows * add ninja build windows 2 * remove win ninja * fix 1 * fix 2 * fix win 3 * fix linux compile 3 * fix jni 1 * fix jni 2 and mac * fix jni 3 * fix jni 4 * fix jni 5 * fix mac 6 * fix mac 7 and jni paths * fix jni 8 * rework sodium for android * rework sodium for android * rework sodium for android 2 * fixed sodium for android 2 * fixed sodium for android 3 * static secp256k1 for android * add precompiled arm secp256k1 * add precompiled arm secp256k1 * build native-lib with secp256k1 x86-64 (non arm) * update precompiled with NDK libsecp256k1.a * update precompiled with NDK libsecp256k1.a * update precompiled with NDK libsecp256k1.a * refactor llvm-strip location * refactor llvm-strip location * add native-lib.so for armv7a, armv8a * add native-lib.so for armv7a, armv8a * test armv7a, armv8a * armv7a - fails linking on sodium, test -> armv8a * works x86-64, armv7a - fails linking on sodium, armv8a - fails linking secp256k1 (incompatible with aarch64linux) * update libpsec256k1, sodium static libs * test x86 android native-lib * test armv7 android native-lib * test armv8 android native-lib * x86_64 and arm64 android native-lib works * x86_64 and arm64 android native-lib works * x86_64 and arm64 android native-lib works * test armv7 android native-lib * test all android native-libs * test all android native-libs * test all android native-libs * test all android native-libs - without SodiumAndroid * test all android native-libs - with FindSodiumAndroid.cmake * win, with Sodium via SODIUM_DIR * win, with Sodium via SODIUM_DIR env * win, with Sodium via SODIUM_DIR env * win, with Sodium via SODIUM_DIR env and SODIUM_USE_STATIC_LIBS * win, with Sodium via SODIUM_DIR, SODIUM_USE_STATIC_LIBS and SODIUM_INCLUDE_DIR * android, with FindSodium * android, with FindSodium with SODIUM_USE_STATIC_LIBS * remove if not apple * target_link_libraries(ton_crypto_core PUBLIC secp256k1) * android SECP256K1_INCLUDE_DIRS * android SECP256K1_INCLUDE_DIR * add libsecp256k1.a/so pre-compiled with ubuntu 22 x86-64 * add libsecp256k1.a/so pre-compiled with ubuntu 22 x86-64 * sodium dirs * sodium dirs * sodium dirs * remove NOT APPLE and SodiumAndroid * add NOT APPLE and remove SodiumAndroid * add NOT APPLE and remove SodiumAndroid * remove build scripts for 18.04, reduce CMakeLists.txt * remove build scripts for 18.04, reduce CMakeLists.txt * Fix cas consumption during library load * Fix fetch_config_params after merge * Add all ADDDIVMOD ops to Asm.fif * Save unpaid storage fee to due_payment * Add "set prev blocks info" to emulator * Adjusted builds (#13) * Update flake.nix Add libsodium * add libsecp256k1-dev and libsodium-dev into wasm build * make back emulator a shared library; put emulator to artifacts; compile wasm artifacts with sodium and secp256k1. * add secp256k1 to nix * compile emulator statically with nix * compile emulator statically with nix * compile emulator lib statically with nix * compile emulator lib statically with nix * add libemulator to artifacts * add shared libemulator library to artifacts * minor release fix * update set-output commands; add recent_changelog.md * releases fixes * releases fixes, multiline * releases fixes, multiline * releases fixes, multiline * put back multiline changelog * put back multiline changelog * ConfigParam 19 (global-id) and GLOBALID instruction * Fix gas consumption in HASHEXT * Add blst library * Add bls instructions * Allow passing long code to opcode-timing * Add bls testcase * More BLS instructions * Fix tests, add bls tests * Add more bls tests * Improve some bls operations * Adjust some BLS gas prices * Adjust BLS gas prices * Enable __BLST_PORTABLE__ flag only if PORTABLE flag is set * Add tests for BLS_PAIRING * GASCONSUMED instruction * Fix compilation against docker with blst library; (#14) * fix compilation against docker with blst library; add precompiled libblst.a to android builds * minor fix * Adjust BLKSWX gas * Fix comparison with NAN * Allow arbitrary integers for scalars in ristretto multiplication, fix test * Adjust nix builds according to PR 694 (#15) * integrate and test PR-694 * integrate and test PR-694, test 2 * Add P256_CHKSIGN (secp256r1) --------- Co-authored-by: SpyCheese Co-authored-by: neodiX42 --- .github/script/amd64-20.04.Dockerfile | 4 +- .github/script/amd64-22.04.Dockerfile | 4 +- .github/script/arm64-20.04.Dockerfile | 4 +- .github/script/arm64-22.04.Dockerfile | 4 +- .github/script/fift-func-wasm-build-ubuntu.sh | 44 +- .github/workflows/create-release.yml | 2 +- .github/workflows/macos-11.7-compile.yml | 7 +- .github/workflows/macos-12.6-compile.yml | 16 +- .github/workflows/ton-aarch64-linux.yml | 3 +- .github/workflows/ton-aarch64-macos.yml | 1 + .github/workflows/ton-ccpcheck.yml | 2 +- .github/workflows/ton-wasm-emscripten.yml | 2 +- .github/workflows/ton-x86-64-linux.yml | 3 +- .github/workflows/ton-x86-64-macos.yml | 1 + .github/workflows/tonlib-android-jni.yml | 17 +- .github/workflows/ubuntu-22.04-compile.yml | 6 +- .github/workflows/ubuntu-compile.yml | 6 +- .github/workflows/win-2019-compile.yml | 24 +- .gitmodules | 3 + CMake/BuildBLST.cmake | 30 + CMake/FindSecp256k1.cmake | 29 + CMake/FindSodium.cmake | 297 +++++ CMakeLists.txt | 2 + common/CMakeLists.txt | 3 +- common/global-version.h | 24 + crypto/CMakeLists.txt | 161 ++- crypto/block/block.tlb | 4 +- crypto/block/mc-config.cpp | 38 + crypto/block/mc-config.h | 1 + crypto/block/transaction.cpp | 227 +++- crypto/block/transaction.h | 32 +- crypto/ellcurve/p256.cpp | 91 ++ crypto/ellcurve/p256.h | 26 + crypto/ellcurve/secp256k1.cpp | 42 + crypto/ellcurve/secp256k1.h | 23 + crypto/fift/lib/Asm.fif | 113 +- crypto/fift/words.cpp | 7 +- crypto/keccak/keccak.cpp | 473 ++++++++ crypto/keccak/keccak.h | 41 + crypto/test/fift.cpp | 41 +- crypto/test/fift/adddiv.fif | 144 +++ crypto/test/fift/bls.fif | 954 ++++++++++++++++ crypto/test/fift/bls_ops.fif | 215 ++++ crypto/test/fift/deep_stack_ops.fif | 27 + crypto/test/fift/hash_ext.fif | 98 ++ crypto/test/fift/rist255.fif | 89 ++ crypto/test/fift/tvm_runvm.fif | 228 ++++ crypto/vm/Hasher.cpp | 148 +++ crypto/vm/Hasher.h | 58 + crypto/vm/arithops.cpp | 206 +++- crypto/vm/bls.cpp | 334 ++++++ crypto/vm/bls.h | 65 ++ crypto/vm/boc.h | 3 + crypto/vm/contops.cpp | 75 +- crypto/vm/opctable.cpp | 20 + crypto/vm/opctable.h | 18 + crypto/vm/stack.cpp | 2 +- crypto/vm/stack.hpp | 2 +- crypto/vm/stackops.cpp | 39 +- crypto/vm/tonops.cpp | 1012 ++++++++++++++++- crypto/vm/tupleops.cpp | 12 +- crypto/vm/vm.cpp | 175 ++- crypto/vm/vm.h | 94 +- doc/GlobalVersions.md | 39 + docker/Dockerfile | 2 +- emulator/CMakeLists.txt | 2 + emulator/emulator-extern.cpp | 27 + emulator/emulator-extern.h | 8 + emulator/emulator_export_list | 1 + emulator/transaction-emulator.cpp | 6 +- emulator/transaction-emulator.h | 10 +- example/android/CMakeLists.txt | 3 - example/android/README.md | 4 + example/android/build-all.sh | 11 + example/android/build.sh | 49 +- .../android/third_party/blst/armv7/libblst.a | Bin 0 -> 287466 bytes .../android/third_party/blst/armv8/libblst.a | Bin 0 -> 254832 bytes .../android/third_party/blst/i686/libblst.a | Bin 0 -> 337346 bytes .../android/third_party/blst/x86-64/libblst.a | Bin 0 -> 251402 bytes .../android/third_party/libsodium/build.sh | 31 + .../include/sodium.h | 69 ++ .../include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aes256gcm.h | 179 +++ .../sodium/crypto_aead_chacha20poly1305.h | 180 +++ .../sodium/crypto_aead_xchacha20poly1305.h | 100 ++ .../include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 ++ .../include/sodium/crypto_auth_hmacsha512.h | 68 ++ .../sodium/crypto_auth_hmacsha512256.h | 65 ++ .../include/sodium/crypto_box.h | 177 +++ .../crypto_box_curve25519xchacha20poly1305.h | 164 +++ .../crypto_box_curve25519xsalsa20poly1305.h | 112 ++ .../include/sodium/crypto_core_ed25519.h | 100 ++ .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 ++ .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 ++ .../sodium/crypto_generichash_blake2b.h | 118 ++ .../include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kx.h | 66 ++ .../include/sodium/crypto_onetimeauth.h | 65 ++ .../sodium/crypto_onetimeauth_poly1305.h | 72 ++ .../include/sodium/crypto_pwhash.h | 147 +++ .../include/sodium/crypto_pwhash_argon2i.h | 122 ++ .../include/sodium/crypto_pwhash_argon2id.h | 122 ++ .../crypto_pwhash_scryptsalsa208sha256.h | 120 ++ .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 ++ .../crypto_secretbox_xchacha20poly1305.h | 70 ++ .../crypto_secretbox_xsalsa20poly1305.h | 69 ++ .../crypto_secretstream_xchacha20poly1305.h | 108 ++ .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../include/sodium/crypto_sign.h | 107 ++ .../include/sodium/crypto_sign_ed25519.h | 124 ++ .../crypto_sign_edwards25519sha512batch.h | 55 + .../include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 ++ .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../include/sodium/export.h | 57 + .../include/sodium/randombytes.h | 72 ++ .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../include/sodium/runtime.h | 52 + .../include/sodium/utils.h | 179 +++ .../include/sodium/version.h | 33 + .../libsodium-android-armv7-a/lib/libsodium.a | Bin 0 -> 433614 bytes .../lib/libsodium.la | 41 + .../lib/libsodium.so | Bin 0 -> 314464 bytes .../lib/pkgconfig/libsodium.pc | 12 + .../include/sodium.h | 69 ++ .../include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aes256gcm.h | 179 +++ .../sodium/crypto_aead_chacha20poly1305.h | 180 +++ .../sodium/crypto_aead_xchacha20poly1305.h | 100 ++ .../include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 ++ .../include/sodium/crypto_auth_hmacsha512.h | 68 ++ .../sodium/crypto_auth_hmacsha512256.h | 65 ++ .../include/sodium/crypto_box.h | 177 +++ .../crypto_box_curve25519xchacha20poly1305.h | 164 +++ .../crypto_box_curve25519xsalsa20poly1305.h | 112 ++ .../include/sodium/crypto_core_ed25519.h | 100 ++ .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 ++ .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 ++ .../sodium/crypto_generichash_blake2b.h | 118 ++ .../include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kx.h | 66 ++ .../include/sodium/crypto_onetimeauth.h | 65 ++ .../sodium/crypto_onetimeauth_poly1305.h | 72 ++ .../include/sodium/crypto_pwhash.h | 147 +++ .../include/sodium/crypto_pwhash_argon2i.h | 122 ++ .../include/sodium/crypto_pwhash_argon2id.h | 122 ++ .../crypto_pwhash_scryptsalsa208sha256.h | 120 ++ .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 ++ .../crypto_secretbox_xchacha20poly1305.h | 70 ++ .../crypto_secretbox_xsalsa20poly1305.h | 69 ++ .../crypto_secretstream_xchacha20poly1305.h | 108 ++ .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../include/sodium/crypto_sign.h | 107 ++ .../include/sodium/crypto_sign_ed25519.h | 124 ++ .../crypto_sign_edwards25519sha512batch.h | 55 + .../include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 ++ .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../include/sodium/export.h | 57 + .../include/sodium/randombytes.h | 72 ++ .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../include/sodium/runtime.h | 52 + .../include/sodium/utils.h | 179 +++ .../include/sodium/version.h | 33 + .../libsodium-android-armv8-a/lib/libsodium.a | Bin 0 -> 433990 bytes .../lib/libsodium.la | 41 + .../lib/libsodium.so | Bin 0 -> 283928 bytes .../lib/pkgconfig/libsodium.pc | 12 + .../libsodium-android-i686/include/sodium.h | 69 ++ .../include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aes256gcm.h | 179 +++ .../sodium/crypto_aead_chacha20poly1305.h | 180 +++ .../sodium/crypto_aead_xchacha20poly1305.h | 100 ++ .../include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 ++ .../include/sodium/crypto_auth_hmacsha512.h | 68 ++ .../sodium/crypto_auth_hmacsha512256.h | 65 ++ .../include/sodium/crypto_box.h | 177 +++ .../crypto_box_curve25519xchacha20poly1305.h | 164 +++ .../crypto_box_curve25519xsalsa20poly1305.h | 112 ++ .../include/sodium/crypto_core_ed25519.h | 100 ++ .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 ++ .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 ++ .../sodium/crypto_generichash_blake2b.h | 118 ++ .../include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kx.h | 66 ++ .../include/sodium/crypto_onetimeauth.h | 65 ++ .../sodium/crypto_onetimeauth_poly1305.h | 72 ++ .../include/sodium/crypto_pwhash.h | 147 +++ .../include/sodium/crypto_pwhash_argon2i.h | 122 ++ .../include/sodium/crypto_pwhash_argon2id.h | 122 ++ .../crypto_pwhash_scryptsalsa208sha256.h | 120 ++ .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 ++ .../crypto_secretbox_xchacha20poly1305.h | 70 ++ .../crypto_secretbox_xsalsa20poly1305.h | 69 ++ .../crypto_secretstream_xchacha20poly1305.h | 108 ++ .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../include/sodium/crypto_sign.h | 107 ++ .../include/sodium/crypto_sign_ed25519.h | 124 ++ .../crypto_sign_edwards25519sha512batch.h | 55 + .../include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 ++ .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../include/sodium/export.h | 57 + .../include/sodium/randombytes.h | 72 ++ .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../include/sodium/runtime.h | 52 + .../include/sodium/utils.h | 179 +++ .../include/sodium/version.h | 33 + .../libsodium-android-i686/lib/libsodium.a | Bin 0 -> 567114 bytes .../libsodium-android-i686/lib/libsodium.la | 41 + .../libsodium-android-i686/lib/libsodium.so | Bin 0 -> 454172 bytes .../lib/pkgconfig/libsodium.pc | 12 + .../include/sodium.h | 69 ++ .../include/sodium/core.h | 28 + .../include/sodium/crypto_aead_aes256gcm.h | 179 +++ .../sodium/crypto_aead_chacha20poly1305.h | 180 +++ .../sodium/crypto_aead_xchacha20poly1305.h | 100 ++ .../include/sodium/crypto_auth.h | 46 + .../include/sodium/crypto_auth_hmacsha256.h | 70 ++ .../include/sodium/crypto_auth_hmacsha512.h | 68 ++ .../sodium/crypto_auth_hmacsha512256.h | 65 ++ .../include/sodium/crypto_box.h | 177 +++ .../crypto_box_curve25519xchacha20poly1305.h | 164 +++ .../crypto_box_curve25519xsalsa20poly1305.h | 112 ++ .../include/sodium/crypto_core_ed25519.h | 100 ++ .../include/sodium/crypto_core_hchacha20.h | 36 + .../include/sodium/crypto_core_hsalsa20.h | 36 + .../include/sodium/crypto_core_ristretto255.h | 100 ++ .../include/sodium/crypto_core_salsa20.h | 36 + .../include/sodium/crypto_core_salsa2012.h | 36 + .../include/sodium/crypto_core_salsa208.h | 40 + .../include/sodium/crypto_generichash.h | 84 ++ .../sodium/crypto_generichash_blake2b.h | 118 ++ .../include/sodium/crypto_hash.h | 40 + .../include/sodium/crypto_hash_sha256.h | 60 + .../include/sodium/crypto_hash_sha512.h | 60 + .../include/sodium/crypto_kdf.h | 53 + .../include/sodium/crypto_kdf_blake2b.h | 44 + .../include/sodium/crypto_kx.h | 66 ++ .../include/sodium/crypto_onetimeauth.h | 65 ++ .../sodium/crypto_onetimeauth_poly1305.h | 72 ++ .../include/sodium/crypto_pwhash.h | 147 +++ .../include/sodium/crypto_pwhash_argon2i.h | 122 ++ .../include/sodium/crypto_pwhash_argon2id.h | 122 ++ .../crypto_pwhash_scryptsalsa208sha256.h | 120 ++ .../include/sodium/crypto_scalarmult.h | 46 + .../sodium/crypto_scalarmult_curve25519.h | 42 + .../sodium/crypto_scalarmult_ed25519.h | 51 + .../sodium/crypto_scalarmult_ristretto255.h | 43 + .../include/sodium/crypto_secretbox.h | 93 ++ .../crypto_secretbox_xchacha20poly1305.h | 70 ++ .../crypto_secretbox_xsalsa20poly1305.h | 69 ++ .../crypto_secretstream_xchacha20poly1305.h | 108 ++ .../include/sodium/crypto_shorthash.h | 41 + .../sodium/crypto_shorthash_siphash24.h | 50 + .../include/sodium/crypto_sign.h | 107 ++ .../include/sodium/crypto_sign_ed25519.h | 124 ++ .../crypto_sign_edwards25519sha512batch.h | 55 + .../include/sodium/crypto_stream.h | 59 + .../include/sodium/crypto_stream_chacha20.h | 106 ++ .../include/sodium/crypto_stream_salsa20.h | 61 + .../include/sodium/crypto_stream_salsa2012.h | 53 + .../include/sodium/crypto_stream_salsa208.h | 56 + .../include/sodium/crypto_stream_xchacha20.h | 61 + .../include/sodium/crypto_stream_xsalsa20.h | 61 + .../include/sodium/crypto_verify_16.h | 23 + .../include/sodium/crypto_verify_32.h | 23 + .../include/sodium/crypto_verify_64.h | 23 + .../include/sodium/export.h | 57 + .../include/sodium/randombytes.h | 72 ++ .../sodium/randombytes_internal_random.h | 22 + .../include/sodium/randombytes_sysrandom.h | 19 + .../include/sodium/runtime.h | 52 + .../include/sodium/utils.h | 179 +++ .../include/sodium/version.h | 33 + .../lib/libsodium.a | Bin 0 -> 579332 bytes .../lib/libsodium.la | 41 + .../lib/libsodium.so | Bin 0 -> 400864 bytes .../lib/pkgconfig/libsodium.pc | 12 + .../secp256k1/armv7/libsecp256k1.a | Bin 0 -> 134986 bytes .../secp256k1/armv7/libsecp256k1.so | Bin 0 -> 136228 bytes .../secp256k1/armv8/libsecp256k1.a | Bin 0 -> 167026 bytes .../secp256k1/armv8/libsecp256k1.so | Bin 0 -> 164768 bytes .../android/third_party/secp256k1/build.sh | 32 + .../third_party/secp256k1/i686/libsecp256k1.a | Bin 0 -> 427778 bytes .../secp256k1/i686/libsecp256k1.so | Bin 0 -> 386152 bytes .../third_party/secp256k1/include/secp256k1.h | 708 ++++++++++++ .../secp256k1/include/secp256k1_ecdh.h | 55 + .../include/secp256k1_preallocated.h | 128 +++ .../secp256k1/include/secp256k1_recovery.h | 110 ++ .../third_party/secp256k1/libsecp256k1.a | Bin 0 -> 698458 bytes .../third_party/secp256k1/libsecp256k1.so | Bin 0 -> 488416 bytes .../secp256k1/x86-64/libsecp256k1.a | Bin 0 -> 763762 bytes .../secp256k1/x86-64/libsecp256k1.so | Bin 0 -> 657040 bytes flake.nix | 9 +- test/regression-tests.ans | 7 + third-party/blst | 1 + tonlib/CMakeLists.txt | 4 +- tonlib/tonlib/TonlibClient.cpp | 15 +- utils/opcode-timing.cpp | 113 +- validator/impl/collator-impl.h | 3 +- validator/impl/collator.cpp | 4 +- validator/impl/liteserver.cpp | 1 + validator/impl/validate-query.cpp | 17 +- validator/impl/validate-query.hpp | 3 +- 374 files changed, 25800 insertions(+), 387 deletions(-) create mode 100644 CMake/BuildBLST.cmake create mode 100644 CMake/FindSecp256k1.cmake create mode 100644 CMake/FindSodium.cmake create mode 100644 common/global-version.h create mode 100644 crypto/ellcurve/p256.cpp create mode 100644 crypto/ellcurve/p256.h create mode 100644 crypto/ellcurve/secp256k1.cpp create mode 100644 crypto/ellcurve/secp256k1.h create mode 100644 crypto/keccak/keccak.cpp create mode 100644 crypto/keccak/keccak.h create mode 100644 crypto/test/fift/adddiv.fif create mode 100644 crypto/test/fift/bls.fif create mode 100644 crypto/test/fift/bls_ops.fif create mode 100644 crypto/test/fift/deep_stack_ops.fif create mode 100644 crypto/test/fift/hash_ext.fif create mode 100644 crypto/test/fift/rist255.fif create mode 100644 crypto/test/fift/tvm_runvm.fif create mode 100644 crypto/vm/Hasher.cpp create mode 100644 crypto/vm/Hasher.h create mode 100644 crypto/vm/bls.cpp create mode 100644 crypto/vm/bls.h create mode 100644 doc/GlobalVersions.md create mode 100644 example/android/third_party/blst/armv7/libblst.a create mode 100644 example/android/third_party/blst/armv8/libblst.a create mode 100644 example/android/third_party/blst/i686/libblst.a create mode 100644 example/android/third_party/blst/x86-64/libblst.a create mode 100644 example/android/third_party/libsodium/build.sh create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/core.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_aes256gcm.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kx.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2i.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2id.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash_siphash24.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_chacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_16.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_32.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_64.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/export.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_internal_random.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_sysrandom.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/runtime.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/utils.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/version.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.a create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.la create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.so create mode 100644 example/android/third_party/libsodium/libsodium-android-armv7-a/lib/pkgconfig/libsodium.pc create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/core.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_aes256gcm.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kx.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2i.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2id.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash_siphash24.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_chacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_16.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_32.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_64.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/export.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_internal_random.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_sysrandom.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/runtime.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/utils.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/version.h create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.a create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.la create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.so create mode 100644 example/android/third_party/libsodium/libsodium-android-armv8-a/lib/pkgconfig/libsodium.pc create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/core.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_aes256gcm.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kx.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2i.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2id.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash_siphash24.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_chacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_16.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_32.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_64.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/export.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_internal_random.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_sysrandom.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/runtime.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/utils.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/include/sodium/version.h create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.a create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.la create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.so create mode 100644 example/android/third_party/libsodium/libsodium-android-i686/lib/pkgconfig/libsodium.pc create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/core.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_aes256gcm.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_chacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha512.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf_blake2b.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kx.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth_poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2i.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2id.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_scryptsalsa208sha256.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_curve25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ristretto255.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xsalsa20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretstream_xchacha20poly1305.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash_siphash24.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_ed25519.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_edwards25519sha512batch.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_chacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa2012.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa208.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xchacha20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xsalsa20.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_16.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_32.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_64.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/export.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_internal_random.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_sysrandom.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/runtime.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/utils.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/version.h create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.la create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.so create mode 100644 example/android/third_party/libsodium/libsodium-android-westmere/lib/pkgconfig/libsodium.pc create mode 100644 example/android/third_party/secp256k1/armv7/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/armv7/libsecp256k1.so create mode 100644 example/android/third_party/secp256k1/armv8/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/armv8/libsecp256k1.so create mode 100644 example/android/third_party/secp256k1/build.sh create mode 100644 example/android/third_party/secp256k1/i686/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/i686/libsecp256k1.so create mode 100644 example/android/third_party/secp256k1/include/secp256k1.h create mode 100644 example/android/third_party/secp256k1/include/secp256k1_ecdh.h create mode 100644 example/android/third_party/secp256k1/include/secp256k1_preallocated.h create mode 100644 example/android/third_party/secp256k1/include/secp256k1_recovery.h create mode 100644 example/android/third_party/secp256k1/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/libsecp256k1.so create mode 100644 example/android/third_party/secp256k1/x86-64/libsecp256k1.a create mode 100644 example/android/third_party/secp256k1/x86-64/libsecp256k1.so create mode 160000 third-party/blst diff --git a/.github/script/amd64-20.04.Dockerfile b/.github/script/amd64-20.04.Dockerfile index cab9caa5..40d980e5 100644 --- a/.github/script/amd64-20.04.Dockerfile +++ b/.github/script/amd64-20.04.Dockerfile @@ -2,13 +2,13 @@ FROM ubuntu:20.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build pkg-config +RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build libsecp256k1-dev libsodium-dev pkg-config WORKDIR / ARG BRANCH ARG REPO -RUN git clone --recurse-submodules https://github.com/$REPO && cd ton && git checkout $BRANCH +RUN git clone --recurse-submodules https://github.com/$REPO ton && cd ton && git checkout $BRANCH && git submodule update WORKDIR /ton RUN mkdir /ton/build diff --git a/.github/script/amd64-22.04.Dockerfile b/.github/script/amd64-22.04.Dockerfile index 1ed30e77..44c9c40b 100644 --- a/.github/script/amd64-22.04.Dockerfile +++ b/.github/script/amd64-22.04.Dockerfile @@ -2,13 +2,13 @@ FROM ubuntu:22.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build pkg-config +RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build libsecp256k1-dev libsodium-dev pkg-config WORKDIR / ARG BRANCH ARG REPO -RUN git clone --recurse-submodules https://github.com/$REPO && cd ton && git checkout $BRANCH +RUN git clone --recurse-submodules https://github.com/$REPO ton && cd ton && git checkout $BRANCH && git submodule update WORKDIR /ton RUN mkdir /ton/build diff --git a/.github/script/arm64-20.04.Dockerfile b/.github/script/arm64-20.04.Dockerfile index 9066c0f4..1f57dc40 100644 --- a/.github/script/arm64-20.04.Dockerfile +++ b/.github/script/arm64-20.04.Dockerfile @@ -2,13 +2,13 @@ FROM ubuntu:20.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build pkg-config +RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build libsecp256k1-dev libsodium-dev pkg-config WORKDIR / ARG BRANCH ARG REPO -RUN git clone --recurse-submodules https://github.com/$REPO && cd ton && git checkout $BRANCH +RUN git clone --recurse-submodules https://github.com/$REPO ton && cd ton && git checkout $BRANCH && git submodule update WORKDIR /ton RUN mkdir /ton/build diff --git a/.github/script/arm64-22.04.Dockerfile b/.github/script/arm64-22.04.Dockerfile index e2cbfadc..2b595839 100644 --- a/.github/script/arm64-22.04.Dockerfile +++ b/.github/script/arm64-22.04.Dockerfile @@ -2,13 +2,13 @@ FROM ubuntu:22.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build pkg-config +RUN apt install -y build-essential cmake clang openssl libssl-dev zlib1g-dev gperf wget git curl libreadline-dev ccache libmicrohttpd-dev ninja-build libsecp256k1-dev libsodium-dev pkg-config WORKDIR / ARG BRANCH ARG REPO -RUN git clone --recurse-submodules https://github.com/$REPO && cd ton && git checkout $BRANCH +RUN git clone --recurse-submodules https://github.com/$REPO ton && cd ton && git checkout $BRANCH && git submodule update WORKDIR /ton RUN mkdir /ton/build diff --git a/.github/script/fift-func-wasm-build-ubuntu.sh b/.github/script/fift-func-wasm-build-ubuntu.sh index b02fe3ee..95de71f9 100755 --- a/.github/script/fift-func-wasm-build-ubuntu.sh +++ b/.github/script/fift-func-wasm-build-ubuntu.sh @@ -8,7 +8,7 @@ export CXX=$(which clang++) export CCACHE_DISABLE=1 cd ../.. -rm -rf openssl zlib emsdk build +rm -rf openssl zlib emsdk secp256k1 libsodium build echo `pwd` git clone https://github.com/openssl/openssl.git @@ -24,13 +24,23 @@ cd zlib ZLIB_DIR=`pwd` cd .. +git clone https://github.com/bitcoin-core/secp256k1.git +cd secp256k1 +./autogen.sh +SECP256K1_DIR=`pwd` +cd .. + +git clone https://github.com/jedisct1/libsodium --branch stable +cd libsodium +SODIUM_DIR=`pwd` +cd .. + mkdir build cd build cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.so -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.so -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.so -DTON_USE_ABSEIL=OFF .. test $? -eq 0 || { echo "Can't configure TON build"; exit 1; } - ninja fift smc-envelope test $? -eq 0 || { echo "Can't compile fift "; exit 1; } @@ -50,13 +60,6 @@ export CC=$(which emcc) export CXX=$(which em++) export CCACHE_DISABLE=1 -cd ../zlib - -emconfigure ./configure --static -emmake make -j16 -test $? -eq 0 || { echo "Can't compile zlib with emmake "; exit 1; } -ZLIB_DIR=`pwd` - cd ../openssl make clean @@ -67,11 +70,30 @@ sed -i 's/-O3/-Os/g' Makefile emmake make depend emmake make -j16 test $? -eq 0 || { echo "Can't compile OpenSSL with emmake "; exit 1; } + +cd ../zlib + +emconfigure ./configure --static +emmake make -j16 +test $? -eq 0 || { echo "Can't compile zlib with emmake "; exit 1; } +ZLIB_DIR=`pwd` + +cd ../secp256k1 + +emconfigure ./configure --enable-module-recovery +emmake make -j16 +test $? -eq 0 || { echo "Can't compile secp256k1 with emmake "; exit 1; } + +cd ../libsodium + +emconfigure ./configure --disable-ssp +emmake make -j16 +test $? -eq 0 || { echo "Can't compile libsodium with emmake "; exit 1; } + cd ../build -emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=$ZLIB_DIR/libz.a -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a -DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" .. +emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=$ZLIB_DIR/libz.a -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a -DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" -DSECP256K1_INCLUDE_DIR=$SECP256K1_DIR/include -DSECP256K1_LIBRARY=$SECP256K1_DIR/.libs/libsecp256k1.a -DSODIUM_INCLUDE_DIR=$SODIUM_DIR/src/libsodium/include -DSODIUM_LIBRARY_RELEASE=$SODIUM_DIR/src/libsodium/.libs/libsodium.a -DSODIUM_LIBRARY_DEBUG=$SODIUM_DIR/src/libsodium/.libs/libsodium.a -DSODIUM_USE_STATIC_LIBS=ON .. test $? -eq 0 || { echo "Can't configure TON with with emmake "; exit 1; } cp -R ../crypto/smartcont ../crypto/fift/lib crypto emmake make -j16 funcfiftlib func fift tlbc emulator-emscripten - diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index cb665122..85560080 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -359,7 +359,7 @@ jobs: uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so.0.5 + file: artifacts/ton-x86_64-linux-binaries/libtonlibjson.so asset_name: tonlibjson-linux-x86_64.so tag: ${{ steps.tag.outputs.TAG }} diff --git a/.github/workflows/macos-11.7-compile.yml b/.github/workflows/macos-11.7-compile.yml index b1c97d3d..910b16fc 100644 --- a/.github/workflows/macos-11.7-compile.yml +++ b/.github/workflows/macos-11.7-compile.yml @@ -23,12 +23,12 @@ jobs: - name: Build all run: | export NONINTERACTIVE=1 - brew install ninja libmicrohttpd pkg-config + brew install ninja secp256k1 libsodium libmicrohttpd pkg-config rootPath=`pwd` mkdir build cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=11.7 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. - ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc + ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator - name: Find & copy binaries run: | @@ -42,7 +42,7 @@ jobs: cp build/crypto/tlbc artifacts/ cp build/validator-engine-console/validator-engine-console artifacts/ cp build/tonlib/tonlib-cli artifacts/ - cp build/tonlib/libtonlibjson.0.5.dylib artifacts/ + cp build/tonlib/libtonlibjson.0.5.dylib artifacts/libtonlibjson.dylib cp build/http/http-proxy artifacts/ cp build/rldp-http-proxy/rldp-http-proxy artifacts/ cp build/dht-server/dht-server artifacts/ @@ -51,6 +51,7 @@ jobs: cp build/utils/generate-random-id artifacts/ cp build/utils/json2tlo artifacts/ cp build/adnl/adnl-proxy artifacts/ + cp build/emulator/*emulator.* artifacts/ chmod +x artifacts/* rsync -r crypto/smartcont artifacts/ rsync -r crypto/fift/lib artifacts/ diff --git a/.github/workflows/macos-12.6-compile.yml b/.github/workflows/macos-12.6-compile.yml index c7e2e99b..368abf02 100644 --- a/.github/workflows/macos-12.6-compile.yml +++ b/.github/workflows/macos-12.6-compile.yml @@ -14,12 +14,23 @@ jobs: submodules: 'recursive' - name: Compile OpenSSL run: | + export NONINTERACTIVE=1 + brew install ninja libsodium automake git clone https://github.com/openssl/openssl openssl_1_1_1 cd openssl_1_1_1 git checkout OpenSSL_1_1_1-stable ./Configure --prefix=/usr/local/macos darwin64-x86_64-cc -static -mmacosx-version-min=12.6 make build_libs -j4 + - name: Compile Secp256k1 + run: | + git clone https://github.com/libbitcoin/secp256k1.git + cd secp256k1 + ./autogen.sh + ./configure --enable-module-recovery + make + make install + - name: Build all run: | export NONINTERACTIVE=1 @@ -28,7 +39,7 @@ jobs: mkdir build cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=12.6 -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=Release .. - ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc + ninja storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork tlbc emulator - name: Find & copy binaries run: | @@ -42,7 +53,7 @@ jobs: cp build/crypto/tlbc artifacts/ cp build/validator-engine-console/validator-engine-console artifacts/ cp build/tonlib/tonlib-cli artifacts/ - cp build/tonlib/libtonlibjson.0.5.dylib artifacts/ + cp build/tonlib/libtonlibjson.0.5.dylib artifacts/libtonlibjson.dylib cp build/http/http-proxy artifacts/ cp build/rldp-http-proxy/rldp-http-proxy artifacts/ cp build/dht-server/dht-server artifacts/ @@ -51,6 +62,7 @@ jobs: cp build/utils/generate-random-id artifacts/ cp build/utils/json2tlo artifacts/ cp build/adnl/adnl-proxy artifacts/ + cp build/emulator/*emulator.* artifacts/ chmod +x artifacts/* rsync -r crypto/smartcont artifacts/ rsync -r crypto/fift/lib artifacts/ diff --git a/.github/workflows/ton-aarch64-linux.yml b/.github/workflows/ton-aarch64-linux.yml index ac0d68a5..3c600bee 100644 --- a/.github/workflows/ton-aarch64-linux.yml +++ b/.github/workflows/ton-aarch64-linux.yml @@ -30,7 +30,8 @@ jobs: mkdir artifacts cp $PWD/result-aarch64-linux/bin/* artifacts/ chmod +x artifacts/* - cp $PWD/result-aarch64-linux/lib/libtonlibjson.so.0.5 artifacts/ + cp $PWD/result-aarch64-linux/lib/libtonlibjson.so.0.5 artifacts/libtonlibjson.so + cp $PWD/result-aarch64-linux/lib/libemulator.so artifacts/ cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ton-aarch64-macos.yml b/.github/workflows/ton-aarch64-macos.yml index 8ef4b2b2..75fcec78 100644 --- a/.github/workflows/ton-aarch64-macos.yml +++ b/.github/workflows/ton-aarch64-macos.yml @@ -28,6 +28,7 @@ jobs: cp $PWD/result-aarch64-darwin/bin/* artifacts/ chmod +x artifacts/* cp $PWD/result-aarch64-darwin/lib/libtonlibjson* artifacts/ + cp $PWD/result-aarch64-darwin/lib/libemulator* artifacts/ cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ton-ccpcheck.yml b/.github/workflows/ton-ccpcheck.yml index c2295638..8e9d6ad2 100644 --- a/.github/workflows/ton-ccpcheck.yml +++ b/.github/workflows/ton-ccpcheck.yml @@ -1,4 +1,4 @@ -name: TON ccpcheck +name: TON Ccpcheck on: [push,workflow_dispatch,workflow_call] diff --git a/.github/workflows/ton-wasm-emscripten.yml b/.github/workflows/ton-wasm-emscripten.yml index 1ce83ccc..40a65818 100644 --- a/.github/workflows/ton-wasm-emscripten.yml +++ b/.github/workflows/ton-wasm-emscripten.yml @@ -15,7 +15,7 @@ jobs: - name: Install libraries run: | sudo apt update - sudo apt install -y build-essential git make cmake ninja-build clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs + sudo apt install -y build-essential git make cmake ninja-build clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs libsecp256k1-dev libsodium-dev - name: Configure & Build run: | diff --git a/.github/workflows/ton-x86-64-linux.yml b/.github/workflows/ton-x86-64-linux.yml index 7043d054..e939f22f 100644 --- a/.github/workflows/ton-x86-64-linux.yml +++ b/.github/workflows/ton-x86-64-linux.yml @@ -29,7 +29,8 @@ jobs: mkdir artifacts cp $PWD/result-x86_64/bin/* artifacts/ chmod +x artifacts/* - cp $PWD/result-x86_64/lib/libtonlibjson.so.0.5 artifacts/ + cp $PWD/result-x86_64/lib/libtonlibjson.so.0.5 artifacts/libtonlibjson.so + cp $PWD/result-x86_64/lib/libemulator.so artifacts/ cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ton-x86-64-macos.yml b/.github/workflows/ton-x86-64-macos.yml index 8175a366..44c2d2aa 100644 --- a/.github/workflows/ton-x86-64-macos.yml +++ b/.github/workflows/ton-x86-64-macos.yml @@ -26,6 +26,7 @@ jobs: cp $PWD/result-x86_64-darwin/bin/* artifacts/ chmod +x artifacts/* cp $PWD/result-x86_64-darwin/lib/libtonlibjson.dylib artifacts/ + cp $PWD/result-x86_64-darwin/lib/libemulator.dylib artifacts/ cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/tonlib-android-jni.yml b/.github/workflows/tonlib-android-jni.yml index cdc16841..cdf410b4 100644 --- a/.github/workflows/tonlib-android-jni.yml +++ b/.github/workflows/tonlib-android-jni.yml @@ -29,18 +29,23 @@ jobs: export JAVA_INCLUDE_PATH2=${JAVA_HOME}/include/linux export ANDROID_NDK_ROOT=$(pwd)/android-ndk-r25b + export NDK_PLATFORM="android-21" + export ANDROID_PLATFORM="android-21" export OPENSSL_DIR=$(pwd)/example/android/third_party/crypto rm -rf example/android/src/drinkless/org/ton/TonApi.java cd example/android/ - cmake -GNinja -DTON_ONLY_TONLIB=ON . + + sudo apt install -y libtool autoconf libsodium-dev libsecp256k1-dev + + cmake -GNinja -DTON_ONLY_TONLIB=ON . + ninja prepare_cross_compiling + + sudo apt remove -y libsodium-dev libsecp256k1-dev + rm CMakeCache.txt ./build-all.sh - ../../android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libs/x86/libnative-lib.so - ../../android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libs/x86_64/libnative-lib.so - ../../android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libs/armeabi-v7a/libnative-lib.so - ../../android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip libs/arm64-v8a/libnative-lib.so find . -name "*.debug" -type f -delete - name: Find & copy binaries @@ -52,5 +57,5 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@master with: - name: Tonlib JNI libraries for Android + name: tonlib-android-jni path: artifacts \ No newline at end of file diff --git a/.github/workflows/ubuntu-22.04-compile.yml b/.github/workflows/ubuntu-22.04-compile.yml index 8032e498..397116ff 100644 --- a/.github/workflows/ubuntu-22.04-compile.yml +++ b/.github/workflows/ubuntu-22.04-compile.yml @@ -16,7 +16,7 @@ jobs: - name: Install libraries run: | sudo apt update - sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build + sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build libsecp256k1-dev libsodium-dev - name: Show CPU flags run: | @@ -40,12 +40,12 @@ jobs: cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. - ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state + ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state emulator - name: Find & copy binaries run: | mkdir artifacts - cp build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy artifacts + cp build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy build/emulator/libemulator.* artifacts chmod +x artifacts/* cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ubuntu-compile.yml b/.github/workflows/ubuntu-compile.yml index b303e143..171ba46d 100644 --- a/.github/workflows/ubuntu-compile.yml +++ b/.github/workflows/ubuntu-compile.yml @@ -19,7 +19,7 @@ jobs: - name: Install libraries run: | sudo apt update - sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build + sudo apt install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev ninja-build libsecp256k1-dev libsodium-dev - name: Show CPU flags run: | @@ -44,12 +44,12 @@ jobs: buildPath=`pwd` cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$buildPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$buildPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. - ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork + ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator - name: Find & copy binaries run: | mkdir artifacts-${{ matrix.os }} - cp build-${{ matrix.os }}/storage/storage-daemon/storage-daemon build-${{ matrix.os }}/storage/storage-daemon/storage-daemon-cli build-${{ matrix.os }}/crypto/fift build-${{ matrix.os }}/crypto/tlbc build-${{ matrix.os }}/crypto/func build-${{ matrix.os }}/crypto/create-state build-${{ matrix.os }}/validator-engine-console/validator-engine-console build-${{ matrix.os }}/tonlib/tonlib-cli build-${{ matrix.os }}/tonlib/libtonlibjson.so.0.5 build-${{ matrix.os }}/http/http-proxy build-${{ matrix.os }}/rldp-http-proxy/rldp-http-proxy build-${{ matrix.os }}/dht-server/dht-server build-${{ matrix.os }}/lite-client/lite-client build-${{ matrix.os }}/validator-engine/validator-engine build-${{ matrix.os }}/utils/generate-random-id build-${{ matrix.os }}/utils/json2tlo build-${{ matrix.os }}/adnl/adnl-proxy artifacts-${{ matrix.os }} + cp build-${{ matrix.os }}/storage/storage-daemon/storage-daemon build-${{ matrix.os }}/storage/storage-daemon/storage-daemon-cli build-${{ matrix.os }}/crypto/fift build-${{ matrix.os }}/crypto/tlbc build-${{ matrix.os }}/crypto/func build-${{ matrix.os }}/crypto/create-state build-${{ matrix.os }}/validator-engine-console/validator-engine-console build-${{ matrix.os }}/tonlib/tonlib-cli build-${{ matrix.os }}/tonlib/libtonlibjson.so.0.5 build-${{ matrix.os }}/http/http-proxy build-${{ matrix.os }}/rldp-http-proxy/rldp-http-proxy build-${{ matrix.os }}/dht-server/dht-server build-${{ matrix.os }}/lite-client/lite-client build-${{ matrix.os }}/validator-engine/validator-engine build-${{ matrix.os }}/utils/generate-random-id build-${{ matrix.os }}/utils/json2tlo build-${{ matrix.os }}/adnl/adnl-proxy build-${{ matrix.os }}/emulator/libemulator.* artifacts-${{ matrix.os }} chmod +x artifacts-${{ matrix.os }}/* cp -R crypto/smartcont artifacts-${{ matrix.os }} cp -R crypto/fift/lib artifacts-${{ matrix.os }} diff --git a/.github/workflows/win-2019-compile.yml b/.github/workflows/win-2019-compile.yml index b0c99971..190c03e1 100644 --- a/.github/workflows/win-2019-compile.yml +++ b/.github/workflows/win-2019-compile.yml @@ -38,6 +38,17 @@ jobs: cd zlib\contrib\vstudio\vc14 msbuild zlibstat.vcxproj /p:Configuration=ReleaseWithoutAsm /p:platform=x64 -p:PlatformToolset=v142 + - name: Compile secp256k1 Win64 + run: | + git clone https://github.com/libbitcoin/secp256k1.git + cd secp256k1\builds\msvc\vs2017 + msbuild /p:Configuration=StaticRelease -p:PlatformToolset=v142 -p:Platform=x64 + + - name: Install pre-compiled libsodium Win64 + run: | + curl -Lo libsodium-1.0.18-stable-msvc.zip https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable-msvc.zip + unzip libsodium-1.0.18-stable-msvc.zip + - name: Install pre-compiled OpenSSL Win64 run: | curl -Lo openssl-1.1.1o.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-1.1.1o.zip @@ -48,14 +59,21 @@ jobs: curl -Lo libmicrohttpd-latest-w32-bin.zip https://ftpmirror.gnu.org/libmicrohttpd/libmicrohttpd-latest-w32-bin.zip unzip libmicrohttpd-latest-w32-bin.zip + - name: Install pre-compiled Readline Win64 + run: | + curl -Lo readline-5.0-1-lib.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/readline-5.0-1-lib.zip + unzip readline-5.0-1-lib.zip + - name: Compile run: | set root=%cd% + set SODIUM_DIR=%root%\libsodium echo %root% + echo %SODIUM_DIR% mkdir build cd build - cmake -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1/x64/lib/libcrypto.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. - cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork --config Release + cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1/x64/lib/libcrypto.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. + cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator --config Release - name: Show executables run: | @@ -74,7 +92,7 @@ jobs: mkdir artifacts\smartcont mkdir artifacts\lib - for %%I in (build\storage\storage-daemon\Release\storage-daemon.exe build\storage\storage-daemon\Release\storage-daemon-cli.exe build\blockchain-explorer\blockchain-explorer.exe build\crypto\Release\fift.exe build\crypto\Release\tlbc.exe build\crypto\Release\func.exe build\crypto\Release\create-state.exe build\validator-engine-console\Release\validator-engine-console.exe build\tonlib\Release\tonlib-cli.exe build\tonlib\Release\tonlibjson.dll build\http\Release\http-proxy.exe build\rldp-http-proxy\Release\rldp-http-proxy.exe build\dht-server\Release\dht-server.exe build\lite-client\Release\lite-client.exe build\validator-engine\Release\validator-engine.exe build\utils\Release\generate-random-id.exe build\utils\Release\json2tlo.exe build\adnl\Release\adnl-proxy.exe) do copy %%I artifacts\ + for %%I in (build\storage\storage-daemon\Release\storage-daemon.exe build\storage\storage-daemon\Release\storage-daemon-cli.exe build\blockchain-explorer\blockchain-explorer.exe build\crypto\Release\fift.exe build\crypto\Release\tlbc.exe build\crypto\Release\func.exe build\crypto\Release\create-state.exe build\validator-engine-console\Release\validator-engine-console.exe build\tonlib\Release\tonlib-cli.exe build\tonlib\Release\tonlibjson.dll build\http\Release\http-proxy.exe build\rldp-http-proxy\Release\rldp-http-proxy.exe build\dht-server\Release\dht-server.exe build\lite-client\Release\lite-client.exe build\validator-engine\Release\validator-engine.exe build\utils\Release\generate-random-id.exe build\utils\Release\json2tlo.exe build\adnl\Release\adnl-proxy.exe build\emulator\Release\emulator.dll) do copy %%I artifacts\ xcopy /e /k /h /i crypto\smartcont artifacts\smartcont xcopy /e /k /h /i crypto\fift\lib artifacts\lib diff --git a/.gitmodules b/.gitmodules index e6a47e8b..f201ed73 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "third-party/libraptorq"] path = third-party/libraptorq url = https://github.com/ton-blockchain/libRaptorQ +[submodule "third-party/blst"] + path = third-party/blst + url = https://github.com/supranational/blst.git diff --git a/CMake/BuildBLST.cmake b/CMake/BuildBLST.cmake new file mode 100644 index 00000000..1cf2366c --- /dev/null +++ b/CMake/BuildBLST.cmake @@ -0,0 +1,30 @@ +set(BLST_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third-party/blst) +set(BLST_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/third-party/blst) +set(BLST_INCLUDE_DIR ${BLST_SOURCE_DIR}/bindings) + +if (NOT BLST_LIB) + if (WIN32) + set(BLST_LIB ${BLST_BINARY_DIR}/blst.lib) + set(BLST_BUILD_COMMAND ${BLST_SOURCE_DIR}/build.bat) + else() + set(BLST_LIB ${BLST_BINARY_DIR}/libblst.a) + if (PORTABLE) + set(BLST_BUILD_COMMAND ${BLST_SOURCE_DIR}/build.sh -D__BLST_PORTABLE__) + else() + set(BLST_BUILD_COMMAND ${BLST_SOURCE_DIR}/build.sh) + endif() + endif() + + file(MAKE_DIRECTORY ${BLST_BINARY_DIR}) + add_custom_command( + WORKING_DIRECTORY ${BLST_BINARY_DIR} + COMMAND ${BLST_BUILD_COMMAND} + COMMENT "Build blst" + DEPENDS ${BLST_SOURCE_DIR} + OUTPUT ${BLST_LIB} + ) +else() + message(STATUS "Use BLST: ${BLST_LIB}") +endif() + +add_custom_target(blst DEPENDS ${BLST_LIB}) diff --git a/CMake/FindSecp256k1.cmake b/CMake/FindSecp256k1.cmake new file mode 100644 index 00000000..11603f15 --- /dev/null +++ b/CMake/FindSecp256k1.cmake @@ -0,0 +1,29 @@ +# - Try to find SECP256K1 +# Once done this will define +# +# SECP256K1_FOUND - system has SECP256K1 +# SECP256K1_INCLUDE_DIRS - the SECP256K1 include directory +# SECP256K1_LIBRARY - Link these to use SECP256K1 + +find_path( + SECP256K1_INCLUDE_DIR + NAMES secp256k1_recovery.h + DOC "secp256k1_recovery.h include dir" +) + +find_library( + SECP256K1_LIBRARY + NAMES secp256k1 libsecp256k1 + DOC "secp256k1 library" +) + +if (SECP256K1_LIBRARY) + message(STATUS "Found Secp256k1: ${SECP256K1_LIBRARY}") +endif() + +set(SECP256K1_INCLUDE_DIRS ${SECP256K1_INCLUDE_DIR}) +set(SECP256K1_LIBRARIES ${SECP256K1_LIBRARY}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Secp256k1 DEFAULT_MSG SECP256K1_INCLUDE_DIR SECP256K1_LIBRARY) +mark_as_advanced(SECP256K1_INCLUDE_DIR SECP256K1_LIBRARY) diff --git a/CMake/FindSodium.cmake b/CMake/FindSodium.cmake new file mode 100644 index 00000000..0053ac54 --- /dev/null +++ b/CMake/FindSodium.cmake @@ -0,0 +1,297 @@ +# Written in 2016 by Henrik Steffen Gaßmann +# +# To the extent possible under law, the author(s) have dedicated all +# copyright and related and neighboring rights to this software to the +# public domain worldwide. This software is distributed without any warranty. +# +# You should have received a copy of the CC0 Public Domain Dedication +# along with this software. If not, see +# +# http://creativecommons.org/publicdomain/zero/1.0/ +# +######################################################################## +# Tries to find the local libsodium installation. +# +# On Windows the SODIUM_DIR environment variable is used as a default +# hint which can be overridden by setting the corresponding cmake variable. +# +# Once done the following variables will be defined: +# +# SODIUM_FOUND +# SODIUM_INCLUDE_DIR +# SODIUM_LIBRARY_DEBUG +# SODIUM_LIBRARY_RELEASE +# +# +# Furthermore an imported "sodium" target is created. +# + +if (CMAKE_C_COMPILER_ID STREQUAL "GNU" + OR CMAKE_C_COMPILER_ID STREQUAL "Clang") + set(_GCC_COMPATIBLE 1) +endif() + +# static library option +if (NOT DEFINED SODIUM_USE_STATIC_LIBS) + option(SODIUM_USE_STATIC_LIBS "enable to statically link against sodium" OFF) +endif() +if(NOT (SODIUM_USE_STATIC_LIBS EQUAL SODIUM_USE_STATIC_LIBS_LAST)) + unset(sodium_LIBRARY CACHE) + unset(SODIUM_LIBRARY_DEBUG CACHE) + unset(SODIUM_LIBRARY_RELEASE CACHE) + unset(sodium_DLL_DEBUG CACHE) + unset(sodium_DLL_RELEASE CACHE) + set(SODIUM_USE_STATIC_LIBS_LAST ${SODIUM_USE_STATIC_LIBS} CACHE INTERNAL "internal change tracking variable") +endif() + + +######################################################################## +# UNIX +if (UNIX) + # import pkg-config + find_package(PkgConfig QUIET) + if (PKG_CONFIG_FOUND) + pkg_check_modules(sodium_PKG QUIET libsodium) + endif() + + if(SODIUM_USE_STATIC_LIBS) + foreach(_libname ${sodium_PKG_STATIC_LIBRARIES}) + if (NOT _libname MATCHES "^lib.*\\.a$") # ignore strings already ending with .a + list(INSERT sodium_PKG_STATIC_LIBRARIES 0 "lib${_libname}.a") + endif() + endforeach() + list(REMOVE_DUPLICATES sodium_PKG_STATIC_LIBRARIES) + + # if pkgconfig for libsodium doesn't provide + # static lib info, then override PKG_STATIC here.. + if (NOT sodium_PKG_STATIC_FOUND) + set(sodium_PKG_STATIC_LIBRARIES libsodium.a) + endif() + + set(XPREFIX sodium_PKG_STATIC) + else() + if (NOT sodium_PKG_FOUND) + set(sodium_PKG_LIBRARIES sodium) + endif() + + set(XPREFIX sodium_PKG) + endif() + + find_path(SODIUM_INCLUDE_DIR sodium.h + HINTS ${${XPREFIX}_INCLUDE_DIRS} + ) + find_library(SODIUM_LIBRARY_DEBUG NAMES ${${XPREFIX}_LIBRARIES} + HINTS ${${XPREFIX}_LIBRARY_DIRS} + ) + find_library(SODIUM_LIBRARY_RELEASE NAMES ${${XPREFIX}_LIBRARIES} + HINTS ${${XPREFIX}_LIBRARY_DIRS} + ) + + ######################################################################## + # Windows +elseif (WIN32) + set(SODIUM_DIR "$ENV{SODIUM_DIR}" CACHE FILEPATH "sodium install directory") + mark_as_advanced(SODIUM_DIR) + + find_path(SODIUM_INCLUDE_DIR + NAMES sodium.h + HINTS ${SODIUM_DIR} + PATH_SUFFIXES include + ) + + if (MSVC) + # detect target architecture + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/arch.cpp" [=[ + #if defined _M_IX86 + #error ARCH_VALUE x86_32 + #elif defined _M_X64 + #error ARCH_VALUE x86_64 + #endif + #error ARCH_VALUE unknown + ]=]) + try_compile(_UNUSED_VAR "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/arch.cpp" + OUTPUT_VARIABLE _COMPILATION_LOG + ) + string(REGEX REPLACE ".*ARCH_VALUE ([a-zA-Z0-9_]+).*" "\\1" _TARGET_ARCH "${_COMPILATION_LOG}") + + # construct library path + if (_TARGET_ARCH STREQUAL "x86_32") + string(APPEND _PLATFORM_PATH "Win32") + elseif(_TARGET_ARCH STREQUAL "x86_64") + string(APPEND _PLATFORM_PATH "x64") + else() + message(FATAL_ERROR "the ${_TARGET_ARCH} architecture is not supported by Findsodium.cmake.") + endif() + string(APPEND _PLATFORM_PATH "/$$CONFIG$$") + + if (MSVC_VERSION LESS 1900) + math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 60") + else() + math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 50") + endif() + string(APPEND _PLATFORM_PATH "/v${_VS_VERSION}") + + if (SODIUM_USE_STATIC_LIBS) + string(APPEND _PLATFORM_PATH "/static") + else() + string(APPEND _PLATFORM_PATH "/dynamic") + endif() + + string(REPLACE "$$CONFIG$$" "Debug" _DEBUG_PATH_SUFFIX "${_PLATFORM_PATH}") + string(REPLACE "$$CONFIG$$" "Release" _RELEASE_PATH_SUFFIX "${_PLATFORM_PATH}") + + find_library(SODIUM_LIBRARY_DEBUG libsodium.lib + HINTS ${SODIUM_DIR} + PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX} + ) + find_library(SODIUM_LIBRARY_RELEASE libsodium.lib + HINTS ${SODIUM_DIR} + PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX} + ) + if (NOT SODIUM_USE_STATIC_LIBS) + set(CMAKE_FIND_LIBRARY_SUFFIXES_BCK ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll") + find_library(sodium_DLL_DEBUG libsodium + HINTS ${SODIUM_DIR} + PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX} + ) + find_library(sodium_DLL_RELEASE libsodium + HINTS ${SODIUM_DIR} + PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX} + ) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_BCK}) + endif() + + elseif(_GCC_COMPATIBLE) + if (SODIUM_USE_STATIC_LIBS) + find_library(SODIUM_LIBRARY_DEBUG libsodium.a + HINTS ${SODIUM_DIR} + PATH_SUFFIXES lib + ) + find_library(SODIUM_LIBRARY_RELEASE libsodium.a + HINTS ${SODIUM_DIR} + PATH_SUFFIXES lib + ) + else() + find_library(SODIUM_LIBRARY_DEBUG libsodium.dll.a + HINTS ${SODIUM_DIR} + PATH_SUFFIXES lib + ) + find_library(SODIUM_LIBRARY_RELEASE libsodium.dll.a + HINTS ${SODIUM_DIR} + PATH_SUFFIXES lib + ) + + file(GLOB _DLL + LIST_DIRECTORIES false + RELATIVE "${SODIUM_DIR}/bin" + "${SODIUM_DIR}/bin/libsodium*.dll" + ) + find_library(sodium_DLL_DEBUG ${_DLL} libsodium + HINTS ${SODIUM_DIR} + PATH_SUFFIXES bin + ) + find_library(sodium_DLL_RELEASE ${_DLL} libsodium + HINTS ${SODIUM_DIR} + PATH_SUFFIXES bin + ) + endif() + else() + message(FATAL_ERROR "this platform is not supported by FindSodium.cmake") + endif() + + + ######################################################################## + # unsupported +else() + message(FATAL_ERROR "this platform is not supported by FindSodium.cmake") +endif() + + +######################################################################## +# common stuff + +# extract sodium version +if (SODIUM_INCLUDE_DIR) + set(_VERSION_HEADER "${_INCLUDE_DIR}/sodium/version.h") + if (EXISTS _VERSION_HEADER) + file(READ "${_VERSION_HEADER}" _VERSION_HEADER_CONTENT) + string(REGEX REPLACE ".*#[ \t]*define[ \t]*SODIUM_VERSION_STRING[ \t]*\"([^\n]*)\".*" "\\1" + sodium_VERSION "${_VERSION_HEADER_CONTENT}") + set(sodium_VERSION "${sodium_VERSION}" PARENT_SCOPE) + endif() +endif() + +# communicate results +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + Sodium # The name must be either uppercase or match the filename case. + REQUIRED_VARS + SODIUM_LIBRARY_RELEASE + SODIUM_LIBRARY_DEBUG + SODIUM_INCLUDE_DIR + VERSION_VAR + sodium_VERSION +) + +if(SODIUM_FOUND) + set(SODIUM_LIBRARIES + optimized ${SODIUM_LIBRARY_RELEASE} debug ${SODIUM_LIBRARY_DEBUG}) +endif() + +# mark file paths as advanced +mark_as_advanced(SODIUM_INCLUDE_DIR) +mark_as_advanced(SODIUM_LIBRARY_DEBUG) +mark_as_advanced(SODIUM_LIBRARY_RELEASE) +if (WIN32) + mark_as_advanced(sodium_DLL_DEBUG) + mark_as_advanced(sodium_DLL_RELEASE) +endif() + +# create imported target +if(SODIUM_USE_STATIC_LIBS) + set(_LIB_TYPE STATIC) +else() + set(_LIB_TYPE SHARED) +endif() + +if(NOT TARGET sodium) + add_library(sodium ${_LIB_TYPE} IMPORTED) +endif() + +set_target_properties(sodium PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${SODIUM_INCLUDE_DIR}" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + ) + +if (SODIUM_USE_STATIC_LIBS) + set_target_properties(sodium PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "SODIUM_STATIC" + IMPORTED_LOCATION "${SODIUM_LIBRARY_RELEASE}" + IMPORTED_LOCATION_DEBUG "${SODIUM_LIBRARY_DEBUG}" + ) +else() + if (UNIX) + set_target_properties(sodium PROPERTIES + IMPORTED_LOCATION "${SODIUM_LIBRARY_RELEASE}" + IMPORTED_LOCATION_DEBUG "${SODIUM_LIBRARY_DEBUG}" + ) + elseif (WIN32) + set_target_properties(sodium PROPERTIES + IMPORTED_IMPLIB "${SODIUM_LIBRARY_RELEASE}" + IMPORTED_IMPLIB_DEBUG "${SODIUM_LIBRARY_DEBUG}" + ) + if (NOT (sodium_DLL_DEBUG MATCHES ".*-NOTFOUND")) + set_target_properties(sodium PROPERTIES + IMPORTED_LOCATION_DEBUG "${sodium_DLL_DEBUG}" + ) + endif() + if (NOT (sodium_DLL_RELEASE MATCHES ".*-NOTFOUND")) + set_target_properties(sodium PROPERTIES + IMPORTED_LOCATION_RELWITHDEBINFO "${sodium_DLL_RELEASE}" + IMPORTED_LOCATION_MINSIZEREL "${sodium_DLL_RELEASE}" + IMPORTED_LOCATION_RELEASE "${sodium_DLL_RELEASE}" + ) + endif() + endif() +endif() \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index aafc79b6..4b6f0dc9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,6 +182,8 @@ endif() message("Add ton") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) +include(BuildBLST) + # Configure CCache if available find_program(CCACHE_FOUND ccache) #set(CCACHE_FOUND 0) diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 8fd70f7b..96d92371 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -8,7 +8,8 @@ set(COMMON_SOURCE errorlog.h errorlog.cpp -) + + global-version.h) add_library(common STATIC ${COMMON_SOURCE}) diff --git a/common/global-version.h b/common/global-version.h new file mode 100644 index 00000000..01c1795d --- /dev/null +++ b/common/global-version.h @@ -0,0 +1,24 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once + +namespace ton { + +// See doc/GlobalVersions.md +const int SUPPORTED_VERSION = 4; + +} diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 598169f7..cdd5d57b 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -4,7 +4,7 @@ if (NOT OPENSSL_FOUND) find_package(OpenSSL REQUIRED) endif() -set(TON_CRYPTO_SOURCE +set(TON_CRYPTO_CORE_SOURCE Ed25519.cpp common/bigint.cpp common/refcnt.cpp @@ -19,26 +19,8 @@ set(TON_CRYPTO_SOURCE openssl/bignum.cpp openssl/residue.cpp openssl/rand.cpp - vm/stack.cpp - vm/atom.cpp - vm/continuation.cpp - vm/dict.cpp - vm/memo.cpp - vm/dispatch.cpp - vm/opctable.cpp - vm/cp0.cpp - vm/stackops.cpp - vm/tupleops.cpp - vm/arithops.cpp - vm/cellops.cpp - vm/contops.cpp - vm/dictops.cpp - vm/debugops.cpp - vm/tonops.cpp vm/boc.cpp vm/large-boc-serializer.cpp - vm/utils.cpp - vm/vm.cpp tl/tlblib.cpp Ed25519.h @@ -66,34 +48,10 @@ set(TON_CRYPTO_SOURCE tl/tlbc-data.h tl/tlblib.hpp - vm/arithops.h - vm/atom.h - vm/boc.h - vm/boc-writers.h - vm/box.hpp - vm/cellops.h - vm/continuation.h - vm/contops.h - vm/cp0.h - vm/debugops.h - vm/dict.h - vm/dictops.h - vm/excno.hpp - vm/fmt.hpp - vm/log.h - vm/memo.h - vm/opctable.h - vm/stack.hpp - vm/stackops.h - vm/tupleops.h - vm/tonops.h - vm/vmstate.h - vm/utils.h - vm/vm.h - - vm/cells.h - vm/cellslice.h + keccak/keccak.h + keccak/keccak.cpp + vm/dict.cpp vm/cells/Cell.cpp vm/cells/CellBuilder.cpp vm/cells/CellHash.cpp @@ -106,6 +64,7 @@ set(TON_CRYPTO_SOURCE vm/cells/MerkleProof.cpp vm/cells/MerkleUpdate.cpp + vm/dict.h vm/cells/Cell.h vm/cells/CellBuilder.h vm/cells/CellHash.h @@ -124,9 +83,64 @@ set(TON_CRYPTO_SOURCE vm/cells/VirtualCell.h vm/cells/VirtualizationParameters.h + vm/cells.h + vm/cellslice.h + vm/db/StaticBagOfCellsDb.h vm/db/StaticBagOfCellsDb.cpp -) + + vm/Hasher.h + vm/Hasher.cpp + + ellcurve/secp256k1.h + ellcurve/secp256k1.cpp + ellcurve/p256.h + ellcurve/p256.cpp) + +set(TON_CRYPTO_SOURCE + vm/stack.cpp + vm/atom.cpp + vm/continuation.cpp + vm/memo.cpp + vm/dispatch.cpp + vm/opctable.cpp + vm/cp0.cpp + vm/stackops.cpp + vm/tupleops.cpp + vm/arithops.cpp + vm/cellops.cpp + vm/contops.cpp + vm/dictops.cpp + vm/debugops.cpp + vm/tonops.cpp + vm/utils.cpp + vm/vm.cpp + vm/bls.cpp + + vm/arithops.h + vm/atom.h + vm/boc.h + vm/boc-writers.h + vm/box.hpp + vm/cellops.h + vm/continuation.h + vm/contops.h + vm/cp0.h + vm/debugops.h + vm/dictops.h + vm/excno.hpp + vm/fmt.hpp + vm/log.h + vm/memo.h + vm/opctable.h + vm/stack.hpp + vm/stackops.h + vm/tupleops.h + vm/tonops.h + vm/vmstate.h + vm/utils.h + vm/vm.h + vm/bls.h) set(TON_DB_SOURCE vm/db/DynamicBagOfCellsDb.cpp @@ -271,17 +285,25 @@ set(BIGINT_TEST_SOURCE set(USE_EMSCRIPTEN ${USE_EMSCRIPTEN} PARENT_SCOPE) +add_library(ton_crypto_core STATIC ${TON_CRYPTO_CORE_SOURCE}) +target_include_directories(ton_crypto_core PUBLIC $ + $) +target_link_libraries(ton_crypto_core PUBLIC ${OPENSSL_CRYPTO_LIBRARY} tdutils tddb_utils) +if (NOT WIN32) + target_link_libraries(ton_crypto_core PUBLIC dl z) +endif() +target_include_directories(ton_crypto_core SYSTEM PUBLIC $) add_library(ton_crypto STATIC ${TON_CRYPTO_SOURCE}) target_include_directories(ton_crypto PUBLIC $ $) -target_link_libraries(ton_crypto PUBLIC ${OPENSSL_CRYPTO_LIBRARY} tdutils tddb_utils) +target_link_libraries(ton_crypto PUBLIC ${OPENSSL_CRYPTO_LIBRARY} tdutils tddb_utils ton_crypto_core ton_block) if (USE_EMSCRIPTEN) target_link_options(ton_crypto PRIVATE -fexceptions) target_compile_options(ton_crypto PRIVATE -fexceptions) endif() if (NOT WIN32) - find_library(DL dl) + find_library(DL dl) if (DL) target_link_libraries(ton_crypto PUBLIC dl z) else() @@ -290,6 +312,39 @@ if (NOT WIN32) endif() target_include_directories(ton_crypto SYSTEM PUBLIC $) +add_dependencies(ton_crypto blst) +target_include_directories(ton_crypto PRIVATE ${BLST_INCLUDE_DIR}) +target_link_libraries(ton_crypto PRIVATE ${BLST_LIB}) + +if (NOT USE_EMSCRIPTEN) + find_package(Secp256k1 REQUIRED) +endif() + +if (MSVC) + find_package(Sodium REQUIRED) + target_compile_definitions(ton_crypto PUBLIC SODIUM_STATIC) + target_include_directories(ton_crypto_core PUBLIC $) + target_link_libraries(ton_crypto PUBLIC ${SECP256K1_LIBRARIES}) +elseif (ANDROID) + target_include_directories(ton_crypto_core PUBLIC $) + target_link_libraries(ton_crypto PUBLIC $) +else() + if (NOT USE_EMSCRIPTEN) + find_package(Sodium REQUIRED) + target_include_directories(ton_crypto_core PUBLIC $) + target_link_libraries(ton_crypto PUBLIC ${SECP256K1_LIBRARIES}) + else() + target_include_directories(ton_crypto_core PUBLIC $) + target_link_libraries(ton_crypto PUBLIC ${SECP256K1_LIBRARY}) + endif() + if (NOT APPLE AND NOT USE_EMSCRIPTEN) + target_link_libraries(ton_crypto_core PUBLIC secp256k1) + endif() +endif() + +target_include_directories(ton_crypto_core PUBLIC $) +target_link_libraries(ton_crypto PUBLIC ${SODIUM_LIBRARY_RELEASE}) + add_library(ton_db STATIC ${TON_DB_SOURCE}) target_include_directories(ton_db PUBLIC $ $) @@ -316,12 +371,12 @@ endif() add_library(src_parser ${PARSER_SOURCE}) target_include_directories(src_parser PUBLIC $) -target_link_libraries(src_parser PUBLIC ton_crypto) +target_link_libraries(src_parser PUBLIC ton_crypto_core) add_library(ton_block ${BLOCK_SOURCE}) target_include_directories(ton_block PUBLIC $ $ $) -target_link_libraries(ton_block PUBLIC ton_crypto tdutils tdactor tl_api) +target_link_libraries(ton_block PUBLIC ton_crypto_core tdutils tdactor tl_api) add_executable(func func/func-main.cpp ${FUNC_LIB_SOURCE}) target_include_directories(func PUBLIC $) @@ -347,12 +402,12 @@ if (USE_EMSCRIPTEN) target_link_options(funcfiftlib PRIVATE -sALLOW_TABLE_GROWTH=1) target_link_options(funcfiftlib PRIVATE --embed-file ${CMAKE_CURRENT_SOURCE_DIR}/fift/lib@/fiftlib) target_link_options(funcfiftlib PRIVATE -fexceptions) - target_compile_options(funcfiftlib PRIVATE -fexceptions) + target_compile_options(funcfiftlib PRIVATE -fexceptions -fno-stack-protector) endif() add_executable(tlbc tl/tlbc.cpp) target_include_directories(tlbc PUBLIC $) -target_link_libraries(tlbc PUBLIC ton_crypto src_parser) +target_link_libraries(tlbc PUBLIC ton_crypto_core src_parser) if (WINGETOPT_FOUND) target_link_libraries_system(tlbc wingetopt) endif() diff --git a/crypto/block/block.tlb b/crypto/block/block.tlb index 6b9473ca..7fa7f750 100644 --- a/crypto/block/block.tlb +++ b/crypto/block/block.tlb @@ -384,7 +384,7 @@ action_reserve_currency#36e6b809 mode:(## 8) currency:CurrencyCollection = OutAction; libref_hash$0 lib_hash:bits256 = LibRef; libref_ref$1 library:^Cell = LibRef; -action_change_library#26fa1dd4 mode:(## 7) { mode <= 2 } +action_change_library#26fa1dd4 mode:(## 7) libref:LibRef = OutAction; out_list_node$_ prev:^Cell action:OutAction = OutListNode; @@ -686,6 +686,8 @@ _#cc utime_since:uint32 bit_price_ps:uint64 cell_price_ps:uint64 mc_bit_price_ps:uint64 mc_cell_price_ps:uint64 = StoragePrices; _ (Hashmap 32 StoragePrices) = ConfigParam 18; +_ global_id:int32 = ConfigParam 19; + gas_prices#dd gas_price:uint64 gas_limit:uint64 gas_credit:uint64 block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64 = GasLimitsPrices; diff --git a/crypto/block/mc-config.cpp b/crypto/block/mc-config.cpp index e94ff0a4..2cf8b1d9 100644 --- a/crypto/block/mc-config.cpp +++ b/crypto/block/mc-config.cpp @@ -2220,4 +2220,42 @@ Ref ConfigInfo::lookup_library(td::ConstBitPtr root_hash) const { return lib; } +td::Result> ConfigInfo::get_prev_blocks_info() const { + // [ wc:Integer shard:Integer seqno:Integer root_hash:Integer file_hash:Integer] = BlockId; + // [ last_mc_blocks:[BlockId...] + // prev_key_block:BlockId ] : PrevBlocksInfo + auto block_id_to_tuple = [](const ton::BlockIdExt& block_id) -> vm::Ref { + td::RefInt256 shard = td::make_refint(block_id.id.shard); + if (shard->sgn() < 0) { + shard &= ((td::make_refint(1) << 64) - 1); + } + return vm::make_tuple_ref( + td::make_refint(block_id.id.workchain), + std::move(shard), + td::make_refint(block_id.id.seqno), + td::bits_to_refint(block_id.root_hash.bits(), 256), + td::bits_to_refint(block_id.file_hash.bits(), 256)); + }; + std::vector last_mc_blocks; + + last_mc_blocks.push_back(block_id_to_tuple(block_id)); + for (ton::BlockSeqno seqno = block_id.id.seqno; seqno > 0 && last_mc_blocks.size() < 16; ) { + --seqno; + ton::BlockIdExt block_id; + if (!get_old_mc_block_id(seqno, block_id)) { + return td::Status::Error("cannot fetch old mc block"); + } + last_mc_blocks.push_back(block_id_to_tuple(block_id)); + } + + ton::BlockIdExt last_key_block; + ton::LogicalTime last_key_block_lt; + if (!get_last_key_block(last_key_block, last_key_block_lt)) { + return td::Status::Error("cannot fetch last key block"); + } + return vm::make_tuple_ref( + td::make_cnt_ref>(std::move(last_mc_blocks)), + block_id_to_tuple(last_key_block)); +} + } // namespace block diff --git a/crypto/block/mc-config.h b/crypto/block/mc-config.h index c56be474..799bf6bf 100644 --- a/crypto/block/mc-config.h +++ b/crypto/block/mc-config.h @@ -738,6 +738,7 @@ class ConfigInfo : public Config, public ShardConfig { ton::CatchainSeqno* cc_seqno_delta = nullptr) const; std::vector compute_validator_set_cc(ton::ShardIdFull shard, ton::UnixTime time, ton::CatchainSeqno* cc_seqno_delta = nullptr) const; + td::Result> get_prev_blocks_info() const; static td::Result> extract_config(std::shared_ptr static_boc, int mode = 0); static td::Result> extract_config(Ref mc_state_root, int mode = 0); diff --git a/crypto/block/transaction.cpp b/crypto/block/transaction.cpp index fe359993..92a5bfe2 100644 --- a/crypto/block/transaction.cpp +++ b/crypto/block/transaction.cpp @@ -478,7 +478,7 @@ void add_partial_storage_payment(td::BigInt256& payment, ton::UnixTime delta, co b.mul_short(prices.bit_price); } b += c; - b.mul_short(delta); + b.mul_short(delta).normalize(); CHECK(b.sgn() >= 0); payment += b; } @@ -506,8 +506,7 @@ td::RefInt256 StoragePrices::compute_storage_fees(ton::UnixTime now, const std:: } upto = valid_until; } - total.unique_write().rshift(16, 1); // divide by 2^16 with ceil rounding to obtain nanograms - return total; + return td::rshift(total, 16, 1); // divide by 2^16 with ceil rounding to obtain nanograms } td::RefInt256 Account::compute_storage_fees(ton::UnixTime now, const std::vector& pricing) const { @@ -731,6 +730,9 @@ bool Transaction::prepare_storage_phase(const StoragePhaseConfig& cfg, bool forc } break; } + if (cfg.enable_due_payment) { + due_payment = total_due; + } } } if (adjust_msg_value && msg_balance_remaining.grams > balance.grams) { @@ -924,7 +926,7 @@ Ref Transaction::prepare_vm_c7(const ComputePhaseConfig& cfg) const { throw CollatorError{"cannot generate valid SmartContractInfo"}; return {}; } - auto tuple = vm::make_tuple_ref( + std::vector tuple = { td::make_refint(0x076ef1ea), // [ magic:0x076ef1ea td::zero_refint(), // actions:Integer td::zero_refint(), // msgs_sent:Integer @@ -933,10 +935,27 @@ Ref Transaction::prepare_vm_c7(const ComputePhaseConfig& cfg) const { td::make_refint(start_lt), // trans_lt:Integer std::move(rand_seed_int), // rand_seed:Integer balance.as_vm_tuple(), // balance_remaining:[Integer (Maybe Cell)] - my_addr, // myself:MsgAddressInt - vm::StackEntry::maybe(cfg.global_config)); // global_config:(Maybe Cell) ] = SmartContractInfo; - LOG(DEBUG) << "SmartContractInfo initialized with " << vm::StackEntry(tuple).to_string(); - return vm::make_tuple_ref(std::move(tuple)); + my_addr, // myself:MsgAddressInt + vm::StackEntry::maybe(cfg.global_config) // global_config:(Maybe Cell) ] = SmartContractInfo; + }; + if (cfg.global_version >= 4) { + tuple.push_back(new_code); // code:Cell + if (msg_balance_remaining.is_valid()) { + tuple.push_back(msg_balance_remaining.as_vm_tuple()); // in_msg_value:[Integer (Maybe Cell)] + } else { + tuple.push_back(block::CurrencyCollection::zero().as_vm_tuple()); + } + tuple.push_back(storage_phase->fees_collected); // storage_fees:Integer + + // See crypto/block/mc-config.cpp#2115 (get_prev_blocks_info) + // [ wc:Integer shard:Integer seqno:Integer root_hash:Integer file_hash:Integer] = BlockId; + // [ last_mc_blocks:[BlockId...] + // prev_key_block:BlockId ] : PrevBlocksInfo + tuple.push_back(cfg.prev_blocks_info.not_null() ? vm::StackEntry(cfg.prev_blocks_info) : vm::StackEntry()); + } + auto tuple_ref = td::make_cnt_ref>(std::move(tuple)); + LOG(DEBUG) << "SmartContractInfo initialized with " << vm::StackEntry(tuple_ref).to_string(); + return vm::make_tuple_ref(std::move(tuple_ref)); } int output_actions_count(Ref list) { @@ -1093,6 +1112,7 @@ bool Transaction::prepare_compute_phase(const ComputePhaseConfig& cfg) { } vm::VmState vm{new_code, std::move(stack), gas, 1, new_data, vm_log, compute_vm_libraries(cfg)}; vm.set_max_data_depth(cfg.max_vm_data_depth); + vm.set_global_version(cfg.global_version); vm.set_c7(prepare_vm_c7(cfg)); // tuple with SmartContractInfo vm.set_chksig_always_succeed(cfg.ignore_chksig); // vm.incr_stack_trace(1); // enable stack dump after each step @@ -1174,6 +1194,7 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { ap.total_fwd_fees = td::zero_refint(); ap.total_action_fees = td::zero_refint(); ap.reserved_balance.set_zero(); + ap.action_fine = td::zero_refint(); td::Ref old_code = new_code, old_data = new_data, old_library = new_library; auto enforce_state_limits = [&]() { @@ -1240,6 +1261,7 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { int tag = block::gen::t_OutAction.get_tag(cs); CHECK(tag >= 0); int err_code = 34; + ap.need_bounce_on_fail = false; switch (tag) { case block::gen::OutAction::action_set_code: err_code = try_action_set_code(cs, ap, cfg); @@ -1270,12 +1292,24 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) { ap.no_funds = true; } LOG(DEBUG) << "invalid action " << ap.result_arg << " in action list: error code " << ap.result_code; - // This is reuqired here because changes to libraries are applied even if action phase fails + // This is reuqired here because changes to libraries are applied even if actipn phase fails enforce_state_limits(); + if (cfg.action_fine_enabled) { + ap.action_fine = std::min(ap.action_fine, balance.grams); + ap.total_action_fees = ap.action_fine; + balance.grams -= ap.action_fine; + total_fees += ap.action_fine; + } + if (ap.need_bounce_on_fail) { + ap.bounce = true; + } return true; } } + if (cfg.action_fine_enabled) { + ap.total_action_fees += ap.action_fine; + } end_lt = ap.end_lt; if (ap.new_code.not_null()) { new_code = ap.new_code; @@ -1321,7 +1355,17 @@ int Transaction::try_action_change_library(vm::CellSlice& cs, ActionPhase& ap, c if (!tlb::unpack_exact(cs, rec)) { return -1; } - // mode: +0 = remove library, +1 = add private library, +2 = add public library + // mode: +0 = remove library, +1 = add private library, +2 = add public library, +16 - bounce on fail + if (rec.mode & 16) { + if (!cfg.bounce_on_fail_enabled) { + return -1; + } + ap.need_bounce_on_fail = true; + rec.mode &= ~16; + } + if (rec.mode > 2) { + return -1; + } Ref lib_ref = rec.libref->prefetch_ref(); ton::Bits256 hash; if (lib_ref.not_null()) { @@ -1535,9 +1579,22 @@ bool Transaction::check_rewrite_dest_addr(Ref& dest_addr, const A int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, const ActionPhaseConfig& cfg, int redoing) { block::gen::OutAction::Record_action_send_msg act_rec; - // mode: +128 = attach all remaining balance, +64 = attach all remaining balance of the inbound message, +32 = delete smart contract if balance becomes zero, +1 = pay message fees, +2 = skip if message cannot be sent + // mode: + // +128 = attach all remaining balance + // +64 = attach all remaining balance of the inbound message + // +32 = delete smart contract if balance becomes zero + // +1 = pay message fees + // +2 = skip if message cannot be sent + // +16 = bounce if action fails vm::CellSlice cs{cs0}; - if (!tlb::unpack_exact(cs, act_rec) || (act_rec.mode & ~0xe3) || (act_rec.mode & 0xc0) == 0xc0) { + if (!tlb::unpack_exact(cs, act_rec)) { + return -1; + } + if ((act_rec.mode & 16) && cfg.bounce_on_fail_enabled) { + act_rec.mode &= ~16; + ap.need_bounce_on_fail = true; + } + if ((act_rec.mode & ~0xe3) || (act_rec.mode & 0xc0) == 0xc0) { return -1; } bool skip_invalid = (act_rec.mode & 2); @@ -1564,7 +1621,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, && cb.store_long_bool(3, 2) // (just (right ... )) && cb.store_ref_bool(std::move(cell)) // z:^StateInit && cb.finalize_to(cell)); - msg.init = vm::load_cell_slice_ref(std::move(cell)); + msg.init = vm::load_cell_slice_ref(cell); } else { redoing = 2; } @@ -1581,7 +1638,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, && cb.store_long_bool(1, 1) // (right ... ) && cb.store_ref_bool(std::move(cell)) // x:^X && cb.finalize_to(cell)); - msg.body = vm::load_cell_slice_ref(std::move(cell)); + msg.body = vm::load_cell_slice_ref(cell); } block::gen::CommonMsgInfoRelaxed::Record_int_msg_info info; @@ -1629,30 +1686,84 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, // fetch message pricing info const MsgPrices& msg_prices = cfg.fetch_msg_prices(to_mc || account.is_masterchain()); + // If action fails, account is required to pay fine_per_cell for every visited cell + // Number of visited cells is limited depending on available funds + unsigned max_cells = cfg.size_limits.max_msg_cells; + td::uint64 fine_per_cell = 0; + if (cfg.action_fine_enabled && !account.is_special) { + fine_per_cell = (msg_prices.cell_price >> 16) / 4; + td::RefInt256 funds = ap.remaining_balance.grams; + if (!ext_msg && !(act_rec.mode & 0x80) && !(act_rec.mode & 1)) { + if (!block::tlb::t_CurrencyCollection.validate_csr(info.value)) { + LOG(DEBUG) << "invalid value:CurrencyCollection in proposed outbound message"; + return skip_invalid ? 0 : 37; + } + block::CurrencyCollection value; + CHECK(value.unpack(info.value)); + CHECK(value.grams.not_null()); + td::RefInt256 new_funds = value.grams; + if (act_rec.mode & 0x40) { + if (msg_balance_remaining.is_valid()) { + new_funds += msg_balance_remaining.grams; + } + if (compute_phase) { + new_funds -= compute_phase->gas_fees; + } + new_funds -= ap.action_fine; + if (new_funds->sgn() < 0) { + LOG(DEBUG) + << "not enough value to transfer with the message: all of the inbound message value has been consumed"; + return skip_invalid ? 0 : 37; + } + } + funds = std::min(funds, new_funds); + } + if (funds->cmp(max_cells * fine_per_cell) < 0) { + max_cells = static_cast((funds / td::make_refint(fine_per_cell))->to_long()); + } + } // compute size of message - vm::CellStorageStat sstat; // for message size + vm::CellStorageStat sstat(max_cells); // for message size // preliminary storage estimation of the resulting message unsigned max_merkle_depth = 0; - auto add_used_storage = [&](const auto& x, unsigned skip_root_count) { + auto add_used_storage = [&](const auto& x, unsigned skip_root_count) -> td::Status { if (x.not_null()) { - auto res = sstat.add_used_storage(x, true, skip_root_count).move_as_ok(); + TRY_RESULT(res, sstat.add_used_storage(x, true, skip_root_count)); max_merkle_depth = std::max(max_merkle_depth, res.max_merkle_depth); } + return td::Status::OK(); }; add_used_storage(msg.init, 3); // message init add_used_storage(msg.body, 3); // message body (the root cell itself is not counted) if (!ext_msg) { add_used_storage(info.value->prefetch_ref(), 0); } - LOG(DEBUG) << "storage paid for a message: " << sstat.cells << " cells, " << sstat.bits << " bits"; - if (sstat.bits > cfg.size_limits.max_msg_bits || sstat.cells > cfg.size_limits.max_msg_cells) { + auto collect_fine = [&] { + if (cfg.action_fine_enabled && !account.is_special) { + td::uint64 fine = fine_per_cell * std::min(max_cells, sstat.cells); + if (ap.remaining_balance.grams->cmp(fine) < 0) { + fine = ap.remaining_balance.grams->to_long(); + } + ap.action_fine += fine; + ap.remaining_balance.grams -= fine; + } + }; + if (sstat.cells > max_cells && max_cells < cfg.size_limits.max_msg_cells) { + LOG(DEBUG) << "not enough funds to process a message (max_cells=" << max_cells << ")"; + collect_fine(); + return skip_invalid ? 0 : 40; + } + if (sstat.bits > cfg.size_limits.max_msg_bits || sstat.cells > max_cells) { LOG(DEBUG) << "message too large, invalid"; + collect_fine(); return skip_invalid ? 0 : 40; } if (max_merkle_depth > max_allowed_merkle_depth) { LOG(DEBUG) << "message has too big merkle depth, invalid"; + collect_fine(); return skip_invalid ? 0 : 40; } + LOG(DEBUG) << "storage paid for a message: " << sstat.cells << " cells, " << sstat.bits << " bits"; // compute forwarding fees auto fees_c = msg_prices.compute_fwd_ihr_fees(sstat.cells, sstat.bits, info.ihr_disabled); @@ -1681,6 +1792,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, // ... if (!block::tlb::t_CurrencyCollection.validate_csr(info.value)) { LOG(DEBUG) << "invalid value:CurrencyCollection in proposed outbound message"; + collect_fine(); return skip_invalid ? 0 : 37; } if (info.ihr_disabled) { @@ -1699,11 +1811,15 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, } else if (act_rec.mode & 0x40) { // attach all remaining balance of the inbound message (in addition to the original value) req += msg_balance_remaining; - if (!(act_rec.mode & 1) && compute_phase) { - req -= compute_phase->gas_fees; + if (!(act_rec.mode & 1)) { + req -= ap.action_fine; + if (compute_phase) { + req -= compute_phase->gas_fees; + } if (!req.is_valid()) { LOG(DEBUG) << "not enough value to transfer with the message: all of the inbound message value has been consumed"; + collect_fine(); return skip_invalid ? 0 : 37; } } @@ -1719,6 +1835,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, // receiver pays the fees (but cannot) LOG(DEBUG) << "not enough value attached to the message to pay forwarding fees : have " << req.grams << ", need " << fees_total; + collect_fine(); return skip_invalid ? 0 : 37; // not enough grams } else { // decrease message value @@ -1729,6 +1846,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, if (ap.remaining_balance.grams < req_grams_brutto) { LOG(DEBUG) << "not enough grams to transfer with the message : remaining balance is " << ap.remaining_balance.to_str() << ", need " << req_grams_brutto << " (including forwarding fees)"; + collect_fine(); return skip_invalid ? 0 : 37; // not enough grams } @@ -1738,6 +1856,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, LOG(DEBUG) << "not enough extra currency to send with the message: " << block::CurrencyCollection{0, req.extra}.to_str() << " required, only " << block::CurrencyCollection{0, ap.remaining_balance.extra}.to_str() << " available"; + collect_fine(); return skip_invalid ? 0 : 38; // not enough (extra) funds } if (ap.remaining_balance.extra.not_null() || req.extra.not_null()) { @@ -1760,7 +1879,11 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, vm::CellBuilder cb; if (!tlb::type_pack(cb, block::gen::t_MessageRelaxed_Any, msg)) { LOG(DEBUG) << "outbound message does not fit into a cell after rewriting"; - return redoing < 2 ? -2 : (skip_invalid ? 0 : 39); + if (redoing == 2) { + collect_fine(); + return skip_invalid ? 0 : 39; + } + return -2; } new_msg_bits = cb.size(); @@ -1782,6 +1905,7 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, // external messages also have forwarding fees if (ap.remaining_balance.grams < fwd_fee) { LOG(DEBUG) << "not enough funds to pay for an outbound external message"; + collect_fine(); return skip_invalid ? 0 : 37; // not enough grams } // repack message @@ -1795,7 +1919,11 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, vm::CellBuilder cb; if (!tlb::type_pack(cb, block::gen::t_MessageRelaxed_Any, msg)) { LOG(DEBUG) << "outbound message does not fit into a cell after rewriting"; - return redoing < 2 ? -2 : (skip_invalid ? 0 : 39); + if (redoing == 2) { + collect_fine(); + return (skip_invalid ? 0 : 39); + } + return -2; } new_msg_bits = cb.size(); @@ -1810,12 +1938,14 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, if (!block::tlb::t_Message.validate_ref(new_msg)) { LOG(ERROR) << "generated outbound message is not a valid (Message Any) according to hand-written check"; + collect_fine(); return -1; } if (!block::gen::t_Message_Any.validate_ref(new_msg)) { LOG(ERROR) << "generated outbound message is not a valid (Message Any) according to automated check"; block::gen::t_Message_Any.print_ref(std::cerr, new_msg); vm::load_cell_slice(new_msg).print_rec(std::cerr); + collect_fine(); return -1; } if (verbosity > 2) { @@ -1843,7 +1973,14 @@ int Transaction::try_action_send_msg(const vm::CellSlice& cs0, ActionPhase& ap, int Transaction::try_action_reserve_currency(vm::CellSlice& cs, ActionPhase& ap, const ActionPhaseConfig& cfg) { block::gen::OutAction::Record_action_reserve_currency rec; - if (!tlb::unpack_exact(cs, rec) || (rec.mode & ~15)) { + if (!tlb::unpack_exact(cs, rec)) { + return -1; + } + if ((rec.mode & 16) && cfg.bounce_on_fail_enabled) { + rec.mode &= ~16; + ap.need_bounce_on_fail = true; + } + if (rec.mode & ~15) { return -1; } int mode = rec.mode; @@ -1990,6 +2127,9 @@ bool Transaction::prepare_bounce_phase(const ActionPhaseConfig& cfg) { if (compute_phase && compute_phase->gas_fees.not_null()) { msg_balance.grams -= compute_phase->gas_fees; } + if (action_phase && action_phase->action_fine.not_null()) { + msg_balance.grams -= action_phase->action_fine; + } if ((msg_balance.grams < 0) || (msg_balance.grams->signed_fits_bits(64) && msg_balance.grams->to_long() < (long long)bp.fwd_fees)) { // not enough funds @@ -2570,17 +2710,27 @@ bool Account::libraries_changed() const { } } -td::Status FetchConfigParams::fetch_config_params(const block::Config& config, - Ref* old_mparams, - std::vector* storage_prices, - block::StoragePhaseConfig* storage_phase_cfg, - td::BitArray<256>* rand_seed, - block::ComputePhaseConfig* compute_phase_cfg, - block::ActionPhaseConfig* action_phase_cfg, - td::RefInt256* masterchain_create_fee, - td::RefInt256* basechain_create_fee, - ton::WorkchainId wc, - ton::UnixTime now) { +td::Status FetchConfigParams::fetch_config_params( + const block::ConfigInfo& config, Ref* old_mparams, std::vector* storage_prices, + StoragePhaseConfig* storage_phase_cfg, td::BitArray<256>* rand_seed, ComputePhaseConfig* compute_phase_cfg, + ActionPhaseConfig* action_phase_cfg, td::RefInt256* masterchain_create_fee, td::RefInt256* basechain_create_fee, + ton::WorkchainId wc, ton::UnixTime now) { + auto prev_blocks_info = config.get_prev_blocks_info(); + if (prev_blocks_info.is_error()) { + return prev_blocks_info.move_as_error_prefix( + td::Status::Error(-668, "cannot fetch prev blocks info from masterchain configuration: ")); + } + return fetch_config_params(config, prev_blocks_info.move_as_ok(), old_mparams, storage_prices, storage_phase_cfg, + rand_seed, compute_phase_cfg, action_phase_cfg, masterchain_create_fee, + basechain_create_fee, wc, now); +} + +td::Status FetchConfigParams::fetch_config_params( + const block::Config& config, td::Ref prev_blocks_info, Ref* old_mparams, + std::vector* storage_prices, StoragePhaseConfig* storage_phase_cfg, + td::BitArray<256>* rand_seed, ComputePhaseConfig* compute_phase_cfg, ActionPhaseConfig* action_phase_cfg, + td::RefInt256* masterchain_create_fee, td::RefInt256* basechain_create_fee, ton::WorkchainId wc, + ton::UnixTime now) { *old_mparams = config.get_config_param(9); { auto res = config.get_storage_prices(); @@ -2605,9 +2755,14 @@ td::Status FetchConfigParams::fetch_config_params(const block::Config& config, storage_phase_cfg->delete_due_limit)) { return td::Status::Error(-668, "cannot unpack current gas prices and limits from masterchain configuration"); } + storage_phase_cfg->enable_due_payment = config.get_global_version() >= 4; compute_phase_cfg->block_rand_seed = *rand_seed; compute_phase_cfg->max_vm_data_depth = size_limits.max_vm_data_depth; compute_phase_cfg->global_config = config.get_root_cell(); + compute_phase_cfg->global_version = config.get_global_version(); + if (compute_phase_cfg->global_version >= 4) { + compute_phase_cfg->prev_blocks_info = std::move(prev_blocks_info); + } compute_phase_cfg->suspended_addresses = config.get_suspended_addresses(now); } { @@ -2630,6 +2785,8 @@ td::Status FetchConfigParams::fetch_config_params(const block::Config& config, action_phase_cfg->workchains = &config.get_workchain_list(); action_phase_cfg->bounce_msg_body = (config.has_capability(ton::capBounceMsgBody) ? 256 : 0); action_phase_cfg->size_limits = size_limits; + action_phase_cfg->action_fine_enabled = config.get_global_version() >= 4; + action_phase_cfg->bounce_on_fail_enabled = config.get_global_version() >= 4; action_phase_cfg->mc_blackhole_addr = config.get_burning_config().blackhole_addr; } { diff --git a/crypto/block/transaction.h b/crypto/block/transaction.h index bc5adff2..3ae8cdf8 100644 --- a/crypto/block/transaction.h +++ b/crypto/block/transaction.h @@ -80,6 +80,7 @@ struct StoragePhaseConfig { const std::vector* pricing{nullptr}; td::RefInt256 freeze_due_limit; td::RefInt256 delete_due_limit; + bool enable_due_payment{false}; StoragePhaseConfig() = default; StoragePhaseConfig(const std::vector* _pricing, td::RefInt256 freeze_limit = {}, td::RefInt256 delete_limit = {}) @@ -112,8 +113,11 @@ struct ComputePhaseConfig { bool ignore_chksig{false}; bool with_vm_log{false}; td::uint16 max_vm_data_depth = 512; + int global_version = 0; + Ref prev_blocks_info; std::unique_ptr suspended_addresses; int vm_log_verbosity = 0; + ComputePhaseConfig(td::uint64 _gas_price = 0, td::uint64 _gas_limit = 0, td::uint64 _gas_credit = 0) : gas_price(_gas_price), gas_limit(_gas_limit), special_gas_limit(_gas_limit), gas_credit(_gas_credit) { compute_threshold(); @@ -153,6 +157,8 @@ struct ActionPhaseConfig { MsgPrices fwd_mc; // from/to masterchain SizeLimitsConfig size_limits; const WorkchainSet* workchains{nullptr}; + bool action_fine_enabled{false}; + bool bounce_on_fail_enabled{false}; td::optional mc_blackhole_addr; const MsgPrices& fetch_msg_prices(bool is_masterchain) const { return is_masterchain ? fwd_mc : fwd_std; @@ -210,6 +216,9 @@ struct ActionPhase { std::vector> out_msgs; ton::LogicalTime end_lt; unsigned long long tot_msg_bits{0}, tot_msg_cells{0}; + td::RefInt256 action_fine; + bool need_bounce_on_fail = false; + bool bounce = false; }; struct BouncePhase { @@ -402,17 +411,18 @@ struct Transaction { } // namespace transaction struct FetchConfigParams { -static td::Status fetch_config_params(const block::Config& config, - Ref* old_mparams, - std::vector* storage_prices, - StoragePhaseConfig* storage_phase_cfg, - td::BitArray<256>* rand_seed, - ComputePhaseConfig* compute_phase_cfg, - ActionPhaseConfig* action_phase_cfg, - td::RefInt256* masterchain_create_fee, - td::RefInt256* basechain_create_fee, - ton::WorkchainId wc, - ton::UnixTime now); + static td::Status fetch_config_params(const block::ConfigInfo& config, Ref* old_mparams, + std::vector* storage_prices, + StoragePhaseConfig* storage_phase_cfg, td::BitArray<256>* rand_seed, + ComputePhaseConfig* compute_phase_cfg, ActionPhaseConfig* action_phase_cfg, + td::RefInt256* masterchain_create_fee, td::RefInt256* basechain_create_fee, + ton::WorkchainId wc, ton::UnixTime now); + static td::Status fetch_config_params(const block::Config& config, Ref prev_blocks_info, + Ref* old_mparams, std::vector* storage_prices, + StoragePhaseConfig* storage_phase_cfg, td::BitArray<256>* rand_seed, + ComputePhaseConfig* compute_phase_cfg, ActionPhaseConfig* action_phase_cfg, + td::RefInt256* masterchain_create_fee, td::RefInt256* basechain_create_fee, + ton::WorkchainId wc, ton::UnixTime now); }; } // namespace block diff --git a/crypto/ellcurve/p256.cpp b/crypto/ellcurve/p256.cpp new file mode 100644 index 00000000..de539372 --- /dev/null +++ b/crypto/ellcurve/p256.cpp @@ -0,0 +1,91 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include "p256.h" +#include "td/utils/check.h" +#include "td/utils/misc.h" +#include +#include +#include + +namespace td { + +td::Status p256_check_signature(td::Slice data, td::Slice public_key, td::Slice signature) { + CHECK(public_key.size() == 33); + CHECK(signature.size() == 64); + + EVP_PKEY_CTX* pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_EC, nullptr); + if (pctx == nullptr) { + return td::Status::Error("Can't create EVP_PKEY_CTX"); + } + SCOPE_EXIT { + EVP_PKEY_CTX_free(pctx); + }; + if (EVP_PKEY_paramgen_init(pctx) <= 0) { + return td::Status::Error("EVP_PKEY_paramgen_init failed"); + } + if (EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pctx, NID_X9_62_prime256v1) <= 0) { + return td::Status::Error("EVP_PKEY_CTX_set_ec_paramgen_curve_nid failed"); + } + EVP_PKEY* pkey = nullptr; + if (EVP_PKEY_paramgen(pctx, &pkey) <= 0) { + return td::Status::Error("EVP_PKEY_paramgen failed"); + } + SCOPE_EXIT { + EVP_PKEY_free(pkey); + }; + if (EVP_PKEY_set1_tls_encodedpoint(pkey, public_key.ubegin(), public_key.size()) <= 0) { + return td::Status::Error("Failed to import public key"); + } + EVP_MD_CTX* md_ctx = EVP_MD_CTX_new(); + if (md_ctx == nullptr) { + return td::Status::Error("Can't create EVP_MD_CTX"); + } + SCOPE_EXIT { + EVP_MD_CTX_free(md_ctx); + }; + if (EVP_DigestVerifyInit(md_ctx, nullptr, nullptr, nullptr, pkey) <= 0) { + return td::Status::Error("Can't init DigestVerify"); + } + ECDSA_SIG* sig = ECDSA_SIG_new(); + SCOPE_EXIT { + ECDSA_SIG_free(sig); + }; + unsigned char buf[33]; + buf[0] = 0; + std::copy(signature.ubegin(), signature.ubegin() + 32, buf + 1); + BIGNUM* r = BN_bin2bn(buf, 33, nullptr); + std::copy(signature.ubegin() + 32, signature.ubegin() + 64, buf + 1); + BIGNUM* s = BN_bin2bn(buf, 33, nullptr); + if (ECDSA_SIG_set0(sig, r, s) != 1) { + return td::Status::Error("Invalid signature"); + } + unsigned char* signature_encoded = nullptr; + int signature_len = i2d_ECDSA_SIG(sig, &signature_encoded); + if (signature_len <= 0) { + return td::Status::Error("Invalid signature"); + } + SCOPE_EXIT { + OPENSSL_free(signature_encoded); + }; + if (EVP_DigestVerify(md_ctx, signature_encoded, signature_len, data.ubegin(), data.size()) == 1) { + return td::Status::OK(); + } + return td::Status::Error("Wrong signature"); +} + +} // namespace td diff --git a/crypto/ellcurve/p256.h b/crypto/ellcurve/p256.h new file mode 100644 index 00000000..22d08be4 --- /dev/null +++ b/crypto/ellcurve/p256.h @@ -0,0 +1,26 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once + +#include "td/utils/Slice.h" +#include "td/utils/Status.h" + +namespace td { + +td::Status p256_check_signature(td::Slice data, td::Slice public_key, td::Slice signature); + +} diff --git a/crypto/ellcurve/secp256k1.cpp b/crypto/ellcurve/secp256k1.cpp new file mode 100644 index 00000000..e890117a --- /dev/null +++ b/crypto/ellcurve/secp256k1.cpp @@ -0,0 +1,42 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include "secp256k1.h" +#include "td/utils/check.h" +#include +#include + +namespace td { + +bool ecrecover(const unsigned char* hash, const unsigned char* signature, unsigned char* public_key) { + static secp256k1_context* ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY); + secp256k1_ecdsa_recoverable_signature ecdsa_signature; + if (signature[64] > 3 || + !secp256k1_ecdsa_recoverable_signature_parse_compact(ctx, &ecdsa_signature, signature, signature[64])) { + return false; + } + secp256k1_pubkey pubkey; + if (!secp256k1_ecdsa_recover(ctx, &pubkey, &ecdsa_signature, hash)) { + return false; + } + size_t len = 65; + secp256k1_ec_pubkey_serialize(ctx, public_key, &len, &pubkey, SECP256K1_EC_UNCOMPRESSED); + CHECK(len == 65); + return true; +} + +} diff --git a/crypto/ellcurve/secp256k1.h b/crypto/ellcurve/secp256k1.h new file mode 100644 index 00000000..80ab6a87 --- /dev/null +++ b/crypto/ellcurve/secp256k1.h @@ -0,0 +1,23 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once + +namespace td { + +bool ecrecover(const unsigned char* hash, const unsigned char* signature, unsigned char* public_key); + +} diff --git a/crypto/fift/lib/Asm.fif b/crypto/fift/lib/Asm.fif index 64b85009..d9cee5d8 100644 --- a/crypto/fift/lib/Asm.fif +++ b/crypto/fift/lib/Asm.fif @@ -32,6 +32,7 @@ false @was-split ! { 1 { or abort"invalid version" + dup dup 0 < swap 999 > or abort"invalid version" } cond } : parse-version-level diff --git a/crypto/fift/words.cpp b/crypto/fift/words.cpp index b5e6dbd6..56dd4de2 100644 --- a/crypto/fift/words.cpp +++ b/crypto/fift/words.cpp @@ -46,6 +46,7 @@ #include "vm/db/TonDb.h" // only for interpret_db_run_vm{,_parallel} #include "block/block.h" +#include "common/global-version.h" #include "td/utils/filesystem.h" #include "td/utils/misc.h" @@ -2658,13 +2659,15 @@ std::vector> get_vm_libraries() { // +128 = pop hard gas limit (enabled by ACCEPT) from stack as well // +256 = enable stack trace // +512 = enable debug instructions +// +1024 = load global_version from stack void interpret_run_vm(IntCtx& ctx, int mode) { if (mode < 0) { - mode = ctx.stack.pop_smallint_range(0x3ff); + mode = ctx.stack.pop_smallint_range(0x7ff); } bool with_data = mode & 4; Ref c7; Ref data, actions; + int global_version = (mode & 1024) ? ctx.stack.pop_smallint_range(ton::SUPPORTED_VERSION) : ton::SUPPORTED_VERSION; long long gas_max = (mode & 128) ? ctx.stack.pop_long_range(vm::GasLimits::infty) : vm::GasLimits::infty; long long gas_limit = (mode & 8) ? ctx.stack.pop_long_range(vm::GasLimits::infty) : vm::GasLimits::infty; if (!(mode & 128)) { @@ -2683,7 +2686,7 @@ void interpret_run_vm(IntCtx& ctx, int mode) { auto log = create_vm_log((mode & 64) && ctx.error_stream ? &ostream_logger : nullptr); vm::GasLimits gas{gas_limit, gas_max}; int res = vm::run_vm_code(cs, ctx.stack, (mode & 3) | ((mode & 0x300) >> 6), &data, log, nullptr, &gas, - get_vm_libraries(), std::move(c7), &actions); + get_vm_libraries(), std::move(c7), &actions, global_version); ctx.stack.push_smallint(res); if (with_data) { ctx.stack.push_cell(std::move(data)); diff --git a/crypto/keccak/keccak.cpp b/crypto/keccak/keccak.cpp new file mode 100644 index 00000000..aac48ddc --- /dev/null +++ b/crypto/keccak/keccak.cpp @@ -0,0 +1,473 @@ +/* + * An implementation of the SHA3 (Keccak) hash function family. + * + * Algorithm specifications: http://keccak.noekeon.org/ + * NIST Announcement: + * http://csrc.nist.gov/groups/ST/hash/sha-3/winner_sha-3.html + * + * Written in 2013 by Fabrizio Tarizzo + * + * =================================================================== + * The contents of this file are dedicated to the public domain. To + * the extent that dedication to the public domain is not available, + * everyone is granted a worldwide, perpetual, royalty-free, + * non-exclusive license to exercise all rights associated with the + * contents of this file for any purpose whatsoever. + * No rights are reserved. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * =================================================================== +*/ + +#include +#include +#include +#include + +#define KECCAK_F1600_STATE 200 +#define MIN(x, y) ((x) < (y) ? (x) : (y)) +#define MAX(x, y) ((x) < (y) ? (x) : (y)) + +/** Standard errors common to all ciphers **/ +#define ERR_NULL 1 +#define ERR_MEMORY 2 +#define ERR_NOT_ENOUGH_DATA 3 +#define ERR_ENCRYPT 4 +#define ERR_DECRYPT 5 +#define ERR_KEY_SIZE 6 +#define ERR_NONCE_SIZE 7 +#define ERR_NR_ROUNDS 8 +#define ERR_DIGEST_SIZE 9 +#define ERR_MAX_DATA 10 +#define ERR_MAX_OFFSET 11 +#define ERR_BLOCK_SIZE 12 +#define ERR_TAG_SIZE 13 +#define ERR_VALUE 14 +#define ERR_EC_POINT 15 +#define ERR_EC_CURVE 16 +#define ERR_MODULUS 17 +#define ERR_UNKNOWN 32 + +typedef struct +{ + uint64_t state[25]; + + /* The buffer is as long as the state, + * but only 'rate' bytes will be used. + */ + uint8_t buf[KECCAK_F1600_STATE]; + + /* When absorbing, this is the number of bytes in buf that + * are coming from the message and outstanding. + * When squeezing, this is the remaining number of bytes + * that can be used as digest. + */ + unsigned valid_bytes; + + /* All values in bytes */ + unsigned capacity; + unsigned rate; + + uint8_t squeezing; + uint8_t rounds; +} keccak_state; + +#undef ROL64 +#define ROL64(x,y) ((((x) << (y)) | (x) >> (64-(y))) & 0xFFFFFFFFFFFFFFFFULL) + +static void keccak_function (uint64_t *state, unsigned rounds); + +int keccak_reset(keccak_state *state) +{ + if (NULL == state) + return ERR_NULL; + + memset(state->state, 0, sizeof(state->state)); + memset(state->buf, 0, sizeof(state->buf)); + state->valid_bytes = 0; + state->squeezing = 0; + + return 0; +} + +static void keccak_absorb_internal (keccak_state *self) +{ + unsigned i,j; + uint64_t d; + + for (i=j=0; j < self->rate; ++i, j += 8) { + d = *(const uint64_t*)(self->buf + j); + self->state[i] ^= d; + } +} + +static void +keccak_squeeze_internal (keccak_state *self) +{ + unsigned i, j; + + for (i=j=0; j < self->rate; ++i, j += 8) { + *(uint64_t*)(self->buf+j) = self->state[i]; + } +} + +int keccak_init (keccak_state **state, + size_t capacity_bytes, + uint8_t rounds) +{ + keccak_state *ks; + + if (NULL == state) { + return ERR_NULL; + } + + *state = ks = (keccak_state*) calloc(1, sizeof(keccak_state)); + if (NULL == ks) + return ERR_MEMORY; + + if (capacity_bytes >= KECCAK_F1600_STATE) + return ERR_DIGEST_SIZE; + + if ((rounds != 12) && (rounds != 24)) + return ERR_NR_ROUNDS; + + ks->capacity = (unsigned)capacity_bytes; + + ks->rate = KECCAK_F1600_STATE - ks->capacity; + + ks->squeezing = 0; + ks->rounds = rounds; + + return 0; +} + +int keccak_destroy(keccak_state *state) +{ + free(state); + return 0; +} + +int keccak_absorb (keccak_state *self, + const uint8_t *in, + size_t length) +{ + if (NULL==self || NULL==in) + return ERR_NULL; + + if (self->squeezing != 0) + return ERR_UNKNOWN; + + while (length > 0) { + unsigned tc; + unsigned left; + + left = self->rate - self->valid_bytes; + tc = (unsigned) MIN(length, left); + memcpy(self->buf + self->valid_bytes, in, tc); + + self->valid_bytes += tc; + in += tc; + length -= tc; + + if (self->valid_bytes == self->rate) { + keccak_absorb_internal (self); + keccak_function(self->state, self->rounds); + self->valid_bytes = 0; + } + } + + return 0; +} + +static void keccak_finish (keccak_state *self, uint8_t padding) +{ + assert(self->squeezing == 0); + assert(self->valid_bytes < self->rate); + + /* Padding */ + memset(self->buf + self->valid_bytes, 0, self->rate - self->valid_bytes); + self->buf[self->valid_bytes] = padding; + self->buf[self->rate-1] |= 0x80; + + /* Final absorb */ + keccak_absorb_internal (self); + keccak_function (self->state, self->rounds); + + /* First squeeze */ + self->squeezing = 1; + keccak_squeeze_internal (self); + self->valid_bytes = self->rate; +} + +int keccak_squeeze (keccak_state *self, uint8_t *out, size_t length, uint8_t padding) +{ + if ((NULL == self) || (NULL == out)) + return ERR_NULL; + + if (self->squeezing == 0) { + keccak_finish (self, padding); + } + + assert(self->squeezing == 1); + assert(self->valid_bytes > 0); + assert(self->valid_bytes <= self->rate); + + while (length > 0) { + unsigned tc; + + tc = (unsigned)MIN(self->valid_bytes, length); + memcpy(out, self->buf + (self->rate - self->valid_bytes), tc); + + self->valid_bytes -= tc; + out += tc; + length -= tc; + + if (self->valid_bytes == 0) { + keccak_function (self->state, self->rounds); + keccak_squeeze_internal (self); + self->valid_bytes = self->rate; + } + } + + return 0; +} + +int keccak_digest(keccak_state *state, uint8_t *digest, size_t len, uint8_t padding) +{ + keccak_state tmp; + + if ((NULL==state) || (NULL==digest)) + return ERR_NULL; + + if (2*len != state->capacity) + return ERR_UNKNOWN; + + tmp = *state; + return keccak_squeeze(&tmp, digest, len, padding); +} + +int keccak_copy(const keccak_state *src, keccak_state *dst) +{ + if (NULL == src || NULL == dst) { + return ERR_NULL; + } + + *dst = *src; + return 0; +} + +/* Keccak core function */ + +#define KECCAK_ROUNDS 24 + +#define ROT_01 36 +#define ROT_02 3 +#define ROT_03 41 +#define ROT_04 18 +#define ROT_05 1 +#define ROT_06 44 +#define ROT_07 10 +#define ROT_08 45 +#define ROT_09 2 +#define ROT_10 62 +#define ROT_11 6 +#define ROT_12 43 +#define ROT_13 15 +#define ROT_14 61 +#define ROT_15 28 +#define ROT_16 55 +#define ROT_17 25 +#define ROT_18 21 +#define ROT_19 56 +#define ROT_20 27 +#define ROT_21 20 +#define ROT_22 39 +#define ROT_23 8 +#define ROT_24 14 + +static const uint64_t roundconstants[KECCAK_ROUNDS] = { + 0x0000000000000001ULL, + 0x0000000000008082ULL, + 0x800000000000808aULL, + 0x8000000080008000ULL, + 0x000000000000808bULL, + 0x0000000080000001ULL, + 0x8000000080008081ULL, + 0x8000000000008009ULL, + 0x000000000000008aULL, + 0x0000000000000088ULL, + 0x0000000080008009ULL, + 0x000000008000000aULL, + 0x000000008000808bULL, + 0x800000000000008bULL, + 0x8000000000008089ULL, + 0x8000000000008003ULL, + 0x8000000000008002ULL, + 0x8000000000000080ULL, + 0x000000000000800aULL, + 0x800000008000000aULL, + 0x8000000080008081ULL, + 0x8000000000008080ULL, + 0x0000000080000001ULL, + 0x8000000080008008ULL +}; + +static void keccak_function (uint64_t *state, unsigned rounds) +{ + unsigned i; + unsigned start_round; + + /* Temporary variables to avoid indexing overhead */ + uint64_t a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12; + uint64_t a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24; + + uint64_t b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12; + uint64_t b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24; + + uint64_t c0, c1, c2, c3, c4, d; + + a0 = state[0]; + a1 = state[1]; + a2 = state[2]; + a3 = state[3]; + a4 = state[4]; + a5 = state[5]; + a6 = state[6]; + a7 = state[7]; + a8 = state[8]; + a9 = state[9]; + a10 = state[10]; + a11 = state[11]; + a12 = state[12]; + a13 = state[13]; + a14 = state[14]; + a15 = state[15]; + a16 = state[16]; + a17 = state[17]; + a18 = state[18]; + a19 = state[19]; + a20 = state[20]; + a21 = state[21]; + a22 = state[22]; + a23 = state[23]; + a24 = state[24]; + + if (rounds == 24) + start_round = 0; + else /* rounds == 12 */ + start_round = 12; + + for (i = start_round; i < KECCAK_ROUNDS; ++i) { + /* + Uses temporary variables and loop unrolling to + avoid array indexing and inner loops overhead + */ + + /* Prepare column parity for Theta step */ + c0 = a0 ^ a5 ^ a10 ^ a15 ^ a20; + c1 = a1 ^ a6 ^ a11 ^ a16 ^ a21; + c2 = a2 ^ a7 ^ a12 ^ a17 ^ a22; + c3 = a3 ^ a8 ^ a13 ^ a18 ^ a23; + c4 = a4 ^ a9 ^ a14 ^ a19 ^ a24; + + /* Theta + Rho + Pi steps */ + d = c4 ^ ROL64(c1, 1); + b0 = d ^ a0; + b16 = ROL64(d ^ a5, ROT_01); + b7 = ROL64(d ^ a10, ROT_02); + b23 = ROL64(d ^ a15, ROT_03); + b14 = ROL64(d ^ a20, ROT_04); + + d = c0 ^ ROL64(c2, 1); + b10 = ROL64(d ^ a1, ROT_05); + b1 = ROL64(d ^ a6, ROT_06); + b17 = ROL64(d ^ a11, ROT_07); + b8 = ROL64(d ^ a16, ROT_08); + b24 = ROL64(d ^ a21, ROT_09); + + d = c1 ^ ROL64(c3, 1); + b20 = ROL64(d ^ a2, ROT_10); + b11 = ROL64(d ^ a7, ROT_11); + b2 = ROL64(d ^ a12, ROT_12); + b18 = ROL64(d ^ a17, ROT_13); + b9 = ROL64(d ^ a22, ROT_14); + + d = c2 ^ ROL64(c4, 1); + b5 = ROL64(d ^ a3, ROT_15); + b21 = ROL64(d ^ a8, ROT_16); + b12 = ROL64(d ^ a13, ROT_17); + b3 = ROL64(d ^ a18, ROT_18); + b19 = ROL64(d ^ a23, ROT_19); + + d = c3 ^ ROL64(c0, 1); + b15 = ROL64(d ^ a4, ROT_20); + b6 = ROL64(d ^ a9, ROT_21); + b22 = ROL64(d ^ a14, ROT_22); + b13 = ROL64(d ^ a19, ROT_23); + b4 = ROL64(d ^ a24, ROT_24); + + /* Chi + Iota steps */ + a0 = b0 ^ (~b1 & b2) ^ roundconstants[i]; + a1 = b1 ^ (~b2 & b3); + a2 = b2 ^ (~b3 & b4); + a3 = b3 ^ (~b4 & b0); + a4 = b4 ^ (~b0 & b1); + + a5 = b5 ^ (~b6 & b7); + a6 = b6 ^ (~b7 & b8); + a7 = b7 ^ (~b8 & b9); + a8 = b8 ^ (~b9 & b5); + a9 = b9 ^ (~b5 & b6); + + a10 = b10 ^ (~b11 & b12); + a11 = b11 ^ (~b12 & b13); + a12 = b12 ^ (~b13 & b14); + a13 = b13 ^ (~b14 & b10); + a14 = b14 ^ (~b10 & b11); + + a15 = b15 ^ (~b16 & b17); + a16 = b16 ^ (~b17 & b18); + a17 = b17 ^ (~b18 & b19); + a18 = b18 ^ (~b19 & b15); + a19 = b19 ^ (~b15 & b16); + + a20 = b20 ^ (~b21 & b22); + a21 = b21 ^ (~b22 & b23); + a22 = b22 ^ (~b23 & b24); + a23 = b23 ^ (~b24 & b20); + a24 = b24 ^ (~b20 & b21); + } + + state[0] = a0; + state[1] = a1; + state[2] = a2; + state[3] = a3; + state[4] = a4; + state[5] = a5; + state[6] = a6; + state[7] = a7; + state[8] = a8; + state[9] = a9; + state[10] = a10; + state[11] = a11; + state[12] = a12; + state[13] = a13; + state[14] = a14; + state[15] = a15; + state[16] = a16; + state[17] = a17; + state[18] = a18; + state[19] = a19; + state[20] = a20; + state[21] = a21; + state[22] = a22; + state[23] = a23; + state[24] = a24; +} diff --git a/crypto/keccak/keccak.h b/crypto/keccak/keccak.h new file mode 100644 index 00000000..28fa66fb --- /dev/null +++ b/crypto/keccak/keccak.h @@ -0,0 +1,41 @@ +/* + * An implementation of the SHA3 (Keccak) hash function family. + * + * Algorithm specifications: http://keccak.noekeon.org/ + * NIST Announcement: + * http://csrc.nist.gov/groups/ST/hash/sha-3/winner_sha-3.html + * + * Written in 2013 by Fabrizio Tarizzo + * + * =================================================================== + * The contents of this file are dedicated to the public domain. To + * the extent that dedication to the public domain is not available, + * everyone is granted a worldwide, perpetual, royalty-free, + * non-exclusive license to exercise all rights associated with the + * contents of this file for any purpose whatsoever. + * No rights are reserved. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * =================================================================== +*/ + +#pragma once +#include +#include + +struct keccak_state; + +int keccak_reset(keccak_state *state); +int keccak_init(keccak_state **state, size_t capacity_bytes, uint8_t rounds); +int keccak_destroy(keccak_state *state); +int keccak_absorb(keccak_state *self, const uint8_t *in, size_t length); +int keccak_squeeze(keccak_state *self, uint8_t *out, size_t length, uint8_t padding); +int keccak_digest(keccak_state *state, uint8_t *digest, size_t len, uint8_t padding); +int keccak_copy(const keccak_state *src, keccak_state *dst); diff --git a/crypto/test/fift.cpp b/crypto/test/fift.cpp index 098c5561..049507fd 100644 --- a/crypto/test/fift.cpp +++ b/crypto/test/fift.cpp @@ -33,9 +33,14 @@ std::string load_test(std::string name) { return td::read_file_str(current_dir() + "fift/" + name).move_as_ok(); } -td::Status run_fift(std::string name, bool preload_fift = true) { - TRY_RESULT(res, fift::mem_run_fift(load_test(name))); - REGRESSION_VERIFY(res.output); +td::Status run_fift(std::string name, bool expect_error = false, bool preload_fift = true) { + auto res = fift::mem_run_fift(load_test(name)); + if (expect_error) { + res.ensure_error(); + return td::Status::OK(); + } + res.ensure(); + REGRESSION_VERIFY(res.ok().output); return td::Status::OK(); } @@ -79,7 +84,7 @@ TEST(Fift, testvmprog) { run_fift("testvmprog.fif"); } TEST(Fift, bug) { - run_fift("bug.fif"); + run_fift("bug.fif", true); } TEST(Fift, contfrac) { run_fift("contfrac.fif"); @@ -130,3 +135,31 @@ TEST(Fift, test_namespaces) { TEST(Fift, test_asm_nested_program) { run_fift("asm-nested-program.fif"); } + +TEST(Fift, test_adddiv) { + run_fift("adddiv.fif"); +} + +TEST(Fift, test_tvm_runvm) { + run_fift("tvm_runvm.fif"); +} + +TEST(Fift, test_hash_ext) { + run_fift("hash_ext.fif"); +} + +TEST(Fift, test_deep_stack_ops) { + run_fift("deep_stack_ops.fif"); +} + +TEST(Fift, test_rist255) { + run_fift("rist255.fif"); +} + +TEST(Fift, test_bls) { + run_fift("bls.fif"); +} + +TEST(Fift, test_bls_ops) { + run_fift("bls_ops.fif"); +} diff --git a/crypto/test/fift/adddiv.fif b/crypto/test/fift/adddiv.fif new file mode 100644 index 00000000..96be6525 --- /dev/null +++ b/crypto/test/fift/adddiv.fif @@ -0,0 +1,144 @@ +{ + =: ans-r =: ans-q =: mode + =: z =: w =: y =: x + ."MULADDDIVMOD " @' x . @' y . @' w . @' z . @' mode . ."= " @' ans-q . @' ans-r . cr + @' x @' y @' w @' z + abort"Incorrect r" + @' ans-q <> abort"Incorrect q" +} : test-muladddivmod + +{ + =: ans-r =: ans-q =: mode + =: y =: w =: x + ."ADDDIVMOD " @' x . @' w . @' y . @' mode . ."= " @' ans-q . @' ans-r . cr + @' x @' w @' y + abort"Incorrect r" + @' ans-q <> abort"Incorrect q" +} : test-adddivmod + +{ + =: ans-r =: ans-q =: mode + =: z =: w =: y =: x + ."SHLADDDIVMOD " @' x . @' y . @' w . @' z . @' mode . ."= " @' ans-q . @' ans-r . cr + @' x @' w @' z @' y + abort"Incorrect r" + @' ans-q <> abort"Incorrect q" +} : test-shladddivmod + +{ + =: ans-r =: ans-q =: mode + =: z =: w =: y =: x + ."MULADDSHRMOD " @' x . @' y . @' w . @' z . @' mode . ."= " @' ans-q . @' ans-r . cr + @' x @' y @' w @' z + abort"Incorrect r" + @' ans-q <> abort"Incorrect q" +} : test-muladdshrmod + +729 -212 552 0 0 517 test-adddivmod +823 -139 -918 1 -1 -234 test-adddivmod +-470 977 47 2 11 -10 test-adddivmod +-5 -171 880 0 -1 704 test-adddivmod +605 699 -379 1 -3 167 test-adddivmod +982 -24 -267 2 -3 157 test-adddivmod +194 826 859 0 1 161 test-adddivmod +-553 33 -715 1 1 195 test-adddivmod +-423 -714 547 2 -2 -43 test-adddivmod +-806 266 637 0 -1 97 test-adddivmod +-487 863 90 1 4 16 test-adddivmod +444 659 232 2 5 -57 test-adddivmod +847 -700 -365 -798 0 743 -351 test-muladddivmod +494 -849 840 741 1 -565 99 test-muladddivmod +400 -324 -34 146 2 -887 -132 test-muladddivmod +-794 -276 -111 -353 0 -621 -180 test-muladddivmod +251 311 869 -582 1 -136 -222 test-muladddivmod +979 131 -24 -94 2 -1364 9 test-muladddivmod +772 67 -467 -873 0 -59 -250 test-muladddivmod +648 881 123 875 1 653 -364 test-muladddivmod +-972 -809 473 720 2 1093 -139 test-muladddivmod +-184 454 689 607 0 -137 312 test-muladddivmod +368 280 -998 253 1 403 83 test-muladddivmod +10 695 776 -318 2 -24 94 test-muladddivmod +-501 5 441 782 0 -20 49 test-shladddivmod +-872 3 878 162 1 -38 58 test-shladddivmod +-546 3 645 981 2 -3 -780 test-shladddivmod +-709 8 -83 -814 0 223 -65 test-shladddivmod +-836 5 792 40 1 -649 0 test-shladddivmod +910 7 -777 -383 2 -302 37 test-shladddivmod +128 4 447 -745 0 -4 -485 test-shladddivmod +121 5 668 888 1 5 100 test-shladddivmod +106 3 973 637 2 3 -90 test-shladddivmod +235 8 203 -411 0 -147 -54 test-shladddivmod +-89 1 221 634 1 0 43 test-shladddivmod +-212 5 178 -505 2 14 464 test-shladddivmod +-406 -624 -613 2 0 63182 3 test-muladdshrmod +-933 254 344 4 1 -14790 2 test-muladdshrmod +-25 -859 -817 10 2 21 -846 test-muladdshrmod +551 -734 795 2 0 -100910 1 test-muladdshrmod +891 -921 725 1 1 -409943 0 test-muladdshrmod +839 432 890 8 2 1420 -182 test-muladdshrmod +399 -199 715 8 0 -308 162 test-muladdshrmod +-436 68 662 3 1 -3623 -2 test-muladdshrmod +739 -560 833 10 2 -403 -335 test-muladdshrmod +207 690 945 6 0 2246 31 test-muladdshrmod +187 -437 -78 7 1 -639 -5 test-muladdshrmod +352 313 434 5 2 3457 -14 test-muladdshrmod +25527586395537789869570741399081402682256851060036756777914400562788085574414 -25113160904436633803354228324572450480033217030010944063278205598870671865288 -2256017777568044393040721989849804550406163786581604155567013427587080747425 0 -1 -1841592286466888326824208915340852348182529756555791440930818463669667038299 test-adddivmod +-32640246231411323106115073889225624429888478001529402430751550293198007894765 -37905632746827282747258884343685092209247121139851002852469398603088743361022 18753000550171967665955942657615296985943924316121913951069685581208211144632 1 -4 4466123222449264810449812397550471304640098123107250521057793428546093322741 test-adddivmod +-95549375212741069607980980863332591640631650412403896229315709698307081396373 106240530356563762252550465652293166037855203388135409179201250774369290711413 63027891874179850739525204890840444316414650119364284762072976150516424705738 2 1 -52336736730357158094955720101879869919191097143632771812187435074454215390698 test-adddivmod +51890526097631236478215460328003213527162540175278758108042092328342498521783 19183851048961131310064308531261717471288729454763519442604661504489273629484 37741726035775552009535280639145255965240492091225040562231509956705484553131 0 1 33332651110816815778744488220119675033210777538817236988415243876126287598136 test-adddivmod +94071222795948162024492074951491627130123473883831806178173544936543536671735 -79181277644495598779765208777007083667700785694819686730856530041854640922750 101162201634522410327363362416275476419529310370084833033537453927088908146625 1 0 14889945151452563244726866174484543462422688189012119447317014894688895748985 test-adddivmod +106849434942283600005926697698751951080751408318517871682753577855332568068854 -24045207490958235002714107597178464324559754040415520751984110097220649552695 74679027778960833059271215597415768445807741415021004423546293120031915119911 2 2 -66553828106596301115329841093258050135423828551939657916323118481951911723663 test-adddivmod +-111083603622141356205460042548478779196244111142279948844255415507465496179136 75885719295648796212066209648237285368659643103523469813991536525258102456646 17487288729375302809394363552184340106515810164188804948959885094558256876961 0 -3 17263981861633348434789257756311526491962962453809935816615776301467376908393 test-adddivmod +33525382765608498977714984645580937896464574678957613892455278004374765395791 -31203451453013366071092485074296252911543265223612191519873428434459391093162 8205361318951100784724737477089194897616580930791932431609075219761273143789 1 0 2321931312595132906622499571284684984921309455345422372581849569915374302629 test-adddivmod +-75999952514508567055051892339604431790575024284443576993806836353012574839934 60096525995012658905135417908615298741753181036991250015243181812480959008245 25156241733999421479698222967097698882671132665627779117308277826680836574301 2 0 -15903426519495908149916474430989133048821843247452326978563654540531615831689 test-adddivmod +-25810038415830521876908334245348683093953748145428320530928049623042163542952 13768870762468614895982523795103333718119339794093637483718383357794846902545 -23455630873759864343226329762160671724884569294252944494055101268304334927469 0 0 -12041167653361906980925810450245349375834408351334683047209666265247316640407 test-adddivmod +65295636229319469142829758722387755590067603179313024098599396192036031682932 -14508864012052681942310481748034005897814022127985455644382059031122725256639 101258243423658080118042170583591218535452530372858366205652259477702813508611 1 1 -50471471206391292917522893609237468843198949321530797751434922316789507082318 test-adddivmod +-9782778804673764937901196234199348720011483228792837975519798751976472498576 97723276666278794523978327321824380269179391405498018632142147588187660001006 -49342195947431856333198825767811410708861002865285674269877261690183407963360 2 -1 38598301914173173252878305319813620840306905311419506386745087146027779539070 test-adddivmod +69314796062889467182180663903322273169679119368960545268948720263471816924632 93795938161576335898249305761803240528541213785951419531969609595386829401314 -110346049538998400484346689828188917177083570083289016450597131164930681126587 81149113889296322255375738811288869158926250513403232273765830197055460701260 0 80117280566567035416625919712742621817262121093084845174084285957987697395276 42036691045037437094861959671408390901385540330966807308270651575596167392101 test-muladddivmod +-21971450167728355573106502799062118429867408154846289128369107182511643511483 45393555019045493054213057422940072801743824102220594624535868754509418047929 60641652588698494073802822494164156953515858330346793601084497228687965671868 65539824510463171124453489789915597533293103308691110446148835625201340366598 1 -15217651854984270515658273738098718647212153016787679186857576358263739302058 -29371413441460037863394670149687230435838766165616129771684695789862414338155 test-muladddivmod +73634008615213489758113683559933051942050608504790565710917645985405082665491 -80155625965090770138821073870266428949137773405175831429923552413761952441361 -38999294453130493506999209141746004309873017414282530140731810289885759492802 -107314816556101242244916895079818037889329087681097150645968648449136338086659 2 54998743344874712983373052080844956119323047070936199528619384334263523872368 13082689556615721830015990667012489975468766353417550442844496303849124272459 test-muladddivmod +68441985454806782074858763992903374541757416422223520705458179994903492447753 -61267036145362164840470993649039311748277914273628051012777836672446118682406 88886725386626308975645991554561163959863903429407091061340939714760192334434 -55192455525382179382269200386360902483303866088141254649003462525396159498006 0 75974833096374772090455746107157391488128832802648627140447901963962285642644 -35281244576421605907379124849976697589234314365299818483123805214351816431420 test-muladddivmod +13991345100229597325861930387540671073560101799369013558248988792137436010794 32261366615236683296917985913895811707233003589900325435836147185374329094359 -35081305217709330815376010427375742966580511272499524644418734096933080609103 34617350357576952655827361801899194862477556493235499468927833026852355915741 1 13039123706936329824826187692520278079826111394035475962656812793878481550617 15501972367754182150585081456806290271752173495030969288120604381172009339746 test-muladddivmod +54599312873997957959553141264956574941720752239162126863069720527738322459321 743784849758283770307843473486531088082399957077059004634332280604041992918 -82452755014987554458459818028526388807440160648566275282022897198718871469325 38291925157759929750140152840087355208836284729075633154257868030142639468974 2 1060540611514863450709563259060420401132951143137987621813620016383521959845 -25576601802989288764264589884413515994814497538433618559906725414501597729677 test-muladddivmod +-33715442018098691670021742265266162391174212035380017502572244718418822715623 104887034421874269674272525533704680767916752281317133765280341780898862714955 40882837978738774675184345709913504579827188391303805465905655071457659357026 56761521466376613401789060160037629513193949115508135629309104361041554577464 0 -62301232175317956930653590924038385722281926697603233811485244969539670459488 12675521639977150682490928392886170001456429479565150104484728889568554893493 test-muladddivmod +-109706830967107194245468623157302140481713559442721649770259230494532080435232 91091244832469326414116901981654442590329304825709696121493056753007506269108 25586919878947735367325917367337541421822321271842417480093738776553133015696 92030412800134708014057990497075561862656985932946512327644864855223778050176 1 -108587275612051383813143325045450855254642049763863834262763340362417287376196 14236417728543624555544633487823994857557292455110879135165049494799852613136 test-muladddivmod +-55349740795363582739414701155082958898639391946026926848599395086577482106561 5153084015148055450516513461735201914781593572521892141092888805185704024388 -65052157988798026904166625513790079385321361518951356077015576483034859919945 -102114306233907646655227677599549837347948442788318424043410967802211179284463 2 2793162633665004752332533372431053166813934025727573730237936408503456830715 70263858264069476764017250048942592796103230166090146586104085945931001951432 test-muladddivmod +-39413219476407785933419341321985162122574957075787517059529471719124009278433 -11397560582871643424486223364245599528148517163558642929375020427946855266926 72776685568498650781344357948907544676236244067805626443550533574512635929751 58457602475162312341105487265860863804074002837155658624106642883511552164475 0 7684450571493046035065075993797738633610800975055222799851151005079197271998 25447845742266018765952184307141986304437190746678223193451015171399298065659 test-muladddivmod +28902743859707224532426872535592986589584185136999529704427764834614586536146 30118285526375438691436500554083725474584606124188443987423181314058619658259 -112947693515558587819874917596387701093051538659457576158697245759111287251112 -20731780512952622217494754630018335482763668682808767673633845662171371751908 1 -41988727958917592867685340883133510770733630298849576855386410060863664014757 6354934151364300917311007564393521634968794138377927567288802927545928772346 test-muladddivmod +25071799008788838242365403068059094326298333378650328613993357620568407227394 -27895932377486960662691379394722126815225783254727720878708826335618109428175 -34783759350459778495483474263506062490621190762057336926096642777973708891199 -46562500545170684944465306233470472124382229989733955650634447552911654749066 2 15020696945874349483297599474537626462120625640258473403957682700588115661859 6123529058588613987393724235023234231421775050193606259696039938834907756545 test-muladddivmod +4637334961015630956409530377119128659169399268652032534941609159910059786532 174 -12797497544848087213503981396389428116533825336325463794725594822879690679136 93018556588730187003792638630891717650672350374200759319903911998812002342061 0 1193763005785115313715849486131901382204829468191839 86009298512437248420661887032254663876544001080814196765583913598468234097773 test-shladddivmod +63737576485202419511398757422488387344373087691300709744039454443359600742212 17 4434935617055335860270673726237887676208015615002198868506400573861444556411 2395017004775767547761160570739886212190100215618999647636254869255450984262 1 3488166 -825476601398469938219841341785340947550825081895127156723070705988041475817 test-shladddivmod +-21264162232365890547240808872203618534857207092355857230053229357857057625546 79 83558436280879393517752968647441646810997015153366115449062116401734553793990 -19667935035506461778339921177556508690003173951785474262950610395510252887673 2 653520430812207296424074 11997579569142787892139960093229284888868038054542931791709721193377458047744 test-shladddivmod +50327589756875372367121062573124726147569135695110368165104387616199145495643 159 -56582804136162261915738821952650758787670281453734279574878610404888378091325 41794171917267054297819695791653745099726306264896745093211576006595621865899 0 879953489426631344181134857312933722690648995542 7479251035838043422275284357505479089411783830647758441772426265279908213201 test-shladddivmod +-6790346796221361248085433832482913268295667476610056123099942839800062619360 99 -30655005682505720678929136056715874580886440550632733046480550204329894400037 107280989788626394506897862107199815360330755655673306259970134464147378777352 1 -40117951973353319220033820651 15419963034230519057842831193590832882628829971176441336761525930488437456435 test-shladddivmod +19046177038646178344769825269053799430308794840550024608332777213474587282651 33 3489319764096497921939317127917520109408688444737580375038679679318170964558 32230702261963164880326384192551720153568540700317784363615498612027586166919 2 5076073543 -31149228513135397726284948367312236333921327766221169520773046236565040396067 test-shladddivmod +-110976730374012300153801377038320854184737548404302035494280064993634691387718 177 62599745911697906087525399889373248851994389233059198427444302208529620264342 2939901734097150061182352721440114362417026502565316012346244994332394908737 0 -7231166201303287776306953132498157445481985675557698778 861631401006029279966827198914714166628754059441816200263218068486981128432 test-shladddivmod +31852390609689123349381354058350609996064615917952716537339963695989162024629 72 -96928192014181974842953135946922776102933173463512906699090906721752057028243 92656901870085089608820151790239083253300815942245860126341275046871599043017 1 1623394035183378246274 -40717467475217300542569194922405492138512784779596821986363220696851482878117 test-shladddivmod +108325270025037161417115474167849009240382377052459846115851642255437288685912 79 -47995506721499545563379889382854078032364619862028413664240909132079634758006 -6166659869789359796343211847537623762770094929722294841335533066616771405539 2 -10618164339787666672859802 2975209691732235673066443530343246725711182217991112340969803628522007294972 test-shladddivmod +-102030576317847732070693755030275793160072651528715762716678938494538431797856 162 92259248995288252713115460931891173987977282785918620735892298001910599707421 93069691103831234597581468228357432179178680731051507965844021657079407259554 0 -6408868561946334361312419431284710070541388837754 30090871674656727061174631170248864679275378922263881716308993939778213471313 test-shladddivmod +109919709354382523017092140618288318375226272062645130510340454988137017880658 32 11403889262848182921779993946145880893942415285082669079885795084154364295755 -35203479084324376157414643218816253627488669490337878341936871887579427112193 1 -13410650571 -9079152369425295070217928786983170793628233088577531145426537161436231255680 test-shladddivmod +32604320264365535336905506430047200856461747148561589244458238442999859570507 87 53600018835628474925583604580250089573381703851509998750334950185805444447855 -13714304553912094478086374486990066534941196173664347737943079140839510240 2 -367884070882655630785891877843 6730574288892465511219887918570728429135366732586091870751580223301793231 test-shladddivmod +-6528863440223970638249234714151581865561638514865295384371332680662061970029 -36913540142944821177073496030226577063991271774591429797367434456256316959902 24604605953723174243828240349210337384146509969508816161702610762299708087414 252 0 33301544418230523796798136129325191903276669555089137976430642606666380785097 1111119448521463468919386205636226935698167866010067725789944817681239062460 test-muladdshrmod +-84914121307006819861534520354024886732959304976576667909765018675779753895095 -33734797430686302202051663614563177864696792935288850099657207932669766616337 -102660654939881416004941779328139233368526378948134839417440263136258000263276 254 1 98955315519894417210680117251614014274294848178227094975298724352068617948436 11185753669896509258573194177216136324346588911755615485008785003988287318715 test-muladdshrmod +-4756805439354914657157062146720760601779363897648559488036119230046473414258 -25205069919224711211607424233708613506619570034044466450241534811277675992336 65841615838405859557610720340525261800430556950418299394523533586361728325556 253 2 8283509830821873572245889567787981786085701113981069889850529960221182899414 -8998763596547876718672658010959335659555767305449508909489610444294401222444 test-muladdshrmod +783982375644419567722751049236700086045042736024464491262223120876229442273 5175287637281731481295785519248883235846260036385254885568602894849814368811 -55298781556612762404255558682268367199188235546843731267393108383385576323488 255 0 70079645738212902632136650950755273036821422652512833810215828489102796342 57092783249763565645949150057908892679575599568561392603234275558727880866859 test-muladdshrmod +4070111884734287416608979312653292787122202104172152519474989991166732734990 34257747897608142079436828950758942168797726684869935923750014522979867949066 -61460807674782162344337010795962912420813084141671620888972984019328919535019 255 1 2408331480685488199417578349126812242697171581435356157803139449785540375610 -22381063802952741956988549732332921247382434293458568395759850191487471696159 test-muladdshrmod +46624156993487206784214341981008205045812193232799951047364876541247557155655 -63729769095463769066210525784474878773448422698647046890735133366216202823024 87326180659880540224448931705993651721770461620305276267209594753354088752298 254 2 -102644205801514086102164756532696646475956724447744150113359070359995022772818 -1428092989561848018204511966860198528552911262896258786227284617693530033510 test-muladdshrmod +39272829609755756484322638781158254787641099751271808569134728682168699365109 -11052442053174551837010800294891429615750956891563661801761360982769602119895 -283548082261175812447439483712866143310217576711284967538745642449188994625 253 0 -29988969117668461072095834210490978680262152778767346814972545689246419413980 2174529687955394421606608137904112203633356592266557030912275482323503849980 test-muladdshrmod +-6634646688578172858373436607694752472569893432402323211016655704885763912303 -50615746987061510852137844454230120888792101396398105566610972957006661885326 39885934214260485879330356646246293765018634098614146427190880259955614376279 255 1 5800354762566883489975672198380697469946049260633808174115670550957411425502 -28109144677804577765510965536534358513109159026887377398047363431999553081879 test-muladdshrmod +36957305118458084509865949238755863689212814576372103672502961803454095738285 -17426859900126562814159340928393951526114707618474312299911007064028697482925 61889497203091392721847485067819343116261217894188379032096092268147391639006 252 2 -88993959131783882197769064733391828196442843554551869076190294411733289296212 -933414186558473122333257942263787394321322401897335201713504555165014099467 test-muladdshrmod +72799360004808200591693183601526367934146450159257557514619233204077568035423 -43259113456489928181943264810324365449524922073847088046666461901052175252848 -20928308093701346202205365707157304905304946151034389446852806842785919722024 255 0 -54394661928130271541114188703398383016925401302362215366329066394036243394378 29938721175889548572374867166785136077053268439086595306734647725317227983176 test-muladdshrmod +92302382053431541957491748846080777012291600699830575887072283670295321137177 69013668157296288202299005784733240169135155398176346313070175201757132886117 89824190356716673951870631561712249743053597592009107233443818823508120467661 255 1 110026963104671419264446752630572096381373731021551359794924308423043643793015 -23908158790588303139174012402649398780932740824917520006353845804429534584150 test-muladdshrmod +19094862392572944474897897922146461521059803020953497046241755599584285859217 -9623105143646767554719516123478862168481718581670270810378662760058752527692 34811921737822512587681133088401450937187249507755006187477956368554274579224 255 2 -3173824217483389220453883003236448477412384215802980550708734379368313500289 -51434014928851488423168753814799098916141626164449965549730115348405330387188 test-muladdshrmod \ No newline at end of file diff --git a/crypto/test/fift/bls.fif b/crypto/test/fift/bls.fif new file mode 100644 index 00000000..ca9a9d37 --- /dev/null +++ b/crypto/test/fift/bls.fif @@ -0,0 +1,954 @@ +// Based on https://github.com/ethereum/bls12-381-tests +"Asm.fif" include +"FiftExt.fif" include + +{ shash swap shash B= } : slices-eq? + +{ + =: expected-result + // ."Args: " .s + [[ <{ BLS_VERIFY }>s ]] 0 runvmx + abort"exitcode != 0" + ."Result: " dup . cr + ."Expected: " @' expected-result dup . cr cr + <> abort"wrong answer" +} : test-verify // pub msg signature exprected-result + +{ + =: expected-result + // ."Args: " .s + [[ <{ BLS_AGGREGATE }>s ]] 0 runvmx + { drop x{} } if + ."Result: " dup csr. + ."Expected: " @' expected-result dup csr. cr + slices-eq? not abort"wrong answer" +} : test-aggregate // sig[1] ... sig[n] n expected-result + +{ + =: expected-result + // ."Args: " .s + [[ <{ BLS_FASTAGGREGATEVERIFY }>s ]] 0 runvmx + abort"exitcode != 0" + ."Result: " dup . cr + ."Expected: " @' expected-result dup . cr cr + <> abort"wrong answer" +} : test-fast-aggregate-verify // pub[1] ... pub[n] n msg signature exprected-result + +{ + =: expected-result + // ."Args: " .s + [[ <{ BLS_AGGREGATEVERIFY }>s ]] 0 runvmx + abort"exitcode != 0" + ."Result: " dup . cr + ."Expected: " @' expected-result dup . cr cr + <> abort"wrong answer" +} : test-aggregate-verify // pub[1] msg[1] ... pub[n] msg[n] n signature exprected-result + +."Test verifycase_one_privkey_47117849458281be" cr +x{97f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb} +x{1212121212121212121212121212121212121212121212121212121212121212} +x{a42ae16f1c2a5fa69c04cb5998d2add790764ce8dd45bf25b29b4700829232052b52352dcff1cf255b3a7810ad7269601810f03b2bc8b68cf289cf295b206770605a190b6842583e47c3d1c0f73c54907bfb2a602157d46a4353a20283018763} +-1 +test-verify + +."Test verify_infinity_pubkey_and_infinity_signature" cr +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +x{1212121212121212121212121212121212121212121212121212121212121212} +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-verify + +."Test verify_tampered_signature_case_195246ee3bd3b6ec" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +x{ae82747ddeefe4fd64cf9cedb9b04ae3e8a43420cd255e3c7cd06a8d88b7c7f8638543719981c5d16fa3527c468c25f0026704a6951bde891360c7e8d12ddee0559004ccdbe6046b55bae1b257ee97f7cdb955773d7cf29adf3ccbb9ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_2ea479adf8c40300" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{882730e5d03f6b42c3abc26d3372625034e1d871b65a8a6b900a56dae22da98abbe1b68f85e49fe7652a55ec3d0591c20767677e33e5cbb1207315c41a9ac03be39c2e7668edc043d6cb1d9fd93033caa8a1c5b0e84bedaeb6c64972ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_2f09d443ab8a3ac2" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b23c46be3a001c63ca711f87a005c200cc550b9429d5f4eb38d74322144f1b63926da3388979e5321012fb1a0526bcd100b5ef5fe72628ce4cd5e904aeaa3279527843fae5ca9ca675f4f51ed8f83bbf7155da9ecc9663100a885d5dffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_3208262581c8fc09" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{af1390c3c47acdb37131a51216da683c509fce0e954328a59f93aebda7e4ff974ba208d9a4a2a2389f892a9d418d618418dd7f7a6bc7aa0da999a9d3a5b815bc085e14fd001f6a1948768a3f4afefc8b8240dda329f984cb345c6363ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_6b3b17f6962a490c" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{a4efa926610b8bd1c8330c918b7a5e9bf374e53435ef8b7ec186abf62e1b1f65aeaaeb365677ac1d1172a1f5b44b4e6d022c252c58486c0a759fbdc7de15a756acc4d343064035667a594b4c2a6f0b0b421975977f297dba63ee2f63ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_6eeb7c52dfd9baf0" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{abababababababababababababababababababababababababababababababab} +x{9674e2228034527f4c083206032b020310face156d4a4685e2fcaec2f6f3665aa635d90347b6ce124eb879266b1e801d185de36a0a289b85e9039662634f2eea1e02e670bc7ab849d006a70b2f93b84597558a05b879c8d445f387a5ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_8761a0b7e920c323" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{abababababababababababababababababababababababababababababababab} +x{91347bccf740d859038fcdcaf233eeceb2a436bcaaee9b2aa3bfb70efe29dfb2677562ccbea1c8e061fb9971b0753c240622fab78489ce96768259fc01360346da5b9f579e5da0d941e4c6ba18a0e64906082375394f337fa1af2b71ffffffff} +0 +test-verify + +."Test verify_tampered_signature_case_d34885d766d5f705" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{948a7cb99f76d616c2c564ce9bf4a519f1bea6b0a624a02276443c245854219fabb8d4ce061d255af5330b078d5380681751aa7053da2c98bae898edc218c75f07e24d8802a17cd1f6833b71e58f5eb5b94208b4d0bb3848cecb075effffffff} +0 +test-verify + +."Test verify_tampered_signature_case_e8a50c445c855360" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380bffffffff} +0 +test-verify + +."Test verify_valid_case_195246ee3bd3b6ec" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +x{ae82747ddeefe4fd64cf9cedb9b04ae3e8a43420cd255e3c7cd06a8d88b7c7f8638543719981c5d16fa3527c468c25f0026704a6951bde891360c7e8d12ddee0559004ccdbe6046b55bae1b257ee97f7cdb955773d7cf29adf3ccbb9975e4eb9} +-1 +test-verify + +."Test verify_valid_case_2ea479adf8c40300" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{882730e5d03f6b42c3abc26d3372625034e1d871b65a8a6b900a56dae22da98abbe1b68f85e49fe7652a55ec3d0591c20767677e33e5cbb1207315c41a9ac03be39c2e7668edc043d6cb1d9fd93033caa8a1c5b0e84bedaeb6c64972503a43eb} +-1 +test-verify + +."Test verify_valid_case_2f09d443ab8a3ac2" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b23c46be3a001c63ca711f87a005c200cc550b9429d5f4eb38d74322144f1b63926da3388979e5321012fb1a0526bcd100b5ef5fe72628ce4cd5e904aeaa3279527843fae5ca9ca675f4f51ed8f83bbf7155da9ecc9663100a885d5dc6df96d9} +-1 +test-verify + +."Test verify_valid_case_3208262581c8fc09" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{af1390c3c47acdb37131a51216da683c509fce0e954328a59f93aebda7e4ff974ba208d9a4a2a2389f892a9d418d618418dd7f7a6bc7aa0da999a9d3a5b815bc085e14fd001f6a1948768a3f4afefc8b8240dda329f984cb345c6363272ba4fe} +-1 +test-verify + +."Test verify_valid_case_6b3b17f6962a490c" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{a4efa926610b8bd1c8330c918b7a5e9bf374e53435ef8b7ec186abf62e1b1f65aeaaeb365677ac1d1172a1f5b44b4e6d022c252c58486c0a759fbdc7de15a756acc4d343064035667a594b4c2a6f0b0b421975977f297dba63ee2f63ffe47bb6} +-1 +test-verify + +."Test verify_valid_case_6eeb7c52dfd9baf0" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{abababababababababababababababababababababababababababababababab} +x{9674e2228034527f4c083206032b020310face156d4a4685e2fcaec2f6f3665aa635d90347b6ce124eb879266b1e801d185de36a0a289b85e9039662634f2eea1e02e670bc7ab849d006a70b2f93b84597558a05b879c8d445f387a5d5b653df} +-1 +test-verify + +."Test verify_valid_case_8761a0b7e920c323" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{abababababababababababababababababababababababababababababababab} +x{91347bccf740d859038fcdcaf233eeceb2a436bcaaee9b2aa3bfb70efe29dfb2677562ccbea1c8e061fb9971b0753c240622fab78489ce96768259fc01360346da5b9f579e5da0d941e4c6ba18a0e64906082375394f337fa1af2b7127b0d121} +-1 +test-verify + +."Test verify_valid_case_d34885d766d5f705" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{948a7cb99f76d616c2c564ce9bf4a519f1bea6b0a624a02276443c245854219fabb8d4ce061d255af5330b078d5380681751aa7053da2c98bae898edc218c75f07e24d8802a17cd1f6833b71e58f5eb5b94208b4d0bb3848cecb075ea21be115} +-1 +test-verify + +."Test verify_valid_case_e8a50c445c855360" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +-1 +test-verify + +."Test verify_wrong_pubkey_case_195246ee3bd3b6ec" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +x{9674e2228034527f4c083206032b020310face156d4a4685e2fcaec2f6f3665aa635d90347b6ce124eb879266b1e801d185de36a0a289b85e9039662634f2eea1e02e670bc7ab849d006a70b2f93b84597558a05b879c8d445f387a5d5b653df} +0 +test-verify + +."Test verify_wrong_pubkey_case_2ea479adf8c40300" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{a4efa926610b8bd1c8330c918b7a5e9bf374e53435ef8b7ec186abf62e1b1f65aeaaeb365677ac1d1172a1f5b44b4e6d022c252c58486c0a759fbdc7de15a756acc4d343064035667a594b4c2a6f0b0b421975977f297dba63ee2f63ffe47bb6} +0 +test-verify + +."Test verify_wrong_pubkey_case_2f09d443ab8a3ac2" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +0 +test-verify + +."Test verify_wrong_pubkey_case_3208262581c8fc09" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{882730e5d03f6b42c3abc26d3372625034e1d871b65a8a6b900a56dae22da98abbe1b68f85e49fe7652a55ec3d0591c20767677e33e5cbb1207315c41a9ac03be39c2e7668edc043d6cb1d9fd93033caa8a1c5b0e84bedaeb6c64972503a43eb} +0 +test-verify + +."Test verify_wrong_pubkey_case_6b3b17f6962a490c" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{af1390c3c47acdb37131a51216da683c509fce0e954328a59f93aebda7e4ff974ba208d9a4a2a2389f892a9d418d618418dd7f7a6bc7aa0da999a9d3a5b815bc085e14fd001f6a1948768a3f4afefc8b8240dda329f984cb345c6363272ba4fe} +0 +test-verify + +."Test verify_wrong_pubkey_case_6eeb7c52dfd9baf0" cr +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{abababababababababababababababababababababababababababababababab} +x{91347bccf740d859038fcdcaf233eeceb2a436bcaaee9b2aa3bfb70efe29dfb2677562ccbea1c8e061fb9971b0753c240622fab78489ce96768259fc01360346da5b9f579e5da0d941e4c6ba18a0e64906082375394f337fa1af2b7127b0d121} +0 +test-verify + +."Test verify_wrong_pubkey_case_8761a0b7e920c323" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{abababababababababababababababababababababababababababababababab} +x{ae82747ddeefe4fd64cf9cedb9b04ae3e8a43420cd255e3c7cd06a8d88b7c7f8638543719981c5d16fa3527c468c25f0026704a6951bde891360c7e8d12ddee0559004ccdbe6046b55bae1b257ee97f7cdb955773d7cf29adf3ccbb9975e4eb9} +0 +test-verify + +."Test verify_wrong_pubkey_case_d34885d766d5f705" cr +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b23c46be3a001c63ca711f87a005c200cc550b9429d5f4eb38d74322144f1b63926da3388979e5321012fb1a0526bcd100b5ef5fe72628ce4cd5e904aeaa3279527843fae5ca9ca675f4f51ed8f83bbf7155da9ecc9663100a885d5dc6df96d9} +0 +test-verify + +."Test verify_wrong_pubkey_case_e8a50c445c855360" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{948a7cb99f76d616c2c564ce9bf4a519f1bea6b0a624a02276443c245854219fabb8d4ce061d255af5330b078d5380681751aa7053da2c98bae898edc218c75f07e24d8802a17cd1f6833b71e58f5eb5b94208b4d0bb3848cecb075ea21be115} +0 +test-verify + + +."Test aggregate_0x0000000000000000000000000000000000000000000000000000000000000000" cr +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +x{b23c46be3a001c63ca711f87a005c200cc550b9429d5f4eb38d74322144f1b63926da3388979e5321012fb1a0526bcd100b5ef5fe72628ce4cd5e904aeaa3279527843fae5ca9ca675f4f51ed8f83bbf7155da9ecc9663100a885d5dc6df96d9} +x{948a7cb99f76d616c2c564ce9bf4a519f1bea6b0a624a02276443c245854219fabb8d4ce061d255af5330b078d5380681751aa7053da2c98bae898edc218c75f07e24d8802a17cd1f6833b71e58f5eb5b94208b4d0bb3848cecb075ea21be115} +3 +x{9683b3e6701f9a4b706709577963110043af78a5b41991b998475a3d3fd62abf35ce03b33908418efc95a058494a8ae504354b9f626231f6b3f3c849dfdeaf5017c4780e2aee1850ceaf4b4d9ce70971a3d2cfcd97b7e5ecf6759f8da5f76d31} +test-aggregate + +."Test aggregate_0x5656565656565656565656565656565656565656565656565656565656565656" cr +x{882730e5d03f6b42c3abc26d3372625034e1d871b65a8a6b900a56dae22da98abbe1b68f85e49fe7652a55ec3d0591c20767677e33e5cbb1207315c41a9ac03be39c2e7668edc043d6cb1d9fd93033caa8a1c5b0e84bedaeb6c64972503a43eb} +x{af1390c3c47acdb37131a51216da683c509fce0e954328a59f93aebda7e4ff974ba208d9a4a2a2389f892a9d418d618418dd7f7a6bc7aa0da999a9d3a5b815bc085e14fd001f6a1948768a3f4afefc8b8240dda329f984cb345c6363272ba4fe} +x{a4efa926610b8bd1c8330c918b7a5e9bf374e53435ef8b7ec186abf62e1b1f65aeaaeb365677ac1d1172a1f5b44b4e6d022c252c58486c0a759fbdc7de15a756acc4d343064035667a594b4c2a6f0b0b421975977f297dba63ee2f63ffe47bb6} +3 +x{ad38fc73846583b08d110d16ab1d026c6ea77ac2071e8ae832f56ac0cbcdeb9f5678ba5ce42bd8dce334cc47b5abcba40a58f7f1f80ab304193eb98836cc14d8183ec14cc77de0f80c4ffd49e168927a968b5cdaa4cf46b9805be84ad7efa77b} +test-aggregate + +."Test aggregate_0xabababababababababababababababababababababababababababababababab" cr +x{91347bccf740d859038fcdcaf233eeceb2a436bcaaee9b2aa3bfb70efe29dfb2677562ccbea1c8e061fb9971b0753c240622fab78489ce96768259fc01360346da5b9f579e5da0d941e4c6ba18a0e64906082375394f337fa1af2b7127b0d121} +x{9674e2228034527f4c083206032b020310face156d4a4685e2fcaec2f6f3665aa635d90347b6ce124eb879266b1e801d185de36a0a289b85e9039662634f2eea1e02e670bc7ab849d006a70b2f93b84597558a05b879c8d445f387a5d5b653df} +x{ae82747ddeefe4fd64cf9cedb9b04ae3e8a43420cd255e3c7cd06a8d88b7c7f8638543719981c5d16fa3527c468c25f0026704a6951bde891360c7e8d12ddee0559004ccdbe6046b55bae1b257ee97f7cdb955773d7cf29adf3ccbb9975e4eb9} +3 +x{9712c3edd73a209c742b8250759db12549b3eaf43b5ca61376d9f30e2747dbcf842d8b2ac0901d2a093713e20284a7670fcf6954e9ab93de991bb9b313e664785a075fc285806fa5224c82bde146561b446ccfc706a64b8579513cfc4ff1d930} +test-aggregate + +."Test aggregate_infinity_signature" cr +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +1 +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +test-aggregate + +."Test aggregate_na_signatures" cr +0 +x{} +test-aggregate + +."Test aggregate_single_signature" cr +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +1 +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +test-aggregate + +."Test fast_aggregate_verify_extra_pubkey_4f079f946446fabf" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +3 +x{5656565656565656565656565656565656565656565656565656565656565656} +x{912c3615f69575407db9392eb21fee18fff797eeb2fbe1816366ca2a08ae574d8824dbfafb4c9eaa1cf61b63c6f9b69911f269b664c42947dd1b53ef1081926c1e82bb2a465f927124b08391a5249036146d6f3f1e17ff5f162f779746d830d1} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_extra_pubkey_5a38e6b4017fe4dd" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +4 +x{abababababababababababababababababababababababababababababababab} +x{9712c3edd73a209c742b8250759db12549b3eaf43b5ca61376d9f30e2747dbcf842d8b2ac0901d2a093713e20284a7670fcf6954e9ab93de991bb9b313e664785a075fc285806fa5224c82bde146561b446ccfc706a64b8579513cfc4ff1d930} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_extra_pubkey_a698ea45b109f303" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +2 +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_infinity_pubkey" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +4 +x{1212121212121212121212121212121212121212121212121212121212121212} +x{afcb4d980f079265caa61aee3e26bf48bebc5dc3e7f2d7346834d76cbc812f636c937b6b44a9323d8bc4b1cdf71d6811035ddc2634017faab2845308f568f2b9a0356140727356eae9eded8b87fd8cb8024b440c57aee06076128bb32921f584} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_na_pubkeys_and_infinity_signature" cr +0 +x{abababababababababababababababababababababababababababababababab} +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_na_pubkeys_and_na_signature" cr +0 +x{abababababababababababababababababababababababababababababababab} +x{000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_tampered_signature_3d7576f3c0e3570a" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +3 +x{abababababababababababababababababababababababababababababababab} +x{9712c3edd73a209c742b8250759db12549b3eaf43b5ca61376d9f30e2747dbcf842d8b2ac0901d2a093713e20284a7670fcf6954e9ab93de991bb9b313e664785a075fc285806fa5224c82bde146561b446ccfc706a64b8579513cfcffffffff} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_tampered_signature_5e745ad0c6199a6c" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +1 +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380bffffffff} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_tampered_signature_652ce62f09290811" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +2 +x{5656565656565656565656565656565656565656565656565656565656565656} +x{912c3615f69575407db9392eb21fee18fff797eeb2fbe1816366ca2a08ae574d8824dbfafb4c9eaa1cf61b63c6f9b69911f269b664c42947dd1b53ef1081926c1e82bb2a465f927124b08391a5249036146d6f3f1e17ff5f162f7797ffffffff} +0 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_valid_3d7576f3c0e3570a" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +3 +x{abababababababababababababababababababababababababababababababab} +x{9712c3edd73a209c742b8250759db12549b3eaf43b5ca61376d9f30e2747dbcf842d8b2ac0901d2a093713e20284a7670fcf6954e9ab93de991bb9b313e664785a075fc285806fa5224c82bde146561b446ccfc706a64b8579513cfc4ff1d930} +-1 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_valid_5e745ad0c6199a6c" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +1 +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b6ed936746e01f8ecf281f020953fbf1f01debd5657c4a383940b020b26507f6076334f91e2366c96e9ab279fb5158090352ea1c5b0c9274504f4f0e7053af24802e51e4568d164fe986834f41e55c8e850ce1f98458c0cfc9ab380b55285a55} +-1 +test-fast-aggregate-verify + +."Test fast_aggregate_verify_valid_652ce62f09290811" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +2 +x{5656565656565656565656565656565656565656565656565656565656565656} +x{912c3615f69575407db9392eb21fee18fff797eeb2fbe1816366ca2a08ae574d8824dbfafb4c9eaa1cf61b63c6f9b69911f269b664c42947dd1b53ef1081926c1e82bb2a465f927124b08391a5249036146d6f3f1e17ff5f162f779746d830d1} +-1 +test-fast-aggregate-verify + +."Test aggregate_verify_infinity_pubkey" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +x{1212121212121212121212121212121212121212121212121212121212121212} +4 +x{9104e74b9dfd3ad502f25d6a5ef57db0ed7d9a0e00f3500586d8ce44231212542fcfaf87840539b398bf07626705cf1105d246ca1062c6c2e1a53029a0f790ed5e3cb1f52f8234dc5144c45fc847c0cd37a92d68e7c5ba7c648a8a339f171244} +0 +test-aggregate-verify + +."Test aggregate_verify_na_pubkeys_and_infinity_signature" cr +0 +x{c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-aggregate-verify + +."Test aggregate_verify_na_pubkeys_and_na_signature" cr +0 +x{000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000} +0 +test-aggregate-verify + +."Test aggregate_verify_tampered_signature" cr +// Test is modified to make all signatures 96 bytes +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +3 +x{9104e74bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff} +0 +test-aggregate-verify + +."Test aggregate_verify_valid" cr +x{a491d1b0ecd9bb917989f0e74f0dea0422eac4a873e5e2644f368dffb9a6e20fd6e10c1b77654d067c0618f6e5a7f79a} +x{0000000000000000000000000000000000000000000000000000000000000000} +x{b301803f8b5ac4a1133581fc676dfedc60d891dd5fa99028805e5ea5b08d3491af75d0707adab3b70c6a6a580217bf81} +x{5656565656565656565656565656565656565656565656565656565656565656} +x{b53d21a4cfd562c469cc81514d4ce5a6b577d8403d32a394dc265dd190b47fa9f829fdd7963afdf972e5e77854051f6f} +x{abababababababababababababababababababababababababababababababab} +3 +x{9104e74b9dfd3ad502f25d6a5ef57db0ed7d9a0e00f3500586d8ce44231212542fcfaf87840539b398bf07626705cf1105d246ca1062c6c2e1a53029a0f790ed5e3cb1f52f8234dc5144c45fc847c0cd37a92d68e7c5ba7c648a8a339f171244} +-1 +test-aggregate-verify + +."Test fast_aggregate_verify with actual Ethereum signatures" cr +x{abd15ed19f6b6f4a199b6c90637e70222a8aadcb34ffdef3c6cc57a824a7410852d209835c91680875794ba287ce7de3} +x{832451ba329e4fe2e81056ae224feea873ed8d6ffc86840437976a421a352282faca08b93e9e3a8068a9e3979e6056b5} +x{b09e63a9a8b80928532e1fe0d4624be4990bbdf4c11293cd72ac635f56262fea853aef1348c26a8263f83d0c3144bdda} +x{98e38f383949a34bc925a381b3e922fafc200201f743001fff15171bdab7a82a3731c54522c98297840ca687e47057bf} +x{af2d7140be9332b536222680c690a54de4eea2644b3b3a84e45b3e425d4a37f07c98eff13e123da39b22c536be230f94} +x{8277ce097d82f3810e28936bb0f200c47be681db6b22a34bae6b39a0616a1dc5eb542dbc0f68adccbf5e9517a03c0736} +x{9663cda398d72bf5bdd4bbc49651bdefb88f5dfb32e305a7f70a968cbd1e6f4ae7cd50e675393e04ec56f7566bbc153c} +x{a9c0360b88f09c0528a0cca8173061eeef7e8cc84064dd3bd894808e1da3536093f9acf7552e3485d037cf5b10a9c036} +x{8259ce226809ebf580488ad7c8d054732eedd21552d8ab4d8652b62524f3858eb10b055f40f7d1752b200bee9a94b8c0} +x{a605c777fb1ce8b67450e0d243305f5a906074dbeaa514d93cb43eae638794c2ef38c60b478f7aabdae5f4e1461d2d69} +x{9376c20d92aae571465aba7286ada5c50733fd5c417fc8a4cc7cf2af8298f35ec6f43b6d9fe1bf8c950abe3499b4dd62} +x{a4ca29cca82a9bbc250556c459d0ac48c90652b7ecaf77aabc14a64e15a6e686e48efced318ba848303908036fd44f86} +x{aa50e833ee57e0b71b52a5f826cb7f131720fb35c828701d0703eeb417613a8f10be0be445b35ad5b9fa7a6da3c3a836} +x{825f98ebe875b1b6ad876153d3969a0fbb088f3fdffecdfda40bdad451fb336a05296f325ed85bbc271eab8dd9d541d1} +x{9895f1615cec63b3a28be707874dc4273168f91c0c5bf687893680f5e4d88964620b2fc91dc0e663c1d9968c25a95a01} +x{a4255953e52e4bf80a8c2c52cd24fbf869bc43c7fc815239d54d841b86b660a3b2841191f9716fc4aad465432b8415c0} +x{b663d3f303a2dcc660f274c6b051e4c2a16271840315148748ba0585f47e02e99827527d365acae65094c39a09c1b065} +x{86753154725dedbc2f0425723b551f4fccb2f69087354ac0c0c0bbbc23e10d07325b87989623c54e58b7b2241c97efbb} +x{b1de760c0271e5ad1422d8b58ddf954fb104ec7b8a74927ddad612833d189fdf6bb776249cde1b48786ad69e015a7b0d} +x{976cd11d84723509780656ca3b92f12eeaa7413b78d9c74824bbfb0269d7ffb63499be7340ca75ede7cfac28024785a8} +x{b2318f9647bc8ce79734177a85877d63f486ce98ab2a247672c54cc4093dabd013ea2d95157a1c5c5d7cbe00e4c33b11} +x{97ec1840d0795bd66dfb2a3ef954f93ac93e05755c2b3d61b714be2d732d37291e5a95a69a02ab6af4ae1441e45e9323} +x{a3fc6160fb647a1d43d94d639704d6d17528b18361e3acbfce051fe10d7b9608e717f6d73f51b784e69b59789c121f2f} +x{82406906b3a6e0baa89d93fb2e1c1f87537e6920f4c1390a1526fb5f490f65dc35432ac6d265418167d7a68c5cd70c74} +x{999a313756535ae0d6816b99c69db91c3792648d45cad753c8f6cea0d9997f2006c508cdb39c3d286e24a607598a8c8a} +x{87dffdc02f4797901553cc7de4a8ffdae4df2b5728a0418923d1d4c01da14a482b21a13332b7227f49b4396f88e776ac} +x{82c9236f69038abc40acbf1b730b3c1d3962ff9567f823c83eb3e984339e77c4f9373f679d30c4ffd0e2aad1d002f4ba} +x{81b989f4a65fce31ba9c63a80ff53d28e75606f5ec563a6aef5f2d76d13f591ad60b974f97fd08155325148df95cfcc1} +x{8f3470b02f8e0a5af092625b3f3812d44d76b86cd1c7af64f1c350f6931eacc38490f10cb9888f1b6cdf68fac06ef9f7} +x{ad77903be9a9c4611d9c152ba31faf49d936be3ca7ace051ee0d8862a3869d61194d990b5b4c86bdcf5219e0ea2c25f9} +x{b6654b4984b1f41517fb3d1f8471f2b3a389329fe304cf315d0c087b7a29f58c8fe61cacd99620ad337fb73e773836a6} +x{819cc51962fafcbe99160959e9bbe66e43bf06b5cae2300fe7cb9aca5739f31c4e8a4c695e77f6b06a881eb6322f4399} +x{a9aadc9694fc9c214875b66f00472ab3bdb9fec2cf07a46845050506c077a029ee75f88a24ea2a1b9c2c0b50810e6254} +x{ab5c69e503a2a7becebb24f17c921e9ec2f4d18f7b1565b0c2a1468271348aee861ee0e9e091a786fbdad10743a7c449} +x{8a1d4d071d08a340f3a3df825d748da28b9dcbc52482d34ce05e6272ebaf93858c8460831ded3c81d2d19352414c7fec} +x{8fe4c6f6aa8951d3f092132c645f4ccf9a50a1c200fa96f27306968b4baab7b5bb09e1f6b8d7bb91dc82a408576d6894} +x{958fa0b9e4a095c7c270d7c3d9a603533e5d91b6e1624ff6dc235d5e96ba7cf3df71b202d96667b4add69c10af948fa3} +x{aa9fbae1a28af5400c5fcee35a6b968422c3015f018d06793d21bd4fbf492c484b15d8a7558d0081ce174d1b648bb057} +x{819a691281ccb2aef76c9523a9e0329e1abf6fa1917227fcc9c3996662de6d4d3623ba2298845b2f82c893b5f3b7f638} +x{b59bc108d9780d1322e318765f0064e93a475f4ef76519a05c76b52b9a640b3d6add5635ff4477b8124e42ada3b95a85} +x{b040da098f2f81cb66270ad142035080da510bbb7c7835d12432ab0f689665052aa226e818a2f16c60e38e2e9dae1ce7} +x{834a7bc5d9eea4c10508dbbf366e1c0c1d4ae87a0832b7d9cc6b635da6b37b70a0ee57215e7ed2eaadc58587792a7341} +x{97c3281b2f7d1893dab3802b620d72e7061af12ad57847ce00af912dbd8c3ab62f8c548764aee8da5ca57d527e41655c} +x{af4241e7dff52b4912d0b6b06f6d59562c77858538f0838f652d91cf13afbafbbb7f16aaa2c53c6159cb1aa8e4c672fe} +x{92a78d4bc61c4cb7783a57e3f423e83402659de44efc167a943604a89cc7afe3c6db64dbc05cac81503f17bef2f3bfcc} +x{907fdbf2864372dfd420acb19dd045f090c088a858bb58e2de82ac6aef9a5efe423c6fcbd1f1810d6bec89f9eab8cea1} +x{96ccd37a8c0755f54d66d380ba56e5520a8adfcb70271d223aa9b42bd6cbbe3a7d186012b49dff85f0d7df3f366b41e3} +x{89e738b1b69710038089a990a7278b2a54d30075998fb1d4540c6e264e57def74fbed1b35cf0f3f236f12887e4df1949} +x{910a6f5d7a02bc8641e179000faf86f92445d63174999b55d6671d05a2253f1b5890f02d2b679a0b3f500faa89f160d2} +x{a6d921cc92c139a4345b7aab309318c1067e5169f179f82a9bc735c08ff61232a63d88ea59157ea354476a9d2b40db49} +x{b3ed37713ef72ce168beee0aa38f89ed3cf76337a198ccc1b30b58d808aea839af97f5c2fe95ffc61ba875f095058cc6} +x{81104459d2f669aa6bd481fead334fb0dd709e6029e7374d61d9cb1a9589255efde16ca1e6ce1c5dbc510dbef512ad4f} +x{9684fa7e1f44fd4e326104ede6348bbb978e68a944448dc311a634cda46bb52086cac4b435eef009dcdcfe04f3413ed0} +x{b93fe3dbbdf63678e0cb0e4e299015e6a4187d5a6039ac6eb0d96ca4baecfe1a0d3672ed716d2b129fbe7b8373750cf4} +x{ac97c56a24b9dbdf87337a87f27a90b1d936c20e68a39e2f8bbc2ae5a9e1ae9490477cbe03e03f180ff42637246b9541} +x{8032d15ee910491ac3e5d228e00ef8ae41e50c0ca2692fbe7f006f3d8b360e556a1e0ad0c67d18a231f2d71ae83914f5} +x{8ad43c8688a00ea88ddacbf8d2aa99997dd425a35bd7294be0fac420af95bc1723919d2d03862dbee6e3564331d26033} +x{ab2aecb129638db624254e7001a725260d2739fd50b374418a1155569eff3581dcd6f25cb0d0b85ae20aa176c30c99e7} +x{a9a420966d5d57d11a2d881fb462c7ed53dabba8e51b78bb852acc08c4f5c86791828e8cc59631c3fb1351e0960f4347} +x{b974b7427651578b63669ef47ec8cde65c9d134e18e9f2e2761b3250fb472a578424fff31614404d0bc23c0cd75d26e2} +x{a2ebd309811f0c33ae45b709bf55e1c0cc0a09cb18a47855d42d5012e6d2e340105dcd85347060c64852a9da589c26fa} +x{af6c39210b9c6d153e141fb34d7739fc7a9fbf5656b30744e9a8440e6049d84863c2f208f14e03ab5fb5fb47a19dc277} +x{a19820316b4136e5b937c0b60812983f7fbf7a53b1758ad8dc0e249cd49dafbfda4c25d9c798a15a9693bc565a11383f} +x{851cf2adc1d7ad56a0ea3a7abff62570b9b4b25ad84e847e278edd8b11b2a6d2ce901bb45604e51ae5d3aa3c13ed4a07} +x{b9fd9b663fa540237e214c7b1e3b6b74a4381120f82e9691d3d9243d871eed4672926059973ade7badbb88961868e5ef} +x{b943affd10c2735dd5ef10376763e44ad0a848796e28fd215cf5c56d124d191f11fe22fd419ead954a4610b0990fcaa4} +x{a579968409343bda51ec7ba8a4870d8bd560c43a313db0564c5e6df8381d7ff818ffb4676c9a06469ab14d00dd26b00b} +x{b0fb5a7cf2df5834f822e44e6efe63211db7a747b196c6bc2d1605933dc1d24f75d8373d219da0210ebb4228d98cc4e9} +x{967512e3287fa5c4c0093dadf799a4a4053bf95574c18688f9ec9896c74978862517d118058590511a332ca303f42efb} +x{80532dfc08ee2b181e9c591d23c8aa53ad6b4dab54b87d57c1530cccfef26bc53a69e6edcdd74a0e072612f9967bc99f} +x{a03974bf0c0cd74db34d19a4a417bc5a4bff8a2a7566728a8b411317b2ae1c85d02eb17e955264a7439153876b41208a} +x{903f9407477a39f67d5bbd9b6d9a353470019d1f3508fe803a13ba69b01fee8713f468db4846b01d4d4e9f955b87f55b} +x{a7a6df5ba7ca5697aa90ee6a4806346d3e2a6b9aac371ac1aa2dc48616c4c24d236a8e8b4900f9382bec9b21907133f6} +x{b98f676715d14957248d0738e81e5d5f5359391181e0f573580539751f3d2311264aa8649eea66bc7016413e69ca7d01} +x{ac77a4b3a57b754a63d7ae75bc916e0750fdbaa01115f038c7c60f621dc6b0fc30d7e5eea1f0d0a533c90615bbe4429d} +x{9561be8f41acdee26b2d35c8812f2265a7e96f2964d90d1c4c26b057381d4f5406891c45c86c27ba1313e2d0938dcefe} +x{a61cf69326c454b9f25b54d47f5f7209649992124966b2decdb201e4fd469200a91ac95c8d606e856b02cc01553d806a} +x{8f9fb79917775751341b7c96d5325df771b9450b9e1a82d05a3674586f8a374fc4eeb7e2f176b96f18144f8ce6104723} +x{8830d4880c14d6ec69305f09d0b7f5d138efc37a1f8fe3d916f51c96feb6c4d6ef51e1a4d574d6f06b0a5c41ddc8b364} +x{ab109b1ae29d1687ebdd2d1d2c59d3196ea2afe222466b31ad4242f94a040c81e06e2175ab6f4f75f4738f8d7083e551} +x{92b58f175d394c5e5ef3bca7c1f63b53e6f5443572194b7122b6484db96605141c0fc8ca0a670f553c61f58af0f58ae3} +x{a3ae85c74796adfa4efdecdd39e014bfa26e69c9f14f69e0383313c7fa99768788037d64bb34b13826ab5a969c43b334} +x{b49f0e0bc429eb0016d2d203fb470016cfdcfddc30fb7c7c4bd6f10b77731f8bb2b91a5dfad9200b96a1201ed0b4754b} +x{a82a80e0e24d94c5cd6c66d0a8a937aa6f447678b2015f56d8123397f0165456e7000ba51501595a34203a9cbdd88077} +x{a52cd7f09adb8f5bf2fe6a3d206f795dd3d2fbf8c50ca54203c5cc04e9af5c78ea72cf0b2f5cc9f40e1ca9e995ade465} +x{b271b9a754c2cab8cadb0c2084c525ae4321d4a4200110152189b6fe9537156cbed646816c5a3b8458c8f879bdc2a2e3} +x{b09b2fa0f1f5ba3857c8be27197eb3349486c6a9b9e878e2cb6036e79ff8c7463983d73d28d8e9b0f119e7a3fb494e73} +x{b9adba35b8a1a01f5f6f6daa26e3bfbe9793b8402eb5e3e2aeccfcbdb597c0636ef8d4bf2c8713f5cdaa1f6432e5dc2b} +x{8de96521d0ec24ec97e69da3996389c60c782461a894a67b09562bd0fe2416e1d3b83c241dff07fba400d0def39dfe0a} +x{991ac0813bdd9a59ce2322a90da2511d511a12855b09df44555cf43b48296fa9869ef9df66f359179c706ea2e2a1977c} +x{978eaadba569a36fa8f5cc0532803b76432d51b26bfb2f3eb1841db325ffbf4f1f72be2d478dead2b79677cffe1331d4} +x{b4e52c231a548b29f496e4589afd554dba83b5db9565091eea0c4c79a10163181be836e15070b88c11ce306e8da2b356} +x{b928dd2f764ff18bd663ee455af3ed5518088a780fd3486535eaffbf5f55979ac115ba2f745fff6438be6623366c5663} +x{ae48e5fb169ac93073b1b36eb20a93fdf5d48f6ad8364a441b3dcbdf5761b5caf84176017e879bd2cc6e0efbe0dece21} +x{a4f81f4f3a77a94d3c24ac297d376418a114ea16771ba1b9abac90d6a048c3ce4ba67a724dbd9fc84d941838ec946aa2} +x{aad763ee3c5bb1272c24449f6458554039e3370234542b7131dc44c0b1f0f9dd18890b7048e690cd208ad5e066544833} +x{b05ef4dd1a820b49d0594240e906bca9e716cd4bf6d45a51d5d571ed205e39b6501930782cd8573d51963d5a0401ea5b} +x{a027e8dc718735f9acb9b2f06fc74052bdfd1f2b7ccbf181de1ebf7080e7bd35b7b8fffc825e7f6fe7aa75a814697d3e} +x{b07c797102e4f17ac8c33dd40081cd2a502ee2e4bce02bcf4eccd073c51d7db0ef4cccf83de1b7adb864cd38f92e8903} +x{98d211310a79d0da3594e88835e5b8cf944c61b1c4199b56af9d703451a21e55c38ba60e9cf566d677437c65d8fb026b} +x{92e5e8bbe9ffaf880adc98a42d3e41249b789c94551ffb380620da4cea22b163ea9ba8cbdb393e7dbbbc9553b85f4445} +x{a89604f3c9920aaaab0a40a059e621e42fec8902fb15f7e3fc24bad435386eaffcda79e94f52daf9b37058d7eb6af895} +x{9372aa0f3f96d683d81ce18233c326ddebca93e6f29a9fce651b1cae20410c1e93e54990af18bb55cc0b97dd3d4ae26d} +x{a9c4b9b1ff3b74ea6de69a396be9511a715c8ff87a9b33e0e74f99cea0d823eb907cd127ec06cdfdada16105cd973163} +x{a10c5483b6877478a90de5cb4fd2f23da77fca45cb6b53a8c2559b4e310116ff4feea80f308bb296d3e8aa5b00f1c40d} +x{8148b79dc931b103ac4a15ba1d613e8ff3b54941708c78bfdb7d8748c6cef01949e09d6a67488f7c12801f0c02b713ed} +x{a2e4657128e1bee011fee679b7fe7515335766ab7f635bea59b820de972a24dd3eb3829c875884143f223c03cd18c8d9} +x{88e8f1442b2f54fb6e882b71168dbfcfae30f73b422215d7cfac80e87ca87da2a235c71f0965d5428c3654a7cfb79235} +x{af992a54c30f72966ff2b5fabb01219812b189d501ad7d5f6e1d89b167f6500b1908b995bb1d96ed27ed74fed800b150} +x{99fd4146e659a523b7f3be89e6225849a51377ea49d8fe12b39b39ab926ba59f8176c6fbb121a6aaf4b47a4f4a9df89c} +x{8561e48d685afd45b2d0f6e7944c9cb87f3d3f7759cf2d40a9a67fa202db25dffe1380ff9028c6692c14b05fca52bd65} +x{93467762e27dd2647b83360aeb0b53b27ad1a49262191a83143e109519414f6e783109362d1f6f6c062f633c4311e2e7} +x{b2e9357b2a7e6dbc0168b7f5035e9c3c5f49f47702dddd3e6b08e235086780119a04006909aba277c54fa33768be7585} +x{b9820304d2fb65fa993e9316d434c21d4660e3b47db4bdcb4bc6e24dc11b1cd6e4c79d5ee66cf12aa9477d9d903434b2} +x{849cde94b4bc6c895ed590db92577a454577fcb2492aec26ca4df48a650b6252a69e7f43ed82ca920a81703e9f2f40a4} +x{8f2139e3eda2efbf6466768d5e16679e9cde6607fb15cdb1b91f437f232d830717cffd60da4062c3b5eb382de8330fd1} +x{abe47bb7af31ec2bb434ac94bdf514e21c8620eed7943545b30f4c1fe851f9413464550f301ca93ceeff925869cbb18a} +x{8130ffad0227ccdf49b6fc98d818baed9032168ad55b2f888af636a7cad52a0411bd8d699c78f63ee3288140759547af} +x{aa1760f885bea6903efa5d557a9d5c9f4cb54ff34129ead9e9faa07c0a41d066b667244229627ba5797feb984537f8df} +x{98403382601e7766acff837ada3342b15b744a8623ba6e5a55cf8df199ba0c2cd5cc5fd1aa319dff980b11bc6a199d6e} +x{b8af58fb6b4f548ff6918c42dd69608b9136a8909edd73fcd2cb994a45a627c6dc26793b7c69262f3e8892d3bf2eefff} +x{b2e385e6ee0bcd709dde65cf095f2d9c36f315ff06e83d9597df934a1d7eea5fcad77de858f3ab094772800d491e3819} +x{8c10a30693b4b1b752ae0aaca5c6dc656c871085701a8cf68c5c7958dbb896e8798b616fa0fbbeb7a2932adbe0f308d4} +x{91b0e15e00aa788d83be05ead90be662bfd17cf16cd5da705d81b3acaa7d478a3bd349552c1429652a64e3967833ae62} +x{8ddfe0d8e41c12332f7c5e4310899d9b1be138c80ccfdeadccaf5e74077e13aad63f4bd508290ded0e2c40c6628ec035} +x{94c43da38a8ed19392a8662d5ef7c8358eadcdd4a566a61f6a4fdc57cc3aac58d8ad2c4e61f283fef9ab5aea324c080c} +x{815fbf4029d334d63bd8f667a6684004714415fee64ca97c60b850b188ea3360d17299d9ff6a332f89ec561c179167e8} +x{89873aedf223606eb09afb13c34b1b0ba65532aa4e9864cb588601fa42d69250546214b2498e5047a6fed4e09a0e36a4} +x{82a2bb33c62a75abd2ed172d14abc0ef5637b14331c41b6f49b42c2297feb277566975a8f2c720b04474c221648dd95b} +x{a46d8964d9854114e82f0d98562e7f3b0b0f38037f9050a47645cece99f75d9cdafb304a8bf7dcc1049ead05a6086eee} +x{aece4f7f8c68a959f88128502115201de816f748f8f4f83d406f73806821aa43d204d2d02b487c44266f1559e7eddc69} +x{a999ffbea55a6ce252fc4661c337adc2b5675f999351071e6198570d5a7e7e5855ce0312685d691427cc4a230e1aa031} +x{b57e85d1390f113c620a772075d6edebf2f2379c7a3bcd469358c128b888f73c947d00f4054df5c2b220082eafd02ae1} +x{994df161084d1ac510ae0996121c74ff8c16cf5bebaecbf21aa1da07eed0f602654adaba025636f0bd338e9bc218d942} +x{9018e9e6318c824de62f2a3278ef214863b0c98e895e9ffbaefefdf56386c3e5c20f6d5236d4ff7709fd015e6abc3e96} +x{a6f41705254ddf479c3d19d60b7800b091561bc7790aedd2d33fa0f41a8d5147c81ebc347f4f012aaf363b3187bff990} +x{8fc374c056f5e726063f59e84f97b066af2e07e599d6e2e2593d8e31bf5665afdf3034be6a529ffc434e2b365b94fb01} +x{b05b312f4dad2ffba9b50d651607cdd19c22f2eba0cc5384d2743faf74f0f081533a50f7230756bd5638a8570fe73d56} +x{a96f25869f617c81188dda1b4d9422dc2a8ded653de0e1879f3e5534b582fd332cdeb13f6d887d9b28f653ab6ac09f88} +x{8f6c0bbc567c089a3b22a381d3e5f5915421f27563b7ac51318b9612515ce0d3224d40b3388983afe2c92d2da3844db3} +x{b2779d398c462262fb1b5ecb4ebc50d00c44337e6ed20210ada4b8b6321b99ef262455e50647a61452aa2678e64def15} +x{85ba9c1a72a420f960a443e7724835e08023581226ee4912a6a1876f40944c7262f92e3bbe66796dcf9c706986917671} +x{af01794226c596db4f502475eca86f399df28b1344af6a54b1faba31158702d56c57f1b35a9909f2458734f58c04ffd4} +x{8918c724fd6a5530e76d3518e5ab73a7144685769b1553861e0441cba0b0c307a68429923cb7c3cdc577e3dd9e0f11de} +x{b6bd93d8442d05d514a5cecd64efd5bc5571221769c1a76177376e2e0d6504c7c8196e300bdbdd38ab8514e0423c1dec} +x{b7a6125a2ec2dfe7fe6731bdb7d4d604c473a9f74abe11866f7cb20ca4fe11157d379ed3577b35d96839e95eff110fbe} +x{85960eb8968b9a267f65f4f7b2ee1e9ed676e5815615aa4b29abb6bccc669c0232401e529a1597b67b0cfd310e6ca5db} +x{a02101be2ec64317b52358933f7b68f0d49df19404f6dc035176d3313eaa5253584d023c43eee1e8e2e627b253fb5634} +x{8baede2de9d880a5e9e4f3c35c181a1fdc68867fb432ffb53b530a29daf52d844389cbe3d7ae2557ee00feba9ee2d7e3} +x{8f1eee175b515d5c4e8784a03c7192efcf93588d476eacbee95d01f3c7cba46be8279ba65e74eb7e8983383908b07cd7} +x{a24b3d111b7ec72a3281402e9d1be91b51f8e71d80d27ae62e6c75e5c8bd3a860f45de65e9bee657d400b78e7a2c5e16} +x{85d13e876e384ba0c55f72bf391ccf65248736d0a707e143d65146d439e945abd0133812319626c9e8092f5fefd54c45} +x{a0deed3a9b3cbd8ea5ea6497ecd3afd02616b953e33cbe8b117a4add6cf8cc4398268eec7e9e0bd91899472410a452ef} +x{a149ae720e47fbcbddde029074ef65969e587d09a8d6cd3aedeb63a46b54bab17b84216feabdd3bb81341c6a83a243c7} +x{85913becf48a087fc75613d24b332ccfda08abb67c0b8bd9bcbf5f0a8ab1bf6285c68d89fa80f6ec18c666316f19088b} +x{85685bbb5bb114db0d337bfe51089039749e7afcb7099b6d04e668e10e52d29256e950532b4684333dda9a094c6fc7e8} +x{a7327cb5024ea8438403f2836ba21bc84460ec2f267d399e0e0fd07ff9344baf689744ecfcb90ca9dfd95b157ffdf29d} +x{a3740c34b3dc44df50ac1fe8916a592e8cc86fea02ae29ef53632671b69bd9ee3c6d8b9aed87d4b1bbcb9457486bbfaa} +x{8d2c4c61467fde9a45d1adbe02a8c7d2e925e8f6f126be1b91fae1d8578311740678ae9e280c79620d08fcd879159ccf} +x{903f21545ef331d5c312801b78b8675fbf093ce8d3e4684da155f80f2153bde840f60436ea506e1d07bf5cf8cbb566b2} +x{a2ab1ea627cf7b2b3e3f4a358719d5696e9917b76898beb0b0519962cc34cf222b200367ecff032052023b0d5326e5a4} +x{b79fb683f4aa467dd1859468efbf53214cc9301f38958daf8c6f313274cc70a532a167cf24d7d023eb66cfeacd6b553d} +x{b202b37b8f801d67896cb60227a72138918488a46034556c90d00cccdc46b86e4d77adf3991e222f4d383f0e0cfec46d} +x{a721aab3a83aa009cc22fde90c0a5f1fcb42712a062a68628ee402399a81c4c3bec1a58ab4d1a37a4d4befbc275848af} +x{8fb335baabc4d561e133b874c98bbeb8b1787bd7b44fafc9dbd02c85d98db6bc03f439d285c7fe17c2c751268e651255} +x{aabc892d3f6b3dbf04b8f1f38215bd58f23f117e6643c47ccff6803fde56f0c950a5885d7e2ce97fdaf01a1ef32ffd9d} +x{87a0549679757add0f06d239aa760274c57ccfbf30e722d8a6b33c76ff5576d354f7a54a53073cc3babce0b0465eef3a} +x{99e84647be315371ee2714fd2524370daedf5e64c343a31cf35d05f0737f73ca97ac1645d17780916c73317cfb7ecce3} +x{ae30f745530dbc0096e0dbdf8b7547499eab8f68c5ffefa05ebf6b735b3f94df7161c09360165459d939f562961a7af0} +x{b3ddcfb849a79096763ba2abe2c51b4b0666d548d2c19be8042da0c02956a5b13fd4166ef3002aaf63e16f18ca27e777} +x{b7cd98db331a01c52012560297ea9b6a208bf7734164c35777db809aa1e987b5c1ae20bf62e68a6f8160f6606db25bb7} +x{a72480094bb69733ed322482458f26732449ec5520b28c70543bfb0e291aa6b2c454b9a67321af82a5aa614f3110a8d8} +x{a52162089b34711d405613a42e715e1f06f410f9e1824d91c10db392db200fae8771480ea75b65e43752f5c38f9325cc} +x{93869a5603e08ed1431cc308a64a094c2bd24f28bf1e8ebdb667e4da4af58488aaae3cb078b0d1e3ea92e1cecd902f93} +x{a6e3a7e4aa049bad205ea2d84f10e1ff096796e82242cbb06b8657bee144d8daa2d5ae23713df4616221a016fd269578} +x{8ef617adab8dda4770b870d42d3f3ce503665cbb55ab603f38e9cec0cad1e2f7f322d60a42dd2416a21c783a280a0e4f} +x{83f5fe871d91c771d8ad09d26ee4617220721cb4f2324d8b24ef21bc9f5f059949a94d2cb15d3011b86178a4eb52e88d} +x{8d528528af05691c4f5085aa3747fde2ba2716e5a79e050765e83c8e52927f32033b994a45b5de5ae310e055dee1dafb} +x{a6ddede616eb02303bbc8569d569082872967c7bc0c97462ebd871cca264cba03f114780e1436674022f11da754ec23f} +x{aae1a58b985833f827df87146e157900943c16c89d15451f464e17c480b8949228f9ee9117768f92042dfca3bc2e2290} +x{b74e17e474fee881d4a2aa803cb0018e5eb94d0d751ec04f2f5235a85c46445c94f21f314fdd6f6b6b862c8387976faa} +x{91d1bc79e3abe5156a7fcef084136622198a8bc4fc5fcb4d384a3c3089bae93ed80349e0220f168ede6df2992674b4ec} +x{95c1d6d602a03b1fe2eb36308cb939f7093bb9065a1441dcfe6cbdb6fd0051f1a58906829334dc4675c96a9835b23ba8} +x{ae07d4db6f10df60bb09d3c187c75953bdd4e7a492b3be74f753074d330b52bfb2f3118ba2f2561d90850afec527306c} +x{af93966afc0ba0acd2b91a254222e672dcf204fae9bf405de574f8c1ead72577016ecc5d45ddd1a5c67fa1bcf0e6f765} +x{a51adfff1f07ec1b2ba7e7352d262f54bc553510e4b6066b683aafc2748958d4b7a2016902ea8482889975ed61d5c85a} +x{a20433f93219eb9976803b7bbae5247c641bcd11821d5eaa7ae3a088faeaf8356f05c9116f28c78ef11cde111f1c1be1} +x{b6e6a8bbcba88ce35a38be0d6bacfa32cda83937cd68d504afb087cf02ebb8882ecc1db14a5a903d1abc3db589963d12} +x{b8adc04ea1f6ab4bacebbe38e5674d3cdee56f097455b0e94e02ca08f667af82379f8798c5f026b8c5e361c9926a3c3b} +x{84be6bbd912f3eb274c9fd12a15dfaa0a908eaef9a849b2aed2a620af2f11ccbf880d419a89e8f67bb81efce710afca0} +x{ac4e4d3ec168e14985f73c7b30469473a6e0c89db0f6649435aaff4267fc1ad1989de930ae843521253909d1032fb6be} +x{a6cb5e28f19b8a235f9d3e2097528650fb629fab591f2a5d32793fe0ca0b26803a4a284aa132478272ce4c393938ddb4} +x{acef262359340b6fc7104d2ad0f67b420f66cb1f8b51956257942a2a5b515db3c5b03a09c09bec9284af2ca4a73507b4} +x{ac3f31a5c3ad602dceb6fe7a1a64e167b268bb8493ede809938e2213b3b1608e679918b37a069499f95596ee1735778c} +x{8b774778623dcc4d48a049d75c9d42ca7b4a66f79583377fa5ae59c2a3719a97911f55c1768ed655fbbbd16540ea6095} +x{a8ad6c5a569b856997ef600b1b1728e4ad9ab8606d90619e2fbc336d4562b9d38498f69556e651b3cba7d61a69e48eb5} +x{abd6f511bf89d9c18e7fa0cf6c8aa0f028c31ff78b5d980136e1c528d593d259f1d26ae4c79576a47af8996396b76094} +x{a4479f00869f56b0b389d79ab9e23ec2cae1460593f6847b3f2bf5415929db91a0b94aefdf093c99870b1f66c6a0ae64} +x{a03f2529e611683bfa7977b08f27c9f5b1eb962acdaaa8c72933ba22376cf461a6fde95e4102a25908ce056f14ddf525} +x{a1b6f7748d7c2f7e767773316c7f4d489bd5b793cb30fd750f2a33a02b6db34f64c7a4180a05ac6fef049392cf87e70e} +x{93528f173f2dafe0114d688d33c4eb6b33753fb53c54f50c3c7b5990d873593dd6faa65906f1df7c7eb1bc1f6ddc21f7} +x{ad8996fb3c231514562b9926628906edf4dc6fdc714d35a8dece3a235c3f49637534166d1ab0715fd7bfc22ec5d17e26} +x{b6e5ed2b40848c59db54850ca64971759de81d0601a56d552060f1a6d98305ee97667cefacead2c3dccbcc58b75b1c87} +x{83fb0b6260971d174b14377e999617ab4d2621982a3d26555c27520ff8439e2b3585d12a61f34e1bbaf93779b89c2907} +x{8b6cdaaf5946847b1e7b7c6d2d5fa8ea1e6c2fc9dd21641b936fbf1b32121fb3bbf65dcba0df83b822e370c9c35a9a5f} +x{872eed4104bddf37251a144cf766ba3bc01bd27904b320e42b6122831087a7da0c5a5cf8dc6c00a4c8631f7a91dd3fa4} +x{919532809f2e0c285fbb90a52dc9e3d5004eacdc71622bcf8144376c0a63b995a2531ca0d18a6e0ca4df50044626f00c} +x{8f1d94624744ba2b92ef07663324c7784081e22911de67b1dd1780942c9bde1dd9667914e749829d76e87a1e86170485} +x{94a257f057123beaab8baacf6d3fbbd932ab05c84540273f3ea69633fa9cefe0cebf778da45661d9dd2f617dce9fb960} +x{8a33dbe5e72280da6e8d781246af15e92ebcdaa0add650bc0c13535537efe9ca4d51a1a083c952427d77f70954a9430c} +x{8d78bcf42dec8ef23bd0fdc515115cef37a89d3d2f5ac0723374c4076a3718600b8505eae1faaf854728ca398dfb1649} +x{952601b96441c611dbccaa960cd3657de437e4ef6a0458e4078c4ca45c90a0c90eab2189c6512691bb615ede1a0d835d} +x{b5e65e21d0b97ee6fbf858e270bc51d3cf2a95e6364b94eba8d9b5a5817dd345aca03b631b9d30c3fa018c482184303d} +x{938af819a7f9662a49dd1353191b43f7c3ed87ccc2b4472dba0f73fd9117177891d6fdd754605a0a98fc9d93b3132d5c} +x{a83a552c4b56d70f98d95c68c022959b1f0688df8d13631ba960fc0052b7db74a58a5e56e7389b41c05e0bc7d2ac9ba9} +x{ab68cb8be7456a2086cd3695e1bda4135da91894d2f9b49560c39a9ae07f7d91ac2d453c4be9497a7b8631ba83aa9cc6} +x{a5e60edcf107dff7d57e51c250862b3eb8c106e40d452a95246f2be08d163a333d626c377d1945cbd514733b5421bfed} +x{a72f4482408250365ca1648b6c9a1a6e0adde5bfc1e47933bb93bb72b4418e7782a13abfa550287aaa9137d44ca1d17e} +x{a3e0045f65097ab4951747733730d233df35935a08b8934148846c4aa57559c0cbd74de20dad1ebfc6fee1b26b94b868} +x{a611d5c5c00db0c6c98c41c74f5f4a6be5523e39a2ec3b172e4b6f142100f5cd700d7eb21d432c4cf3b8dea3fb981cdc} +x{8ed47f35a890e5238ae1445fb519646c17a17187370c10c267723cb3c95613da9bc4c9d3fa5dcd0de052716b2f3773a9} +x{86b93b4cdc3b3186d8ffcf7c75472b41176fccf3845d83c5e0172bcf6d04443ec644f8916c39d07e6a3f3e947212fe7d} +x{8290d28317930e75ce905397d9b203afd6bdb8daac8f654317c7fde3b61f36e67e517ffb43db58cb09fc67f571270119} +x{b34fbdd89c0fe771088ce52e16e1a166cabd4643e8848560f376c56f8265e478998c5dc236fd693509bf1615bff5495d} +x{b7c3cf81dbec8f4b430a6ce91006b90b8e90d04f5c299161e2db4caadede926ca3a082224342d37120ef42254eabb3b3} +x{a072b63854a4c2c6d003d79fd959ff4e6d2fa22d90bd87de6a08b568714caa6b9ee1a43766fb813e01882a9a48086758} +x{b319caf57dd380fbdc537ae09f5f59f9d30f3607d9ef7410b2c2d8d88ff8e64e66154c363299c67a8526b5f07d507e2e} +x{878fb941a76dce335d77daba3bc41cd9d1b145c4df980e5be9868b37d3c60421e3509d46ed0ff3ea01e8f6b717996774} +x{8d2262fa7cfa4fb5c1b5cb6daeadabb220f10171e4c041de13ad9b5aba30599ba9e7f0bf2eb19a446a3a6b0fe6720fcd} +x{b249b90858c33e11fa84aa6f412986a886743f7a8a3b81d59c752baec291ad58d9d592aeeb26a00103b8bac4f882eac8} +x{b02aa595959b64b09da7de5ffedd316a98fa7e913d442e4bcdc08a584302ebef651c22a5c06dfb891504c53ceb15e5ec} +x{9077c6fa2e76347814dbb1c3e9291b4536a5d23441db87ebfcf453b2a07cecdd7a8aed655a71c28112c826ef146a5b85} +x{8368584e6e9fd52e8dd9bfdb58087e380b99e9e8cbc551dd40d6d6e4e5207d9384ed6295e03704c00a874ec280b6cf6f} +x{b34d3cc4d5cd507fbcbabd2c808c068ef41d3b8efaf7e5302ead08301b4f79324f028968dca7e0a56d628718ff164c83} +x{ab9ae1b9172c4d067445552f7da039141ef72ad4fdd82462182d7daad8f6fd3789d2d40c8174dda3fe196f8665c48f64} +x{b95ec7ef32d3b0ec97b28073cfc2eacdad7c4a063d5f31c791169bbff0ec4496822624b67264002b1a2eba048c4fbd38} +x{b2ed832b474cc84c4d9296bcef944a26a5eacbfbb411cf9834010d3e67127c36759a92f667b46078ffb9482fe5ba37bc} +x{95004b20bceeaf744a40289440c1145b4e8d4f7f40460b38cfe272d49b2abcf99880573ea0dd9defd4991a0620d9e528} +x{90a921f83766c423cfd9ef04cc3faf208dad5d52b77af9678842b8db2894c33d2d8962edfe2c6e8b477dd6a89223fb61} +x{986217666c2fe4711465a2da8daa7d6ee44e4cf32b63a09aba26204b371f296b086f31701e114a3233799b8d2052d7f8} +x{88a94b40813d23933c86e6ebbaf36531c7de89fbc345d7593a62c355aedb2ac504ed1a58aa735c2fabf82e73bba87679} +x{8441f6b6db07ceeb3cda0d8649b557e082fdfd610a9760a811d0302bc9da6c3107d8a22a0c752fa20ef82054017c20e1} +x{854ad0cfac2b94faac229ec7792123fc54377e0d285570ef1435aec0e72d072da978c00d453975415550ab52e8284501} +x{b0ad4b51e7c698f77828d3c034fd9b177a877510d7552025fd3cd1c68e405dba23a7a72d921c4798a6cc237887baf967} +x{a59e691f1ae2265788523bb6ac5cae309420caaa54d4feaffa6882c1542fdaba817f497c5a8e30bfeaea3bc3a6ba4b42} +x{841fdbbdfa848144fc7b29520199a00c3398ef3d78ac67491a9c0f933eee22059f9a0446fa599df627336b1fb84b0145} +x{89a8c1e13030ff719ca22c939f4c84b1bdcf0ed11b6d0ff0deb1c3bf9c62640f80c96362e4e88362f7f7d69de831f523} +x{88b306b8323a1ccd933782e31e94ec070117a02a8f8349b445da66b33d1dca77e23256644904416751136bed9adc0d45} +x{a77b375d16d85257c5f4b996f5514ffa8a5ca31454129d2a25b4bfcf4309f27c97a71e6c33ec7fb9cc57914b3b7baca9} +x{a8098c4186848d9d9ba4a4b1af79decdafacdfea7b5cbfd3536aee6ed67653c6129557836252b22421f61b66c84b2e9d} +x{912569e76a70ee20160774d2956b70965689d19c8d64941313fcb0d61f35b10648860f85be7a81e90ef6975730f2f636} +x{b144b4047dd0ece9b3619bc04e7c971aa608d9143608a49c46a293df2bf2c30facfe4d39675fe23f5b7fc274d07f1b17} +x{89489bc8c8ef1224ed29d5f82370c6c3fef80ea23809673414309a1f4b2941acb049a0648c34cf0740f682624a660c3b} +x{b72f1a424b0c3609531bb9f5299ee2120066dd5561e42a3beb526f8dd32e89cfc51937fcc668834414b7c16a1516510d} +x{8a462a5dfe9b78315fb9945fb6717a27849785d98744d3bf798697823e1f8e6acad5581ed337d4d9e212f9dd96d94ae7} +x{a4d046c2d04306fba6c56bf0c9f546ef1a0b5c5762484c5de70e42d1b6a30d39cc80b22f66933bf3534b1d26fb6cb7eb} +x{ad8903641d07eb96663b0a2fbac3115127b24945a138ea6617e14545cec689dfd162422818cc4050a23a8df42cb08ce9} +x{b50cb2de4074397cc88600126c50da4bb2acbb02ef90bb3b370e1828c39fd78c17902818556e1689e5a7bca50237aafb} +x{8f5fb00cd6e476bed5b5562e934383cfc2f1a2b799e9c1f3dc2e0b0ccacee4734a31ff2d9a986e7c0251778e41bb99df} +x{aae8828201155e602880a4a9137d3d44c01d32b2374e4223576e8fa4ec56411aded934c2f3121526fe2d834e37c713d4} +x{8a074eb84f1ae6d049947cd6dc6bbbbada2aa4209ffc167fad467b44ba3926f3b6ddacae7186c9e155e233226c7fd3e0} +x{a85635c3cb2397e961c821cad4a9945bbbbf53c20721f9f1dba9a8c616b2819625767884e22757c29507f0ed73304c43} +x{809ac8f6102f411e5ace89bafee2b73c8a2f5340d7677c0877eb9de7b7d522d77b79499bb27bcdec06a2434ade31d40a} +x{82134713d5873008449747fb04026b02790c89d9656f2d2b3c22fcdb4e9bf1b328e4051200afd86bf2c7ceda424dc447} +x{96a195a8bc8e61dd270c9e1e2b2ac60ffcce8156b11cb2ec45229fa3151a6f8c1a796a752312ecebd5c5bafa2ab4991e} +x{89192f77e8caa08c0a976650701206da423fd3e4adf4c11c0b12cf693966e2d32a06bec27de11ef76cb57b1abee47a12} +x{89e7e76e55b1b3bde410d10c8c32d0f10c63e1284d4636f5ba73a285abcc9def139c3e419ddce83ea07a9f825b441523} +x{97d8551ed66159c461b1679ae0ae0bdc34f306f4cad6cb39b77999f85ad976f2ee2218f777e4e1368133ab31604df540} +x{941b0de89934fde7ad4dd6ee46bb1ac0d1228649469969fa9e016a51fe63f3a687b536f53eb70e867e11b306b66954f9} +x{8ad57d3d490a57d2cbada20ec81812c429daf3ae6ed372276c1c527dce09737ef4ba3bec464c44165594c8e552b95f55} +x{a6cd2543e60f86f7c976df845ca30debc686413418d559162597bf34e44952243906f249939d06d878e1d942500a7c4d} +x{b2e066f07c6cfd5e045f94f39f1e040ca09cae4b1b8e9cae55a57ca85301787e772f51b15000fbbfca19b1d28341eeab} +x{88242a0a598559686228cca4b72b47d503276c6d3f9270d943e43f6652ac600d91a6245ae3ce365b20d8121ffcd2c7eb} +x{b47776fda2429344019841061308ae5cc3e39e55355b4fa2bab80a79be35250cf38127be2d3f93eca196ef8bfa3049f4} +x{929c6bc299a6b479b7a5ea1a2c73cf7575161f184fa1fa536fed71fce16cc0127df765c9c3d02d5df15442b50e4d7c81} +x{87fd7e06cbdc2e1ffc1a0cf328870fa73cc1df6d4562508efbdd0d71d97866d8890f085e02a8845c8be69840e73c0698} +x{855a53160cd2baff4f69b01af39a8e6486aef4c8fba5b23fa958f8c4ae9a4779e3a171c35ba28a23b63d5a746e0def27} +x{b4e1464b63413c94f636d648ec6e9dabd357c23d7a37c9fcc3bedbbde7a94249c6dec2192702ced872856c92cc829da2} +x{aaaaa6549f519e43b3935cc1d9edcac6a32209ec8f9e9eb8598e7ad1448a4504d204175eda00d2a8bbeb736171389f2a} +x{8a6205892d6986bcdc1c3f8deb7f7301cb9be41a131c7c046bd2515e3b36f3253fdfc8609c80478dcc51a7b66b279a45} +x{b20d4402ef47455ba7d8f4f9bcf9a7c0d402396e6aaa14d3b1a6f1f5d0ef6705ba9dca6538d0e9fdacde8a5e252c786c} +x{a30880c55a04b15d14381001ec06340bf8d60f6c952ec50dcdd8222bb393f88f635dc85d99384a597eebde0693424d47} +x{b729dce9e0bf10d615d74931773c3dd81ec38050f597f7d6005def587526d4c587d7767b30f4108d83342dfff313c74f} +x{a1cced77186993b4215c66ddcb187e397e10a8ee9666986c6ef2f41398bedfed12c087430d81f4a608da46d275b9bc04} +x{862144b431ab9de9c4ceaa784858a2c6788b3758866a228b8e2671433bc56ebe9918a08a3be11d05a7ff9fc64ca882e7} +x{b4205cbe870360c5452b2efe87efe9b4aacb4f7edbb88ff2e414931a8613d686608b583fa9bc053ce96bb9930d4a4e8d} +x{8063a97bae4b2025eef8522d73a5e3932140a1afff478765dc1279b2bb8133d4bfeb256861afb213f2ace1d885b514cb} +x{a4f78536213b3cfdf5ce14fc845cb0a06726f80726740319c812c938417ce6346ca2cc055e2735eeae9b8cd1aafdbe9e} +x{a82edc8ff174d91a5c195a778aa265f35a4b7adb596caeddb566d86b15b4ad446ebc4a7c34889d0f69e6b820ae5ee2d1} +x{85ff418bd6582cd00828c5cc5fabbe68927d8cff526f435bdac63071707dc2f6cf0d4f916f2e52f8a341ad8e3725cf67} +x{ace11bad2e6d2ad1cf84b01c3f194c23d5b8e96840e76444f42a063ef357a3f5376e3ddd3b2031c99400c2f82afdaedb} +x{88eb0d46e735ddbdccc6d3763db910420a2c864895f03f3537dfe49aff54784b181d2d02ff37165b29eea18b529d8f82} +x{b904f873c0cb532c4633dace5b389ecca9513ec84562ea714d52e1d359c97c567c0267c4c747f060e5f6e3e2fa0f2c13} +x{b63791ae81e8abf907f7a6a1091d72e37b655cf1830a6a0bc634049c6f9f4afb597c4389b9636c7fe5e8db52867b26fa} +x{b3294d1fc9c45bb0f080db57cb628faf8e2684876c853390a548ee78878697030c932b9e5b5f77ba54cdc4162b439400} +x{a38e9faa508b2feb73b4040a0d79acf3bf39bc5a62ef30bbe43c8073a98f12ff9e286ff1490c8c9aed3faac16957b7aa} +x{ada99e8309ed1d1fa2621693c8c9e5d618218dde92888a3aeaa0692754e7dd94a4268afbb75550c2dfeaf5764adfc0c9} +x{9232ab744f72c5ae7fc674890d07027dc5541eaaf8dc1edc8d8fb4d5c763053a53697d9e5100ad9afa1e9fc888cf1197} +x{8b87270d542706c9d0db167db7302c5e3fa81642f8bc707eae2bbbbf731b3948dad68cf0dd1c1d69f61a911d1f8e87bb} +x{a9664311d8ac973f6ce364f7033c0d710a98df5ac6d7c3d1df70f78a33701bc0a9a3b2da1113e1667b89aad41c7d1b4e} +x{a6d02f30da6b850da8377c718d2d8ca90d2f1d352edc0abc5c0af2435dd180be4d0e1cade63382c990b8ca930dccb1be} +x{824c864ee1af1691d009e4c7d1d201da8a691e93b62523e22aca2e4b8a5d9502b6ff941851f8f46a203589e093539bab} +x{9873aa35cbb7235aba6dfb17cf8e046b84824b4598acb8cf63a20d26cb242087db54aa6d44270e948fa6a4bb3b1a4aa5} +x{929f1a544585afaa2df9f393129bdf3a0ad4e981146e9c9fd2ed89b1ca61e865c88e7347b07121684229e778b10be160} +x{97952ed5cb54d0451e8cf08cfc29a423a33a1ad84f7e02b00cc5de88a27b23f77428e4c3a49a022617229952dd27ba6f} +x{a49a6e47098ce9ed5d432aeed22a981c05dccda0eaeb25ddb2452d2c5c39f53f781b0840a894cf70804ed300e90c95b0} +x{ac3d8d959683d6db8298d6437aa22378375c5b3a4fdb416925b71646e6f7b0087d0c6e65d4f9beb0ae72358e99c1f5fa} +x{aaeae464badaba7da40bc59ac873e1f07fceedbcac915f33a94daaa72688c3c49e5717300abe2571446b010416b2dcd5} +x{a2f6caa19c0a43d3d6a3d1af5e8bc33a0bb3a54b8f5f6d434bd9b3328cd3b6b148168e554a0af10f47d43943dfc6566b} +x{85b48b545c089325b055d2b34666d091a07411272aa6ea074b550f9c9bffe118b1f2f9d4cb903e9caa39fe0cf1ffcfac} +x{8db60a483dbadfd71f08f6460027f9dc608df180ccded4a2677e88aba24e72a80d55b783ce84aa787049dc1ca9a53512} +x{b0888ba78b37c36f1c61064284aae6021722ae38ae8f64e6da2c3e13daa9396eb5520b910433d0ee25f36162a5d69ad6} +x{8e6777565dd463b41aba4c7a63df9d1ae5b6b5b1d7d336f67e86fca8280bfc90c1d7e95ace60c34e6b3bf55d28bb5d2c} +x{99275fbc4baac72896a20267af060f21ee65293b7cf8b27d6495d559886ca71a9572f6699e58b63ff2433d760ef2e31f} +x{85b16af1b7c62f0beb9c801fd36731dde735c9ef6bcf97bd29dfddf2ec438cd5cb568d914c7701080a7434841ccb0f1e} +x{a87a5cf9d7c130418cceb93f2b26747d3f70d8a6eb8ff0cec28ab969bc92addb4fc5dbcf5d18dbe21e150ec78a755e07} +x{abcc8ccb7854b76b80a0e6e4d390df544ed8d09daff0818a71e8adc7f4b6f2267769017db965a404665032c46766040c} +x{b90e7b9ca3237916f211c02cc1575d8b8df43313f54feae4c78944bca535ee95e37b63729910f9fc4dabb907f3e73acf} +x{aa968ee64eedc74b51ef13248e6ad4ed8fb96eb5e499602889b971c17fdb126335f59f98952de0e5243a0b486e2d4e62} +x{ac49aeaf558fcf8086def396c8db61cb80ad416a94af50a1b583c5814bc7d54bcaa72feae09a2e162ecb1d342608db10} +x{87ef03700a561ad0299e32ae473c1d724a391e3523636e64c75d8676eb2856ce8189a9e0279922fdd7a9365c2a483e7f} +x{b949a74107e0c6b93cfbbad5dd0a47f64364e5c7ecc55cca0fad5f85c4bbbac48555144b7f676603a5292fc1712c1bc0} +x{869029064f1a86ed00ea442bbc5d330c7a0ae4a06b5595c9a5b57934f6876f3bb96d9dfaef1e926428d14e450624be57} +x{8379963a7f188739e953a4e9799ab37d5c49e4b8f49dc9bcb686371219a04dfb6c55c441c59b2ad89d7145ab3dc08631} +x{8460a57fed7db8691ed1cc69c66116e1544e164478613ade64eea6b3926c99011d2cf386e0d8bb1681ef9a5d556f3c88} +x{8c9cb7d59ef8fe907074382c959b661665dfe9fe4fa328fc93752cc2cf80d431b8799868eaec777013e67966b37ee0f3} +x{85e7cba0dc3614869ccccee0ccd782554ec3821a8d6056daf10285973bbf548f7c7120627d1f0edab7bb29cccd4fd35a} +x{a2ed49318a58eaf3d2211f3c3573a522605481278c5d5aa06ae610928845f030b3455f8cff3cbe3afe08e8bcb5839b31} +x{898c2de6094e5d40e725faa69caae6ae499f2ce0d13ae0fac39291869852d5f9711d447de374942fe7281030cf6a4cab} +x{b59b4d2f3da26779b0c3c33493fd23d78d956e688eec9df7260e622e2228b6cf30b111088e6f1aec6e690a4ed80f086c} +x{af9916b2d4c305532662819fdafb544f4d4f74a3bf5738cc31cbfc0018310f0848ff749be71d797fa287a7b5e2774e88} +x{a6eb7c89dbc44ea9c7439d0ff2a7b302a5182020743d0e54d84048ea668a012c0a808aab9c7809ed9920f75bc1df04e3} +x{8da5e1e8173da17fb2527d049c746f216013a0cd3034be30fab97314d67f90638efeb394a504052f84dd3314f5a6e1fa} +x{a0a9dfea9829381a8a8be0dd6ae9df703da93546d93e5a8e2a0895d0149894fc424c5735b32517305a575936e6d0bd41} +x{afc39ec1ce487612179154f7e36e485626cdcde18593fabcf3a4fe5743abe57d6de0938d1e5b1f45e3861cbe9cff2107} +x{8182fbea440a49e1f1deda5b1973eb1a6555d8bef74271ea56489508ae847db9f2a2e0064c8f25c6acad4893ea3556a7} +x{b3af977dad139de108294d0fab8dcc817abff1948f6ed746e7f6aae1ca15ff628c4d9ef871481b8a05f3e4eb060f1569} +x{b5b23529ae9ecdad0030248957d7135bb0f2212654f8b06b921f4f2e9f3374cf8314ed08a2020a2b81307db91bd31325} +x{a05aee8260d4e96ffdfc3764c6aeefee513255daf8abe5df1e455ad9dc1ff826d0e57eb59352d6f3ca805f854ced20f9} +x{b3d57b48afdd734921b826b6e165fc7ede42a6298d795cc3df87a659f2920e21f6dcac0fb1ec28e145e415cf1f75f15c} +x{b9f8e0bb3f230f87496e6ba4ac104106426c87e1e6732863c28f4ab8b6d752c00d3d935f5e33669045c38a61adc09b5f} +x{974e00079eec61f2c2dd74a02da965d367ac1f4cc1e128af147fcfd4c6940d2e0cc3babcbf5514b2beae2882e1ee3e14} +x{9539571783ff73f8b5172728c3c5af82a1f36562e06e4e79fa8aff690eb5e4e6cb53f0fdc2a1fc2161e638313d379b59} +x{af64b9701e9073ef4cf2b5345190791b0704dbd28b3f626042e1a0c4fa215fda937e996dfbaa07c65d9ca5f96b8f61fa} +x{a10eeb3b9cfc1761bf9a22bfdeac39fa830cf2c52e2b70b82d99c005467243948821eafec82310ff761171ca4a5eccc4} +x{86a5d807681cb61dead165e7b6dc51fbc4d87a3e1ba203d0850a88fa6abc8c443f6e59d0367375e04166319bbbd70653} +x{b68306c1ee04db2c41a5599e8c65b36f27e2ef2dbf74153f50f3ef5a8566a8522268b7131ed8f6244a8e9285b8cc1363} +x{b168681033750e64fab4b54121fbf6dc64bb214eb9bacc00d199745354517e3e1b110ad882264862a91990400eb0d832} +x{a5a41fa143084456fc9240f4a0b0959c6ab2e4c77a8d0fbacbaebaa7762d19cf25e2bc9bf642c3dc4bd52ef9a125d9b6} +x{aa1044716ac0ce361fe3d7cf79cda8ac7bfd5d75c4c9a6385e54c0f058dc37bba7a98066419340119ea957835e3f5062} +x{8316f76c23a66cac4d13966c641a8b1fddec4a8a1da95e418d3c29a318123dcf62680b3d7d7fe989200f087da31f2d47} +x{b3520e472e5206768de36f16c59537ba7a5f548f1e606ef341be57c61c69b36dd3e9b6fe7fe8a36269e9f6b3b6860612} +x{8e58d534f013ab17fe6602ee4a477187367ef4c48dbabedbf81433243dd5138aad25aa483a34cc96665f6fc2b0c43ce1} +x{a53b58680e5397ace528cc8b2fe5e9bb72c40eb450c3fc5ca787cb95b1da733b6ba759b2df4e9e2b774e0423b57aa0c3} +x{9124081b9f24d896cb79f75a667e58bd97e7150bf245f9f50d3556e1108c47c73bdd153e65d75641b324ca75ef2ac4b8} +x{a6f86b395f56ea59ddb0f2329aaf2fb7ad7779b83e9284f9303dee3b29dfb318196f836f8abddcb8368a8e7c2cdaa462} +x{993bf4eaf832dcbff2f8c1e8009f779189ad123bcb12ea9c46e0db23dc0772fb0cbb89796d9dff8cc3c96a35efe33b6e} +x{b3fc6d1fbf08661dd9912d9f6badde61cfd6ad5a8be87024d9b25724f51d0fdf746b1c7ef08fdccb7453563c32d3b753} +x{875284793bc53f9b3483e59ee05094e45c9aaf49d7a94d9d541e1426fd02a0271f6619c1d5dd2ef2ffbcb1429ac65ffd} +x{87b53aec91540ea4bc0d89fb7f863a095e4fe9644b433810e75316c0015663cd0087b5044bcd6483b6de46052439ec61} +x{926d4637eea543e4d3a97963c9644632bcbce065cabffe5af044c73f43294446dff6f502b0d43978121f8783e789b784} +x{83709d410068ec4da081a18cb1000401741e652d2db38fecfc33c2b124cfbc2497ad490fae22c460905066eea5a0295f} +x{805b9aef8db25a170b664495fe825c92c737c2c2d42c982a0a87161d3e7ded0a75603946fb68e2dc05525a2617c950da} +x{844f8360c42e3472b8e1f0515be2b17c57263569f40e931e96ec456338f89f75f41998eae7d78a32d97f532dedd93ef0} +x{8f8a897dcd7a5a3c7bd68c3e9d7a742c116273337c15c7518264dd403467a26647573837ddf08644165fe87dccc8a263} +x{8b83e1982cf15c9910075224a8009c3363f2c1c914f2d74dc88f2d1acdb17bac75a838a56d123f8a6746b611b1105b18} +x{b27d8d49ee63ecf6f4ced8bd515c4fa27478e8a70344ce098e9cd3e6dc4712f3d24e47f93d23242571444cc726511865} +x{a3252f0ad64cfcdfe330f8939f8c9ffa477ff17cd45929f7fa62ba25a9cb5af0f83a070d141f315cc6e82f4564ec4f64} +x{a6bb5240fd5ab570f4b5bf8836c34241933973f0fcb537a124dff7ec545c1c55d13cc6c23ba1b7452b9aabb2b66dcb37} +x{af83b1ffb771e0698f9b2a7ffef6df235b18e89aa90a5358abe82a2d9b077e08dc1ee11869a53b95519072adff5d26c2} +x{a990df005e123fc73bc97c79ecf34dc029265a66b530687192230689aa6a96d4fd8d71d5d6292566d195b968184cc3b9} +x{b6db2b4d155a26adc7667e84a98ee9e2f57ba6eaa1a0b1d966502890a060ef5acb1b9ac0e0cd488b0d70f356d4ab1575} +x{ad23f7a128230b69b92156de6d12f3d7adca4f17e4fa95ad1e4aba93afeeffa1aec73cfa543b2e9387823c95db18eecc} +x{b021626d7882e973d1dc142833d7b78b6ea7ce6d7c5abc4e5c4232d61d9b8d540a01d0c3726f253702335a80d4873e3d} +x{97d37b022828ccbf20450561fcba5febcbf2627e2e0e61f0259d9aae32b63efd795e83b247da7828ab3a52f40b055c8d} +x{972829ba8a181be19333088f332b80506d5519853ae22d50a1be9fde4eb181f1a00b3e695da8872381d8c663e53ea752} +x{a97af7a23e81bc3b56d245bdfe656ddfbb30b00dd05b358b29c442c6d440c84c46a87b9df9bc7706ad6eb004091783a6} +x{b062a29f4441bd839232e2dde99e329f7e6c043f7f315ee156852fd557987b04ee911ad8130cca4c49cc8e09ceec6e81} +x{a8239d71d680131c1d3857e13d53f11858d81a92217b37aeeb19b634a02441082d966f0b66e7d3f330402f8436ff8424} +x{a1ffe6c1a89d5368bdd0366d4f780288d7856fa6085e85945c382d40931d2748b2db1cd443f574847649376487bdfebc} +x{aeb35f89d305071d9aff9cce962a0320f84e206dbd927a5a9554d5b4e18e65734b1e7c81d02e245b120c1f7566d9fefd} +x{9935f67ac4d2ee6a4c513e46220d67d5bd6bce78e73fc3acd7e4b4ea895f7c99d44c3ca6400b07c925e7c43c97805301} +x{b606626eee2ca8f22eafcc063b961b78ad58e67295f9e81ebebd07834d5fb7b094476d4cf4ba977fdbcee58b8ff91ec2} +x{aa4f50a49daa01f4e2b92fd58f30029c0692fd529cb2db3aa3a6ea0f990df5020ba8c09992cced29d50e88e77b9eef1f} +x{90cb4f0932eafe48081aaeaed46c608fc0d5aaf7cac29a0f28e7a1826882983136f5e91f3d47b147b1f1d252a68cdfa4} +x{8610084a4b1884b49f1a4785c8a485cda8d0719510e0013b31810db813dfd115b31eb1c3e29ac17233e903e102f2f858} +x{84c5434f9c4554d0d5ac44dc84142ff00c3fd20ddcf207c1b899399d71fd2104d408fced0b58d3673bccc56123e7a62b} +x{a186868726ea2fe22049b1dfaa62abdb42ec46ae860d2f60546ece07db5402383b6bf3c7d26781c393a611512c250b38} +x{b2fb64b19612176bc0961538c8ef5d5d167c98f3d43747d95fe2f030449efb61a962fb0562bf4c42e7bca96cca4bcd17} +x{907261678b16023479eac3a3d921374a6a42ea163a09e7a975627b23043011711f7729efa8a39eaa8b97f9d19a336b4c} +x{872246987efe00f8f6a24bd2eeeb6b431204c01f3dcd4ece3b680f2bc164fb65f671551c9611d892a313ffae8ad35bfa} +x{8a35e8cf02a79ebeece284cd83d4499b10e8f3bc31f0bb058dab05fed30c7ec1d790a1dcf22685189853d3c8de81fdba} +x{8c4251af4d9e27118bd59aaaaf2fedbc6a8d5dde289f66345ac64bd566d094e961a6860238f669e2b4170a85022619f1} +x{9798f348d7bdabbbdfb6d2345083ff74ac58db16a6f3d68cd972d8c58380f3f455e589a91beb866d6ee379b8801ca20f} +x{932552f80b6a1a93dfddde98362f1f6f2b753f3fa05d6a21feeb47caa44548c8052143e3f71a21189e22bede3b700fbe} +x{82a0a28b240899e36db8f0ea641a01225c0e148dda443929f1f4dcc7020dc64a56532c0e0c754f458a78292e67b01098} +x{8d131e2eaf0f6ed5b293f22a8523d3c99f7456a5ad866100ad11141148e4825bd041d6870af2db4b6068841ec306181e} +x{a7281362b96c621f04e4f9dad0f09f2fd880171649efb46381ac5846a18376018cc43734971f977d18d1751cfb05c709} +x{a5d0207289aa93655aff791bdd430ea25ab93076d4295a256529411b4a55aa25ed8b3433086512dedd0255ded3ff9a63} +x{8703dcb528278c5c65b410dad0047bf2257f988bac6a11f1fe55e9d9794fc2515ced5f9863262d13daebc487ba4d4cc7} +x{b080c720c764ee177c35cbd1e29096e54feb2c29c68c7b5279916fc32177eae21bdf8328c7477e7a7feab59182f79c8d} +x{a98842b26ac4212e620a9a09018ce4573c02bb64a37c4e6ba91f972744e73b37a5c2d3f84c6cb59bc00ee25915e8a918} +x{aaaff1c584152dbec4fb2b50b91abd0703853a8051cbd3bc536e90aa3b65637ce77ab3dad4e9d6e8f3def0ffc920f9ea} +x{8069968e491d68b934b27e91a355249b2b1999cfa2534b7cafb7adb7a333af7920ec7b628cc5725630c39462b967cb7b} +x{b4da9f8378e711b30c3dbdaea9dd95e0d43420f7498f12181fb5bd3743392d5b5c0f12c1121bc2dd6f325a3d4c268bf4} +x{ad234661b80488143b93ee2efc1ab8eacc50a137aec333ea8141b426e5fd4070c968618d1a875947e08c8428e68c88e5} +x{823f71e9139e4982ce3b5dc7242a61876fbff25b3e9c1b532b82895e8624942f5e57af2c7819a80d716e06e04b921250} +x{b8f32a192438bf2dd454d0d9b831630c54b65a79a79611ab00386dfd99a80e58101df5455084d91a9a9939e108670214} +x{a5f68bd025fe3fb4921de2a081381870d41c85999f1754ff66d270a74794c7ad50d2fc01cf01ae1ef63247528e02aab4} +x{b7bb0c34c3e5da34302e937ca40a53c980de5f43fab50299f98b6d44fde2603355845030a29c1593cf342f85a8955450} +x{83077ae296c08c8aae4bcfc79b2828403433cb6ac48bb5c48eb85d4ce09f61d916947354e49183fe675c0d7f5905fc4f} +x{ade42daf027ed0939428a379dee1d6f52d4d69bd8854a5a5b166b8b1715a5f51b3d7281a0a2a4fa86524775c694deca3} +x{a327e8017149cbc021a583348c07edf1699b26bca4e07b6f79b1bc9dc030b77512f2968ceb47c8f72c81a55dbc293a58} +x{8dfec6255438a25f4076480b80786a58eb3e5d63d76e30f95e39e590a39d82c405b33bae71001ce647a1e3b3822aa2d3} +x{b744e6c66ac37ad90bbdaa8daef65b66a41d6f7c7662e86db742a7d0e52e8b3e6de185c99b53d1d75bd120763d260e1e} +x{9954e4646ef602352b8316de9b9186ebfada10718712d0d7ce646dec72a4840e288f6029aa0c2a0a4cd1749a3fc49760} +x{aeab8fcafa3f35b2b6585c7b573ab001cb1b1eca62839430010d69bd626bd522a1f64eba0a72d7e35e6081f8f24f9ecf} +x{a92ec41af6d290cd87c272d30a9c6afbde28daead0266987cbc24ebb3d68793b3e3030ef1c0fd6162e5d6067189e5b0f} +x{870da719fb854d4e97bce5f84994ca582a7973f85abd172682083bf974e07ab0217c56dbc8668d978510ea6d49ebf0e8} +x{971389abf73b0b18a85a9bf1a5b78ae54af0e9dab2810ff2a235b106ec2093f31c6144b6267e143b79ffcd4c79ee4902} +x{94f929a1834d477597f4d1047d09298676948e7136cd7554de2a5bb89d947c476fb3a9391adb0d804f0304bdefb2c074} +x{b250f0c4310487e162a6e8a8b2362a6fc643772838b4fd0b330502f913b04ea55c88212e83ec5a8103408511905807f1} +x{a3b0ac5a206ed5a9032ed5cd213751fcee66c7d629fe473f09457b9da9142c957ed39c0090c7eef24397669b0d361f72} +x{a151ed4066eafd3ea7eb646def1ffb5d14258a603045e37cf2c8cd7248700e7e1ac3e7f852e2fe7ad5691eccce99252c} +x{9711657a493af933761b8b848b5f09fc872d4ec85e3567c40bb48cb4f922627c0088d173d835b115811aa095dd8e5d82} +x{a5e7f4a06080b860d376871ce0798aa7677e7a4b117a5bd0909f15fee02f28a62388496982c133fef1eba087d8a06005} +x{a821c289f883e5a9bc76076a7cf6f6ee4dcac14d064c76d4a98756f6bfff85cc1fd45f5031b0c491d393869dbf37ab58} +x{b5716cb955ab67df3f9035325e00ddf29855f010fdff09c708726aa08196807ba946cfb70a710dea25ee8209af5cd38e} +x{b370f1a22a538bce3680d8094eed26372201563713ded3308c2fb4998a4b30f92f57616f2d859ef0806dd6da776fb12c} +x{b144c4ec1624abdb6b0b006091ef941f4f785751d114d6bc39269da9431da9991fa23e2b0f333efeb38770a25523e820} +x{919a189511a5d7590ecf34fbe5f36d1f92244db0c06aeaf6fb56569abf30ffb71cfc7c42913a6483a57a39a0ccc90b9b} +x{b9f830b001c45c07a83d1ef9dfab49a9c76fa9c13d62a0678e4336c6031bda6e07223b87a7302decf09e72364121ebeb} +x{af014b3be9c6b92fe8ca07cdcc900c86611e35e32a758ec468c1afc13ce640a7375482d51b8681903372f9c5ecca7687} +x{90293185a10067becf6f10dd5bbcdad97e189504d6a1df630a1028103613c80c15b29e0fb4109337b611c66e09ffb050} +x{b23acf81c4f787dd63e3f8c31ba9dde38b44a455a18b04f7325e09bbd439e5ee2a75b67d3673aea6d2476998bb2adb0c} +x{916efb4510ac05f36693e543384a54c875c5ce811f3bce476a294d00e4d64f27b5ab4d4c4ac7ca9a2c46a2c317326f72} +x{b76b06907a9876f8538e3f58758aa95d23d449dad3caab1e9708ebf51b09b9edc29d04d60ca3d6fda0e2823a4437b0d8} +x{83c0ccbf5f94afa5a7f5e7b3fcf7eb2afd2e656ff327f357f1a4b36f630fa2856ad1f07e51b38ee3a6e92d8075f85fbf} +x{9527d6a088468097aee5e3f0c7cd469aa666f096f054432d2a34df504217dcc5f70b45c7a4923b84b8cc9ca9f4a4b23a} +x{aea834fd07048eb22116cee9cdcc04c0ca900b5ae15e297091ce64c5631cae870ca13323241cad96c81d1ffdee43495e} +x{a9973ccb82ca88c7862fb684abd6814420b5f763416527a4020ed15adb1d5280b71d21e2ef280bfeb3f64104fd0410df} +x{a85b5024a160e7ed3467930b62c1346166e3bc35be18c9a891f19c5f343d2ee3c2702e987a4a1b7c9980dc4e099a7494} +x{a279c5583f81d1b1c1c7f6652bef822f0ccd3364de4dd56132a70fc4dbde3e006c17bbaeba9ca3dff6ea0e0d7dc0bede} +x{929713e325fbc3b9012896497213781dcd7edcf1122ac2e71bf0eeedd4b72090f9b61780f159f89066aeeb29d1b0bbb1} +x{8da3be746b47660268d2f6d74236047f5cc5291b68799ac8bf1bf34e1d035e4c203ecc415e71381a11b3b5884c0f263f} +x{98742a51f3d4581ae8f22b8c8e195d4e87017f502c54862d7b76039958d90bff3c02c07cde47d3e0d6877b4937648bef} +x{aada0601bff5813cec1b849893e2e6db5fff6a1beb605517c77e4dd2722aaa41510e528ccd072a76c10f12744d2ae172} +x{84ea9203ef391535d61ba30fa3a2104acbc59318c2da90d5e6f5df40ae8e234eeee714af1b4715200c471b00682ec3c1} +x{899047e4fb2a2824bf3c612a1040fb6c71c1f7ef0654177144d236455b198ddef003b64bb7c9d3f0da78c32800956e2a} +x{a10af4ddc28d1794167cef4b751022d8f57860a2618ce05a8b5d87c95584f1c6ee2774df7de60768ff81db4f432a3211} +x{93614feda46e422eefb30a724bb519c7c2ca3f743546806d4ba6ed59bf8862fcbc1f3fdae9f17c127255eb6968780b17} +x{a1f5e841c97a4ff52b2fdd00164fb77d6960cba1ddb3477d6b522a05521aac0796dee38c7a43e10d9c1681b38d8892ff} +x{92d976efe2f26ed00fe867c789407dbdeec51921e718b1a18461f795460d3bbe7cd74ea817d1bdea149423f0ad8393b2} +x{a2a3e37af6c9bed27e8f5d7dce5eeb9cfcadd2a942e7e9f84c9d95fed6b1dc7ad7d079f3f5bafe2d44dbbc67d99b0a5f} +x{81ffe874b2efce3625b5cd61e0d276d4f460597907a7f862a0a17a8bdd6778f7884e6a9d80e4c5cda224b2701655c96e} +x{8d2a05160ae509264ae64e056518a0f3ae2c197c2450d14d7f30a85db58bc7c562b5d450fef287d7355e63cbe558f44b} +x{aa3284d0d6e875fdca38b4009f57d7185dd3d8fe58aeda254de4e7df3932d446b80706f754c6d36ac230877a14da2160} +x{85a98b4ee6889d0fcec0fb23025e62a0bd6acc92df9cc2ab0cce430d7b096dc3de22f79a22ed727a5d15ab9257216469} +x{874bf95557e0094df23d3f1cd41155862b755482d3ef1a2707f341a1c66cf5f3a9edf52df5b167940eb1c1bfc565fc67} +x{a8324649bb016038ab07cd91879772df95a952973a19c34cae6af7e4fefbc545a94d12b23a2159e48bd049f57f5e93fb} +x{83b8c1dfeb31c8b61d8ffebf44d54a36af52f75aaa0531322020a6b04df9adb53d9a8099c521844f4e88d6e6aa36ab3c} +x{abbd6ff3a89fb9e14ad17978f088eb4b60af37b02835eb8d3fb7e7ef59342b68ca6ed1fce928446806015951caabcd6b} +x{8e9e5baad181d47ace0c6b5e9d639a2dac88cf667c0a90610267046563afe28b7be6ccd887940b5261579f7dbe6f920d} +x{b3f0b8cf0b5a7c6ebcf0c46c1be6d3c1d0a5a8ff5639188b3854206f2912f384e9f4d13fe1de35da1ec0ff4cc0917c56} +x{88132b949584e6d96043228bd589ca6438c594fdf91b6640f65932f379cc94a02e294e9d27be40e3d889b63d33c388cd} +x{b449cff96f2dfe5bfa879b713b081d48898aebbcae376c5cb32ab1f2bf3a8eb329f3aafcf6c251b55c3622b6a5036a10} +x{b705ff85c991b76587c7ddf9dfa144b25d985aa85b0b79e3c21d2229542388d9e66bfe8aadd511229e64c3c14e06bcc3} +x{a1f5ecdb881f30fab751b45c17326d04aeb3b67db946b37c3ec9ca8c5608d949437612e0d08e96c393d5b8110d9fb619} +x{b53734cdc0454bb8e02789f20b414e3461a73a347aeed2c331ec625f35cf07b44e676d568cdfb1fda7e3bb46fec2a179} +x{a496d69daf6ffeb228106883ddc885a7df0290527b4d9ff902b446df6b220842c0040f9be9fd08d8e2c17731d9d6355f} +x{89532cb6bdaf72d8e430e8baf25a94ea475328edf876659039e71b1804b407964ec043508a81fc23659ac5d225f81752} +x{aadb20736b040c633d4790e0d30748ae047e86efcb5008b586f1bf2dceb99ff4659711b2933f50096ff2af89d9bc187c} +x{b1d65445dad3417235c059d084f23fa5407c2de501f3501729bfe9952e7a03c2699f7115130bf3cd7f3878be3bae963e} +x{89cbb614041988d7f15e4a2cd7552b4c54afa224839dbe5076ddaf4ef8c30e661af4080f64245588fa4ff71314a1ddb2} +x{8dec221ff90b27567f53bea9638293624c5fc64572a32ad93651fa2172b37132195b3d4de8b89df6809d312ddec8e554} +x{89700f819dcd49c6c2c6586333773f3a67043bbc780c9ca4f05dd1a48035138c47560dac51c7e0e58cf238b910bb8001} +x{96abae0439028d53d35dd4c0ec26dc8a4ba1545726e25620f0a5ce3901ac7b185c9315ef46c0a29e10d8f0a0c7c0fac3} +x{9799c21074cd36b98d1e37f66dc05741c13f463b893ed5bce9fd2db604fe95c65f23d07015eb53e2ed9fcece39a2145a} +x{9119782077a9ae2564124374d877b0835e79d9de524c6cea6b1f3be2e1f33417040bf62bf064200c74c086d9dde10084} +x{8075657d35885a8a3bf5ba8087a5cd5b089f894da72ba7150302a0e6adcdac186eac45cb79385445e3785278711f2091} +x{8e2f9aa48d8a3693c73995113ef3d2bb8c2c37f8b528b2e8a9e52104940b1fe3bb6df234eeee099d445c59dab9eefdd4} +x{99107a6ba9b0717141c9c36c8a2f99a293e0909da65f20c44594b7bfa519de73c2c93e3ae651f94ee7e7787d16e39ccb} +x{8239a6c06392fa5854bdb4a3703b7a38a6ee44df66d498e0c3afc7381a61f335012835bef8a0b558630f1e1863a11731} +x{8fdf5c3d7bd9d5d46a0714ba236ebe0f9f8f04db756bcb30f49e87f758a28f7833aef65dfb1bac9963ec945c9ae69314} +x{911419794a5b85e78452a8e156eef297d5f10a0b5488b215e8f7d9a757f88eb7f2febcbc4f2b135181f9a0ec5c8943a7} +x{acfcbcea8262c87fa851c4d6601cbe9cca7a597425f9aa4f002b518153fe6e9a84da7185a67bfef2be7d07de638617ad} +x{b89acb00a4d16e56460ea0bab3f3f5754eb79220d60fa8ea6d5588f20d21a4d16f38107994b2e350d52d5565924c88c5} +x{b0bc0f14093c805453040cabb3a58530b5c7d75dd8ed2499c3c089ae6eaff8cb90fee7f4fb4a9a18ab43567eb06b8bdc} +x{ad3d2da3b07f0d9688fddc6e19ba30dfcebbd3a5af3a3f791e056d89650bf98d931ebabeda4338d8196e86856b3d109a} +x{b501ede6b849057031006a356607df1690206fbd337cd6ef1db764aa257ab09818af900587a751bbfa7d384c0d542c35} +x{abc8caaffa2225d3df4aa9020e517f57561efce8bf1628d1a75ad7e5c1efb4469ef56e2fb44427c740aba293e1896992} +x{a166cccc21273eca781e33dce0769633296101a1e43515a120f027d06e110e5eb7ff1f6a1a324b9c9315bd89e12819e3} +x{81c29db55f0957d889ea8db8e2a15c2d7020d50f1f9f60ccbe74d4a58a9aa5579955d4a73065614d556e443551f1ec51} +x{89024f719d34cc220acc52d4075eb1d69a7d3624d6eeca3c0e6ceea66975c94947f6001189b21f72980f883a9f73eb2d} +x{b53fddc5ad0059ee152c0d096efef63293999e54a66c867432de3dce6043f7811dc58111480e184a99e4c7f360a3de70} +x{a21b66e7db725312ef2929a65d18cf60ad3f595d8d3a76cbbe419430e4e6a83b489343edd714f774ef69b07771ed57cb} +x{b177aede11e8288c8d2c7e274cf1b5d9cd17f0b965455d42d014bc4645b93572467c96f47c8d6a0c98c12730f323170a} +497 +x{30cfebbd980ea1c8f157a34abed82f3a34ecc2594e626265063e565230ae9193} +x{91cdca080f9cd6ae0bd15b427455053e12025843c2f602e0af70fa0e5d18dceb0bc46aa1a7652b54cfd8ea97c7210c5808d7cc72b82be7a2feb57f69d3511e4590a665e45e0e0f9bb43b05d8a0167fe2a91f4aa54c0a095c864be6e2b1e43081} +-1 +test-fast-aggregate-verify \ No newline at end of file diff --git a/crypto/test/fift/bls_ops.fif b/crypto/test/fift/bls_ops.fif new file mode 100644 index 00000000..c7f76d76 --- /dev/null +++ b/crypto/test/fift/bls_ops.fif @@ -0,0 +1,215 @@ +"Asm.fif" include +"FiftExt.fif" include + +{ { drop } depth 1- times } : clear-stack + +// Map to g1 +."G1 Points:" cr +x{7abd13983c76661a98659da83066c71bd6581baf20c82c825b007bf8057a258dc53f7a6d44fb6fdecb63d9586e845d92} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a1 = " csr. constant a1 +x{7a6990b38d5a7bfc47b38c5adeec60680637e8a5030dddd796e7befbec3585c54c378472daadd7756ce7a52adbea507c} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a2 = " csr. constant a2 +x{4e51f1317a8d7981f7bb061488b6e6528978209226ded49b02fd45fcb9b5ff8d33c360cd6db9661143a77edb34aac125} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a3 = " csr. constant a3 +x{0ca4a2a9a055367caa8c41facaae4c1f28360e2bfc70182904ff966011de9c02e6744bad6b0096e7ef3f21bd972386af} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a4 = " csr. constant a4 +x{1473aa897a1a166ce6c1b1d11e2401ad719b9c03f3a86d8dd63158d389667d66917d3845414a23c69ccef01762ec78d4} +<{ BLS_MAP_TO_G1 }>s 0 runvmx abort"Exitcode != 0" dup ."a5 = " csr. constant a5 + +// Validate points +a1 a2 a3 a4 a5 +<{ { BLS_G1_INGROUP 33 THROWIFNOT } 5 times }>s 0 runvmx abort"Exitcode != 0" + +// Invalid point +x{1d549908b5eb3c16f91174abe436c1a91442a57f922da813cb3dbc55de9e62bd63eac19a664eb8c3ea34b5a5c176d844} +<{ BLS_G1_INGROUP }>s 0 runvmx abort"Exitcode != 0" abort"0 expected" + +// Zero +."Zero:" cr +a1 a2 a3 a4 a5 +<{ { BLS_G1_ISZERO 33 THROWIF } 5 times }>s 0 runvmx abort"Exitcode != 0" +<{ BLS_G1_ZERO }>s 0 runvmx abort"Exitcode != 0" dup csr. constant zero +zero <{ BLS_G1_INGROUP }>s 0 runvmx abort"Exitcode != 0" not abort"-1 expected" +zero <{ BLS_G1_ISZERO }>s 0 runvmx abort"Exitcode != 0" not abort"-1 expected" + +// Addition +."a1 + a2 + a3:" cr +a1 a2 a3 <{ { BLS_G1_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +a3 a2 a1 <{ { BLS_G1_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +a2 a3 a1 <{ { BLS_G1_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +a1 zero a2 a3 zero <{ { BLS_G1_ADD } 4 times }>s 0 runvmx abort"Exitcode != 0" csr. + +// Subtraction +."a1 - a2:" cr +a1 a2 <{ BLS_G1_SUB }>s 0 runvmx abort"Exitcode != 0" csr. +a1 zero a2 <{ BLS_G1_SUB BLS_G1_ADD }>s 0 runvmx abort"Exitcode != 0" csr. + +// Negation +."-a1:" cr +a1 <{ BLS_G1_NEG }>s 0 runvmx abort"Exitcode != 0" csr. +zero a1 <{ BLS_G1_SUB }>s 0 runvmx abort"Exitcode != 0" csr. +."0:" cr +a1 a1 <{ BLS_G1_NEG BLS_G1_ADD }>s 0 runvmx abort"Exitcode != 0" csr. +a1 a1 <{ BLS_G1_SUB }>s 0 runvmx abort"Exitcode != 0" csr. + +// Multiplication: +."a1 * 1:" cr +a1 csr. +a1 1 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +."a1 * 0:" cr +zero csr. +a1 0 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +."a1 * (-1):" cr +a1 -1 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +a1 <{ BLS_G1_NEG }>s 0 runvmx abort"Exitcode != 0" csr. +."a1 * 3:" cr +a1 3 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +a1 a1 a1 <{ { BLS_G1_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +."a1 * 123:" cr +a1 123 <{ BLS_G1_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +<{ a1 SLICE 100 INT BLS_G1_MUL a1 SLICE 23 INT BLS_G1_MUL BLS_G1_ADD }>s 0 runvmx abort"Exitcode != 0" csr. +a1 -123 <{ BLS_G1_MUL BLS_G1_NEG }>s 0 runvmx abort"Exitcode != 0" csr. + +// Multiexp +."a1*111 + a2*222 + a3*(-333) + a4*0 + a5*1:" cr +a1 111 a2 222 a3 -333 a4 0 a5 1 5 <{ BLS_G1_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +a1 111 a2 222 a3 -333 a5 1 4 <{ BLS_G1_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +<{ + a1 SLICE 111 INT BLS_G1_MUL + a2 SLICE 222 INT BLS_G1_MUL + a3 SLICE -333 INT BLS_G1_MUL + a5 SLICE + { BLS_G1_ADD } 3 times +}>s 0 runvmx abort"Exitcode != 0" csr. +."0:" cr +zero csr. +0 <{ BLS_G1_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +a1 0 1 <{ BLS_G1_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. + +// Map to g2 +."G2 Points:" cr +x{cce34c6322b8f3b455617a975aff8b6eaedf04fbae74a8890db6bc3fab0475b94cd8fbde0e1182ce6993afd56ed6e71919cae59c891923b4014ed9e42d9f0e1a779d9a7edb64f5e2fd600012805fc773b5092af5d2f0c6c0946ee9ad8394bf19} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b1 = " csr. constant b1 +x{2faa65f3431da8f04b8d029f7699b6426eb31feb06b3429b13b99fde35d5c0ab17e67943802313a96b2252a69dfdcc6e56f5671d905984940f4b9ce3b410042457dff7ae5fd4be6a0b73cad5d0390ed379d658cb24e11973d80f98bd7ff64f19} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b2 = " csr. constant b2 +x{28619564e5cbb27c9e709d80b654f2eb1fd2c3ab435d7b97b4bd80638dbfe5b47e52df0e5be0b2c328357c5ddd8018acc6e739c4d132cc6f2b9797c210051acef9513ae54bb66de2a9ea8d02cbca7e96ce8193be1557d3128906e12f37913887} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b3 = " csr. constant b3 +x{66f14fc1bb199ece07fde0a7af3cb3d2719acd4bb5186ab4ddda7de6a9f96557df44f3d14264eb0fed79f53d972ddc4517e362a001c5e7c7217169a05d9e3cd82b521236737f5d564f5860139d027018d3b33605d51e48c77b51554bf1d5b24a} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b4 = " csr. constant b4 +x{a9e68db711778adb0bcee53ae4fd2d31605c1eff02ae38279eebfb45fc319964d33cb45ee32bbcb13663fe2131f79120af2d8ce26400ece9a7fb57ef9666c5b1b6f1856cb121b1c618b2dcfb359ffa63a08989c1f457b355958f589e7314610a} +<{ BLS_MAP_TO_G2 }>s 0 runvmx abort"Exitcode != 0" dup ."b5 = " csr. constant b5 + +// Validate points +b1 b2 b3 b4 b5 +<{ { BLS_G2_INGROUP 33 THROWIFNOT } 5 times }>s 0 runvmx abort"Exitcode != 0" + +// Invalid point +x{090069862cb1b1ac4241c4b1ed5f98edb95413db77f534bba7e85d9cb54d953c61416c0eeb5c65c6f0b494e9f59b2c9dfe8b4a9af75e1114b45ec60f6b5d2327cc05a6d9d6e76d7a9efd947302966d4f357bd48e5c3f950101c88c65b13bd5c7} +<{ BLS_G2_INGROUP }>s 0 runvmx abort"Exitcode != 0" abort"0 expected" + +// Zero +."Zero:" cr +b1 b2 b3 b4 b5 +<{ { BLS_G2_ISZERO 33 THROWIF } 5 times }>s 0 runvmx abort"Exitcode != 0" +<{ BLS_G2_ZERO }>s 0 runvmx abort"Exitcode != 0" dup csr. constant zero +zero <{ BLS_G2_INGROUP }>s 0 runvmx abort"Exitcode != 0" not abort"-1 expected" +zero <{ BLS_G2_ISZERO }>s 0 runvmx abort"Exitcode != 0" not abort"-1 expected" + +// Addition +."b1 + b2 + b3:" cr +b1 b2 b3 <{ { BLS_G2_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +b3 b2 b1 <{ { BLS_G2_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +b2 b3 b1 <{ { BLS_G2_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +b1 zero b2 b3 zero <{ { BLS_G2_ADD } 4 times }>s 0 runvmx abort"Exitcode != 0" csr. + +// Subtraction +."b1 - b2:" cr +b1 b2 <{ BLS_G2_SUB }>s 0 runvmx abort"Exitcode != 0" csr. +b1 zero b2 <{ BLS_G2_SUB BLS_G2_ADD }>s 0 runvmx abort"Exitcode != 0" csr. + +// Negation +."-b1:" cr +b1 <{ BLS_G2_NEG }>s 0 runvmx abort"Exitcode != 0" csr. +zero b1 <{ BLS_G2_SUB }>s 0 runvmx abort"Exitcode != 0" csr. +."0:" cr +b1 b1 <{ BLS_G2_NEG BLS_G2_ADD }>s 0 runvmx abort"Exitcode != 0" csr. +b1 b1 <{ BLS_G2_SUB }>s 0 runvmx abort"Exitcode != 0" csr. + +// Multiplication: +."b1 * 1:" cr +b1 csr. +b1 1 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +."b1 * 0:" cr +zero csr. +b1 0 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +."b1 * (-1):" cr +b1 -1 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +b1 <{ BLS_G2_NEG }>s 0 runvmx abort"Exitcode != 0" csr. +."b1 * 3:" cr +b1 3 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +b1 b1 b1 <{ { BLS_G2_ADD } 2 times }>s 0 runvmx abort"Exitcode != 0" csr. +."b1 * 123:" cr +b1 123 <{ BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +<{ b1 SLICE 100 INT BLS_G2_MUL b1 SLICE 23 INT BLS_G2_MUL BLS_G2_ADD }>s 0 runvmx abort"Exitcode != 0" csr. +b1 -123 <{ BLS_G2_MUL BLS_G2_NEG }>s 0 runvmx abort"Exitcode != 0" csr. + +// Multiexp +."b1*111 + b2*222 + b3*(-333) + b4*0 + b5*1:" cr +b1 111 b2 222 b3 -333 b4 0 b5 1 5 <{ BLS_G2_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +b1 111 b2 222 b3 -333 b5 1 4 <{ BLS_G2_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +<{ + b1 SLICE 111 INT BLS_G2_MUL + b2 SLICE 222 INT BLS_G2_MUL + b3 SLICE -333 INT BLS_G2_MUL + b5 SLICE + { BLS_G2_ADD } 3 times +}>s 0 runvmx abort"Exitcode != 0" csr. +."0:" cr +zero csr. +0 <{ BLS_G2_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. +b1 0 1 <{ BLS_G2_MULTIEXP }>s 0 runvmx abort"Exitcode != 0" csr. + +// r +<{ BLS_PUSHR }>s 0 runvmx abort"Exitcode != 0" cr ."r = " . cr +b1 <{ BLS_PUSHR BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +zero csr. +b1 <{ BLS_PUSHR INC BLS_G2_MUL }>s 0 runvmx abort"Exitcode != 0" csr. +b1 csr. + +// Pairings +{ [[ <{ BLS_G1_MUL }>s ]] 0 runvmx abort"Exitcode != -1" } : bls_g1_mul +{ [[ <{ BLS_G2_MUL }>s ]] 0 runvmx abort"Exitcode != -1" } : bls_g2_mul +75634785643785634785634876232423354534 constant x +."a1*x,b1 a1,b1*(-x) : " +a1 x bls_g1_mul b1 +a1 b1 x negate bls_g2_mul +2 <{ BLS_PAIRING }>s 0 runvmx abort"Exitcode != 0" .s not abort"-1 expected" +."a1*x,b1 a1,b1*(-x-1) : " +a1 x bls_g1_mul b1 +a1 b1 x negate 1 - bls_g2_mul +2 <{ BLS_PAIRING }>s 0 runvmx abort"Exitcode != 0" .s abort"0 expected" + +08036758068232723862526737758751120353935980577994643429668638941492109432519 constant x1 +76720311667788346189068792441910584335982488547394926476426087533015880449318 constant x2 +73698677644295053147826041647629389417255852559045739853199261775689421644183 constant x3 +00651749128863148819911470689106677724299434569675211711456038250594316760143 constant x4 +."a1*x1,b1 a2*x2,b2 a3*x3,b3 a4*x4,b4 a1,b1*(-x1) a2,b2*(-x2) a3,b3*(-x3) a4,b4*(-x4) : " +a1 x1 bls_g1_mul b1 +a2 x2 bls_g1_mul b2 +a3 x3 bls_g1_mul b3 +a4 x4 bls_g1_mul b4 +a1 b1 x1 negate bls_g2_mul +a2 b2 x2 negate bls_g2_mul +a3 b3 x3 negate bls_g2_mul +a4 b4 x4 negate bls_g2_mul +8 <{ BLS_PAIRING }>s 0 runvmx abort"Exitcode != 0" .s not abort"-1 expected" +."a1*x1,b1 a2*x2,b2 a3*x3,b3 a4*x4,b4 a1,b1*(-x1) a2,b2*(-x2) a3,b3*(-x4) a4,b4*(-x3) : " +a1 x1 bls_g1_mul b1 +a2 x2 bls_g1_mul b2 +a3 x3 bls_g1_mul b3 +a4 x4 bls_g1_mul b4 +a1 b1 x1 negate bls_g2_mul +a2 b2 x2 negate bls_g2_mul +a3 b3 x4 negate bls_g2_mul +a4 b4 x3 negate bls_g2_mul +8 <{ BLS_PAIRING }>s 0 runvmx abort"Exitcode != 0" .s abort"0 expected" diff --git a/crypto/test/fift/deep_stack_ops.fif b/crypto/test/fift/deep_stack_ops.fif new file mode 100644 index 00000000..460ecdd7 --- /dev/null +++ b/crypto/test/fift/deep_stack_ops.fif @@ -0,0 +1,27 @@ +"Asm.fif" include + +{ { drop } depth 1- times } : clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT XCHGX 300 INT PICK 450 INT CHKDEPTH }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT ROLLX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT -ROLLX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 700 times +<{ 350 INT 300 INT BLKSWX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT 5 INT REVX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT DROPX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT ONLYTOPX }>s 1000000 64 8 + runvmx .s clear-stack + +0 { dup 1+ } 500 times +<{ 400 INT ONLYX }>s 1000000 64 8 + runvmx .s clear-stack diff --git a/crypto/test/fift/hash_ext.fif b/crypto/test/fift/hash_ext.fif new file mode 100644 index 00000000..3f009410 --- /dev/null +++ b/crypto/test/fift/hash_ext.fif @@ -0,0 +1,98 @@ +"Asm.fif" include + +{ { drop } depth 1- times } : clear-stack + +// Compare HASHEXT_SHA256 with SHA256U +<{ + x{0123456789abcdef} PUSHSLICE SHA256U + + x{0123456789abcdef} PUSHSLICE 1 PUSHINT HASHEXT_SHA256 + + x{01} PUSHSLICE + x{2} PUSHSLICE + b{001101} PUSHSLICE NEWC STSLICE + b{0} PUSHSLICE + b{00101} PUSHSLICE NEWC STSLICE + x{6789a} PUSHSLICE + b{1} PUSHSLICE + b{0111100} PUSHSLICE + x{def} PUSHSLICE + 9 PUSHINT HASHEXT_SHA256 + + x{01} PUSHSLICE + x{2} PUSHSLICE + b{001101} PUSHSLICE NEWC STSLICE + b{0} PUSHSLICE + b{00101} PUSHSLICE NEWC STSLICE + x{6789a} PUSHSLICE + b{1} PUSHSLICE + b{0111100} PUSHSLICE + x{def} PUSHSLICE + 9 0 REVERSE + 9 PUSHINT HASHEXTR_SHA256 +}>s +0 runvmx abort"runvmx finished with exitcode != 0" +. cr . cr . cr . cr .s + +// HASHEXTA +<{ + NEWC x{ff} PUSHSLICE STSLICER x{01234567} PUSHSLICE SHA256U 256 STUR ENDC CTOS + NEWC x{ff} PUSHSLICE STSLICER x{0123} PUSHSLICE x{4567} PUSHSLICE 2 PUSHINT HASHEXTA_SHA256 ENDC CTOS + NEWC x{ff} PUSHSLICE STSLICER x{4567} PUSHSLICE x{0123} PUSHSLICE 2 PUSHINT HASHEXTAR_SHA256 ENDC CTOS +}>s +0 runvmx abort"runvmx finished with exitcode != 0" +csr. csr. csr. .s + +// Exceptions on errors +<{ x{001122334455667} PUSHSLICE 1 PUSHINT HASHEXT_SHA256 }>s 0 runvmx .s 9 <> abort"exitcode != 9" clear-stack +<{ x{00} PUSHSLICE x{11} PUSHSLICE 3 PUSHINT HASHEXT_SHA256 }>s 0 runvmx .s 5 <> abort"exitcode != 5" clear-stack +<{ x{00} PUSHSLICE 1 PUSHINT 2 PUSHINT HASHEXT_SHA256 }>s 0 runvmx .s 7 <> abort"exitcode != 7" clear-stack +<{ x{1234} PUSHSLICE 1 PUSHINT 100 HASHEXT }>s 0 runvmx .s 5 <> abort"exitcode != 5" clear-stack + +// Other hash functions + s 0 runvmx .s abort"runvmx finished with exitcode != 0" clear-stack +<{ + str PUSHSLICE 1 PUSHINT 0 HASHEXT + str PUSHSLICE 1 PUSHINT 1 HASHEXT + str PUSHSLICE 1 PUSHINT 2 HASHEXT + str PUSHSLICE 1 PUSHINT 3 HASHEXT + str PUSHSLICE 1 PUSHINT 4 HASHEXT +}>s 0 runvmx .s abort"runvmx finished with exitcode != 0" clear-stack +<{ + NEWC str PUSHSLICE 1 PUSHINT 4 HASHEXTA ENDC CTOS + NEWC str PUSHSLICE 1 PUSHINT 3 HASHEXTA ENDC CTOS + NEWC str PUSHSLICE 1 PUSHINT 2 HASHEXTA ENDC CTOS + NEWC str PUSHSLICE 1 PUSHINT 1 HASHEXTA ENDC CTOS + NEWC str PUSHSLICE 1 PUSHINT 0 HASHEXTA ENDC CTOS +}>s 0 runvmx abort"runvmx finished with exitcode != 0" +{ csr. } 5 times .s + +// Long string +0 { + =: hash-idx + 0 { + dup =: len + s ]] 0 runvmx abort"Exitcode != 0" + @' n . dup (x.) type cr + @' ans <> abort"Invalid result" +} : test-basepoint + + 0 0x0000000000000000000000000000000000000000000000000000000000000000 test-basepoint + 1 0xe2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76 test-basepoint + 2 0x6a493210f7499cd17fecb510ae0cea23a110e8d5b901f8acadd3095c73a3b919 test-basepoint + 3 0x94741f5d5d52755ece4f23f044ee27d5d1ea1e2bd196b462166b16152a9d0259 test-basepoint + 4 0xda80862773358b466ffadfe0b3293ab3d9fd53c5ea6c955358f568322daf6a57 test-basepoint + 5 0xe882b131016b52c1d3337080187cf768423efccbb517bb495ab812c4160ff44e test-basepoint + 6 0xf64746d3c92b13050ed8d80236a7f0007c3b3f962f5ba793d19a601ebb1df403 test-basepoint + 7 0x44f53520926ec81fbd5a387845beb7df85a96a24ece18738bdcfa6a7822a176d test-basepoint + 8 0x903293d8f2287ebe10e2374dc1a53e0bc887e592699f02d077d5263cdd55601c test-basepoint + 9 0x02622ace8f7303a31cafc63f8fc48fdc16e1c8c8d234b2f0d6685282a9076031 test-basepoint +10 0x20706fd788b2720a1ed2a5dad4952b01f413bcf0e7564de8cdc816689e2db95f test-basepoint +11 0xbce83f8ba5dd2fa572864c24ba1810f9522bc6004afe95877ac73241cafdab42 test-basepoint +12 0xe4549ee16b9aa03099ca208c67adafcafa4c3f3e4e5303de6026e3ca8ff84460 test-basepoint +13 0xaa52e000df2e16f55fb1032fc33bc42742dad6bd5a8fc0be0167436c5948501f test-basepoint +14 0x46376b80f409b29dc2b5f6f0c52591990896e5716f41477cd30085ab7f10301e test-basepoint +15 0xe0c418f7c8d9c4cdd7395b93ea124f3ad99021bb681dfc3302a9d99a2e53e64e test-basepoint + +cr ."Invalid points:" cr +{ + =: x + @' x (x.) type cr + @' x + [[ <{ RIST255_QVALIDATE }>s ]] 0 runvmx abort"Exitcode != 0" + abort"Invalid result" +} : test-invalid +// These are all bad because they're non-canonical field encodings. +0x00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff test-invalid +0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid +0xf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid +0xedffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid +// These are all bad because they're negative field elements. +0x0100000000000000000000000000000000000000000000000000000000000000 test-invalid +0x01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid +0xed57ffd8c914fb201471d1c3d245ce3c746fcbe63a3679d51b6a516ebebe0e20 test-invalid +0xc34c4e1826e5d403b78e246e88aa051c36ccf0aafebffe137d148a2bf9104562 test-invalid +0xc940e5a4404157cfb1628b108db051a8d439e1a421394ec4ebccb9ec92a8ac78 test-invalid +0x47cfc5497c53dc8e61c91d17fd626ffb1c49e2bca94eed052281b510b1117a24 test-invalid +0xf1c6165d33367351b0da8f6e4511010c68174a03b6581212c71c0e1d026c3c72 test-invalid +0x87260f7a2f12495118360f02c26a470f450dadf34a413d21042b43b9d93e1309 test-invalid +// These are all bad because they give a nonsquare x^2. +0x26948d35ca62e643e26a83177332e6b6afeb9d08e4268b650f1f5bbd8d81d371 test-invalid +0x4eac077a713c57b4f4397629a4145982c661f48044dd3f96427d40b147d9742f test-invalid +0xde6a7b00deadc788eb6b6c8d20c0ae96c2f2019078fa604fee5b87d6e989ad7b test-invalid +0xbcab477be20861e01e4a0e295284146a510150d9817763caf1a6f4b422d67042 test-invalid +0x2a292df7e32cababbd9de088d1d1abec9fc0440f637ed2fba145094dc14bea08 test-invalid +0xf4a9e534fc0d216c44b218fa0c42d99635a0127ee2e53c712f70609649fdff22 test-invalid +0x8268436f8c4126196cf64b3c7ddbda90746a378625f9813dd9b8457077256731 test-invalid +0x2810e5cbc2cc4d4eece54f61c6f69758e289aa7ab440b3cbeaa21995c2f4232b test-invalid +// These are all bad because they give a negative xy value. +0x3eb858e78f5a7254d8c9731174a94f76755fd3941c0ac93735c07ba14579630e test-invalid +0xa45fdc55c76448c049a1ab33f17023edfb2be3581e9c7aade8a6125215e04220 test-invalid +0xd483fe813c6ba647ebbfd3ec41adca1c6130c2beeee9d9bf065c8d151c5f396e test-invalid +0x8a2e1d30050198c65a54483123960ccc38aef6848e1ec8f5f780e8523769ba32 test-invalid +0x32888462f8b486c68ad7dd9610be5192bbeaf3b443951ac1a8118419d9fa097b test-invalid +0x227142501b9d4355ccba290404bde41575b037693cef1f438c47f8fbf35d1165 test-invalid +0x5c37cc491da847cfeb9281d407efc41e15144c876e0170b499a96a22ed31e01e test-invalid +0x445425117cb8c90edcbc7c1cc0e74f747f2c1efa5630a967c64f287792a48a4b test-invalid +// This is s = -1, which causes y = 0. +0xecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f test-invalid + +cr ."Hash to point:" cr +{ + =: text =: ans + @' text $>s + [[ <{ 1 INT HASHEXT_SHA512 2 UNTUPLE RIST255_FROMHASH }>s ]] 0 runvmx abort"Exitcode != 0" + @' ans <> abort"Invalid result" + @' ans (x.) type ." " @' text type cr +} : test-hash + +0x3066f82a1a747d45120d1740f14358531a8f04bbffe6a819f86dfe50f44a0a46 "Ristretto is traditionally a short shot of espresso coffee" test-hash +0xf26e5b6f7d362d2d2a94c5d0e7602cb4773c95a2e5c31a64f133189fa76ed61b "made with the normal amount of ground coffee but extracted with" test-hash +0x006ccd2a9e6867e6a2c5cea83d3302cc9de128dd2a9a57dd8ee7b9d7ffe02826 "about half the amount of water in the same amount of time" test-hash +0xf8f0c87cf237953c5890aec3998169005dae3eca1fbb04548c635953c817f92a "by using a finer grind." test-hash +0xae81e7dedf20a497e10c304a765c1767a42d6e06029758d2d7e8ef7cc4c41179 "This produces a concentrated shot of coffee per volume." test-hash +0xe2705652ff9f5e44d3e841bf1c251cf7dddb77d140870d1ab2ed64f1a9ce8628 "Just pulling a normal shot short will produce a weaker shot" test-hash +0x80bd07262511cdde4863f8a7434cef696750681cb9510eea557088f76d9e5065 "and is not a Ristretto as some believe." test-hash \ No newline at end of file diff --git a/crypto/test/fift/tvm_runvm.fif b/crypto/test/fift/tvm_runvm.fif new file mode 100644 index 00000000..1037156b --- /dev/null +++ b/crypto/test/fift/tvm_runvm.fif @@ -0,0 +1,228 @@ +"Asm.fif" include + +// Just run +111 10 20 2 +<{ + ADD // Ensure that stack was passed to runvmx + DEPTH // Ensure that only 2 stack entries were passed + c4 PUSH CTOS SBITREFS // Ensure that c4 is empty + c5 PUSH CTOS SBITREFS // Ensure that c5 is empty + c7 PUSH // Ensure that c7 is empty + PUSHREF c4 POP // Ensure that it does not affect c4, c5, c7 in parent vm + PUSHREF c5 POP + NIL 100 PUSHINT TPUSH 200 PUSHINT TPUSH c7 POP + 123 PUSHINT +}>s +<{ + PUSHREF c4 POP + PUSHREF c5 POP + NIL 5 PUSHINT TPUSH 6 PUSHINT TPUSH c7 POP + 0 RUNVM + c4 PUSH CTOS c5 PUSH CTOS c7 PUSH // Ensure that c4, c5, c7 are unchanged +}>s 1000000 8 runvmx // Show gas usage +.s { drop } depth 1- times // 111 30 1 0 0 0 0 [] 123 0 x{1234} x{5678} [ 5 6 ] 0 1197 + +// Exception +111 10 20 2 +<{ 22 PUSHINT 55 PUSHINT 66 THROWARG }>s +<{ 0 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 111 55 66 0 + +// Mode +1 - set c3 to code +PROGRAM{ + 22 DECLMETHOD foo + DECLPROC main + foo PROC:<{ + MUL + }> + main PROC:<{ + DUP + foo CALLDICT + INC + }> +}END>s constant prog +<{ + 10 PUSHINT 0 PUSHINT 2 PUSHINT prog PUSHSLICE 1 RUNVM + 10 PUSHINT 0 PUSHINT 2 PUSHINT prog PUSHSLICE 0 RUNVM +}>s 0 runvmx +.s { drop } depth 1- times // 101 0 10 10 22 11 0 + +// Mode +2 - push 0 +<{ 10 PUSHINT 1 PUSHINT prog PUSHSLICE 3 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 101 0 0 + +// Mode +4 - load and return c4 +0 +<{ + c4 PUSHCTR CTOS // Ensure that this is x{5678} + PUSHREF c4 POPCTR // This should be returned from RUNVM + 1000 PUSHINT +}>s + +<{ + PUSHREF c4 POP // Ensure that this does not change + 4 RUNVM + CTOS + c4 PUSH CTOS // x{1234} +}>s 0 runvmx +.s { drop } depth 1- times // x{5678} 1000 0 x{abcd} x{1234} 0 + +// Mode +16 - load c7 +0 +<{ + c7 PUSH // Ensure that this is [ 10 15 20 ] + NIL 111 PUSHINT TPUSH 222 PUSHINT TPUSH 3333 PUSHINT TPUSH c7 POP + 1000 PUSHINT +}>s +10 15 20 3 tuple +<{ + NIL 1 PUSHINT TPUSH 2 PUSHINT TPUSH 3 PUSHINT TPUSH c7 POP // Ensure that this does not change + 16 RUNVM + c7 PUSH // [ 1 2 3 ] +}>s 0 runvmx +.s { drop } depth 1- times // [ 10 15 20 ] 1000 0 [ 1 2 3 ] 0 + +// Mode +32 - return c5 +0 +<{ + c5 PUSH CTOS SBITREFS // Ensure that this is empty + PUSHREF c5 POP // Ensure that this is returned from RUNVM + 1000 PUSHINT +}>s +<{ + PUSHREF c5 POP // Ensure that this does not change + 32 RUNVM + CTOS + c5 PUSH CTOS // x{1234} +}>s 0 runvmx +.s { drop } depth 1- times // 0 0 1000 0 x{5678} x{1234} 0 + +// c4, c5 with exception +0 +<{ + PUSHREF c4 POP + PUSHREF c5 POP + 55 THROW +}>s + // c4 for RUNVM +<{ + PUSHREF c4 POP // Ensure that this does not change + PUSHREF c5 POP // Ensure that this does not change + 32 4 + RUNVM + c4 PUSH CTOS // x{1234aaaa} + c5 PUSH CTOS // x{1234bbbb} +}>s 0 runvmx +.s { drop } depth 1- times // 0 55 null null x{1234aaaa} x{1234bbbb} 0 + +// c4, c5 with exception and commit +0 +<{ + PUSHREF c4 POP + PUSHREF c5 POP + COMMIT + PUSHREF c4 POP + PUSHREF c5 POP + 55 THROW +}>s + // c4 for RUNVM +<{ + PUSHREF c4 POP // Ensure that this does not change + PUSHREF c5 POP // Ensure that this does not change + 32 4 + RUNVM + CTOS SWAP CTOS SWAP + c4 PUSH CTOS // x{1234aaaa} + c5 PUSH CTOS // x{1234bbbb} +}>s 0 runvmx +.s { drop } depth 1- times // 0 55 x{abcdaaaa} x{abcdbbbb} x{1234aaaa} x{1234bbbb} 0 + +// Mode +8 - gas limit +0 +<{ AGAIN:<{ NOP }> }>s +200 +<{ 8 RUNVM 1234 PUSHINT }>s 0 runvmx +.s { drop } depth 1- times // 215 -14 215 1234 0 + +// Gas limit of parent vm is too low +0 +<{ AGAIN:<{ NOP }> }>s +1000000 +<{ 8 RUNVM 1234 PUSHINT }>s 300 8 runvmx +.s { drop } depth 1- times // 301 -14 301 + +// Mode +64 - hard gas limit +0 <{ AGAIN:<{ NOP }> }>s 200 500 +<{ 8 64 + RUNVM 1234 PUSHINT }>s 0 runvmx +.s { drop } depth 1- times // 215 -14 215 1234 0 +0 <{ ACCEPT AGAIN:<{ NOP }> }>s 200 500 +<{ 8 64 + RUNVM 1234 PUSHINT }>s 0 runvmx +.s { drop } depth 1- times // 517 -14 517 1234 0 + +// 10000 nested VMs (recursively calculating 1+...+10000) +<{ + DUP + 0 EQINT + IFJMP:<{ + DROP DROP + 0 PUSHINT + }> + OVER OVER DEC + 2 PUSHINT + s2 PUSH + 0 RUNVM + 11 THROWIF + ADD + NIP +}>s constant code1 +<{ code1 PUSHSLICE 10000 PUSHINT 2 PUSHINT code1 PUSHSLICE 0 RUNVM }>s 10000000 8 runvmx // Show gas +.s { drop } depth 1- times // 50005000 0 0 2710286 + +// Same thing, but out of gas +<{ code1 PUSHSLICE 10000 PUSHINT 2 PUSHINT code1 PUSHSLICE 0 RUNVM }>s 100000 8 runvmx // Show gas +.s { drop } depth 1- times // 100001 -14 100001 + +// RUNVMX +0 +<{ AGAIN:<{ NOP }> }>s +200 +<{ 8 PUSHINT RUNVMX 1234 PUSHINT }>s 0 runvmx +.s { drop } depth 1- times // 215 -14 215 1234 0 + +// +128 - separate loaded_cells + +<{ DUP CTOS DROP 2 INT <{ CTOS DROP CTOS DROP }>s SLICE 10000 INT 8 RUNVM }>s 1000000 8 runvmx +.s { drop } depth 1- times // 0 202 0 509 + +<{ DUP CTOS DROP 2 INT <{ CTOS DROP CTOS DROP }>s SLICE 10000 INT 8 128 + RUNVM }>s 1000000 8 runvmx +.s { drop } depth 1- times // 0 277 0 584 + +// +256 - fixed number of return values +11 22 33 3 +<{ 1 INT 2 INT 3 INT 4 INT 5 INT }>s +3 +<{ 256 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 3 4 5 0 0 + +11 22 33 3 +<{ 1 INT 2 INT 3 INT 4 INT 5 INT }>s +0 +<{ 256 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 0 0 + +11 22 33 3 +<{ 1 INT 2 INT 3 INT 4 INT 5 INT 77 THROW }>s +3 +<{ 256 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 0 77 0 + +11 22 33 3 +<{ 1 INT 2 INT 3 INT 4 INT 5 INT }>s +20 +<{ 256 RUNVM }>s 0 runvmx +.s { drop } depth 1- times // 0 -3 0 + +// GASCONSUMED +<{ 10 INT 20 INT ADD DROP GASCONSUMED }>s 0 runvmx +.s { drop } depth 1- times // 106 0 +0 <{ 10 INT 20 INT ADD DROP GASCONSUMED }>s +<{ 100 INT 200 INT 300 INT MUL DIV DROP 0 RUNVM GASCONSUMED }>s 0 runvmx +.s { drop } depth 1- times // 106 0 367 0 diff --git a/crypto/vm/Hasher.cpp b/crypto/vm/Hasher.cpp new file mode 100644 index 00000000..f70988d3 --- /dev/null +++ b/crypto/vm/Hasher.cpp @@ -0,0 +1,148 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#include "vm/Hasher.h" +#include "vm/excno.hpp" +#include "vm/vm.h" +#include +#include +#include "keccak/keccak.h" + +namespace vm { + +using td::Ref; + +class HasherImplEVP : public Hasher::HasherImpl { + public: + explicit HasherImplEVP(EVP_MD_CTX* ctx) : ctx_(ctx) { + } + + ~HasherImplEVP() override { + EVP_MD_CTX_free(ctx_); + } + + void append(const unsigned char *data, size_t size) override { + CHECK(EVP_DigestUpdate(ctx_, data, size)); + } + + td::BufferSlice finish() override { + td::BufferSlice hash(EVP_MD_CTX_size(ctx_)); + unsigned size; + CHECK(EVP_DigestFinal_ex(ctx_, (unsigned char *)hash.data(), &size) || size != hash.size()); + return hash; + } + + std::unique_ptr make_copy() const override { + EVP_MD_CTX *new_ctx = nullptr; + new_ctx = EVP_MD_CTX_new(); + CHECK(new_ctx != nullptr); + CHECK(EVP_MD_CTX_copy_ex(new_ctx, ctx_)); + return std::make_unique(new_ctx); + } + + private: + EVP_MD_CTX *ctx_; +}; + +class HasherImplKeccak : public Hasher::HasherImpl { + public: + explicit HasherImplKeccak(size_t hash_size) : hash_size_(hash_size) { + CHECK(keccak_init(&state_, hash_size * 2, 24) == 0); + CHECK(state_ != nullptr); + } + + ~HasherImplKeccak() override { + CHECK(keccak_destroy(state_) == 0); + } + + void append(const unsigned char *data, size_t size) override { + CHECK(keccak_absorb(state_, data, size) == 0); + } + + td::BufferSlice finish() override { + td::BufferSlice hash(hash_size_); + CHECK(keccak_digest(state_, (unsigned char*)hash.data(), hash_size_, 1) == 0); + return hash; + } + + std::unique_ptr make_copy() const override { + auto copy = std::make_unique(hash_size_); + CHECK(keccak_copy(state_, copy->state_) == 0); + return copy; + } + + private: + size_t hash_size_; + keccak_state *state_ = nullptr; +}; + +Hasher::Hasher(int hash_id) : id_(hash_id) { + if (hash_id == KECCAK256 || hash_id == KECCAK512) { + impl_ = std::make_unique(hash_id == KECCAK256 ? 32 : 64); + return; + } + + EVP_MD_CTX *ctx = EVP_MD_CTX_new(); + CHECK(ctx != nullptr); + const EVP_MD *evp; + switch (hash_id) { + case SHA256: evp = EVP_sha256(); break; + case SHA512: evp = EVP_sha512(); break; + case BLAKE2B: evp = EVP_blake2b512(); break; + default: + throw VmError{Excno::range_chk, "invalid hash id"}; + } + CHECK(evp != nullptr && EVP_DigestInit_ex(ctx, evp, nullptr)); + impl_ = std::make_unique(ctx); +} + +void Hasher::append(td::ConstBitPtr data, unsigned size) { + if (!impl_) { + throw VmError{Excno::unknown, "can't use finished hasher"}; + } + while (size > 0) { + unsigned cur_size = std::min(size, BUF_SIZE * 8 - buf_ptr_); + td::BitPtr{buf_, (int)buf_ptr_}.copy_from(data, cur_size); + buf_ptr_ += cur_size; + if (buf_ptr_ == BUF_SIZE * 8) { + impl_->append(buf_, BUF_SIZE); + buf_ptr_ = 0; + } + size -= cur_size; + data += cur_size; + } +} + +td::BufferSlice Hasher::finish() { + if (!impl_) { + throw VmError{Excno::unknown, "can't use finished hasher"}; + } + if (buf_ptr_ % 8 != 0) { + throw VmError{Excno::cell_und, "data does not consist of an integer number of bytes"}; + } + impl_->append(buf_, buf_ptr_ / 8); + td::BufferSlice hash = impl_->finish(); + impl_ = nullptr; + return hash; +} + +static const size_t BYTES_PER_GAS_UNIT[5] = {33, 16, 19, 11, 6}; + +size_t Hasher::bytes_per_gas_unit() const { + return BYTES_PER_GAS_UNIT[id_]; +} + +} diff --git a/crypto/vm/Hasher.h b/crypto/vm/Hasher.h new file mode 100644 index 00000000..7e441690 --- /dev/null +++ b/crypto/vm/Hasher.h @@ -0,0 +1,58 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ +#pragma once +#include "common/refcnt.hpp" +#include "td/utils/buffer.h" +#include "common/bitstring.h" +#include "vm/cells/Cell.h" +#include + +namespace vm { + +using td::Ref; + +class Hasher { + public: + explicit Hasher(int id); + Hasher(const Hasher&) = delete; + void append(td::ConstBitPtr data, unsigned size); + td::BufferSlice finish(); + size_t bytes_per_gas_unit() const; + + static const int SHA256 = 0; + static const int SHA512 = 1; + static const int BLAKE2B = 2; + static const int KECCAK256 = 3; + static const int KECCAK512 = 4; + + class HasherImpl { + public: + virtual ~HasherImpl() = default; + virtual void append(const unsigned char* data, size_t size) = 0; + virtual td::BufferSlice finish() = 0; + virtual std::unique_ptr make_copy() const = 0; + }; + + private: + int id_ = 0; + static const unsigned BUF_SIZE = 256; + unsigned char buf_[BUF_SIZE]; + unsigned buf_ptr_ = 0; + std::unique_ptr impl_; +}; + +} \ No newline at end of file diff --git a/crypto/vm/arithops.cpp b/crypto/vm/arithops.cpp index 24bb8a48..7da53567 100644 --- a/crypto/vm/arithops.cpp +++ b/crypto/vm/arithops.cpp @@ -265,26 +265,42 @@ void register_add_mul_ops(OpcodeTable& cp0) { int exec_divmod(VmState* st, unsigned args, int quiet) { int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute DIV/MOD " << (args & 15); - stack.check_underflow(2); + stack.check_underflow(add ? 3 : 2); auto y = stack.pop_int(); + auto w = add ? stack.pop_int() : td::RefInt256{}; auto x = stack.pop_int(); - switch ((args >> 2) & 3) { - case 1: - stack.push_int_quiet(td::div(std::move(x), std::move(y), round_mode), quiet); - break; - case 2: - stack.push_int_quiet(td::mod(std::move(x), std::move(y), round_mode), quiet); - break; - case 3: { - auto dm = td::divmod(std::move(x), std::move(y), round_mode); - stack.push_int_quiet(std::move(dm.first), quiet); - stack.push_int_quiet(std::move(dm.second), quiet); - break; + if (add) { + CHECK(d == 3); + typename td::BigInt256::DoubleInt tmp{*x}, quot; + tmp += *w; + tmp.mod_div(*y, quot, round_mode); + stack.push_int_quiet(td::make_refint(quot), quiet); + stack.push_int_quiet(td::make_refint(tmp), quiet); + } else { + switch (d) { + case 1: + stack.push_int_quiet(td::div(std::move(x), std::move(y), round_mode), quiet); + break; + case 2: + stack.push_int_quiet(td::mod(std::move(x), std::move(y), round_mode), quiet); + break; + case 3: { + auto dm = td::divmod(std::move(x), std::move(y), round_mode); + stack.push_int_quiet(std::move(dm.first), quiet); + stack.push_int_quiet(std::move(dm.second), quiet); + break; + } } } return 0; @@ -292,11 +308,20 @@ int exec_divmod(VmState* st, unsigned args, int quiet) { std::string dump_divmod(CellSlice&, unsigned args, bool quiet) { int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0) { + d = 3; + add = true; + } + if (round_mode == 3) { return ""; } - std::string s = (args & 4) ? "DIV" : ""; - if (args & 8) { + std::string s = add ? "ADD" : ""; + if (d & 1) { + s += "DIV"; + } + if (d & 2) { s += "MOD"; } if (quiet) { @@ -312,32 +337,50 @@ int exec_shrmod(VmState* st, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute SHR/MOD " << (args & 15) << ',' << y; if (!(mode & 2)) { - stack.check_underflow(2); + stack.check_underflow(add ? 3 : 2); y = stack.pop_smallint_range(256); } else { - stack.check_underflow(1); + stack.check_underflow(add ? 2 : 1); } if (!y) { round_mode = -1; } + auto w = add ? stack.pop_int() : td::RefInt256{}; auto x = stack.pop_int(); - switch ((args >> 2) & 3) { - case 1: - stack.push_int_quiet(td::rshift(std::move(x), y, round_mode), mode & 1); - break; - case 3: - stack.push_int_quiet(td::rshift(x, y, round_mode), mode & 1); - // fallthrough - case 2: - x.write().mod_pow2(y, round_mode).normalize(); - stack.push_int_quiet(std::move(x), mode & 1); - break; + if (add) { + CHECK(d == 3); + typename td::BigInt256::DoubleInt tmp{*x}, quot; + tmp += *w; + typename td::BigInt256::DoubleInt tmp2{tmp}; + tmp2.rshift(y, round_mode).normalize(); + stack.push_int_quiet(td::make_refint(tmp2), mode & 1); + tmp.normalize().mod_pow2(y, round_mode).normalize(); + stack.push_int_quiet(td::make_refint(tmp), mode & 1); + } else { + switch (d) { + case 1: + stack.push_int_quiet(td::rshift(std::move(x), y, round_mode), mode & 1); + break; + case 3: + stack.push_int_quiet(td::rshift(x, y, round_mode), mode & 1); + // fallthrough + case 2: + x.write().mod_pow2(y, round_mode).normalize(); + stack.push_int_quiet(std::move(x), mode & 1); + break; + } } return 0; } @@ -349,7 +392,7 @@ std::string dump_shrmod(CellSlice&, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + if (round_mode == 3) { return ""; } std::ostringstream os; @@ -366,6 +409,9 @@ std::string dump_shrmod(CellSlice&, unsigned args, int mode) { case 12: os << "RSHIFTMOD"; break; + case 0: + os << "ADDRSHIFTMOD"; + break; } if (round_mode) { os << "FRC"[round_mode]; @@ -378,20 +424,30 @@ std::string dump_shrmod(CellSlice&, unsigned args, int mode) { int exec_muldivmod(VmState* st, unsigned args, int quiet) { int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute MULDIV/MOD " << (args & 15); - stack.check_underflow(3); + stack.check_underflow(add ? 4 : 3); auto z = stack.pop_int(); + auto w = add ? stack.pop_int() : td::RefInt256{}; auto y = stack.pop_int(); auto x = stack.pop_int(); typename td::BigInt256::DoubleInt tmp{0}, quot; + if (add) { + tmp = *w; + } tmp.add_mul(*x, *y); auto q = td::make_refint(); tmp.mod_div(*z, quot, round_mode); - switch ((args >> 2) & 3) { + switch (d) { case 1: stack.push_int_quiet(td::make_refint(quot.normalize()), quiet); break; @@ -407,11 +463,20 @@ int exec_muldivmod(VmState* st, unsigned args, int quiet) { std::string dump_muldivmod(CellSlice&, unsigned args, bool quiet) { int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0) { + d = 3; + add = true; + } + if (round_mode == 3) { return ""; } - std::string s = (args & 4) ? "MULDIV" : "MUL"; - if (args & 8) { + std::string s = add ? "MULADD" : "MUL"; + if (d & 1) { + s += "DIV"; + } + if (d & 2) { s += "MOD"; } if (quiet) { @@ -427,25 +492,35 @@ int exec_mulshrmod(VmState* st, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute MULSHR/MOD " << (args & 15) << ',' << z; if (!(mode & 2)) { - stack.check_underflow(3); + stack.check_underflow(add ? 4 : 3); z = stack.pop_smallint_range(256); } else { - stack.check_underflow(2); + stack.check_underflow(add ? 3 : 2); } if (!z) { round_mode = -1; } + auto w = add ? stack.pop_int() : td::RefInt256{}; auto y = stack.pop_int(); auto x = stack.pop_int(); typename td::BigInt256::DoubleInt tmp{0}; + if (add) { + tmp = *w; + } tmp.add_mul(*x, *y); - switch ((args >> 2) & 3) { + switch (d) { case 1: tmp.rshift(z, round_mode).normalize(); stack.push_int_quiet(td::make_refint(tmp), mode & 1); @@ -471,7 +546,7 @@ std::string dump_mulshrmod(CellSlice&, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + if (round_mode == 3) { return ""; } std::ostringstream os; @@ -488,6 +563,9 @@ std::string dump_mulshrmod(CellSlice&, unsigned args, int mode) { case 12: os << "MULRSHIFTMOD"; break; + case 0: + os << "MULADDRSHIFTMOD"; + break; } if (round_mode) { os << "FRC"[round_mode]; @@ -505,22 +583,32 @@ int exec_shldivmod(VmState* st, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3) - 1; - if (!(args & 12) || round_mode == 2) { + unsigned d = (args >> 2) & 3; + bool add = false; + if (d == 0 && st->get_global_version() >= 4) { + d = 3; + add = true; + } + if (d == 0 || round_mode == 2) { throw VmError{Excno::inv_opcode}; } Stack& stack = st->get_stack(); VM_LOG(st) << "execute SHLDIV/MOD " << (args & 15) << ',' << y; if (!(mode & 2)) { - stack.check_underflow(3); + stack.check_underflow(add ? 4 : 3); y = stack.pop_smallint_range(256); } else { - stack.check_underflow(2); + stack.check_underflow(add ? 3 : 2); } auto z = stack.pop_int(); + auto w = add ? stack.pop_int() : td::RefInt256{}; auto x = stack.pop_int(); typename td::BigInt256::DoubleInt tmp{*x}, quot; tmp <<= y; - switch ((args >> 2) & 3) { + if (add) { + tmp += *w; + } + switch (d) { case 1: { tmp.mod_div(*z, quot, round_mode); stack.push_int_quiet(td::make_refint(quot.normalize()), mode & 1); @@ -549,11 +637,27 @@ std::string dump_shldivmod(CellSlice&, unsigned args, int mode) { args >>= 8; } int round_mode = (int)(args & 3); - if (!(args & 12) || round_mode == 3) { + if (round_mode == 3) { return ""; } std::ostringstream os; - os << (mode & 1 ? "Q" : "") << (args & 4 ? "LSHIFTDIV" : "LSHIFT") << (args & 8 ? "MOD" : ""); + if (mode & 1) { + os << "Q"; + } + switch (args & 12) { + case 4: + os << "LSHIFTDIV"; + break; + case 8: + os << "LSHIFTMOD"; + break; + case 12: + os << "LSHIFTDIVMOD"; + break; + case 0: + os << "LSHIFTADDDIVMOD"; + break; + } if (round_mode) { os << "FRC"[round_mode]; } @@ -855,7 +959,9 @@ int exec_cmp(VmState* st, int mode, bool quiet, const char* name) { auto y = stack.pop_int(); auto x = stack.pop_int(); if (!x->is_valid() || !y->is_valid()) { - stack.push_int_quiet(std::move(x), quiet); + td::RefInt256 r{true}; + r.unique_write().invalidate(); + stack.push_int_quiet(std::move(r), quiet); } else { int z = td::cmp(std::move(x), std::move(y)); stack.push_smallint(((mode >> (4 + z * 4)) & 15) - 8); diff --git a/crypto/vm/bls.cpp b/crypto/vm/bls.cpp new file mode 100644 index 00000000..f6ccc275 --- /dev/null +++ b/crypto/vm/bls.cpp @@ -0,0 +1,334 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include "bls.h" +#include "blst.h" +#include "blst.hpp" +#include "excno.hpp" + +namespace vm { +namespace bls { + +static const std::string DST = "BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_"; + +bool verify(const P1 &pub, td::Slice msg, const P2 &sig) { + try { + blst::P1_Affine p1(pub.data(), P1_SIZE); + if (p1.is_inf()) { + return false; + } + blst::P2_Affine p2(sig.data(), P2_SIZE); + // core_verify checks for p1.in_group() and p2.in_group() + return p2.core_verify(p1, true, (const byte *)msg.data(), msg.size(), DST) == BLST_SUCCESS; + } catch (BLST_ERROR) { + return false; + } +} + +P2 aggregate(const std::vector &sig) { + try { + if (sig.empty()) { + throw VmError{Excno::unknown, "no signatures"}; + } + blst::P2 aggregated; + for (size_t i = 0; i < sig.size(); ++i) { + blst::P2_Affine p2(sig[i].data(), P2_SIZE); + if (i == 0) { + aggregated = p2.to_jacobian(); + } else { + aggregated.aggregate(p2); + } + } + P2 result; + aggregated.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +bool fast_aggregate_verify(const std::vector &pubs, td::Slice msg, const P2 &sig) { + try { + if (pubs.empty()) { + return false; + } + blst::P1 p1_aggregated; + for (size_t i = 0; i < pubs.size(); ++i) { + blst::P1_Affine p1(pubs[i].data(), P1_SIZE); + if (p1.is_inf()) { + return false; + } + if (i == 0) { + p1_aggregated = p1.to_jacobian(); + } else { + p1_aggregated.aggregate(p1); + } + } + blst::P2_Affine p2(sig.data(), P2_SIZE); + blst::P1_Affine p1 = p1_aggregated.to_affine(); + // core_verify checks for p1.in_group() and p2.in_group() + return p2.core_verify(p1, true, (const byte *)msg.data(), msg.size(), DST) == BLST_SUCCESS; + } catch (BLST_ERROR) { + return false; + } +} + +bool aggregate_verify(const std::vector> &pubs_msgs, const P2 &sig) { + try { + if (pubs_msgs.empty()) { + return false; + } + std::unique_ptr pairing = std::make_unique(true, DST); + for (const auto &p : pubs_msgs) { + blst::P1_Affine p1(p.first.data(), P1_SIZE); + if (!p1.in_group() || p1.is_inf()) { + return false; + } + pairing->aggregate(&p1, nullptr, (const td::uint8 *)p.second.data(), p.second.size()); + } + pairing->commit(); + blst::P2_Affine p2(sig.data(), P2_SIZE); + if (!p2.in_group()) { + return false; + } + blst::PT pt(p2); + return pairing->finalverify(&pt); + } catch (BLST_ERROR) { + return false; + } +} + +template +static P generic_add(const P &a, const P &b) { + try { + blst_P point(a.data(), a.size() / 8); + point.aggregate(blst_P_Affine(b.data(), b.size() / 8)); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static P generic_sub(const P &a, const P &b) { + try { + blst_P point(b.data(), b.size() / 8); + point.neg(); + point.aggregate(blst_P_Affine(a.data(), a.size() / 8)); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static P generic_neg(const P &a) { + try { + blst_P point(a.data(), a.size() / 8); + point.neg(); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static P generic_zero() { + static P zero = []() -> P { + blst_P point = blst_P(); + P result; + point.compress(result.data()); + return result; + }(); + return zero; +} + +template +static P generic_mul(const P &p, const td::RefInt256 &x) { + CHECK(x.not_null() && x->is_valid()); + if (x->sgn() == 0) { + return generic_zero(); + } + td::uint8 x_bytes[32]; + CHECK((x % get_r())->export_bytes(x_bytes, 32, false)); + try { + blst_P point(p.data(), p.size() / 8); + blst::Scalar scalar; + scalar.from_bendian(x_bytes, 32); + point.mult(scalar); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static P generic_multiexp(const std::vector> &ps) { + if (ps.size() == 1) { + return generic_mul(ps[0].first, ps[0].second); + } + try { + std::vector points(ps.size()); + std::vector scalars(ps.size()); + std::vector scalar_ptrs(ps.size()); + for (size_t i = 0; i < ps.size(); ++i) { + points[i] = blst_P_Affine(ps[i].first.data(), ps[i].first.size() / 8); + CHECK(ps[i].second.not_null() && ps[i].second->is_valid()); + CHECK((ps[i].second % get_r())->export_bytes_lsb(scalars[i].data(), 32)); + scalar_ptrs[i] = (const byte *)&scalars[i]; + } + blst_P point = + ps.empty() ? blst_P() : blst_P_Affines::mult_pippenger(points.data(), points.size(), scalar_ptrs.data(), 256); + P result; + point.compress(result.data()); + return result; + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +template +static bool generic_in_group(const P &a) { + try { + blst_P point = blst_P(a.data(), a.size() / 8); + return point.in_group(); + } catch (BLST_ERROR e) { + return false; + } +} + +template +static bool generic_is_zero(const P &a) { + return a == generic_zero(); +} + +P1 g1_add(const P1 &a, const P1 &b) { + return generic_add(a, b); +} + +P1 g1_sub(const P1 &a, const P1 &b) { + return generic_sub(a, b); +} + +P1 g1_neg(const P1 &a) { + return generic_neg(a); +} + +P1 g1_mul(const P1 &p, const td::RefInt256 &x) { + return generic_mul(p, x); +} + +P1 g1_multiexp(const std::vector> &ps) { + return generic_multiexp(ps); +} + +P1 g1_zero() { + return generic_zero(); +} + +P1 map_to_g1(const FP &a) { + blst_fp fp; + blst_fp_from_bendian(&fp, a.data()); + blst_p1 point; + blst_map_to_g1(&point, &fp, nullptr); + P1 result; + blst_p1_compress(result.data(), &point); + return result; +} + +bool g1_in_group(const P1 &a) { + return generic_in_group(a); +} + +bool g1_is_zero(const P1 &a) { + return generic_is_zero(a); +} + +P2 g2_add(const P2 &a, const P2 &b) { + return generic_add(a, b); +} + +P2 g2_sub(const P2 &a, const P2 &b) { + return generic_sub(a, b); +} + +P2 g2_neg(const P2 &a) { + return generic_neg(a); +} + +P2 g2_mul(const P2 &p, const td::RefInt256 &x) { + return generic_mul(p, x); +} + +P2 g2_multiexp(const std::vector> &ps) { + return generic_multiexp(ps); +} + +P2 g2_zero() { + return generic_zero(); +} + +P2 map_to_g2(const FP2 &a) { + blst_fp2 fp2; + blst_fp_from_bendian(&fp2.fp[0], a.data()); + blst_fp_from_bendian(&fp2.fp[1], a.data() + FP_SIZE); + blst_p2 point; + blst_map_to_g2(&point, &fp2, nullptr); + P2 result; + blst_p2_compress(result.data(), &point); + return result; +} + +bool g2_in_group(const P2 &a) { + return generic_in_group(a); +} + +bool g2_is_zero(const P2 &a) { + return generic_is_zero(a); +} + +bool pairing(const std::vector> &ps) { + try { + std::unique_ptr pairing = std::make_unique(true, DST); + for (const auto &p : ps) { + blst::P1_Affine point1(p.first.data(), P1_SIZE); + blst::P2_Affine point2(p.second.data(), P2_SIZE); + pairing->raw_aggregate(&point2, &point1); + } + pairing->commit(); + return pairing->finalverify(); + } catch (BLST_ERROR e) { + throw VmError{Excno::unknown, PSTRING() << "blst error " << e}; + } +} + +td::RefInt256 get_r() { + static td::RefInt256 r = td::dec_string_to_int256( + td::Slice{"52435875175126190479447740508185965837690552500527637822603658699938581184513"}); + return r; +} + +} // namespace bls +} // namespace vm diff --git a/crypto/vm/bls.h b/crypto/vm/bls.h new file mode 100644 index 00000000..b7ffc136 --- /dev/null +++ b/crypto/vm/bls.h @@ -0,0 +1,65 @@ +/* + This file is part of TON Blockchain Library. + + TON Blockchain Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + TON Blockchain Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with TON Blockchain Library. If not, see . +*/ + +#include +#include "td/utils/buffer.h" +#include "common/bitstring.h" +#include "common/refint.h" + +namespace vm { +namespace bls { + +const size_t P1_SIZE = 48; +const size_t P2_SIZE = 96; +const size_t FP_SIZE = 48; + +using P1 = td::BitArray; +using P2 = td::BitArray; +using FP = td::BitArray; +using FP2 = td::BitArray; + +bool verify(const P1 &pub, td::Slice msg, const P2 &sig); +P2 aggregate(const std::vector &sig); +bool fast_aggregate_verify(const std::vector &pubs, td::Slice msg, const P2 &sig); +bool aggregate_verify(const std::vector> &pubs_msgs, const P2 &sig); + +P1 g1_add(const P1 &a, const P1 &b); +P1 g1_sub(const P1 &a, const P1 &b); +P1 g1_neg(const P1 &a); +P1 g1_mul(const P1 &p, const td::RefInt256 &x); +P1 g1_multiexp(const std::vector> &ps); +P1 g1_zero(); +P1 map_to_g1(const FP &a); +bool g1_in_group(const P1 &a); +bool g1_is_zero(const P1 &a); + +P2 g2_add(const P2 &a, const P2 &b); +P2 g2_sub(const P2 &a, const P2 &b); +P2 g2_neg(const P2 &a); +P2 g2_mul(const P2 &p, const td::RefInt256 &x); +P2 g2_multiexp(const std::vector> &ps); +P2 g2_zero(); +P2 map_to_g2(const FP2 &a); +bool g2_in_group(const P2 &a); +bool g2_is_zero(const P2 &a); + +bool pairing(const std::vector> &ps); + +td::RefInt256 get_r(); + +} // namespace bls +} // namespace vm diff --git a/crypto/vm/boc.h b/crypto/vm/boc.h index 73c20bdf..c7a1810d 100644 --- a/crypto/vm/boc.h +++ b/crypto/vm/boc.h @@ -115,6 +115,9 @@ struct CellStorageStat { std::map seen; CellStorageStat() : cells(0), bits(0), public_cells(0) { } + explicit CellStorageStat(unsigned long long limit_cells) + : cells(0), bits(0), public_cells(0), limit_cells(limit_cells) { + } void clear_seen() { seen.clear(); } diff --git a/crypto/vm/contops.cpp b/crypto/vm/contops.cpp index a6a44ad3..9610e4aa 100644 --- a/crypto/vm/contops.cpp +++ b/crypto/vm/contops.cpp @@ -212,6 +212,77 @@ int exec_ret_data(VmState* st) { return st->ret(); } +// Mode: +// +1 = same_c3 (set c3 to code) +// +2 = push_0 (push an implicit 0 before running the code) +// +4 = load c4 (persistent data) from stack and return its final value +// +8 = load gas limit from stack and return consumed gas +// +16 = load c7 (smart-contract context) +// +32 = return c5 (actions) +// +64 = pop hard gas limit (enabled by ACCEPT) from stack as well +// +128 = isolated gas consumption (separate set of visited cells, reset chksgn counter) +// +256 = pop number N, return exactly N values from stack (only if res=0 or 1; if not enough then res=stk_und) +int exec_runvm_common(VmState* st, unsigned mode) { + if (mode >= 512) { + throw VmError{Excno::range_chk, "invalid flags"}; + } + st->consume_gas(VmState::runvm_gas_price); + Stack& stack = st->get_stack(); + bool with_data = mode & 4; + Ref c7; + Ref data, actions; + long long gas_max = (mode & 64) ? stack.pop_long_range(vm::GasLimits::infty) : vm::GasLimits::infty; + long long gas_limit = (mode & 8) ? stack.pop_long_range(vm::GasLimits::infty) : vm::GasLimits::infty; + if (!(mode & 64)) { + gas_max = gas_limit; + } else { + gas_max = std::max(gas_max, gas_limit); + } + if (mode & 16) { + c7 = stack.pop_tuple(); + } + if (with_data) { + data = stack.pop_cell(); + } + int ret_vals = -1; + if (mode & 256) { + ret_vals = stack.pop_smallint_range(1 << 30); + } + auto code = stack.pop_cellslice(); + int stack_size = stack.pop_smallint_range(stack.depth() - 1); + std::vector new_stack_entries(stack_size); + for (int i = 0; i < stack_size; ++i) { + new_stack_entries[stack_size - 1 - i] = stack.pop(); + } + td::Ref new_stack{true, std::move(new_stack_entries)}; + st->consume_stack_gas(new_stack); + gas_max = std::min(gas_max, st->get_gas_limits().gas_remaining); + gas_limit = std::min(gas_limit, st->get_gas_limits().gas_remaining); + vm::GasLimits gas{gas_limit, gas_max}; + + VmStateInterface::Guard guard{nullptr}; // Don't consume gas for creating/loading cells during VM init + VmState new_state{std::move(code), std::move(new_stack), gas, (int)mode & 3, std::move(data), + VmLog{}, std::vector>{}, std::move(c7)}; + new_state.set_chksig_always_succeed(st->get_chksig_always_succeed()); + new_state.set_global_version(st->get_global_version()); + st->run_child_vm(std::move(new_state), with_data, mode & 32, mode & 8, mode & 128, ret_vals); + return 0; +} + +int exec_runvm(VmState* st, unsigned args) { + VM_LOG(st) << "execute RUNVM " << (args & 4095) << "\n"; + return exec_runvm_common(st, args & 4095); +} + +int exec_runvmx(VmState* st) { + VM_LOG(st) << "execute RUNVMX\n"; + return exec_runvm_common(st, st->get_stack().pop_smallint_range(4095)); +} + +std::string dump_runvm(CellSlice&, unsigned args) { + return PSTRING() << "RUNVM " << (args & 4095); +} + void register_continuation_jump_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mksimple(0xd8, 8, "EXECUTE", exec_execute)) @@ -246,7 +317,9 @@ void register_continuation_jump_ops(OpcodeTable& cp0) { }, "JMPREFDATA"), compute_len_push_ref)) - .insert(OpcodeInstr::mksimple(0xdb3f, 16, "RETDATA", exec_ret_data)); + .insert(OpcodeInstr::mksimple(0xdb3f, 16, "RETDATA", exec_ret_data)) + .insert(OpcodeInstr::mkfixed(0xdb4, 12, 12, dump_runvm, exec_runvm)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xdb50, 16, "RUNVMX ", exec_runvmx)->require_version(4)); } int exec_if(VmState* st) { diff --git a/crypto/vm/opctable.cpp b/crypto/vm/opctable.cpp index 0ee33385..0521a763 100644 --- a/crypto/vm/opctable.cpp +++ b/crypto/vm/opctable.cpp @@ -447,4 +447,24 @@ dump_arg_instr_func_t dump_2c_add(unsigned add, std::string prefix, std::string } // namespace instr +OpcodeInstr* OpcodeInstr::require_version(int required_version) { + return new OpcodeInstrWithVersion(this, required_version); +} + +int OpcodeInstrWithVersion::dispatch(VmState* st, CellSlice& cs, unsigned opcode, unsigned bits) const { + if (st->get_global_version() < required_version) { + st->consume_gas(gas_per_instr); + throw VmError{Excno::inv_opcode, "invalid opcode", opcode}; + } + return instr->dispatch(st, cs, opcode, bits); +} + +std::string OpcodeInstrWithVersion::dump(CellSlice& cs, unsigned opcode, unsigned bits) const { + return instr->dump(cs, opcode, bits); +} + +int OpcodeInstrWithVersion::instr_len(const CellSlice& cs, unsigned opcode, unsigned bits) const { + return instr->instr_len(cs, opcode, bits); +} + } // namespace vm diff --git a/crypto/vm/opctable.h b/crypto/vm/opctable.h index f9ea7023..34d2ef0a 100644 --- a/crypto/vm/opctable.h +++ b/crypto/vm/opctable.h @@ -57,6 +57,9 @@ class OpcodeInstr { std::pair get_opcode_range() const { return {min_opcode, max_opcode}; } + + OpcodeInstr* require_version(int required_version); + //static OpcodeInstr* mksimple(unsigned opcode, unsigned opc_bits, std::string _name, exec_instr_func_t exec); static OpcodeInstr* mksimple(unsigned opcode, unsigned opc_bits, std::string _name, exec_simple_instr_func_t exec); static OpcodeInstr* mkfixed(unsigned opcode, unsigned opc_bits, unsigned arg_bits, dump_arg_instr_func_t dump, @@ -188,4 +191,19 @@ class OpcodeInstrExt : public OpcodeInstr { int instr_len(const CellSlice& cs, unsigned opcode, unsigned bits) const override; }; +class OpcodeInstrWithVersion : public OpcodeInstr { + public: + OpcodeInstrWithVersion() = delete; + OpcodeInstrWithVersion(OpcodeInstr* instr, int required_version) : + OpcodeInstr(instr->get_opcode_min(), instr->get_opcode_max()), instr(instr), required_version(required_version) { + } + ~OpcodeInstrWithVersion() override = default; + int dispatch(VmState* st, CellSlice& cs, unsigned opcode, unsigned bits) const override; + std::string dump(CellSlice& cs, unsigned opcode, unsigned bits) const override; + int instr_len(const CellSlice& cs, unsigned opcode, unsigned bits) const override; + private: + OpcodeInstr* instr; + int required_version; +}; + } // namespace vm diff --git a/crypto/vm/stack.cpp b/crypto/vm/stack.cpp index 18589812..69760524 100644 --- a/crypto/vm/stack.cpp +++ b/crypto/vm/stack.cpp @@ -349,7 +349,7 @@ void StackEntry::for_each_scalar(const std::function& f } } -const StackEntry& tuple_index(const Tuple& tup, unsigned idx) { +const StackEntry& tuple_index(const Ref& tup, unsigned idx) { if (idx >= tup->size()) { throw VmError{Excno::range_chk, "tuple index out of range"}; } diff --git a/crypto/vm/stack.hpp b/crypto/vm/stack.hpp index 69ed107c..6a52e4a2 100644 --- a/crypto/vm/stack.hpp +++ b/crypto/vm/stack.hpp @@ -305,7 +305,7 @@ inline void swap(StackEntry& se1, StackEntry& se2) { se1.swap(se2); } -const StackEntry& tuple_index(const Tuple& tup, unsigned idx); +const StackEntry& tuple_index(const Ref& tup, unsigned idx); StackEntry tuple_extend_index(const Ref& tup, unsigned idx); unsigned tuple_extend_set_index(Ref& tup, unsigned idx, StackEntry&& value, bool force = false); diff --git a/crypto/vm/stackops.cpp b/crypto/vm/stackops.cpp index a52a90e2..c8180f1a 100644 --- a/crypto/vm/stackops.cpp +++ b/crypto/vm/stackops.cpp @@ -301,9 +301,7 @@ int exec_blkswap(VmState* st, unsigned args) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute BLKSWAP " << x << ',' << y; stack.check_underflow(x + y); - std::reverse(stack.from_top(x + y), stack.from_top(y)); - std::reverse(stack.from_top(y), stack.top()); - std::reverse(stack.from_top(x + y), stack.top()); + std::rotate(stack.from_top(x + y), stack.from_top(y), stack.top()); return 0; } @@ -403,7 +401,7 @@ int exec_pick(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute PICK\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow_p(x); stack.push(stack.fetch(x)); return 0; @@ -413,8 +411,9 @@ int exec_roll(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute ROLL\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow_p(x); + st->consume_gas(std::max(x - 255, 0)); while (--x >= 0) { swap(stack[x], stack[x + 1]); } @@ -425,8 +424,9 @@ int exec_rollrev(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute ROLLREV\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow_p(x); + st->consume_gas(std::max(x - 255, 0)); for (int i = 0; i < x; i++) { swap(stack[i], stack[i + 1]); } @@ -437,13 +437,14 @@ int exec_blkswap_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute BLKSWX\n"; stack.check_underflow(2); - int y = stack.pop_smallint_range(255); - int x = stack.pop_smallint_range(255); + int y = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x + y); if (x > 0 && y > 0) { - std::reverse(stack.from_top(x + y), stack.from_top(y)); - std::reverse(stack.from_top(y), stack.top()); - std::reverse(stack.from_top(x + y), stack.top()); + if (st->get_global_version() >= 4) { + st->consume_gas(std::max(x + y - 255, 0)); + } + std::rotate(stack.from_top(x + y), stack.from_top(y), stack.top()); } return 0; } @@ -452,9 +453,10 @@ int exec_reverse_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute REVX\n"; stack.check_underflow(2); - int y = stack.pop_smallint_range(255); - int x = stack.pop_smallint_range(255); + int y = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x + y); + st->consume_gas(std::max(x - 255, 0)); std::reverse(stack.from_top(x + y), stack.from_top(y)); return 0; } @@ -463,7 +465,7 @@ int exec_drop_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute DROPX\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x); stack.pop_many(x); return 0; @@ -482,7 +484,7 @@ int exec_xchg_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute XCHGX\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow_p(x); swap(stack[0], stack[x]); return 0; @@ -499,7 +501,7 @@ int exec_chkdepth(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute CHKDEPTH\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x); return 0; } @@ -508,10 +510,11 @@ int exec_onlytop_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute ONLYTOPX\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x); int n = stack.depth(), d = n - x; if (d > 0) { + st->consume_gas(std::max(x - 255, 0)); for (int i = n - 1; i >= d; i--) { stack[i] = std::move(stack[i - d]); } @@ -524,7 +527,7 @@ int exec_only_x(VmState* st) { Stack& stack = st->get_stack(); VM_LOG(st) << "execute ONLYX\n"; stack.check_underflow(1); - int x = stack.pop_smallint_range(255); + int x = stack.pop_smallint_range(st->get_global_version() >= 4 ? (1 << 30) - 1 : 255); stack.check_underflow(x); stack.pop_many(stack.depth() - x); return 0; diff --git a/crypto/vm/tonops.cpp b/crypto/vm/tonops.cpp index a164df83..0dd15d80 100644 --- a/crypto/vm/tonops.cpp +++ b/crypto/vm/tonops.cpp @@ -26,8 +26,15 @@ #include "vm/dict.h" #include "vm/boc.h" #include "Ed25519.h" +#include "vm/Hasher.h" +#include "block/block-auto.h" +#include "block/block-parse.h" +#include "crypto/ellcurve/secp256k1.h" +#include "crypto/ellcurve/p256.h" #include "openssl/digest.hpp" +#include +#include "bls.h" namespace vm { @@ -78,6 +85,12 @@ int exec_set_gas_limit(VmState* st) { return exec_set_gas_generic(st, gas); } +int exec_gas_consumed(VmState* st) { + VM_LOG(st) << "execute GASCONSUMED"; + st->get_stack().push_smallint(st->gas_consumed()); + return 0; +} + int exec_commit(VmState* st) { VM_LOG(st) << "execute COMMIT"; st->force_commit(); @@ -88,6 +101,7 @@ void register_basic_gas_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mksimple(0xf800, 16, "ACCEPT", exec_accept)) .insert(OpcodeInstr::mksimple(0xf801, 16, "SETGASLIMIT", exec_set_gas_limit)) + .insert(OpcodeInstr::mksimple(0xf802, 16, "GASCONSUMED", exec_gas_consumed)->require_version(4)) .insert(OpcodeInstr::mksimple(0xf80f, 16, "COMMIT", exec_commit)); } @@ -95,17 +109,21 @@ void register_ton_gas_ops(OpcodeTable& cp0) { using namespace std::placeholders; } +static const StackEntry& get_param(VmState* st, unsigned idx) { + auto tuple = st->get_c7(); + auto t1 = tuple_index(tuple, 0).as_tuple_range(255); + if (t1.is_null()) { + throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; + } + return tuple_index(t1, idx); +} + int exec_get_param(VmState* st, unsigned idx, const char* name) { if (name) { VM_LOG(st) << "execute " << name; } Stack& stack = st->get_stack(); - auto tuple = st->get_c7(); - auto t1 = tuple_index(*tuple, 0).as_tuple_range(255); - if (t1.is_null()) { - throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; - } - stack.push(tuple_index(*t1, idx)); + stack.push(get_param(st, idx)); return 0; } @@ -192,6 +210,41 @@ int exec_set_global_var(VmState* st) { return exec_set_global_common(st, args); } +int exec_get_prev_blocks_info(VmState* st, unsigned idx, const char* name) { + idx &= 3; + VM_LOG(st) << "execute " << name; + Stack& stack = st->get_stack(); + auto tuple = st->get_c7(); + auto t1 = tuple_index(tuple, 0).as_tuple_range(255); + if (t1.is_null()) { + throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; + } + auto t2 = tuple_index(t1, 13).as_tuple_range(255); + if (t2.is_null()) { + throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; + } + stack.push(tuple_index(t2, idx)); + return 0; +} + +int exec_get_global_id(VmState* st) { + Ref config = get_param(st, 9).as_cell(); + if (config.is_null()) { + throw VmError{Excno::type_chk, "intermediate value is not a cell"}; + } + Dictionary config_dict{std::move(config), 32}; + Ref cell = config_dict.lookup_ref(td::BitArray<32>{19}); + if (cell.is_null()) { + throw VmError{Excno::unknown, "invalid global-id config"}; + } + CellSlice cs = load_cell_slice(cell); + if (cs.size() < 32) { + throw VmError{Excno::unknown, "invalid global-id config"}; + } + st->get_stack().push_smallint(cs.fetch_long(32)); + return 0; +} + void register_ton_config_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mkfixedrange(0xf820, 0xf823, 16, 4, instr::dump_1c("GETPARAM "), exec_get_var_param)) @@ -202,10 +255,17 @@ void register_ton_config_ops(OpcodeTable& cp0) { .insert(OpcodeInstr::mksimple(0xf827, 16, "BALANCE", std::bind(exec_get_param, _1, 7, "BALANCE"))) .insert(OpcodeInstr::mksimple(0xf828, 16, "MYADDR", std::bind(exec_get_param, _1, 8, "MYADDR"))) .insert(OpcodeInstr::mksimple(0xf829, 16, "CONFIGROOT", std::bind(exec_get_param, _1, 9, "CONFIGROOT"))) - .insert(OpcodeInstr::mkfixedrange(0xf82a, 0xf830, 16, 4, instr::dump_1c("GETPARAM "), exec_get_var_param)) + .insert(OpcodeInstr::mksimple(0xf82a, 16, "MYCODE", std::bind(exec_get_param, _1, 10, "MYCODE"))) + .insert(OpcodeInstr::mksimple(0xf82b, 16, "INCOMINGVALUE", std::bind(exec_get_param, _1, 11, "INCOMINGVALUE"))) + .insert(OpcodeInstr::mksimple(0xf82c, 16, "STORAGEFEES", std::bind(exec_get_param, _1, 12, "STORAGEFEES"))) + .insert(OpcodeInstr::mksimple(0xf82d, 16, "PREVBLOCKSINFOTUPLE", std::bind(exec_get_param, _1, 13, "PREVBLOCKSINFOTUPLE"))) + .insert(OpcodeInstr::mkfixedrange(0xf82e, 0xf830, 16, 4, instr::dump_1c("GETPARAM "), exec_get_var_param)) .insert(OpcodeInstr::mksimple(0xf830, 16, "CONFIGDICT", exec_get_config_dict)) .insert(OpcodeInstr::mksimple(0xf832, 16, "CONFIGPARAM", std::bind(exec_get_config_param, _1, false))) .insert(OpcodeInstr::mksimple(0xf833, 16, "CONFIGOPTPARAM", std::bind(exec_get_config_param, _1, true))) + .insert(OpcodeInstr::mksimple(0xf83400, 24, "PREVMCBLOCKS", std::bind(exec_get_prev_blocks_info, _1, 0, "PREVMCBLOCKS"))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf83401, 24, "PREVKEYBLOCK", std::bind(exec_get_prev_blocks_info, _1, 1, "PREVKEYBLOCK"))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf835, 16, "GLOBALID", exec_get_global_id)->require_version(4)) .insert(OpcodeInstr::mksimple(0xf840, 16, "GETGLOBVAR", exec_get_global_var)) .insert(OpcodeInstr::mkfixedrange(0xf841, 0xf860, 16, 5, instr::dump_1c_and(31, "GETGLOB "), exec_get_global)) .insert(OpcodeInstr::mksimple(0xf860, 16, "SETGLOBVAR", exec_set_global_var)) @@ -216,11 +276,11 @@ static constexpr int randseed_idx = 6; td::RefInt256 generate_randu256(VmState* st) { auto tuple = st->get_c7(); - auto t1 = tuple_index(*tuple, 0).as_tuple_range(255); + auto t1 = tuple_index(tuple, 0).as_tuple_range(255); if (t1.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } - auto seedv = tuple_index(*t1, randseed_idx).as_int(); + auto seedv = tuple_index(t1, randseed_idx).as_int(); if (seedv.is_null()) { throw VmError{Excno::type_chk, "random seed is not an integer"}; } @@ -276,12 +336,12 @@ int exec_set_rand(VmState* st, bool mix) { throw VmError{Excno::range_chk, "new random seed out of range"}; } auto tuple = st->get_c7(); - auto t1 = tuple_index(*tuple, 0).as_tuple_range(255); + auto t1 = tuple_index(tuple, 0).as_tuple_range(255); if (t1.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } if (mix) { - auto seedv = tuple_index(*t1, randseed_idx).as_int(); + auto seedv = tuple_index(t1, randseed_idx).as_int(); if (seedv.is_null()) { throw VmError{Excno::type_chk, "random seed is not an integer"}; } @@ -356,6 +416,77 @@ int exec_compute_sha256(VmState* st) { return 0; } +int exec_hash_ext(VmState* st, unsigned args) { + bool rev = (args >> 8) & 1; + bool append = (args >> 9) & 1; + int hash_id = args & 255; + VM_LOG(st) << "execute HASHEXT" << (append ? "A" : "") << (rev ? "R" : "") << " " << (hash_id == 255 ? -1 : hash_id); + Stack& stack = st->get_stack(); + if (hash_id == 255) { + hash_id = stack.pop_smallint_range(254); + } + int cnt = stack.pop_smallint_range(stack.depth() - 1); + Hasher hasher{hash_id}; + size_t total_bits = 0; + long long gas_consumed = 0; + for (int i = 0; i < cnt; ++i) { + td::ConstBitPtr data{nullptr}; + unsigned size; + int idx = rev ? i : cnt - 1 - i; + auto slice = stack[idx].as_slice(); + if (slice.not_null()) { + data = slice->data_bits(); + size = slice->size(); + } else { + auto builder = stack[idx].as_builder(); + if (builder.not_null()) { + data = builder->data_bits(); + size = builder->size(); + } else { + stack.pop_many(cnt); + throw VmError{Excno::type_chk, "expected slice or builder"}; + } + } + total_bits += size; + long long gas_total = (i + 1) * VmState::hash_ext_entry_gas_price + total_bits / 8 / hasher.bytes_per_gas_unit(); + st->consume_gas(gas_total - gas_consumed); + gas_consumed = gas_total; + hasher.append(data, size); + } + stack.pop_many(cnt); + td::BufferSlice hash = hasher.finish(); + if (append) { + Ref builder = stack.pop_builder(); + if (!builder->can_extend_by(hash.size() * 8)) { + throw VmError{Excno::cell_ov}; + } + builder.write().store_bytes(hash.as_slice()); + stack.push_builder(std::move(builder)); + } else { + if (hash.size() <= 32) { + td::RefInt256 res{true}; + CHECK(res.write().import_bytes((unsigned char*)hash.data(), hash.size(), false)); + stack.push_int(std::move(res)); + } else { + std::vector res; + for (size_t i = 0; i < hash.size(); i += 32) { + td::RefInt256 x{true}; + CHECK(x.write().import_bytes((unsigned char*)hash.data() + i, std::min(hash.size() - i, 32), false)); + res.push_back(std::move(x)); + } + stack.push_tuple(std::move(res)); + } + } + return 0; +} + +std::string dump_hash_ext(CellSlice& cs, unsigned args) { + bool rev = (args >> 8) & 1; + bool append = (args >> 9) & 1; + int hash_id = args & 255; + return PSTRING() << "HASHEXT" << (append ? "A" : "") << (rev ? "R" : "") << " " << (hash_id == 255 ? -1 : hash_id); +} + int exec_ed25519_check_signature(VmState* st, bool from_slice) { VM_LOG(st) << "execute CHKSIGN" << (from_slice ? 'S' : 'U'); Stack& stack = st->get_stack(); @@ -385,19 +516,636 @@ int exec_ed25519_check_signature(VmState* st, bool from_slice) { if (!key_int->export_bytes(key, 32, false)) { throw VmError{Excno::range_chk, "Ed25519 public key must fit in an unsigned 256-bit integer"}; } + st->register_chksgn_call(); td::Ed25519::PublicKey pub_key{td::SecureString(td::Slice{key, 32})}; auto res = pub_key.verify_signature(td::Slice{data, data_len}, td::Slice{signature, 64}); stack.push_bool(res.is_ok() || st->get_chksig_always_succeed()); return 0; } +int exec_ecrecover(VmState* st) { + VM_LOG(st) << "execute ECRECOVER"; + Stack& stack = st->get_stack(); + stack.check_underflow(4); + auto s = stack.pop_int(); + auto r = stack.pop_int(); + auto v = (td::uint8)stack.pop_smallint_range(255); + auto hash = stack.pop_int(); + + unsigned char signature[65]; + if (!r->export_bytes(signature, 32, false)) { + throw VmError{Excno::range_chk, "r must fit in an unsigned 256-bit integer"}; + } + if (!s->export_bytes(signature + 32, 32, false)) { + throw VmError{Excno::range_chk, "s must fit in an unsigned 256-bit integer"}; + } + signature[64] = v; + unsigned char hash_bytes[32]; + if (!hash->export_bytes(hash_bytes, 32, false)) { + throw VmError{Excno::range_chk, "data hash must fit in an unsigned 256-bit integer"}; + } + st->consume_gas(VmState::ecrecover_gas_price); + unsigned char public_key[65]; + if (td::ecrecover(hash_bytes, signature, public_key)) { + td::uint8 h = public_key[0]; + td::RefInt256 x1{true}, x2{true}; + CHECK(x1.write().import_bytes(public_key + 1, 32, false)); + CHECK(x2.write().import_bytes(public_key + 33, 32, false)); + stack.push_smallint(h); + stack.push_int(std::move(x1)); + stack.push_int(std::move(x2)); + stack.push_bool(true); + } else { + stack.push_bool(false); + } + return 0; +} + +int exec_p256_chksign(VmState* st, bool from_slice) { + VM_LOG(st) << "execute P256_CHKSIGN" << (from_slice ? 'S' : 'U'); + Stack& stack = st->get_stack(); + stack.check_underflow(3); + auto key_cs = stack.pop_cellslice(); + auto signature_cs = stack.pop_cellslice(); + unsigned char data[128], key[33], signature[64]; + unsigned data_len; + if (from_slice) { + auto cs = stack.pop_cellslice(); + if (cs->size() & 7) { + throw VmError{Excno::cell_und, "Slice does not consist of an integer number of bytes"}; + } + data_len = (cs->size() >> 3); + CHECK(data_len <= sizeof(data)); + CHECK(cs->prefetch_bytes(data, data_len)); + } else { + auto hash_int = stack.pop_int(); + data_len = 32; + if (!hash_int->export_bytes(data, data_len, false)) { + throw VmError{Excno::range_chk, "data hash must fit in an unsigned 256-bit integer"}; + } + } + if (!signature_cs->prefetch_bytes(signature, 64)) { + throw VmError{Excno::cell_und, "P256 signature must contain at least 512 data bits"}; + } + if (!key_cs->prefetch_bytes(key, 33)) { + throw VmError{Excno::cell_und, "P256 public key must contain at least 33 data bytes"}; + } + st->consume_gas(VmState::p256_chksgn_gas_price); + auto res = td::p256_check_signature(td::Slice{data, data_len}, td::Slice{key, 33}, td::Slice{signature, 64}); + if (res.is_error()) { + VM_LOG(st) << "P256_CHKSIGN: " << res.error().message(); + } + stack.push_bool(res.is_ok() || st->get_chksig_always_succeed()); + return 0; +} + +static_assert(crypto_scalarmult_ristretto255_BYTES == 32, "Unexpected value of ristretto255 constant"); +static_assert(crypto_scalarmult_ristretto255_SCALARBYTES == 32, "Unexpected value of ristretto255 constant"); +static_assert(crypto_core_ristretto255_BYTES == 32, "Unexpected value of ristretto255 constant"); +static_assert(crypto_core_ristretto255_HASHBYTES == 64, "Unexpected value of ristretto255 constant"); +static_assert(crypto_core_ristretto255_SCALARBYTES == 32, "Unexpected value of ristretto255 constant"); +static_assert(crypto_core_ristretto255_NONREDUCEDSCALARBYTES == 64, "Unexpected value of ristretto255 constant"); + +int exec_ristretto255_from_hash(VmState* st) { + VM_LOG(st) << "execute RIST255_FROMHASH"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + auto x2 = stack.pop_int(); + auto x1 = stack.pop_int(); + st->consume_gas(VmState::rist255_fromhash_gas_price); + unsigned char xb[64], rb[32]; + if (!x1->export_bytes(xb, 32, false)) { + throw VmError{Excno::range_chk, "x1 must fit in an unsigned 256-bit integer"}; + } + if (!x2->export_bytes(xb + 32, 32, false)) { + throw VmError{Excno::range_chk, "x2 must fit in an unsigned 256-bit integer"}; + } + CHECK(sodium_init() >= 0); + crypto_core_ristretto255_from_hash(rb, xb); + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + return 0; +} + +int exec_ristretto255_validate(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_VALIDATE"; + Stack& stack = st->get_stack(); + auto x = stack.pop_int(); + st->consume_gas(VmState::rist255_validate_gas_price); + unsigned char xb[64]; + CHECK(sodium_init() >= 0); + if (!x->export_bytes(xb, 32, false) || !crypto_core_ristretto255_is_valid_point(xb)) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "x is not a valid encoded element"}; + } + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +int exec_ristretto255_add(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_ADD"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + auto y = stack.pop_int(); + auto x = stack.pop_int(); + st->consume_gas(VmState::rist255_add_gas_price); + unsigned char xb[32], yb[32], rb[32]; + CHECK(sodium_init() >= 0); + if (!x->export_bytes(xb, 32, false) || !y->export_bytes(yb, 32, false) || crypto_core_ristretto255_add(rb, xb, yb)) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "x and/or y are not valid encoded elements"}; + } + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +int exec_ristretto255_sub(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_SUB"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + auto y = stack.pop_int(); + auto x = stack.pop_int(); + st->consume_gas(VmState::rist255_add_gas_price); + unsigned char xb[32], yb[32], rb[32]; + CHECK(sodium_init() >= 0); + if (!x->export_bytes(xb, 32, false) || !y->export_bytes(yb, 32, false) || crypto_core_ristretto255_sub(rb, xb, yb)) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "x and/or y are not valid encoded elements"}; + } + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +static bool export_bytes_little(const td::RefInt256& n, unsigned char* nb) { + if (!n->export_bytes(nb, 32, false)) { + return false; + } + std::reverse(nb, nb + 32); + return true; +} + +static td::RefInt256 get_ristretto256_l() { + static td::RefInt256 l = + (td::make_refint(1) << 252) + td::dec_string_to_int256(td::Slice("27742317777372353535851937790883648493")); + return l; +} + +int exec_ristretto255_mul(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_MUL"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + auto n = stack.pop_int() % get_ristretto256_l(); + auto x = stack.pop_int(); + st->consume_gas(VmState::rist255_mul_gas_price); + unsigned char xb[32], nb[32], rb[32]; + memset(rb, 255, sizeof(rb)); + CHECK(sodium_init() >= 0); + if (!x->export_bytes(xb, 32, false) || !export_bytes_little(n, nb) || crypto_scalarmult_ristretto255(rb, nb, xb)) { + if (std::all_of(rb, rb + 32, [](unsigned char c) { return c == 255; })) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "invalid x or n"}; + } + } + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +int exec_ristretto255_mul_base(VmState* st, bool quiet) { + VM_LOG(st) << "execute RIST255_MULBASE"; + Stack& stack = st->get_stack(); + auto n = stack.pop_int() % get_ristretto256_l(); + st->consume_gas(VmState::rist255_mulbase_gas_price); + unsigned char nb[32], rb[32]; + memset(rb, 255, sizeof(rb)); + CHECK(sodium_init() >= 0); + if (!export_bytes_little(n, nb) || crypto_scalarmult_ristretto255_base(rb, nb)) { + if (std::all_of(rb, rb + 32, [](unsigned char c) { return c == 255; })) { + if (quiet) { + stack.push_bool(false); + return 0; + } + throw VmError{Excno::range_chk, "invalid n"}; + } + } + td::RefInt256 r{true}; + CHECK(r.write().import_bytes(rb, 32, false)); + stack.push_int(std::move(r)); + if (quiet) { + stack.push_bool(true); + } + return 0; +} + +int exec_ristretto255_push_l(VmState* st) { + VM_LOG(st) << "execute RIST255_PUSHL"; + Stack& stack = st->get_stack(); + stack.push_int(get_ristretto256_l()); + return 0; +} + +static bls::P1 slice_to_bls_p1(const CellSlice& cs) { + bls::P1 p1; + if (!cs.prefetch_bytes(p1.as_slice())) { + throw VmError{Excno::cell_und, PSTRING() << "slice must contain at least " << bls::P1_SIZE << " bytes"}; + } + return p1; +} + +static bls::P2 slice_to_bls_p2(const CellSlice& cs) { + bls::P2 p2; + if (!cs.prefetch_bytes(p2.as_slice())) { + throw VmError{Excno::cell_und, PSTRING() << "slice must contain at least " << bls::P2_SIZE << " bytes"}; + } + return p2; +} + +static bls::FP slice_to_bls_fp(const CellSlice& cs) { + bls::FP fp; + if (!cs.prefetch_bytes(fp.as_slice())) { + throw VmError{Excno::cell_und, PSTRING() << "slice must contain at least " << bls::FP_SIZE << " bytes"}; + } + return fp; +} + +static bls::FP2 slice_to_bls_fp2(const CellSlice& cs) { + bls::FP2 fp2; + if (!cs.prefetch_bytes(fp2.as_slice())) { + throw VmError{Excno::cell_und, PSTRING() << "slice must contain at least " << bls::FP_SIZE * 2 << " bytes"}; + } + return fp2; +} + +static td::BufferSlice slice_to_bls_msg(const CellSlice& cs) { + if (cs.size() % 8 != 0) { + throw VmError{Excno::cell_und, "message does not consist of an integer number of bytes"}; + } + size_t msg_size = cs.size() / 8; + td::BufferSlice s(msg_size); + cs.prefetch_bytes((td::uint8*)s.data(), (int)msg_size); + return s; +} + +static Ref bls_to_slice(td::Slice s) { + VmStateInterface::Guard guard{nullptr}; // Don't consume gas for finalize and load_cell_slice + CellBuilder cb; + return load_cell_slice_ref(cb.store_bytes(s).finalize()); +} + +static long long bls_calculate_multiexp_gas(int n, long long base, long long coef1, long long coef2) { + int l = 4; + while ((1LL << (l + 1)) <= n) { + ++l; + } + return base + n * coef1 + n * coef2 / l; +} + +int exec_bls_verify(VmState* st) { + VM_LOG(st) << "execute BLS_VERIFY"; + Stack& stack = st->get_stack(); + stack.check_underflow(3); + st->consume_gas(st->bls_verify_gas_price); + bls::P2 sig = slice_to_bls_p2(*stack.pop_cellslice()); + td::BufferSlice msg = slice_to_bls_msg(*stack.pop_cellslice()); + bls::P1 pub = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_bool(bls::verify(pub, msg, sig)); + return 0; +} + +int exec_bls_aggregate(VmState* st) { + VM_LOG(st) << "execute BLS_AGGREGATE"; + Stack& stack = st->get_stack(); + int n = stack.pop_smallint_range(stack.depth() - 1, 1); + st->consume_gas( + std::max(0LL, VmState::bls_aggregate_base_gas_price + (long long)n * VmState::bls_aggregate_element_gas_price)); + std::vector sigs(n); + for (int i = n - 1; i >= 0; --i) { + sigs[i] = slice_to_bls_p2(*stack.pop_cellslice()); + } + bls::P2 aggregated = bls::aggregate(sigs); + stack.push_cellslice(bls_to_slice(aggregated.as_slice())); + return 0; +} + +int exec_bls_fast_aggregate_verify(VmState* st) { + VM_LOG(st) << "execute BLS_FASTAGGREGATEVERIFY"; + Stack& stack = st->get_stack(); + stack.check_underflow(3); + Ref sig = stack.pop_cellslice(); + Ref msg = stack.pop_cellslice(); + int n = stack.pop_smallint_range(stack.depth() - 1); + st->consume_gas(VmState::bls_fast_aggregate_verify_base_gas_price + + (long long)n * VmState::bls_fast_aggregate_verify_element_gas_price); + std::vector pubs(n); + for (int i = n - 1; i >= 0; --i) { + pubs[i] = slice_to_bls_p1(*stack.pop_cellslice()); + } + stack.push_bool(bls::fast_aggregate_verify(pubs, slice_to_bls_msg(*msg), slice_to_bls_p2(*sig))); + return 0; +} + +int exec_bls_aggregate_verify(VmState* st) { + VM_LOG(st) << "execute BLS_AGGREGATEVERIFY"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + Ref sig = stack.pop_cellslice(); + int n = stack.pop_smallint_range((stack.depth() - 1) / 2); + st->consume_gas(VmState::bls_aggregate_verify_base_gas_price + + (long long)n * VmState::bls_aggregate_verify_element_gas_price); + std::vector> vec(n); + for (int i = n - 1; i >= 0; --i) { + vec[i].second = slice_to_bls_msg(*stack.pop_cellslice()); + vec[i].first = slice_to_bls_p1(*stack.pop_cellslice()); + } + stack.push_bool(bls::aggregate_verify(vec, slice_to_bls_p2(*sig))); + return 0; +} + +int exec_bls_g1_add(VmState* st) { + VM_LOG(st) << "execute BLS_G1_ADD"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g1_add_sub_gas_price); + bls::P1 b = slice_to_bls_p1(*stack.pop_cellslice()); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g1_add(a, b).as_slice())); + return 0; +} + +int exec_bls_g1_sub(VmState* st) { + VM_LOG(st) << "execute BLS_G1_SUB"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g1_add_sub_gas_price); + bls::P1 b = slice_to_bls_p1(*stack.pop_cellslice()); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g1_sub(a, b).as_slice())); + return 0; +} + +int exec_bls_g1_neg(VmState* st) { + VM_LOG(st) << "execute BLS_G1_NEG"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_g1_neg_gas_price); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g1_neg(a).as_slice())); + return 0; +} + +int exec_bls_g1_mul(VmState* st) { + VM_LOG(st) << "execute BLS_G1_MUL"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g1_mul_gas_price); + td::RefInt256 x = stack.pop_int_finite(); + bls::P1 p = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g1_mul(p, x).as_slice())); + return 0; +} + +int exec_bls_g1_multiexp(VmState* st) { + VM_LOG(st) << "execute BLS_G1_MULTIEXP"; + Stack& stack = st->get_stack(); + int n = stack.pop_smallint_range((stack.depth() - 1) / 2); + st->consume_gas(bls_calculate_multiexp_gas(n, VmState::bls_g1_multiexp_base_gas_price, + VmState::bls_g1_multiexp_coef1_gas_price, + VmState::bls_g1_multiexp_coef2_gas_price)); + std::vector> ps(n); + for (int i = n - 1; i >= 0; --i) { + ps[i].second = stack.pop_int_finite(); + ps[i].first = slice_to_bls_p1(*stack.pop_cellslice()); + } + stack.push_cellslice(bls_to_slice(bls::g1_multiexp(ps).as_slice())); + return 0; +} + +int exec_bls_g1_zero(VmState* st) { + VM_LOG(st) << "execute BLS_G1_ZERO"; + Stack& stack = st->get_stack(); + stack.push_cellslice(bls_to_slice(bls::g1_zero().as_slice())); + return 0; +} + +int exec_bls_map_to_g1(VmState* st) { + VM_LOG(st) << "execute BLS_MAP_TO_G1"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_map_to_g1_gas_price); + bls::FP a = slice_to_bls_fp(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::map_to_g1(a).as_slice())); + return 0; +} + +int exec_bls_g1_in_group(VmState* st) { + VM_LOG(st) << "execute BLS_G1_INGROUP"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_g1_in_group_gas_price); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_bool(bls::g1_in_group(a)); + return 0; +} + +int exec_bls_g1_is_zero(VmState* st) { + VM_LOG(st) << "execute BLS_G1_ISZERO"; + Stack& stack = st->get_stack(); + bls::P1 a = slice_to_bls_p1(*stack.pop_cellslice()); + stack.push_bool(bls::g1_is_zero(a)); + return 0; +} + +int exec_bls_g2_add(VmState* st) { + VM_LOG(st) << "execute BLS_G2_ADD"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g2_add_sub_gas_price); + bls::P2 b = slice_to_bls_p2(*stack.pop_cellslice()); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g2_add(a, b).as_slice())); + return 0; +} + +int exec_bls_g2_sub(VmState* st) { + VM_LOG(st) << "execute BLS_G2_SUB"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g2_add_sub_gas_price); + bls::P2 b = slice_to_bls_p2(*stack.pop_cellslice()); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g2_sub(a, b).as_slice())); + return 0; +} + +int exec_bls_g2_neg(VmState* st) { + VM_LOG(st) << "execute BLS_G2_NEG"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_g2_neg_gas_price); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g2_neg(a).as_slice())); + return 0; +} + +int exec_bls_g2_mul(VmState* st) { + VM_LOG(st) << "execute BLS_G2_MUL"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + st->consume_gas(VmState::bls_g2_mul_gas_price); + td::RefInt256 x = stack.pop_int_finite(); + bls::P2 p = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::g2_mul(p, x).as_slice())); + return 0; +} + +int exec_bls_g2_multiexp(VmState* st) { + VM_LOG(st) << "execute BLS_G2_MULTIEXP"; + Stack& stack = st->get_stack(); + int n = stack.pop_smallint_range((stack.depth() - 1) / 2); + st->consume_gas(bls_calculate_multiexp_gas(n, VmState::bls_g2_multiexp_base_gas_price, + VmState::bls_g2_multiexp_coef1_gas_price, + VmState::bls_g2_multiexp_coef2_gas_price)); + std::vector> ps(n); + for (int i = n - 1; i >= 0; --i) { + ps[i].second = stack.pop_int_finite(); + ps[i].first = slice_to_bls_p2(*stack.pop_cellslice()); + } + stack.push_cellslice(bls_to_slice(bls::g2_multiexp(ps).as_slice())); + return 0; +} + +int exec_bls_g2_zero(VmState* st) { + VM_LOG(st) << "execute BLS_G2_ZERO"; + Stack& stack = st->get_stack(); + stack.push_cellslice(bls_to_slice(bls::g2_zero().as_slice())); + return 0; +} + +int exec_bls_map_to_g2(VmState* st) { + VM_LOG(st) << "execute BLS_MAP_TO_G2"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_map_to_g2_gas_price); + bls::FP2 a = slice_to_bls_fp2(*stack.pop_cellslice()); + stack.push_cellslice(bls_to_slice(bls::map_to_g2(a).as_slice())); + return 0; +} + +int exec_bls_g2_in_group(VmState* st) { + VM_LOG(st) << "execute BLS_G2_INGROUP"; + Stack& stack = st->get_stack(); + st->consume_gas(VmState::bls_g2_in_group_gas_price); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_bool(bls::g2_in_group(a)); + return 0; +} + +int exec_bls_g2_is_zero(VmState* st) { + VM_LOG(st) << "execute BLS_G2_ISZERO"; + Stack& stack = st->get_stack(); + bls::P2 a = slice_to_bls_p2(*stack.pop_cellslice()); + stack.push_bool(bls::g2_is_zero(a)); + return 0; +} + +int exec_bls_pairing(VmState* st) { + VM_LOG(st) << "execute BLS_PAIRING"; + Stack& stack = st->get_stack(); + int n = stack.pop_smallint_range((stack.depth() - 1) / 2); + st->consume_gas(VmState::bls_pairing_base_gas_price + (long long)n * VmState::bls_pairing_element_gas_price); + std::vector> ps(n); + for (int i = n - 1; i >= 0; --i) { + ps[i].second = slice_to_bls_p2(*stack.pop_cellslice()); + ps[i].first = slice_to_bls_p1(*stack.pop_cellslice()); + } + stack.push_bool(bls::pairing(ps)); + return 0; +} + +int exec_bls_push_r(VmState* st) { + VM_LOG(st) << "execute BLS_PUSHR"; + Stack& stack = st->get_stack(); + stack.push_int(bls::get_r()); + return 0; +} + void register_ton_crypto_ops(OpcodeTable& cp0) { using namespace std::placeholders; cp0.insert(OpcodeInstr::mksimple(0xf900, 16, "HASHCU", std::bind(exec_compute_hash, _1, 0))) .insert(OpcodeInstr::mksimple(0xf901, 16, "HASHSU", std::bind(exec_compute_hash, _1, 1))) .insert(OpcodeInstr::mksimple(0xf902, 16, "SHA256U", exec_compute_sha256)) + .insert(OpcodeInstr::mkfixed(0xf904 >> 2, 14, 10, dump_hash_ext, exec_hash_ext)->require_version(4)) .insert(OpcodeInstr::mksimple(0xf910, 16, "CHKSIGNU", std::bind(exec_ed25519_check_signature, _1, false))) - .insert(OpcodeInstr::mksimple(0xf911, 16, "CHKSIGNS", std::bind(exec_ed25519_check_signature, _1, true))); + .insert(OpcodeInstr::mksimple(0xf911, 16, "CHKSIGNS", std::bind(exec_ed25519_check_signature, _1, true))) + .insert(OpcodeInstr::mksimple(0xf912, 16, "ECRECOVER", exec_ecrecover)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf914, 16, "P256_CHKSIGNU", std::bind(exec_p256_chksign, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf915, 16, "P256_CHKSIGNS", std::bind(exec_p256_chksign, _1, true))->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf920, 16, "RIST255_FROMHASH", exec_ristretto255_from_hash)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf921, 16, "RIST255_VALIDATE", std::bind(exec_ristretto255_validate, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf922, 16, "RIST255_ADD", std::bind(exec_ristretto255_add, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf923, 16, "RIST255_SUB", std::bind(exec_ristretto255_sub, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf924, 16, "RIST255_MUL", std::bind(exec_ristretto255_mul, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf925, 16, "RIST255_MULBASE", std::bind(exec_ristretto255_mul_base, _1, false))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf926, 16, "RIST255_PUSHL", exec_ristretto255_push_l)->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xb7f921, 24, "RIST255_QVALIDATE", std::bind(exec_ristretto255_validate, _1, true))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xb7f922, 24, "RIST255_QADD", std::bind(exec_ristretto255_add, _1, true))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xb7f923, 24, "RIST255_QSUB", std::bind(exec_ristretto255_sub, _1, true))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xb7f924, 24, "RIST255_QMUL", std::bind(exec_ristretto255_mul, _1, true))->require_version(4)) + .insert(OpcodeInstr::mksimple(0xb7f925, 24, "RIST255_QMULBASE", std::bind(exec_ristretto255_mul_base, _1, true))->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf93000, 24, "BLS_VERIFY", exec_bls_verify)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93001, 24, "BLS_AGGREGATE", exec_bls_aggregate)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93002, 24, "BLS_FASTAGGREGATEVERIFY", exec_bls_fast_aggregate_verify)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93003, 24, "BLS_AGGREGATEVERIFY", exec_bls_aggregate_verify)->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf93010, 24, "BLS_G1_ADD", exec_bls_g1_add)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93011, 24, "BLS_G1_SUB", exec_bls_g1_sub)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93012, 24, "BLS_G1_NEG", exec_bls_g1_neg)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93013, 24, "BLS_G1_MUL", exec_bls_g1_mul)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93014, 24, "BLS_G1_MULTIEXP", exec_bls_g1_multiexp)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93015, 24, "BLS_G1_ZERO", exec_bls_g1_zero)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93016, 24, "BLS_MAP_TO_G1", exec_bls_map_to_g1)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93017, 24, "BLS_G1_INGROUP", exec_bls_g1_in_group)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93018, 24, "BLS_G1_ISZERO", exec_bls_g1_is_zero)->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf93020, 24, "BLS_G2_ADD", exec_bls_g2_add)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93021, 24, "BLS_G2_SUB", exec_bls_g2_sub)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93022, 24, "BLS_G2_NEG", exec_bls_g2_neg)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93023, 24, "BLS_G2_MUL", exec_bls_g2_mul)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93024, 24, "BLS_G2_MULTIEXP", exec_bls_g2_multiexp)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93025, 24, "BLS_G2_ZERO", exec_bls_g2_zero)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93026, 24, "BLS_MAP_TO_G2", exec_bls_map_to_g2)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93027, 24, "BLS_G2_INGROUP", exec_bls_g2_in_group)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93028, 24, "BLS_G2_ISZERO", exec_bls_g2_is_zero)->require_version(4)) + + .insert(OpcodeInstr::mksimple(0xf93030, 24, "BLS_PAIRING", exec_bls_pairing)->require_version(4)) + .insert(OpcodeInstr::mksimple(0xf93031, 24, "BLS_PUSHR", exec_bls_push_r)->require_version(4)); } int exec_compute_data_size(VmState* st, int mode) { @@ -769,6 +1517,219 @@ int exec_send_raw_message(VmState* st) { return install_output_action(st, cb.finalize()); } +int parse_addr_workchain(CellSlice cs) { + // anycast_info$_ depth:(#<= 30) { depth >= 1 } rewrite_pfx:(bits depth) = Anycast; + // addr_std$10 anycast:(Maybe Anycast) workchain_id:int8 address:bits256 = MsgAddressInt; + // addr_var$11 anycast:(Maybe Anycast) addr_len:(## 9) workchain_id:int32 address:(bits addr_len) = MsgAddressInt; + if (cs.fetch_ulong(1) != 1) { + throw VmError{Excno::range_chk, "not an internal MsgAddress"}; + } + bool is_var = cs.fetch_ulong(1); + if (cs.fetch_ulong(1) == 1) { // Anycast + unsigned depth; + cs.fetch_uint_leq(30, depth); + cs.skip_first(depth); + } + + if (is_var) { + cs.skip_first(9); + return (int)cs.fetch_long(32); + } else { + return (int)cs.fetch_long(8); + } +} + +int exec_send_message(VmState* st) { + VM_LOG(st) << "execute SENDMSG"; + Stack& stack = st->get_stack(); + stack.check_underflow(2); + int mode = stack.pop_smallint_range(2047); + bool send = !(mode & 1024); + mode &= ~1024; + if (mode >= 256) { + throw VmError{Excno::range_chk}; + } + Ref msg_cell = stack.pop_cell(); + + block::gen::MessageRelaxed::Record msg; + if (!tlb::type_unpack_cell(msg_cell, block::gen::t_MessageRelaxed_Any, msg)) { + throw VmError{Excno::unknown, "invalid message"}; + } + + Ref my_addr = get_param(st, 8).as_slice(); + if (my_addr.is_null()) { + throw VmError{Excno::type_chk, "invalid param MYADDR"}; + } + bool ihr_disabled; + Ref dest; + td::RefInt256 value; + td::RefInt256 user_fwd_fee, user_ihr_fee; + bool have_extra_currencies = false; + bool ext_msg = msg.info->prefetch_ulong(1); + if (ext_msg) { // External message + block::gen::CommonMsgInfoRelaxed::Record_ext_out_msg_info info; + if (!tlb::csr_unpack(msg.info, info)) { + throw VmError{Excno::unknown, "invalid message"}; + } + ihr_disabled = true; + dest = std::move(info.dest); + value = user_fwd_fee = user_ihr_fee = td::zero_refint(); + } else { // Internal message + block::gen::CommonMsgInfoRelaxed::Record_int_msg_info info; + if (!tlb::csr_unpack(msg.info, info)) { + throw VmError{Excno::unknown, "invalid message"}; + } + ihr_disabled = info.ihr_disabled; + dest = std::move(info.dest); + Ref extra; + if (!block::tlb::t_CurrencyCollection.unpack_special(info.value.write(), value, extra)) { + throw VmError{Excno::unknown, "invalid message"}; + } + have_extra_currencies = !extra.is_null(); + user_fwd_fee = block::tlb::t_Grams.as_integer(info.fwd_fee); + user_ihr_fee = block::tlb::t_Grams.as_integer(info.ihr_fee); + } + + bool is_masterchain = parse_addr_workchain(*my_addr) == -1 || (!ext_msg && parse_addr_workchain(*dest) == -1); + Ref config_dict = get_param(st, 9).as_cell(); + Dictionary config{config_dict, 32}; + Ref prices_cell = config.lookup_ref(td::BitArray<32>{is_masterchain ? 24 : 25}); + block::gen::MsgForwardPrices::Record prices; + if (prices_cell.is_null() || !tlb::unpack_cell(std::move(prices_cell), prices)) { + throw VmError{Excno::unknown, "invalid prices config"}; + } + + // msg_fwd_fees = (lump_price + ceil((bit_price * msg.bits + cell_price * msg.cells)/2^16)) nanograms + // bits in the root cell of a message are not included in msg.bits (lump_price pays for them) + vm::VmStorageStat stat(1 << 13); + CellSlice cs = load_cell_slice(msg_cell); + cs.skip_first(cs.size()); + stat.add_storage(cs); + + if (!ext_msg) { + if (mode & 128) { // value is balance of the contract + Ref balance = get_param(st, 7).as_tuple(); + if (balance.is_null()) { + throw VmError{Excno::type_chk, "invalid param BALANCE"}; + } + value = tuple_index(balance, 0).as_int(); + if (value.is_null()) { + throw VmError{Excno::type_chk, "invalid param BALANCE"}; + } + have_extra_currencies |= !tuple_index(balance, 1).as_cell().is_null(); + } else if (mode & 64) { // value += value of incoming message + Ref balance = get_param(st, 11).as_tuple(); + if (balance.is_null()) { + throw VmError{Excno::type_chk, "invalid param INCOMINGVALUE"}; + } + td::RefInt256 balance_grams = tuple_index(balance, 0).as_int(); + if (balance_grams.is_null()) { + throw VmError{Excno::type_chk, "invalid param INCOMINGVALUE"}; + } + value += balance_grams; + have_extra_currencies |= !tuple_index(balance, 1).as_cell().is_null(); + } + } + + bool have_init = msg.init->bit_at(0); + bool init_ref = have_init && msg.init->bit_at(1); + bool body_ref = msg.body->bit_at(0); + + td::RefInt256 fwd_fee, ihr_fee; + td::uint64 cells = stat.cells; + td::uint64 bits = stat.bits; + auto compute_fees = [&]() { + td::uint64 fwd_fee_short = prices.lump_price + td::uint128(prices.bit_price) + .mult(bits) + .add(td::uint128(prices.cell_price).mult(cells)) + .add(td::uint128(0xffffu)) + .shr(16) + .lo(); + td::uint64 ihr_fee_short; + if (ihr_disabled) { + ihr_fee_short = 0; + } else { + ihr_fee_short = td::uint128(fwd_fee_short).mult(prices.ihr_price_factor).shr(16).lo(); + } + fwd_fee = td::RefInt256{true, fwd_fee_short}; + ihr_fee = td::RefInt256{true, ihr_fee_short}; + fwd_fee = std::max(fwd_fee, user_fwd_fee); + if (!ihr_disabled) { + ihr_fee = std::max(ihr_fee, user_ihr_fee); + } + }; + compute_fees(); + + auto stored_grams_len = [](td::RefInt256 const& x) -> unsigned { + unsigned bits = x->bit_size(false); + return 4 + ((bits + 7) & ~7); + }; + + auto msg_root_bits = [&]() -> unsigned { + unsigned bits; + // CommonMsgInfo + if (ext_msg) { + bits = 2 + my_addr->size() + dest->size() + 32 + 64; + } else { + bits = 4 + my_addr->size() + dest->size() + stored_grams_len(value) + 1 + 32 + 64; + td::RefInt256 fwd_fee_first = (fwd_fee * prices.first_frac) >> 16; + bits += stored_grams_len(fwd_fee - fwd_fee_first); + bits += stored_grams_len(ihr_fee); + } + // init + bits++; + if (have_init) { + bits += 1 + (init_ref ? 0 : msg.init->size() - 2); + } + // body + bits++; + bits += (body_ref ? 0 : msg.body->size() - 1); + return bits; + }; + auto msg_root_refs = [&]() -> unsigned { + unsigned refs; + // CommonMsgInfo + if (ext_msg) { + refs = 0; + } else { + refs = have_extra_currencies; + } + // init + if (have_init) { + refs += (init_ref ? 1 : msg.init->size_refs()); + } + // body + refs += (body_ref ? 1 : msg.body->size_refs()); + return refs; + }; + + if (have_init && !init_ref && (msg_root_bits() > Cell::max_bits || msg_root_refs() > Cell::max_refs)) { + init_ref = true; + cells += 1; + bits += msg.init->size() - 2; + compute_fees(); + } + if (!body_ref && (msg_root_bits() > Cell::max_bits || msg_root_refs() > Cell::max_refs)) { + body_ref = true; + cells += 1; + bits += msg.body->size() - 1; + compute_fees(); + } + stack.push_int(fwd_fee + ihr_fee); + + if (send) { + CellBuilder cb; + if (!(cb.store_ref_bool(get_actions(st)) // out_list$_ {n:#} prev:^(OutList n) + && cb.store_long_bool(0x0ec3c86d, 32) // action_send_msg#0ec3c86d + && cb.store_long_bool(mode, 8) // mode:(## 8) + && cb.store_ref_bool(std::move(msg_cell)))) { + throw VmError{Excno::cell_ov, "cannot serialize raw output message into an output action cell"}; + } + return install_output_action(st, cb.finalize()); + } + return 0; +} + bool store_grams(CellBuilder& cb, td::RefInt256 value) { int k = value->bit_size(false); return k <= 15 * 8 && cb.store_long_bool((k + 7) >> 3, 4) && cb.store_int256_bool(*value, (k + 7) & -8, false); @@ -778,7 +1739,7 @@ int exec_reserve_raw(VmState* st, int mode) { VM_LOG(st) << "execute RAWRESERVE" << (mode & 1 ? "X" : ""); Stack& stack = st->get_stack(); stack.check_underflow(2 + (mode & 1)); - int f = stack.pop_smallint_range(15); + int f = stack.pop_smallint_range(st->get_global_version() >= 4 ? 31 : 15); Ref y; if (mode & 1) { y = stack.pop_maybe_cell(); @@ -814,12 +1775,20 @@ int exec_set_lib_code(VmState* st) { VM_LOG(st) << "execute SETLIBCODE"; Stack& stack = st->get_stack(); stack.check_underflow(2); - int mode = stack.pop_smallint_range(2); + int mode; + if (st->get_global_version() >= 4) { + mode = stack.pop_smallint_range(31); + if ((mode & ~16) > 2) { + throw VmError{Excno::range_chk}; + } + } else { + mode = stack.pop_smallint_range(2); + } auto code = stack.pop_cell(); CellBuilder cb; if (!(cb.store_ref_bool(get_actions(st)) // out_list$_ {n:#} prev:^(OutList n) && cb.store_long_bool(0x26fa1dd4, 32) // action_change_library#26fa1dd4 - && cb.store_long_bool(mode * 2 + 1, 8) // mode:(## 7) { mode <= 2 } + && cb.store_long_bool(mode * 2 + 1, 8) // mode:(## 7) && cb.store_ref_bool(std::move(code)))) { // libref:LibRef = OutAction; throw VmError{Excno::cell_ov, "cannot serialize new library code into an output action cell"}; } @@ -830,7 +1799,15 @@ int exec_change_lib(VmState* st) { VM_LOG(st) << "execute CHANGELIB"; Stack& stack = st->get_stack(); stack.check_underflow(2); - int mode = stack.pop_smallint_range(2); + int mode; + if (st->get_global_version() >= 4) { + mode = stack.pop_smallint_range(31); + if ((mode & ~16) > 2) { + throw VmError{Excno::range_chk}; + } + } else { + mode = stack.pop_smallint_range(2); + } auto hash = stack.pop_int_finite(); if (!hash->unsigned_fits_bits(256)) { throw VmError{Excno::range_chk, "library hash must be non-negative"}; @@ -852,7 +1829,8 @@ void register_ton_message_ops(OpcodeTable& cp0) { .insert(OpcodeInstr::mksimple(0xfb03, 16, "RAWRESERVEX", std::bind(exec_reserve_raw, _1, 1))) .insert(OpcodeInstr::mksimple(0xfb04, 16, "SETCODE", exec_set_code)) .insert(OpcodeInstr::mksimple(0xfb06, 16, "SETLIBCODE", exec_set_lib_code)) - .insert(OpcodeInstr::mksimple(0xfb07, 16, "CHANGELIB", exec_change_lib)); + .insert(OpcodeInstr::mksimple(0xfb07, 16, "CHANGELIB", exec_change_lib)) + .insert(OpcodeInstr::mksimple(0xfb08, 16, "SENDMSG", exec_send_message)->require_version(4)); } void register_ton_ops(OpcodeTable& cp0) { diff --git a/crypto/vm/tupleops.cpp b/crypto/vm/tupleops.cpp index ef906f6a..f4be2c76 100644 --- a/crypto/vm/tupleops.cpp +++ b/crypto/vm/tupleops.cpp @@ -99,7 +99,7 @@ int exec_mktuple_var(VmState* st) { int exec_tuple_index_common(Stack& stack, unsigned n) { auto tuple = stack.pop_tuple_range(255); - stack.push(tuple_index(*tuple, n)); + stack.push(tuple_index(tuple, n)); return 0; } @@ -322,11 +322,11 @@ int exec_tuple_index2(VmState* st, unsigned args) { VM_LOG(st) << "execute INDEX2 " << i << "," << j; Stack& stack = st->get_stack(); auto tuple = stack.pop_tuple_range(255); - auto t1 = tuple_index(*tuple, i).as_tuple_range(255); + auto t1 = tuple_index(tuple, i).as_tuple_range(255); if (t1.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } - stack.push(tuple_index(*t1, j)); + stack.push(tuple_index(t1, j)); return 0; } @@ -342,15 +342,15 @@ int exec_tuple_index3(VmState* st, unsigned args) { VM_LOG(st) << "execute INDEX3 " << i << "," << j << "," << k; Stack& stack = st->get_stack(); auto tuple = stack.pop_tuple_range(255); - auto t1 = tuple_index(*tuple, i).as_tuple_range(255); + auto t1 = tuple_index(tuple, i).as_tuple_range(255); if (t1.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } - auto t2 = tuple_index(*t1, j).as_tuple_range(255); + auto t2 = tuple_index(t1, j).as_tuple_range(255); if (t2.is_null()) { throw VmError{Excno::type_chk, "intermediate value is not a tuple"}; } - stack.push(tuple_index(*t2, k)); + stack.push(tuple_index(t2, k)); return 0; } diff --git a/crypto/vm/vm.cpp b/crypto/vm/vm.cpp index fbea1952..630f4991 100644 --- a/crypto/vm/vm.cpp +++ b/crypto/vm/vm.cpp @@ -389,7 +389,7 @@ int VmState::throw_exception(int excno) { stack_ref.push_smallint(0); stack_ref.push_smallint(excno); code.clear(); - gas.consume_chk(exception_gas_price); + consume_gas_chk(exception_gas_price); return jump(get_c2()); } @@ -399,7 +399,7 @@ int VmState::throw_exception(int excno, StackEntry&& arg) { stack_ref.push(std::move(arg)); stack_ref.push_smallint(excno); code.clear(); - gas.consume_chk(exception_gas_price); + consume_gas_chk(exception_gas_price); return jump(get_c2()); } @@ -453,54 +453,41 @@ int VmState::step() { VM_LOG(this) << "execute implicit JMPREF"; auto ref_cell = code->prefetch_ref(); VM_LOG_MASK(this, vm::VmLog::ExecLocation) << "code cell hash: " << ref_cell->get_hash().to_hex() << " offset: 0"; - gas.consume_chk(implicit_jmpref_gas_price); + consume_gas_chk(implicit_jmpref_gas_price); Ref cont = Ref{true, load_cell_slice_ref(std::move(ref_cell)), get_cp()}; return jump(std::move(cont)); } else { VM_LOG(this) << "execute implicit RET"; - gas.consume_chk(implicit_ret_gas_price); + consume_gas_chk(implicit_ret_gas_price); return ret(); } } -int VmState::run() { - if (code.is_null() || stack.is_null()) { - // throw VmError{Excno::fatal, "cannot run an uninitialized VM"}; - return (int)Excno::fatal; // no ~ for unhandled exceptions - } +int VmState::run_inner() { int res; Guard guard(this); do { try { try { - try { - res = step(); - VM_LOG_MASK(this, vm::VmLog::GasRemaining) << "gas remaining: " << gas.gas_remaining; - gas.check(); - } catch (vm::CellBuilder::CellWriteError) { - throw VmError{Excno::cell_ov}; - } catch (vm::CellBuilder::CellCreateError) { - throw VmError{Excno::cell_ov}; - } catch (vm::CellSlice::CellReadError) { - throw VmError{Excno::cell_und}; - } - } catch (const VmError& vme) { - VM_LOG(this) << "handling exception code " << vme.get_errno() << ": " << vme.get_msg(); - try { - ++steps; - res = throw_exception(vme.get_errno()); - } catch (const VmError& vme2) { - VM_LOG(this) << "exception " << vme2.get_errno() << " while handling exception: " << vme.get_msg(); - return ~vme2.get_errno(); - } + res = step(); + VM_LOG_MASK(this, vm::VmLog::GasRemaining) << "gas remaining: " << gas.gas_remaining; + gas.check(); + } catch (vm::CellBuilder::CellWriteError) { + throw VmError{Excno::cell_ov}; + } catch (vm::CellBuilder::CellCreateError) { + throw VmError{Excno::cell_ov}; + } catch (vm::CellSlice::CellReadError) { + throw VmError{Excno::cell_und}; + } + } catch (const VmError& vme) { + VM_LOG(this) << "handling exception code " << vme.get_errno() << ": " << vme.get_msg(); + try { + ++steps; + res = throw_exception(vme.get_errno()); + } catch (const VmError& vme2) { + VM_LOG(this) << "exception " << vme2.get_errno() << " while handling exception: " << vme.get_msg(); + return ~vme2.get_errno(); } - } catch (VmNoGas vmoog) { - ++steps; - VM_LOG(this) << "unhandled out-of-gas exception: gas consumed=" << gas.gas_consumed() - << ", limit=" << gas.gas_limit; - get_stack().clear(); - get_stack().push_smallint(gas.gas_consumed()); - return vmoog.get_errno(); // no ~ for unhandled exceptions (to make their faking impossible) } } while (!res); if ((res | 1) == -1 && !try_commit()) { @@ -512,6 +499,34 @@ int VmState::run() { return res; } +int VmState::run() { + if (code.is_null() || stack.is_null()) { + // throw VmError{Excno::fatal, "cannot run an uninitialized VM"}; + return (int)Excno::fatal; // no ~ for unhandled exceptions + } + int res = 0; + bool restore_parent = false; + while (true) { + try { + if (restore_parent) { + restore_parent_vm(~res); + } + res = run_inner(); + } catch (VmNoGas &vmoog) { + ++steps; + VM_LOG(this) << "unhandled out-of-gas exception: gas consumed=" << gas.gas_consumed() + << ", limit=" << gas.gas_limit; + get_stack().clear(); + get_stack().push_smallint(gas.gas_consumed()); + res = vmoog.get_errno(); // no ~ for unhandled exceptions (to make their faking impossible) + } + if (!parent) { + return res; + } + restore_parent = true; + } +} + bool VmState::try_commit() { if (cr.d[0].not_null() && cr.d[1].not_null() && cr.d[0]->get_depth() <= max_data_depth && cr.d[1]->get_depth() <= max_data_depth && cr.d[0]->get_level() == 0 && cr.d[1]->get_level() == 0) { @@ -544,7 +559,8 @@ ControlRegs* force_cregs(Ref& cont) { } int run_vm_code(Ref code, Ref& stack, int flags, Ref* data_ptr, VmLog log, long long* steps, - GasLimits* gas_limits, std::vector> libraries, Ref init_c7, Ref* actions_ptr) { + GasLimits* gas_limits, std::vector> libraries, Ref init_c7, Ref* actions_ptr, + int global_version) { VmState vm{code, std::move(stack), gas_limits ? *gas_limits : GasLimits{}, @@ -553,6 +569,7 @@ int run_vm_code(Ref code, Ref& stack, int flags, Ref* da log, std::move(libraries), std::move(init_c7)}; + vm.set_global_version(global_version); int res = vm.run(); stack = vm.get_stack_ref(); if (vm.committed() && data_ptr) { @@ -582,12 +599,13 @@ int run_vm_code(Ref code, Ref& stack, int flags, Ref* da } int run_vm_code(Ref code, Stack& stack, int flags, Ref* data_ptr, VmLog log, long long* steps, - GasLimits* gas_limits, std::vector> libraries, Ref init_c7, Ref* actions_ptr) { + GasLimits* gas_limits, std::vector> libraries, Ref init_c7, Ref* actions_ptr, + int global_version) { Ref stk{true}; stk.unique_write().set_contents(std::move(stack)); stack.clear(); int res = run_vm_code(code, stk, flags, data_ptr, log, steps, gas_limits, std::move(libraries), std::move(init_c7), - actions_ptr); + actions_ptr, global_version); CHECK(stack.is_unique()); if (stk.is_null()) { stack.clear(); @@ -608,7 +626,7 @@ int run_vm_code(Ref code, Stack& stack, int flags, Ref* data_pt Ref VmState::load_library(td::ConstBitPtr hash) { std::unique_ptr tmp_ctx; // install temporary dummy vm state interface to prevent charging for cell load operations during library lookup - VmStateInterface::Guard(tmp_ctx.get()); + VmStateInterface::Guard guard{global_version >= 4 ? tmp_ctx.get() : VmStateInterface::get()}; for (const auto& lib_collection : libraries) { auto lib = lookup_library_in(hash, lib_collection); if (lib.not_null()) { @@ -632,9 +650,6 @@ void VmState::register_cell_load(const CellHash& cell_hash) { consume_gas(cell_load_gas_price); } else { auto ok = loaded_cells.insert(cell_hash); // check whether this is the first time this cell is loaded - if (ok.second) { - loaded_cells_count++; - } consume_gas(ok.second ? cell_load_gas_price : cell_reload_gas_price); } } @@ -681,4 +696,78 @@ Ref lookup_library_in(td::ConstBitPtr key, Ref lib_root) { return lookup_library_in(key, dict); } +void VmState::run_child_vm(VmState&& new_state, bool return_data, bool return_actions, bool return_gas, + bool isolate_gas, int ret_vals) { + new_state.log = std::move(log); + new_state.libraries = std::move(libraries); + new_state.stack_trace = stack_trace; + new_state.max_data_depth = max_data_depth; + if (!isolate_gas) { + new_state.loaded_cells = std::move(loaded_cells); + } else { + consume_gas(std::min(chksgn_counter, chksgn_free_count) * chksgn_gas_price); + chksgn_counter = 0; + } + new_state.chksgn_counter = chksgn_counter; + + auto new_parent = std::make_unique(); + new_parent->return_data = return_data; + new_parent->return_actions = return_actions; + new_parent->return_gas = return_gas; + new_parent->isolate_gas = isolate_gas; + new_parent->ret_vals = ret_vals; + new_parent->state = std::move(*this); + new_state.parent = std::move(new_parent); + *this = std::move(new_state); +} + +void VmState::restore_parent_vm(int res) { + auto parent = std::move(this->parent); + CHECK(parent); + VmState child_state = std::move(*this); + *this = std::move(parent->state); + log = std::move(child_state.log); + libraries = std::move(child_state.libraries); + steps += child_state.steps; + if (!parent->isolate_gas) { + loaded_cells = std::move(child_state.loaded_cells); + } + chksgn_counter = child_state.chksgn_counter; + VM_LOG(this) << "Child VM finished. res: " << res << ", steps: " << child_state.steps + << ", gas: " << child_state.gas_consumed(); + + consume_gas(std::min(child_state.gas_consumed(), child_state.gas.gas_limit + 1)); + Stack& cur_stack = get_stack(); + int ret_cnt; + if (res == 0 || res == 1) { + if (parent->ret_vals >= 0) { + if (child_state.stack->depth() >= parent->ret_vals) { + ret_cnt = parent->ret_vals; + } else { + ret_cnt = 0; + res = ~(int)Excno::stk_und; + cur_stack.push(td::zero_refint()); + } + } else { + ret_cnt = child_state.stack->depth(); + } + } else { + ret_cnt = std::min(child_state.stack->depth(), 1); + } + consume_stack_gas(ret_cnt); + for (int i = ret_cnt - 1; i >= 0; --i) { + cur_stack.push(std::move(child_state.stack->at(i))); + } + cur_stack.push_smallint(res); + if (parent->return_data) { + cur_stack.push_cell(child_state.get_committed_state().c4); + } + if (parent->return_actions) { + cur_stack.push_cell(child_state.get_committed_state().c5); + } + if (parent->return_gas) { + cur_stack.push_smallint(child_state.gas.gas_consumed()); + } +} + } // namespace vm diff --git a/crypto/vm/vm.h b/crypto/vm/vm.h index 17ce1aa3..c8649477 100644 --- a/crypto/vm/vm.h +++ b/crypto/vm/vm.h @@ -80,6 +80,8 @@ struct CommittedState { bool committed{false}; }; +struct ParentVmState; + class VmState final : public VmStateInterface { Ref code; Ref stack; @@ -93,11 +95,13 @@ class VmState final : public VmStateInterface { GasLimits gas; std::vector> libraries; td::HashSet loaded_cells; - td::int64 loaded_cells_count{0}; int stack_trace{0}, debug_off{0}; bool chksig_always_succeed{false}; td::ConstBitPtr missing_library{0}; td::uint16 max_data_depth = 512; // Default value + int global_version{0}; + size_t chksgn_counter = 0; + std::unique_ptr parent = nullptr; public: enum { @@ -109,7 +113,51 @@ class VmState final : public VmStateInterface { implicit_jmpref_gas_price = 10, implicit_ret_gas_price = 5, free_stack_depth = 32, - stack_entry_gas_price = 1 + stack_entry_gas_price = 1, + runvm_gas_price = 40, + hash_ext_entry_gas_price = 1, + + rist255_mul_gas_price = 2000, + rist255_mulbase_gas_price = 750, + rist255_add_gas_price = 600, + rist255_fromhash_gas_price = 600, + rist255_validate_gas_price = 200, + + ecrecover_gas_price = 1500, + chksgn_free_count = 10, + chksgn_gas_price = 4000, + p256_chksgn_gas_price = 3500, + + bls_verify_gas_price = 61300, + bls_aggregate_base_gas_price = -2645, + bls_aggregate_element_gas_price = 4355, + bls_fast_aggregate_verify_base_gas_price = 58400, + bls_fast_aggregate_verify_element_gas_price = 2990, + bls_aggregate_verify_base_gas_price = 37275, + bls_aggregate_verify_element_gas_price = 22290, + + bls_g1_add_sub_gas_price = 3925, + bls_g1_neg_gas_price = 765, + bls_g1_mul_gas_price = 5180, + bls_map_to_g1_gas_price = 2330, + bls_g1_in_group_gas_price = 2930, + + bls_g2_add_sub_gas_price = 6100, + bls_g2_neg_gas_price = 1550, + bls_g2_mul_gas_price = 10530, + bls_map_to_g2_gas_price = 7970, + bls_g2_in_group_gas_price = 4255, + + // multiexp gas = base + n * coef1 + n/floor(max(log2(n), 4)) * coef2 + bls_g1_multiexp_base_gas_price = 11375, + bls_g1_multiexp_coef1_gas_price = 630, + bls_g1_multiexp_coef2_gas_price = 8820, + bls_g2_multiexp_base_gas_price = 30388, + bls_g2_multiexp_coef1_gas_price = 1280, + bls_g2_multiexp_coef2_gas_price = 22840, + + bls_pairing_base_gas_price = 20000, + bls_pairing_element_gas_price = 11770 }; VmState(); VmState(Ref _code); @@ -122,9 +170,9 @@ class VmState final : public VmStateInterface { : VmState(convert_code_cell(std::move(code_cell)), std::forward(args)...) { } VmState(const VmState&) = delete; - VmState(VmState&&) = delete; + VmState(VmState&&) = default; VmState& operator=(const VmState&) = delete; - VmState& operator=(VmState&&) = delete; + VmState& operator=(VmState&&) = default; bool set_gas_limits(long long _max, long long _limit, long long _credit = 0); bool final_gas_ok() const { return gas.final_ok(); @@ -138,8 +186,15 @@ class VmState final : public VmStateInterface { const CommittedState& get_committed_state() const { return cstate; } + void consume_gas_chk(long long amount) { + gas.consume_chk(amount); + } void consume_gas(long long amount) { - gas.consume(amount); + if (global_version >= 4) { + gas.consume_chk(amount); + } else { + gas.consume(amount); + } } void consume_tuple_gas(unsigned tuple_len) { consume_gas(tuple_len * tuple_entry_gas_price); @@ -283,6 +338,12 @@ class VmState final : public VmStateInterface { void preclear_cr(const ControlRegs& save) { cr &= save; } + int get_global_version() const { + return global_version; + } + void set_global_version(int version) { + global_version = version; + } int call(Ref cont); int call(Ref cont, int pass_args, int ret_args = -1); int jump(Ref cont); @@ -328,17 +389,36 @@ class VmState final : public VmStateInterface { void set_max_data_depth(td::uint16 depth) { max_data_depth = depth; } + void run_child_vm(VmState&& new_state, bool return_data, bool return_actions, bool return_gas, bool isolate_gas, + int ret_vals); + void restore_parent_vm(int res); + + void register_chksgn_call() { + if (global_version >= 4) { + ++chksgn_counter; + if (chksgn_counter > chksgn_free_count) { + consume_gas(chksgn_gas_price); + } + } + } private: void init_cregs(bool same_c3 = false, bool push_0 = true); + int run_inner(); +}; + +struct ParentVmState { + VmState state; + bool return_data, return_actions, return_gas, isolate_gas; + int ret_vals; }; int run_vm_code(Ref _code, Ref& _stack, int flags = 0, Ref* data_ptr = nullptr, VmLog log = {}, long long* steps = nullptr, GasLimits* gas_limits = nullptr, std::vector> libraries = {}, - Ref init_c7 = {}, Ref* actions_ptr = nullptr); + Ref init_c7 = {}, Ref* actions_ptr = nullptr, int global_version = 0); int run_vm_code(Ref _code, Stack& _stack, int flags = 0, Ref* data_ptr = nullptr, VmLog log = {}, long long* steps = nullptr, GasLimits* gas_limits = nullptr, std::vector> libraries = {}, - Ref init_c7 = {}, Ref* actions_ptr = nullptr); + Ref init_c7 = {}, Ref* actions_ptr = nullptr, int global_version = 0); Ref lookup_library_in(td::ConstBitPtr key, Ref lib_root); diff --git a/doc/GlobalVersions.md b/doc/GlobalVersions.md new file mode 100644 index 00000000..ccfca940 --- /dev/null +++ b/doc/GlobalVersions.md @@ -0,0 +1,39 @@ +# Global versions +Global version is a parameter specified in `ConfigParam 8` ([block.tlb](https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb#L595)). +Various features are enabled depending on the global version. + +## Version 4 + +### New TVM instructions +* `PREVMCBLOCKS`, `PREVKEYBLOCK` +* `GLOBALID` +* `HASHEXT(A)(R)` +* `ECRECOVER` +* `SENDMSG` +* `RUNVM`, `RUNVMX` +* `GASCONSUMED` +* `RIST255_...` instructions +* `BLS_...` instructions +* `P256_CHKSIGNS`, `P256_CHKSIGNU` + +### Division +[Division instruction](https://ton.org/docs/learn/tvm-instructions/instructions#52-division) can add a number to the +intermediate value before division (e.g. `(xy+w)/z`). + +### Stack operations +* Arguments of `PICK`, `ROLL`, `ROLLREV`, `BLKSWX`, `REVX`, `DROPX`, `XCHGX`, `CHKDEPTH`, `ONLYTOPX`, `ONLYX` are now unlimited. +* `ROLL`, `ROLLREV`, `BLKSWX`, `REVX`, `ONLYTOPX` consume more gas when arguments are big. + +### c7 tuple +**c7** tuple extended from 10 to 14 elements: +* **10**: code of the smart contract. +* **11**: value of the incoming message. +* **12**: fees collected in the storage phase. +* **13**: information about previous blocks. + +### Action phase +* If "send message" action fails, the account is required to pay for processing cells of the message. +* Flag +16 in actions "Send message", "Reserve", "Change library" causes bounce if action fails. + +### Storage phase +* Unpaid storage fee is now saved to `due_payment` \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 38ea6267..595b4d87 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ FROM ubuntu:20.04 as builder RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential cmake clang-6.0 openssl libmicrohttpd-dev pkg-config libssl-dev zlib1g-dev gperf wget git ninja-build && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential cmake clang-6.0 openssl libssl-dev zlib1g-dev gperf wget git ninja-build libsecp256k1-dev libsodium-dev libmicrohttpd-dev pkg-config && \ rm -rf /var/lib/apt/lists/* ENV CC clang-6.0 ENV CXX clang++-6.0 diff --git a/emulator/CMakeLists.txt b/emulator/CMakeLists.txt index 1389050c..c23f071c 100644 --- a/emulator/CMakeLists.txt +++ b/emulator/CMakeLists.txt @@ -63,3 +63,5 @@ if (USE_EMSCRIPTEN) endif() target_compile_options(emulator-emscripten PRIVATE -fexceptions) endif() + +install(TARGETS emulator LIBRARY DESTINATION lib) diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index c5717dcd..0ffc316a 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -336,6 +336,33 @@ bool transaction_emulator_set_debug_enabled(void *transaction_emulator, bool deb return true; } +bool transaction_emulator_set_prev_blocks_info(void *transaction_emulator, const char* info_boc) { + auto emulator = static_cast(transaction_emulator); + + if (info_boc != nullptr) { + auto info_cell = boc_b64_to_cell(info_boc); + if (info_cell.is_error()) { + LOG(ERROR) << "Can't deserialize previous blocks boc: " << info_cell.move_as_error(); + return false; + } + vm::StackEntry info_value; + if (!info_value.deserialize(info_cell.move_as_ok())) { + LOG(ERROR) << "Can't deserialize previous blocks tuple"; + return false; + } + if (info_value.is_null()) { + emulator->set_prev_blocks_info({}); + } else if (info_value.is_tuple()) { + emulator->set_prev_blocks_info(info_value.as_tuple()); + } else { + LOG(ERROR) << "Can't set previous blocks tuple: not a tuple"; + return false; + } + } + + return true; +} + void transaction_emulator_destroy(void *transaction_emulator) { delete static_cast(transaction_emulator); } diff --git a/emulator/emulator-extern.h b/emulator/emulator-extern.h index c2b0bf9a..4409608f 100644 --- a/emulator/emulator-extern.h +++ b/emulator/emulator-extern.h @@ -72,6 +72,14 @@ EMULATOR_EXPORT bool transaction_emulator_set_libs(void *transaction_emulator, c */ EMULATOR_EXPORT bool transaction_emulator_set_debug_enabled(void *transaction_emulator, bool debug_enabled); +/** + * @brief Set tuple of previous blocks (13th element of c7) + * @param transaction_emulator Pointer to TransactionEmulator object + * @param info_boc Base64 encoded BoC serialized TVM tuple (VmStackValue). + * @return true in case of success, false in case of error + */ +EMULATOR_EXPORT bool transaction_emulator_set_prev_blocks_info(void *transaction_emulator, const char* info_boc); + /** * @brief Emulate transaction * @param transaction_emulator Pointer to TransactionEmulator object diff --git a/emulator/emulator_export_list b/emulator/emulator_export_list index 950c57a0..acd79df8 100644 --- a/emulator/emulator_export_list +++ b/emulator/emulator_export_list @@ -6,6 +6,7 @@ _transaction_emulator_set_ignore_chksig _transaction_emulator_set_config _transaction_emulator_set_libs _transaction_emulator_set_debug_enabled +_transaction_emulator_set_prev_blocks_info _transaction_emulator_emulate_transaction _transaction_emulator_emulate_tick_tock_transaction _transaction_emulator_destroy diff --git a/emulator/transaction-emulator.cpp b/emulator/transaction-emulator.cpp index 7c8ade62..505c0c37 100644 --- a/emulator/transaction-emulator.cpp +++ b/emulator/transaction-emulator.cpp @@ -25,7 +25,7 @@ td::Result> TransactionEmu utime = (unsigned)std::time(nullptr); } - auto fetch_res = block::FetchConfigParams::fetch_config_params(config_, &old_mparams, + auto fetch_res = block::FetchConfigParams::fetch_config_params(config_, prev_blocks_info_, &old_mparams, &storage_prices, &storage_phase_cfg, &rand_seed_, &compute_phase_cfg, &action_phase_cfg, &masterchain_create_fee, @@ -261,4 +261,8 @@ void TransactionEmulator::set_debug_enabled(bool debug_enabled) { debug_enabled_ = debug_enabled; } +void TransactionEmulator::set_prev_blocks_info(td::Ref prev_blocks_info) { + prev_blocks_info_ = std::move(prev_blocks_info); +} + } // namespace emulator diff --git a/emulator/transaction-emulator.h b/emulator/transaction-emulator.h index b26f4e8a..8186a3c4 100644 --- a/emulator/transaction-emulator.h +++ b/emulator/transaction-emulator.h @@ -17,9 +17,10 @@ class TransactionEmulator { td::BitArray<256> rand_seed_; bool ignore_chksig_; bool debug_enabled_; + td::Ref prev_blocks_info_; public: - TransactionEmulator(block::Config&& config, int vm_log_verbosity = 0) : + TransactionEmulator(block::Config&& config, int vm_log_verbosity = 0) : config_(std::move(config)), libraries_(256), vm_log_verbosity_(vm_log_verbosity), unixtime_(0), lt_(0), rand_seed_(td::BitArray<256>::zero()), ignore_chksig_(false), debug_enabled_(false) { } @@ -35,7 +36,7 @@ public: struct EmulationSuccess: EmulationResult { td::Ref transaction; block::Account account; - td::Ref actions; + td::Ref actions; EmulationSuccess(td::Ref transaction_, block::Account account_, std::string vm_log_, td::Ref actions_, double elapsed_time_) : EmulationResult(vm_log_, elapsed_time_), transaction(transaction_), account(account_) , actions(actions_) @@ -45,8 +46,8 @@ public: struct EmulationExternalNotAccepted: EmulationResult { int vm_exit_code; - EmulationExternalNotAccepted(std::string vm_log_, int vm_exit_code_, double elapsed_time_) : - EmulationResult(vm_log_, elapsed_time_), vm_exit_code(vm_exit_code_) + EmulationExternalNotAccepted(std::string vm_log_, int vm_exit_code_, double elapsed_time_) : + EmulationResult(vm_log_, elapsed_time_), vm_exit_code(vm_exit_code_) {} }; @@ -76,6 +77,7 @@ public: void set_config(block::Config &&config); void set_libs(vm::Dictionary &&libs); void set_debug_enabled(bool debug_enabled); + void set_prev_blocks_info(td::Ref prev_blocks_info); private: bool check_state_update(const block::Account& account, const block::gen::Transaction::Record& trans); diff --git a/example/android/CMakeLists.txt b/example/android/CMakeLists.txt index fc8067dd..b9651f61 100644 --- a/example/android/CMakeLists.txt +++ b/example/android/CMakeLists.txt @@ -37,9 +37,6 @@ add_subdirectory(${TON_DIR} ton EXCLUDE_FROM_ALL) target_link_libraries(native-lib tonlibjson) target_link_libraries(native-lib tonlib) -#target_sources(native-lib PRIVATE ${ALL_TEST_SOURCE}) -#target_link_libraries(native-lib all_tests) - set(TONLIB_API_JAVA_PACKAGE "drinkless/org/ton") target_compile_definitions(native-lib PRIVATE PACKAGE_NAME="${TONLIB_API_JAVA_PACKAGE}") diff --git a/example/android/README.md b/example/android/README.md index 0d10ff1e..f17ba9d2 100644 --- a/example/android/README.md +++ b/example/android/README.md @@ -16,6 +16,10 @@ export JAVA_INCLUDE_PATH2=${JAVA_HOME}/include/linux export ANDROID_NDK_ROOT=$(pwd)/android-ndk-r25b export OPENSSL_DIR=$(pwd)/example/android/third_party/crypto +export SECP256K1_INCLUDE_DIR=$(pwd)/example/android/third_party/secp256k1/include +export SECP256K1_LIBRARY=$(pwd)/example/android/third_party/secp256k1/.libs/libsecp256k1.a +export SODIUM_INCLUDE_DIR=$(pwd)/example/android/third_party/libsodium/libsodium-android-westmere/include +export SODIUM_LIBRARY=$(pwd)/example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a rm -rf example/android/src/drinkless/org/ton/TonApi.java cd example/android/ diff --git a/example/android/build-all.sh b/example/android/build-all.sh index e1abc469..f436e361 100755 --- a/example/android/build-all.sh +++ b/example/android/build-all.sh @@ -1,5 +1,16 @@ #!/bin/bash +echo Building tonlib for x86... +echo ARCH="x86" ./build.sh || exit 1 + +echo Building tonlib for x86_64... +echo ARCH="x86_64" ./build.sh || exit 1 + +echo Building tonlib for arm... +echo ARCH="arm" ./build.sh || exit 1 + +echo Building tonlib for arm64... +echo ARCH="arm64" ./build.sh || exit 1 diff --git a/example/android/build.sh b/example/android/build.sh index 61681da2..8cecfa41 100755 --- a/example/android/build.sh +++ b/example/android/build.sh @@ -1,43 +1,62 @@ #!/bin/bash + pushd . -# ANDROID_TOOLCHAIN -# ANDROID_ABI -# ANDROID_PLATFORM -# ANDROID_STL -# ANDROID_PIE -# ANDROID_CPP_FEATURES -# ANDROID_ALLOW_UNDEFINED_SYMBOLS -# ANDROID_ARM_MODE -# ANDROID_ARM_NEON -# ANDROID_DISABLE_FORMAT_STRING_CHECKS -# ANDROID_CCACHE + +SECP256K1_INCLUDE_DIR=$(pwd)/third_party/secp256k1/include +OPENSSL_DIR=$(pwd)/third_party/crypto/ if [ $ARCH == "arm" ] then ABI="armeabi-v7a" + SODIUM_INCLUDE_DIR=$(pwd)/third_party/libsodium/libsodium-android-armv7-a/include + SODIUM_LIBRARY_RELEASE=$(pwd)/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.a + SECP256K1_LIBRARY=$(pwd)/third_party/secp256k1/armv7/libsecp256k1.a + BLST_LIBRARY=$(pwd)/third_party/blst/armv7/libblst.a elif [ $ARCH == "x86" ] then ABI=$ARCH + SODIUM_INCLUDE_DIR=$(pwd)/third_party/libsodium/libsodium-android-i686/include + SODIUM_LIBRARY_RELEASE=$(pwd)/third_party/libsodium/libsodium-android-i686/lib/libsodium.a + SECP256K1_LIBRARY=$(pwd)/third_party/secp256k1/i686/libsecp256k1.a + BLST_LIBRARY=$(pwd)/third_party/blst/i686/libblst.a + TARGET=i686-linux-android21 elif [ $ARCH == "x86_64" ] then ABI=$ARCH + SODIUM_INCLUDE_DIR=$(pwd)/third_party/libsodium/libsodium-android-westmere/include + SODIUM_LIBRARY_RELEASE=$(pwd)/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a + SECP256K1_LIBRARY=$(pwd)/third_party/secp256k1/x86-64/libsecp256k1.a + BLST_LIBRARY=$(pwd)/third_party/blst/x86-64/libblst.a elif [ $ARCH == "arm64" ] then ABI="arm64-v8a" + SODIUM_INCLUDE_DIR=$(pwd)/third_party/libsodium/libsodium-android-armv8-a/include + SODIUM_LIBRARY_RELEASE=$(pwd)/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.a + SECP256K1_LIBRARY=$(pwd)/third_party/secp256k1/armv8/libsecp256k1.a + BLST_LIBRARY=$(pwd)/third_party/blst/armv8/libblst.a fi + ARCH=$ABI -echo $ABI mkdir -p build-$ARCH cd build-$ARCH +cmake .. -GNinja -DPORTABLE=1 \ +-DANDROID_ABI=x86 -DANDROID_PLATFORM=android-32 -DANDROID_NDK=${ANDROID_NDK_ROOT} \ +-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake \ +-DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=${ABI} \ +-DOPENSSL_ROOT_DIR=${OPENSSL_DIR}/${ARCH} -DTON_ARCH="" \ +-DTON_ONLY_TONLIB=ON \ +-DSECP256K1_INCLUDE_DIR=${SECP256K1_INCLUDE_DIR} -DSECP256K1_LIBRARY=${SECP256K1_LIBRARY} \ +-DSODIUM_INCLUDE_DIR=${SODIUM_INCLUDE_DIR} -DSODIUM_LIBRARY_RELEASE=${SODIUM_LIBRARY_RELEASE} \ +-DSODIUM_USE_STATIC_LIBS=1 \ +-DBLST_LIB=${BLST_LIBRARY} || exit 1 -cmake .. -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -GNinja -DANDROID_ABI=${ABI} -DOPENSSL_ROOT_DIR=${OPENSSL_DIR}/${ARCH} -DTON_ARCH="" -DTON_ONLY_TONLIB=ON -DBUILD_SHARED_LIBS=OFF || exit 1 ninja native-lib || exit 1 popd +$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip build-$ARCH/libnative-lib.so + mkdir -p libs/$ARCH/ cp build-$ARCH/libnative-lib.so* libs/$ARCH/ - - diff --git a/example/android/third_party/blst/armv7/libblst.a b/example/android/third_party/blst/armv7/libblst.a new file mode 100644 index 0000000000000000000000000000000000000000..d9e8ff8d15b9c7935a3a85e88c38905b827c7bc2 GIT binary patch literal 287466 zcmeFa4Rl=9l_q+sRHZ+c?F$i!8q{zN0yK_-uZ=pbm-cF|X&Dq-2?aRdByMzNOIUVf zyRZcj-JVWK)}Pf9E)xR|v2i8io_6!RCQgsj?anyemBce)vPffkoHe|DdGFm@<%$fQ z1$v1lk2epR_kHK5bXAre$V|WW)~wcAN4L)2=l|@p_dfglEnD5SdrR-{)~>MU|2ZMA z`W^mn+aF)m@^KZ!s}&-$ScvOC@z3s`+u)yR;Gb#W{nEhZzCHb&U+8&qYtK$`cgKS( zS9RXmy0UY3`1b=3h)}4`C+?i@ZRz~2`2g+h?%BQViJs0KU3>a_c6at{ORc)|P90UF zw)Af6>z=md+KtdEgPws@*Us+F9X)&YbZzbF9N5vV z;Hj0JTXyzr75vw^V^=q-&=RUZvJ~pk-Me;lZtvQ%YxB0Qoh4}huFkGUAKkXIrv#DV z%3#Xdxocx_H5nhbf)^BL=I(fOF>N3$9I-MbN&0kK&X98|DpojJqzUB z-7WS!zWMUXpaFL6?(E+6_~yR3rem{|w_G@2IkGJJwmqFak3HVir@CU#7dp{7sV{VH z+u6BwWvIyauG9gxZQW_`tLDd9r6b99*rUQJm=1{Q?s&YfUu@~^0j;qsL3t$-K(i6v zgHC23)0(;?<`)ww0kCc7qorUNO+CB2`gdu2P7_j;<6N z2hAeO)`M>D?g>MByY}>k{Vb(y#`3y^fUDF%QXy7#&L1ymh!VYp>E~Y4psSdjDynV? zokST-*QPXDOm>$6Otnkn#e^)U(p9E?OSFF32pK39sT9Vf78)W3booF)78nQyPcknj zei@>?{__HsBj*u6i1W(CZ-_fY?`8<-F*1*~=h3?km|7Jk=TZ2o z&T^6sN1UVZ67=%mVOmD=rmI7AZzx>XJw)LeQljuV0wjgc`E;To;G-!>xIK^URvjsQ zTb|s~x2u2Gj%{1Y5TN%^FjD{KCp!n8beunMLhvoSc5Z)sYgfN!filT$JD=#;y(bL8 zNZQ=9bKB#4AP-Za*z=oNMcxBB5{_H)A%$)TE;TF}Hk44fId^R9>x0Pc+qKJNwQXlt zUnj(;iU1kHG4ObQPiG&*-W~-F#R`LUg*vzH-u1YN-?eS`ww+r$!+EAOY}?LlhFfaL z)}H>(?mcC|uB}^l_psHcA)~7>m%zL- zmxa2#Gz$ipOU#s}JlL)sJIWhzN6+r9M#$)=Gr18E#?C?-IajdVZl-c)nT{n+TGKs3R_m|1u!ML=77|M^Jt13Xb*IQ z-92JU|D0#OUh*hdiHy{}?FkN7@Vu~&M)X`Vl9@B%`NOrd=kYCl;dL733@pQp+H0ZonPF%t$$BvXfV$kk5>w%yM8`;&lYGaTYBe@ z=y^eOv{mmb?<<8`Fp&lGo|i&dkyG1Jsh*u%!QmE+iemR~>jPsk!LAg&tTd(Y3nz;b zEtsq+X(_tk0GE3Co>Uj4fK)3%lb69t;W%9>1)zsYgHcG0>P_X8F+kLJmXPxRj2W7E zFhXfYL=RKN>}8(1%hbzZbCVLr+TGK=MHPL%kGbuho90O5oL5$9Zjz#=WFehQ0tRHQ zcaoY_4tKWR8E%MG19GIRaaXD{2Y(2}oH*F;gwWctd5?IaXA8%~qdlN!)x&yD*}G*| zN^?pL=_#>UGwqZ?bfdP)9GQH1D-Re*DM$&jvNP2OA-~PU9VqoB5<-3F=25EhX8txH z9(#OOf9LL=9i1yzwa$4y-lFR8=QQ?AYA*W;4d{@vR)W0JE++_9&BcYoJre4pIG@B9Ay2trnbLU-f$?IFJ@ z0>5;X8mHAAR@8QkVK;ajA637=KpB$6l{KHI=u{e=0BBY@s^$)nd%Y zH#zmXaIyvAP8I+0z4!j1`uzI5HTj)OGxvS$^#+80^8ff$zR8*@+Twx2?1zpOo9(G$ z#5&;rsJ3hNmE~Qtt=3fjN40D4d(A9LfEBF=3tZZ&v%Xr4i~9>$>iV{@kiL~J#^9>q z5^xq=9b7$J10C|6Iq;oJOpj?KP`-`HseHBl)ndfSMwp)Mj^yiXQDLRNS`=ba!OD!} z6RB(@hJ0F_sbXVls#uSDSYoPp3(D{xmmWabvxT>6z1bh)cihPaZ!Py`g~%2LYkv>l z;bIIvxWG-9LZnv)JVQbjL1Hy18xSt8}PMJcE)8I%iQ%v$5!#0G_2WH z=`OR@=NTq~^q6jghd9Wm5-|E3#nGaJIwzd37Ax&+Adq$h^<5^WUa!_+4zHO)owJ1_ z{32`?-{Wv6;7-Dwf;$a&2JS3e4(=S>OK>m4ork*sC+v;WE1Yz`!uft7B3yh&{7BtU z;D}Vgy=GtWm+!rIeYKY@R3TsCO%A@-xLLxJ1& z0)Fqq?=jgILX6_~1l&_W#CAbj-wU!!*)GXKlMuC$1ZV_pNg7!L8cAdnjntzZg$tU6 zV|x$Py0i34I&ncKaFcKuxI=J<;f}y%;f}+dfIA6y3hp%A8Mw1>b?hHo^>Yq>)~_|I zXr&hU&`(-v$&x0H7N30Yy*DiHD8}E>Vx>q17*Dm2zA}|RW*tF2M~kP?4l!%ASZ$9M z6V7PSaz~4GsnKG6ZnW3{Jo}k_9EprfN36lThq3bipkK^*6Ek*!ZtG8LwvYUqt^aQK zFLti}#DBT(PrmfPlKUrn<6r%s|CfC?{l<^{&;JaJ@MHvhA8sLDQsG~jmpJWnyhrk# zWVT?rUo9qljN|0grE0W8B00x@obm5mDvuL?A8`coS$rxRNFL{83$YyP4!#hBtA-<= zOXO5Oi_U`vkdLXq;di^h@1lSIsr+K_H}*^ArzY}C!RK1Qmtx6mu-TsZ1;^{ErGN8N zj%`oO{DS=!L!afFe*Sa6dgkYgm#>{&T)TFbeJOEPHejDNp`L_&c;`gE7BDkr$&X26 z{!NjB9J44V`LPw7dcEFLaXk2-Ru-`31Tz8By3ylkNl-xORw+yLBOxHQ}_+&J7q zG#Yoa7^8|WG@{-Ay5>hgT4W1p@gwlgiF`9~Gx*y0UbAE(Pd@dx7#p=Ij17#FSMZx{ zK^{bY+6>y9T7K{BD;OiJuLGX7xV8uWHM8+_HdtKSi{GD=?a_*`5$~bAgZ3l;T@62f zlMlQ4cQt;u>E8*-pP!RqgcvDyXm}mqN&UMXzc=XL4ftJ+`u!bf{7+C$wk^y20)G1| zBC@<3OLZQ`H~L^o%dUHFnn2i5jQ7!E61;5#+(x)fa2{MYTrXT7TnerqZUAmCTpDf| zZX9kBE(6z?RD7BJof4yY($6a>2kFF*&-`LB+KPVuHtoi+I19@di{GT__jYtjSh zB1{vDYqz1U_srI0vq2NmSzNn)mNde88<`~OBKetLlP>nZFS@7&T~wnCuYfje^bhHw z5#?Z;vi%xd)n_s77ia^;J8Qu^*W^c+JSKT3@DiTDxL{a;_F#X-@FkC_#y1Aql4)wa zrktOa^V^wEeeCu6Q_y|9Y;cnp%-@vC75t@SS|Ichl54XZ^-9R zhD!o@n|!GYuv~_>Sm&qm^(@2GcP>@AWBDrgTp^bJlwW;b@yRR2H~qr+m0}~xBp`Y| zQ-F$JYvEfV#BzqIM1FBQ%ksRjH23cdOYL|*VU79;G43ZEw71Lg-#u$N4}z!OGfUYM z7n=gauZ=k8FGlPK@)75|7YRpQ!3Ra{?Gd&q+7ao-tf7k$k<7mXyr~Cyw&B-*2!0Kn zFJG7WYSHrGlEZmBJDjiZ!JiVJE!5dl#R}*?ABS#wTFlA%Gx!}t`Ie-z!QQ%KMWYu| zw;h6Rcn#ZBOrU=!AVaAiuAOZ|ySBr1z$M`}z-@%v1n0qZ!}Y@T!KL8(;RfLL!lmIz zE2Ig2*={wcAN{VkK2LfveO86C+nH>k25oBOQ#rkq)6;gbpR`aM&rRj;5;>H8(oduz zUr~=`?qr_4PKeJITzgq@wJnORa4m2STr*q~TqB$f*8o=!2VJ{p!6o3T;bL%@*P;JE z%d&l9sr?^8^C)*J8$=!U^H$x@Yh*u1#b<*mgilyQe$*NDqp45&%k05?#QIMcBdLe+ z{hsXizr5){-bFdzg3P_+M(F7tXc%d}0vRg6&l<(VrJBse>9-(<)1ZrpHC(*r#%y8# zHG_UUIZT}&X}QH^jVOohvYiXDY&LL{Q^hv8C1~e%d^_Nha2wz-wYPUA`KY(jN_0n(x~*Op@-S~^EX-;W0`DlBKe~t+odU% z4gNI!qvF2?FJ*Yy-$~WqhVM*4R_+E5B@Lbs|68#Rc^p{RGrJA#5)o-BYv0=5HCtmL zU8Iu$52f6)Z^0P07?yJ{&=c^lKn_oBUpt$yRXM50#yllsZIr*!hTM~S;q%32$H?B% z;!4QiY6*X)xay|A`677T|YM-$C3u{ASpCe5nIb$Gl05gTDMi_UnVb5T7gj zHu}6WN!i*nJA-j%qt9y6N;bG+eg42YZ+14~{(`#j)I`thf$iQb$KzWsdb2gCM=X;K z1}Ps=mtQVx|AoaeTjz^YFMe{CI_!bvccXrUN?nYhiCVW|^W_(xU%X&Ka-Gbk&Cuyn$e%7@WU)FUszNF2Uz>7Yp{(SI4 zaq{;z|6T5l|N9@m{o0@XcKu%;e(3MFo&KwjeC6RgH~;Xjk9{$P$#cYB1KFGAxCp*> z6UKmZtQfJE$+27E$hpuP0)L=&%wxVQ=P@_Fw<35Ca|FW=`ymr3E4s6T`Bdg$F>Ysr z{?tLtWwOD5cd)qEI*9o<=-&GCVkG|jCD2!p_MZVwj0eLOzZ1cDj^F*kq{Hu6V1br6 zk4kuwc7isKbM&XcPX^&8;r0clOi}bj_DgfT?A-%P3ki(JcMjZFh=D(eH0D6rsr-e5 z$BN{Ewdil^yfv9)(>0FjM~06B$MB?U&J&4aT=p~Z)QN~M#V^A<)(FPz6#8^HUmo8Q zM~m;SSXuzDfE>@DZd>zFYnd;sh|jMF{?g61utlNfwtEX7c)*@tmI2`Q z0{0-&{M*~-olS8v~l6mg6xBS-u$GFwdV_-ZMJ|K0mb`j(qS%e3#z?7~FQa ziF;-b)V2eD&#csa{&>zV7x6*=cD688yK{C)4!m}G-)sWuGrf2g-|gFHYcu#xY@4m| zV83|r(OF@`Uwb$5fLjN*9c}{d#k*%k`q`pLq5aXO)o7b4596I}=j;pWQiHJV3hc#g)M(P-XC$r#eNX(i2jT_BNulq5uxG9OE!^i3W(4s^!BbQo z#H+NwB5|9N2X!99!A6v)!Wl>SVYrdt-OicS)-ey)3tR%YMZnFj|MWauA8^8c zp;)EU;x`3Y9l}360DAlqXeWg02d*BtwO_4IFmO%4eYqcW`v>>Ui#HBjvvqLZIIhsVZxXgx+F^}6Nho`< zl&``$RQzehq1P*{!N9@qh&2>cgU3d!kzk{se^m11h&2}2sbR>m@t`GrsCW_d60!C} zMhpe5GTcb8I;X<7+5C^7l}%32~H-ZxHhX z$|PmqQ}Sr2B#UV0s|KFw7~W*&S-q&&yI+EAN<%h%>ApfMWLi3cxs+Ifug- z3*yOR({V@1ChF*vTM`Z!<4`8e+K^`&$FNcRfKRw%4d>BD()P@-5u`_WYl^n*qeaTp zKW6)YcUei)1$|iO9xX;O{wkbX{Y`*z3|6HY{dR=qSgHrUBLz747w4=TKS|&i#+LrE zV1vdtYWzlxZ_@Z?jrVNmJvvN0b-Uj!j!HW;^NHFRL-r8bewk06XJkCv)y&1}z~C-I zCo%MLT+>T;Hl0t2Ofi;%jtUwXc82o<;t+IK=m1sEU-HCXVy?!%8xQ)uL&X}Tzc+UX z@|^m}p<*201n`ykE`c5={rLUvH#h7;u+|RBl&6%ygvoGpF3D=@!m8Ng7qQCcVIQY{3Lcf@n!tX{sj=a!|sD0b+Q%h%Jk*$A@nO@tnd7~3amB2K2n<$xu09m zM_tT^X#WelrL}Fd!a7%63b<*PQ{X9*M}fA|Y>u+#Z^ zCz7wQzX$u%8t5a>POrlJP}ptL5vc)(3(vq}>atV~{krhbG8O+zG zqLAC)hYjX#e4m}Z^S3ds9Cw;_Fh@Kl)2g?QaXf?1t92Sv?!({*NjR=~ntqLmj}<-i zT?+G(Zs-@ikWC5jwLTxR*WMS*fF~@m*@i>Gq~N?|2=js=jA!&8Tn$_;9NRZireh`0 zw(JkKFWc4wELsSBRrZXT9$`m!3?B(j4l4R2r-d(IDH0w3Y+?koK^y z{YIMfwhJ;5vgw^&iry+Uy^%j%o!*{Xklq~7h=Vmw@-;&z!n#m|KAacP!Qe}<8<39+ zajrCf=mp(0hG^$y@PuyYmz2#OXd|5)l;eK@zd81~{#T8@OnDgpppky)jHIa;VB~#! zeflxBKXT+!)E)^aFVvVG$CqQB`om;UPFGiJuTHd=hcd}I4dyb@v?z?A9EstM!nZF$ z*G=kqO$_rIlq-%rtCP3;{4PpDpZq-LH7UT8xA{LPVD19=67b_He5pUO4%8u8*S&~e zmAcjEoQ8O#Lnf|0a*1%lO1dNFPV|TMMb@`8*RyYtvb;3E)AN?noX&1mvc7DLMMCo! ztkvb?njQ?zQ1<=*fo8(C5UGo#UWMKd+5?@Z#YaGEqGY>q;r}N5l(ANJIB%uXc})K> z=gS7E)KoF*-9KH?G8(M#hVm8Oe<(!23mvh$Q0b(n|1a>;6zHqXn#wPU<_fg;PR6jd zEsjl(w}9rskFjnB-l^BH{i!_dCUy?8(S6}kH|9B!SP@?QaB}a*1|3&S|A?h`x1zr>^J$PaUX5R{BrsC!vy*jUrB2LVpqq#ATF zdCM`ZQz$t#{NQ|j%fVckIND9AH&G6mxa2QJ=Q8*(ZZ*<1c*Zq4wt*@Blq`G)<)qEf zhAfCBsecaT2WvM=J0tu00PKv?hPr(7>=bz5)ONUa_`TenJutC(mbRgHR@_&ZT1US- z>yUO{Tsxb)7Ii^+4Iks4gnxx~kpFzGKYe1=v0~O{1$5e{#G%&{m^0Nu z&!s+8pHy?52Ep%GU_;;K+^I3m??}*;!58h{>~fw%-NW#y;mi7@LWmC;xqFvgl_!mU zeFe(sy$YIo6?E}xu@bZu!#IdT-o_MuIBsuh#w=?XT7TMcSXx{>9qAMEjR& zzoq@xX#cg^{~_(K)BfwU|HIn<5$&(n{@>94>$U#|?QhWj-_-sawf`pVx3zzn_TQ}i zw`hN(_TQ@gw`u?F+TW!8|3drk$f@@EnEz_A8EyGd;8y^*+yWeZ$$n#>MJ((qu^>Cp zZ`6%ww~dNx0x0QNFUuCp9wV-4b1fVCA8hDYvw-7TwGGz@hc$*`GaT%d#TK|$xYckj zTpL_FTnAhdZUfv#xJ_`T?*;bIKxDoVkzX%w;NvkN_QDN=P||SCaA%@I9EJV|(kTg#SL^)Y~^99(DN7ARcNQ zJS5|d1`lihM(zKs_J3acJK_Hv`c=&rhB4ka2N;5*u8%%uJu&A^2rKwUv0t{$!d&W3A*Yl3TrbKqLwTH#j1xo~Z8?Qk7%Nw^Jg8{sy=T|{4YKwdOs zuSc^znyH^v7Uy1v#xug54ZbAi;Ga#3()Z@AU7j!qmH0N7 zttm=4V2sN&C}%0>jJ$0{KAt#=wGXZpa*rG6ANz;6&O}>4f97a$D4M=h54>FS!#eL2 z)^ernrOd_e%njC?9jJ3M3EjszT0DWeZpV$h9S=~whHPC%JxCpGxdA-Cg?Rc-B%zli=<$~Lz%di#{DatNBLNr?SSq| z+HXKx8a+++a|*hh4f|6Tc9#s+wTF)tPeJGRvSWGQTAwG~u)PfJFkQ#yy181T<9Z!& zBBSW18@f*n=|M*>ru^Z2FZ{F(_Tfw0jwk*c`-4#iX}cK=68OD0O?_xk+H}*YPtW%;LnE$&=mln9j`Oeb&(4MMISng|boMG9n z?;cxPQ2jNPzvd2<<=A}%^6zl_vYpeJDeMW!7JM6aNz{kqIi|xgE#F3Y0jmkYl9~tB zpe*6OGW4007m-PthsplXZ5YOxbjXXPo*=w@WZARRk(JL) zN9|i6*P@W0H~W!gW7FJk(TF|6+{?|qBy-^pEf8MqF*e~1pKJ#+t%q~LE4fcC%p<=D z9+_~kx7EcSF4WnB9kTBU?ETJyN79Ef&#ABJeAxpg6v(SZ~h3xzCCC)SZ{byx)2h#lR3(^R~ za_-GwjTiGtB|}io9QJr19^;%z(~b)pKGJ6#hBtD9ZOF1hKa#u>XGSjLm7MpV)v|-- z;{2LA7WWHM26Fsx%$~ux4v$%mciKzX2OKv>?+TAMmMI*E;Wmcy;+Y4I>2|=#OG;^= zFD0FzFG(M4XXe+4aBN4DAN7(7caFc-APvKJ$OB>y@<&`%FZ3&Z6YsdNW!P9hvnKKv zpevK6Oy11bgd_Y6@kqBC>6OB`Ob2o}gD-H0e-E+-_?UZant96nKu3m0k+w})NGrs% z-K!CoypTB33*jF2WD#!4PnjAHZ{URCTtfa#?r8BwaY)h+>ELD5i*#__;deN=;PN{Z zyr$tl(QseGFKYND4gZ;j&uI9phQF=h?`XJKsnU&~Qt`>olDFgXLja zxL?Zbl_LEJdvm^G&9l=Lk>{pkuI)#${txZUuZVz;Is3rJ9+Z5HdyvU*gw+LFZ1y9V zJSU*5pFtZ%*l)`YO^cO>r^yQ=w&I0i+4wZZ1ky;#G|G83dFmOY`5M+26KU9;P#&%` za<5Sw{bFQXlYmS^zeqgbu{8Kr8hG8GwEdBGu*X`;K8E9XkBhl5T>oVl!}H=uk6{?r zq|=mCvY%l{V+>>DnF%A;pBG5S;1jwmOoKGYJcwgjapXnXX|gYuv&@fmH2E={EH7ZC z@*uuRk9h7&H1P;0jQjNG^PYpV}+}kf@+Vcy@sL^>c&B&-tl|rQAu#G@Y(O$BF z@(PY}>t)ETlW-Zhmq9FH`L&fgepc!D(hEo5@#9$u7lTE;7|C?Hdp+4Bv5vUIh~$#rF7XL;I6FKGat!+kS5#vHPBr5Zz;XL z4(W&cPo&VF=nK*z^?LU+TCY!!$Io72D;_k;6#RB+V5O^zZ+1OpsZtG z$~H`@Hl(a*+A!aiO;`=WbKIHs3Cpb-z{7HD0R3RXwWp`@18iTkE8EfNAf`OSduLm*BqT-K13w znxVfHc;ZMu2G{iEIT+I}pDQseqH8Uvh{oZ!}T?VR_BId`%P;hi*JUhSnZo#4cyv~#0y+&e89p!Hta2B z`D9s8j#l6wtj8X=kK7CR9THC4RSV!d8nD0Z+I4_8Nq9Bj4&cowPt->Kki*QY88EJ0 zHUTd8r-pD%z;PXuds5{7RN@5ULAEyvv=Q3y{m7GgJ>Q}1o(sRwd}m@oS>i#CIB<=S z9pjK0y>M-Cw7u8EZHfxf4i}aqJZIgEu}V21#M4rKP~Wb@?`*}>uQz0sZ7m6ZE!J~5 zSBfXGuLu5kavbNX=--e1Fi*o~I|V(3=Te?7(l%t{cdHDCy<@qjiw*wMMcW?A$5WHi z22>@U#yav-K^1sxv%@*UU{IN2IfihS?=Rtp{nA$OdWU-bP_Wvfe_!Bgc$0 zq2U}W3}0z8y}^Lz+xX?VD}H$9Hd9Sb0|1QDcubEGIdB)%hRK4^s}A zaYo%ZJpbdkrd@zMgJByW0~x+I1$$KnavSrz0obHG@mIyCVDF{8kY$xJ8*&Bprd+3d z&Y`U-x0TFRvYLB#7@m7}Sa@0Mg`8X5&$-2+={WXwM3Zsw z7OXSqxkbI6TP#68IVg*8ynIsJP;3Q#M>Doh`(lM%BiB4Sa^T(KW}oK-R|8Kwd3zRo z7kn!TJ{8BD1Z+aiNjl)?-WHc>iscfH%}!YBScG*az>!Bhxy-LXdARP;1|Ar-Z0zI1 znhp3e_inlf%k#9Wkv{!Qn>=wf;9N6lErYiL-T`<^8N3DXB;ZaN+yR{X709c@={Ezu z5peSAFuV!yO@Nb6hvDSWbvF4N>T2!8xPlD|WsRb&Inobxnq|+tzqy&E?PzFQ>OncQ zhd;!Wrl{5XQ`b z!uWdBk!i3j)B%WtoRK_>znMluM%e`!j=B(e1@#b)JI9{Wmy8Z!#=6Om;lerz2GMR?H0zD`y+=2rd?}!|}Bp|be=)qiD=?F?!xg}3M z#pnf5=q=Py5-m6nV%_Fb4PWd6Mpp ze2XD2a=2MC65i<N&mU~fLZ`-8O4ud-86|1oxp zu>R8v-HG~7EQvZo|Do<<^gA=R?uO0W6W=O6RkDK&25IPBQeVm_eaYxpoS&=o)m|u` zDU|xv0i|D+r_VZwim6LUu|B`|>&J@JAE}2@H!=N{hFzZRN}42`bi_DpN6ym?ElB-H z!#R&mqEBLo7lt!D*A$#oTF$Qxj%hMI#-m(wl4*p)+J%Sni^!9GDA1oVPxWaUX&ZW$ zX#kgSK`$E5yi5I#_%g1m;!ZZ(-Vo;S zjlMivg0SNVQvv;-dkrU3kmU~SM2N%vFB#yt$B<{?*w%-D=Y9r*KMZ_p2!8~4?q@Lg zEb!dVVB#MKzAc150X)w!82m}#J3{zVz{~S3I{(wabB};Y{|xZ*e2d1P1%6Wqp99_t zrGF0i?hyVZ;JH82Ze;LpNUw9=i$93+W-&epf&93+B$@f-&c^i6+?<6}H3eXLEMu5gEJP~e<{SHIKzN_)sU~ zNO^~#+b+XdQ_RV%ks=Nm6lxy27j~DMA=@K<+QPXZn`iolLF1yZH;Fw3JflmxfbE0! z{9fQn=X0@_hVTKjD{+0mmCom4j}LJ?n?zg+xRNfRafJ5+zSf-0)#(vF0C?$Ku5)WC z|Gj`;`AqJitDMO_bd@u?hvuE-1GPz=IeaGfY($97I47RMJ#f~ksXWi+Qr2GrO)mD( ze=g*Y0DlC1vLCq*2KTt(t_R2l$h@gq4|{gt*1_TKfvM$i+v#6}J+hDDj4FO_=kK-n zy#{xyZ73{5{Kb-16m5GR=rgJI{*U`di=W0GXb~L&ot^`~QgVX(kV(t^a@-9D0~m*- z9ff>v;p_f1mQvoCW1R{;HJP!%w)`!*BNXb1y&P z51KQesoQ+|!~6Kz4&ifLnp2R+W*e#^| z!?@*HBgz~_6IVKG^vr^1Kh#+x*yItvN~gtiIPR(6E_~MLnJb<(YKJ^G^l8pRhtC>? zX`6K;eY0<)ph4EN!Z!8zACtDtS*u3Sbww8SPN5AlstvvY`$RPqIo{9lQH)FSZpq`( zCe$^gtinFGO`wZN;&X)?5Vi_?_+mE3Ec)s_FI&h)kQVgmisXNuuJmAU@V+PQpF-S^ zJ$6`^b@r_io`0te`zgNrr)?HU={O6x~2@I3BcYk{;IMv!3Y3(Nu5yL z*Z5Dhml}IdirsL%aD8woxPG_+xV>;`xM8?)xG--mFSi*hlyO{lr#?#knl>=#g4|~+ zZL&r`;2B!ecWa@mNB&o(4@A&MD#o z_s8*@bHYl*r~fYP=kE$poyXY2K4ia8;k{J2Mht<`BUEd zJll(XLOq4$ct5`*;){h!IWETXe~L0?BR|F->p{$0tMU%$UY1GxxR^$|xC<+9U)v6{ zOy^B`*mfLG%#UfsWm>8Xrfp)Wd-JbB2A_f+Z_32+#5jf)jBJ|W`PUrIPh*}Ib2s_b zn7e_Op)Jp$-JeY;MGa= zT|S?%_hY_21UoAC7tNjPyj(tgm+hRN3Egw?Esh7=$9Nw78gW4nNzz2Na1&|5`8&A} zzQXw~){U?i1bf=K2mWpF9z)Agf5CWr4Yozj!(!;83*I8BtJd$qc}LDA(XPCohIWsq zUVtql1sy#;bxDTz(*Eqt(1#PFY797(iRx_smzQA9hj|}#`vT<~`_Y5GlyQfpzEqRg zP~bS+kMVb))}4J0;pG{lb?)p>QO0kI&lgcAtkq=;xaTo%M~8hwPn4OI!A$eJ2*)tQ zpK{liXs)I~?PKE{oZ-yeFlH-09ftinzc0W(dtR*1e=(CS+~uL1;OlHF+e$}iv$mj< z#Z%xF>6-kh?E3tlMqZu%vuj?Ju-EupTQ)q!l$G`iGX^+! z{Z(nmc|6)CT%T|nCfzXpegDpU5;XK=f%iM*(B{9JLY+}>ws~4q`PpmlDfJKQ!Z939 zJKXN)5x+bR%YL;u8CRW^B|V|PgRl*5AdR)Ka1X}Ly}z~$h=uxq z>8=FNtptxf>4CpyRR3_ivyTkFeZRkrJcwg$>sQGGo`=f*8uB2Hvi=zI;G})IJTUq# z@4`mY*Zvac56A<4)jir6n^;%D-7j#>a1LAxTr1paI2W!Bt{tueE(x~*ZX?_#I1jEH zt{1KkE(O;QHvqR6E)6#fHx9?UVtD`94DQ|KoHCKjT%z3KS=0n1(XW^O(V#)&8#Lb5cw6HeHNH{fn>4;jqjzcQn35<6AVoRpVPVeznH0)_7OrU5#(k_%@Ai*Z6jg-)O7)ZE!NOeo2Ji)+p#E% zV?vz=V_ysW8C|uSb}QuD;-~YoBJ(=)tViBadl>t=_#Fv0pbR{FkFkpHSYX3O%JOUk z{B78AqRk=1JTU#4qc?yMQuS+k_wGR(Am* zEqR__t=S9kTw@Ch*URv@^15Y2w!nIN`Wv>R|Jdl};B_AOUetx`0`DVFp}hn1t6K71 z!*e!%g8LV+-e_~b)B)Q$BN4zfv%f@&WU(3J*>s> zo=5V1=5_nd{UzHqVbpb)2Jf>ZzUE&lJoQfEsp}I@+_FcM?rv~QpSUJZ#br6Dcii|w zdTt#Dcw;kMu@g3G;BSB~Q>D{q{8s2#ynmm0R4!KQ8LT(+C%y%E;;uuyIO2zKB9#qn zUG{4=p7RkC7we=l?hJG*>eyjiGjI(Vg>OwBE#`C>6PNjL4#vDQz?J7sIAJ`CNZlDM{0qcCj3sd>+*6>Y$fMjzd46a^I>fs!6t7L=xHsfl;I0kf+BL2fxEb6PI|G}Z z$*)7>T7b&|mkZ&N8kYe)1Gu3Z)^CHxaleBHJlDodnj1B)88`c@YKEhWc4-=kgT`es4SiIk`Z66?P z`v(Zy@d3gnKS063KL@NAo_wcS6{r|S0)M4xD1Lvw87tF^BQ z7p6_pp@E0{bn*en>7Cdg16o~iBV?x7?^oJ`ex)_yhr>DEJ$XkwA?=}wEcAEK?#IC2 zlDm%;uSNgk&i*{pr_F(SLzOP$@;e~I0gr3g23zsW+nJ|^$7~hejE72lzi)6R9h3k6 zi8-ywpL+u@V86$;INxgKnH!P5X`iz=8@}R^^?BB>Ds{kDbsIt5#uls_&jwB+y_qEH zlT!8J+?9F)`Ho4KWoH>mWkmVIZ51xRi8HVKnBQ`Zz7c0^crJnW3RoWc2W`eNXZBFA zk7v-XTwN8@O(FgX4;woa2S)7$8(F-+NG z;LMLWlW({zgkOvEng(a$5YD?FnMZm2u#Lm$t{t^P)WNkw@obL6Ivy3mg?lL?#3{JF za5kKIOT~r0UhV&J-aB_KLhsD0mlAX)+71yb7Pl7OWWv;&_FlVa6e28Ve8}<%!<>loHtyrVdW;0_Y(KXrx!&U2~jw_v>UjttIoIp1Y zzMKsn?&D7(Pu$~+c`4TRyD(?E88!r@<3@cO>Csl;A)V5iKi2dkZiU}~@(|YzTon5O z>Rq(khK>U74~e9ze13b8_M((1&=xWKho3G~!8Q@`D*Y;~vGxJSyNQ2*JBh2jTP3^> z;fUiMU}pW+;0W&r+^pYL!DeC7!v34NJA7F_>>uEsk-g4TamQ+$Z&P%r8 z?bC?5J@*ORHN6^lBBRdcyx}l#O~8fkoi?~};F?8dZp|MHEEwi~6yHfPRa}fQ#_`29 zZ`ugVx+uqdM9@y2ll#sc5BpJ)b{^|qa*kT*!R`(EuLM0ae#XE_-+-q&zC*q14I6YE z9jWsjUG3^WEfqnN2_|3gDI8Pnn z*|4$TVhXl&+@r+#8f_6LHQmc_*Xgrd#4l6f6D!rZu-G-+lQxb$I^Y}nEGo@e9CXr<)v%Y6XI0yfF_6(So_O6S?mo%8jNdrnvo~u?Sxllb-$&j@*Er7OOv!BZUjj0)66rE8xn~S;%0l8&;1|{S&3%ssN4N)@CT$JjIE1?n?L6Bs{~ODb z=kttLv}>OqeeBS5&U;pl34t-idt;-I4NgaJhNK?v0&=a_@VR;rq67LcG_2>a;}0Hu z_%Lp*fB1pagB$<$i#vYy(AS^4zG~B#FQ)(N_aFJ?b;ib42RRW*Q6_Djt#bKwkze<0 zEQ{Z`4`*r}?s-q+H`bJAra}T9^*r_)vKqmSNg;m<}DL z4Pl6nIozW+Che=VL2d$GIA4~y4LXd_VS05MysOiM;XSn~AHMf677XYx+_OV?zs3`H zk~qj*+BAgsH0-bVCZ8@&+6Sc!9!{$7Vfh^nj=1ony$;DVMuW3D%`?(J5*$Z3+Cxtu zT-1IlP&QH6N0ArLbg^yuo8@5LBF^3UsQvwbYiYdy&w;+eGb`j*69 z?9d;Ds|s?uwU76p%Y@PK@Lh=EXH0CJ_DD`C>yPWJJ3Ic;`eyNC@;^)rAG3+ z=ZW%zcJ)Y_^9dyvC@V}n@_aLIq8>{bK^Wsvhh>~N(&l_v%8#^?IfPM`alR9Vx7|H= z7MSpud%$O2Op|j?lb6ZIb4T+T$b8CI86IgG{W_gg`>aj5m?zVz&OpYa9FB+guF`5R zD#KI)FVoOvq@Q&)Wn^5+X3A4@9yx;h_}O-*JkS&6eI5z#DtGcHZ}rcDXYig@-sd)u z#P5{4lYcMbQ5WT%{9MyY6X!Mh+;@$8_kv-K=bik-bI&#Lypx~!NsX6x$N|rN*TnPQ zJmL>&e2est1l)H`e5=ME(fHLG&wba#yBdF7u&^*Z7kf-=Xo`cTK#yPkuBw zt??T)p8Kwe=lqxD+obV18}>0BhIi$i6WDKUAq?gvToWYU6Jiiqq0>+|LtY0D6<>q?Mjp*K4VWj(!0=2fj`B0DaJ{)N z%sZ~m-*B9h{z#LgU()S><^zmtXcc$H=&{as-=J?|ymP#AymOo}ZaBOdduBYz@t}1~ zo3yoLC82}%WXD$$z zx-9E&;+V3Ua6XyZUhwaC(tP^43_LR1TjM_KE zvWM~HPuPDT_49@5^;%Nh{lI$3d=TH*nBw?N-by-`bwye%Lp}P);0Pzoq+O-M66T=} z8PK!gsdCN%JaK8r4dZ7TY!|{=-hnjcC@%WRgMAM9GtC(A3}?=t(9e3BvN3L$r&3O= z!Fd7LCT2DMkjB5Q@rO139gRPt@uEw`=bf62AG=?re_Z3MHU5OgCp7+~##FCZ-2 z=xXn5aL-W${Kn{a8)I{PmHOS=*soES#UA)H_>wy;-_3}*xG&lTzZdE~F3!h!5APZH zxn6H)2BB+C;GUMj{0!dFa1o!nD#thV)KfAXbtPp-s=>Xfa-ARLIO#*bhFu&2Kzi#f{t_e0JsJBIbOvApEtp|rfKriHR$ z4p*KY%hreVJfz3+h0Dfu|9NGb_qNHx=M5UWa4rVv&?aW&FvkeXYWz-WD!(C#vuEy6 zIq%^7hHG@ZAG{58QH5`N3VaP;uIm!cyZ#BMu0%Ltyt606dUHPz<8-8GcODAbU^nHRh8vQZ;u6*kE(sXhnr%;i%!VA$zd2_o zEZp|o>v}E5E$8tZyBxO*y(@F2alEwl?#thsv2e!#`ha$@!?1PH29_z83|a09rNq9CsKOa>nMD@{e&SV+Mn>GCa$Ja)It>m*8({ zQ^J=ttI7;o4b7W)rlzJOV}=)a`)KZ+AJ}H!c*&ms&JXu2(B@BGPW}1nvSHzOeg=>x z9ot=r<$LRr{AY)vAAdMgS{7Y3O1`=INGiZ{ThDsdGI6QLiV6+ zxzwp*0{lqw5HC|CKdJ_gkZ)aL9?5qycs{|l$dkZt!E2)SIQDc=H{CCJ67?SPs$STq zjQx%K@2U5YSJ4*7y?ScjG?+}m9<%E{+?n#_mx9Ix9Z{ST1?CF#9 zM+;+%HVz9mHffK?d8^}D&}8cV>G0b{l{m{%(J~hB4I{@Hm2W>ty%6(a+Km~W_!TL< zE5Y|7^t%#O`n{v$pr0kzez$NO^qsp-on=3ZdnFyr2e8i^wq%?Iz?u=~f#ys~eQs|4 zC(=Id3E?{4ZGLGE=sRQigU13JKm=YZU^Nu9vV0p%S8@S8ax z-;W^P%mG~sZz||CIEUi?G2TVMFjt#Hk-x6QyC)ZLZ!qiFZo%$>I+{BWS;uzjf=HWh zL~!r>aoCS49IQdZUdT6|xMwU1{<50+Ie6m-W#ioo&4?2hwtUNpGQx3aQ@hpoh=*xcHDyt`m2zj@c`O7BGcSI7=&&j77)zCd|Q zn?QSJDu3}o+-K`y?Fammwj1udxqx$1anwJ&7D^idVRa}^73ml8jeUZ0z}SUomm!`o zuAef^Ff5Z)_AHh`=7)R@o@p{3^%u$+Sq7b!M|&{JZ`Mm0pZS}zFrFz7`z{Qx-Z%HI z6yZEuQ;jf;}o1yjkOC+fhz4eEB-Rsu%8{()QT9>{{Gy zvM(>+mU@Nn{cOQ|Kl9)BS-gC!e(y(pxh{JOZ~bKO*3Wso^)vH%{QfB3`@vg3=l^)- zO};NX^M^BUatu6x_jmX<)q}}bG5+@j_v39Jo)z5Szgnc;|48~(Iqo0A`#!tvw|>en zzmG6#O^@G^;4?C=S|@v0{^q)$!hKfzKd=3r@bkSNsqnIMbIA@L*_5rT3xE#&NeX z+&S2VE>x(yj^B>rzDl@8xUg)JXOlrUB13&jy%9AE+E3$Ms7rh!DxEF3`2B`{BPt5| zij>}nnol!)KZ@)5VLD1K0843D2J_KySQU5vn^ThJ%HNp!JZNq`Xl~K`H>Um^w7~h} zza{PAdm1#sc_sDhZ`yd{3w-piow+xrz5^I_{!*JtplW-Zh zLvV-Tj=*K%j>DaRI|+9R?ljyPxU+D*IJcklrt&Aji!B>(-q`%^FTG{OcdWv?2G)># zzH24*6QSOwl5bgopDO(%c?JDMy?f~6?6pZJERxhzeGKN zd)v4M$n_Ka(Sd9qFz7(dIi!VqiVtz`mfI+GpG_!B6t*7uzA3(}8}%FYzU6SB z)-#ok!!^QI;A5zJudX}wIIgw!!B4ykJl9!M8ZUJn9ftK|m;vCHp#I$RPe1RE;o2i* z2iG1s&dcY}XHmZx>X*UZDAv)`kMlXoME0YP^e-YW*@r0OCFH|C{29tb{f>P&gFLC@ zIS9vh!Q^@?$`EHCA{_gW>lf@p_R-t;9qvQ9b`k1BfwchQV~;Ui)rZww9|-kf0_y|x z|0-Q?AL`hMyREtZD_lp;b!8pVho?|SuJxLC>AB9!I-W&c&Aaq%fN_s0`$g*Is9z3v z){kq#=kS}dUFzfr^Ah~*2hu6=FKfK(u?-si^BR9a)1Xi6>7xyuYlPHaZR{nl0v%JYjYD2Z-N(ZkDqwu;j4=JKz=F60$_4(hAdYvk z865LedR4Np4CUi|-Ui<}@WWp0Ggh`mzER4zNTy&H0IS9Khx{@fynTuTv10L~UH_GDt9(W=3bnf@O=#1uH@(&hY##+sJ z>mbg=V7`d;`es|LxtqKES{%$XU@zmGXU$uq`3v%{!F|DNN$%4e3x4AAI}-RgeuuG6 z58e)&Sxbgvi1u>mA{fUr>2Jc%w`|N^%|n5>pK-8{TH4+yYcU>C4z(wA823|k*HAE|eHm`0dS@a~oqzpZRtx0q1r@Jm?}V;X?hgC47s3KyNkU90!0J))y4uzr7E zXn!c;kZuLSOPa$smmJH#{c+GfaY&bQAj7*E&a)@-ElIWC=K{iUzGLt&B`5N=8T4)X zdF;8E$meh`_8sCG*fiA{Th+#BbF|e(X99gR0{+G?c)onEPT4tQYo3?=mI(Oed+ym_ z26VxAct@lta)SZWrR}~t^1QTrS%duU!ybzXtbDZ$DJt$4Zo*^C9+0X;^BG#u7{Ke$K@-iRVPQv9UjC4yF>6Y(BjKB6yt~Q6(O8Fp_*{yZ_+XQ! zJjvuAj=xY?6Hb<2=g+oc|4Uh|VXTMgL#7!^&((?NIN3Ig!#Xj(Da%7EKubD31FJ^+ zo3v#6BW<=%I4t3WnQ$?LF);QYe>Ypu1Ce(O=`*b9PY3WOz!{ft_H}umF4)hw%b7H3 z-U(#M0Q${QmQ>v1L%dkgmvms51x?M;nqaRw5kxlKMl9_7g{%Cj4{Y17SE} z9JiS?-^)dxfgHw~L`&s4v*4Pt%{x?Zq^E?abI@{~8$k zjc)=-Jpu8oHG42gE9A)xXJkPRXLfRE_n3}Pcr*G0 z>k%@YocKzy#^YRN3imtwMUi)AH2C*mj`v}C_h7UAVca_ie&c+&C~WMnus)3WF!W=< zXa}`7;5-)eDz?=U@!{9inl#RDqt8!)2~9>|AF^Iycn)bvyMcytpA*xe zjbldB7{jy82si1l?xs9!BSVV@_PM+CJ2@Cj1F++8eC=JvuNq%z4I7rQ!C+kbC$&GL z{fD&wu=XF({;c*N*ZvdQe^UETY5!^MKcoF;wLho*=d}MN?SEPO&ujk$?SD=Cf1>@q z_FvTgOWOZ4?Vr*9S?zyY``^)iajj~T*v7^BY8k%ER6R$d{@a<{b+qM9&GvO#_Nb|J!kx$6-AZ_N| zoINV{n{v(AyP#}bu;6We8s?+&ei5VCR{u8TEjmKjCZ-1G!2Y(XTO;G zv#fQjlg`uB-_&6ter?j?okJ!)12gjn$y0P&%zroaD+|1V3VIIFr_rssUsTcbmEW5& zG;QpKu|-1I*n~6*{dxwvbwAt&I2SGkcP_5h7bo%Mxt@W@d^=*1`(3ixpb@;3w!_*S z&iSNiL!8LJ>>eyey=-tEcEk&*gT>d92Vny~h`SAGPdr8t%=54jUXQ!h!nUaEa32eGe#R$V*QeC@ zz2VdPtWR?8-SZgQi~DLxKjAo5=JGMmw9NZ&oR=7#^E%u?Vsy?J(y2n;3~O{we&a6p z@s8nsGL%i1i+Pe>X_qqeE91G~6$nqA%*P%eZ{R;iDC9Tf-yU-)q zf2|qnqvKdl;8*u`ZcN5C@4xbGSn8e|bX-rz-KgVkS|Dy8^jPYwDIK?8$4%?F13K>B z1>#QXxEUSykdB+xaS!XbM;3^CQpY`|wDb`{EkWcg`qF< zJ?hM~d6JJ&Pb43#(f!3QX@&ebhJI#0Icd!0Y~1q>zu{ekXN00f@~KkTGFT$5XpMO> zUFOH|Vct7~ID8j}X^>wsZNoQ7=Y%(DI%hhWG-wj(%)l0C(s691BeVRJMW#F~FY_f` z8W`V~bW-D`{LI|c)Gb_}@^Vz`a$NtydYqxcm^%P{TkOwMz8N0Qd?=@y(XO)nP|oWx zHcVYuM&gO%*TcM?`LLYfyi4OIRCbv!`eG)9c^>jHi%LrjN1f%QtlGij`m2vru&15A1hH-5JYL))f|i!_**3D2-B17Xbq z`P`w)i+p4_;7xfME|yVn(j?oQG+6^UX_E1ohj3LG3+2m58bv(78Q08HXhUSWGb`2F z3(IP7K46Sz%1C$x;<7vpXUfBTYfN6CZ}ROp(j=T=xn@XOpgv__VLC9dFdZ0}w2P;e zEs<%&tvT9}_HOhi^H`A9Fb8G7vn*`0aCq`5!kHd%OoR9CnRE;)@9;Zx)(zeEzpa&g_3Xz6;Cjy-Z?mXOam>a|Er|&`U zu|Z4K*&*<`r=^}lTTUbmxetFV^>nd5hj-xt<2$|y><_VUZie=ds?>1M3s_ZZf6yZR z6IlCvx>%V3@5h}JT$gA9{4m2{PXc+>S^Ta;eQ2wZZvi7c^A2z$(^%jQV8{9^)PE>Y zZ~xMUqjaOy7G=>8&N}hC4`-eDg*{Hg)!VqT^*X{J2imTsb`KJU+9-0N?gZ&TtJtVMXkE6kW= zxoAJe`8UZMOxgyHef|>OXkm{FXp!+bZjCH%0o-A|0Vi!5_)C!6)E{%=G}f8N^XD>$ zi{bk`c&4AULYlkijAPu4VNU?R^WR^Vb6fPu4Bk+a^y@+45E6pf|ik;AoFIad5AlM)u9q>)5Pw2rYK9ol9PS{eD6gtyBm0}voV7$8O#CBZgj zjT|OX7?sUb7)R@qld-LfRVtmM+S0|^oRWJpqbbrnZOo--U8+4fzR$P&HSh>R)}Q1m z*;J;gtLOc?``7<|-Tmud|N7TS8qu1pK6LlxMI-8Krw0&nCa?Xa;bnlU-&~k%sJec< zAPsAE623O>+Y<8s5@Cv~`GdK2o*so?^km0^mD4Gn=uqb=3fFopST|_}*IU;*N6}ai zTy+*)bx6h+%++0S6xZ!}G!_=`pVbc)?h-1V(kcC&$lJ6J(tUJ|-QBUg$@3-Cu`;(k z2F5+H*xwub`(l58>|5E~XmvdPo{atJ*e}KY(b%7h{bR9jWpks|>9R%2HCaq-d8XK-f@ z+LtSi+l%KY$A;`oO=r&zo&lfeS#czb*SGjjhhO?U3Rk{5tJgfEJ%HvJmBZj+u2Gz% zEY88Z@)rNva;%3y8FUt?@u+$!op@L$mo#-HjpJ|CE`n(;$dx%OppL4q>Z)=5_$GUv zlbj#jc-Oi!KR<%!XUXJTybb<>OwPg9`3o{L2a_JH+Y6~}TB(ofqCEQ^gC`F-FQD&T zd#XJYuKI{KReh93^-+2ko+HfRb1ZCd`)@ucI1=l!JN zVa50Q;4r-J&Mz=-))?Mbvg(w^0J1&D`#Ra4&1Y_jd@S#~Sgv=h!}CrezuSZJS~xdP zd0rWp#qC?f%l-e@6zKEmG}Sa^{+!qJ%c6^#e2k&5He>iy0k~1+uC1= zW)pTQHiM@MM;p}S~p3cEa#^-x(=9!DnucDjVql`#X3h<;YN)c+evRR+p@q9Pb9GT(u3wX| z-oT!vsNE!wku4&%o%kV@X>p&q{E|2p_p{2Xx`;MA;&K+l1$`Wa3Af7R@GVtW*CtL* zvsBzlI9`+8GvTacxo1Y+j;}w*x6Vfu=3tr^70309WCy0d7?Ul&wbP_EU$AV6^W+%j zXk73xoU9eIve{wOv%<4j;`&^Okv-bbeeb(ND{gKmsX8trX;>&~=ySY`n zPnX_v_a^;6QqA7~P(%AJmBXHwSi6QDf!b%Rs(skvJ&xoQ+M~VQ{aNN#yASI&`!U^h zU(f^AJ!a_vYky|-fa86c*`F=!%XGKK=mTH0KePHhi_5I_>1AYuFGFAAH?)3=t}^t! z#;xW8_3Z%R?ptAk9WQfc@*Z@33g~EQd@i!Jwm5#fXXl}Ia5@~Ky_ca?(cSFne^i`Tx!bVmQgq9;|4};h)---v zNvm{jEUE4emMPHhwC&5mOl{MntXb4ob6tjVD!#_Td|bXoi!Qxauw(dmiF0bgI^wtr zcVW7B5^Ans{0oo9-+WjwRr7&|S@xWSY3#YMP4Cwm3pPK6Ie2n>CgEzsnc-dBk>C!+ z)Tf%SZrc2#nG++;AMYIg(ah8ccO$~)YokLkZ1?$@vtje^A0rI-k9UropXnNG?*CTs zBf)>Xa}V~12b=d*ulv#Ll+X7)=Vwn0Hn)!wA6vXX-bwnwHO>Eot>PbV!ftUF`3|pX zHdlV){0rDOp6MEBp65R7%*dMNouhn@e2TlWq@jF2rd+dw`rdVZc4Sxc{L1T%z2iS} zc8yoauJMKTJ|yq$rJeK^dMdjTy(%vXkUw^O?whYUYM#Tpkt)ce#&^SDgomVES*`nxPa+$A_MrW={>uhL^R$nvr zPnf?9PHbvjt8ksU${(wC$M9?n?~UPoFLyNS-;s_5UXg&IGKD;gJlyEQ~{1XFl{`u^m%V_mf0CNJ_) z8s+KII69WEb1RKEjVZ;|JmTUBpPN_cQ?oY|O#FrN(_G`qApRl=6VIi%s<-+;_0E+v zuP@9&rf!Sy2E!o%pXU6qjgkI(OYk~YboVI0UNd4TPDXCKDdC-3|ldxuH)=Vdp| z3z*+1pL?%5OS$yE@XtxlkGf=;zs%jLLGD)#Md(}h2% zJ6p0F9^cV=R`$a;am{jD{g=q^q*pXH(?9+m*=yO^+=*}Pwd^$Wn!c^QmYrt)cuV%u zmzY#)n{0%(DdN`;lb*2 zX8cXS(+DhR|D)pTFTtXEI?x=OJlRVA&WR?%Jc57 z{~P8Njb|fghvqZ~yZfL;_=8mU-Srj3ZATW*`vFGY^wW^FGX*a8yDjE|#|_}t;@06fUuvw!ZNP2B1-Q+)A>3A6 z9=8p*9k&A);&$P7o5q!JM{#qwW4JQzIPP)W6S$MOQ@AH_ zPvI)Kr*Y5Vp2Izldja<%?j>A=dl`2I_X_SDu8DgU_ZrSiQGZ+qt{a!d_2T+){c`Ys z;`?#YLR&3G zz6V45w!|5(!FJT;?IoW6K`e;|MlW2j^Zj#SN#7i_~xE8@x>phzMY@p zP4cYeo!Vm92fu1zZqL-CcQuJ4dQ+Oac`sAn`oDrO$++9%u=@zpx58Syjv8}z-NVLK zOZZG(Z&`~!Xos#-*`Zp>zy58%XRS3?{il3{^BQor7OtlfjxTCcV;JHt;iPpFKJrW`%VwpkDNtKNw&Myen^2l#Gi z^F6d@D)*mwH(u{neG9#8y-{>8yvW4qSD8y3AL4wik;1?G)@2PJ*(y96cEv2evTM^a zBS$K=wbZ@hL=?&|Pei43iaBH=61|7Q{N&k$mQ9svDbiaeqi>M0|N?PW@Dj9RF(Wz$^jJcvF#!@8V{>$%|k;H;>nP zy0_K;Gwtxv)c@Q_6`?)atDKsQ${zbaKZvA1?ju`Jn{>dFz4NO#*81R=Hj?jq=!+Jw zT)%=jwyjK?2Me;^H%muJTGPJs?q9pH_F?dPl%>_bO>=qux1d!I*%mxjlqy}vK1O}J zt**NkMy5bnIto*1_8*NF%27^z|MVYR_I>(XHd#As{p`nbsTTIL#acOiUG!MiM?Ys% zG)X;Gx7HbSje19;4&rG|QQ1Wg;!Cw}(Ap%J@@%~X`U<>vWHx>Mw7xS%;uH_1WykRk zE_?Cx@2`CEbb5gMN$`>%xVDRYbQj=2?RQow-&IkXeDy|DPyeWCQ_;4|E18c;M?R8W zDlb3BdKcPyXUf1r@(m}`?d1RaslTGWe|5U`5p*o5v+~ZRy5{SfrEIRwY41?Im?}oa z-UE^LV9B~_Kj_NP!nl^5ugRbOw9DF|-d0z=J^JYJ%gR;Z$UOGI>94G0jn9eiy}RB~ zKA28r|N3;=|LfDKUhR_~XH6OdVbvt+#r|aoIWaK_d z=i+K!c5RSfB2DLtpPgoCi8LR4gM32fns=g0umgWPZW}I-+lm{)ZN|CzZX_pYGv&9j&a_h2 z{}Wof1v#M0+tGltOYOnuderNCKVhGr)jU~5x2MScl_F>JMeGX~8@;$bTtCjo4dB+| z*5R;W*;tR;fZK=*aGP;MxUIN6ZX0epZU-*J?ZWNG?ZFjrdvW`4`*B6wIBpU*jVs}f z;^uJ2aAn+a+~c?>a3^u6a8Kf%!c}lj=I7#=9*-b$Qz7|6q)AC@J`-g z;|;cFk(o-4I>ye@A`%^YtGSsvBMus}#H~(tW&B#Aj&d1+oaO)fS zC$iM-kAc4{jxYR@myU#1UOK$f$VXKs^Bx@eyo&tRzWw&8^RrV*H}r<`(hPD@k9QCq zAJV}d>1lM*D-~>u=Xet`D%P4hZ}7*eFO{r4^4`nj^9};*jqD8eneRi@h;+t=6!2F` zV{H5S2N=`X_x1HY*F-ftYV81bKPLZBwc}cRbj-Y!*7mR7^3)xJe!ep)U|x}YG(SuC zNOxkbT@}y3?0JThV@g)x=9!EqJ=jN2n|_4wllAkc+j>*4l6h0Kk9w+n{ic2s)l*qp zMq9r_RX?uRlfaYp@=X1ym#NQ)0@|3(~9&j;G9eyvyiuMh_1o-bMEF*}Hd%|8Vo|nGKIN0@jjNU%EE43%q8Y zbGhJP?K$*J&xHqTYgn(8M(br#cd+Xc=6eUvftND$2HYiwchNd48MO4mwP#d0&IQGq zY)y#Q5-!cZ?W7am(_OTDmz$F_%8M|=vygTT`iPZ0w*0T=>?%%U>QW?aXw#~k!ktX3 zGA@RxEV46O3hi5(F234MWoa$ieD&Q1K2vY<^y7N9{*pb<3d0FgE|p1jG`vY%HdAiW zOFr$=3wKAJdzO?r7vmCa&CNH~c5#oZQnK%-s(!K^D}JfM8P))CgirciA^NU5*OFe> zJl_1mJrcKnQog302vgdgYdAN*X{HtwZTqR6rSGM9t)Z>2YkTo#N~?6zA6WBc`VKog zf~n2bp0cx~aF<5Bv&k>6m+TR{Fu_$;#V>)!;Sd~MD_b|t6awF#DTt;#&+6`%fNei@ek(uK!ovLwn`v z+qiDRsk)nVjE@bZmA!H0p}IQzeu~#dyw*6KSG46?bIropqpO$nOq1;-+`5PBaG3Iw zUbqw{T>8K9L3D!2cObO&kxd7sQ5@+Is(z~5eEK-djFGDo^^MEc!#nZqk5FIuJEalr zxpM2j+Q-qGt^eVgxnDtCSAM~DHl+DTXG2P(epLEoT8B^dP+m%>wsd$LO#P_1>c?dM z>LaC5dpcY$%~I{D`-RDPO0RQ9;n07jJ%>#rwWZz~6pc9D6BnnogpRps*YWvw6&;&$ zKtE>OQD5QGnC>jvuy@{U+tk%xbxeUv>2jQ3XIYzFJG%aJ?ciwL^@D@A`WLoal2(M* zo=aMNN#R&Lmeg(zSF+s} zbY*vCR9d~QBHDW&YmR8IgLEbhX?@Od6=xOql3ZF-&b-CfZq@?u$K`ai+D{t>?2kmp zj&9_;`6T&YI&<3p&JJP&oc)K|M0uFAK66$$jC}JG&C$UCS?DnD!$^jz^FRxq8N`31 zZx{D%__70;^07HdTD67liR;_617#6RYg!xs)kgYu^-~|X{g#7e5-`|Hue&eRIhyNW)CtpI2zz&5XJ zD$@Qbc-C&pxIAai{Z($|rF_+Y9(C7u2eR)R`vZsX`6ci{7q5#i^wGzRaVGI4&-{9r zPsHmfU)Q#mg!WtQrF0wf*gx^m4WnG5jij9^y=oq zoo6pE5%&afyX1bQ*%`z*(R<0{-TzNETMO?0r%hbXf0*-=(izVm<=mcqQI>a_n9sZ6 zz4bPeSNL+{>1c+%z!-h=P@@++QK12JZ@q+vVX5XQG)Fkn=Uz{eM_GZTd8}BI-Pw&0j@HvIkKF59SR}NO6 z1g<^Q6Tr2fIYm12ZZdU|9>2=?ymy2)lkEZ7U(!Ac8{@jqGlG)PYUrn?>ncX6t+)vr=n6g*wEQt>rJxDVdqgd555DQOaC1$ z2mb(CcH@2;T9)2Ma_{stogrK^ivAe)8(I7B{xv(UQbn70@-Bhiq|3o`Uk(qQ$-%RF z$oRADb4aW4qp>EQyzOcmzMk-nggg5{8gnJWSH$UccT#qevvK+>@0+Yuh$CKK_}hJZ zpG`7q;Xg;%%6qui6o+dL)!nm994_4*bDjWP>6J!rZU|N>!xzSI$vqXO__`aev$8J2 z6i?~wI1HNu;I+CWVN-mQ&$skRv{z7iy?>JP;1^@On<xb z!1b;9&BYB$@Yk1ExYin_Q5iQDA8D+J;|sUeeZj8;CfTyu%HduKOzq~{K=EXQOZHr} zKDc-rs7sD>Cgm-d&W#jTcNe9rEoQg=X=w<$Nc1g{h)YO??6%Fq$R&!NLF zTLrEhY8S;=Kzc_D%5ye8GgY6rfp}z$HhyQ#l=gOr9xhPW%23O9zZg$b7~XxY|kay#Ff+G zS}IS`jH|1Qm&|jivgy8Q37zSDz5`NrhUuI7dKm-f5pB08gy6UFvW3mh%3LsROgJpP$w5JS$7vNSw2I*zcg9X zooRPxPIyH(DoZICudSf$D=35D!uzw@*X7%mD9cjq;^HOC{9<9IcIC$?3wNe8=PI4@ zbopuRDHRUYRwl~g%IWe**4O2+R9TYwx_Ir0GP^OqZ_$|lp?J_@xq1bAz;wu%FW7eK zx%p77=gS9cw_OUI(srHTGJVM%Ozs$)Ia+zDoJoCL&B?j!A=Y$j(@$wMAM4%MwyPIl zC1846c10py1y}{xl?m86zE|>njxeX=+7Up1N8k(Ma%m25VV5swK0ycca^@q!GR*&e zVCSN?OC;kvNI7iS0AVWMiu=YX%R$Ow;i7NBul(3J<*{>{aH+0>p98j%xGV1&H+iVN z1xI#=EZEM!`o4m>)P0+>_%>dq#M`F2@5^ zfU8^@i-J4e=NxcH2ZFmf+?D6HS$jWA^Q+3LceGqN6u*PK1vlj>*}FlV#9b&4<2g|t z?o62Y73QyGc|?Q4bB;Sd$?{}kcs{f|mcEs*YfFdQ!G%M6B#rqikRJ%I<{qUHT>oeB zWq&w1_n32h5Buyfe&LaRzIaR3UFiku1txw{bC-ijh9v$`^>#4vTjCoB67k&F@)nJ) z|H{}Bjm?j(vdv4fpDVA#CNQ#}Ue-~`Q*0ToySrHgCOYaPj>e}sv!rj{tgrku7PbC~uXSY@2HdjeJx9jP*s^8Tn4e=L>m1*jr&oRz-hedX`2^1`9`pAsjCsXt^KCrwdE#>f)7W+6NHSDM>k4z@ zS3HOtkAl1LEB;Gm%4BW-x^b%ZQkm37itl(c^=k*P%a6eO02j@x+$xX0*HTwk7Tv{8 zmPPSg8Tv{#zQ%&!x(AgkM{=BBSPmOMUtSpJ%Gb4@%g@oPaL;s&Tr|#=MsUfJ?N}dS zyeD`J#%0d4<6LotN8{Ixa|g5grGrMs?qJ$0X`HM64yL`5#<}Y2U~Zh380StFRb(IS z1<>PiWFeCOFlN=BE{)cs#d0C7LyKW6mWX%d60ntvV7Z}hN^W|#uxKAXj*Luan6g8s zIVeRLrNgEERNM4i$(RXdYMK`ujrZNjSs8rOxp2I8(u@16NL{Ft=-4YS)XVjo;Hs;$ zg{XeD<34PPCKTrOzsbF?_CRjU%LR5Xt+B^qOx32VvSw<)$Tqd=Dx6B=;(6igx0Ax!imdmvh0eTJ$L*D@yQ{a_FWJV5vlu2m zLHv{2%(j8}2HoxXRMWIKbyFLv4Yb~B?0ZF9KGBG4zn|4U9mPi)t}P6mfkR~!pOdV& z@)6ve<$ukd<%{NIi&3_SU0k)7@Ob6dZzt0>@I-1~;g~NcX}prnXC38IorLGzU*&8E zoN6QWgUZp#f90t?qrwDJ-fFL8|LcC)Wjeq4ZS0>AKHrZ8TRz<*YcH0otM7w;nNNjN z_=HP17xznh$-;Amgnbmn_bpuQlpI${9LaL2Z;jnO(#mH3Y}aP`_ETn!&>c1PvBs{} z4AoWR#PzK!Q*y3%^N`Bn+C%A77L@_pTJ!r4S3ieOy2ffFhtI*KpDEsTFAp?6xb3wrE(JGwhBMzhqc^)ZP8*7|M14RyV{_`MI^fIc*D8TzXt--M4a!!-E*UIff6#@U1aCAH%ohm2RxMJ(NFD-BFQ$uo`+gGeR#cKIhOG zhq+raC>=s{82^R(Rwwck=jZ9{-{{^rXFq;W^So~xyTB>Wiwe`aBeb;M;CjZ~5O<)B z?icemG17-am_C4&(!!X2o{$^D9-m_$$6&UG43AG_3?Th`x?9(iBRtF`#w=H6L= zzU0HFKd_py>~A@(yB#_1cIX^QaulU^_=MyAUR3|sd&>2X`@AQgOIaMGaX38T0B7hG z3=Yi)i*bBB#xeT_I7%^&%a_108{_!%H^5PeaijudIr)iN3p#s$Lfzb)mZQ--FR?m+ zzRudXAE&dnmTWoIYrb!@-+noj;;bCi@w0u*E#0`}{ZXgeDH|iw)xG?0Z>sIPY+2*L zWe1|so|~cq|5MMGs|T|7dvE+Lo#_3kW!(8H*7o4pqom$aI7w8l25Bw!} ze)nCrqS0F(g)hIq;f41%GT2(*PW)4Rx8<=Nf-UwPd_T!|YcO8zj_z-Sd_Tc=wsL=C z7ymQdtL-*+N~Ws=5i)-0&kwYn> zWXiWbl7A4K)~3pK6Fyqq5&L26n{n#iqL}3^7W8O4^4x6?4`SEqVblI?ycw)^m#xa} z-op()JXBNvY~#P?!T!?2rhihD<2N`jcX@W0cIWJzat7IlDIe|2IlRi1FUvnr9m>hK zb=RHkttQ@Bb%%+k_Ht!b|B?SvmuIq7Xd zu5`UQ{|(`1L*|@R>7zAszmhg~`!4fNENwqCEZvSb3Gb5a0rgk8KBNDnEp~mfdD-$? zusskque%f1U|9(t3tEV^0R^Sp$7QnCQeGkbTgXo&A^i|gJ&zhu)_|3L5g2&OR2KW?w& z!cTg%TWIBA8XpQ@j6=4l91ev${!%#hKc+Ek*RfQp%dA%=)~o-QI{Bt;KHc0y-DU>S zX&JV9Ei)tdgS7ROVE8BSNARD;pTh6LKcR2jApg5!*r0s1^QW87gIluA?a<90=5F;x zigvSOLumqwX9<6n^x8LR&m>yb+&+7DcT;c8q?zAm&ki@Yc-}9FCNp_tNjDd3d-*Tg zRNP&+E^F-iir%&hjNQXKE@dpxF53TSO;(?252(FYhCN^hIChXOSG?YwPjnZcTjD1B z!t^sbrGiVRRPyan^s-dWR>~EUUgh0>EA35QHXqCPC-Z9c=xf5&U&67A_>1EzT;)<+ z7th%nQJ>zyogvYnw*b4Qxh2=*qa8*me68Ro8e zSv<)C&#tq8VfM81^O)uwjhiXWJsLmwBlv^(Q~1O9UHBvTgZNYU!}`W`#c>p_|8LW$ zjjAcyZKmtG7|(@%8ahko6~1&nCVlt@=?iAgWG;Rk93{d7;o!}0QU$wiWBHJ?DM zM)m~nSzXJ$1+7b&9CVwrG_CQYu_PK0Y=AK!T9?c~H0j{$!V6_Z4$i$#6Myk~CR=U7 zBl(8P<>L31$h&0oz6$+F>BA_k;;PRjH_>>~x8RbEq$!)ed+tFNaAb;ofz`8hV_Q1Z zDyz|B&q3RaOYLDcwmr&y6Du3gT_n{>?|o<;7Cy-W^k3)a8oL@3x*x7E$paRLNnWfl zmC?zM^u6X|R(~g3w)2r-!}rDd&&1VtJHB`T{a3x*f1N*Yzr>7Jv&QoMPwCIj=fAtz zR_R`2SJ;*~>_We_q%hI7(p~6_mh76S zFrCfr#@X|lZR3`<9bLQjc66t9cm0-xEv8$=TRbKNTTI7-4NJCKM*c~^YCkKQ6FgHu zA2S|Lt{j5v+}pvGMliiAl7xBGUvQ_Vt@^mQ&aOZbCi!17z0$VQ_O1?Beaz}78942y zHQxQ#xYvKROY*;yN4l~*{Ne!=U+1O{=Gss2rP|0ZFT{22uekk13l~q9T&Hy=DBOZO ze2R}AW^MQy?#IPtPL@q^6~~pur5DV#uj070t{lmDt_(?-%iqC7o5HDnZ=sA1pDT-C z3fFxEjc;=oM)@+gJeiUlU^c1**kx2d_!gJSr~k=0NH|=1l3}d{o93$JGiDA{{$AO_ zbPq!FqH6=;P`>)^$dd(cY^y9eu$Pv;TPoJzsNESAs2a_b)CGO42Grkzdc z_j>{V2X`7>wKkvs!#mAr{xE(Q{s{gc{uKT&ei!}-{viGo{; zSi#n$=DwZHKZ|X|we)Mhy|ejkzD;`4{&0l+X`}h{Q^H3&oZ3+B(Zd?2I4Yx?H#=Dq z9ZYdPn22N2B*I;qyBEb-k%*%-_bm$V>|V&j;rPm;I9D&i@fVB2Ke#CT?4s}wFA9&m zl;IKJLL=4J)Fn|4efupJ$GJ6u$CWi~#jZ?YJYv4DWB(vZwpY)`&=X#EM_o2-!p@eu zp$Fx;sGZLy@G9@}vX+a=_oGE|qDwB0^WnvH@G=+S2~ros!t}+kV#~#_a^_-KrS)Q1 z)OInfXW2qOoA&LzI8M-YF)UnmG0dIAB;})TRbJ!dseiz}Bme8{leoX2ajWqv-cUTe z?o6li3wu7n)pwec+H-E6LLbpX2F*8cLrb#n*FikZBaXhZ=oew;Vd-e)9a9>AZ%AI3j{KO&w8e+qvP|AfAA!~7qN z!-iuR@kSMf-$~h$djq?F*ko}f_8ZzWv{MJ!sGJ4fbLC`h_Swzm?wIBcts~-#)t~NL z|2yApb@$vH>cW}4mTH`@LrMy3jzRVn-pNzclLY}IP^X8vLyFK@y-?i+{`hR8q*VtBGS_j^!OlN-!+q@U$ zb?9fdk@D*4wt0=CGp6-i^OX3S3-ml=c#;QR%-f3Q-mbow;g@20&xTgs1J*ItEm!}b z|Kv>V7;-S_jA@QFbI#zu>@!)-$#3P%c{Ywee}=o*MlWaCo=2Z@h6oGV<#^MFc(X`z zv3P!s4fS8oeG}+PjGMiI^sq#yg0D;4H_2r0Lvnb@;I$W#&G)catYtq>IB`3C_5-Db zyEM9YWnek2kuydsLdmJj8)=yKmud-go<<&kwFt;B_;>nbe z!LXN6xO7hD!^$>)!KGue6x^-V8S0^UMpr{^$C#ZR+=&j_!ANJKv+&BDm*n5Ht_C}R z`iBzsSTx3jU%H@bH~0Nq(YB-Xp;XsONivDq$donFuF@S^s{9?V16RG&*QQPQFMi}7 zvwn`IL}%`QAM)A^?n%b-DV)&IX*;6|W*&nApy&6dS2}x%%BJvGFAv z&rz{4=zA^QIqb>##fI#uNhfWPG{i}#n2VBnY(8s!x}tUDOOn5%r}m{rHuzE_74kpF zJ?b2Kls@w~^QUAt8RS!X3#>Qdes*Bj4rkNA@ejAKR}=qW<{joeuT-w))Azre0cYCF z)*noJ?`kQs4wkh}-p(3XtZVH<7ossxnrVEHdHWe}?o4+yS(9!>JMUPug@@Sh6{|ky z)Y5I(7U*r7vFcx-gJE?jj#PEO%jiACVLH#qoB!B_Ghv6SIli~%<{ImHvsAhky*b`> zp^h8M`aWFUSdq`$8Cm($)fURQnfSsxy-xcZp6u58k5k^eB!ADARnC0XY%us!tH^)4q}m z$fm^r?WcQUj{}#j3hrt*WPgP*nCPn`*xj&wH5Ays+FFs%ThS%?hpOA+e%?)9>MKhV zwy$=@X{{cYrHxXYZf~4!+{8(yJ5rrAd5u=5OSFZ|Il)b2OYBv#Q9V7Yr{{{Ve;rAQw{xbG_b6;xoGmi(}JL`SfFEx6Z$Gg3U z8-I)5p!Nc51I{2)Ge1Zn!_uBWYq#*en==BHOLP3+px1bWxmV};)+P!1d!cN$9D>J} z&s^%wHTom{A7`$bBR}FoKhnv|F`o{Y`I0x!3*=dtYitO)dkBuLgn8&j%cjgm%A>hh zHd)p)pKc>gOK!Znfp~e+?a1;CeQqSZ@?7U*6U4XW*zC3&pG9T6(hs_ao zS4U@k=+cESr8x$COFMew9_1;Z-%Wmkmx137uJ5(S<;=AJUmYC>{+Vv{$kW5NetsJG zs_1dx1KwQ2>5`{CKT4siEdL3@))Mx>!18)=@D|!;A?ze!>j-nY=E<;Agtb7!oYNb7 zftr)o@I6p^r19Q+4l}oWfq6MwUkwej52RfVL(^)jd_C)Z>2mycj1wl>&WB}SBtSjue5sJQQSG~m}QZVIiA_zh~SkA=-~v+ zxA`w&n-%BH{6KuO?&@kzm5y6Bf@jVz*lrcid``BG6F7x~GunE#!n_?V;A2iWBORD- za9|^BX*}_{X14gbn&uLvKL@|qQTZHcK3D6GKF9a;nR7RN^Gq*wa`#wVUH&oo|0kUM zFvRX{sa(x}_Mw+q$LcBXiu$cB>hq7*br%y`TlH+HHp0HQH`Dkuyz!*>g)`mU&+N!! zqYGZRl{&Pe*WN1LKdX6l44cSbX!Mo8(D1RbB%W0FS)T+Z{;$9Cg~qxvc94L5#q13% zf17XByPOkM&HWpF#g(45d~A#r@u6QljybEv`6E#b8*^Z zWx)?t%ci^&@XPwfPI6BEboFE;f2#UaDF0CPIPt{eNY_c;hh*#I!S_^v@;Y}s( zplI%CfmhD@hnYVoYJoRa^RwKUnzA;lisi9dp)wZp!ej8lW3^ms{WNak9)L%-c~4ht-ld}a ziRw{b{&;mRCm);HW%-lUCkyh&s>e+D0q#WD@8j|JsrcK{g`=IZs`Q0KzfW)vMP+{c zUir|}PWcC`qABr96<_@Sx2o^`DtGaU%*Tv#@l3n_SIal+Y_=uE+vhtUKJ9t%GVlv+ z@CGfZvD3Uog{`RD>*AL?JiDgr{XWh0Ywol99gg3Xy-xji^LRJ-L(X$knqPq@?Pix^ zxXyar`k-~g$zVm>AJRVDJ8F1~tIgU|WWCj!RTuIW*tL6?_6@Tqb{n3-=yV{L7LV|{ zx*yLHK0^2j{3-k{{AcxzQ`)W=HYh*-{}z1dk<1dGiS!~Kgi5`ui@Hi5tkbt^URLq^ zFEwQ2TWg`hwcZi;tlHVFh1!?6_I5bh!Qs|IvtOcrC4c(AX}=-we&*`YS}KCy;Vw=~ z$iAQXx=r(Sz*z9^XAPJ9;t+RX?r#hfj$oheezX7N4ISoc-N#{`E#2SPTDEs{{OtYM zTaZjg`?7Jy-j|6pQQc6K&z&S+{vqaW`3I2A$e)bqmHmJT=N?QP-ciKx^FXe(mpjIuZiUazsnq`d%T}{0)F@_!}aBP+5`GI3Z2ffmlxmJ%N}?G zbJnHacwBDbI#3O6TX=tU!0b&ASJ&pWmz}O|gfG$ju&(f6V=HT+=Z_J8l(z{Ea6W{b zDtxf9K46dTA7oCMX>1^#Y)|HM*ggb@;sn_T8=F1-KfwLUnZ^)lc4t{v**EP7W)}8E z;8EL!;K_qW?Yav*+rXo?-0sVlTuc5~)$NJ)f1Yx>`kw~gPg!+8b{ZTRf3*qkqdW@N zec2Ll-IvYyS4G(ZjVrtZ3Hpb>+Ps+lr>YOUN4&@p!bXWZ zT~(X?2){tTBv-v_ERbfoR>0h4sX9V_`$jGVFlHW8vG&8UbZc z8jXpe=)uMS;c4y|ue**nf70B$WDVaMh{lgp*Mi55h1@5&pBD=5#scqOfLCK70}jm# zKKL~j`fB?AR<-v!?rMTVUZ>Z~@w&=_wzW%3y zn{lvyYyGvAf(_VlKp7RjjPO^1H~%N@jVH!|!oI;h@Frp3{rN2>%#8ts=??ih!gPmR z>6EA7TRzlUe+Bq$IhDocCAjXCp8>A>oTNQAven8tz|C*mXAxM+peG&Zyzy^vbgXoda^P2wv||20--2X{9=#F=@9 zF(JFgX0JQ^D;Mu|wO7@ibXa>={6T!;nLX_5!4=QMkJEr-7MR`Vj+=e%4EOD3*kjKO zF*;vm)l;I(ErBGCu1U|2=FlXM9NvZfo&~Bb()soTv1Ixt?z5x3&*x`H zY3B*-=pnE0$0OlP`4dqVn|JSBek=Rg>zdLNK8&p`b1yEIyL=FRa?giGp%LNry`Fjq zk8JG8!!KuxAHhG1Kc#lTKcR2jApg5! z*r5FQ|Np?g^jM|0s!m7vEDCk7D%Y=l4s!rymBQy-yPImG&QHj~(C3 z_~i?A4P|48eUB-JvrVUOH#VFuLlWk64U;fun=T1+w&{|vEOG+zsyb&<-IM>N)9q~O zqzhhM?*Me~-CCD@d)d|LT)VpV8|zoq*6~)nZ0qDUJ<^a|Xc=*v|KaBP`km->72X@& zwY?J?9fzvlfZzY_|FWe{tAS%6+7QRz@|&E26mF=u!jtLTNnwhw{lP|XXnzophw|Ob zx57TNpMBqFhwDS&P#zE8oicemu$Oa=f6v}v#}-P+Z>r}_x;4?Z z7{2{p;T^B;0Io8GF??4H-yOsE#P9;;QT)9tZTx+g$>+_26ux+5_Il!L#hZ#R&1WZT z;z^yH!s<2djP)D;W%<$%RQ-$|=8D|km9V8_&MXr)g*^6K?jFJpR^x75lZD&qs{9eU zDn;Z?np;yoXZXykvc)QXGdVAF&k0)s%&}8pbA$d5^Z!KHWFOzq96cm|%Fe;t_5Z}C z=6?BI7Pc?(e{bS{A@P4t;=lIsF72+w|1j}?N8dtabbFNK|6-20jk|^Ed{DpCd*DoG-^yAmdz|0s zUCDSIW&C>e?%u8S6z>^-V=ZzDV9S6tSKM6x?&>YTk&OV;n*|=SG3}M^TH9&j9R)V@ zek+IAa+OUx2kbWg2D4YYJ;rwo*!QloFzx4rZv!yx=^Re&;{-nr+{reye-rF+VCGDh zytQu=>h;_S%IW}p6_*x8i)QoPrG`MhO0#9!IJq+adR#=|d(gyHck@(F5-XsV>Z{)AwQU3OP<{*6e1m`k>A)AiVZjaOMGHEBPJL0tA5@`$MtF(LLwEN<; z<8i+Gyke2$uMpN-I1vP`P4KrRU_wRkN@W6L4EKh7wSDMEw^yv@*OcW-5S;( z&W|*g>&!n(nAQ@#ktll6TrOIX-EqPF7_RwD@U<~qZ%Hb?SvP^NkKr3)_{OY_AH?v@ zF?=Y7Z;j#koW+wd_Srlw9I5MGe>ZP+q%&YjNvvIox{O2HZwmfZL24!fnOnaocd)aXWA!ZWnGhZV#@2+l$+W+m9>a z#&MIlX`E~G=h;7Jv0eQ`_^227ufF=>VAy;y-e2d@uQ9aS1?>(l*jHCQ+e|&T*P)}X zOMLcp^sPH5(3vEBS>5H6M~)Iyu=V91LKo{0?~xsme7@Lfv zXBj(ZHHP?48O-?Vy2^|xyVv%R^DN}0d&Z0R%ZvBZi}%lNAMl@9!`_Hq-53+Sp8DrX zuX#(a;yuiqN?A2dcEoV;DuVBd;k#qF_#D9tF???f7mp^Mca24FsxMy(B;hx96fO`@55-!5Mj5~vS1$PeD#J!4p4dpfgw2!Evt!;i`V5RgBU>BR zm}ETSq<^S6T{0ZS(>$;50QCueN;gF3GwA~RT;XU5kkvAGXW_%O|7b_HAw7`p%0s;0$y^?c zvS-8IdEp@=yX_}l+Fuu~^&T?v%MAMOy}5^g9b%vHNTbihTOH|~*WOnl9dUf(tP5dc;ienAuQARt8hea8>TAZG;~8F|T_v|F7rHdIJob!kjUc&0A5u z*$HfYYCK}Eg!mo&A0W%g1Jx3VWery%!WrJHU@%JMyZ9cAT7#qLJ^W7Xz{ktg;{p79{(TYe%rv_4t&#Qvou&6i-N@5B@}1G| zP{!8E4bk$vA1PcmpOzCQ8}}VSD}7h0WuhA*$`_@=HIaDv<3U%{74n^36LD8AS_dp0 zj@AyBnCGCEHJh-1&OL{mp@*xY3Ch2o{IPla3)1IuedbY5wS7RFssCJ?tuIN>1pSf< zdLR#Dy z^MCrxdT6ukcd&oljE?JAq<6$LhBjnnOKq(7bIjd^EcRswH#b$TL-04H&t?B^5AiN5 zMRoOCDxa!(`A^nbgLK3kh`TlN3eVNJ-%-mH9;Th2sI?ciA&I&zveL4 zUkYCg+e;rw2Dp#@&^XZCu|E=DI$pK>?~&?w(elNUCHa%p>9YL8ycsHgs(Q2{e++$G z`RE`qZmfKV_o?FlsZg?+zc4ocgHZ9p+GgUng)5^z#eu$u_!f>1BAc7>|vI`pKd2X#0KY&ZDUQMXL68k)^SEx|xE7of*j zP@8GK2kx~;fB5ga>Ma#N`st;Y)_=;{b*#eJ?7We)K4_Tpp7z4$@&7C;zQ0`kea^^K zo}a$|(t5FQW9{~pH`dcWI(Yt{L}MQ=SIfww_IjiT*B>t5R9AW|C`3iVzTzLK?j!BM znoH{^*KnuFr2CIip)^x-Y4?-1oW7)@B2tx?o;#m9wpt`RH~lpa`k;GDx&ZD71qkREVPr=_7v0{cbD)FOyLNNm@YlA~zjwtA^|tVu=rhwg zGdft^@@dZ6!yD>ZUvt*F=*}_Dnt<;PAHk*odbGa){b}vqxCL4pt?uz2Y3NM-J2$st zi`g3meAmQD2*<}AHSvsZM%JfQoi`wE&XuHrv3;$Rc^5uUC-2F=PAjciwD z4Buh>OfUtV9>yI(wlH074G&gjPr%CaB-cY$p1A*#;*A7!XuFsr;l04;9pGNwFLSQM zofp>h+2N2qAG%TK6wVHBn&%gFx4a|E+^T&x_Lctb-+E^e{Cekbr*NNjdPA|TCGqAz z`P!xMT#{`wZoY<{pE5e$(6ZJ?(dCmRY-K_Rq9xH+(%z5WpOa07?mX|5K?kB0jT?l`;O3#5%Gp9n_2tG$CY2>Ph--{!TXTLD@JzzSG0T5 z3^3KFk3Df4<#OZ1jn{3IVJj|+`)5;*mho6(eu#rl{k2 z>P-J=FR#0=8C-|C1A7>nJd7;)FtX&s$dV5?eB1zTEp8nyhg*-^fZK=*aGP;MxUIN6 zZX0epZU-*J?ZWNG?ZFjrdvW`4`*B6wIBpU*je9TSBVC3r^UU9&%6@k}{U3OPs8GIE zbD3z-%Sn&=_IgWDu7*J|t^cVU@`&uM&^P*&w@z?Rm9YeGti6-b%^lJAb$sKd_&>rJ zI}sWis54X7H4mP+uE_@XU6L7fkcV3*+RJxG!ub+mZq0CeHNBaX4k>GqGEv?v?Rhlq z{eoE`oN zakBP%sx$rddtSaOJLclchOqNNp7j>;8OW|^=*?=?|2onIrRP~Yq}%q zbJozs{FLX;bZh=#)%TWBt_kkb%r%w+*FF5lNjKnepB-2RSYL_seDC19lka}+y!Z3H zfp6V^8(=TdLHV^tNe@Bu9b>SXVh+q@|CDut^HiVv`1pM}cuxF{**OE(y?eoB2SxCq z7``=zOIJg1pSlT;{_8x(!mO_|W_>63-YVZw%2&#My)jp|xQ~_Q=#L`z)Tjsk@q*1; zZPLznEAABecjG@r{>$-Yi`bY^9fkL0`ayZU1TK|9wicAna@tL}6z0;Y@0HHgOY>;?YvromE>VB< z@58=W;nCCWIZH?4H5A8;j~KQVnhOK$B?4DG(Xi$^(Ve3)eJjk_`d6LLQ77+Pf5KS2 z9Gec@Rp1VTY$kMg+)u&pj<{ok-+yqS zjUu$Z3%fg^XK89}IMa~5kABL%7npF1t|V*GTB$PZ1FkackDwv^Vj%kkqt)@U?X$@e zbW8rz72Dq-eWkY6TBttII_TQ8d`sLW^pW;RrEsosG$&gSYoY?_bqA+hP&rmcbA*+$ zljOOY{ZA@7=0iWgj{@r?es_tv6u5~CYvuOB){thxBvY zU7zE?_W^%=5&UuB`++~P2>t}{BJh)o;3t8P13$G0ehT;`@Fy3+p9DS)Ty$^B!(K)6 zU)uAdr@YCA)?(3Bro^6wzB!J)+%^xoS%UuBiN_svvxfQ}@8oo8&b54v&{b`bm8xTJ4PCV_bR-d%uTt~(VpC7L-(jM_s-dSRJ5zYB}Xn0rh8N!#5MP*NUt!Z+e?`4 zQmKv2U8+R7eT3;gmAOlmqnxBk`>UhZQy^?=C^d)>7VPGgegJ%&l{cbENUI>8OKtXqx{mQTMfTjaSY8 z_9%PrT;nzKzb*1EQ{2`lV|>yWpZLZnF22gFvDnLhl~Mou_^&cameHSLT;*3ZzV(xz zc4=sk2aPw2g#n2*10FKNm22JbhcyGJ?VX%$oO)ZCVkx@?o^qzK;=V1c`@DI`{-T{cHP^X(y1en|9PvVr_hx}B zZ{ZW~B7CjD96sSv`rY7h>3ibSJJ!lML(22YUM%BC?hT6NYKpx+nBw9 z=9o$L28@4P7T1gG!}a5Q+yHJZPV-R?w;s0vw-FcMHsgkHTXA{ZHr#fc#$|}xh1-qW zgDc?n;`ZV85xEa1rih+!@>}xO2EB?p54tI1gIO;5u;KxGb(0*M}1wen5Mb6785*TYj{j`a|}q zOTC`u0?)0$MO{+s~-q>ReH9FOA79Q(g zD~-+yl*eE4|F1<`{MQ~zwI@mYrFd5 z{moTBV}GN4%kNPh(OhzW^Z&?}0(?~}5HI4L?VMqa=6zKde#X7s*Z9HQ541PwLbq!p z<7&Bdyuvx?3HxAyWJKtJ2F$gDVPnheY1T7W^p>oBu{mJc*Yp+Upwk&>#_ntSE7%L; zTl<{u!lCL`{=d=wM)Gsug&4L500ST7`*Mk<9j71-S@*?zQ-(X*#{BdqI`4~D_?tA`H~eV z&3t{oMnBS*8Y|lKx|CuQ!9rey{+BHTcs8B zoc*1jhqqW`_(buY{Z)E;tn@P_8>NNCQ*r6-{`)+FECYT^aWA^Ge%brv)`5;WJz zpNjXQCxYhs+wA+ZxlcUG+VMzZeMM&#vk_O|&nm9&J7kFCm63Vmc@KT3ji)$@t8%IT zQi1qm@lT<#O`p2<1E*cz`1gJuxefaX&bqaC@N%|al+L9|_GL(4RtguU371N9E&adp za+6PV?*s5>_i{c5em@<_&Pc^SVEW(lMoigKCjL8LH-5Cz#otl)|Nf_4;$=1Wh?niA zkHpJrKI(wqc0BAmu}Ro=$;G_(e@pP%A-uNM(yg?wa3*=}o-4Q1^3e2?@Wmg5*ItUp zzLGeVMLf2~OOnS{x_t@Wy7M#F*LuEcdFx30&m!LX`8VLLja+pRZ`}bC{#uGVf4B`T zo|l6`8Ni9xejHwVFV68$(~`r(OaD3Zn8$tDRDt#@;{vOTkb}N-r>(EZc~F6QN^P@f zylD(=E!|jq2HMnIueKNemRy%K#?(g|pRB7j6P_cVcx=jVC7-o<&4sdSXwPLdzO-&= z{AnyIEQcPD!gH)c>lm*JcV{vhYsN;ke_K@Kz@+$<$!Jn_V?B}mJ=t-RedrWvO1bfL zTla1CFn@saE$KmF&jNj@uDsUyEqo&n8s5@O^WCFb~ zi+9x8z^}G^1)89{&bGwq1XFy~vk%%z<@2=(Zz3wDN2435XC`|CI_{G9>KqH*C|oP) zON@K{FL^g$qx_DV`gD@J|0;Vo^MT4d;89M>nkx?1GNe}@o#TwE!(%LwZ+GEB{S?jB zg3t36q=jy(I+s!z)z3?)kF6>x{J2G9DH7eP_%8@>e;a%KFg&mah8~8?JCkvf+>#DW#Tls(CRT} z;xt;j+;~|>A85Qfd?p?3tnzR+R#TrO%ObcNW10`Vc$}I0SRXkYmE*A{zC`0iV=e{$ zp5+J98Ol}(vCYbuo9X%#;|n*8;||e`?jH^6{t@?y44nTX`sVHt@HA;#HYUd)XKEUQ zxtYf0jKS;}b65T&&@HrvzJbPH7>w35##ASbueK89_;N9wp*$7;@cg(_{gdNPIQ}jk zcOGdJUocm9H|{jfx}imlKd)sp;@w3v{sywlalps#wdWwM&_mCc|6NV6p5>eE_zTL_ zUuXPd!i; zcwN-Pt%v%rxkO{HyZ$;Dl81fp|!*4an2YTR-3zY_MVf*@JFjp#ADdBG3|DOajSM!KV{=O ztW1pM3}d*Pv0T)8i2o99G&>rlSf@vOq|0dEhDhqQ=-jj=fF{71%57pFw6nGW8C;6F zJbSCwH)JV!??CoD?EMRrGt_!@M|EpuS%dpfU-X!pxPOEm=CX#@Lb+OQiX_AHo+mCc zf=-{kWw1EI=)x6^VyYN8d~aP2yjllYA9N0@v~Hg3rEJ~QWg}&~gSR4chs)LJ z)O3_8dIwYoFKz3lvTrV-6Pm-mR(@Fn9T9Yb%jnTBYpkX0w2R@5HP(bbAkU6q^Z&=* zyGPko-FKe*+-IqDk&bW~mr*4gK^dw|B^+UOTjOYkBPgH(W%~jJ$g!4luw|n-YWqUy z4!y!8w@OudwFFlW-ZEUo(}cysv17Z}IL-xZkEa!_62UP7$4m$;!pj;8v`%En{aL*ze_|uh~X#?A7QU4E&OrQduW)XAVVgivE6;#o9-UD<-aUGzSefV#?DKRtlbXHUPv}D&L;W~z0#H) zYYWl#q=;YBZ~f|TF24LbH!ptcSIf4%bw~H*%c|BxUr^kzgEe9oK5#zxcU8N4&P6Y> zu4Wyrf9d!}`#3s-LU4sWXY)&>UzwD{m%EQk{~2oTM(sIMwp#{6SFn@3khB$xInN_M ztm|w#=9{_q;L>qpLvy$6q8+XTJ{`Pl0|o^11NbF`kMETlGYNL+;JSI})p=yk^T?j( zp$F%YJw>j>)!8we3$f-p&#BGd`fgiVCagqW~}u$8cl&>-AFxRY=f zp-Gq{>>}(Xi~-AykhLB&COk`?+l-g@b`+ZSaqtZGVu=at!bB68XKkOo%69Mc$p;5+ zB^GYj5U+M?JG8t{8PzA4R(&hN8yx;v5j#2%8&U8}u)McZb+hjZhAP3leR3@_C!UXZ zH!vs2M?>?00rM-!?v~RJ^Zp~ikpcdm1dhB8_95~1qyX&1t-F)&tgP9(S>Ah@c$)Z# z*Y0j2{toi4%`TlaOk6eP#G@U9b^KrOf1LKMi`3^|VXrplZsWi9>v7uX);fJL&HEW= zmD#i~*1#@={0$BM`#VfTIoXN`k8O%qqr*S3I8EOx=H_l8II*a`RAW*MPb?OOX4cjz zuX?=D+S*SXwIlII0A zWFwYwx}0$U?k{6q#uu<2c32aCD%rDkkDb-pymZcXE`PK)d;V@KxHh+)y=Ybq0mm1i z*T?=BJ*Zh#T-3fcY#PqLF#TEB@QZ@y?a40eGX=}}{y#?Fz4o4Dt0At>Cz}5O@Sotr zw07G8_A`y~)2t7{zV;T4k?>%daniVIk1@!=uY+tFE4pbFKX1ieN)4)*-t*w2l zNqy^hcRE<^+SmjqZvxf?FZC#ejfgzKhT2~SJ_Hx)gXkC656ib{gZ7NURvUS`;6Z(3 z?`^6+o|`j9a5LRtoOss+e*%o1SQJcDfq}b7ucH6*MrUVM5*Np2XWm0>#%E{NQ=jUZ z^-T%~?AdF7F|v=L(=Bv1rf}c`2lC+)ywp7+7+|eRhl;GzZlJxdVs|XMMRPxM{w(`u z3LC{sffK<(hU2^p$C=yS85ZV{KlH~pmsuy;~6rN`#L3A4#u1fAVrKfFcs*iGFd8{bNgg?vwUB2^~l))v@PMUQZrag*fOIbHVdGw3qz9Y;?PA|DoAHVRJF zxJSHm>HWsW20tLkwuQUILzTmHJX@sa|COgTWrB=W3-uR|&5Xen9vW!ha-K!coF8!jA|i z2up+?6MjN4Yv?~=fKVg&gdxH(VT2(1>CO<^F>2bocoywgDmLwx9o@Lo(T!6r=AsVI zXR+mlb_|)Drq3BcaP}_XQ|I@qg-I>vjq8T59c095MTBecGjvJcnIc@HP{AkT?qTZK@ zHxtJJzM?Nd))O_8Ej+)>^NI%Y3eJpe<^ML?obAnyZWL{zwYomY=tlZrTK7ShYfL`2 zFiE=jNypdwJIw@RFh(67>nDy=x^Xjo&*{dTUfjfcdf#iM^x{_ji(b^ZRMCu%Rx|~> zP352&BgXAbG~>HY(~P1$MK2aaH}=zv=xx@~XU+xN@%r-K{B84g7+;&B9kmX3-o6W3 z;vQSLU=CX_=!K1|7E2L6A)}J5#G|BD7ezaU8SUtJWAMbEKyz+rdaS*j@Kfp96Avxk zOzW&gdj3COd*YczTaMQmAIq5Cvcoov;AcJ&oi13?JZRp;cQ1oBJDkxEO1q<-&O@2+ zj9I}{`YquD*%*C>y`~za@~m7Qp3|GZ3cV?s(7~8V=f;2wc15HCoBeP+$2dEBvmttu zd#j-{S1N9Z-XwF60>a@Fes2uR+X!$-Eo1px%W=?bNG?VmM@Rrk@ULValN8UTpoDpsD z8g@Z&C%SW#?;CKbU~ujE8SUwBw1Ov{vFnE==>W$%DJ%({&N1WSUgowx4*j`pT- zbluQmxegq0hPe{I@9p8pjsK&)we`ZA;7Ie^4@dd`9FE31z=0L-r!hd5Ri_=Dy;eMk zU`lklV9L`Oab!w@p?thmm&Q7$J-4xGuOqZPW3~}QcMcSdc@?1WXkP(72EWrEDu@@O zzBca{Nh_Fk7d~cB!OSGf`Om8lQNAl!D)64lz}L-s=5p-s+Y7loG51L|3~f>4E~)|h zaL-tDE3yTM_u6vfBX)(k340*$QQV&KIy+|@{=PTV=2L#9GJCjxq4UJ8ls=J;9h!u1 zZgg^E@e3vM;8EG48*{LCRnUfX-m5F?i?3Yf+2ZgH$J@WU5`G4J zRmJbGd~t>z--d?rSBQrdonaSNRiG<4PaT%7u#fqH4V$zRxYOM?lWlAb!)CI{=nO39 zzdFdSqZe3HYPa+@(+j!_{_%}XqqfxRly3qv%*mAHuB$aC7T3kdy5Yf08#-!qcI_*d zH5Su$7A-tjH*Mo=S7(1i(a(&F+IRL%9c&$#6VqP!$G1mTcRdWp=+wg$ZajPp==^Hi zTm)|&0k``SANoc59gFTp&(fEPh7;`IyZJ*K(1&=`SLv`9U1IEa8J~zUuRzzy4(GeX z>xtLVw~2srE41lcW4r4}3rTA;e#q6?kJD$_AIYXbJhsMYAZVUl;CrTiAjJ_`S;wcg z+w7B+ZO@r{#CiNcXMD6*p*KT@A)j9rk1-n|^!R!CsB@RgAB6fKBnU{5KcOTdir?{!3?II4tu$Wo}*4 zTIKx(ot4)(D!ppk-6r1^%uSG9AYHy+k#8-`kgm4Q3~pPJJ<0l(>eYYw@Kd~Hi8Hyq zvinA~G*HJMBK~^h%O=hL%#!Sd(&tYvZH_oI-^~ASS=!WO&QIlUU7998ueaXLpFg`K zzc^Z_D?uH$G?j z_&-k2dQn;RQSo}xHW0LC^xyb9vFV@1euwg>(sp2nKa0)%Y)@x9(sIaC`M*u+S(=~4 zcanA&L9m&Y)p?Xz&YsLd|D|beE%LnwNIOh$ILdt=+MWN;5u_VU-_-z9G6!xY27g6DJe7V%7?#MRN$g1>1rz(Wv?UX5u;a`TLU+ z@c^Ml@CieNVZsO@AdC{m2;&5F(#US`w@27OhzJveNx~GNPM9WaB5Wqage`=vgl&Wd z;SR!`gu4h$!W>~2VK1RYI7E1WaG200JVAJd@EqX7X*>B|4jWF0&hvS(^svM~vvL8bqfErs&*p2kWx9aD_8ySD`R zlWm9dL32%X>g;meoYwI_$6oF1)*|-zm_4lBUNEf3f^5x!WBI38nb8OpzAZZ82;VD` zU*x}|6M~tfzMNF5CXy|VT>?N2np*5>j@hO5n+NbNthzk3Dbm4 zgw2GQu!XRdu#M0l+(EdLa2KITm?P{W>?JrH+qx0FJ;Q#;d2wu(iqJ!{)z+S)c4HSa z=*6nh%Zu59^#|sj%-2jh}DQvj(cK#CzbhZk2S=F+YDF^kC)Z{$c3Be|IK5 z2)u|M6b+cugWCHXJ@`A&WKl{F%8q)1blKje^k6Dq^4iFuqPgTqx7~f#`-Gzhy{7rV zv!W4S+-?gYK3v6jboM67fB9D%iykzgXg1MWFQf0%7?z<6tMx)6noD=WiZ&FU3(L%P z71?enqXjD|EjZeyjTtStp_$TxvV)X;tL$=0@eAl|)MoG{@_+eyc>I>8Q5(kFqGwp^ zHl+i@4tpnbV7ZA5p~3yi&^O=9Xu&!Pu4PH&5W2SRx|1hTd=2;X zU~i;35zXT61G?slrFF`~7D@lHQ91RD&Dp8vvA*ZgzGvA-=kJPt%b(>ZB!8~;Jr`PP zm%jCDOUpX>^R}g0JAeM{lJH(y<`&F6^Ji$GWCjuG)kTT^H-lZvDsCoQoM3U?F|h{oKlf z7I5)rmL~kX?pv3<5M0Gti`nm$zt4@wJdwcG0Uz_{{TlcfMgIspARqB^tBFX2(!)nb5H|jev{zzkgXVM9f z-;ti%+lrQ5wW8_#x}5SufqlAsPvmy#qV+{D?So!&enj^`Lp^(%cG_xA(@xj1Ck?a4 z1b>D2t+bQu^!{6Dr{Rots{F!#-?UQ;`soni0m5NIoA3nT8Nzdf7YJV=e4X$OLWl4z z!gmR;5?&+xfbb`T|46Weql9CG9}!LvmIyy4{Dfd;pdSeXgc`vo3=xJ2BLs&l`)E0Q zru|H`oNOSqR{x=Bx!??1?$r1Gmb9GVuKBZGU@w8Tmn{qOMAlNuA1r^3^`QIcGdbI+ zlhr-kD>b0MZ`;|eVpm*jys}WWAGRx0)@)vo4a2$s-z1Kg!)HHbf%%2%b^8~^$K8AR zQ?|PC?nP{+lB(Ic3+vXnJ9@F3qfCK%YOK$KX&;oWOsRG7sA;yHURUd1dczVn zNFlNCLhY8j7sn`9hQ^l6xNIJ>s;}nVz3A|UX~XvjCvB!JkMs@{3yvOp@bbs4?$R4W zb{e*kpCT_V)$cp1v$!UDsCVzB6Sfo%_Daa=g&WjP$%!4F;9Fh*?@s%nBW+>LR~AL% z$-kx7)VZaWEtyi!v>(UDeN&gUjp}Ff!oP=JUx!>)<04$@?1iXfU`=bWWDXvcoZi&$ z>$Psb(v})Kj!HJ6bHRTEEwA@KsCu}^cs*@i=3i$wNapMBAn@(r#l#B>iP}~0?p-Ww ze1!fVq_2;GBd2Y_+rj?@@{w_dhBj{QE>U;UTw_%?{(7m~cC~Mm_%D1^3|?JmEpH!h ztv+&GeU*HrQb)!DuUHCiNKS5?IJxh$oXxxCs*_6_KXY;)=K(ZMHS8Yf@L*vrvhdsP z#$IO%d!2(lPiJQ9_aBuVhH*0S`EDuRepK(|{6!x3!)Bo)9!BE}|3Vu|&;#_-;qV+z z`^%@chLk@8mix=7&f4ElXFu$lHt@_lrnMjVJHR^F-y4h`v;+14{;IIQjlO1U%>&37 z(mSrp=6U>={yt;NSyuCm9f-ebeak&3(E;QS+<$_cvP9kr^8|J)-$drCa!*>(&co6E zUb+5NJIr^CUD<_Jv8f**&MCDXwAJ>LcEyP?eEP`l_bYZJ;JX%jy1^NShs|-(RK`C@ z-b#2)@sUT6;ffCb813163SNLY#<7qX=oe!S0CU8F;6;9uC>JEjKvrgey|eYZ!Eu$7 zFSWGXCfc2rt7YX{|I%}1()^qGZkq4s`Mem*xGU`U7@u~cbSvDM^X%uAehke2 z_?Bxyp1~<>@IP`&W|G6qdhn%b123`eE&*mb%s2Bo95c^x%MP>zD_^k# z%%OuDU`RYn)qK$|i@#=N$5IyD07E|T;&Ya4sF}iz{6AI9)3yps$+mUCJZa1IuftbT zKjlWKYsBiif~mBe?rs_Cz&Da6*c@;1J<5-E_9GkN*+0-*fe%cbzjUxzf6VTe&j|mk zmNPJn%QuM0^PjMzE#&8{1^IarjLD~!#!}}ahk%npu;0qRli<*cpRyw{NAsVi{_6?o-ua*7vm8EC-R1#nS~=X^1bm{q?}N`0-xX}?3|0<% z16i3IHUn_H%H;XAEI)@$*>;`EZ`^GC#xw34LydHuR0G~^JeCxKkJ+Js?>82c;eb5+ z>lT9hv%H(o1EhH)Z^`=vYcKtX9RHuBW8k5#596qY{^3AaFD5S1z9ki|;J+8G-WlqLxcF7+0QPWTr+v{gg43h zdG`3y#>ta^#a?mG_qHzm)r(W<`uXg(C8hmD>xuiT?vcN3@gCPqomx}5|8~O~GM4qy z`Ghr{W)FP4VC<{t-VgM=`U>Q{tTXvC#?Ns%21a7a#7D7LB0sJq0}*&NzK^}2Pp&o zpe*&=o$H=S^ij- zKXyj`Se8GY!O-{_Ff{((0St{eI80&A!BGZtK_AR%9D@wzM*GTZ{6@3#V}0c{ZewS_ zsK#nMgVFIm7}XdFM$wNf^q+N-AI>VYdhxcMwklqy^I=5^F-huWF6u={#Vh@ zv1m?o+_&vt+=)Mv%5{4ey?96R^sh?haD$`eRsMFBZBka{slT%Ez+z?pVQh|s%bx+C zeau$ilT5Uj=zaNU*ZZQ^tL-b^`qhqJFT$gUULSx~AGl>NG{+TIX99E)Ec{b=wwx9ef2}hyhPA7^WrjP@XKnT>Y(Grve)eVP_G``Y+pp}NEYV)w zEnuR9JzF|)az}Ir` zdAorvz5B%Pa91GTDXEU=DfX(H@wdnKedzV<{k@F8zVXG6&M{XiGi`^ndPdIp#vc0r z+@J5DZfK>fjQB=<>)G>ev2Gs%7KfOd*6JsYd-ZR3O`AQhGuQQ^Ds%K5^a}iM=|6P* zwMUNYPC&2zz3!41og8X4dvgu^l69KBa|TAFn61IGyj&PBW=!zFhu|(DmuN{#)L? z*{-ARbk1K-L%Q3rS)SJZ z9-nhje?HS4W$aQK?un!lf5PVbqu}vbU~!Cm_5XC4o9(GR@{GJ)z@=bPwBUHGG3X@@ z)_DJ!&ws|Ak3CwYQMDCdtlZk!tpFz#|3z>vcmX)6h)+Z|G63ycseiZI`t@gy{}>n> z1!iXaiv97-#L04l`)2$S^crR2SHVTZ%^3%4_dL60>Ey<19DivV&EC?+_~ckiaJTj3 zcoVq0hWq33v(R`O*poaisP2Em$s{cB1`MtMH;Klq#Jk{e74Pnfr>w+#IRC2{AHQwI zbCgru#NLAOYFq_>jISJ?EAcB`@rdHZpZdJ)G33YLAph}QOWZ0QJT}6!7haeY(1V$H zKXjq&yed3@Dp?Uu+ltc7_O6qOMK4n~{5JTiM4QTW@%4`OK=+l@A7}sll{b}h@&?lbm$Gh+!H2^B-ZJEED(mE2nlI|D8ubmi0A=OJS!IO> ze9D*Kp}e1!mwdz3O?i#$JC%2G3F;T0rSiIyvP#{Gg>lNBxfbSF3mfX#he1D|2W?b|zQ0(#W3F3_zO&%PS0$eL=L@CA z{G#ON+-uMNOF7C`>;HDq8{!V>`YQ`w<7&$N=0e%u;mU33a90-J-vDe@!2J^q!OcNz zzZf&{k!(lDedHu{_H@#9e^eoQ%2tBkvs0Gw^jQ<+*X%bf_b(t925*wK$p=>WFM4Z3 zfPX6L8z5b>ltS=T8p&lP1+RyzAdR- zdvz~v@xS?X8#R#4wf~h}Purw(A8283)Zx8Ya9_9MY=n!~rya+9*K31{o zWq)D9zVBQX$W#PJRP940NWWF`eAyG0q@e@A_lvN0ae@cc4ED zd0w!Y@=9kfc}w0+E>AW9l0m)sJ?^aHJ=qN?UGhVB*BJ7wV(=?Yt}A;1`D_ynAz4X5 z@<#Gk1hU_MrCaE1?`rI&qxY~2FGe0dlfk>~xvuPY^r_xW$WKa(>{-_|R9n`dH1b4u@pkvTpwnA3#<@MkqsaIDPVa(|c6YVn;db|2 z#Y64xdx=L$e~)6)&rwYJyNTaN`nwd9ezs!LR}o)C`bx#5uTV_-S;XU{FIPfM4hkc>b8|ZX;CEKCDot|kEn+uaO z*YqaV^m=rgMPT-4S=Y$Yf2MT}t&^;8d;xpTFZ9kahmLv8n}Heeo-ZcyZ6~b()U9cwgrJz1x=X8F^~2fmeW zl#e{u!G0Y%A+|uJ;6ZTAgS|4eSTTISmXR42+TXNg=!{zD!JcQoW{UxIp|5@H!QP7I zY_}ZL>`>!D#^Fow1i*4sLZ?7o(U;&M_zx{p=sqv z68qtS-Xqb~?yk5Yi;RIi^})uKc75C3AJjWozl!-nkHmMhPaKRt0_}OAH;n9XqAuIe zeZ2$hWRo%Yo-zkJ8|`{*`UbEe6Ms-O?FF4JsdqT1;qPOQq94q+Y?nk2VjIwX$SYXg z)hQdS10UF956$id{~ol1;n#tUFD6yj*2kRgO?Py9oNtgV)Bek^b~>Z|=)Psou>X46 zs`!&1aj>{Qnc{2{cS60ikr=+2eZ9ndnHGF>6aB>Rn&WC0`Wx3b(RxOHp#48eq_5T5 z&^VxrG<2ZKbm?PSM)_&p&FD7MyxLpx;F+^L|I9qrv+S2trysW6cQxik z@!R1SS)-qD_Ys(I0iKy}hDFk(r&r!)`p!4W8|llF{g?^9$emr_2mc1fN&fryCHU|< zX8eTr(mfBmyu?tpgpOZ+Hut^fQ%iq1kSuw~$XXXag`Vb_T>C;t*1%stpNN&j*tZf=O);`=qx;q+%c&n4n@!~?`Smr)}YTni2b z%j)+i@i4LMRt0Oabqa{bo4_57`JoX3AXHN>+#OUW; z9%93{&Kz;60(kmXmF z|NH-ZI{#xf$nr1NUE7lIq0*T{oU6r73gFz7t*!M=4MU|yF$i>}mm<#+F|v^Ms9a_O&F zFRkUz9skM9tC(; z2zpQ12V8z?E%n=<40M=JU`IA)xeZIs=MS;g2AZ4=hhLH38K-;5bq@H}`80CxLRgeYKcyk|nsp#ILzyto7+TBCNs=Yrt!hV6weCDCW z(u?;lK5)^LEv>;W3p@9c&Rqtny_474op{jN*o|~oP+#T6yBB3=DgQnbv_WU%RgdKF zqNfJdB0FDmaIt*bBiMrq2A@c(;JxxHbQ%5;_=NeSjIKdC0G**$J!9eO-lft7XgspI zO4L!JjzS>$C%Vu8nf4lV0nk8dqlX=RiF%|DDPtqAdYmqxW1Y;2yi^|&emB(x{A=u& zXn!#RFUQgad}gVHtyQWEz)v}In%Xa2<#Yi9=ozFBDSAy?L?==VC+SP33yAMOT7#BC z#%S?F)GY;P=mHpr9C!B5cTN3!hxwMCNit-?s)=sp897Q5-Z@5=)p!8dM#oE930zd_ zRBgHOoGp=7i65{7&4bVhzi$V?Tc!E{WuY&dPm+$Fmv>}GBsxNO^p;ysLsvANp0_Hy z5~b6Ra{DRkBeRserb7BqUOs+0)%A7`_EcW-rBbJ6tM%uQ!=vxDe7o^AyNh!aqBTl( z1#rcB?_m4nixzAzJki+MRaVYe~8nSw3^Z@(bLwa{E*VI-*Gabti02!XXUjIx$?}}FyGc# zt9+_orv4^&HO(fnJbm{oR<=CqN2T+$4LVI^HI#3B75O;n^rd34+p*|G1xK`fEJ({2 zXwMk!8IOULb_F>&av0e`HNMc>b&2TUXStL5)}=27vt2uW^5k&P?CmAJ^;>I?H_AUf zd3*5Fzj%hc5z_A_{UkKRbNmnZKga*)c^>7t^>P3B4F8|t{}}%VgRio-fr+5KFs^kU z97*Q5=R!6Kvy^+xp9Nla^mYRyqVt{rHimra>h9x~_Py2n>|!PqD@{*9UqP%{B0*^fIuK&Nb;;S6O-4;_Dq}gTZ@lT=|aHS1~GE zjcJwn8n(80pv*idC{U~Q-Kp0+_U-D0-31K?yd!sj^O8dW;;UT!e&4e7#F&+jwW zq{rBC@cl8qExUnYP_W}6`U3wecGpLlGvpb=^m8}Q^PlG&JpV`dzmxw@Bll?i`r6|~ z|A^K6tL_=rWg+;oeUddf#(%-Uc!N0w=MI54cMe{;B!1q6PbXibu7J9>U#2-mN8r!* z?q*JpWb-@A^HbT}p7@uUZ^&#;ferK>z()w**4*EF?pL>WCky+J?G1lJv=IFK%ZYGk zCB7f{eLShu;f?Ey$sBMd-uuWU$Y7jK4gCYOg7%ZUX`^VSCq6oljj3!KTRjs$&Ypwp zi+u4|%Ab!|3*<}h`26pn$3%yreQ8HSFnlz5@^^N2g*R1J{JZp&c^T!;Q%-qLQBG@H zb;(Yqzl`cq8Pz4aQ}xIOqQ6XkJzDdsXY`DEB&Y4KYn(d9Oskj5Fw%CbP0hYGY2Ai9}sV-xUn)=hp3VVq7NoOy5-*s0o zAJX?g=iBAI`_^6#&Thd2EJrrm>K$4GKN_`q^1(Agz4zZTfqfwKIy6=d{B-}uD{Wv~ z>^*R7wxYW#>+al~F~GjxVa~9T5T6Mx?D^N@ zD^`3iHYB7E2Zxb!?5BRxT>d7zp)X%@%t7+~*5NGwdJAuI>iwZ+{yw~@d;ca24|*zp zG(L>HX+L(Q`TNuO?mL}7(m32JsBMlfxzSF!ycE7PPHOj9J$tu#1F*M9|IrQ5cK2RL zpW4Wqq5EZbDBNCw?w9?(>MTZ**HK@#{v2;)fnoR}r7dHfFix!5>xeC|3hj@csc4V| zOZNuO;S3_M+Foe=(o@HUyM$L~ISW+`Dzb$`);QlQa;G$Y2f=I7Ikda87i}Tmg2y;N zjGys+*W9uM9ozj&_=ncT&%lec7o-!Gea7tI1ZDpiTnP@~9Q!`bU|qI;ap^C~Z~e;) zu*rm1g+D0<-|PMuzC-OQ&@SOq-3O)pu;!(*O}cXp@S#C%`+V9&oBf1~(i^LKYQ zcNFgd4>Y^zb{UTdT=1gv(YDvzi%cSBd?UshS$7M$d7RegN4(crX7#Nh_f7U0n|@=Y zsXFiO29)*uUER?@@s93TsCc$J-cY=~TWX7+)ZN@06KHhs&`aofg?CKy7<(2w9rB!d8F9K7>ND>$Y^2`m-8Xp!`xx>LpL`#=$@;79dft=YvHjE|nXt~@9N2V? z70y~uJ@-8W&Wcl?#|!m-h~Djo_)5(|`QhfwRWq6lc{s+^b^o%b~T3EMuZ@ z_*ema#n|>7z6v^t)}>^5+QYbew+B54%xtm~jE&><$R8HoA>ZL8m;VVn*_S_L53}bU zaI(Sl{p;*hU%uWQZS76cylGqS%UeNSntp?w?n|#19%Oxx2hPzRzscnxlLLpT&CU*7 zc^3Kte5A1xJ}TsLh`MxA;IA;nUz`=O@|i6>CH-KvA=)CvRqDHILle9d!{1_ivMj#O z;i^gtJSbU3d|Fmf0X|LR73hx=a)G(-XoNp?>B~jJFT>B%9bNoYMGqSLb$R8)cvcrCT(C?w*;2uGzu!A9c;e|L#9) zEpKz<@LkqCc!@P9xfM4R_AXn0bg9;49r3^QXBQkVk*0Ipk~I$SJkGOlSdHf~o_%83 z8w?Q##KXk0DH$Qwd6kmUdD<(N!l0Q1q^0ZYaJHrnyR{UX1F0;~M@}9d=-q2dPWIQj z10Pttf5`53GQM*C5xWc?HE6*D$nLuXZOESQLl3v6H#)iBP~!kH?d84J&=pp4zbW8b zHruUrS6RvZMmh)Zp+f!^WYqkZTv~KM>yA|JC;7Gf%(teeoE$P@4QyzT|E*u9K4hiT zxBn1(yN|q-?;I>`v|$U`j8Wj*%-2Ih5oPgZ>EoA=J-^mu{g7UzpN2cDMDI)loIlf^ z&vS!ua_cBUCOGlH8y@yGg#i5k_g;yVcoa?eV7FPIR}PWXX5B zGCxctV^+DLfcvpj#v;P~h>{!^xsavq_Xh`6E zjxt&|x@*_bs}1sFt*smFF8Y$Mb?xP%KgVLF>HWE~IX?ElB-O3o3|>=R=-;w7q%^R;4ZRQ@O*F0=yCS+3y;m}M+Y_&ei+3~79xn|;Ig|#WW48eSOas5a4 z3|_NT@SEMWJZnGIepHDbIVM{&e2;fEhF;i&*M5n85t}pKudoK?Lt1;E8^6}}uJj)j z5JDxak^f?M1OK%STeMaG*Xuv)v=aVtw-{pA7QNUFNh`sZ?F#Yx5bkzqI;*jle!H@w zeGK|(+Et0Z-IaX^b{KANe}HyX;<7!|U`@t5x`$)_D=*vcB~NU_6KcN{&0$*XzwB{J z*MD?O$rSZ%11^leCE2URVeOgGRi5^thxk$7{K9%t!Wvh=N4y5}#m zDzC9qdF(}!ivEYvpTFEaatS!nAfrQ%u#9n3|GbPpIg<{!QvO2XcDK+Le<%70`>F^( z6wTl373=Z|aUXQRVRSmk@ENme_)TEyKK5+ccpb5KF|HfJ`q5GAS*YWl@t9unw8tsO1~?7 zJeHMnwjRM3;eig@6`iNu{wAG6+yU0GjVM8XEu+nD{j?+-zSr>7$A(cs?uP|RsiXr?7`};&F{TK8tZO~dM>RZ%_KTmLg+PDC{m*(er z>s!>zc~0%0%6E1xykBH)H-zjRq0UFg4zJ6u}=ld@ztyH_*!Yg zd$Ny9mSaqtzP*SpKs5GjS9_7pL>5BUN(aBT__$a>p8S@L`slmp!-!-syfa|YyYP;I zFOnVp7U~zS9BV#=?xu7+=6~zr(c_wXonh15wJv_&ap@f*@cYuns~o?y9o>oXXWiMt zy8_M$y6*{RB2)Ca%Y*M$`_i^jkM_?A(hGg*(3Z#s7!Pc58svHS{1hIJNV}8&2Am;X zo6_s_LwWL1eFu3?-$pv#FuTIr(rbsUFF})V*4;eRTL#TH?L*6>&obff*;?nJ-iq)s zyOnx2Q0El$;~DJ1PT_@zdee4K5>Z}sY%%x-wBTd*4xWbs+Q6Ee;Jr!m3%rx!2=ssf zHfE%&>=w$7WM!pCQ#q}#aoVGDG0%0LM?2IPv~7d(HTD~0u4)j!slsE9U6>u_%QKPCj8?>G?&)N9h5VS@46Oo=lP_l zy*d05`PwgwiRiGZIcVLQ51&ugceEyM&erupvMr<@){t5N}h)X`j`zFf6+K&jH&R->AX$oThqMpEN|4NG?+nNCtHKs zseIbw@YOAe=2G@;P1b%ud>66!#yg2+19JzlY||RV6U1@I9^Rk~e1yXd=y5#!ve)3X z4g0R{YtvZ_+TE4xd?&cU1lxOFw*KqXq4gg#zgwuQb#dYN6lui}8C~OH{-1wbYggyK zQ(SPt@!_DoAX-X%$}DHBH;})r!@RSGMLU>auamp2ppI=F=%g%NcU=rqc7XJH^V%d& z-$c6POv^~GvEMcEgO}%N{x_39Nxs^2Ivu-8(glak4v_we-q5&cuP6%_lIHoZI-De* z+338GBj++0=}#n+z>bKr`ljfj&A>wwnrS+#BTsL3xK|ANbqYH8fhKo-fwxQ>oC-`k z8vw@Nm{%O!O^UY!wk9m}uKzT!r!&!WJ;ANua#KsRpuYy#y2 zCoVsQY29t1eMbJNC9^k1YeMfYB!@H>)IZvh&uHp*?_bB7Qht)GKsM>tMce`>@qXi3 z_Hp_Bu45yiGRPw-sCR|`P5f*kzEj^Aarv+FANw@Qqg|SBPdR1YfgZV~%>T@uX~xvciozKkxh0L3s~)(GT%46H4awB|D^a zcy=#%+zwG*xKlLaa9{ah%8z8_NBYW-P(H}Y2YuxO%8zE{NBhdlZbJA&^^f(HAEUfz z3$>>ycrZnDL5IKzf`PUhr@H2mu?`Jm=6^47zNLjroUK$kKf+<_$e*OF@Qm(2Ix~Mg z`MM)T`FFfc{s!`$Z*KA%Z<8O9ulrc^zVip)_x%a-)P`*)#dGp0ZcK}QL7xTB0&{gc zNtwII7cSKvOXZeC_E01)C~A z-B-R&db-Db*>379KTUeNw|&iS?km5E^mJeQGO(#V7kjVZ5PN=``y}U(F&%=}z#fFT zb+Bo^hpZvR1O4MIxYT^^%JSAzM}NNHQu%wc{0(R13oe!4%JQQ#@&%X5Ka}N9oRRNf zll%v={K+%&1($mNaF#!HMt%;D?JU23Mt%;DPh|PiXXNMbnB&MzXXNMb_+0k><}>pD z2Rx?m-Vcw0#T*V#$rL`E+8)T}q|ks4h#&5G?ES?^as@)1+I!Wo?UJ9VDmF%CBO7A^ z9c^T!WzLYqpLB4b_Dl6KezufR^*Cr?Soz}N*m0p9g2AQU_Jq+;=6CjuUVAGBV z=q&2!C}Q*y5&8^+jQ^shm8{>{8$l~#7st9<-n*CdptAoB$vQAN|Y-qW=AeQ>X%=^v=>vJc(52YzFD@4@?L?Y+O*~L+25pm{@uq@edkXpIB$+YQ&zwj)m{YcmKMU?iWQ59k1>^Xz*APY)8(5EwhiGL+Jim z3w!Cd=u!4q_T3F__Nwp*GESX++D}>X)ECYW2Bhr|u~*gm^{d&ti5pkhQN{7)R`QAc z_}3aC9*wz&G^Tv#BhV0>3kv8rbo73k*;2=oPPenaIbln{)PvA3k_SH+T|>Q$m(lm3 zUGSm$VPI1-&uR-_th6Cy&SXPZve1=YYq0_xiq|&rBfU~vKFR1i&ys!Dh^6;_sFB`R zx~|RK#QW&~4y&_O`lkA*xf|o%3S$t(^cVYF*-7ipDC0kss4ro-x_6&{g$;NP+Vl?? z72Ud@`#XJnp-F!(J&Vq5?QfyiB5i+o75yiUH7>-RD;X!+M7^WLk{zgyaZ6tPa>jCX zZ?uJsKA5B&ZLPx>h5TonG%h+L@<_B1xYXG$Y&4`3H27fZ;72y1-%&aig=V|^+s;>; z&WSbMeSksS>^*Cm$Mg-^E2;j`CiXbkzzk7Oq24@p3V&q2_H^e~fpHh^2w(J+lr@cSq7z!#t%Xn7 zLDE+QZI`ceun}b{F>(O-4xJaM#%*Yyy~l<-Gs#4ocMbMz@F0`aqjO?W6Zq#n(_Gmd ztbdcToZG~XNax?`lqpiTVLeZWS`)HwLbegF>{dIE+W~#sK5Hw)n^ZRZn$xR|QP#lY zY-SA=8&BCSz=v!oD%frdUv1_arh$(H-YKx}OU8*$USO1dv)`|yj2A;g(LUKnrv7uD z%SfFpcp478`OjAz%*ktm4Y+}4rMrYUy$r$DI{$~1=*0CAga$1M- z$8Fk&y#2z7dHcn8EeqL;T;D$7WJ`ITiDP^(;!8e|UV$~se2J$G{X^i@Ib;-V?7Z5X zi#Nw-eBc-QbI5Nm%)b9qOBR0?@^K*_7O6jjE!Z_g@>R>-3!g;RchK3w$zHEPIlX^- z(EW=i&y%n0?Y(*aw?4l1xXvob_o_js{kY4U?QJKo7VJyZ?zDW9HNFph4*kg5$Q>$) zsUPa?iVnRY-dcBqN}r3^_V#_{R7SGkv>srTam@8x zsw=NUwC}L!N8a58zScKJpx@Gdo#tsqT$ygNIV%&qO&P~y)1NpiGx|1V9KTJOEm@hd zw<+UzZpv)U%8b8FnemL~)p(~o&V#+T^4|}>4gU>K2EXBJ4uXCjT<6xl#(9s^JWk4k zt30-*8IR*LS3{C7P{**F$CSrO`ER9TYw7ApX})2~k7VV8zVa#mot7W%D<4pPG%G*W zS3c#x)AHke<#kqJJS%TZN>gfV@;#y7hWx*FX5bF?jDhH3#?alXxKQ$%wrV;HruAXF z>^0Uv`@?pSc&?lJYn}5xjC_}UR%tUIwgW1|okIU}W{Y3aUF`A!+WD5dzs8GMU#unF z>w*p%+oh|QHEp|`H8$-q-O7Zf*YuGY%uqAA(-|dB;vvxse+r1Y3i`okld`o@y z8ntASKAG07;K(*}?%8Ec;4wsI-S~DQyISXyBYrZGPY&6t6uH~X3oHERj;x=>olg*vBqKcPc79iuwH~MXbjxQwmW*t!QdQr>rZkPe}Z}j>;K5ge*cMxwb6c` zT~>det;S_r>0Dzc+w?Jhzm-jVp>-j)b{CRYu(dYh*!X2DS^Rvf-JMnY;tTl(eW0x8 zUr3wAfai*xXliUPu&)A#x&wDZ8~AIa@V7VO{%wCX`qkCo5Y4~ro0!km>G_kt;x@L6 z^22-$u+g&A7u=H6R?X2z#v|64fWPqREMMC4VN!{;-X2d%j7RmBnMK38%>8QXTvR1! z+Rc31m`{Q$HZS~R2dA@Lt!;4j!gAsEI{uw6ZXegV-4$`FquBR;@H;-wPGGyW@BLRV z=`NX?xv^X2{W52v%D2qfa>#ix`EjOPfpIO>cN|r@_R6#mtMx6()R|i^Hc2UD@8BEG z?-gS&JM2<@`%x1gq0KiZ^3n06-le=T1ZdV$;6jhU5oM~|7>!Zo+M|G|NKN0MIM}Qgb=s8z*ROx>5O0tW&7mcPiqh|(=sMqNq z(Cd&skM7y?*Dz-@UCDKHXLD{#e;4=wUC4s$GlUOhL;sW;YxG^%dDfb(o@~~Ku<;xY zTIdasZC~Cx2CsxH8{J(8JR7yU0k9{2QfGL@KgM43*l+_`hsC~!d6I9KGVO%t!=Dql zrY+b%XK|Sojot44lh6O*>t0-5EY|U*6OGzZggs7c)P8PbyLXwa)=>KAb4}ox3QlXAj@h)@} z`+7fbb|ov(ALBDIS;-ua)9>~4U;Qht-M?50fJJZrV&#_oixaCJ?TtsGtGToEwi(%@ zB@sUR?49kd{TCP6pnQ>i{Wsd(&+z=zEf;YnfV$Z$i{TC{U+~oz_b=+5kTZ$35IInX zHk<8MzDKIw%;KkcxA)I3vhtVEyG#4yPV`8~hdQz~+HT8@SJ@l4LsOj(Pqy7wIV-03 zOCj_rd+Fz(dyfC}i|kkLThlNOl)|8)k$Cr;0Rs7{>;pujk+Jr+(p$ffrae ztT)})B|PEtyaK#g2xl0B8@h$C+4Rf}GtkL14+d(i`I=#TgUg|vzVG&ZFYLH|pZsG5=BgODJHCFH`^=R;$pZCyz%YA(+t)+0 z0~>?+M6jy-#?&7id+momJ@t;ts~*k$+r5|P={@L#AD+l?VhD~2@l~n!&*EFGFX$EU zMgShj>T+}iX=VR(y3)iOgsd&?A>!+G&NjbO?v$LGJ12a`RqL`qf4rD)H1a;}q)+rK zpkI9J#AMdCzsoy)vb3M^^pQ>FQ6|+>yvuAWwI6BJDD5 z@MkOAzYVk#?}>g=oAsX7yJQg>H>LHL&-bkyr|aAXvgBg}(f;1OpWJCBmnyZf*~f3j zq08^KvIReU={&fw)vGq}7Y}|L0Kc!WUuOSjA7Jil{1-iFTKH6NLa*0Ze-ZQ&cCD2d zyH?JsRbpuN2wPy%s*N!KiuW&Z7?6VPa4Sd!tLslnQoX*a<^TG|CLE!8h zexpv?vgv#!@-pav@~N}R{D)Sr)StE`@WKH3I*VFtlsOaoGN=DQh*<7)}_a|ojFdNEjnhH3%}Glb}-p)2bvm#X?ysS>=TVYf{p;^;yX6=U4@?! z@hJ467~aP^3AdWS5UFGS5E*o0&8J4+PxD$ea{{M;Cwe#@m-U^PPSk--LEy09=EAuw%8;-#Xbu&aa{2g#v{iU?%+W5_b#+c37+^TBR!6EIMUxpcO$)xbT+IR^kgCT+4R>b`Ge{l z$?6>Lt1~aZg?_~Z_5d?P$nj*L{?vINK3sijQO8+L@BnbqHwJ$ue+SUogZG#(92<(* zV`J@&^R$h9nDb-!0%?>$3=UyMjfm-1nWDIhn$A>YS47P2SuNsN4Y}y?-q-V zmlnL>a@NA_3*OLn_IK?~+ZUw|E(+#=Ti|TLv@HQ0WGp#1aMEHO%skrDzN0%~&28YK zfIYhL=wdZY_a^OIwbs5w>q&XbD62fxqrFS@R>)I*s%M$r@5@)3@~fl^&h?IbhJXVG z$Jr}HZ%Pj{RO5q#)yTwou5mos5-oMPyt$GoU*3?heii zjPsuSqpgeNKNp|sG3OdMgW&wjGHvvze-Vto7E{%u2mA{kMr*~Z2KAPgWJDKMO zVH065^F2q{MmTf5p7~#UmZPuPv&^w{zt-MZ4A`5()BD(&@AdDMe|_1?g<7Y*@RQ3v z`ZMp_?j63NceKB1pY`bT-^bqlc6I+O`*)48(7S3={~rF9zMj$U|F74ryO;)87sA8F z3ddfzxZ>#c?j_+Y^bfcgTpNOGi*~QWv44FD^9erw$tBE<&)hIS&|}HZ($9RK6(3d4 z#`CN?a2&O}8dt5|Y;3v1xxMg-^V$oS1kGeP^paxm67aJz!SB)Hr5Er{FtO-yjymMd zOZiO7X_EE8bv`Gj`bNJl34z(*`}A!V-tY7tQ=ngxvHgAZtMNDVtAxC86?pZM=nK%W zvPTtu70!YF>7+PGb}Pb5!b4}7gU9?jxXGrtNj|`&XLPzT-p~8JiEf|Bc){@o^eAJR z^S1qaT+SPZ!Ca!fE9WCe{vO`XdGhf%#Ty=N5FO}nevsmPox4Zxjn4NpZ~n&XKmDP; z-~YaF%$we)t-^Ep`^p#Y&w2E}ZTm}n|IGg9a3kG9zSjS1JVXD!c?di&*??)Me6(l) zF9uKd;eGMZIej4f?fMh#N&fm#)>M-<^(bq~oTed8;rQm8alG1|zn}BdgS>ZU`Fwx6 zt8Z>KAD+29DVR=I<11OK;KhrBMC(uU@@9BBJzsAbFVXiuy#$it??G<$4^UT*Z(if9 z=Rh!nzr>kD_B-#xXKAV4;rtFhe=~ok@5}s|j%NN$u3uKcjdM{J0!$jJt? zG0w+DHbKY(q0NyihTz#wGdU4;pr4U9lDEdp9+T~#eD|y|+mFfaPqM}nocGG>%-5{r z`M|Mfbr>)3Z86Y3GTS{b*zRz*_}2jbRrpr4I(ip$=4NmOc+l~F(6RFCZjdd=UeC!a zL-~`+WT+7`$-45IKNJ7w!_(^CqI^xe_R%i!5o%*0)Lw7~Et~BH;x~RwU(N$&wC@z` z;l<&gh~3l`$^U{5-3uc0=NswIZEo+;UiCNeqq!eL&(yOu^L=0mxC*{c=)hxspU{D} z`aS_zBQ6n_iOa+l;tFwIo@6N6mlPW9?w{ieSMV!ZVGT0;x04Tv*MV1eHo*~gY~qWY3>!PMfd7&! zU5xDCZ$h`U+6&Pq;j`iMYHi7LSVycUFMxLsUtG|-;rzYzSUaXP+YQY2p6~&@wUZTV z|H=6_!`*9WRQlJ~q_R1^6L6A z`b*3)@Qf@fKxQdkBA;i$<|$aNV_PJcWS#}b$icfocIHtuUx{?hwbC7|W-u&x{uVH- z^qe>HL)s%)29Aro`yU)EbI%%OepZ;S0tYHv^>0{|ok1~p1-^F9n$iqwa@O^u4jkug zc5;Xeo(0SQ1BN+Ug3iMLmwEV`;CTXg{ze}>=X99-hnon$0Vc)IEn>$PhwTO7=Q49F ze4E5|QYeAz^V3Bn{{ilB4*(**e;*i48CTL`LGXYn%o_Zjn$){{>e zY{fnVPn%T2-RP`j7j-i-Nb~+mh@atL)-J;~41nFk*;8zku)}~hTj_J34KRNee&~Gc zZO+0cg7nE1=-dJKJ#0t<>NBiQ&OMA_Z|M2|*4gGj&pW;HR)aloL%6wV{|PcyJ%5mR zjI(nQdU^=e!L*H=Xs7uQKIrfpvfGZ~Kcz^Un9}!e4d;?&=)C#no|XQ07u3GDYnMl# zE7X^^N%k%O_Neh+S@dX^z9l;$%|q1}jp_8t!*a6ge`;t&c$fVxAM#!xV`TpY%|rKi;$=2yUX~l=KnHmE-yo8 zX!tJYtJ5(6SNJ?{ZOrwg=dUuZWAO0>#=08Jgaz}lweN>pRQ*UrJb@U3*$G>_{}qZ^Nim-<2TRv%`<-UjNd%tH_!OZ zGk)`o-#p_t&-l$Ve)GKxOKF{-G2iZ8IMD8XT5+x2-9mg3d7o5F`Ynn{kBQX|&Eu`{ zw|k#zeA}%vWAOK|68jA1p_DzBG(Xw%0ME7T+35kYXP@+;?0Jai;p|!V?IYQ<dgPnWM=YVgaM+a5cPr)Qw(~sSxs$LFB&9;D1)FzP4!YyDMcMxs&tp? zO-M*c2^kO-6=YCbl~S9oA7w4tvD&IEZK<`DZQ1ReJDCkyt*NA4+eP{Re)pV{Tt@I4 zq5V70bDnq3d%oWDp7*@xz2{Ru+uiz$pmPymFtu!=0eCX*3=SD19QylA-gDZR38Ag= zF2S$(b}9Z(o`Ctwo~u)} zu4T-|n*<|3Ppxa>|3!K&=*e?VGiu$fXXZHu@Ihno#M6O4*_@3z!4kY>zj)%1vlb)o z8JPvOl?vqYfPA+0i#>tFfQ#Yp#KNJuZw7{AM>;0pWcW{ypACP+In6rT{mJDK=OVyJtaYLR z$acvG&*<;7!f2NZGLaZ~5Nq|?1^>}57YI5`-erGTn(ZesNX8mSLQ^6vit+C-geEi%u7Zk*}0)#o@Snf0C@bK6B)9Q}4eJ8U-Xsr(5y z_YR3a*Bd}TBQ3uNkFZ}lt68M&GPKcRHx$QSjZey7i+^a{{;LHy&d~khGk&` zWA1Q_8<~GgFY8%sym&-F8!=)y;_x1vpmUzfd3)Rel?g!q6zf>i$C(%0BZB|XbvoWs z_WrkJv#?{aU*Kg8ZK%ExG}tCu6-T?X<_YV{sw`GG9TYCeT_m50R9K8*3w9^Zs!!Xx^Jm+JNFv|t6 zG}te^b2Jcrl4liA-$7cG4DfwX-pv9&r=y8Gvw3LmBCQQ=h_RdJN^EgvBnX)+)RJjk z7h`!b&cBjJBfuNV7spe`#py$%&tz!d7sb5sLfA9jxGDC>ZkX%@ zVz6V-KLfF+tP2Z#nj3 zbG+}4FZIqw*052z6{Xu@`NhjY9rN1LAcENJVF zwV;jAjt&aeZGG-AZ=NW z$847{Aay+dN1SAOBHALRE%(;gJ0V9H(=wDr%2EaDZo?+kj3#_P!KQ|*f~$tBfivN1 z;p*V(;bL$z;Tqr?;reh-wFT(W0SNm)+v2tT`I+Me+TPn6>+OdPd;4KqZSIFf-|rZT zyRC<6KZbn7GDC5fE9b$ZSeMW}|2)`5ll$|DGnToAhr0qe+>;5M4%|@ib|~JV3Susq z@o+ykWaKQ!NQ;z_z4y+BoX+fp%b&t~J9E%qygRpd6`)tc zfH^|EeYLA=?$!No%sOY+YaM$35tuK0ZG+xVUN>#f`orL}W}`jeG#mZR1`pw?;Hu$j z;7qt$xH`CcxES0_xCXdJI18?;qY(RGC-ryDos74fr{ImCbNXik&vNDfvMt%yy3t;t z1nHgCf628!eLaA7w2Qt3dTOro#MOHH*#0URX8t;d&ZmUc6DvJy8kav*6-@t zFqdz6?dseR=j)U_Xom0$y zj4@anf-cu#zv;s6rrz!E5_@VYOzb%@M7>5`i}4QW8IQOK;`#Rj^`U%*=gV-)mOq^Q zQEReHufp)wChiE3b0dk)>=AdhdAfx9+8aY<+$w~TzsGY;}#l%&RSdK$#NrWL7yy}<&j1cv@w3_jCI)} zi~Ee$_2wl--s63AaBK@BKI8H{AMaV=UTRNn@IPYX8^KpU(yi*p_ zhX(Sq#a>g!DFmIxF}aTp<&jRWOvF*=_G&Q?&Gz==(dRv$j2qJC*(xe;reS^>(sNy+ z40SFy1wFhMZ#d$!{h60Pu7S9uhw@NuqC6Rg`7m!q3+Yhuqv&C}Pw;|&JO@MmD}E>* z{k`$eL_Pd<@XN}_+1^U7Jvo$pP|-ylruh4D(v(|nRSvHXWm?~jcZEKl9&DK{{|Nb7 zW9}`_hq_*?O}w36w#~tAlfNhV*&nTykgJbVNBeaczcV~tYKu9Lx6x>capX|NEB#;w z#Qn4%7o7*I+yPzxF71*#UVhyCd9QSGpM`2Oj-4MhofQW-e?|Lyt?x%2|4^61{neLu zcB`-h(e5hm_u4MJGhC%P6zEa3?2rCKsogoR+J_4XHeoV#uWvD_qj&~N)kpC*4BKI! zHuAgZHI>i)_>zm~{Rb+IDx2fq$5FN_H)dEvZ`qW56PU2cEM{oehkZ3tD@+;TrEeDxv5&ktHJ^<8nO^Z(uS zCH7)?bF3evZ@gdL@m&v<=1}NMik3r7w;yWsd{|w;KB9PCYvFA}eEUT9r;qnH&v=mW ze1AvPf%NP9`vyPAbSfGL+Ux_;W14TT?|yB`4_L+rrIoUCAljfN$8KO7@7HelnCtvu z+f(scjavswewFSzQ2BpUe8|m*^OA~32ST<~-nr!-Z2W#yu{s{b7bzU{Bvj|%^B%iFv0^Z$2x za@TA=E_)$&{^a8-_ub^-{mS{FB0ss`^oI&R4;B8XcK?K)oV{x~N>fo-@G@p4pr} ztT!|(+8d7HJrdkU9Kl-yq3K$00B2arwFMcz8^Cj9iD(nfGGCT?75?+bINo_V1N-Z_ zcbI$X)qPtyzcO%dWGT*>1fMR#9T-I!%>l2Iy#EK~r_9WxvMCuYf&IA}-ZXDo?vx|} zli1&F!o^o-b;OHWt8pFyEpYSzq3_e9OdU(2VnTs3XpNIozAf@Q`*h&avg=j8+2Y+#f)>sGHS` zGqpE6yvvqv#_(K&_m;TvfE(0fINOnNiza{`yiKO*Uvx_>-bo$Ay(^g4ov<8d-hxgD z@7_h`FYgWG>^$P39=J~_-j4g2AH|*0xNF2{&qj3KA>E!0=u=ScC7C^5C zL3Yvs@QY^)LNV^wxB5G$z~QV)=Ul*XfE~mE76Hx$90%AzKim`%r)z_ZvtiP}IfUWY zws`k_vOh*p2K(Zu8wHNzHvNU)#XSIMJ8vCD;>KSlangV4UAVsvaj1j1hn(roTrO}0 z(m(w07MJ&DP=7Ie`Visg|4ZfamNYq#Hl-0m@nm%c~chK5l@77IV_81EBPbdPY3^7c!PjxDPOT8MOv?a zgKnmu9be*FsavxPVz+vC@Zjx(^g{Di=%VKIBAm|=_c6DnZN%e!%nPT7ad%QndPM{D z3v?at?I90&4-oGF68HbKr7bVM37$Ub-R;MC)NSF|Xh(zI4@8f5EZpUjJSLR6`q;_H zbBx1x*@My1&TQbX962;|{rLRMrV$e}J1fpc_;Fr%9>V7!eD@I{@2u)yqf-$E{fo5u z2%Cqnc=T52EtCWO!+hhw-En+=W&!Z$oLHOjhb=(Z`mu*)79#A2qxTM5h_GA76lNA7 z>|ahgYp-;R5ccTUp&1)tCyw1aosF=+jXylog0MMbC+?N51!47{4rbaB_KVTy?iJRK zu#-;GGRqKlt8R)g4Rz3TXBp0-7GOVzUzVshD2HrE+!r;VM{?!BJC{QFj6n_{FZCrj zhl6yCNBL#?IAoggMLkA5<%;nsLrm|NHI>$nQ|UbULpp}>zlrnQs@&}(g#4*8nU9iR zmRXRLb%}PmeAmIVp^yjlDElGv378^|t%*K1U{4_)!&$D4x5Su+`cdUkh;$4O#zlG+ zF6cyD8J{|uX>cxwZ*Jh8&(57u@P>Jn9k`}Y zaSVM)_RY(OW~z|y5XrOMm-BAm(RizPZywdaZ=!6j>-u?Q0$&R}&p-I_wZPW_Pn+D2 zuLHgwc&;D$@%6yRfam;(A0GpLCh(kx^5bU$-vB(nEByEd;2VMGJ|qth9&vmipBlj@ zzW<~8Kkj4jWSHR!mydXq+kmcl{ekjHnJz$nc z5A*+Em;YgC|3^*xkJ2W*@Amg`yanZZD}iso(QXY`=wIk(Y{NIdhdXFsm+k%@bRg_M zp2aQ3I2Oe_2(%kGW_e?_&$d|h)n zaVkv_ugrqZMVWlNly6KhE#F;>7{@tPo_{fHU+8zxgS({C5zrKXO`1pj4|~-A-b5$v zX6qaWSM>RQp4IQf-3?t+KHsl&nid$GNAS*#gQq+FGpPO+;|je!0QnFVWjO}w=P?lz&(y8&P5xdog&w?4t$3a zM_XSD3)>@w`!JM^$1t{!3Ny^sfp1fWkv4`^BX4zHoc`etwu*Dd2xogUZdFp~`BB%R zZkjkNPC8jO+n#ZFPEWU_9f$t~Ch(nu@xAX9U;HTI6edNT5{bchv?*!xFkg-(eDk(8 zA@jxmkcB&^$zw@J0phbRD!z$0MYhOyJnEw26(SyOS;q5Z)dG!4xP*wyv*Qt@JLVng z=sz#c`mmjF&zkG!K_zhPPoqgAG=dN_&_^I@nWDYr46L;VSTWj4@KT_EmhHau<8)<@hEhN@{cz6!RFIPB}@EnK3HwN zzdER~#nVF{PzHEb{B3Q7x*n=BRhxV}y=?aeOx62P;j5zO{kG5Fll~1IM17jeSFX7#o*!y5a472jLy@N3HdXEUUh%c& zK4joS=&JJiTj&6e(eGCF{`mcV@drcx-mPw*&?NSa9L#m3e}s7& zC1;0{JRQpO28R-#4#l?ngr>p$K<~7+^a-E#=F`V%Z@u5~e}C~q2f?;^r+M`<4K^$G ztNQ6xYZ+>9wc4vbn`e4s$#fL&Px2gB3E!^7yK;Wc45zV7tW4iKQQ-m zlLnkg$2(yc_6ACt(`V{9r;fKo1DffYcndlhZR`DCoN?wmi0p$ruUUw8RD0~%XA4-D z@c5Suyb-JVDZee%IWvYEc%Rk8JC6Z#rknPinO=kiW*u(eP5|(hGLyd1Xw`6s=a<~e(N;m_q3a%Qi2F`@5g{yR!#ZG`KFdl+sL+-A5G+|zK+!fl1y z2KNHocDNmI4qOl1PPkX#`r!KE-hkT;rv<8-TZkssdq z;D{yeDu|#R*~X~1z{Bsq!+>q4`UqvDz`@(OriSyMpb2snIP2VumV|tv4+H~vLpOo5 z9&?fz9s9mRb|M>sEK&YK2oE6dNc1vCOKpLi6uUul73#JDXMh_3vu;SMaKfk$-}nvL zJTGyQ@H_k;b{FIPL?EiW&A6Z7+m@Za8+r5Y0xhm(7Hi4$o|~p+hUmDrz}VoPRK61T z0NmqxcNy?b0FP#rgLA%`j`Be_?+OT|)@GYw_Z26c{cG`f!CXHmjK?<)q!IVD z+(8g=?!viW#4+vxoy(w8+HijE^RA{{oMFGyoVM&nU;k0O|Il|1@V)`wJ1|$=J1}rJ z!Cc^qfa@TX|KA7X`?E|(y+AoCyhhv^z;=&F+^IQt7YyIW-36EA++8qg?c47zxN-U3 zcNY{E?|pZ{-MD9fXC+9-c-&7w-OsrM`hSWr`uYFVoVyENMi|d*Fzif(72rSHf__H} zWa!uMZm7Dy;EZORahf{*rP6MkMMR(ASscw4=WjakR-<}jljm(Z=OQeIunyoiz|94Z zJK#2u*R%S=aeunWIQs)P1rF)*ErcOX=iGA;myUVAGo(G_QXoe4FcfLx!l|o9l)`_a@W3*G&`kOkgZS*i7hprQh=r&T)b1Rk~{5SU?=(@=P^( z#&+jf6cxV|?|b%5eVk{OUtR!x5`(LN%N-NEdmx|_LvWvr2?uUW7`T_>BN!9@iaRSd zEnkPXq{aKI!-h=t#*siAHiYl|-qAxky|Z3n$R}+J%E{3WPIYv%Syy@S?A5Sirn*O;gfsofgXgb28%D}x=`riF!!GM|sSk+f zIe+Rb%4}g=&|_Gw?y$Q+Kgwhro(*Fer1dD!PrSd(qaTD_1e%O^$H3Vy#$kW)$D^P1 z$VXm^Ue^04(8_ujB8>G`=f@Q7ESLYO(-aSgQ~CMJsJRCHTE=A=9N!tv_y)#yoI&^a z&#*d_RWEs2FdjDJb+8$)!&ywEXFuk7FvjCKHKr$@STE{yKYm-;x@;=h;_;k#@|5(d zbg6iY`+~J9yFIol+vVM{(UjhiS_NCUIsJx1xH!GrCTvSPh>JJT(|w4qX|3Mf9h$Zb zd}&JeBfbCrj=&-jH#*B7cRAv=rzgF}Fmd099=i*787v0A4Q>fsD;)D&4qCV9yrYw_?P`07U^XO|k-8XMS zTFClt*gBMR#w$d;0vV6;$ns;jbHmFw2hVV((MRD<7a6ARyr=_h?7wV(mZ{{2bsX}b|NIIAY{Yp2edh#1i=`-Hp!SA`fcw~z{7`0{GG#dvQnSfNuxBE(hNZd<*ck z3J)G}3L?b$Pdrz5!lu zy8!wXeZfB_47-tYL4$oq^%chFf7PeF{=>Rzpdb9Mji3=u1JC(rk%uoRB6hV6h>@m1oXKl93kBg0QN`RvdsE=W8 z&BokX0&{By`f&<ztQ5!Kpy{nZTP0 zZ{<6CFjnU|W1a8JEz0bHeN~RU-}?I0OvKWh{5a-0tXrY;e&Fb_wb{ks`M2Y3=@@8W zx*7AQLMLiYLHq|!8|HoPF_xt3LFZd%4$XY$jER{%LvsqF4>?*QnQ6lPmG|LZi#mjt zpE@+teJbn`e<94`YSp7@QiWPIheaac=Y>D1;U$9_B}>hntb@tDS=Gu zX9m;r-9XaD^weuDqe7V*N(R%{`O;S-{fjk4nW>+t9VlO=rH*^_sG`iMQMDNhb`#4F zqWq?lQ8w=2AiwVzJ0x?{r_aXRl7>4N|IKMez1Bw;r>XB=9u~+1Moz@MrRHeb6OMgs zGJQ8>oH|d#9hFV+Ct>$-JfXhhxa#$z^I`X6{7Bfafupv|{zzR&dz#_2eK{ry`&Za4 zv{yI=dE<>G#v#VxSR8_UGjH}+fB3L7Fm6aZ(=uN)kT!MSOc zPuta_F9x0>oPOeo3qvQ9&w-fc)w$3ZY&XRlwj=S3&+nHI;`1AiIM$hX+DFWrdHL~b z4Iqg(GYjA<57)FeiZv|-r@=jYn5LD$RTODjcLDB{f_pZsX*EI2VL%Y8;8KXH_30Vq z)O_7^d>5BM2O9Baw*b0|_EZ$I6O1L(PfxCe3Q3ulh<}}D? z5;8h%T83fKQ0GqDhRvO5cNbxtp}ZBMe*UqBe)6&qVM=y%*uvzSH!dM>rej_O$+aGz z3J{-sBLA2sY>V;@vkmk69o`&S0r2Fr>OauK?ojP!*j^lKAQSkuV|spfF)r~{9=<6} zeN2CigrJ_v?QD@;T#F)Nf?)KfrJYsTqL3T2ITi2@1C7D zw99=B^O9T#eW<2HvKUz^}09DhyPu0TrT8Qtb(CHsVL?m_3!3a<}p z#ZMom_5b0qhG%A6w7Tx{Nf(_TpV9F18?Jff!nlX8m!T~wk4k1k3DFLEd~KFvAJ2v5$6M2t8evOXyn}0}tAOWx zKsDlFZZ}RzCq#}CEk+w*%CiT;^#?x+z|N-o-a-> zOwkXXM+wDz$6h?g*h|?;jvnN>$Fu1xaZfdDQ`}dYXB?0DiM@HYVEQ}rjQTx2 zP3ZxiNxa}$Q(EyXG%%mj485|Cd7NoNH!Z^4w35&F!YkVGyqA;nG5lUPjdfX$i@ZCU z_9FSi`wTh1ln;K8Cu;0?IIL-LxKN&^t%B&U#+Wb%j`Q3#aG%^ah%vx;Z+9vx{mC)> zlmC$A1H=c8P5%gO!utj<{nx?!2EPlN%Rv8Se`a3}CTV}*TQ!FDtl8@@Pl@?16ZQ}1 z#tk83{1&n74sU*sINFE>u=A$6#Bq+; zD?=A$(9SbJ8|~z3;Cgh@29JT~+HxpLX!V!q44VXd%j%~c(uMy_R|VZ{fTz6wfoW)W6VI{V zjA5=>;z=X(Vpxq#lP}9B|B2@vj!J$C5Z8k3Oa3W3Ra^ zUJO2{dNOPnzRUb+h~xex6^Ho{R{$E0#99^k;pGiFNGHR{7q*9@n|#QRiLff96TG^r zpEAs}v>k+AEP&VqBHK zw=RP6{4&D#7L=?qE_q5?yl?ur_@*cQ{y4mcRP9q_SV2ynoZ})dlzb-S9oVdck^z>* za#VVMKfpNgws_R7Dy~YaclCnLZBX!6l+E6n=XY;x&tSjjx+>UljMKQJkAJUK>@dovBi@PuZc|$tl*-!Ejk7G2`Gd{zJ zV>oe)L%HJE!9GEJXA$<+z)#3=gmJp?pYaWpoxs>?XiGgB3zL$E3CNTMy({w|j|-8n zmj>gx5nYOOA`NkrUBw@kuf`BX18HSE+c$=gHs()!0_<+9{nhb@mQWJgLx@jpVsCw5Bl-#@5S2=9l}1#ex%}YT%cYg zeF~@K<_&xYDY;n;xzQmfhSlWOuUePgX^Ztq>O;yM=L418wQFLGBfp4KI>U)$zXbzxp*Qr_Cpo=nelUVVJ&cpo*>TDaqwv@uVn z%|{;cu4*q_^%sACH?($_am$e}`KBQa^J2PG689n_KiX}o@A~=gr<-;n^MP*ME1y2Q z)uo=HTrr$wGY|GV;{3E!ppMl2hPlM6tJ*U_p7`S`U7gFTs44hBK2hf=eeKB)%2w%k zXEyUwc2>&5J47ghba9VF0`^b=!bvZA?XPnf^b=1Ubr8eJABE%FH`Ep6J#o~%UVY8I z@uZ!2Z|yt@z1lS`!@T@yH5)R5c3?bJj>?xf(#*D2vZC&@b|CW%V_u4`vgF>hs(x6Z zzg@RR?Y-lwHru(6xU{(xZK^C)Hf5H$h%V}?;*~<*5YM`>9^{d~-o&wu{5Zug#x>AJ z)QPNTz9n=E_Zc!zp)1evbS2Xe@8_Rij`1DheFrERq)aHj`sIx{-g)lTA91{LaQ`{) zK2OBNw}dzTj>FvQ6w{lJWg7B^^s4?yoYFPbu)&nBDaM{me&=xyq=xzgVnLU8qX%uI z)rrTx%qf`HMgH8Q`3lx1{QAejw*=n^VtU3Wp9L=vA2?wf2uK=Ih@V0qQ}IKVsuSbL z{hH$l&l#voAX?`x)UfyJdqXqKyD8S>Xj+%UJMk(1tz&G5}u}W_^0FKBd;CJX;Ami0dEJ*R&N>9aFQ=c1Z94ruW7L#PM{y ziEkDSV^n;p8v*U?BWgS&4fKRVfan<+8Z`RGi+Su^r z?QS4;ftxZGyD9EV$NO=Uzz^J`?s{_x7T)~Be0em9c}4WuK=KmzpAoL|iYA3_>W@J# z)^T6%omuY7<(xNGoHBiT_7w3ur~v5;a6W~6V!u+lr&I$T^$DY%+}B9kT-B9lVfGj1 z?SYIzh7doLko+>+-8kk!Ly}*r?iOrK;tEZUap;eTUk`d&j(`2B1Ys&Id1Tq`?(hdY zT<-1P2Hrf5y}(Kq9oPw*;2Pk1Adj=*YJGC~OUPw8@rJN3Dp5Dm5ne0zoI)Ph?%apx*{@0JJz)#@(=v@}AIb{z;~oX#DQ6DG zMao&BCS;r8?3e1jD9$e>FdmX-hOuvxt}0XH!MP-b^TJJx`N%&Khpi%M=Kk1$b3F<1 zHcklnD0;kcEg|xYfDY<;Rd@B?0_o&;auLEk8uM_^Kk^Eo9M+{Oi8%+*!mt!<$v%|H zGMEp;IiIBbjKh3rA1K>QLw-gAHY3uI7pi=wrN5APBGmLfN zI|+Q-L(x_P+5*cu-I3P{9u^=z>!{>D3H_q{%!6ezJ?%t=XJ7I1N7+S|j00Q<`A|+7 zR*f`F%XUqok9+z9aj3UcT839e*JejzE{AjwPn?l#cR6pO>P`L-&v`(mSM_825N|>! z`0=EVci`+aZj2#fDf5Ff1V}3a9u&+t%M7n4Y$6E{?j}#P=Zk zuwgIt=IGS;LE3ZUtNJKf)x0kAp>4~2Xy5wBALbJzSb|P|)8)n; zIRtY&KK^R9h+7lqJ4k}>iZ?7z@kH^SIF+Ygb{rG?m+;-oenuKtf5q<$M(Wr;5tysY<8=RPVCcfc44!5`;8aeig!~%FL}ta{dPacmjOJ=C*AomjKi|O zaSW$i7;)IbQP`v3gWVV%v>C$859vr-i7EQ1;)7Qf!gQHe_zP2A&S$W{M37F6HR0%B z9^_LPG*rbP_rAOthhbJ!%qNgfs@!tWd=~5# zwT3|+5dTJOaQtUF(nb7gZEt+BCCVocF8m($C}GV?>1B_%EKe8oGJP(8h@(zkZ3*4Z zy83l8#}|Kk(xJvf(#7;vAI z3HhhaP`qTDt8}Z)L487c$Xl;%bTKzXx`=1LB)%H*rSuQ+%+rgHIXFcF@%a+3;;OP4 zSH)u-#wCvLD1|i9zQifLVVUh-TTv$w&p3>qh_w&c8pM-l#B+?_S3axbv=ayOSM*g_ z7<+-IJTM=&FY{4x{WPk0ei=xiZ8*1j?a6Y^N7B)Uag1X-^)mC#m-rZTCwZ#!RrOIa zpzx|be7B6eC{7Cdd#|*>lUC;K??=Q%fMZ_?>!M!oG)LwiuSqM@Ux@lJ57qv}(SA{7 zsd#TderQkA-Xf0m;kNbk4k?7&>nT+Cl>FbCf8n;pRz zGRu> zYXj7!(Uo{pItqF9tufev&YdN;Sa+l@QF@O&N}w#t6y-w6qX9kSm-~E#Gp;v>gn0aZ zU>^Rlig5!u;A;=P*ml^ndxh z%o|2aHe#LN6ii@v#L=d&%JOZ?-SL*}V++F>w$(FVos`LsAMfx?WEf{3wD~RBixw7U z>TV)_tcQ;P9|C^T4dKlB@yWm+=izyVvS30>c1CqL^YhatXY!0Oxc?x}Ax*`jTe8324r*oU~V13BqnJACf6Wm^}`AeSGOk5%$zc z;Y=CA{&Kv0<6J|Yn(pvU4P`SH1P5)#9a5g1Cs$-^P5}>MSa&io-}y?5TMd8D{1sWw ze^%lD&RHw6uLM@$t$XNCoSVqQ*^ItnE3$cz*{BX#2XDDw@{RR`&FS4M2s_e0_x3L? zg^V<%%bG=)KAaG5jE*71*&LSbomUn68!7vYU+KkbP8(i4o@s4@e2TrJk@4&sO|q{v zVgC#9d%rQtb2*e9$|+@3vy$n}>(MWg*yotQJb(eYq`X2tJw1W>G4;L3FpeL@FVrv| zArAe-6IY6U#P2)W6RQ6)4&~b)kACX?h%YT^Qs3WPzxMYZuV2bChMzRpCsnzI-Rd3z zJo6-u@ktNY?Nnd&XqWhe)e1WddP$Z~dKll|hYJx#8rWA=IhL>QDjao$s*l2PPM7_e zY2U3+8}b}+4dz&n!Tl3j^lDerF+Xgq>kZDoxi>f~f%C^>odEh8`&4kg-5b!GasJ|b z@BD?5Va}UYLNBX5*lK*C{02b>*KY!rutS0g_{UioL*VAZbyygmto~IR_O@@a`qvP? zZ1vwuSfqP*dU)dx#~wBAaLm~Nw*~HHxFXG458~OepmtFvs%fW_&%-Z68<@~-(ASCR zBu}4`x8yg+Cbk*>2Q|)*F7e`5toKo4VY9eirI- zb^o{7u|A?<7({1yU=@DOP!~4Hz^RF~H)X$w$CZb*w`@6`!2Rp5s~o;VUr-3jdTI<=6`QT5)fb1lZ&K9-~=a-m1khs|G$Gmwd z`l<#0%a}hmv|7jw;)7@8CClJ=$^Ojsg3D13$5zfAQ?|G!8U#M5C2tPk{wLDE5$h+U zm2`65$DO2U4QVXe`eG@v7BqbYmMt2gSb&Pvq7##6e)>&qJAD*i~`Fq}3Tzn$?0vb(Qv z+Jy{fIi))6OvGndK^AWk{DPloQyB~c%x4#E0u@*wR(Chm)`#SAK zxFYn^xq#yUJBS0^063R^oMo|jmWAPP8-SYvSOhqiIQrojK9`W^U1s$sqUb~8X7#To zoHDCF38-|%Yjd$~3O?_pGdhqKj(qj&is5(zx$p~8S0s{|;l~JFK^@Jw!-wpxD~4Z- zc_75E%D?z+y5hs=3!c|{(Wfs?g}#WHsn?axp#QbGZ`T=ZN@vWS2wuTKZ+QA+3iJou z57CGCKKFqBXdcub)GJ))E4c#qa#4RIF?OKdT=P?Xa`;JS3Eh#z{$uSDsXH1x-C@Pg zatk1LR<8bl-XZTS=#JqxLU-5=?w=u>DSfgVhFnm0SkN6o6S@QK#D35C?EBu_FJzeK zAoYV2n=cI(*(-7aUPp(Hkc^cMHQ7-jK9C~G6 zI;E33WeZ$U9UR~|z;S?60H*-X1?+&^0JjCM2yPtQ6#f_K7EAbFQU@LLAiqbrPCMCU zdyvmz(5Gx3H9u{blLzb`hEu1IH)@`oe&UIv-9SHWDy~ucZ5P@<-reSi%XRCBCejdc z?4u2&@(Eeg;W#5`3Z3VlKd0VO@knDn;$jZbvu`+_GK{*#qvuTQCBXmPXQDiWX&BS; zEZ8w9Pvwz{PVwehR6SI^Ev?baCLMeMl-zU3Ws z-HUe!UB~{Jd;Tj||K;jCEl<)mzi0_HCF`Se%{*IVb`w({6(;zc_7O zB<_m|!;YV$bNJMai8~+IA8L4y1t9OXpe*w46ygnuuatP+g+hF} z#51nfpX41+s_nYab~ehf9IU&T7<*wC^XxMF2yJ72GxNR)rkyAAnj_2LT^3&1xMzkm zv5c9iQC?pT<3Du(^+B$@yofR@<=G?ZVa^e8Y%c)sD7UOT*LS+3axDlr+N%M?BcBRP z@Yxpgv;kYh_iR<4NtJ(h4^GwS!{ORdu8?v3% zTK$4J+7`I5OvCv3h{y7HUW4;wiWbhd5zlazq#1zhT|X8 zkzVGf=p)WcBjYn%(V@~XJ=6HhqCApMEQe(Pq750B@kl@G z%(|(3c&1<=oMDKg!g)q5gglrZ`@3ozrVSx3@%QVP!@+;%t@2dtdmfjYi`Pl z^Y~4;^GW1yNLVRhg@jz2VEMX)T(6;@do>8<{2b2w3BRhx8(~euq>Hu?t_&aK)v$Zi ze8%OlcY+q|X&qy{{%E#1wZtuld{k(+zEo~6af7g5645m~Y2V}-E$K$>R+JC>5A&0> zcN^d@jl$u79_G)>lDCo;?8PGNNIw=>y_56n#MS7;El!&$!j^O`((z1uy+PQPp6L*B zUa~n|=fxHC@i8x6GxRX)CFUqaoq0DO<~&7x2X!RwY>8^kuz99q&y!Z98<@L@E_S=N zTmd_tV*Ik*@c?dWTe47F|7p?o(K$cu3}2et{ikmqZtC#Y{!UJMua@j$PkOyY^- z9xkPq6t3H6TO=`#Q*PH_e5Z`A#`sRz)(!VLp3&dd_lYr!Wf7ARrYZ!ce@Rr>~F@xd{R`6)Yt_4Vo_)3L5Rx4=Hb z`Zh#Civ}4)JVgiNC|OYTB#!Yp_Aoxf{j@Ngc`#hnpE&9<-jUv}gTJVsDnrq2Aq?L| z-q`OCyAHaF<%xRYu1wUg66=xe=Aa$Mx)r0J`PV1eKB~Tj;DeVQ{eiTwUsTw*_c1E= zm3eiLaTrb>ZvsD9F4MA}ln<7}eEfAR0G@G(BmIic3a9+!g~GACf++Iy;Wi;{QC!Mc z68x2Mm?k94v|%^0&1}%kvdCwK7bCu(CVyF+V@V(l`OkS4>P)5yNE=k82T$66>ybs23!?fHCzpx30DhO2UialgPRH00M`ho%4-OVv&AKH4n)}l zYdQZB1O2}Fk1s$!B(z)bEzpYj51hHOI4-t%_XBeNBVviQ%2N9lZ~mhkav|nFFm@V? z({4#-T}A<(7^PK36Y-b*(`@;#E}={EJ7USX(Ao-WL`G%VIFIcj_H|>D4 zszn^aYx~J(Ws4A&Tq5R_qjLe#CpqR(zp_vEp?vPEWBCeKjkU{|m3sZPBCEfK>zLq2 zE#VZae>m1zJv#{bdUnrTK)5bA)qd~#{g-pU75D87KWVYICy)C>xu1@7&VB&%IN&YU z*Gtit)EaTP6Y~$CnYxoW>Pe+_6m|KMJ4F#2zTNGsD={Mh;G$u|MM4rQR6p z?S0048TUR@RyhBl(sK+gP6!!e80D1mtMcZWNJ84En1h5K6!Vdc%Q#F=8hBqD)AF0& zk0~EigUp+@Mt)4>Pdx1m_AND+rt|OGW^r|#0 zi@Ye7^DCl#S`Kxlj2SU9W>C6tI#pFB0sK~QGOI1#VAYZC5AH(rVoQAmhG<(Z9~cs z^CP{?i)opTX_%+dr3&YrSwvj=HJLZ>@nD@v2l1>Q)AwP`pZ~qM2qR976U**dmvwC1 zE30AOGQz0mx&OznGue+AMw*FddfMciLu32(A>6>a0q4>hT|LY)K>vplutgZ z@lfd()`4Y^2h5B0VY(2~5%0gFO3~~;W2A73MnC_RJW>`_ya>u**@|Z@gYC-mHhayD zf(A8D%{eRTKITCj%TVPh{!m{0c~V|IJ;*e&F0?88^uc`8JgIlbrKHi5C*;L^mCS08 zy%gq2pN4xDZY$h2xEJ8I!|i}`;CkS8!o32AK7jYimS*38+YP4$mg2p#rFgGwDc&nv ziucNv;=Qt^c&}_J_WCZ(>Tu<76>ybs23!?fHCzpx30DhO2UialgPRH00M`g-!Oe!7 z12+#Y4z~bqA>1N3)=||bib=x)xW+~2Lv?%ZbAmMi-! zFkjG(dy`e114id4(0O9?kNcW$JcZu|I0w|Vg?rjDH;DS>(#m<*t}V3R&z5ljy?B6g z;X2?pz`YDt1UHV5^Na@`ih0bl2W)!IW0q^3S+3a(KWT|K=2NdMSSr3LQgM7M+t>%I zWBforW1pdo&i5&(KZv89!1;8Bjl65BJNzWEFNtB)Hw@>RBIoBt`X%o9*I|xBrl-DO z9G>lFIM2E%J;gi*^c3uG>MG)Bt5dI0*D_7`TsSox_lf;>=gh->tF*RizHkq;Q|Tc63&xwj)b!%v?OelutCC^62>H~m#|L4 zS_yOQ+kDu!b@SI|uYRr5t)C_KGsXh2Bf4OFVSmTWVbGDViyIJ!-@1*6LmS=#o^z_R zC4P>?&y)DL#4nKeg%ZC=;%$jphf zk%YZ2ZF9zFf1n-7GHGM@(-7z1U(PVn%J}}W_C-JKi(=UK9LEchPQ_RDJ@Lv;qn*zC z2UwoUD<5Sj`jb|IeSvMrb&({oPKPq!*p@sRO&hLPvC*v2Yv zwmrj?KJ@57UX&l=l^*lcU!g-5P^R~72wGGgq}8+c^})JwUVWflfM=duBjtR}PUPd2 zCuv|lJa@(UV9w_<>|u_XH?PZ%Ja4K?8Dx90uKxLS_6`4hy1HYL-w@vS>`?JN%WnwH zN~YOQ7@zhz^D9I-#WubXH9?=^9qY_6(!A5`blYRN6B9NbapXDMmFZ2KH)0%~e`i{c zKEzS`?07#1b$tkNnO5P?zZ~=YkT13o@yw6;`1^+{pEAd_3C3Z3!xs0rGB3)wTC3py z0>ok8RcQxhP2f`UPC?!w#`E5c7eN}z56kBrrAAELQ8pmE$d_U5N$Q8eI+7OR4ZUMv z&PkO^e)!{hc_S_9Q+y{b0vyX%{2@-YfxjM{k2@b{40(=DrD0i|V~f~=4)2^U`i|l$ z<1t*7!?IaVMI+^tb@cK9p7Dm`y;91kT8|(tDvy*Y1N38?FVe9c~$10&W%DYPdCUNw|CA?uXk5 z*A4eD+$OlqaH>9Yq|Ls@XS4I(uDm4L-nbL`j<%1J2{_mPqu@jtc<1Ap_XvD#L$r0RYj1w?sxB>lm$9p>{I>x~s>5(DbMnA+IIR@-_+G_T`-6>xMF>&@Gq_t-$+nROoQv$JNZg_qhc=b#s-#pg|ZA1UG&vgm_EAVy?zQSGYj7kLBOS@os+P><%GeB{HpEISY_gq&TFDRLk$(aBEn zu=ZYT>lrze^y)~*@aQa;c+ww2zQk+so3kNnbx%;g&C%lPA=4{Sr~BNHwYZ1(i}C$Q z&EPq~#*B`7cxmw;=Za2Gd~Wm~^P*dkR|{kZ<(fPPaz%d#@3OnaeXoCIlKXmGb9eOx zX5-Aqr2f~jR>b@gpZm-oi?!+4!>ARJ?*X&k2~4-0z%a;@PF>!F`M(w5%}h5BXQsxS z+?EdMtvw85eeWS}Km*?v)1qHQzql_!`f}JP;J*=YMST-l zz9E(uzs(87?Hcp6jRoacfgnonL-)SyLv+Us-FDl3i!Y620aKFi`qRr(?ppdy%j00 zPYC`qorbf@c;5wWN;nTL0vWG!@~{UzA5OK8RyY2o!@F??0y-q5;r&6p(^U+;U992l zwy1`DCOQSs@$^&w1T@{%B%ZoIq+z`Smg0_m!`Ou%{xOL0Jv_zDRP39BWnk#P5yWV*Qmu8}Y) zVf&W_e)ly3#;z4`riAgh@ORG_uo926u-r9Y6Y$}M0v6vW;P#sYw3;Ps5wLHGfNPct zn3S+OA^bHG)~*)*ItfeG3xAn}%QgysLc*3uguh+FSW5V3O4#rd;ct}ijpu~Fc#D9c zp9vV1(Ef$+JHHgL@&y4G{YJp}?*#1GAzz z`NGQrmj6M(1roj@;pRUId`iNFuM7Vo3FrMq_~Q~j`&Z%LDq;7V!e9HAfOQhy9}0No z&kPHgl(4u!_{$_*R4Du{5~d_vHC*6VOK6P}{^+p+E-DwWzCyr~N&(9xoGIZP2{%i) z<}?wnPr~YI;h!VnW(m!61b&r-J0vWgEb#3TZv4FPcS|^Dn(%L&DWKUPU`oRHrNUog z30NtiDPip_fv@|bfb|ltxsdrH6s5+fkBH`x$ z68;?$R{vi34UDSfo0btUB;lqW;n#Nx7<);;hCd0oF%b09RRjfmB`ly;ETAr7)d=CA zDWQhVZ7eS&;kF}%zvL(Z7fRSC;cf|yQV~8!!fg_UJ|*zg5^k4J8zt}w36m0bOZc>e zFG$!UVM&=tS1;i_2{%fZk}z?!h*x)vfbnAmv?WYPn3S+?vg3Fk@JBH^ z@V10oB`h5$@WzP(wn$iBDf|yhm>MtqTTc?O_+$Zf3HxyPk#dr%643r90e74xVCiQC ztUX=8H4^rJPWWRr0yauGPr~>a0w0|ypi?VgVv>Lhz9OLgRRQb2Cg5tka!7jay+Od} zO#&`x7Vz1{0_xuvu>IcztbJI()FT2m{6N4po236S0prgJX#YaMp63Oe_o9Gxzm?%T z1boF2u-p}JbC1NoB4A>dfU$l7_5T&H@2?X6O+e>O8NNrrZNWUj_rnC-HbTHYUBG)Q z1*|$r!0m>B3r`X7$l@7qCfXiq{PUjcZ@+r?Q4613|GAQ9Zkcw(c8Xpg@1D7=Y{=ZZ3u3#^*nHUgJ;U{W={dcCNO>Euz=*Ur% zTaS2s$g7Y3c-O1eR}06j95$u?^VSs7i(YWp8flkyHnrYF{|Xnq7ychCjZd$xw#v^yX5qH z{`tA{8bAN_SGUyM8*4bK_w`Z#eZ~48pZLDp2kdxXzXQ#mS(iP!F8|Npyyjb196jUr z;gf&z+{$m)SDicMrpuqZq4myN+U~DvYdqh4Yx3ET9Jc4NOH01-sq_AJhki}o8O6ul zb>@=(?SV*3(bmUK9lO|Rxo+~fQ(qhZhnLbr)?GO*H2c0S>wjH0?bq*HUfvgT5cxYB zJn8!PJ$q(+|E)dWIi~zC-G50wZ(RMO;jOz`rrt37#f?+Xe)PUkQ}6hnn?8$ownx6X zXZN1>E5q-XrcdJkV{_n~qpHfPj{SZApF+PZ{PzD`U-auoZ>gU*Iop|9y!Pe?+W&C% z_**{pNb4D2zhgsY%gSum>S5Qcd3{&nrQ4r7u5o4Cf4n;H#IDcI{K~B*zX}iAbMdzT)Fa>e-6Jnu`r`{f`=?=ly7=DaGgtolva;{2-jKgNaOvXV zPqa=bf9e~>7cBU~6JL4j`~Pj<7uj*=fT)kDQ)pPjN{`+3v0 zthsd8btldFV{_Mn>#q3L!jgs0wiE=PS@yR*PbB^@FLv+$-t*TdUSBx>r@QuGW>!04 zLy=as`xI^KjGOGDFaOI+U6Wrdf9!vrxbautKlwWgfAqPpKDYeF|6csh(^62vCW7`&A`;EWmO>Dbj=9PM1 z>GTbMzGKLSD^Gsv$d+Tq*PpY*o$&Y%R%9DDEjsV@M^==jPxzVla^T%r|S`KJqR@2Gj{7b}1H(3PtvKE3OVp|Aex!Ly!T`Omvfy0zx+RnuPlU3Jfx zBc5A0bL{4gp&fgU1O4;bkH+j(rxqXjR7Jz9N0ncFgL%}BvtK%HW zA1!*~J-qd>=xx)cwU1wLV)Z@Mr<_swyY{Z1pSk|b zp*?%{+Dk5zw5>?xb&ej9=PM_pWOc6Bdp2G=4VIW{nQC(w6$+P z|B{|ZzOv=Z)g2ROnaz>15!&~5Jz9G1GWV^UZyWu$Pd)glo6h-DYsHzNhxWW)_41D6 zW@@QD&o^B9%l;?yBK?UGh2MPqca7DpOP6lA>OY^U>G^ui>Bs%7|K{{< zwbPdTYxCjH|8e}k4f}3O+wDL3*TVd%R~=S&dc#@Y`stkP*wmNi@Ba29+s~Wu+TEA- z_64V>R?NKg>)N<)#Baa$_vIH@FCKG5Oa8?j_x)z-4S!6ue*Z@kJIa3hFSGlP ze`v8OA>!V%&^75yC_1P6i{^i6O%fCD1^}-*FJ+`PcJ?7;s5wi|Nmp}4Wpu}-mvchQBg5b zDJjPsl?)9Hm6VKZR7|X?Fj29l9CcJwQnbk^$;ha%D6z1}&`3$q(8%Z?CMFsc6%`p4 z86_1JCKVMWCCYnUoa;O@YrUUb>wUhx(`x;^_I>Yr-+P}k=bSm`>`my|5%w7$G`~CK ziFQ3@_&GSEX>$>vq zL$lxcvFEDm3sk6(X%@qt<2-?DGZ&9i6KJbvHAv+;8`P7b(d!4uz}zA>xY z`@_C^VC}r(pYFMP#-y5Y%g=3%yT9-8Z(kj7DsA<3dp`TU;nVMWJ-DcL`VH1~0}kDI z;+D>9RzJBge)!j`j=es6+kYDmJwEjn_qd0@SaR}Ix8UI+DHE^1^6kj4cl+J)+8rzH zD;`<8H+0Is#b@u$pT9r9@A2Pzd3NoHefNtAS+j0BJfZIs*=ydpuH>TZIm12}-y?5s z?>)~X?_TKl)!{BLU$go0Axrx$%<2B&r%$&x&m8yK4a2T^W^YQo_4r-Ar`VbtPe)Gq z^^-py`t^&4#{{-Dy%@XW$RoMUWA6RDD&dM7CLNA`?Cguj`Bb+& z-ZHlR`yrhd#T*{iYhrWiy53dOemD~_`pON1AFGL<{_W`}^814*7WSqZ`kZeDmRiNp8mtL(iPPeAtjvJ&s&EzV)A*{*BE1 zEB(u`nqT*xI*@a0guSZEhU@lC@4b3p&FdG>p1d$@*XaEb?`1ZQZE-ieH~aKUyHZX( z9VL~+^Ppx1f8y2o$3jUS<;;T>AyW5`CxF^;rRW>S7tvo#hoE+mvMt0xXe=W~y{p4;$*tND(~ zX;*X}9bF$%aO{CiJBBVunK@vn5oVaV_pxk1|C%?F#%8iroWoB_WC7{^osiX>YTy{3fwm}tV`ecU(0>BE%|Bt700?K%T>;J}ab*YA7hyZ8I_oA7v# z>_d0HQQ`OWB~AC%ool)2l3#+q?mF6v zbCv{LKf}KK#wR_$Y&hm0k=OO)#yKzCm9ubKmx;f9ci`wBqZa4)zi#{D@1JY!I`@J> z7k3-hFZj9m+y@Tt82;GsS?)d;&8Yg#KmPCb`+s<~Yjo1vKc;5ilTcXo_}3SX*k7@~ z?|?Txd+e@Y>lHsv-Evj(Dc4O4f*+szd+6HRw`At8{O_9~ecRrxTRCCX5@*jhEwfv0 z{bS?mhD&pw=zeDZRWomiSvs%xS6^?syVKki#}_((c-Jxa&%~kcZ9jJ+e!}XmvxdA} zH)iRCbIaD8{(Vocyv`{tcm40=6_XZ!zJ1Q&ZDHev2Yq(`+jsQ7Df7pX3vXEPzm`jC zOZPo-E?{EbxmnwG9`Sp0`#snE-n!<`>$-lh+B5cv^>c5&GHcn$xUepPz0ZAdpuY0) z*iow=JX}2I;Gt`uIF{C__j|uB-ZpaM`=cyxemvK@;?RKC&OZ9q54ZIEykOhOw>R9n zH)ivmT}xm1sp_>eIU^PvcxG}y*pgyjy%z4(u#1+T5Fy13h! z-G^@p4&O29E58%dE~r^G`rdBile@M2zGv>K-esGc!)Ir9f4Oe7La-`vreIKQZ#Y#@9AAxR19tjCtYQgsVP! zFU-9=?9A4!3q3=+CyjZsxr@g!!9R6O&zC>9`^eMvm!Dp>bb zdw*WSl%OHbt?O*dKb|rC-b;HuwXS_lpJ_XPU)sC-;n>R$1zUp?MlBuR`N=;H`2RDs zdFx+I`7@^1Jv(iSrS0>;gU7o0TlU9%88o$F?$*$wcg}t(IpN^inf(I?rTP2a1gJ$&`Z7e{p)H{Mm-gM@IJ72B3`N+Q))W78TYFSa-udRD_cDnT8 zxud=rcIUj|SIyWwuivFl-+6O+RQS|Y3$Lo_bJeT|M~vC}yoVhluf6r}6*%b&@gLh)EIc~?^C{1Gs(ZDpUf5;9Pt(8pJpJUvYcCo0ZO?#n z4>%TG7`S&g!nglD`E2{tU;k`>bM%reC$~)--`Ms31EU`v^;cojlJb`POP>t+y^DYQ zgrTo@4>* zpI&shW$gUew|mzIK5}Y$>Dt|%XL4PColUTgeD9*4-@Ed`%AM!74m`6r%+L8~Y~zBr zTld}e*V^0eeXu03`{}HQ4_?u?;o^vUA1+$*rQej1M?5FLxVEtU$>Mu|e&?yO?RR`S zGT_Kn<%i+}A3Qni>aORzy^a>wVnEmL`s=?p3%>bz>NTI7J2CX}#qsU;UtG9(akyh& zVs+r`w=aD>dr{aG5Bj}T-fQ2MR{Y@nWpF|F=#?i%S1w<^ESB@VANAR0=gW5_UOD06hYmk_?Vy}VqsPsE zqB1r-I&?zt#b<}_d3t|yTG1^x-#4K0&UFv8J$rkWnC-*Q29$mB?4mi_MjU2X`akzdUmSnN51i1xeZai7+y4yQcX9Mbv&VfH+LX0o?B(tW>x(zJD%U*M>DFCW zU-#OUe*#9%#9LpM)v-29+~m!c(z-cMEWhEClWSMJcl)mLHzPZ}_GZGRXWCw~&-<>V z$AjJ8eyGy}Giwn)^PUs!J(j!M|C;#W(n&=}8(%x!`oFJ7e|(AO^?`{a;`aZ2{AB4U z&s+5~9=z!7d)p3X{8Rhv_tlH8X=#XjGn?tUH|qA$&Y@v`L^jt2l)@$mJ;{J z@a^SGUhjFstFzjNRaCv^Kklg_>_45qpEdKoq^_2_wr|E=`1mD$&ju~GFZg4@t}fP} z9x7btXzA&9YD0Rjp;K<@=lpB&l`kDkDY&fU@-g2>pDTZIar1kBR)7A%$lTj*f98Xk zR`+60^Y`WdT%M4kWzB}(V^7W*9MgZ+v3n|a z9e(k<-mcYSEo~E4emK4N@rl>wzt`z}{m(a_cm1z9+umM$$6IGlB@X$!@0XWcbW`EH zt~>6$p<>6)+wX}u@IvpygXY}*UiW{_6dmmQ)ejfE+ddvmytXLP(&YZx67o@(&t6{f z#+?&(?&@|fzwZYb>-#>qC-qGC?|R?5VdI1gwoK~$)9woFpEu3;w0*IoU;A@223*$T zu~T>ddFaA!kKMX*-Ji$b8L{=lxAMkc9XI>8|GxIT9kQ_I;@5B86xg-z!`H5$ zCne^5{`_S%o8msLZY;FFmDm69`fu}p{HSmA$X6fC$UOf01--|=_2hm1$DV15xb4x6 zrQcW%KXv?yA%AQrzhKbR5C3>C=J2rq=bA%PhYy}QXRh_fj6Z_;2=2T-|F_RC=amec z&-Z?Bqx*4;&mWP)Z~J8JE8mp^pn`6hi=JgMI zrJ#T3^Uddc{m=LOe!kbk=Q}>NA_d z^DcM3HRQmeJ1*IG?Kg=>quM{3z9F#M9|MHyxabJm{CRgTblX-ex2=l0Dso(OlzW(MLGrxii*2hH zuDW{(%11?wj2t=E7M|qsq})CJ$}8s?Ax17C(OH#6Z7p{@ptT`CVY?bS(i-qs-#GobW=TOdfajNl)l==khd?%+EVX6D#y=%U+lc)NJ zx?%o5-f62={Ss)tgO@7%lbBR*L)*s3-?CW0UTrAwvvjo#xeRN}``CvJLVd(AKK_>H z2V(Ytj}Alod{?|i{ow+g<;cwp@#DMb7`Bf7zdX#)rhguChj(7M2%k{`k#oLO#4%~RE(j?Jot{gX|F{8^YE^_sl(BKzWZ+K zt{5x6Ls+8t=TJ8pbxeB~XuczF>L)L>SorQaUR&(wZxzO)=u)r!arB?>(3}3V(Z70| zS7(G7@7A04#n@k)U=PQ*bN|UgU-+(ToZ|lqTPw!I`1o5EpnrT9-_*~dKHtfYSN%Q6 zHQ@@cy(jw1clAyG)7U@w&c0RtKcIhU9K4Q?zvUFhn(y+P`hNKHo&K^eMt+xLy!h^? zUEA+9^xuYe{7wHA=s(~6H}$R9mYf3+tNJnA-k1Ym+LvHFI5)u5e(>iUfkfBlZ<^}0|A}qQxdomP#t zb8dt2@wcqAVSmT|W$F>=FZVZ7-;4g$#(VXb=pW}mnD+l*=NyPY<$D{pKj%JpG(LOK z-#pk&|3dVa{-z!}0KRyqFi8G@h3^*PHQtWxQHpqc$Iv1DC^X+SH2v3Le4@~v8E-Q7 zPY=d`yA;2lS7W@Gk7@6M@rb+AtN$H>_&$2E4RcfGdhLBM9-Nb5eEcm_FT>mo=yL3r z++P-5ZoKoDj5et;>=wTJ=+^ddVti_rc5=5WnTX$ zu{}6v#Q6AITo_Nsa<9G={DPI3?F}|F0 zVtlY2ZD=2JPfUFp$1cuAG4(`@SGdQk^Kri592L_(1AXUQl~9fEz35L-s@MJy+AG0# z)P*9B&nonfb6Sj#zhw&g7r54|JE4D^>tfnh;CRb9FPZ9JHTvUN=e56s_%0tk%7%R{ z!)wn*e_TF#DEd?PsMr1o`op<1#s}wpo% zjPV|h{)A?G{TsuvR=ST~i~5|46NvqW+vg4RCp_2dUx@y2j*jv1w|s;BhjVqRrE#^!G>q?4Nq|{$cpO_~=K`-{Q}_cI#z0R`}>fj6df%#Vfx! z^;V1r=U$oijf1ei zK*x78@}0x&i+9F@aGc=&g54kE=RF=T!}yi`;;nx#{5{x*T`1!5BDXuvC)g(Geugf= z_AWtA<+8`a?m^C`JsI{E9D{B0_rvz!+%MyUcgB%l<0-Gc7vs%2V5a>r#;4>ruO5W) z;oLCOzB>$ULzi|k`V)<|`R;qB_NUXx&GV<%za6=AE}2>XMbzh$6^eC&q(w*^H0BWe3K?e$K1AU_3a-&9r}x_?+wJ((&+8#7{?Ok^_wX)L}dd z0I3dWv+@47o56-1C?N_1yp@CjK zANg=jooWBbhVk#_)f3S_&b2e`$FZMsu3ZiG8@B%h+A8v~pTfRGyXk)z{fX@9)n(|9 z%SYdcFDU0WL@M4H#OIucT#fez^e+Q*`OJ7Xp+B7CXX?bRIJZETseY#+7>{s2OQp8o zCFrlczt_Jf`pY?iX8i;B?lfUeMS-@*8XLaPmwN3((SObzH2ud9!toz-FUnEC{->b- zo-nVy8vW-SL(_i;`X7UQO#Kr2&-_g7LH~jyym~bH$2p0n-G=^f4q`pNw`{K+=Yt%~ zK{V}u!p^ygrXB!0=OSkGH2hsQoKLU!+IyfsoTF&^|A2pR4q|C%!+$3F({Zud;ehik z`V;B!`agmGI5Ahz`1o5MMSnPV(bRL$pF+%GG<84phjSWD-GKb;w|n)M$e(i?P5TrZ z#(%C?H}ib$^6K%(FWg5zkM9HLLYnncINm;b8S=CH=r|ldIF~1Jgwfv#$Txd|w|*P; z7tWb9<9&d9^L=y~^5tAg)82^vm2+k=O%Yqi-|`VO=gt&p|9!M8_7BV<;tNfLp;WVb30A@5ZG%lm($eWq5quYY3jY`f8q+S4j+W=fqlpZ2gZ8|V5Qbw9UDprv1WToa-=0v{d_Z48H%I!^GbM%)bZv+p@;%zZCuDTvD@sJI;%o zQyPnLrvC`k=iH}C)t`v|$78Ok=|2+3g(&3fLILxQLH{`y)wK8G_Q#x5Q-6&9bB?O1 zH>3Yf%uO}*liXi@bZ;DQId?To?Z!>jot5Nn7(45m6s_oT?+!~+r z#$Sqta(wb#fc>@OVx=Pif6L#f&$+K=dzV3Tj+b5SEr7ORu2&(*@p%K}oLKYv`83W) zZp?`_KDh3|KU&aUImq#uh4JRxS>xkx*^K>^b7%1&t|MLu;&BdHGsczi6LI`3$6T@? z=@A(JG|aIz>xW~!Ip@~YNr=a}wmI7WJ24(!SF!1MH3jiF7p(-_mGRHu_e?3~4>bHUe8Nj|z2+lO;t zP5ax(ufRvAAwSNIHSN=oUzv|yjr=%g*0i6nVS8iltf^-rKhC8!^^3^Qjybia#_Bf~ z&apN1G31v#(5tJFALrhh_U*_o%}38eew>qQ+D9V4EFXP4^5a}x(_Uf2_Vv-@xqW?f z2J^#QUemvU`T6L#kY70F?3(sBkRRv#nmQBtIehf>$d7Y@O?zMD=k(ECkRRs=n|6;4 z{q@lUkss#{oAxEhFT+QFfc!Y8*tEZh{BnHsX5`1Y#-{x)g8b5b^c%>JbFoeP5F379WA3%7*C9X7(KdA`@^kp; zdy!wfkG>iCW%=l7$d7Zn&H7g4SLLIRBR|gdHtjo+Ur@MLZ$^Hc18&*_ZD`*|FGhax zJ~{yTrTORuJYV?e@yIV6bH&YgS0O*nB{y{-@=Np4?;$_VF*ohcaR0*`aZ^8v{5W^q z)Zbx$v-)T!&X1f^ZrYo1yer4ta#P=e{5aR#)I*V9c9d5SLVlcsZrWRLzH#AsmZ@LC z{>SHAre2Es1)PhXsPjuI^3Q=b?HAyDLi_*GIG@DDcy$Ky=iGJE{t3pjJl3m6B7Z&~ zGwlJ$ziFmd2O<9!AAOYLiTll_e>U^=(RU!f{CmCjzi_|VXy9s{_*M5TE-e z`-kFqi#AQsvdRVSMs^^yL^I*QZ{) zAGU9ZPk)c2|1~~30prK}PiFjsHtY|$|6=Mf7$4q`G4%r&pV;GG{SD8bKKgZxPgIG z%g65lvwkY_$2TcDbkRN{^n0h|)E9dL!9Up(o9mtQ@|EA{pYmxoD`Zw;cKKcOitFw9SdxxMu zKH6%-^$vcIoAK5lKmI;9bwBuXEej6{`1`;WXju6BxDWKyuIL~3B^z{a>_1oIyBLPw z3#Q(R{e|xrnEoelJWGR)QvGUZu1#m^OjP6=b*A19ZR?DE9%XE=1hKhR4!@$*192?i z`w6@SMBN3yi}*ePhM`0MjD4MJ1O=f>v@bw@>G(JEVZO^zmuuW1e24vBJb&Q(0X$#P ze+x9%x=T`fck%Z$#=KVkR*VQ7JC$0+HmFxFhFkGE{;KLvKK(N}=@)XB()YxVJ#3H4r#2iNR#%l;F_ifi`;ORtBW z&yTC555Uf~{7kzWc0NBg$7dvTq>rA2{&I~!v;Xs;`8+pX@uovNa8tw7ub{tN^Uw63 z4bA7b9`u9x{)_7?uKkyw`ia<|`TW-Ok43+@MpXh5q`zZ`rQ_a*4doo)h1}m$j56BS zL-YBpxxZe6{gKaOQ#3v=Li715|28B2@dpq)o~Pm~)}i}x|6hk>l-~>_!snxz(nH|K zwX=ACh4mkXozF*$WFG;|=b=D{{UGA=`KGBq!~V(Vm!^Ig`xl>2n&aIMn$I6i`)lYA zpD&vFRoLUpy*dNipU($P`@q4*^FMQcJc;eW=XIw2IP6?&(5-x*!}j3wI+wH)fej#AJ-nNmaf6L)<9!(b@cyk*!g_S+&{O$?)uJakACxn`lMs|I7=g2pE9X#XW>KELAqMsBYhw9n^N zX1wLleEwwWf#@HfCz<-Ca2!AW_3A6oF+TsvQT&t8eBNXFx8i)l=Qr4d9qkn&9-qfJ zq;1%qT;niV`HX_*T89YJ;s1IVt{0$Peukcb@!<0qbA0YWe6E2QDgPPJd_H2fKZ4`i z-_KI4`w{Gxz?gN9@y18o>#=G|JPxl`FtWr{eK+eZBN8Xw2C(g z`ISQ#D_$1*$LAFV2*~)!u=DvusQmv2JD*2{NZ-x=K%2++gXllkYBY6s#O0ceW`1Xo z51&5(9r3$fieo#pP5JeMKi6HU6rxU6@Z#>_2>dkg58q>>sr0zXh82|4m&B z%{3lPy$_oA|4p3)&9xrQc$v_=-*4(?as1-_eYe_Q56%1ayd}VVZbd%4-yW{~uY>0O z^&06vvA^+tx;b8a_mOKtn(a@8oohmx_K#4HYeR;sfBtCC{2(<;75sU>-1I+;cw95m zj28ww*NimnFCiY+jx^(Kgq`=l6A*^^uj_*23v{e>G&JvL2djTe;m@@sP5*eU{a1#Pu-OmJCz8W6)e%GE#aAu7|kBq-kFV&9x>?`vRQ*x#pyKeY66aYfe^Z z{MSHp&B;K;n}Yp=YfhRv2zIVLSu6j^&|G`6MY=!rr{3*zB{bKdtXKZ~kuTSxER%j8 znrl(o)ZT97%e5#?eHM1EN$FJl4`Aool&#XG&|I4`K=p4$IoG6&l>P64*#3Tae?xX$ znp(IPWeCQV+b16RaZO5_>@A4LH7QL!8Q*iRO=%u~D}vyN>us~WY)Ib!k5&CQ&@Zl4 z>6YFGa?MKf{1Jum7K2Na89*iA}&kyXvwv}j&-?vmJ~n9H-#2v>H1Fq|ItZHg?+Z0Pl`!yr zy}5tAit*w7dDH(AB*y#krhXga!~5@MzUS~;i1*t~-GK4o{dLp73-aat^eE*&AN}F| z^BC!Gkq_^e+obzre0YD{+`oRs`0##ssO9I?nserv4P;!~4so z?#18hKAN{ac>mb6_rdt^esQGYJ%;h&{ox{M{4u1C`@sp);pji_|2m|vM1EXr)YQAt zf37(is_okkcCI~Y)*p`kaShUZ)jx;*jcbu+OSfVCxh83l>f?`#S-3W-sh>rBu2E{2 ze-P}v-;81C_`Vzs!0`yW3jO5wtqGd#9razxA zGmagxJE0G;psSC+C62`LHU(t6yiOu(#URwB_K;{llf?hIB-$+_xlIwTw-T=HvRJ6YfD&fCF%x<6I9Hj&B}pKr8MA6_SX};}Y2@1|kP)&gGzg7QTm8 zoXhMu{_q}5EWT&7J4FvU7=F^6)4_Ut|F)A2$7t+_^p6xBqKm}wBV9UAEG7}J$}C6Q zj8}u4tvEhdtp;6W81e*Z=lf2iM~p?T^v@*mz2)2v+Ka^mublJF}d;a3mRuR%;3 zgmUDQF&IQY3dC};mV~{59KmBah&Ub+@Jn3i}_-O*d$u6H0p(j;bM&FCXr97be5P;qMb_F>r~z>21gq8 zI0uH~kS=D36||#%Gl}?tqrh=EK9MLdAyHllkg84W7uQGWHDPTAu&ER z(oJGOluDK?40V-0(xm>?#RsGlb0sk~U4b9p!pVPd!#Ax4T(Vzd|| z+QnEgP7H}Q@`)9b#Q3X?ayN;*vZM=0j901Hr1IeLhJUn}K%!m>3IAM`7pc5ltPvZ< z;A@OH5hUuziB1x6GGxzHd6CGuOB|mR(IcjcX=1vVA!dqMVzyW@!Dz3Uqx|H7DHo=`Vl0`ITwrl zZxW-gH|&XGs+dJGf9Y}(^=rgN+1p6;*E$vdqaTqZ{9;8Xi8$%9=aM-77t3Cy@_K2` z{bGJW(~NlGqFqcBQ^kC-T&xp0Cya48*UL2y@6&=-*n%D44LF~X$k#1qhy^0&c(Hy2 zXhk2>$;+{QZ!zLoKdymSEm%{aj#ZPZC5{!b?nKaa$* zq-7R}|AS|P_&=WHc#$~2m6D0L-Vs|!)Z>LE;|7VLVwe~yW|8tZ zz&VBv5p7~337=#Vak8ZIrOQa<+e9M&fZGgmjvKd6G}sCM$4J|y-5~p2Md7w5=vKjd6E(g|AU;kTujNy4v^M4pXefXmQfVyu`XW{3r1 zxmYh+&<5j$icz9NOcry*VzEkW6a(fPacp9Ym?(P0Y_U+R6zfPF2U?^97Z}<`BEKkU zhqOyNRXR($K)O`ATDn2HO*+_Z#1AJCKSnx1I$1hHI#;?>x>{@$Eenk}p<<*MC%VK` zFe2j}0VpY?Qr8Y-TxfX_0OfBbOpB{zsMCRUy0)>iScujIA3OyJ@ETXvMq+Js{etC(%yGY7p&&lPHgqc9Cc& zP375Qkyt^ZeiMoMmV1r*HWHe1Mww4B*y(=!KEKbfSCOdKM#3)`Hntm0LdTP6*RAqY z68?Fz7puHlxScqhmm}tip2uNF{}Z1u=*$Aq|1>e1guQ^o z_*AOAPUV&-4gXLQ;~Pc7KTb>_kxL_q{6n7t@%@MpIroX*MCJFz1v6O^=wb&rG$sV=^cH|LF!p|+8Mj~#GSS(hN@T(`$PRLde^}|V&$4e)X zu&0UHVxd?jR*MZ{n`nIz_0fJLi8yhhQ%n&vNwk|UmWY+IHTD<4Ph^lV>qz8XQ(*WvlJF0G+3=4b5!WH@k`MtKwo9Zw>@ zN6Z$B#7Yuz>PY7Gicv3&M7cxSMZ)e8GsS$doa8u5H;SCg@527#6kVcQOcImD6wxE5 zifLlHm?370`Fo6fOG)I}ME1abzSk&^B%$L;OiY;Q` z>qZ=_7$qi>$j>94Ef$FtVl9bwn?%0YK^;P(A2B4ySLMml>9XgDg<_e=wHsX6Ka#~1 z(IcjcX<|AVf#dL-M*D?gnOH+2pEeTtgp?Y7b`m;~9EabbVy5i*V#a>MKbJ(DDiZbT zRc?99&{h)T79~1J_`AgnmFJNdrxLMJ_Ife!fDtG5py8KDB2GGqc5_r-CS6OS-B!{1 zwxOfN1d{s)i8uu$;*_eqUb;p0z(aA*%cbjNZxI9EG5oD!B#F4OqLak_|cU72gQp{(L-W< zv&4L{L~I~&&Izdn(Jz}AAx4X_Vl@f>1`>Hie`RO~30)>#Ep0z;*b_+DGo|yT%cX0i zTciWOHvGd$v=<}IwPm=Sv#HVVz&gVoPHx8jC)!1am?##Ih*w5pd}~SM#WiWTA18mO z{R8AVqf)FV;TQNli2X5~#D3}|v7e@>JXg9%x}1bxqslEms6L5$4ifuws+cF1h_zx9 ziFSh;42F@Y7bBe@dQ_e%oiA3YyipAJ(THOcqe;YbNV~)|mFJ6PVvX1=2K;2ivx;^S z@e-ty#7vdvNf(P%DsL8pe>Unzh;bzP?-Em0o+X_xmaDu*x={>nG~$JecF`$%#4Hl+ z6p+|%RV21ky~+bl8rn*te^Fu_iTy8ud=2}M82k$~zJFn26bXAAiT%kbCXokl9GA`( z^Hg3e&9#g=;aZ{`bm4nYL5*vJN)qS%DiY`BYVt7l*HehQ6!+K3{kWczPLj?hkxxE} z_RC1*TP@a+TW~)FWP8rv4F6;j{+T5F^Ta|D{v{x3^Y_UKr6}hGt$ET6{bNv4w{>SkwR&qg zZVU+>FS^B4F-y!Bxn>#1r-mBGw??r|3_fR+hlw#DpQCUsGuBIH`B%7}6pKi-UqPbZ ztzvMyp(Dgt(IuveStRNgNY{`(u%D?s$l}+b!%1vMI|=^;676M+1!9@()zWPw;syH| z^`c2=hqQ}CoIDcoi=`{XIuh-*NQe0w^`l9YJEhY|)XydnuRyF&d4t$SqFzWRgW+Nf ziF&Cd;$*2jUo0Y5;(RE3z1S)S1;CE)r%j9^vEAZCr%NMJ}7BR3l>_@TvNnA^K#5}P=Y!ZVo zhl=^w#3(UNbc*R9zb9Oyj{VCNv&3xC7GlJU7URVvF@=}#os=QX^4JvO@dB9-hK{5}Ld8j-_^G((xqnbE!N<<+;*@(q$z4s#IR5@_;auV>^e6 z5u#m85K}-N$GMg#zi+8x(`BfS?`yzNgE1t&uZf~Z%#=M(EK_-n*d(@*_+C3NH{vCW zIV9p1i4|fsiQ`HgiQ@{_66JBg4t5+Dq~oNWApMd_w38~GA?Bz&U%E&v6)R=0k**h; z#8xq2n9)wKXcfc7C^42q9`VvnF-i1@>0*|cD;9{wVwqSe)`<0Dlh`T-3|F3_RSXxS zM7!t^6GgX}BBqI%Vvd+E7Kx=|g;+yk9O|W;#8xrj3gszU#c(l7w2KZgQFMzbVw#vK z7LeG#OT{X&UThJAFmZ|B1FlKS{i_({Z=>2#;A^-(ClBEJFxrS0Du$6;aJ(mRf2J)8 zT!!!CRp7NaPm?SsU3k9+6CL^9Z8Uia;*A4wFE31tBKbWb;g>3Akz;W^1M<2vmqeZo zEJvOZ(FTi2{3Z#x7DV1*B=WYC=wE{9B9V9e1n@Z=@5xv2p0JopZp7`Hi6HtDJqbiV zlEpM~Kk^|{@Oxtlh={i(HGi6RxdlLHgH`Bk-QXa>FlP zbd!jmLiWe^N#!MCHOS)<*D7Y5;1%#gyAdSXb&zP6YZZ6Gx!Vcy`Id{se8gPZ;a@_+ zzlMZA*D9ue1K9CAjD&ymO4xC(%OPy7eA660SYT_d)L zp^qDWF=C>~wV|13j+iSp(~fZscml*Yg_Fo5hD5njI+et@Db;(D+`IzG#$JiDCIhxt-jM^Rl#Mo8cEC zCX%SnHL^QR#Bm#BzRA)lqDSSa(rMB`+fjeApC!8hjK#RTY|yd8VE8T&*96gG%x-9G z-vluYWP8Q0pd9_f;ujt9LP(tVBS?&Mipn!oZry|OI2;G|g43{G$Eyb8iw!pK18?xN zSg;lenMm^cDsqi&wwv|_%F%8WiFoxSt}|Lmj9bkAjPiIAS1K&&@$y%K{~e-M5Jn6S?BxNZhRf4DS?=?}OOd&)+ft@419v?G7II93-?G zWO)uXzPE)WzPF9i7R(VJfO5_iXL%Gg=%z+_s><_7^rKkiRnocr;a`UHF39s!A@xCA zpGb49ah6xHyd2LtrR%8Q$NNaq0r-wEKGzPXe~dKO3a5610}kVUh;**(Tnn7%!$Osp zf&(h>-k`J%`wZiH#B`AU86@InN@q!zfmYOy!I~e8!?nQa7b`kJYYe_`1C8=jZ~!#d z{O*WHeFWz->0Ih}Fh0@_n~_hlm?h?uY;O?aAir1=?UsSezmCLqZy~Y224mZ>Jd8xW z66qQeeoZ9&0QM&)rJ_YbZa?!wq4Qe*$%8sXGj z3!F@6c^Jl3I$N4+ebZhBGLK5>R_OrLq1^`Z`YB905v0GHdIYw+%G1CBxR0MMT>{dt zoEm-=Dz63US0^2Onc>H^x9Mji(QXt-Kd!k=od+@=*Vv|Ck;-dX4nMA~O+ODvKdz-s zzYLWZvmF0(4Q={Gg8UxEfgR(h@)VY195Y!Ca?Nb|7qcASU#^i&-As)>1Y(U6jxX27 z?uZMrJWl0Y6Px8JEXQ$^YhY6sQKS8G674jR$lHRo30TfG3aGgzHvL`H*bb>6w?~@F zTd@WS{kZlu_n$x#`%fsy{fcW|Q`dpqA6rTI2cb=C8TL04x|D>yR=P>{daPN(`VA!F zH%b?dHvB6{)UPEGuSGg-jA73sVJ{|OFUFcDj8{S;Ua554Rj_x)`Hbv>>+7)~j%5k> zO+|)98!Q%`SR2J!g7w5m#OGStjF(Fyeo%~Ik0D{_TH4$n93;no0?NDM_waQf+a&{W zztC>z6fuoNdEg|YJcML^lMNjo3nIT(66N7j3~jj{M7uW8F1p1`u~@7V1Ew1FqD7aO zB^HY{VzX$CGwRtzmzYZ8{FW^iisfRh*enK4GyH90v=}cYiRofKiGG$!SBs6J? zC0!tvi8W#q3BQ0uBc4@^5*?yjOcQg&ViNT$rR&93F?fy)DLkQ zaU;Z7(J6YwEU|z@y>jVVu~`hf!-!`Sqe=M3ODBoxVy;*$R+8|qmu?k3rkF35iq&GHXqjuo3l*bC#BoTw#WXQTED|fkIn4{3huDw-LuGMu`s5EvAV%Vv$%uB3_+zix{-fh#Mxx zhzVi}iF%pR`C_S9EjEglMaq*zy(npi=oZt&9I=Rme}#0N*dhikHsXefF(mvGq?5%A zF;6TZ;a4TyAhwAiNrpXw5!F1+z2sNbc!A^i$uKw=`yiKY!U-j8Gber+bLR%7n5X9y<7JM zKwgIx-vfU;_J48=##Opex>Y)8wPClC@Q;v=mX4E7kakO_NT*BZ-D|YZzZu2$8$tFj zDAizuXeS5bewCQ2@*J^LOuyf#mnW8s4Pq;aI3a5czbMf`qC7=9ODq=4$bNXPDBUUs zrx|g=#q_n%!*G9AEF!JAUrM514I=*r7W>-*b~=LRRn!r9K27}&?wdadR$!fK(vABF zB+7%xckz1@RUNRM=jq7%9eyE-_WiAyL0bx^|_;xW-Oc681 ze6fr~{2J*dG2n3{j#Z2j9im%ICs99Fx>&3f>%~?vI zJY)Dx?XG*gL8~{{2Pxv-bG5siAf~tr%UIG#bTw{K*Fz0 zI%Ja(H$sdRouWs~5(~s~5^-v!o5jFqjd(UOhJ;^&bh4Ns=7}X@mDnH#JZIFmk{nOb zA-cshF-I&CE5tgnjYK{nxkkJQF^)vJOFC7|77N94v5tg)i*(TQM!YaFMobWs#SAf@ zMEz3fYOztYY&PPBijiWR=q6D=O*%&`5-Y?yu|*7i!KfEbVm$3)qL?CPiUlOvDU+@d zo5X-TBaT&!CgC41og}7%xqI8OwDHh0HCS4;oi2>V;cvdk=bcjhL`z@U-7K@c) zz1S)SZ#UwGi+0gTBA!P&ODqt}#2T?l3@R|{g^}3LW5fh8SPokYt>1wf2v=kcgLd8fiPIQx~pC+9n7Ks&No!CmkKX{iBH(a!fiDHVFMZ&*8 zx=gGQo5aA~hM$eZ_Kp_g#UwFNcd+;=ZmFcwb&>I>@ocLu35+VQFMrIF-^=R5x-cvQmhwS#o)b0 zya*EhvC>Y_BW8&OVmS%_TIpsn@Kqz8O^g;3Ncbm9XNY-XiC9g-uTh$RNRIst6(hws z(IuvlsFx#MBvy!ZVk-&1kk<@)$lexlJ5RpIZ8m7v^;_pm^| zhr+*^O?&eHP>%Qf(#faryg<4@xmYTx~wH5qijA1j+owL@}8}+&mI-i&b7L-9jQxP`SZK z5`OVw5{bAT68GbBNcfk@UMpt4W7Nwh*?$uC+TH_E&-y;N1>1o{e7BfNVtzudbg5WH zTJb&;iS`024TgyYu0N&pNJAH|H1=JDvy+U1!>v!@i z>~G|8oR?{bzn%IZjx!|u;z+#n>LBajuMtL|1 zZ6{%Oipd`t_Dr#^%CNVPh!^~c!7vi_Vm}2jUM`S%xy2-~(|34JRyu_m-!G4JD)smH zJDbwkAiviIB;ErqmM#;kRbD6ED7J`!)keJ#lE()zLW~w;#s8P3r*Okg#MS z0`C%mwHUBO7Q9Qa`mJ)D4vdgz@a%Zm>|o7iSJo&}x$SPdd&lnX>27B_Q4SW$!3Q6# zl@C5d$cG#(l!FgG_>hASS;>bS34-o*<+YuNDdf8PJUs;k@1>{y!m_47P$ zz4iUsc4l1Ok|o)cOD5)HRq?ufB)8=gxhJ2?L-|r>{*d!^QTEEqGArMZWAdh)lykBr z@5>eWKyJt_xg(#-efdHj%UANkA8~&BOst0i#Y1vL-jEZrAZzlTT#~DDT|ScA@`>D& zeSeJUWB(eJb8^|l{sRDW6Z11? zqTeO?KyJ#XCi*>8-1n!9vvO2U$eO$_ADNiW6BE-pkT2zhKV!bn#B{Q9R8GhOoWyZi zk`I*MHqq~)iSs~apZyG&h({Gqm}qxT`Bmk&6z?fMk{AA*{q&g_Z(MOn-jl1UKQ=MF zJ>?G-zf!&DFWApznUkZ?mg~O7SWge-6Zyi#dO0yM9|M2MctqZkHMwS@pG_0(pUM~V zmF$1cc0(rmACtFaP2Phxf18STP4xT9#PVMHD~_Kt5l@)5UnzfIt}DN#_^Es$PfT0B zzh*xpCgy8W@jb<>azj3r&*YJbelGnD`x!9N&xqoiChBu?QLf2Ha!2mVV|o67{q>pX z=ceM4T$HP-?<#&S523Bk?B8PiK75v|@`;J{cWh#PUi>@S3vIkUcCfXe-fBqlY?y`yTMim!Kv|ChuP5B+g2Z~>sXxIBs z96xJfy5ouqitou)`N+h0PfbksK>5re<6aZ>tQ?gSa?Zqb7Uimm->ZKlca(o-qM!5s z3^AQP6XT64zNNS+S4_0ukUMf;9-A2d!oScynKd!qgo)|QDZi|EUG*)wE1%0_^D^f1 zUumC-{)XgD6Z>mP@jba}VtyVeernqKRQ{FXo+I{mS-v61Wy!?!7v-w*8}f;H1Hb<- z58)*C(}C|GkLiz@nBRLQroXEEW5xR>#(yaLJ-RQ-v3VWQoM;@)Gnf5XId$4#3b#mlNcl#k^zc_?4WOW$Mv zSIjJyQ{Ga(sd!ng%PslT#PnatSMt)ov%j2)`MhDGT|se6^<}v(x8$CQIznh9n@&MX=zA&#~z5O@Z;rAz2%-_It6hHm} zVodkYw7=hd#du$y$lm{9J|`#S9<=E^lPmv=c6i=+Y_8(@Tk*;NA;x?TWX}1&$G!3+ z5b>yq^)O*#JuI7;pLOMT6(5>tfAL4@W%-8Ofi@pcKE?hDvSlK_Y+`y3 z<@%2!#(eCVnEsKxc!BX1Ibz~Gd`ofD#CS_4`g^4Oj^YEwFBM<-G}>YMOD3kXA@}5o z?D+}yd)Y+4Ie9}iO^m-PHy;8pCGmNt)mTOdTLGhN{lgIMXXW4$hM89vC z=yzNeJpW5<-z%@k5qVRVV z@5w{uGyQD$9NO`BU}8UdArIw|9QtLpAD2zJDj%6xu3dQ`U&-yyqmJd@lZP_%D;)2N zY1_|4yOQEX6U(zEw^ZLXF}))b<7Ix8T`BeGyUtoWICi=T+V)`ZJmlZ!W(f?!lO!Y$(H{}z#FOOu;uc1Ardqs|zHlMPl{IYx~AIr5X=luTjK(5R4 zgXpIR$ESQ4AnwKX!p|3Ry2hVmdV8dmEZ;8&B>u@CpU=q=IVQ*Dgq)NmS(7cfD3|1l zT$Af^LvG4#xg&Swp4^uQ@=zYj6PdxUl=|hD_!U7P<5f48Uk=Eu%*hcsCh<=d`0*y> zq%6srY{^BrBv<5`T$dYiQ*O&0xhwbNzC4hJ@>rh847Rafeu-U#%P;%ofW)ro>p3|h z$K<%2kdv|`YqBL5<&s>HYjRy~$W6H|cjT_zll$^O9?D~RA~WZ-{1UerTz-kuu8(p0 z@MdLBj>s`NE+^!qEXkT|$wj#&SLB*pmm6|ZZp$6HEBEBSJdlU-Sf0qtc`d)}k-f5C z4#=#`$q_jw$K`~alqFe{Ex9O{vBVG%5AwLcjcbkmk07t9?KJ%!QZO;{a^OT zUfC}PWLDBd19>Qq<%!JTZ|wc@ z%O2S)`{jVl%A6dLV{%+h$Vpj}HQADja!IbpHMuS~rfo zyYTzvmp!sq_R9g8l{q;g$K<%2kdv|`YqBL5<&s>HYjRy~$W6H|cjT_zll$^O9?D~R zA~T=X^2;9CEBobu%*vb`kz;aPPRL1Fk~P_qi*iY>$ThhxH{_<=mOFA+?#X?5AP?oS zJdqjvZi?UjvPbsHemNksGABpmm>icAa#EILO}6BsT#_qtO|Hugxhc2hj@*@da$g?E zLwPJuWCr*Ce)(mO?3Mj;KxSo5j>s`NE+^!qEXkT|$wj#&S7fG8z8y{7iSFJ_K4r## z_sj3ztXAF*qGox%*ofxKm4!xhH_5x#~!FNoS_onOeSFFIQ$G^q!x)U96X9)O4oif{yI?n_qtK z%kRDueaTvWgDnT^#ks*Z-}~xdu~ja#GPOo|aHd|JDptx^(pKiJ8(%{wVa`SGwK9#_ zN;axB??m&}N)yQ;q&}>tqWOinRFrC7U~8*m6}zZ5hu+I*t3tj|Xa|jjsdk`Ia;Gw3 zJCmA;pp{y^7`GYC&fU)Vg=`jEO|HX*O8LX6S!^hbSKw^185QE>Of5pUYB5s_7!6KW z=jV%+c*G!Ds7#lN(;pNu`~SnCRdIBxImQwvz8W@=S-C4#6{FJc~Q3(aCwuYSZ`Jk|bV z%RwV*R-^n3_SiGWKD+F9{~E^io7Epv$pkyIZ0XKyd3F}#r{=h`Z;WxOrg^dLjFnI? zHX7+o-_U%TdeYDQ!YmpuE*hz~sGn%8ubbc;hkI-s9 znk(Yy!+y_sO;@Jkia!bJU)iztK6zlnBRUPA~ zdrbjn<5Nw$GU;_OqYf9!mFDme*Ib-ScE4J=Rx4I!i^;^bvvucfS1)6|xAVy+JXJ|{ z+t-YN9kHw8$I#(FHCLVfAS&dW`KVei#50Cf?>9XckSlbqSSghAmD2^B_0KM(S4Fxf z%ZIqe*v_SV`+^Z~aJ$$<#a1n~HOrM~wq9LODz$rMuuGMB=Ebgj#_Yz)j#-V9>Df%@ z;#ov)23G_>jd~RaMluavDwFFTjwH=(9cQX|#_eMnm;YkD+CK3_rDDD?*p+LPXDdk) z7x~a{s}G8Iu;-zdD!_FVM=Z{SZwG_v%$=xkMjQ7D+I05Q`UL&34fmstGlkz1k|o#a zBb7`aG1?fNtvix9YJC^q%uiRRuT-@{BR*3=aUn5S3Zc6M0+|( zipycQww)>LOi3ahEtT^3QT`S=qZ1~B&Rsw9cXOQY#s{{j*fBbD+*vwvcE{S?jx7c& z)n;+y2i9`UAVa#_GWZl6!cm*vdDi%Vn)zovb^v=_9SPf_qed{3O}i#c8`& znJG4>OG%g0mEx>|T9giO?M+J9NT~pK97)CBoHojLi`5zSl3WA*Z4%D=xCl>|aFRA1@}yGeY@mRuRnZWj0SLz?N9xnm~cDR4eh_i!Dp;t70wtK_bubKLlrqa%xZm(;rO zmzHz_J8DOmbdB8?&xl&d>4T%4^*en#^!s-^3~<74;IS@0hv_H%oX#avJl$BgP~8PA z(y4yCGfA&Fr%o@_Zx>T%33Z!P{887wV@vYw1NZDPf+%SkchQx2-A0dBNBW^4bzk3} z*G80|o?gI_pKrF806R%4+dc(NS1aFKz*Bs@wzV79^B+a|+1Yy0mvp{asNv>J4RIdU zWrg#FBe^rKN5zHdxvpgG%w%vz7U!3%wDPCBjvV$nT)nIHs8C&)!i{!E5eLy( z#dt5n@nUt25@%gUmb)3J($%md8Sjo~c9=>I-iYuxS7|f{c`rEF$m5o@R>%7#EoIjd zCClEiC`nr`c6;~LdPv6Vs$=2&dQx5c>wK|3Tg*gJzL=jXM+;><$l=vYX6!4YUy9yt z)$)}B+v6@CpCh~qYvgB(QER@CDdig_+jukO;#{FU8?8Hc@A~zaq}=Hg*MGYON6;F_ z5m(S;Yj*g>0S=w^=bHcQ?>ACOzXp>vWQBO!rYnBuNGgnQPQ%UK;50|Zq;O@|XFQd( zKjVCez@BiMdGpS^IaO@t@vfCVK1br0SxM^jVAae(TLM7nSd7&#Jk>xOTZP7+k-e0giAOmElq406m74ufmV5e~y)c0nBBFuXd<-Ie!MHcRt-^2b*tsrLXD z;grZyqn5X4c+1(0`bYLuj<3u8Bfd4^>+&ST6(oMVOLD14z9eT4P3@rb&4G1m{n%F? ze$MnIM?6P3==e^-68;kSn)iBxU$GXpdWj<(hC?h7M>q^amWU%71}qV$$mc@G5^;j1 zEK9_Z;pEiq&m7I@qpL~A>CJsR)BQbJyW+aOL2Fk!zIy2BJ@tf#ykCdB$BJ%ug+tL* z9?2ee-NRv!V~%hbTw{)K7!LbfKpf#Pyvh=Bgu`%%CE^H&VaO73M8kk3;uQH@=vX37 zu#{zqIFeqEI1sRXhE8ptcBXs#v@6})XGmv=q0TqBQHcG0h$jP&yY9g-_3a?POl%*l z_+~M6R9loBvlg^p^;wka$A6iaNgc~pPaVq^Cda4`I*-vf6+iR%gVmDpfoq@bz}NSd z@i{N~axzZvNVeAcQW*yWzv}d>0(rZN5)Q*_Tua0e4E$pDV2LTnd755 zOje67I&q@r-`LryR4woXn>6v4?vR&m&-Kvnauwf1UupY7kYh8#VR(%t;s}S~FiXS{ z4#TS~5l1)-hgc$xVCc6vzP~Bo#w+K1qlquxisf1mhMlG9QhBbBRIqH;z!s4>qG7-i zaf*B{bSx1kSjw_Q90@z_9qWVjR*J@%G<-fxvFqaW|lEBm-OD zO(gUI@2O_-H59^*uVezQ1KsS;DvTdA$%DwO)+)3lLGwUVtQ(_#6J| z(g(PZ+a6Kz?`J-?nZ3a2YJk@&m|kb!_T^4jDxO?>LjFb2Yg#2Qin{9Ue0oWe=cQCK zX<6u4XnVnvtb%yfJCmIEI9Jb?agT&0#G^ZZ877ENpFt-6<&ihz_gc~TS8M|B1gU4f zci(=eGlA+E4{e#Z{0k3!@s)Wq`Sg~B{IgmA>N1b_@)3~ zc4RugCTGr{D!RT2MN`}D{5X2Q$3W*n+@ELf+ATU7+U${lIKfhuvqzkw*B;!i^Qcvr z9JPv5N3Akv9JQ*%tKfAlXs)KS~j&ufm_u2#u0*EO+r-VVNa zr1snVb~0(nqc)x~onm-Q#>wvJ z#0i$NED=Yt_!FZ~{1aZvWbh{$$S^O{X%`@8s=^S+(+XKmvC#;_bVfARQFe(PLjs~-vd#QlBlGTVJt`Bro;(;qj2 zHg6VxYk=(ne72u8w2Q~F*rsLweI64uN~XinLnW&m@EhF_0jM7KBJ7 zcqyTkKw9m@^UFo5GnnrjE1cG73lc>Hiw7yTwe2wpwt(1!$Tg8P|MRTN%$~`Fi?!$f z{(dLAShL@~*1Ohvuj{@uCzLEIo%i*~>offSMq3``Z|lDq8RKrq9w(C&M;eBiW*DhI z|Gzt|I&T>N6aI$=|04tc9WpR`esxVz^}Ldt8^#sQo?lg3QB<;M!9%%5U-+Donv$Zb zMRUp)`MoS#P+sE)m|a@6aETveo`96r6qQ##RJN$PtY|^ioT4$gV~mnHbJXv#*58Yb zMb-1l@2l~?n^XQ!(d;EfIbOhg|Mv?XoX_`TyzdntHxS@WvDgSqve+oCESu}iQ2pTS zV86ZjvWphZf3Ui!Tqjy=RL`v(U9_-fiH7t6EH)l0D=n%nn_mV}jLES+jm@<_jUQ)y z${z2RG<)n=>)V`MnRVf!vir(vO6Q4p<<&(Gmo2I)${r`n#B{ZQ55laIKvW_=-&H6ly(!V-!ZWZG9r3(QvqrtnpdPntUX%}RO2iU5n)iJU$u zB>@xX&sHARcc78GUY ze)q$tiNZ@w5BS0XpH~k*rFT! z0qPO!s_l4lv{UxPUv&&1YjkqP-o1~_ysN}x;$}7t(2xcz!z7`l%0%6}!oO~>* z0`(tU^iY{MZ6AP2SdHeE%rAe~m$ENJB`vL50IjU9_TuaVc(Bq7@-ap80hOCm76kbm zAFU`#Rf~$|R6RI*zOO=r2DZ|gFz{tSc5N(VwW}+NK-Gm6u-!#-6{V}o=T>S^j(@V8 zAn7DbB}A*BR?1`G0VJR%ltCD*U`0azx*$0K<(2n&DGG5eTU1h0rCbsc_%d44DQMs1 z)!<~651&eBg)S&rNDAn-mw{z-%B+xiCDrq+&#a}7R+cJRfH_jkr4Z&6^()$%XgMrE zR!+5DWeR|)`UePaPM~<_Xfg$gR}S2hzkGX>dL>m?x(~o2%{onA0R}#=0E^#!1Xw}? z8`i%7=lIJ%q)mA{f5{X~(b8%WU@g;1&i#Z{3A&$9FGMfIC#gBX1=ve9|GFTrp8)3+ z1xlnfqfdan(7ws7q6+j%0IX0gz^d&Q0ag&N0Q;nk0_=NING-to7Q%y|YamH1o=TUL z&abMeT2PKIj^7JV%aROF^r?%Nj2`{)XbZfws`CB^=a$qcGbT`~?xH0X6lHczLMp$d7R4^XJ2*&9AD`MU_{g4+Y;PGr+i02Og{` zgG;U~Q+9rVFP9ap8dNlQQPqPwe@XeG^2)hI)-o3=Sb3%HRcpxHvYMhf)!J~XWF>Rw zE-E9{0?e__L~2(ST`X1Uyb6`7A2c$74_QCS`jn$Rv#PBRfnS{iQuVD(&;&kYx;BBy zsup;MCSH1!Et;zxrK%LV3nlY0EGfTF4O#@J`am^?MJ3<$(NoERW=3_9PnvwRus8#M zpprW;aE{e)1VB~V(kk@nWMul|va7n>+ei#C(ys&)X!m`S_uw6m3qS`g( z^IU(4La{C5t3X{#MQ*5GIFhDq%&ylVxD%O<@_>d12CWiEghK z7N9#8(k!%)W+CO;N*XUfP1r!a{b(iL%R=zVN1TOL;;?_~O=BU>LP>-N%PVUzTOqo1 z^0)S!ewm8+4#Q7xx^ZKJr&I1%CJgY!{ut*=M=gQsArL3JJi0%5ANoH&F_Qf>KVpfV z8zEk5^|>!l z^f7A#n=yMyjqd13Y!b_C|2JYfQBuyDYF^pmlIqg(az#^Bg8-guuuv*$0lu1c=l^tWC!ZtPgGOp}v4 zevDkODUMt|dD_i3(=_y-Y5dIaJ!z<6I2QVTJH=0@5rUM@T)!&6ang+sy!XY9ZJU3; z?dZ36eslbZ_!HlHe#OMK2k%YW@{A|^x8}F&ulVI-*~8juqrXw}zka#suP^^+-3wuV zXs$WY{KgyQ%^yF0%P)`b`jOH@^0IQ}`stfj zZkWDn<;Lm5JkL!#ymHg@t3AfF>=nj-dz>>XG$k)9JR?6VVnjjKr*`M7f3c^J{DBc# zcpS0aFcMi8hL8-ive1l&@Yjw`ABWk0ricSZWN2st!rHceNQivf{S4 z3m*>|UsW}#t?;pso2r<{Soy;AiqwXL$7hX4ZzQDf_#JJ9PlQ~DcTrKFhC5%~XAX$m zoOX5P@rb7qb{UaTPt3ZmYM&WWxG?Pcsx0I$G-IPaHNuc)cx9}4b>!Z}U4;w3c|G#S zM6t{V!p2oq+_tN5#u+rO*_g1{F{WMyeQ|ZEoMw)_LZYWd7F)h zs1~HjzH)e_17&5QtapvjNMq&8(~lchMQ%xat1!zP5Oqb!^;Ik@A%tbURe1fi?-X7! z>-s9@i4VE9isfBvMiy3InNxZEj&}+jC@X%}wN;mig%$JOi$OpnwD&I4PMK&b9iTp93+so4>P2Vhxy>@pYdCBxFE5?jKyLJ~IHqfR7 z*(R1zYJ{Ub5rxAZes0>Z3|r+cq(2Ovtv2kD|7r}4oSR`(RwT9|-+-tDFVETp&yJ6J zTkwo|GA%s&i{U_7ZwsF7VtE7oc~)qKDV{k5&o(3fE|fXnh!i|~$`~0rHEECF*)GG% zvpt3HjoKx6#yo6SCU~~b2uFE!`O1bHFp^$yPjTF~Stj-YQ&)va-pubbp>X%n-%1Fu}7@ zf_mA!;bcZ z3Z6}ZP6g^&ICM|z*%&X+`s!J}g=c;AY`8zqzDhmI52k0=`17nkJ#Jv_7M}Id zvm5<+_EqXxX)rzenm^C_)3ee5JzJ!BR&CLe=ts{UAkQZH^Xzi;jCJtWvrR$u zEZXMdnN`o8GmQu6@3L*?{>*oJXT{k<_D?iy$KoAz?`PYdb7dOwd+9%|x=8;^zeio9 zEvMg;b$Gjw{*L~a>8a~l|7f$Veop&1`Zud@(|%3+H0{rrhWNA}v-&XN(t2g}T~@y( z>nHsc(-0T^l=e|p|3sakU$Xint3R^p$mRGUt8TFWLO(>^APwnMtn6`^+%dc%P53`UiFuaYbl~nML~+o?**kUnpXP zJ&WTE+FA2odT0H@?(FI3(a7D{+q+G}_4r1Y z7m{eW!_rK5;QNU~IVStL7=xd@({!Kyw#|LE)b8%82yuT=9qR5ah}%Cd&gs4?CC@!P zBj4RI(b1Us+wZPzk2T!4j&QoCj?Q!6mYeS$7iS=ii8MBM)(E@%n$aQdYjZ>0JHzYV z54Raj8OGxGe`p#_v7?QyxEHaNOMwj+qL_ z?f@KbT5xPrIBw|&N1np*vj7~gSa3YAaE$8*$7qG)CjmG%;(2NB@^ypf+ueibhaiM{ z>GPDrnb{A{!3t+%0M75@`C|l4qgsV0wjVqZ3eWNYJWKKXz6DQ(!qa0(XO)?=fRjI% zaPrC&pUd&Q13}m4TMExHOFAo_KLO5s-?qHx^IdrU-v}BH`9&GF%7+!t0fpz*06dfN z{Hz7f&G4Lxk12%ChowFtiqcXlQBEMIpt%jrIro#+0`_f&PdT?8wkOaYX}hK4p>a368~?g|-Bl^KxSMS8dxmFBahDqLd+>YjO2nn-@7S^# z@k%4Tbr<5zhz}#)h4`UmzixJz@q3;|d>GF^7tiUfzeC)OP`WI!c_qST#zyj%UHokf zY(0#4myyysxHb{_Qd^hW2eo$E(_L93Zgszmx?D55(7g?Hxi)tyXcNB&zxNg*&g!`X z^oa*;(?Os3Jr#&s5U)l&uJ&N_KK#B5aSNUoi|6##A0s{q+^vYSYLl7^5h@s)$y-+Q zw>hx21@US#rS%VpTg=qfXHlPgBi%)QkQd|wc>tfJ=x@50+S6LY=iA)hLAndkcyR5k z=Am)Z-1|`eRVlZ@eoq(lC2dL9QX^pt=}P*NuB0z%D(QPr(DmtM2SMj_*Uu5}Gt(M= zhjpcqWl5lM5@?(R`y2xrNL|JANi<%+MawP4f2r&`S=dxBTdOinv##SJr6D0iE`6h zpGNFJzMmtejQmbKr@Oil53bEe{cWhf4fRJXWCXv3jMzlI9kn(gBd9y%gfdd#P7^XR z$!)WxK}IG+Mr3^o5oh&$2QreTWF$?=NZOupwL8J%^wzr&gNAz+Bc`1ESUgicb~gV3 z^~pkcg$Nalg^b|0kP(}Zk$r$uM)sjT&!RqoGD7`?Znl=&(_HoE+SWaP?#*>?oqKED z1kmu$=XR|N?|OUPh_2o1NW%-!kF+D*q|Bv*KPGfO9sIGmj{_cuwj&<7{cGzKf7;i*Km5B{Up2 zlR>kAdv~6feL2}b`-NZsY!3R6_n{9tZ&dG0%J&vRclA>aLtyYt{tS9SR&*psTFl=Jp`G$-3&SQ zfEn7o&J63`YKC_oG#%Y%%!uygMtXN)_8M13cB5-`_BvNfc9Uyg_77dhvwzgD4Z2wS ze%ssoG~1R5Kg;&zBW4@l2VAz>j&_Hj-JwC-9SlF)%=WUaR$7v;(V*u}^rJ78rr$K3 z>;A(QvTDCA6h1O;%K=;1D$?!Ow(wP?-9ejU73ueZEn*dEcz@`gb);iM=-zc_K+Bgx z-(B~s&|j_luh4z#-V1wgU7-A3tp1ZA3pYa+ra%_{=%vY}%fiL*|E=^XG$SELQIMl( z$k71EQ4HiL_A8U4i`74nKBFP)V<6`@K*n$R67{K^ zZC@;&sXHS_6$slfYV0IoAFi7)+3gZ(3qXrWpv7c&h__A`)+gO=9bZoUYEi~Agrx}m z)vE^Ysu30;{4M%TxuuTNPOdQ`k5SiYFAK~l&&x(sH|D532aIUM13agU0f=KfNoEY< zSkE{!_Ct(0P8_m7_hG(a|D@1_O*3KBOxQHD$;G9T7-LT&ut}*PZUPci13Nh`~Da5o_Nv2)ct8s{x&F|NCQwA>9 zzQ2e4w(9f{_=D|`6|3C$CtFkhdTBDHWt(v%d_^?mC`C7xUdjjpfwd@O(pO5k>%d7)snKqWPOgl?i zrmdwcYkT_{d`*9KinFDE7%6N7?ZagEXZF#aINS2I`9_?F?aWihtn>uDUR=6f2Hse;fN)6}QOwc96LYMoZ9n&-Be>82^Gwst05ErNYr1DXOjR?kk zW7@^&_xH#@8uefu?nEr>@!Yh9SN^235#gr@ah7@oE5E<|Y$tKBof6M;qP_j44_02F z{CpMVUx?mc1^)ip_f^m%(=Zw`(XX>%{mU@wx(vhCkZzdAGV1DFo%JhRe{UG^Ur0uc zW!U?2e$oNfaf4xOHSugGL{Sk^V8ofvmGF(%A&SC|P~zHxV+do}vY*E{pwE$A=bRh$oBo7@^T+JLVe*m}+A z0(YD(rS;C+3)};8P2`(|@yaCTZH;x>RNl!d?_`me`IzSfY+$t+daMaHc^ho<2e8R! zVUtsAk=+w*>D?6=v#iFLr3GV_eHgPujkddwXFu&4kQ?HT%X!8X>kRE@{`|j*RE5d+r9-zc;3KK1Ox?_*f6S%v%^ zz{&aT!+3ri&%eYxLvMY^WzFYato?`VVeZ~~bN|P7yJs?N$}O-dx5B2dU&neaM7`SE zjK&`zCNJ;6JT`3w<^K-Y9rSy)1dc7^Y;mn!7t(cmdUrK+y$QO$4Z418jMM!A^!>zO zXV+QC(_g-p=T3n<9WTg-ZL-6@gt+f24s~~;9%GfQn+ln`4e~Yv@`n0f7EP=+_G0w; z81xBjw^bH6ejs10^|9LFi_N!J*Ty$DA#6kV0O2e`$|LcZ^Gs-dxORVYGs5c#I}kb$ z?2qhkZn6#9vduQQ_4ms{nm@3mwVp?O)@HOCwIR(ZcC$4TahKihDnJaI;#nSMoM>J4 zCh{@Qo6Xxqo;Q(~dEP``=6Mr&?X3lf$J^6ehuP9ycZ4{*)}gG2QKzlQ+l=@i^1hDv z4D#+kJP_q|AkIZzJL>&o%y&OO#@SUZ^0BVWw_lXWHnA-%m+fJ>Y!l06yI3xL#HF-v zyr^qPb2jSvrQ7HD2X9~WKY07%{=wUq_>bGZ=c8_RQ+H`!Xj^DkXj5oUXiLW9-NUxf zW6id(?$>SM-8*cK?hac-x807uBK${1j?1+=r`gq#^Q>!MPMzy`&ZDllG4*_9fYmWFM0KN7dJJ+5XzQtrKg|**0g_y_lN`^kbLe zSJ%}>HE%^Yh;RmB;3HAZkJs*PegR=O!cl}KTiBM!NA|)8gtxv>8x8yKXx)wYtSzGT zDB^SWNLS<|(R{z-@mGWC7*@hAhA(|@^`eg*a`*?;5y zi%Tu%a`EHxKY_cyac1Bclj9eTT{wo(-ZAv{6)uNm!cE>)!}0LsmDi`qf@$VjHzGN zF=v0{r80~o9!GcqVK>52gh-4jIEG2UzO8k(&@E*cr)-6teH`&Y;fpwqp)cY%hQ1(P z`J(vdYLTAf7pCXB**Nd_o{|#lK zk1fiI{%RYM7puv zp(%!FH~Z_P6VA4=-+PSnS?K$AM~tv>PP&_OTj&FO=UgENm~&0VoNKC@b4^uquBmFy zHC4^IrUspJ{TTezbAAWWhkg|Ee=9I|W?)a~e$}UrLK_C4{+ug|MZJT~m!a?2%DyA} zA?!c0FTy?~=Tq5_q&%W8>C!TJsrK|@^cC}eZF2sPv?iTN+ic7Dq0EfmLYkA_LdGDE zq;a(wkGcFr%;hIxEKV2{dK>`_Uv#ks8Wf1D@e93kfiIX6gI9X)4R6Z3wT(k{&XiMdVs+<(Y+!N31QwhMiU zf5>*B-|~;xt}oRl%~|DnZ%lvdPh3a9{vX(S|NTF4w#aVGJAQb=o{f1g?g5JTT&gd%j!X3K zFH`@MU-UlB^~Kq!f2k?<4q*>b@V!H&*r&t&np{)6)Hda#O&_8R_RUD65>-Zj`-U>V zL>Z*ph4v3!DouNq_FcQ@{@`1&&M5Xo*G4q6Us{8h`yGCW_}>wx*S^zSg;0+*r8S6O zMrg9dU|lS>^}S_wjML&;KSO-h9`A~;wKv}iAINp0|GlgY>6oSs{*!6ikT$+GzP1fx zI?hMOY?%)HTal&;@j;|ngZK>6yo~s)@NZ1R@|flwfk)SaxL6nB3R)kVst=9L|; zZ>YX81Dn^L!lbQ((FMmB~Adwg)+{)*t>s3P1N9kDgS3^As^?b1d2% z2inB99u3mwiDv(8?yvm%Ws%K#JVU!fn?rk3ggIZ@8kR|0!*XeBST=19%fBCWYQX!K z@Q!${HRE0X2sqddtxF?@Io;F7IsLL_Ta93onfE@bHQI7)d>wxn~;GP7WZs6v5j6J}8 z>=N-3C+o&~u}*(WeRRJ-$80~_&i1mcI0L$cYj#;?1j>p;Sy7_x(P;a%X!~@uy~^A6 z)oA)8d%#Oh#zWoI7=Z_v{bn%RLf=c%WV4vBeJtyn~Jl3?Y z0X`zb*_Acc*%g922Zmh{(Hw#~WpO7#lg%C4WOuKG|9n0kaNv}86@=mrf-rH${tM*i z`EhqY_%{L0I%OmNz&6m84BWaN#(L}_(D1u$?&Q1CF5vnzV8q#kSf{nt`3Ha#XPV9% zfHPUcEjafBMx4tL2gA7paN-Qtc>{3b+D%!13(nU8BhLE~2g5lBaN_(N{xw+JKhgjpQG3J&ZUQt{T8!Ltq;z|7_z&cn*e(_b(9FT*Sd}l>q)C0&!ibaJ`G?V7PVx zPF%AP2g5ZT@E;-&SCqo_DxQPkBL9dh4{NGp3(g_lWh7!xOHwQM;EZ_wX7_a{bL306U=LW#o*O6eZj6{c_`Np^ zv7=`?+8U$U%DXbsu_q>GPXg9kd8flzvHqIg`VGXm=f~y1y6r@in}zr+$}L0;nr&Hv z7<9xwnk4MM38a;Q^_0}suwq|dGSIj4`5fAHRm!c{gOlzWe!H^^^9rjf#JX?t-c;PN zKpIK<#BMn(ey6vd#CkC9GH`8O#`+FwIEeUT?2X;L4EuVGDBQt--$p{~8N{T^2Uzdn z*mb3m0$!$qm#Ko6Shr{mgZ~Kh`PO>UzdnPz1K79uv6+H915);kx2J%2_+ls-MSlo_W5PFD`DAN>;AlK*SdkIM|kbq>!4R?-$1nWF0_@uc~8bbA*Ug@ zbBXQby-TajfqPmI5bs6oy%T|SV|z$Pw(q17esGaDNU;iQ=3*DHo`m==yyJ` z*!fD-66Y(t4_EWJ(_Z)fUzV5r^!W0;pPpT6{Pc{v@1Pp@yVRKBdrun)$4+t!!11FK@lr0(SmI-??XV`#qr?}5x;NH%j-fd@>I)D07t@A)j zPw|2OLVO&trUmwzAibo?DD*W4AjBZ>?uFpxW6n~Qe+qrC)tNuQT?;syoB0&#(*jI?TLlFSnpGQ68`9TsDZBGlJ`^b`y}qd;5|c}Z%)E< z)`(ird&&Dt?GdZ;L%!Yc6zCWmR`>q<%8xm52GlT|@Aujref&qTdxKc_X4rDpAA9}x zuno9F2KNIE#{DmYasSJ=Vbcb~F7bY#!Ad^|?|BgS|L_izABj7G2JiV9V(_B%x8gb7 z)rI(3+u&7$YJc5)-k!GC|E{1UbypDYvEf}oyvK%j1*Nn)aQDhRxLXDHPP><)UQxK? zq#E@aAnt(~ya&Jc7Mg=`56rhQA2e9_meq*mT|tBQ+)#S}b2aI$-$c9*@b4n#JuuIR z=XBSrh?k*Wzemh^Wz{CYh9%%W7{q20_Lbr{_9L_)hJLl~L)?OWd;3r?+zEs;w*Gep z>HA=AwGVdHFUEZ^i(%syzqRgbyboqE?t@u^`(T#vJ{Z!le|pOMUtfY&Sd_gvdx7q`PM zZi8La<(#o6?R8`xguOV3dtg4mJutWrCgn%C2j)l6HF*!ryk*W;uB&yv66`*hKS173 zz&@UWef$FUF$MR3q?$3So((tlA2d@|;Y{J)fo9UNZ-soT;j}%`!#iM(;NF*}A-w

((%MWcSs~)natols^#&NbJ^uH1t@*Q_IWZRM(D7)W*o%#YcbMzz51KEEq zKCljP6XH0$%SNCaF`bpRv|o#1ua_7RtEhuFpguUqzxTU_tPk&`IfS~f4mYCQQrI(= zSp^*=9@w&e|F(k|I6K?t{Za+TILPlW32+bmEOR{UH+ke zFaCxrc*Z};XAPgH;B^@iK2Ju*1QYuMwkr5^1uq^U0sp4pFDrOPmIR<5FaGu^ z_<9AeQSdJmynVa`JgHdmM+L9L1#tYEr{K>jxS`T(I(%QjcZ`zhX9@m^gZQHUbz>xa zwW9w6n*L4+{|xQt-}NX*@OPSg#=L>}o2~d_d`mu0Q1BtDT<1L!zFJ1cCyJgLvaL$S8zxo6Q)Fjj8-o4-u7Yd*3RQU86?~3L|DaAkL;}t$IQ2%311%o4~5(^eY=8BQ0c=Io(zRxzJhO4^;xgrvlJY2ld@e`Nr0vU=EVejy@G3f z;Umj+;(|y1>2hztZ^G*oT+89tA+MCHb_Jg#av8?$3T}*$01e07iolaGQo>KE^i+T1 z&$vbcv|c|&JgmBZjtacc;;V$f)^LcXI&r6MT`2ZpDN*+4w%apaBW~T zo%ieXx5@OHK1X$WOl0wIwTz61b$SKY=__>l88Tt9O8>Hg7c01~&mR?hhk`4!ZfsKU zjN2swEmz-D@Hz$8_5T+IH*olye+y+~{E~3UZJmPuJXF3&qF&HWDu1Ete@?+O6hPO< zO?e|81y57>CoA}R1^sHirlCwRY=w-I-N<;QhLq zvc>AFld8dG{9dQ^8|U(CYl<54tMC!^IVCkE_+l`=EN&DPRTI~Z<8E9$ZcI^4N%?#Y zx*Uhtua*mCV7r>#A!O)s)Oe zykr66zBMXYwBVs!gT+*r%`d~p*K>0H9>?aQfbvRwr&@eTwg}IDpKiD096!zw-((XN zZ^s`_nMBPW=dZ8n>FGG9lZ(tC^9ZbG{p}#CR@SCj)e;sRV^-GP*PKl4_o`*SfmpY zO6FTcl#o7};UgDc`)Dn*d+8=01@S3XsI`z{79m@x9)0YQIb`|Xw5rvLTPg{Z!dDu9 zSt=hX*;8k6rf?yXuhA5Ta zC$RXwqeWh`$D;aZP^F(*83BSZCU*>ZLux=4pqTmzFZg6dI6lYn5_qfUmETuG(HX}V z7A+FbePjbr3pRYT(pRn(*_do&*y8K5^;=NU@9k*+qQ>yKPf>sln{(Z0ZOQ+p7;CZy zTz#KE=lv4&rt(KRfpYiy(fBKV5fTo^2k=V1e)qTFo6l?q4b8YT(MRxa@yF%QjX7FBd$9}Y7 zO;H`@kW8Ej8W`&C7;bbKq0W}}aC=KVx`a3I(bfBHgd&7e zgt-V62vrEx2;Vijx^6L=c+XD<^4~PYXgY#B*;7O6W_AOHap4-4bqepAciJ1D-Dzul zCg0Zhbbd%Auoj=4g%Wb!(d9Fm+GH;3p>`}kdJWR)DnQpLn_h*r3pvMfWo7rg}>^THl zUWIfYr#rizywzyxJ!Etp0WW(GgLa{HGkcF2U7y$odU}te%_kAgB7A|+YjjOba^^<; zaq%l7PSmblZF4kaVeaaPJ<2mN)OfjJ18CgaJFDHEg#9r|Xj6h`sIg-$>jQaTqv3}D z9|m|n=EC{z$SuxS)8mZ?8o(>2F+oqlp`=?oq9pIy!$B{!L({6m9@26t{QACyU;FV} z^9tYJ82Aa+Vz=8Ok7by~EXu^uLs(nP3~jvCglvL8M~*wYoR8K`m@)uuFCdLkytsXhwJrVH3g&2wM>T72y?xpCP=4upOZd z;cbMy2=5^rK==*9?-4#iID~K*;TXbkgp&vs-a!u=PtBMNy_^L7EO2+v&4G|4wcArX-^BCppnEb+s?rgrPZ2tT`@xl-FnyAE|LYZD zjei#T6Fuhndgw}$*Uq7>BYy#%qm6-iUekM{(e(lJxc6&DS7aP;L0)<%g5Cv2*ZFkl z&@Dz+H|CVBvO?X@K)O$c+Qy%pVJ@NmQ@-2n$*@5?ZlY|nEzn&~iKzA^TXdRr9VF_C zIqVbn)Z?2qf9;)ho^${nSDU?&c#a^=a>y9dcAyR=_2Dfxv?u-hwsTko>nch&x|T!c ziiRVG%oSaa7&2FcHobAP(Nr8htwqpH(cQQk-}FQ%4v%j6OxPVC-M1mVrg;~BUk<%5 zMC;iohctG8wxsb7>%$sJ-?OAGXdI}AM@Z9V+jxI^CS3wOCGXE-zyG!slAfAwq**Q6 zbP{$#_zBpp9eAd#JPMjmTr%REBh+Y2eoFVxvnI9E!a%=0g&apnd0 z=^x93O_TOE5q3CT$nkcZ!#y=4A9$(rZ7*UvBk`TD8;wT*&-%-%)v$O<~5?=Y|+3Ho{MTf^>kCvn2$|tao{&~e7Tu;47PsOb78fgx1-*xKd)W;WTbQL z{kG@^H$saos-Y60!i?U#<1y#?3fPGCun(m9bI7{^WkN3#pS;4k){S)cBhXKQHz%%1 zGIE&?3np84|Fz)2QPi36iH{lQ-T*w1CbWYWv}0I%pnG8+G4kMtCSw-w-L3wT=x-mX@>75)`8*bd(A0B@O=c|G9qOJ;P#RQrI2 z)sG>c8M(I@ylnw*>lAO9*NHq#zr_~0cN)?c+9O5!+rZxn@bUYKzmcHnmd|SsROE#; zW|>J1(Rg0aGv$EOboTJw4W==kbbA!M=s;g9Bi=ag#P0ze>A9Wo2~j7~a~%%aUbE#0 zctt*uALP@;cv9o#$w25@vS%TlpZx2T1CK5>8aG}cd3|Y~$xyc=i&0 zQ&t}Az4^fUCmv}LyhVHIdu*s5-?cvx(qhN&&IY69NL&8+L-x9xAj9#8V(V@?0(|rp zXms>UK9C6dthX7n0`bm{dE+H#T1F*tmEa!QL+}}$c9cb&QDzIv3x*fE ze_}&V?<}tOU#K53VwrOtMh|Nu&^I)&mtcfBVpRw9!qKz*fX#HikGrGU?@R2hx9#s) z8s_e)Hyh7F&d=QCz<43TJqG9DsY|qFY!myfY}Xk+w^8;JJQ(CQVYzb6p`XS4bW`th zpSRlq$Gg(6pZNSN`r4i77ckGqc;AV4&x;#U$_v?4c z_m3hbF6(>pXZ;HL!vx?>_Bc#um+eurk+@IIxD~c`3T*Ao?z3NWqW@-baI@Vvp#8KFv?a9RHncxe^_87r#x~JMw$McAKhmAd@u$gp z+$XW2&DbA|Cc4cVk;Y1sb7-HY3-gmM8xU^<9&5WvR|B--d(wq?tnWz|1AOH;pbuS8 zMjggUXYQKmF1FR(biUr%RTsA7rgKGixQoN;ZmNsiaZ}II8Sdgp{EpdiQ*jL9D-d6S zI2mzr-A$)v-021#1wDI~{t~p4zA_`k*>VyzOau*wMCY|&Ur@Hac_u#MW(}$ z;}#)nsJD_cJLD|F-BVy|JabnhXcXm67P>{bO7`kil4=*rl`_Y&l0DnJ?UH>Y@?6V} z&=sUP1pexFvHpBdJo0^#ul|4&mXCfn^XT@jhg`|@>~Hwevn;+7@`sqTu$IMllx?Yx zK75o#LBBTA-G`6qNo!3%!$<(Vrb6!uL9<&SOLj>!$Z^k7J9N`%JPkj<`3vpWt+Hd7 z##ZBFql!MG*k-g8+e`#o3)b|pe>g+^2`qUdiuZTJ=lQB7-(c$s&AozqHW$#D10T zS87;EIDNpS(R&B_Z-U+_ir%mdL;g;5CQUlQyN!_JI?!`A_@?PI&*mH-F+c6jEOYP` zI2Sb1QIeWNo|9ghcA9P%vh%d@nwD039;}_;LOUg&F5MR_%>Mt6FR;qB&{K=9Y=hp? zR$Q*Gd>J0n57DpCFVPp#2WcMze2KknA%1@Q%w6%YsaLqi8P4$!8M!xRz_$Gg>1ad8 z#f-jj1ooM}16};24fk}zR-Qq>J{tYjYoV9aN$TT#%%vT}xuj|3*PhFSj&q)qeJAQ9 z?bT@n#|h`!Bgjji%KioWPqsItzUy?_t~nEot)wS?m9W>yul*2h4{bI5mDT5LQ#O<3 zQ5LO!hd9_LA`ZTj{ye~!0iI7^hFIg3d`$98oGSZZeD>LLna=7r*w>(~ls4Vx_XsCm z-M$xx*SbB|KjMDr#^vrK!^7O4Tp#ZK^hSrfJ<8bH{zP62_EPhXC859N9=p5Zry*|Y z@slz3a|^EHoCy5PK=dKPj27zkY}gU4+v#!m#tFvNpy^aBK_~7`b_#pUersl(vn3;K z{dCi5@EZ*=5fkh&krT|As0pDl(G$XB226;ExfS*xaza!LzK=dKYQg}-(IcZL#3CLr z^4bZ`@mXf%$dS2>qefmcmT~mRQKK2-{V4T*gnBKk-HNbdGwK9x-@PF?cp*Q0|RWQb&(-B>8xj5%m^M<#1Z9IV0p8Ea z6THVc7Qv&D^Y{$en4dTPdyu733-Jt|L9RR_Yx2gIBfe&_c;^|lEN?vFgnbWz_C)j5 zh&R3zUzdV^*fZ9+2R7>%be=Y66ztV)uvdk^Uj%y<4SRJ2_G-SeSDfn^fiWKY9JF(^ zZ?tLbd)#J5iS+^6H`=aSb7_k{KujDQudqy!4tRzARQUPM&u+o4iT*3vz_GvX zuQRWo&BJ?ZUfO8Br`@E@(`B*`t!<%flMg4;b1bIYREPBu+B~gSoloVr(5|&VQP46w z2K~`6Igf1BHIz$zo!Otx5tsCXKAogK=KZyIpcDB%$2>pv@`7_@ZQ=XJqkn_>dd!J& ztdT0l8YeMFM!H(Z?HuE;A8Ln@j3gd?O6L_`J^%LSQLHpLw5MB!N57tk9X~*Hi54L@5P!~z?{KO zT^`bPAXw|uiD%YR*F(y$eCAve(|YA=s9luPDeA%TRKVQCCfW9lf<_!i`rfzWT?axZ zaA=(EhamTaA!wKwmjN#16mg%n4pn^w=EHky8A1m%Ef9AiZQ%Q7+f;tkgZa5WX-y+! zy3{81MDWi?>-B(dK+t$e7cWfV=?}IM`B+wmC7q}*o~6#Ffv^6uAbI1TCm2lfFBSQ* zUaI&d=m>m*jsfi;e*$?LETMxGXA=Ovp`~mxAov5R>c@mZ^ zVC32Bw9UXv{&Wf+$+fFf2}V~F%3%LMk0AwZql_-nmNbyIPvZVLp0&OVt~VQhhP;w~ zgHZ?0xpHn`kk>A^1LlV}T;gp%#Pva@mv~R&nRv&;j&kjubr{s9^@KV+$isDeX_MsK zs+6xmO1|W}J=e3fPq5N}a9sxJ%)F_CZeuFNHt!<>7nMk?%VYOa1b_uK{le z*D|ZyBxtYTR+yf@VqcDPaX$H1ejj-{Ho;~gCOx$r_}WDoppN?LAY=)7q`hMueKN}W z6CdkO9ORcZuV^1&qJ4-pZ8U$a`DGjZc_Z>G{G#3gvdOx!jnaltFMM?)T+kf(HH~x` z^p6@Q>zJzQNE=0a>uW##Ez`3?0VA@p2ma@c)GI@Rja=hVSPbtn~eZgf5;A;`_yXK70n(vI2eoYoG<& zxfuE`c!6}ZrKFeDw=m5{uO9e(uI87RTTyeQOpC#_pj&$>eHqJUf6wAm0jEEgbGFh? zOL;P-Jc)Nc{}s&N3fLjatn`&yW|y{UxucJy-1_@-!PlWOji`gluiL`+UY*Cg4y2X5 zx6~grA}=+ZWosX#eIa4~a>(?)HhJX`__goz!YuwU7);8m)=5i02l=EI-SxzKOn*V=RgHG@glzGTEy1uLCgpOzDq(GAZO5aLIqZmt|_XX5U@zx$yB-id9^>H?b7~8(o_1L4$w{J zWg8@&M45nhBENf>GCbxVyy%VZ!9@>sN& zbrU|qM?Zi4Cr^C!^XfJ7X&KXHPzE$i@CeVM3?Uo-wpq{rXniMtd^$znB=v{-=c8$= zSN{&xJKa+MB<(M@XGZv@0^gd~**m$W90i{g?biJ}@`JqPSepGh_V3uor3|rtq|3j9 z_Cn^{q|Wi3?&Au++7(~%-ukYc=>?2F#fOh@AqV}W--x>C^gbM#A-{&LN1hD` z)_U_<)LZbvSLaUT)4b66gTbDLer!Ns|CxP%omTRBpyIRKsMW9Gy9)7orNA+^Uv;kN8=(6v_`o~Cvzb^w2@^h$@wT4#H>v!ydOuceOjdExmjD=?o|hxxn&8}>w_KAfk69c#pXtS0N4B>M-H z>k+17B-bS=V|?#OHN^9&8EU<|P45x-`|L%zeWd?9ALle_pU5ZnU36c>%7_22_M&hu zR_i+LD&>sz%!jOQ!!v1kx$BQsoLs9XUX63B!ue&^>WPOs#5x78Rf@F}wI?Q+tZ6yx zK;NO1zhX5!9E+e6%`Z-(3iFw#x_`NH+#+r`3sOg@po`M6PVxRCQ z(2rl;KQ9;i3?mm{pYC=u;@GtEYjQsw`rJK^tDbZn!+k{Cv0t$Rd#Gg}#J3N^8Deae z{z%qg3+O!r#e|awUwd7v&Pm5nEziN*QeS*aA!RBRkEk6J|xQhE$ zksr9F-JB9SWseQ}P2Y3kPCv-m!DM5<f*tkW!B|M$Xo>KGD6kmN!nl3#S!mZyS~7-pY=GJFl8_6G(yxRV(&|+%SOCo z*~Gmb`)}#9ege8|yTaK2Tlf#@!_qws_?8lQh&`B6AI=rw9LHSlTYF3NgD$u>6OMBj z_9*OOmimUfr9D4yv*8R+-OR#y^K!WliL_3~dfiB@;~m9*-N=e-#NLGbx~BJEMcN_8 z`p?G}7>z^fevN)yBKqq)-rxA->CeXvmHm~0u&0mDL3dPAmJANuI59$GRz}Z-72}{SNm6q90~7a@~&p<3{_S2I1#z!@y(RKlSZPYu^bt zY%tG8>G|{au!5F*AooS~VJF(}S#eY65bO)S7xC;BHJ~Q-?RLF*Yf)v%kN$I z{bK#Bb8gU#d+N`|U_BjY;>MY{!zkHk?1oIHLMFd}Olq0?-u(|lHkT;b{Jo27@^-T91hYapUKH_-?IB1ild4;x0+M@NTK1dyYfjT(s&hd{bJ_XD7V32(OihS7cu!j9X z$b&eK(*)VmV|~gc<**ukuWgV^YoAm0!F~H>WPc|?jinM)AKmwUyFKaLi{R<@`lNH) z?aAl1*C(Ir4aa#Ad(;K@T=Ux)=iv)_K#wzb+2C7wujkd6SK_z^`-s%q&T;ggj~urB zl(zN7AOHCC7a!T(?C8lqkR0J?c+r-;SKHc$u&3{o}YpIXK8?Ym+QIzQXc5 z*77^r@;d^*y>=Hee#v$ha<1hiP~N*hk6?Cp$~o9w$lO7T-Mtoa0Gfgi1@NV?xtK@q zS^B21xdrI655pRH;MrB|De6kcw*%8t5YiAb5O9xl`Ur$k2%{0kBIF`WKyV^VGP-2CR9;3}J@W{1RS(o;yKDrooxz9kp z=Nz8GgTCW=>~q#MHVSMC58LhECPU3-NSbgxO5!+$^Mu~~ZECJdtv`{Mx-ISCJ!vB6 zNqqAhXAj#jcVIN>HPSB*g=76$+RhRn`T^ko4T={@82fhTKpx^Pt5IKCe0xym)#~M$CpLB zL*atw%ySZa)_o=2Puj3E4Dtwlv*@?RzX9jGg}kv(Z_#b<`+TXh?GrJdbWLA*-LOL1 z&UT!=>Kq>A{Z6T)?ci1C&>-(^>OI%Aa94s=c4?b8;C#8PAM_I68twBQeoelIP7Vz6 z9{oxA9{LzWXMOqzI}@O7L)5#<;5f z$_tKfG2e^1V|gy`B>JmIFrGaM`9F;F_aCddERJ(CF|O^zxqN)98h0W@;C=*$XKNns zs9?W`{kn9|Zj2*&#_c3*KIf4+?!lQ!;Fo8SdDgQ({CPp}a}J^zWvr0%1EQRNMHzwT zG4;3&Vbf;!uz3(oy-d7;cKp6}m4OkCFY4$yBs`eEAUV6C~!X5zaCXpeRM>-^l?G5_s5uh(nU zt7fi`Bzn*BW`I{*@8P_PUQ1hV@LWCT_YysiQ^xSS4rkQ4hF#1v>do?ux;~$Np|k0A zgK)lV5YDP!iTFyym|HF$g7|90S0f&YcqHQM5MRf$?6WXecY(9)s4v%K49i(|uF3E` zdq&74oNc#bjb<{QL-0FPo^i)HS<)z&E}gQTaj)lonP_(p#-OKW4Cs5t9sDBg>9eG~ z$~{lQKH#0;E8;-=z;d}?fPIP%#CoojvP9b?=U-@Ze13-MX{Ysk7kGfVOX!kn3sewi zwr>NUr@4FU^?7ZJ{VYnryd3yEBgvf%n#ue)=dSiE&?abI)bpa0SK0%%?JUan^T&Ah z%B_%VpYJE0_4Rt+hs;MD{|*@Gj=l!`0M7Q{ne!;Re{dFX!sH$sA6)CV^?W?ja6Q8c z^DkHSAFR5_I=$>r;bUxM||G-H^E2CnR%q|08H~ko|*p!XbgK_r0jit zU%B<2YsQ`r#k=+WoDna!*>P?jzQ`6T&dzJuq)(Q84ccURCxfuT1wKEm_l;22u$Q=z zZ8-?~N?R+}w=#F|&H;?C(OylbU~Bn%ac2q@&O>WcC-?k{&wK;Jzsel}P2Wo{69D0#v5X<3{}TB4BG%Q($3Ple_s(oXzvXYGvFtbb^fwUa-(ei`p2=yPTl>1=AB<@$m0%&w4eluuuK4zaoqN{(^x ztkY*C|9#HvCc>xDj>|o&^r8Oi9G$2GeW-7LpPZMc+)*|Ohdc`!==m+3_DH(Xgzta& z&gEKkkou?3=zeUUB+lq|q~q%Z(T`8)v`=m+xx&`c5qopX>=oE!^R*o}mHYsH5&c8m zN9FwlodXOxSAsM4i8y1=vw9q>uph;KjP~n#Ji~Vy#ybs;Snf3Vzx8~4`=8{!2g@(x z&V&B;Xe}?qUajc}GZDUta1X-0Jjanf64yv$h+elAGLx90?ntnXSvX#??%AUa=vms& zo~^d9{nk4Vc0dm1U5z^rt_r;Kpbd8(yfI-2?mHN&?mie6_tu2Gv`y28#JvgF+Y{<= z55lmxcL3V}*scl1c$U9+i+B9ZI}=QG*F|Pr;rYwG?*e!ATyMP}A>*IS>9~I(CUZ^U zc@f7=6>%`UygLDR8}z*|;p2S&`x1`u8TTc8nlJB5_zchbzJycx^1g&~;+<#I`TTzG zOUM}fNes-sO<3?s9-n;5vRVzaaL?!zZv$uE$lnf1_=@Gq$f!=+7Ut z50Gikf*z;Qf7N3w&Q~%I?Ko|;EW>waOh&ZIr~1NrkCWHFB1gmrXr4$Xf)t$mYPbHMw+vvMqNr!EiaIuNY&>BO@>Ge)@72Yn_~&h>d^ zaj05P5cLQ$Z#Pu7y;IQ0H=ihQ;#~(qCvbSn*@V7`fcfsDV0+sE7yT{7fpdrLL)9D$ z^WnX-J0izQElRf;ajczT}PMmp@GMkLS02XEOyIQU74=Ab$dR-U*%t!dO3^iS18T zNe{M5&f&^E2(q2}ysMlu>Me-9;9AWk-91qd6a4N8=u5wMPeAU4-oVbwH7eiPdAZNn za`yyn{U-L&xo1Y6k0&q1-4iH-{dGMTA!v*B1A%)J?E!7K#C;CW%tzV{w%Z$jhP;w~ zJe$nD#++lbp1sFC3~Ihn;Kg1gfp;j@K1F(o_avT)7weY3yC)#ag1>n8mE1j{%Fz3& zQkAaAIsP&m zI}pn?N?#tKUuYBS)`3|1SKs>@@J7Iqm;BXtAG9N_hFf8JZjxhZp7mwfY&&I(^%40X zL!HR4*R1{9rO&7P>LBf%S}PHC^vNjmb^ssiPn?w5K$;OI+J{)v#=6Gq%`e(WU*s!W z&`05CxuMdjCJe_xs&F0bT6>?g^e%>3jFY7qFdd=VIu)lr`>A;(DC_`DUis z=+%S1zF*9DsyRib#pH>g8~r=|CgsfP&j_bKmuo4OwKv#oVHdN%B{aY7knM6d@;)b4r|@`ewl8oD3|i(?`yTc(Qu(dpqo77?YG6Q@wx~rhm-q=v_HZeINre@Aus!4#K-n_fNs8f64c!jEE90O-^VMLfC-x+>f^H+ z)CZ<#U6_Y*XRQa{Z&ft)>9c=b{cxa;(%1UhB6LobA?g-jCxqT0pQs;bZygheHsf6< z@@pCERAo>GG)$C%XQ|h+zh-TRo{zQOJwe>WCHuD*zk5Qam9+1*U)(qK)(2mU?sNA< zy(!KD2fcd&v=_Prd#!n|$1Bp_SodN0?s#ZtdIZ^Ll64m80TXl<@A{_anQPs*@!=rt zB@QnP`87<;3m~7COO~?%&!XN!PkrTZzlY|9&L0f+H1uNw!ry%N1n5UP(D%yzk8B6! zg>9w0@SU`)zWs@vcIuW7PCYs`qrbK8zIRVt@XU-oVt*3)C4P5Ls4+qp+RXkZ`&oM2 zpwGpSp0ov|H|s0r)3}BJo1pcab2fs%$WOSI6{#Q6=4?b7>4)SxMz>w=pOI;#Eg)?; zKGAbVes@oRo}`;8=-SWS6Dm!Iu&4dpJ%M^i`v1S|y?cCB#kn`W_Ff^`J69lA0-6M{ z2E5c(1)@pWB!b+ON>RW|3Beu%c&YV@XcH0-0-@RPN*6{Yg2A}bLswlzcXw0nzgeNqP6Yk{ruiP=Cfwanl`gLx3538O?4>o}%vw>^Z$opA%8jJ0K72<9ou??6~6g*=WD@D$ZCx zhjEeoNa9cYm`ELCcET}vagT1tCC{U(agqNiJ1#kn%8qN}#r@fF$$kidQe&-&c z+@Gi1iM>PY7bddfir*7?3OYa9_np@6!oqlWCi0!J4*UK)cn&Rr?~LxOD&apPlyVh( zX+S@jH5Knkh{N^~YjDb8+`r#}ai_kMG)wKfwb3@LkunJM&UpR>_NuZixq+KcIDI1U zKjKY){x>A9;_RSx2N&&J`fH!03+zkjuVL=rseQlD+Bf!7XrHv*J&WIm^1=IkxDop( ze=ENa@VDad`|xw%?q#S?jklBq`}(4|$o=X0edupbv91Pti~oeM4B<|MuOZxz@DRe+ z5gHIyBdkMsJhA@>)BP#TOo{abD zcuzsx6AZ!@WFqLg}9y{m!G5t$~%&}-=U;h$U0+w!k zW8EwpG)?%I2%^v8{Yz}1e~HFY@YKY6H3P~z+3+vXcwXlR*}mBQCiJ7QesMAG8SLN3 z#JZ)@#{~3?&GZvdu%x(|ej@U!;I~2enaGRznaCX@?W|~94g9eDOi*@{>o@6VBDY^Z z6Cu=LR2K_8A#dV4>Uv$K6$M87PKy06+KaM$o>jB|k-9{0C)e5oZB#W)PJs?Tlo6wxwPZ(_!{Q&-*4fL zU6%PBBb%5m`Lcws z-aRToT4A5G0^Bva5ohTZpNh^qh_(nHI~dO{w1N0^6loi4ikpw)9sBQP^vweM#Aff1 z8NVFu^6dRF;A%?29myE~D**%j(Wj$*IKyMn)$Bk7Wt5F6ZsxfOH9wxw;(jgu11-J{ z@x$1YJp~+FgK|%z9+tg4*XXUzH0F)Nw`JHj5xru5AmM*6Xux!rwCh70uw=Eu5;ktMq0xQtIZv0EQ zEAg+?trZ2@F}F%l|3TC#@CVrqc_7VbM8X7u|0jC%l4_Bzyg z5N%aKxj2e`I`Fpl9y80=j6lFxS#zshAqS>G?n3K``v61LV1g15f zH{iM`q0f*M((iO}ZiZ_G@^#@83NZX5{Dy2rz4yoY4f(+-n?`KY;%!>|ds@5&@fbh- zn0`aBmcW|JBYA3^ubh<}7kn4<9(i=W`X=ON`VZNs`44#oXQhNMmqzMr6Z;U^23vP(vf{f5$CsBhpqeSML{{jcXS##+8ekY`Z7NIJ4(cuE|l&Y~J)0>kGWl8593ZpOQ^ zOnW^znMdl1 zT(+sid_mRLhenbbaW$N$5Psm-yySk$F_T+sgm^*_{u#-HgdKz&@3Pr*~}5je{f zb)sD6=|)?m9@{>r$M2Pp&*i$Fx=-r%?C&AS*j+--=3b(9wg+kaM}F(?AL@=j=0AW{ z{iFIK)(^2Z_U(s|)kd~Y>NvGFG;*JW;~EDK(nTBapDSIM4e!SrGwu_{!EQ2*=lJ8t%sTrozV-J{TpuB?9A}o-&p&Z}^iZsA3J&gx z+3g#NdBrxaM0qTG@c{j_I9AqR`bqlSR{P;fC)1}NEPU_6vrn6lCe!2kVKD#1^#f^y z>^r&s)cZh=v9*UJ;Bev+zZ3uXe>c8U#_#jL)qi3RB2WL{iTlp~S8l z>+ZJdw)ej5@e|)Iyh!w&_(=NtGsqv3&SnSh#(m5xekbG5!6|*Z)Ink`Q-w3O@M#-L zITwLvev6Q26?{ro1-nx4Oj}h!{oH{pJhPcTHQ1Gp=SZec3mz!Ka}3k34tAZ7=LJlk z9z5__JTF~U(KT^Z1?j9@gVE0*{ry?{WEi_H(8sF*8|kEim9|Q69FJ}y9njM{krop4 z6!+qQhsb!Ag-=C+*J9t1Ch(#t@H3`a^?X3tAg;_;@IBg*J)lgcpF=+ae?lMU9QsMz z`KiW+=iEPsb5Xo|`Uw1Rpj>&*z0rBzv%m6Jq3`0)(PJ;7xeIkPaF4~pfdZbriaV1j z^qJauZ0c);E)zJ+wb6UHr<$@Q<1BLv`igsG^j(Z{#kg^AOzjud!`9bcyQ+ODmIXaJ zWnl0sp4*oG*g7m9n9v#PFf?X#iZketEqd@D;mN@{;`lS@Zp+uHVd<*emad9=D&iLH zXvN+v@QUzP!tPk&oaC*~vTdTBSfAjz?31*OJQ@EkXWO9fif`Ll?O+;*cd|dPs85n- zU=NTE76u~N=V!md{xrfpbk)Bvq2I3r9WKY5m-`0Xo2P9D{0|^s7&dHd<3!N$37{MD zJhq~F@EL%9=J%c@9Mil&F8Y-+7U#d{8<9@=hO&zsKbd!AAP;^32%DsT*4PTY1{*mSVI;ezV(g0_CxPCBMkk>`QGJ#W!nDD<1xO=!Lpa2FFE> zZ9V)p$-QgxBsr$_4bqlH#{o5-+%r-6cn3jOij==4Pm}+D8~ZX{=wn+3)^SDprx17| z<|XX`Y+NI3>MXUYN9~X4bwnG74@jHOI`68yofC{?L0fpIABC z&=}$Yaj_tffwU`tqn86mLSu-dQocQfcrw0mjj{#*k~dM#;o2m|(~w3QM0`?dTdllI zS7|HQr>Ik|F{G>}`%2vtWy_J$MoHOyO5VAGeGho#|F+!3cj?Pd|6k@~x~iXdI8pvk zea^a95O2_aecjU^Om;nX-46iAzKwF_xKehM@{cS-o|{+eDQB8pMi2Vr9^fTukmUW8 zljQnJ{?oUAm5iX*7p)q2|M{$VW0pw%cpxA87B~E%y8f8jD?e+GGjP% z8u4fGjkpn7LY^sYu1+BCzz>Z3ZiGGPD>W7&jOA{GJ!rQ|TPemO7h|F9$nr~AjelvYvDGRglrQOj=m2bT1w11I5yV#mMy7Q!9qm!|U5;_9L{Rb})4MN_ zWlX^Qs63tvT!$8scGtk4)l2Lp)p--)o46$>NtS8a&c=RQBt4HCQB%lj)?hgoQL(*@)@k4QE&4a;5QUwW{XPMP|B#)9b$N4P;zjU%p&LQWw>PqP+RnBqyn;26;r^ufr z>~btgyRjodN(?EmZ zdk=cJSemmRNgr+4Wq(-w6)^Pq27H(O;aoF`{~(9TZ=~IEWnw<`+mCzHH}ZM=zo=RA zSMnQ+Zj33wc_(*(_C@bw&h?DR6274*hy50CMKDk0_^|$h0R6_EMjq0NlbHLeFEPl0CC1OKH=CDVD&D9dVxf2tmoN7`fv z`A>e|L%&ohX0RQ8sk*b05SKFdeS$vagFX>1n}3l$(cVbGs{F!|K6RnpN-v<~)6f{` zIIMP@K>WL;Pk44Q9et?!f%gF&$2-qiIcSDOYfhrtB#CpPVLa183x30SD`fE80Oju#q;VbnfZ+R5rsVpW z@;2uR|Ci@AsN0iiJYxl!1anBq&@#OcWl#=QG(+N{{3hndwxM!-P^MZRoF$UXEz%~?T2&iw@>&ejY$6n)ww&5-o1l2Z2odPDx^R~Tg zEPs6YW74hiiMw|Beao}kAmGP;T?jh7&VLA-^B?hjjI~d}f5n`YFrGxZqhIi@`XP4i z)9M#TIik;`ZX~8>MjPchQM(K=W(TsYF~hk@t*!j_oen8uNPg<rOb-ihy^d5Ls4 z4>n4@4E2MFbT2DR$ye$@`{cZFmj4jsa9KaUlb+h&?Y86w=2>ld3iN^b*>{rv+4>WYtRw!Pv`3COXu!@du? z`WMjWtAsoy`}3t7m8+Au$$nNmhxywu4szdy zesknEg~M&=W0l6dN1<0%d5^s zF8>3|N>x7YxbKbm8{0RJcGy14!i$p7S3|&all`rm1hv0IpYFUJ|(XNJ;v&trBGIc@C9@s)0#PbyFZ%$)A)PCQynRrv137ZVyJMo|2 znO>VJ(>l_O9b5<2!Cr4wk};3+y*g6{-w;S!FAsKS`tV+X_bGV) z0^*Z{w+_cWckasI35@^N1|wLV*j&Jlu%fhbQYV0iEKR5kYTIzoH?eA3VqNKq~$jZD8HTcG>3+Uj{E@Ue!LS!*rg* zV88J^A$^I;yw>^-<;0)Kcx8_~1Ekh^@#VF;jmR3%!&dmhDoQhYTY*chz_C`er8N(s z5aC<|z}os5gz*R$BYYkKcNVtd&casQS=d^MFb!cQ!nFu<5#SH275=bV;SZ~|2H~F& zmLc4U@HGV3uD8N=y%o0WtqlmP5!N9*j<5mYTL>)({|8|!!VeGv2tPvj3Bn5qFC+Xr z!XAWQAp8>HR|u~oyn*mG!v7+4BfN)j2;q+ie?~Zta1!A!2yR!TH5nllAroOZLLNdP z!nv+UZL$%mUR@b{u+WIqJkGNuz>C#9OX3RFJkGNuZoE$uXG>}xzgnCvsa`!@oG+<) zddG*u zIKNJiPoIp=d*JOUetw?{`u8B(bRXI%+aSyN1K{~D$WyWm%0PDdSMbj-`uTRAtA6gT ze!dM!s-OE(f8StR{bPJ1zZ82_=qu6;+E^>Uc=e98sob-yPWDA4ZP9F~A)hgg{T=() zu{O2rsv(EP=i3EZeRR%L@Quzi2drb@`bAN#F-1qK0Ri3b1v|M z`aa4PltpR(z&i85_X=Eq6aJ!U4^g-~xp^dXIU}Zcn!B%DRZ$FI>jx&oUZM*5vDe*o zHS8#6F&%anbCCWero--HKGJVuI_xeMA$WwZQ|eNZ-cvIl-Kme=&IA zS)@OQbmO{U*Nd?4Ks&pCinLv;DsdY(G z@G320>GeYqkVbw; z-r%uh*AZe5O6^<8y)*KP2<~kqe9YVKkX!9MA#0yQNRHZz0Osn^1HW)|M(1Vd><@%}};4?}!-aIqWs zV`dBc4W*Y+V=Bj9U-Kyap7c-S%%`uZRX#ap&U~`(AO|$N1wQC&FZthb=rz?p3V$Um z`npQyjesB6c_mKvhqEW3XSMT6*koP>Q))Bs;gdL=-F&_nYmRSf^9+$ro|D>KBGMUm zHCKuBzHLx&tNQwbKXIQYns15vQo?{WS@X01P&j1&)nHEl_h&gjWPk8|FWz|;iSv(l z-g5pOhkT~;sJ&vf#$-OyCOJ>-y=&+9cph!r=gF~4ZLUP!&!FyO&^a@%>iZ$maGplo zjmtVzI_D~Bf~w~@^x1@kc^tF?JefKGj%OG;?!0x=n!ky&h6>i7z#d-3 zyFp{hWBH`+Y?64larCm-cS&o$rurQF7NgPDJMk|2QTLbF*T#}KD*IW=+3W+={=Vbj z{Gaqs(aWKLCt5Y|c?yUBhs{Pr-9O z_+0G$H{$z**n6k=enss4zr^>+vG>>T?is~1a#hLa^riGkoO-xH#@7M~{R&Jqr4;bNt+=;hpBxkw||Tw4-qgd&d_WZ67E6wgrJSMCrx3j;8K_ zdQPc3kb2KH$U3AEyx)N|q#f%VVGm=KM>?`q>{%PZHnC@I-(kf6)ct_%SkrIS{vple z_jd3ImP=b2xh}W&SHyQ~?Y;%i`0re|^L|6F+gUc(?OaoF?OuhpasB=se$O)^-^Tie z>-bGv=bvjtzJ+xR*YlepD{@WWg7wP(U)S{?$5#Yx(CIIN_UByB)An4g=ci%rZvh?U zSa2McU<{^+w6U?YF<8TvlSY8{Fy9u?80Iyxex1N{&=f~H)~=Tz-6=mQoxCn5sx)1G zQfazutI~AYOQq?utxP*Q=N8Pbn=#LB!hE|C>(zx=uP(sdJ1JsL4tNgS9Ny`IUX(nJ z_+E`WHRuz)QJncDKa%UC6Q;L$?ITAX$xZQ6U57EjmWUMCh3@FBpoXomqAQ2G(-!Tp{GanI)=-2eGL_Q(!E z*5jF{cM;x07z^5WaGT*j1pQtT=+K#!mDsN{&d#^0aymVRZ)dIPnRvoX!9H}d(6Jsz zT@ln1Mm?lO(A#|;Yr35sg0D&6Z6^T>>8If~cF+%1Ep*7Fv)qGQ+WooaBDAHkb_0gKzW^Pw7V^K@_VM2~CK=WE@@&b$%Ej$;MJ4z6>^!=#=fH}K*A zMmPNr&aH<5V?AVG)rKDMnF839HVBz_IAkE&X=XzPqAo87@6_$(;+?v@JjC(nMMK_uLOa zo6+}MpO}Vy2&4I5F7-vw_Ojcs7vV84nOK7V{s1}uJ@nPZV^J^8SIKo=Q2=~0ryAeC zhvy5!j2%xQNEpd~xlfTB_yPKcYfZI3$Mb{d|2DemQS{dot!(VKHs_)IZmuh=I>zsh zZaR)}`3=X0X$Y#^Z=&2V-d)&F&qcer<|LkA?E!g%_A$AEmB~`i6x)v%eJ1aAJAwTS zt`TDV8)XTZf^{ID?i*9cEJzdI@szp(r~gi)L#}!Fuk2_0J9QbhPAO0Nas!UCZs7b* zFYtYFcZRq>GZp*PHQndI7mRmvSK3X%qGIzmsovDhumu=aRASs+?7}^m$?X-zL-54@ zYOxnj?6($Y;E8?M;$e8^;hBpk?$sx zS$q-pjk9hJPVpMSuC!Z%z6=-Q?jZNYi4W7w(uvhI(5XNs9|heG=ZDud^7HU*Gkz)N z2F`ltgfI_lF=u#Y)fi#`rz?YQl*99?#t?TfG^V}6onZzIz>tLTS2#gk+M{nlU-TEI z$vRBb!TQ+O?9YdfL^rW6&Ux%D?u=ID3@8gZXYOR(<56L!dA?DGTW5V=pS=zAOF9r7lg^WlCq_wr-(9c9Wjqu06<+P>$N z^qv3m`xZPUeRqD}YJFFGq~vW%FD~i3)Fn`_NjoODMcU$W@=Jd2)RFX?&84S1(-(D``h`I7~Br@m()-jnfuBi>UG z_XIx_v|Z{3wV5zwz{b6WYf$ z`Dx4MpXd6`B;U?$ZsRiQc|5qI5_hc&zDm3xK1{X7!UNt)nG^PLIqDnfR7G4rz0e!o zR7ZXYJUeaO`%Bqh*9D|OK3BGnwL^@rwZoU;QqVZqFMh2WagWQJy4^4?TLW37)-Wz7 zzVf{uv_QABB#r>*hI?^`+=cjeE#PZQG3KoStz3rC>NW1JcNz0qhZuL4z;5w&)Y$=Ijc zVc)Gm80Q)}e6q{4EQCI+hpbYA!1i5-F`=CDWAKHg=ugIfggE6T4}AKu4b{tf%9&oj zY?^oKTAm#_KHm);zKJ`~GbNulN++VMz{_Y4 z@oIOHv4i_$+(!$gc;P3M>yA{sli#L^JJ4wpApMGFSbjw_Ex)2!mS54Kc%Om%!|*;6 z{}0FeEWBsqeKy{6@O};6bMbyH-t+JdTY{8)ynhkz1$e&>?;{W|3@!$2wI=u}cr$SN zoALIO-DzpT?lkI%y<)$vJ1qn6nXpGl#WM?GD8ev=;Rx9XIS9E3SU08RBNQN@uC&77 zG}J{rEdoCJfS*OcN7sqyynDM-#d?A3v-^OH_KncJ*2 zbDOnhZnM_RZPuE(%~~_JS!?DtYt7tdt(n`bH8a=ee~mo0*e&HTB?oYQeHHYO=>-mvEHbLK5Qcb>8tc#0l$clSIDoA&Y1~%GXuI&=^v^Z z^Y0XRc1Wyui^fy;Q4L#X>ON{RrS78|w$9Xj)WDB^_2~MFj|7hgKeuRAjGs4V;GCtx zd(Jg?;8m=#e5qF7U>ioa1;N!g`Z?Z?qktEJa$zwVbjarfmSz_)VpW^)3EA40*8)ZcucTpbkjrI}hY)hBv z30!j|nos`BH1g&dcz3K3s;=zB*_XR}pi8IEg-)uD;t4#N4ovgJslcp z>Ca%lqq`9nqK46U{=77kjzN_)!yQ+7u1wZYmV)`YN)dzljC;YUva=?#w9sah*z8<9g z75h=zU*!h2n)}P?2Za2KbrY|;t^QK>8hU;F&OYw1KfBn62wW%8<}0(rwlh1u=u6;# zb79kB*_oL(t{}1%>?fIDq*?K! zbFKyq(;(AJoCYrE=yUG){1o7*N8l*d(8ABc68JLaxRbwfj?qR<$I;jvv(gnT>?_i1 z_En`-2FE?VKi@!GM1SHN<#4t~&m-10NGBeudB-!m%&YLqW8?;2aWC@v1zsjoE_dv+sx}iQ4*)YUgc#?{;GDpIMm%8%`JG<{@Hk#p5&Q zm6}t;OZFk(#~AG!*ndJ7AaF;X+a8N_${n(Ar(zymg}E%x<>L8wt?$grpTbT~>a@Z* zw{v{HiFupkUt|>bdW=rf(IcTVJJclLIJ`k zgkprT2&D)YB3y!S8Nwulas(g3RYs%|GPHhnJ`DNgE#PM%>aBAZ_x3_6iqxu<0^_F6_;E za7NJuU8r2IOPhMgRvYhe=O5mEIyz6DbF=S_Ie8oP89x{L4A3`>hqT`~eV2*8N`g*f z2>K}*{RA3^^#RYcE%F(?pkEO;_G*s+-s2emW7zYW06AFc2`F2@7Q6Fa$j{?mk8V1G zJQJeP=SfSC&!2{Jr=t9;V6#|-`eFNF(bl6lAJc;}v!}Q_yBd-@yWM6dacmCu*>DcE z_bBMs3B0dGTaFsWgb?cGzWNc=Lm4p>b@BU}zf9TJnu`3eG1-be2>8|OGF}+%GJ6sMK?)b0DL{K1`3hu<72$q)x&~ z+*b6G`$%H}E6b>XEFkFt=g~JeR=GRNP{w_y(J$}#{4DbX>fa68N|=s8 zekU#F+06*{&5lK)=wEq%`SXoMVU}|m?Us5AoF&IT57W4wIR%?!X`8^kO!^ec7ko(3 zIp=v}N&8M>4RjQ?&SBuC+$)#%oAy7_e}uG=v}7l9WQ?Eq#6D?Z?4584*#-4W{~e=Z zyqGjw$WMSvmp>#eXT4VW$yLE_=tM%RQ-a;o>MKBBa`w3)w>B;cOIbsm_Z0&w#%LZTYnBk=T=nMxjp&0e_u)XkQv-ngi3QAr(PG*kpiKVej1- zG8ymOGcoYaJrn3SGu%NB^rEZIB&JzY&PKBu=`Y&@p5?~5121SwDrid@XiPe2R)(Ni z^w;U6S)?J7W=)KvStm%dFyA&q4?>zXQP8YwP~L2mI}7E{1kIWOnuRq^qbcmwB+beT zWUor<-0k*u!hf8gS$Dv0O42OS$atES7ubh-NR#SO7r*N?t2@;Yw289RK9t9~B4m8z zBb}16tv#Q9T{%SL2{kIb9~F~t`QH|VZhRvR67vIbrd^A*CGnfzB#u+=Bk#6pmGir# z0s40}XQ>ZR<(~kJJq8+EjC~MAU*EB4>jP#MXlt@X8>ufQZROc6S?8;ytxV?h5K99LBWMk;O zj#+*Xe~0mj(N;?rM%wxg_8z3a4ndmF#SeEL|l)uQS3indzs zgQKnF|MuEcjgz9S?a9-EdvK1oJvj?uI^sj|9ELpr=wd))j|m@ySql5;mx`zpZl@^m^Ot=dSqt+Ln#i zmNr$7Y_FIMA0X}S`iknJ_KNmoJfTZy$C_;$^!k^kaBna#!19)%Ji}5SK%JFa`=*nKVhjC^7Cs7{s2ijaEzo!k5-Ct@vKIvGv&<;fl;>#Y) zSe0Rn_`ez}p6Aiwt3`hnnV!S0NOazVk1q=U2XK*Xz7x-*b7lkoW&sap0v~69H%td_ zxElH|$s3}L$-vnh@TVcb*<9qwL*9J+QvjSD;ctMAZz7zH$JfvSSM$mL9spmL$ToB# zpQNRB|FRFdkv<^4T7AgA>_%C7`#qq25??)=jT{SKq5nRD{RAhzruTZQHGI8P!`F!x zzFsNuwR$q1@F7%Pg(v(9RbP!~UIIKuJpzyG75oYC7;?zj@L1s30ZV5GoYd(ezftBD zJa!xOUxFXmbh8crZ9&+IZ|oP&l{Ung_I2pH1&-le;UMRb-ha;TaxYZ>u57#{|CHr( zuCd?g(?ZTSPv7|l9w+7-p1=E}Hs2bYu*A;^wwL(S?|eH8F1bu|!1;DITq}#iwZYD} zFNpcJ5OZe%=Foi1r5iBcuE%_v2U#px$YP!(_%=&&HH|yCa$j-DtKwV&WpF4x|1kYgr~HF}T0ZkK0NslzKpS>sB6+fw*cYfBr}UW-igu)pz~@KUTT z$zx6+)Fx*)(dU=v-G}yhkarU9)-1yNJ=j~^-gry+B=~0pxaG<4H06Hy@V-|;R}Kkz zfIK8e(C7J}&BSHS;Wt2+&mUuKEHiVPZUjE80$uiF-9z7E5=W)JwEBF{=Gn+6*Ygw zj_oMp9(V5Ek*<+Vb>Lx3!qIu#%|&7V=wIXB$dOGRSN2}mC>{2~E(?1*dvj6l^(Ufe z|Dv!LaIYBS-ArDgzyIcRbVnHT>Llo{-6vdYCGL}M?AhIDj%uR6F!ssIOTO;^4RFI_ zJUX|?`O835sWwGhAr8X{GO6`TDCRjhqs$~;U7Rx z%JRdo>)vh_g}FaoXX%ZWu|DXHIQ9$v#j`np?;Q8-p0`?FX&pVMzTEVfFP!_x zh|Sxv&bS@p>TzAZZawZf^_;2O_eb->fHzY2`Z!l^({o0yxPNmz?`p;Ur-yM5=C!WO zrVq`uz#>=r;s5j+&Fjz9JsHULO^jh6q)Fq-dlrSAWxqoB2x0l} zAKbUzmAP*D=UQ8WuB>&-T&aQO@SC^poUcBYZq#oGoKuT?KVNHESF*Q-c{RtxN!nh%=Zy`@8@{}Oh4d)Jn{)sp5Kx6Xrax5F=1q06^nz3YN?J?6MTBiiuH zD5Lp~aNX-W%mv}6U1?1j7<0BS(0Fc`bZq%`8Jo91SMIN|>{YqGHafUw;n~Z=0N2%| zuh6|ki0AvU7r!5S@$m5%*^j;W{n(4&kG=T)*o)sk8UcIp`>_|lAA9lpu@}D|d-40R z7r!5S@%t+guooXNZwSB8I3m0g_)Zw6U+3BU66Wwv8}q`~;|$5T6r(u}{V;P#YSR_K zftjEkOG{pBdAf0a_#oO9Fbl(eGhdAPD{nsNr>^J-aP{eJ5BUA&{P6Sc5ugRZ*iZiaIe2{ zWO%8W+B6slYSb`-?COVdm1?Cw%}KGY)uBXJ#B;?oL}b4!BY3 z@&x>iH-*=^Q`dcW&V^02z>hTG^>pBe2l(M{{BjsLur3i^_#1Byqb`9L+{T(kv^V4nj`-wB#F{az^dC(8oa)=kihq@y0g-wvnC!@dlTx9ef z$CG2*?KS4{EZB755yvwJctjrIOE6}^#v8(F%&6bB$1J;P*EvS-cX_8V`s^@lWjJ;h za{QLwKgokJ^Q>xZ*;QfmuK%~M?(?|P0!@6s#poUPy;|`;4(}KzjOCZZr9(Voy!1J& z#_9r$({hZ_5{%JujL}lm$MIgcByIE4=zG$C&v|=W(lAy97|+pn;O<~+tco#bIX-f% z3IZHAHC7y_m1a&8$4VckuDEf!)f%Ur=yNrG9H%cM{cOA}#^=Fn|6zQ-YsK05Ja9np zG_0E?KTXWjPGQfp51)tp7tiNQ!TZkEH-gV!+?UT!zkZdI&jYqZd_D_x{8fA&a69-u>6rVTE&e`#N{>cg8^Z(hh4Lp8(V~)k=8{+u9 z)Zq#~4;^koJ`X<7AD`a=UQRww9_iL{QuP2Wuk0g($3_u=FUa#|c!7n}` zuW$Mr^ZMsN%LK2-I6HX#H5RXTna!jdym!=q?5}wJO7O7*SV!}lQH8rFG57gRr3o1T zWqukm!2X$#1+GPyi*N(NjR;>xs6qHAgk=bKB76)p2%dMl-;yEL0*{moF%$B`I0VWLGeN^413-=_^Ut(+(h=}X z$`QofXP#am{4a$mA=E#eaIqsQs1bRTq9mg?ODSJ@vp!}g^56T^sKlo1BBOT-NN#zg9 zSdS)L06X_qi05*QZx&-r`S^Lr zk=$3Wwq!}lYLq9ZSYy2fuuz`7%^K@xgq*S<%yH(o#YjIJFNWPfZw=1taBZ1^F`15a zhWGT8eXu3y<=P6iqyfmB^SqGxCtqaru0h_(8Ak66q^LIJg==}oM(&5rokF^}!xVGhe>=}bUSw0n}Krdnly~u$257Q&;-(MB_kI$@w zUN@2jUR7)OA}_4=g%64~X>!vc)JL90|M8cAE?tL^<{H{`$oyR31MsX=(48Xpu*27& zEiV-x73vxIGkiO&j9^MMIWxknq=I0?JWzjW*t}Z-z`m8caC$Fty>P5#-H~l z~{l^)>wj5jC8E_BaN+V2!#Z23aJ!xUHP>VHnp(}0gs$yd!eS3Fc&#%WUL%V$&mLd?oKSB@G z^O4){G3tkVO5Q9y__WL4W0sCTi2XIsBfck3;rlq8=i+(q9`Mt9-D_L2y+-G7;M#W3 zfnN&!lG=YC8Q6GjSrg~~4VIpX{ro)iOx1wlkC;zf2c5)RIgN5**D3ZUPGJA%;27wt zVB5)mKfpaz5v*CbrYmJR@KgEW(^LGi|I+*66L(A^Z}{*6UxadH9$0en}gb?3qJ zeUWu>{Ndm|(;%C@)^ZU3Gv&JTR}Otd0rU|(@9r@@huWZr;ymHm4bR=)&4$YqdxyI) zXTzAU>__&;Yv_+t6V+X?nV<`qf*y`RJ9yv5x#$O+Yv}a?$EXWonTO2Mz>GV*o5x?| z^Iv%R6#vB)mHtD|ruZ+JTIK)XMUTID$W{J7?(+IaXH50~=|58aV{_r#;;}UUXU@6W z-~B|o|I+KG`~R>h!+-h08UFWLGyM}6&-5SJm*p>8I?I3TouU4~vzPi$92n+*=EckW zk;B9NKiYM<|6l)Og1_ytiTzhk|74dD z!I{d)WG_Mn!Z3tfgb@hmAe11ShcFJ|B81N&T#itNP=PQ7VJgB5gliD4L%1GcA;K+2 zq!_wQ=t4J;zm9`0GaLAO8Tsr1$Z!bM3#LOx=UuA21C@GT+*7d;cpCv8{kSz5e%n(K zG7+G=`8562Z*-fT9q{c>zDND~bEu#C_Zry45Ek-4?r|MUp^QnNU{bHnylv3+GcWBy zYk&{@u53Bl8h=;5rSbRWTO0qkye-)bZpHbDsOf<{T>pC2sF?(soC^DEck`*6jL6B` z(xIQufSx)Ndpuc?@rJ;bCkcGWgr3+9A2ssK#Uk*A2GD!>nFx^g53~3KZNSE#nX-?3 zfHdQvnHu8}Gm($!Gr=3kFA7(!YnhHcx1x8+e+@AQh_?sPCJ$&K{_maq&qf$FMf0|& zzTHxXv8ltj)L~ro^DQGDDcr1|arvQp#9p3r=>g3>+gX>l4CDE80DGBPc(@01?R|t0 z_9MB6D%Y>v56KJAxBR<+i@sfYKm%`rEf)7il^rJi0=)8z=%%;NM0cEG8Q|NrMY!j+ z=%$s_^`Z^$V?MKd*3*CaMWXzw1m%ApUVr*7H()gZvwg=*)Xe;Ud>edwJ9N4K2)=zWXx-n8ZwuYX+4*(` zU^pA!7JAnK__pl7e<0t+TyY^tzMY(yZ=*ksXngyqgKuXC_JVJ((fKyY6MXv`@8;4K zzF>)WN^s1u%3xPhQt-SHRlx&K4hfz=<*MMjo0Ef|n=v)`en(31((9%Ld-r;RmoL0J zcx0b9IC1gx;IVg7gJnx+1Wz1D3toBm%wXhjdaxL0%1#~02v$6T^XaF|U~$A3JQK~t zovB&DlC@KUe|cGV`1=b&Fd#G z2G9Qr!cv4g5bj2}4`BtuBM7Sy{uyB{!Z#3_5uQT$4#M{kwjlfqf*&D>@MDDM5q2W{ z8)ONbnH91G#)Y!PW!I!`raTeq;Mp4~OY8wIhdOYtDMB~W{{8PHOZ=_xzS#)-y$;By zN>(|7_6b>q_J4>ED62p|5wZ%NHJAgstP*-`0dQ;~d>i8|;A1xix8f{d8_oiPFF;wy>Z zfEQnay^^$_;69wSkCUUvVGs6A>l}w8UC+Zf&wHr<`47*9sQ;!v?0b@VywD%u{JGGF zyIsE5_57*~{-dYs?eTj5H#LAV2oN-wE~e7u42HO2>V7kbgVj zkK@O)e*fTehoGalVCjY763CH+jdekP)J&LRPYGYbu{t+KA)iK}2Z>@`9fdt8&nO%j zNf}X|UD5uBKR4M%1+NYl{iZN4?KKHE>u9HJjQZH7qj*v;)#}bZ91?2*_-|`$FF%+? zzlgZgs-eDoDb`Pf2QqWB4%1Qiq>yJPButc-MVVSU%7*RBzx!#cML!kP^AZ+i`@Y!i z3l@)RyVm71?leYi$@G+)nci|&W@`D6%(U{9%=B_^CiJ)Cz2#|{9#`u4)bb2G)5fQj zXW^MX9_w<1RD`tgo^yPnzq!wGBn|ucE@M3J{FVNJ44)mK=A0|2@+UJ`* zuOiPYow$JaIoRh^*v2((*Z3l@@6W}iF)xN2jc3P=gBBjGTV~_XVe}pGXgu(U>#=3P zBNyp$LxN+_|VU}xG)n*%Jm2ShF=*%Je zN6`~KPFkYqsUFw!Fit%OJ*T-fvIBbyN>qrSe}3!0TkHdFgtMjw^|-ZJ!I8OF8@V_Sx?EyLKBVQkAVwq+RGGK_5*#j{LvAu=_&sWXdFp*OE3dU0-KOKU&hS%*oqQ zux9jtmU*EcNX336Xb=MN4|jBmbqV)2xL%?!HLjV+j}7R`==16Z@UMA|M)RUaadsT{ zPF7)WiT9q2K%nn<-WQ|f?f~R&%GqAv|18tnMEs}BO@6g(m=PhLvd^*=XmX-DpUksr z1-1+g_-y%6+5yNj-8>)1vp#m-=NsS$rorfpHefFv`%BSm%9R%}2ettR=>L*=IwnAc)>H?>98Ll%ohOWYha6jHVBv}qb-D+I7~jS#-DgW{>^ii z7%RxF3YX*7i74B~WylwJm-+wBcu_^XkY_QER2k&ak{)2bC^?*CPyWfV_iVu$Da8ot zb14e>JqlZlDAw-L&mvrkFj17Xk!|Ff3U*A8f3Nl*sq#TaS3ad)@t**WQJHFLHgryxtq9tXuz5F+6lhMbUeKt+~Wn^^L}^E;Tez@YQ-Ibn1_Ik>ooQw^Lk)+ zS33bR2gdt>t?X~y-;BKW*l-P(Z~2PLYvOSI4}Dzf9XF z_ctXSSo7XP8#dnX~K<1T|=F7(gkZSZZ<`^Y}e(E7RKyNu372aO+ZUp8*icEF_I;W;$brh(e? zYG(V}`aiXw7i%;Ncj1pAPWGi7QncH+dpGT&D2u@NTTz$m?kRXL@fgkIC#eXqNrunV zqCm0Bcjh40E>rMK#a(MPcv1(kBqJ&FLRZ?XI}RGxE#GZix89YJn)K+li@);dmdquO zZp~c&$okYrN1d1X==QeE#!+K3Z%sY)W^|-c6oYMJ{JOC5_0at@_wc>Sw&&`Aok)PFUF1Y=@9tvVbIJAGklTt zfU6aEJ6%)1zU2L>Nxj8* z7wlUX`^sjU#)R8lo~Cc~E}C@Vszu>vUB=wU7v2?q9KI6%2j9Pl@83XMJ+Oy^jU4A| zFYNbz@{J55GMjx6soO9c@n0f76Y*anUJ5@X#1r~nO~Dg13B1i0DF*Cb4UgV?C z*)u6q!t8VQ>2knvC*U{?+PdGBu{;DEy%uY=XYu|&OYaJQap?u&UoQPD&U%IO>>%_yLr`vd6g=g=97mr{~tcQf%jyE%^~BD!w!k}WRWM3ALPS^F6t()O$JYM2i%|~i$F(SpkFxfINn*M z_}*{fqkm~?`;D)rqRdBze(B({2@f6z-o1tM1yY9Mx#|(nAJ@&zwB(6(tBqb0Hi$pn<7$2d{7}k7Qhx7QcK;;# zFKikcaK;w08t`ry>t#6}@Oo7?+q8YS5!nSEy$fdtcj4^duF(jvZ`w5;;bH{vu3g}> z2eEIax8+^&&NJJ&fpLIeej5brTtA#t>lFGokv8VLFdhTik_r8$+|yG2$w(WfV167$ z8I&2ho>-LR>TS(T3lC&t*NA!34&T&0_-_lI^kq!GKtF#)-*ATq;_dWl`~%T;%AwhT zLx|I+bTP()WvD)`d)ytaZ72#SvMJNc_lY?rWvs>PrUu*JbIl=K3MTG}xG`oWql)ib zvSC`Vl23%i>xKmD@%$O!XB+-t)>m|;)K@HNNDkgQ$adTd*sB3I+d;UiQU8>8%{j;L z&U%HsGpfX@7f-~iQSZCZ9fwldD^}tCUm6~TA5ZuMSe-2Hlc~e`5z0`+sina8x*FgQ z@TzVZp1`ZRui**2s;xB3{QqvOpbql*d~3h1O6r;in!E5F+*zFD3m#blU-204d-nkU zAuo%w`$!8lt|_M;|0rZ<>bpmK+AF#m*OrUDrN(vT`WllwWF>s)lZSNiU)Z^-eF^dt z_6f^$%0*E|L9|2#<$n`bLu=5;;tk1ew){5Bu zuJY`=?z4hE4^+N~_Q-p5q|Y4b&ra2O5^D{W??JcnNx->En$_0_!wUG{k+88&-lx|$ z&;6BY8vM#Hk+Y2tRiBfxJ)1R_|osdhWcbL7o|oor6vDD*ANd-Qx?gk=lZP&ez}6PG_x zna=tpy^e=*tD_w4Za%H8m5w~}tXh0IPIx4L8cd!@%GugBLeQ)DvT6naQ@0~eVwf5R zk;mCKNk8M^apsZ!#p3hS=yhQaI?o$Y@7jCLWVY2i%Eq+tHVpmx(H7PlKbJPph93x2xMx*C&U0 zFl~3XEAhBH@_@gdeNGPs=EO8@Ffjk$n8(qFSlcG*!#$31PmCLma$sMm%8AKiV|e|S-7tb_XwuDa9FyuiiC^8orm>QKi1!rnUlHPjy&!Ol_^(8~t9}bx_o$uzDRo$Vah3Qfa1%Jn{T$*bagjdQ zZy4&^KpdS2T=*ou*n8Z0G2D?b+IR{7zs=7BXQR`M-revmCdNK*>OR`hbfNzK#$Nh) z%*DBE_<4NJi0D2Zvw=U#?v8C}t8#a8&3=y?K624Er5mEW;6h%?aV4;e3^lr%w<0h7 zuIlUb5ca{udJy0FFU#VbVtN-sH`0|4YwDAkM!aI0Wz!_?9b|nc+|uTZ-_n~xM(AAPU#oLS{MJywJy``wh1_( zJ0lz{pZKen&+j@6>z3r?=z+@6X zxW?DojDO#7#aELmsGR40rS1*&_2_x%NzFGC}Z5>7@;lTc;fWNI# z`hwhobgA#K;Ug^kPFS|!sl&l^mgBa@jQ7B>?l8tpjX`|FKc1@ph=0sq z34B(t>F}~lrZW#=+*;+t_xSJ9j?HcZab4jq?KoI3ee>F|$+T|NLt45O^-vF3W6c?+ zlP@w|{$qc`{U|e;=7!%1HMXi}^~AEA@MH z)!l5*y-dBcvK!|7D+>JiMLX?j?fZ5uF7dS}@V=I}P5b^mE#9KV)qihk|83B|KcU6f zYw@*Oe6<#D)Z+D8{1GkwkQP_<@6_u5n)dxJEq=QeU#i9bNsBMh;?-LG7A=0G7N4)h z=V|flwD`4Je3llUuEnQn@k%W|S&Nrz@iHwwL5p9i#V^s~7isbFTKs%1K30pDXz_Ek z_(&~Ypv7~wxEhmr+L&Z$-&3`CiWX1O;w~-zmz_5Lp3>rBEq+Xk|5=NFq{Tnb;s>?( zds_T}7C&m;S^d8|2i`l2R!RMP&-=;EN5;TEBlOTbBS76P>88>9M0wBoDb2^A?wpQ0TPS$gO$}@&`@SmD z#QVTQ1RWONDVNfxwp|AEJYea4C0%0~cAgX1OHlAU2)UAFsl7MyV^tRDeJtO~n68>W zcBH(h@}1Ij$q!h1Z&@$pL%Tdx=Ze@q0d?`*kLa7{;g~L-dUj`hs+U8)o#L}%4ra~KAGoT>>(t|(=FDJDi3t=+8&FeEJr?B-!ZH~ z**^j%)Jyo}+E$g97%pd>nx0C7eXFBBO<$qqsdVJg^nzL*Cp?VDF1-iQC`c=*Prk=4{(w${Bq7!`Nqt$0Mm1RehOwOe!64C&ulqjy!{zYnm=j z8~<)cIf?sdk0Z|@##Z0&(CTu+oVe|S$>SU|IUdKLCyVcEXWL{Sh4uY43zr5nCQi5# z<3Nq0pAwIo6ZXV?Fqm?jZA(0EgK5_u2h54_$eAZGJ>Kdl=ac7YaFp|D^>gBObvx?% z39(P9`@Yh82@#Djsn5GQ|=KmY>IQkIsVWK|V;~4kExZx~E(oV{HKl*8}seOWNF({NbT}w8^6$Fc)`C?1KIc_IAD0O&l;ATlORVzWG?o z)jy(d$-?kU_-|KZVR)B0GQ11^;djBm=dMNs^Bg=8;M0B={FLu9i|{N8-vc`_+KBO7 z1$BEoQy|XOr0`5xZeSM9CFp(;F2EUugE+5}wp{u}V7sXc677cENx59;D(TnW?Gk4V zNPC_759+=0Vmiu=Sex7f+fQlhChgXhzE|2W_tleA2g7?87GQsZx?hipJqqZ4srMCn zVCa3R>!;pV>``EELhMoC9!{Yb#{LBFri|a8*p-XOo!dDUQMR*Y5VT5{wM-kQ_te0yek6HIR?y5|6!z21d&Q=+{LkNI`{ zmv}#d`y5@+%fq)}Ojk`DRQo5M6xNxSxZE_>IWqA#^AY@4l<*tZxA$oK9MlJL?aK8B z=azkDDqE~c;&u7R)Bhewy}V1U-#w5d+zW_3kkRS57ceOadnD8FJ_PSq<2@Pg)A62y zxCeH4Ie~A$kK27>|HIxR>E44q60zUGw7kHh$n${M+o1iaT(7-_Jokz{4W{J;RwB=X z=qr7X5b)MbE<;0`+PKWb@`Z~R|UWFIQ&)(#o4@^_KNRkt}P$)&1v|Ky{Jd025-Hh zzG8G~d&T0+-a*H+)Kz|_^Z)p>F#YWz@jMXeh}uJ9KYbc|NT1f7n{qEITkK;> zT*!{iaj_Q#x}x@?Xa~9xdr{P7kQQ((Xy-{gJB|VE4Vlh&o)cn!F%SDnof#4~r_eR< z?9|EI+}N))VV9bOGo3@=11PgIey=Ljm?HcsoOQ3tG_miL;@GPY`VuqQ(wE>na5J`7 zh4e0jZv4mn0KzZ!s*uKc$+S{a2; z3&J$uUKRe8x}X8}s*vZbdsWCoICL09-!&>-6KRXqcSx6eaq=HE|IW5g2OEFUH{6?0 z`x&Zl_-}lf5{4wJjokl|Fq~*i(&PZkt{DHbT)hoKPC#BU9(X2dV_TJ5$QoVZyWK|C z-32*<{o7`movLoOmH%u(*ot)4$29oSZf4p^JlCC+ce1H{r7on!?<=uY_p?|h;Z|+#-rQc%_SmH0R`bbn!c>6y%04JCrLI<$EALOX z@r`-h9af%3+$+~1+oi@P)?UD+=w=)8FyB_>S7{2KZos9|ST_IX7>GWLFWWRb_5M-) zn<&j??FDl0R=|XR*{|v!md|k#?^Yk4uf_s!3K)={a4hg$j0K*KvBtYT7TkyY4(MDM zb9)NwaVOz z{_F1_)@gsIUYlpj?K;(cYLfrSe&Roz7Xy{aapiZ?SIQE4nX;YoJIAcg{;0`&XKbFz zz9D|7wkbRr-2N!_+VT6N1z5*$f0Qx~*Dz{6%J%DN64t@)o3buvTfv|DuDihJ&aC`} zb$>m58V-jaX8JVD###0p@V8v>w>$O`07kw(%o z$x}lnXr*{3kKi43+Iee>N9gAyNgLcaJIeof{+a*s{4>{4Rd}+Dt!a~kZ7CJOZE0T+ zxXQfh?soDU?y)QT2=2pkj&s~bLiTwRG|`4ho+;qB1sz6n8G;;F;=6>G-{Q+h8xocu zU+zPeef40<}2!)(!yq-{3zH0V+{eH9|8LQS3VcGM))b-6%Tj;>y+;zgtkc;xEp(u z{B{EGocAw77Ka~yd^f?@xDPJn{-cLo{xH%6Z5ShMz2si0#ap&fe&tyynV(S;@Mq0P4RoZ z9@#(6e5bKzqVf_R*2j7#fDU(w{!w-W64o-xBv!xa{Ui7OrM@KAF7R_HC)i^YQfZAj@wNLzwo~c`R6aF+&USKK`^!h02-z0dAN}Q%xXZqXcBJ=}L$rH# z&#e5Z|MYFr4miBX4ZdbV{zw8Z^NP76?-a(|G0jfuEMLNtb4SU}A%RNU!BDb zFRH{i(Kp}EEg!WnL++5{)>k(o$ByzMY2Go&iV=+63y5><6b@a9etenqWen*9Z9r`N z+5}oxf^m{GL#9JNBldp24Ly&fGn_M0?q$D`e#&tty|dFL?kl-o;xETLg!yXQxLEXL z8_S?fsM8qY4ExQ7uM7FQ$B>5F{X8%&vGK4Q?NxJL^+k_JD-ieF%6V_+-vk?|F4$hk zzOdH~iOQ*mjSp!dby=$HXcfn?|2tU*JX>9rCFY?TOP*^W-_qycZ^anWzMgn3`~BD$ zuf>y)j(9hMg6DbUXI$wx)%xKr^0zT;D`~u>dnfQN<^^`vb*?1`CJMu|7#J1V`8cByNdpR*)_BUBR^=o!n z>~q$krztq}zOdo2`@jju$DoIzKS-nPKI#(l!^SUtOwQJCqRkj9LF3qe@%_;s{j174 z%e?uipXaoxAJ%yn=LmJ@+#{NA_~1{(9Vlrxn%k3oK?6_r<(|~`3hps*-$CCuYEP~T z^4>w}r+FSo_B-Sk=xp|k#y*3kvuRJB7Tmo@@v)phb>{l=72q#>u7GVN=FZ}EhFCA- zUg1s;*533N#r5Slm(-nY{ftN4CoS~`((ZVe*hd6|#-pGQ8q9#uBg#78^7)LGyR zI(#-Ld4j$h_%C?||D~N0*RbRrs3RxZLEVFO{^PDZtYP!9mMsA99|7K9=^@QR71N`V5eaGiNjeb1_xrefz+*6{AJ1TGm?D?~; z_Da~5ER`1^-6AY%P7+SS&3uyXOFE$Ri9FN7Jp0hMvMl-@u;vubHpS}Nd> z{ba~Kl+O!d8r{S@L!U>RH=@m};P>TK_~tn}=SGbGLg2vy;KO{#7B@iFxZV$3 z5%)~>D{zjRUdP=pIp~_>r%+K%6{FF&`8IyUL){Qz8uEx@k9!mpH z*@8CeZKGT$>cKa?9_rVmTx#>WF65>BC~Yb%+1`4m%%kdgLGVw?)J_^K`T=ROUHoRZ zi+!N@f+~mlx%f2pquSG8U%iO2VcX;79pWO-u*f-Puf-G|vajOhDhXeX1)q}#vA@-N zRl&!7nfNq`Bgwe)f_t&DkBU2Z2L|sPx8*F^UZmf!hJ z;f!iiv@!LQ$>3&sr>?_YU`X6MiMc=>t~xKHa9hp~+vcYYedC15_On8mIe)}B2tB)! z!<~7!A1d3OVzt};&OViROPN~M+jmac{#yj@V|?X&Q2J(TjsRCw8H6ol;fTFwYS+60 zaNmUQU4V^rU&{HaJf(-H3}g2N=M&q(c_Pma*yTC#i{;rc6IX3qlI1z^tN%1dJ5Y{- zQ{hF6m?Okh@*>h~9o|BV7W12Ii~3K(Bzc(n=l^5xec)=m|Ns9(AqgRb%rVVE2#sdp zAjColp%Fr8ghr;3$z*F2GO<_)u}sL;CWN+SYg@<`Yi}W2hRK9R^m{(9*Yo8(yPVg? z@AG}%Zr|_s_Px5DbDi$j^Lo6VujlLU_2*p262tkjsLyDN^Dv<=^4pZ!6Y87ui}hE| zr=`7UlaWg>V{SZ*dLi=S}E^Z-z@5g%){e;5aJ@!(fUfz#B+L*MRtZcR_Dkb zkzHZk71l5}3WWPLB74HRC#?Ixx(}@T!@58IcI7{xtAOAAfq9GiccAe85gfPix(DWA z6!?dE#NX|G0Amu~w}pKl<^%6V!DqbU`9S=R^QF2~_Oy(I`U1~;#&I9VPwWd(XLMij z9ma{U7JcHAW3)fyeFKft6SX+VW2nmG^w<+3?h|1x>JHWqvyG^q;=9`p-&Cw$3v(^Z z)1tmMtI;oc%m%+%dTLD;+}pDvT)W;2zMaCnit)kh-=tLwwR{GycvH(G=1=Bp;xc)y z1N#s2K99Gb5Z`sgb8Mm>oBb4ZNY-EV#6Phbx9B}?|9NG|;7e22W=NMS- zm%&f8741l#55oL6d3?VIj>+QO6}CHJpAKbjwf473~Us^r+yz9ST z!C0A}dEOo3?EZe50Fk>dP%JQj}wDBH1pHiEP15bWb zk%sp{@%zQ_9@GjeE9m#cv+c`g*MRxC4b+F4U}p=*YqfTb!QVo!FOD1WdBih}=QbL_ zw-)f*^rNcTe1v(Nh`z!r6OMV0!!fUwy&(9x@V!zHiO^k z#e3$e!ST;ekcY7~;ND-W2G>mR`y24=*R-FG8%~wOF$eYoTi~bP1qy z5cE(Z<59&yIL-w;61Z()7Hy-c&4Zqj>({ZcS z()Y5*zRP1&Y`^BQQ0pg7$bJIbw|Tr3eV~||Tm&0&zQnw**e?49Z10t|ar-fd2gdFa z?2mI5p0>7~{KIqC;+`e5{ype-Fi#NM)ez@fOX2tx=Et93jW7? zW~;*gcn@v0J^1WuyoVO=Kfrqrtn6&|^no?rM~nB+V%s@<$lR{t;67SxS4-cvhWaCp zC+fg=bt9p@VVm6#wz6HJEw(LXyE=itggOZ+E-asE3JKD+s3+k7U}~Y8y0TE zV>-Ck64DgM8sc0n+F)DOY+8vi4(qABKB4Ug`{KEFdH;=e{t?)WpTxauxJ|Zyam;FN z|LDJYyS!dy-Y)B*xX(!V)WA-BFJKAl3xcUH!0!lPUjQ+C+!sXJ8vG3K{8Q`;4Dbw8 z>eUp1?%Tw{UWSe!@3=;+rqjd ztUKU2LaWsa%duQ)JnlQvsqM-!ON{5{?-po%2gFGnn`7T0zMp{OJ;nv&sLdNNzSDZ72Wm_*ayldHWsgJ0MR`Zyxs@Sa&|r`i|ky z28Kaf@P#%p6#9-KF!vY?=Yqs0u68tuk45#rZPk5x&EnhBos5#72fRoIe*rT@quX>e&d_dQr=#Pu%BgGdi!W{#6!n5LeY%LC)de1&*uv4QngNLTMG>Wlgzj&1pN^u-)I zvnJ+C>?6-Ln)9dCxyPC!&RnxG#2MS*lB)3CC+G{XFKO`-e0~{TJ>b6&0H#B@zC7Gk<47z;676O4tJ zt_j9MOxFZsA*O4Bu@KWW!B~jtnqVx%bWJc8V!90=UF_qq4E+0wb0di-@R+IbZtUZ5 zEEC7t=DzK3=##K46PID%Chz$)_id+hFB; z&qdmWV0RH-cy8=*KM4A=-z$W<2HME~4Nb+|L*xhjY*Ohr6Scl-nHbZzoWOq9+^*2S zLh|n-*x<9Bc%8)Un19S8p7Rs^q`6LO+E%h3#4+Ejjpslw!b|oKXp8@g_AUAtIcG!P zw?H}~&(xNI$^Hm^l6}kqDwm5VunmgyAlzs47q!HB3G;q3A7Y#6M`Sr56IwV9nD>#- z7#Df3JfG3NCj>soehltmcaU>fEsqc{ytf|nh;vvRLu4K*#T;z-@uyZMR-(>mke=yH|u|A2IWBx>X;y6wAH-h24`R3RPW-c#0pTm45Uo>4vm-~Xg;x%Nf zA6i^bV42`~HS>HK_Y>#M1(z{cNNoqV;T&AdC(Zkz_B`k-P+Rzl$4-@x)zJpaM%c*j z1ei7Sc}IJ+mE~R=%4`XIhxOlnUxEMD)W2VM{D=FTPSk+!DL*;aYy@-7LijC7oNJ16 zzA)E>u>gNd1mk6}F&r$wxuzSB4!hS~RXYsf$6Xw&I(BB%Nzs-dH)(HJ=CiJ&P=x;NjzcoUCn+g4`5&GLq z=x>eC-)2I8YlQwb6Z%^t^tYMN-x{I6&4m8e2>op)^tX5&6^|9={pgs7%;Q${TdCrl z0Wv;s#bZ@Dcg1`8kK5MTlUcpyo)fmVdn!)U_{aMywD~LK70WkqTa{DmA&*$jV*Uz! zA{;Zw{vFOqXme(??M`(kv6U6Ho67UobYSQsZrcJc*>`K@0redJhq?`Qo#v{L?iP57 zIw~06Z)Dyd`xdh;j)AC!{W;p;|79>1A&YEmNW(l8wi4HmaK49mk^5_X0BjR|Db7!u zJwE=`+5~Jfw;MbsTzT9o+$P$L7}qLq*ZTBUvQNkH#H?Ki9OpjB&`;rq?9=gl5w`{3 zAsw6(Nx#MYXY!a@XrRB?_oBaI?um0-v%l!8rlYlewvWsMrU5?jebC7H=(oB0Y?!JO?4aJC14UnYpa6&t$%mFQ_Z-$1?k( z)g8(U#!rm*=IywTIj%yp5b7oFC-W!o^^tL`tSQGKvt~`4_d+>f{98=^A7qU4ty7YmkL>4YF_$ z%y9?79D4|?hroI`tcSyT6s$+VdMvER!g@Tc$4B-UiF0u1_p3m@9?!ucU;phnxTy=I z-x=oQ-C*4n)~~?2JFI)bx+kpr!nzNv2f(^NtY3vS|fX7PaIlib*I0myhKBQ%iBhC9EO+71weV|{4eg9#O59xAW z&{w<%=5buLw4QQ~|G4e^!yF%CEZP^24T?EF#7EdznB(j6j{c&ptlw~s5a#%H&oswh z0>4*>ztOg&JG^?rs}H>T!)p+{hQMn$yhgzbey427c=)|S?Vc<3{qitR(3WYx)ts^X z(`kq1-k#;z{m#(sONQ4O786|UqfgE)YtiKU!g2r8?MLEAou8ieMdJ;lyG;7_$j1v- z=Us{EJLz=hAAdjkGJjV$$A=a0Eqg=F`Be>eS+xwM*S_@sX2j@t?+N`z4-XyT|HFdU zuaDZgzG;nswMCKlPmI6Y@c(rC*AxD_9eZ`d$yNbtR(y9Oq}{5Q{pNn?aHd+liZLIb zJLg^F-?slx%j5s_`2FwZf23$ehCo=G;I*NmqT&m9?Sj`yc&T_JyAcm#R~!hqQ!#(T zwDQK`$F{uU@XflR4F~+5d;9wtpO%xUa}JgBv~_kt?*=RE(r-PyG%Uw-h= zabeTR&&T}mLXFW4CXD$tZkWlpjep9p%rS;Ny<(i|%-CwrW!qz3+s57gwtnLguYNecS%s&Y*Mh4zPJ7jPR)64n zlmWt5@o3zmimFM6M^ww-Qqv~?~sK;)IS zJrAx;-g5O*&!(F;#Kq6-I@xjZ=hJ5YoZ;Jd&FZDqs^4w3`Hjq7+fM|3pRwty#NE}y z-?`+tc;7424)k80^I6ko1C}@ZtImzjj^Dl!IIm{gHT4Gh3=Ax@o#!()q3ie-_anxP zoou^1WchEuPZ(Hx*42YI4{d$nX2~17&eXVaK63E~50@EUOAWfPraW^`!9<64wlD5> zOuSa~%8Zmf?{weRzU;1-}v{xn*C?;mgDW7xqKiT&$Rrv<1=ymXCK$N z^WN**CpRB)p<2hUPOjPE<34!Mk_jglEdOZTie&c{0mDs?2J}5xtK!RX4sSIXa(|=o zb*r9stv2_1r!>Dx^(fn%FT1v0Rv0yVK-;c2+h4nSvChX+hFS;h{C3M(@1bX(xxPG8 zaKQMJ-CFH}raEHZql!x+Vvg_guJf_vLTbTv-)g@89MFw=3)*U@z{rHMo~|Hsp+05@|d0&8w>h{OtVY zZ$}oN+1K%t@T0HHJNd!l|19eEs!3H0Rg(Ip4BLHYW1ZboI-Y10 z^;~-N4OwC)KP{~L{+r!6owF6eu;Rm!H84I3mh>owB1_%quh9p}WxT}FZXedpW1C0kp02+{ulk|amR@y>Dz>hP-@A35A$-{CLK8D)!j;M*mm0e0He!hil&K@Y&sV{qO%8+{mZRkEc4+`Or|f<@rZ*rf+yK zyM5TW13he;Nc1h?#Sx<<=7~_FNI2KYVP_!MWeg^mw=TMAO^Vof;VS-u}#S zaLlDgYuC5D-{jLKOZwkh?$XQpK*e9~e-yOxGh|kr_8)hu^oY^cc%(ti_YVIO;IVw= z%H31XedAfQ(6f81?@QNST;Fg{tEq#ZyV>oXMQ_(W{b&3A_4Y)q*znb&nl)aXTFbk; zf1mAN2VZHOIekv~j)VC_I^Enl?)Q?a!!lRAg)U%VIU z(sIbamTpOhJ6`$dlO8^o;}(v-(>n0*&9=plHd(J6?&}i%>-j0ynpXLvQ{LJ-{RZ#+ z>D2{)#xCD?wD-GC=idw}ec`}}l}+mgL>4t`>Fi^_>dilzoOyY5qr2@!e6Xj^Uo}5( z-L>@6+FxHk{BzEhjjrC?50@@;oZPRo!!MbO@8!hVcKFzPR2}d3E~#x+c1`>4XsP4F z_NEahOTKD#b?6WN(<}PEIr+l&_C0F9>{|Edzc0oIT*zI&fA03_@%a^xieKpXO~r!x zJCdu{9avJjaOp$0$mF=P<@Q1E?elXxUw=yN=xS4zY`=8NP!#xASmGg<+?ID2PWs%Y zR_fXCFZ<2??TsME78}1D6_xhNf#2>PjSm0rox0n;Sl;l`pN~e~EJ)Z(|LkpkEn-Io0{{pz)v_H7+Pd-v~n#O;^eRfg_+ zZH{U7@)@5xLX~{DAaT+ci4D%*tQ)p#hu2p>^^6%c_*l;d@5L@U(JQS{?3gwuyVpvX zP;bxLkljx94 z#t*la-uP)*7n}0yAA9XMzC6C9%YrjGe(eVJIp(qA;m7A2KfHgS^NTwlB-Rgp^-9;F zT`MlNsy5a0Sev@NOTyo-moxD41MAKmS3SQX&v)2=Hb%X0=H!Lr4HJH9x2tc_qTU%^ z;jT`0UNuUihE=VckKAp0}zlG5>tn*DThk@rq>;Jy)?+1Nm^qm`6{d~^;nT~ab z#@d86%)EPJvga2Kj7=QAfBv1-57K`9wr8IppFyo3+9s>~XWN@{s;}y`e^|ZwE%FXD8Qph^^RCWcxPBd7+_f~Q=Fbl#@*hy`|Hl7 zFCM?>_~-FM?uR;k^`)!5U5%qDi%vSs-;lXx^%rv|mrXp;>m`Tsbur^Q4qVYTq#dl6blj@Ojfx9POMWicQGeRpWtVO*8P#suPX8}PZywxy-n_%sf2^wd!-X>;wQRR_ z%30fb`rA7k7rkX~)i%$ohFk4k1N&^BF!K0@@Uk#(=-nT^8@PVedx0gdWe;put+Pj= zL(GYw`<*NaOm*fqw5}y4ye)CZ~Tri+gx6+)%9-L56fO2@%rMw z?|yu7@4a?SeEY5H54HEbO-0{-R;$;rcPqY`RBOz`AHJP?+2_?xhUE0PA3EQhIibg# zb%{|IUSHiZKGo-kKZ4$mZZ^fUw^urxzmqv=%hl7Z{7xq9`Fm$k zPnUI>vv${5?bM-ai*Y}$Z5(}L?1hI_e9!ItId$&#DNVW$Shlo%z@@`)t@!TuYvspN zS8kjia%O+E2b*UVH~X;umo5Ht;aHny*J?O_pLK8Uy27=qeHYG;T{EQX!C`xY7x$mO zysrD5m*bM(N(vfW^mgRx`=txVPXBFNyR)`_6KW5MYU8lF%l?_ewhil*J9X9w)2PM% zJ>GWTxog|$ckXu^dE?fevvqc@oi~0)=Y#}@rfceZrXFe6zww|KZSUXNSa9Q7*W$w; zjNI7&)1ggom2D21RN&ce%0!6j#Od{=(p~ zJ%VOzy4XMZ*Kt!Fj^6FHcSP;xhptRox&Oq)Z|XPh`EIS)qvH=|Raw*Y`htQ-rGuOP zVgE~w7K6t$&3f(BgW9V{4C?aNfOQ^8bNm~{f84vOvAkam!`?<|cXD?;x2fl-4~AFo zKEH9#`4Kk{ZEjfdLBA>u4t?07&!hg!PCH*tczaR%+70{v$bC# zh7KF^$APJM-J9Vt_;}pQpmNy!ISOZ zop94}@wiRViF5A%+NweMR|Ru=&Yd1m`*XwS(&4vO&o6o|{yp0VU%WJOsOOA{_0IjW zZl2YI+2^MOT>i>u!e9Qazuxxff^X0HHAc1CUeIMm&qp&C-MhJ`ZbG%t($_z`+OE&E zGuy@-+v?n{t=*|NkGxiIaP*Z9QwB}`th8x<`u_JGS@%wOG-~V4<5k|-_QoqW%NG6B ztH#OsVO`%_Iblf0n3)~CovYi_d-T(x!t8gwI?Z2lEOpG`qdnd`8(~%N>p!P$?Xdcr zPKM9FpWrn6X!Cs!-}&%Hz)Q&EuQgI-Rs{PEM1W4|X3LYVWe6&$%iW2G+@&+j&9F?jbcxZ|<3J ztzO2)5|`1@w%ZFj`^=l(aPGDi4-QnH^2eM>pJ#nA_lFH5cTUZ_@tMzrpuDAaoU}64uH#xXb$`)x&&xRt@h`d;6KN z>uWwuTfE*q<>TFHy-%!|AG>*_)o}uA%2G!k8EbsJbvt3MJ>P0`|O3!_K(gnE`Q$o%Ppz5m)IX)wsKzlPfIr~%=+cm z1}_a<_Hu`hJJoC%kb2m4-Daz`LHD-qTJYt_X+bt$U$|`jutQk*TOF3Idr)Wm-kc%F z|E^QG#pm426z>~ldv;nqw`@YEU)zkI*!HCn8z(k?Zq4{1neHwF=1zGjul@^zUwdP9 zp!*KnXPvJOI_Gej6^m_x23u>=CyM1}*5zpUl>$>V`W1&$8w0k#=HIdBvZcq~>CrN-Pv>rv-plrK@o?;E-{fK2 zJ!`%wiAWhbWMT8{@o&FXzUFML^L4k4-MaI~MG=eFv_1Bp#s#;I44Ik#zD>uSd12>Q z7{5K$JmZHCr;gd${`886hi)uxSLa!LN83Kb8^G<$-LEXKTK1p1b~aTG-!)zSWpniJ zRjPMtJ*?ZXTAz4*(|C0JPgSS+{juQDE-US3g=mACNWxYK{$-qw6t#q0)O zbxB@w*v{|!E)K27xCTeHn^3o(cb7Hmjv8JotPwEsZ#cnlZN>eHRp+l%%${<(`L=q;bA4Q)Q%4e}Lt`aY}}aO1Cv&pS`wbam^% z?!`6UJk)tvr`yTbr)QQXKKH)E&FWPvdbU1bYke*Lj!VF*DpMMrd%mQxb=BX#nZC@W z!Mx5t&2Bg#?SmWbC$&gCKKIYIZLbtnERA|lKi=l!iRsTRzZUj_^{6%V7hc`^%LiM2 zueobo(X@N%{g%G6wf%+HkJjnr((Sb$8yzd{I?3xuy+WJi*M_Ap-W|3!KJfNKKc@~~ zH~RhSj!Uw4KHA*k!Kcnu0^ac|o_wTi|Jd7$$1YfsW@CFVX4&C(4T_q$E?AZ_{pTwE zIvfwX`cseOiuY3&{C?ttjBT&|*unbvOPNP~ZI)bZ^Ky-6Ew9t5`4G^RyKdkAJn7fp z2fXsbqYJIyo#tEdW|QQN(_DP^`{&w>KJwhVu~VJfEvfQlX5Iap%HY8GkLQzYJ?32K zoIPvSj)Of+am{9ZIWKPK2+yN$xZAq+p1%D|k5fYn!p8p+Q2$x&pSAux>v^O9cKdqP z_V}#!lg1Z1eKY6ofSxZ`uU}*IuhqBCd3d|+_mL5kazi%%VYSryZnxa*lt%r&>ivhY z=Ezl%4W8BhS>vBO$7kfokyj>c+dZSzuNA#kIQ~6rf0O<*XY?Dm!X_&Ec+0OoiK)8t z`>rmB$3EO?-{l+I6LZFZy`Al+yEns6P}u#le&NFAaUCD*bDGurW}g}#o+%ww?f4~= z;qzBsUV3F>_$G&9j~%;r@BVA=u#pE>|5@>I-AlLfTI2kEvzKJ&Ef2~cle@fZ zVcM+er>jPG4r}@WTr&LcF6%#O0R2z*7CkGrHJ?~M?k}7DO+3CE-R)b)>oK#tz8KVV zW$L=X>_zLXhVOd0*S<}6tvif-5geNDWi)vA-DpTJ81vq&K|fqwJp1c$yD~p_v)cE$ z-*XSj_n9VMOsln|=8>gVZ;i|c{pdF?RMeUkRB^law=?>roG#vXuk5p5I)C3Z>_7|u z_TFFIIe#_1Q`nb-1xiGkfp`iTNZVlgUTIEB#S*FRi zChw~5^xM+pw|z=$SGl$-vTo~sLmLO&p4M^8;n1WP(q8Ox$>UMx`_oFk{ww#)$qw;j z$E`g%(kWw0y}^PbH{ zoqZ#F*RhW;)(f29)llAZ&bPzro$uWv@oTGRwSQKBzN-4l!-|U3*S>ss&A-*120u4# zG&p%;jUD3$W$hTU?G4vMAJse7a?HH1ZSOuvIo#mf1N+bHpIepFK0~?!O)}uzY4> zAOE;B8(zp;=lx@DakA;lgl5N9{wMLucMUu`>|GKSeg0;hdfmT#e_^w(53ak8eP?z0 zuZCkEoNw3a)~d`pEeCvi>ub+rXRQMk9Uaj2`2k}lI9-XlWsj$5pK1ATk1x;U3>ZJ_ zdFkSycOgEv+}e))Veu!wrr*A|pyAiuzfErRQPqcGWgTZ6pXC%9IQ8?cT>~dJbN(a= zz5)GTUY>P)f7bc-v&QFH=ac>;p?Ou@`|)AL$M4>$m~h9qZ^gkH>)v_!!8(_O7X!X* zb!h5qP51Zs)&I16#dpJ2+2kItaVj)7V)2CR1_@akH!izg>t?Cf?C>trmtCDXE#bYR zKUIJ5!{FV!_ndj-SiAgV%>wJ=T^^4hg@>P)S5)&}w9_`VZv*?(c~fKWcOS81$S=SD zmy75B$^S2oKp&qG?MDn8(EinaV+Qma(tbp5AHViI3GdE*+YcSpZ}^CTWBaxD8i5;o z&kCA5dwP)3#l!t&w@%$WT#b_^&YKcsoIT4p*Zn28ZXWJIZH$vcCeE5>oIhpmyy?I@ zxp#2u(ADS?92OQjuY1Ri6NN;FX|rcf3z;%+_8W62Pw6mu_Uj$PX3q|p96WLQtd1ce z^IvZtI(PPrDU-vD?vuN^b(u1ClH26T6WzMGPkFg>7mtZkJtnz#a_c&|i`&GYAb0mp z9#gxvG1!yyRo)zKs1os9m1cG=G^SkugKcu{3ZLmSiYZPKZ7G;6O6O;R5+9||*F#Vu^PTvS7 z1!NzAqlB+rb2sVlX4_46fVBM32x5B5Jh_p*3uzl+?M18%nZI3glT2s5-R3%*>=NuZ*Wct|fM@j>V#&@QJ{x@Onj6t>bM;LaFWjC=+cV)a=811N z0?MWB?zr}QGS8?{N;VFaY;3fs;C2V>v|tIqHw!+v)Aj<~{x}V>Kjzhsw&$R}BClBP z5oBi#pK&q5E0$O&mIsezf`}#Vmu6wVY+`Z$u-|pvep>mXJuHb&TmED(>o00}5%a~2 zJVm<*BYT-|)QBeLhU=%$NVlMoLoDbiHOh4wMo8M8oGQk$R9j(`v!lqDYKN;hC0;ZMa-he7M=_8RQ*~S z*+-%_FC*4Q^2x>zOmM++yG{&0^K!%gZK@*_eGK1*v390ycAACI@*t+yLVG`*J+fe8 zvfUtyu)t!8$#TUyl|(EK9r%|zh5qD`eIR@m^+5EXShgj!E$Hz!bN`C_+SkAh&I@l!@DQ{yPJ5qwUf9y0_kzYM-b>{$v-7I=Xa>fWm3J z)=!vY`M8avO#;~@!so|%Sy#PMyfewh1O0idBjRZU1mES+|DwgY_?uY#edE z^AGh8<6^MGH-jM?>*`a?solt4o2P>I&qkriG(A1smc^&a4mWlI=r-)lP*$3blXJHPDekG8Nc1-s# znrNRx_JP>%{fj-uzMSl}<0jo41vfd-)dLK-;)qB?>K!pB>#DVE+_#AJg_Edwm|Y{L?l|eudFC z=@*toG_i2_O!LkJe%>RQwr60S*Oe8fm(4ZVyxkeL711_leO+U7RxD3Dct8g(X_$tk z`a@^8jIh~*Y_;<`7V0nNDS&Ju;IpMXMbLKbJdAFxZG>GCXnT>qowKnvlWZ^sxL~>G z5yQ{8pfB*76WUUY?;@>A@wK7CP;Gai?FqQQ9GljOc{Zl)P1`XoK8EAAAljy_bY&As z+l<&|c^p~Upk^}JMZstC|M7V-%x5-jmwl2ESOGBu#_zGumCqv>;NdH{@ckT!X|b@d zpAqam{>27;4j`LQ_^kICw@3WLcC3#HwB1PMU+J77o^RF88j3zVn`}Lw;+O%o%g8?b zDYTv8p>w!ge+q5vNBqcMJ5Oh+9kKJoXdgxP+Bv^}vB$DbBYRoATKN-`<%qfk#I*MF z6uNfs&?sDZTQU;ky6(hspQ4{c--5`V`x|aSH-^~L`kO)a+}~Uax<$mab1P2~2L}@L z)uJKd;X=#IGb zuyA5Vk(5?WF&0>&g?;gXRJizwmDXQn6AMJ9m6<3L%y*Fm-7=jn`fH~Z8l0;@4c5jH zyU?~!+-9Lpc>lw`L9{Kz!oKKV6m92a5O0B{SYVktW(2)FVm_3f{+JBYEF&9UPIk?4 z2Xp^#gwIA|f$$mgZAr_EY_#;i4E6mjun=Ods09n!MOt8S#6r=?tBw)vl8HqymO;!8 z+XXCWmurC)5#xC+BZm9ng8j1HbJ|CE#5$~>Ja6=PzJazLWUDyG^w<{D3?f_2cUCuz zuq~3dIbj}PuJ!nQ5^LK@WRn0UsxrtX8*hpQrdvSF3-@FF6y~{%wnZ>|xb&?pS~=?M zU1*z(7p^^t*@)e=YX-i=v~!i-b#krY${3b+FmY|ngV+Z0>%Y2d=SHxPC;RIZ7k#}$ z%?z>$u!Dd8W$Z%D>tr9Mh_y4=*rOpV@_f3vJj~}7jJO@&V9CNa3+0Ad0Y=;ihXdB| zrms)zns<~Dt>D|QIKR~5Zay!D`Ajmx8!Y}$kxxuF&xqF0b}^rok0~CXA3?ivBfP;< z@I*Y!c||+tmYSI%;2-RaVB$k||5TSl$;RagEpg@s+g2Rez;h-omn$8IVr(*{E$aPC z9l$QHgzQzZwtpUsU@<+#TpxWkk-c_4T3^QOS_k?XLbf?i;VarFkiExK_=4q>BkfTi z%DwXOk~msI-BPl9n)8{MN9R`X28#pw@h^GwCEKStmO)=4$^L2P{Fuj7vUkNiKH-bV zBiiLZg`E-Xv=fT3%D~SS+A;d*jDoOe_iOx19W#QRAK4e+P72L%vU!@aMIVyMzStW6 z`4=D1KA-HhYwJ&8Z}S4|1WV#m9K*PQod?;6soE$z#?^!sZ*Fj2#@cYJ!qR3dL)9nn z2CWZ&lH>K%s_-Yr_$({)u2ztOehJicp5)u${4nYiX`LsWJHmPf%QU#Agxv7F0NPj# z`~)E6ned~txM<@Qtb4*aH{>NR3a*WNz=skq0)KJQ`Wf-jU}eDIS6)i6)3U&C!FguX z4?ais1} zHueBNM)si;XzkoI@aKu!X#PSyqWEv8{HAL0hUp81{3AFIi~817Pqk~TpfiZL$BXa} zEZTKbST`k|#I_nXX!8sBh}RlXCjl!xED4maAgT}E9Rx2CEA8Gdv`>0TfKu}F2E{X_ zoe}CtNy{eZy2JuAhNY{}Ig`D9ATxUmKM%P@S5^KvgvM-}+Ou3}f8n&W8 znZ1O7HVy-uMCBVbRB$8dS0n#@2MXPMu`;ZObWx{#kN_!U|1#7+%^y0?A4v8ass2a$ z3LxvrBC59mBgv5J=Sy&`toiwq;70O)7ug4nAx=%!hIrI?!Dapbkn-g^NpM;J=TSY6 zoGQ4i|L(-orVB3X|9#?4uL~~ge{-t;j|3rU?6VO7|PG_gF>tRG)t(9=cX= z?HV$Cw54=CrwM@^(#a+Jp}^Zid-VzFORL{7U=Lt!<1O5A0U;PT$+T2kkx(9y0rz{lC}!Z;-A(rrohhC7wh9Y*>|ZwdVZ zvDvVSc;sTiWqpQc(`tSi?g>MAU*+YoVI0MLIX)6VyA}W+u^l5%Un=yq z`8)7sR1Xv15nSE_`xfcsR1;h~j}P`8Nyj-xaBZFrJd|{@Rtv7p$ASM&{i=(z;1ObF z7y{!U#tnY^PFrNT4}dr#PuB5fR6mQsFI=Sk@1zs1vp)y@Eb4gc_!6?urg2&7*nwYY zA4uaxpq2`pn}9X)OdabE!w&N10 zy~F&I>=SkT2WW?ypSpD4A#SAcMe6J%9;xGZ$p1oE<6@-pY6krV>KkA`Tw=vad$&Ta zTdr#3(~}&{tPE5rY@hy`{gYhSL*v#hGoW8GkLu=)hqe4bC#_qyX>pO0L-WRYAYC8Y zglUkn+sq`wr39QA!jr;P0JdZ{J*z6#zN z`X7wHTw>`%w4%H+K^)WdqWk-38mb+yqfR>cZ=x!OhgX*T`Hghq=s3ln(#?hcQU5ye zOyY?O|NkcY6c|5oai{h>TVcP5>{_DLNgT_o023&i*2_f8@EuWqtUBc)pI;rT7;Tm-V3o@o;aEp+L&lbHwwB2N4gK z<$@DJSY-J+6L%RTc!*dT=0gV2&p6^zXD0QZWyGaFuR*z4DwmlGj_nHjJrk9;96vt= z5llDPM>vvB{+uQrI9PyC;^`FsT;iF;lN9L|lYQ(EVHi#6Pa^KCyHmOWV=D7l5 zJL<2j@xTfeS)U83UrGxVT>9`CwTsZXg3EY*)J*sjM!ZmL)~ z&i)wL2N0L#yN-B}jt{1Ih7gx=!+V1;K7lI?+7c*Mh5+K3#Dj>xPjPmR79fiFB;v`$ z3yAL`|D#q4Ak%$MQ6GFEG-7M@g#LD1C_22Ge0l;l-nNB*+#7)HC zBpyUu)}K_UV5lET9Q#dNa;ZKzY!Uy zcGUle6VIq3HhcjqEEo50#s5<0H1Uw{1y3XUXsVya9|aF4zQRf9MCS?~Ay$UEG=H!@ zC4f9G7)Xp;4LO{;b(qw(R zC^((2HGD*V7W^i-c27Bcj3yp?Rd9J8dp5Oe!wtb@oZFB;4#Z{LvY_L_`dt2}u$T4c z9`ql`9c~IP?FW*6acO0JThcElF73CFe$m~^`rng&IdN%UhxB6~3VUC%GOUMF1L#j7 zaS!6XK_5c##4?!d!>mL@!TA<0zmq>+bbeLpPa*p_;!^)5;x2fi5*B$~><20@QysxU zR$Jat)Q6WF2>*R__G=XOW1&7{e*Ja!n-%s|D4sz&`;H3xzog@4+rKNbzqwzh0 z?4`|28h2uJ9KT;7Z74L_Y6!(Yf$WX6ajGKS#x^1j8DuZ(=NR%QPnT|iBHiDp9E-?4 zkU@RFOT!; zL6EVYxYiebCWw{cJk`%^_`!KxWc}<%^)OGzXHtDD)bUXePt?DzCA(IKtE%M`;pE$n*S6M4js8EvUTwi2G2w?@>GxiOc*ZPWD|EK9elL*sLC(7A+xqs zK7UH@zkCLj-v4}>;34P!%fgW5Wu&yNsgNXhBaZD07a32Z_8-&}9hdgO#4+6@vc*+6 z<2=stI=tRbd0h}WFE3B%A8HW!O_FN~AajxSG{TnVaJ|^uyxQ?ge zzQo;$%eYBod3jxDoR_b> zZxVI5y$b~e+wV^D5m#QsvHf!HO&o{2WM&^u9QAqojZx?)DfCmA&Tgik!}uqRUsrHD zIKIOL{o(fZ#4*1q!bE$Q&!55ka_+)(_AvWkrn8svaN?-Lc?8o*W%lw}H2SzDGJPKZ zbf(XFCe!C}D`K3-!5Yq2kGMV#*NN-nP{wq4931VAe=^jICoQUcjA~|J|1}y$NX~c!*qCm=*M)p{~=6=^Dw5v z%U3=ZMqj=e3Y|=*!^<}aj!$vX>&R!c=*u^f?Dgdv#W?prhB(IgfJjPvm(O_7*M}tL z&k<&i_n+gU_cMc~%k8rm=lwb7#hRz4Bt5>v$8_*K_&24}CokU^+ZL^0^=A4^KCm+4H#J zeQvm*J+D6|C(GQ6xV{_%i0jKSnCWnTVj1Ug!0Y?C=;JA$!=d+6-p{Siuc5hR9r?Ts zy}moMKPGn7-n|*;aSmpj`wu^`tu1=}1jf03D&t%~hjAXa>x}bs<+C;P>AF2<*&iRq zxqcwy+|Mutk5=#m1*G*DTpx#Wg^p88gSKECxIgZU^Za@c*Qe`CT%T?r)8YD&3ZAUs z*$Q63_%V?c?Y*3Fp03mLiu^Lp^Xttx*Y{(bmzR8I2FCL^^CyzobDqdJ_cMcWUhV~q zbNg}ycWPxhzn%*2&p1yvgmE4R`8*7LdrxHc+|M+|xlT6Y$64G86x`Fn50KkZ!1`QrL+jPr8$Rq!Cjd3i-K&UF$P=YFO#&UNw`=Q>4<^L&*v zUa1`0nDfia-I;M-z9z9F-BQMRd~Dj9^ToLf-$ebd*PhE|Fk3i#Bqm$`!LS^4^{9u1y5J-d<8F4aGMV1a^dGa zJc(l*Qdqf|h+`Z$4`n($&QVNRzmd4!e@~{v{R~j>@K=OCm~JZbKaO!;f8_U^F<-pj zP9l5E7w72;9r^udy-v15$Hh}PC*vURKXW54;~=>Yaee%QiRS{b&tRO# zxqxx5W9VUyGq*P~&h5P!=k~#jbNg7vxqT|*+&-UiZePkcw|DGm*?)J&xxGK*Tt9%g zEJyi#zF^|A93_ud=%grku7Z~-xUrYze0eE&u!6@Zc&dWuDR`-ZJD4o{>B2alCwntq zDgKOe`v}IleH`Q5K8F#<_h0 z-jac-Z>IJYlhoZDOXG3SfhJ2TGhJs9WqCgQRk$>&*m6PN8s@*t+e^`jI#Nx`!e zyhy>V`L7*?cEvY_I`|W z`(VboeKh0TK7ny=pTRh{&t;t3moU!lt@~NduQTJ^-h*+j@6R~54`H0!$1=|C-K;pJ56f%{Z^;>5PBEbP5!_gmIo< zJ0EktE-@Wf#xFDOqu?P59!ebJQ^a&4iDP^?k7hbwGy80&!|OvX)8Rai>G0#(l)*w2 z>pw5YRO0%2m`Pk;4|9lPJ>h;9G96yu%9sx4)t2=jjGB&f^x&IFDPpf@cudw~IXD`gT#obhtm(L(TEwad2jw+j}y8jOEvl zao&!C89&JEBNRNIah`5EjPv-r`gfP;_(~-EoT#Ur^<>IH%2~p^TDRfd4I++TcET;1( z%deB4_($IldlJ{j)0;Tvm&enG>F{_4F&*CDMlc=DqnHk_&*=)CT!l`)LdSlj<#Kc; zt}jOy;us$uH^V5)Iu4BU_&5^R$IXdx9tRiVnC<~qULK6|IGc#;>!+VW-=FDl{b0tq zekjvF!u$ziockY59P`WVV;Sf63B)nKd>)md;028He!HA;-v1j$3#awtwGDCoc zXNiJaPc&!?))Q{;sNf!qbN_u9=Q@E39>zG2TP))|UrCH}{d5J-XPoZUuJ%$GS2gxMqHn64sm_D1x)8M(=S(W=OD}R@ltSq#(6yq zXPl=Sui&YS^ZaHp&h>K{=jBz*IIp+m3hp$;a(+D+=jHCtIL}wOg2yX(x`O91&eJVs zoX4SD!JVdB&X*hGT*r%X9yfmlPiLIRKZCfwe&!L^*Uv(x!}Du1&9eV43hvH0_s5@c zUS1)L^EgB^&izSXoY&7(1&iIy)5JLUCxCJ8e<xPC!Fyz z#$y=g?WmY>UO%rB*S8nz8A4RwUhIfB13!6uTp8!_@noEjr+$ocogl`!pV5qS{S?M| zx#uW&A>+Kf3^PT3F<)HAk#X*)E8|?pk8!RO$T-heIOCPdk#Sz`iH!5|&0w6zr+{(p zk0HczevJxlQt$xAdAgyD^Y}z5coO5>&veGQP7dQdZn?zu?W>TuzI_!j9UkXW#(A9G zUl(!Hw-+Dc`u5^a9P1U2Pq>1|DR?sDydGvT&h_&d=W)BP;D%Y|`oQ(=8RzZSm2sY~ ziE*B;pMr-l&eM%yoY#j0#vcfmwf8i}dAfOwbDd(wxxLS9a~ya(4OH+T;`;g!L0n%S zqL~hlTatojGtT|LuHg2eX8*apyMp^Ec$k7mF`mlepH3X(P{eo!af}1!rA&v%xs2)T zWIFb9#6S9YIuXbAwVT;{D!4D>2bg^%flo(1};*^+?&nwFBHN+8@=M^PSWICsr zP6p##KbLWCU(7hSzfN5GBY(fTl(_Uqa_fcWd{u>5$iar!2=aMQo-XG=l-WLep$Gty=ODd?TZ=b z_T`Lodt;Ok)#uBZxQvf{Zkj7`86U~L6*|ER9 zVix~01$TT`7-7D+y&L28V4GaL80YqZ3Ld85NsQNL`q>Iztl&29nf>QFE(-3W;Nc1$ zui$A4o~Pg?3T_u;*?%MBJkIV4?ycYfjNg`p2DtMWK+pjj~i~H}Q;3ft4SMV^#dH)=%;3*28t>8rp zE`LM>%aNz+utt$z#_1=tG(%4X_f_y91rJy77zIyM@C?RzzVa2kRKe}nn&ZHATov3~ z!IO#W+iwnWef!O4I*zQplrqlip?#d$PhKw0jB_26f`>BB`=4k9PgL-91utZr`)^oh z_MdYn1@}~Ne+3Uy@Mr~3Q1Da*&roPn@@_cD#GZDu);yBjfA)4fg#P$7K266P0*OLMTxA|D4gZ(PE zcO;HFslr5icO#De?`7PRIQql6NulG*IJu^&1u67{75dT4o}aHvWcHkA5XXFd&iuDa z6#wXXpn|6rC`o6^V{`(Qv zx0gVjz0?oUaj73g9OKW&g?Pq!Ka;{Zw|Ctp;-Js37jeCx{=_j|KJG*)c(Q`$D7f!- z%l-rr*ZY$|T<=eYf)^-wxq_$fuKv6r<<(c848}K;Kd4V*d^kuPuH8cemwFet{;!Wn9gM(slCT5c!rA8>oi~win5xiR;TNfw;aMWh!`)g1geBT(9G!;2{bg!?>)on6otE`Z%N$ zmvNBCS((IT93;;nu8%_@alQZY$6xi_m~JjF-Vb;)&izk4B<%J6XA;-@lT94cYQI*Kt&EcjEfzap~l0R4(E|fhsQZi!9$K(_CJ!izMjMr*VmIorbAOF zO*oTr-hUP|Jx*A*_av?_ zUmxQ7^7UmpynMr$4ll1muJ_-CxZZzPro-du@RdTJ_!IiX zpU`JIT;GTB%_1r7J&@`1_=Gck&Lf!)ub+vG^ZJ&l;DriaL|k7#ONs02XF1d1`L+K} zWKzz%3MtPHI$lEDiMX6!NqeKt-T>_Y7iXQl)N$8wX`etG+Yyg{Dsjv&k8?J0%rED; zOozw6l<`l5i`u(Gj`#=D<=kDtJ&5b$?@e4Ee_y7<)W*laece?WIB8v;=?$vSFuc= z$HC_Z;g7yv`4QL0Cs@HF6g*bJlN3B%!Sjjh<5NUjAD?2T!{bxNIFFCdkLGgWJV3$S zPg%B)AujtFduV64#Ok<_c$|*A5l@a-LK z(2!)kKhO91vk!3GLVi5Yw4PA?Ha~hhyFBl8K>QB9)cZH`%d{Zt?_-zs53<|( z@jN^Zj_30XIL_xycDdaxcDda$Lh16eRcKAUM`P3Xb*X!7=|j zIQC~(@hf&YA6kEf>Xh@Lo&C=KQhXR3`xytvd9}seuU@9Wo}qxx3a-TQjy8|}DC*=_w_p_h99#@XGxy5e~?&hF-w^CY_+FXqXx+xh&8`OkeUgMZbb z`Mknz>)8U|V7K|vH`#6ezYXyR>~dUHb~&yib~&zNb~&z7b~&y~a2(eayBt@`uT#-- zT&?VKTz&tE;%y#0E(Y0c9`pjc&4cq~Tk%V9JWfM(+OExm-oh^H>0p=jbU~iCDW&&s z3>@eAxZ*i*%u@u%I#(4hgX8t_0346g8u(!-_-OeJ`r7sf^F$QyV7Gn4^Jfpc?HhU@ zyUZVDck?;?0jgt=-OXp`BTAk)yWEc%cDWz(kO${g?Kf%rGS4}?%yY$V$Ax_k^UbUD zE^wSDad50BuXqU@&xgn0TpA7NKL`64eFPlm+l1mtcG;gIyX?;jR zA1`Hgcf2^?QS$7u%l%kmm;3Pq^5Fal{TFJA%oAakd4|~KaghYa`M;ugS@9T8CYvAg z>?&RZ$K&@B9P_mOb}&!SdlZi=zQ->6cEm3Gb_IEGeujT1s0a5;pW<=F-5(*aeQU_` zUxWPEpSa>Fa6G@Qga18B>HWK__#t=&;yW*cda%wxaO}?nIL0q4zNL6o@r~c3dff3? z=HqdT-5rn4cdml^|2d3nmtD?>D!ZHyhmZ&RbMfDs*K@@#>)HDs&Fk4`m-QU8%X&^A z57x8ACu`ZCZFX5t^169FDRx=UGP|s21@d4$%YV?=pHL?)m)KoB&Npv@diYBZws=9- zv%@ay*@HY-&ynJ>|3%w%eRK5;v&%X||GRmeE$p(+c6M232jsyzV~XD>`CD$O9+^MP zF2@yNm*YBTx925pm6!Mi9P8}(!=Ml7ZQo%Mm=Bxhi}aC)U%=F3%@D>^A?gOKv`wl|0)@o{Ey^K*>{8@*F~* zB^d9ilIKjxQ-?fnLY^Z3(w&@d%i!3zHFi1Q*1<7;i(SsQJ;iH^*THfBw(&!Gn;+jt zFSE;Wt$<^l8|-pio8TC~%`V4PVR!cl?m6u)ySqa{+k{APabi3QC@3cDuju{J#bH(aTEyT_yh>%DopOL4sh&GA2{}B z1RUdc*k%0(?6S^7$b@=cgD1Gh-k#|U#)bQ<$nN&nF2813c$IyP-R&jJNW-s_-!T zq3{TMjonT=%yS~#p= zH~X0IKK3NL>x0Xa5$^Kjg}Xd0AEG|UJgvfAp0IG2r^;^oiT8(x;CO#{!fyMC@n_%| zf5~q9iTA_f-BiCl&)~e>0pH}F*-r=HIG>Neao(PTW1f~D2)2u!QM?F_+bx0PcDKNB zTy=JLo;jv6Lg&Kk?BO4zFWh;?#Ycp@_zb)4CyuKOj`f_1JTCv4aF@T+7GgeR{uDU& z=Y-wPE1VClJ(S1JAM`N0&5zFwqTo1x#=tSY2#)b(#g7!fQoQ|#sD4`~=8q{pp?FF0 zisCiJFTk-6ZN1Iw>{C3hcme$Dl+v3AWyNcXUn?H@;h;{;Kd5+8@si>d#g7%gRy@+D z)Tww<@si>d#cPURDc;`Syv~^7NySTwR}`-)ex-P1pn08xiYFB>DPB>$rudcO?f073 z8B=^h@si>@iXSU}t#~Bbyv{+zlZuxVuP9zq{7Uim=bP6VQ+z`46~(s|KT`Zs@$miT zbw(8*SA1FVvf_t|Unt&YFR*-F#`9;N;$w;z72i_4s`$C$tM-D=b^fCF75%fVcvbN; z#cvglywH5RQN`nmkFnd~;eAVr-EJPe$Zqd@D=^-{k2bF-&MxyO*=7C$yUf3#%EJ4HD*MyM?e`5M@1Q{(u|FgH4D#T8(G57}ZyOByfZx{(v)ex4&pCIp+diOo zDS5itUHuiVzmMJ3?|c;UVEsA8iz5HUcTs;zwPAM)Vu zUz~tr|F6MuytnMGZ~Hv1mOn}R%k|B9g#B5w8uLWKal0enxZgA2m}gb-EpW_p0FK)| z1IPTgig*7h8m}DJFgWHP1K)+?eH9$HyUyMOp{)4CC#X(&KHOlJ=ff>_yT5S1RKan(b#RPt84mh`@jZ%< zDZZ?DS@A=~FBA{I)V$89;^T@Jz_AaT;Mj))#p{ZxfdP;&H_bif<}@p!m7st*~e5p!lZZ2a4AfZ~08~ zI=dAgRXnfwhT{8*pD7-CwRxRgijOFsQ+!?VJ;hHIzg4{Rv(4)tRy+xg*Q1s=<&pOT zt?ceT>gbQrO-dWPyN_}nW|#L5Np^ex@Dy#zOSA%x*TMXc1mogg74qWO6t5_LsQ9_! zp$E;k+o5<&@j-Uk&p5m6&p714`?_Uz`98E|jOvv6bL=vIf!+4MAwRp@zsaX)|CZR@ z{&l_ydGO~|cEB%l=%k%l_Oz9<0CP3zT1O zcZgl)A7_{OQ|z|?`13hAcGv&<)71Y0`!goqJ|A$t3VEoUyz5o!>wntUvOn%?8bf?GJhvyUV}A{pn$M`JE3bc}BtU zIY3;1bm%(vd6?QkSP9E1TyBnADLnTig9JhN7j{CiRym_Ca zijRO}o(wo{cNM&0yow)!B!{JY>-PYoRR;~6;a$Cf`6j2H8Ffn)w*#fyq>D!v1b*O3}H&XY^U z+a`kgF}@QV_hVG?QSje|{g_d_1djD@D!vbnb)G8T@n>mVA2FZ44)sLYW5P$-pEZu> znH2apAx|E>VIH#EDaa=RViwioUrrueAhDaDr+-vECvY`3C#Rq+#W?8Bwvp;Yre zw1ZO}ENaO_*_bo23cf@A$r#YYv-fIkIwmK5Ir$8lA_alafWeysSp z;-Q(K4_If1;uGw0e-+r}{#u4SI1e`!-&4E>j(s=>$NhDqcsLV`7vsCYah}8!9|gy8 zCBd=Ig5s-+Z!3NPj@vy3$8nu2-kqgB$o)9TF8AXwyS=_t=%wDJBngi76u_~bHN`97 znCAc-^PDJt0giQsz8vg#+`sLLcY|Y|L2%r^SUL#ZMH!0>|UM?e(BP z=$+s=-Y7Wkml4G$6fc6~b~hBSfMY!e;8@SG;^&Hoa?ShDp?H#A9!IO}@;F+DJQa5{ zWz$QQSmi!99IP#w|fAN z^XFLcD{!o{tq_b0x7!Jh`G>$U&jdKunFq)GCB-)t-v`I-9)n~4D{zc&S!zDsh~jnSL{0giReppG#-h@6-u-aJ(Df_?Y zj`^>_F;DB`U|je-vyI)33%{S+!5$Od33>4QHAQgj+cM`$Ar?DriypP-Gb3h!fI6F$Vg z$NpiF=Rmm2Qx)#=#DA3f7F%x?RP z^QX@KtZ_Up!pk%+nWvjw<|(twJO|)-{GNg1c5fB$_%W(S<{wo2fZgqv74BzM_&WQc z@G^VbpQG)%{pIq6g}Xcv;Vw^w-PNR+{^NOIf?eh*D0x;O56*|O;(Oq~0OylBIL@EYO7nTr4qkyg9qh9HD7);# z8RWq}+<<=r@<;xBP!Gn(6dzZ-sCesN2=e1~B&PTXyB#lHzed6F{IJGu`+)K5;26Kb zZs!U1d6V7E|2ogxE#X(}W#OSGsj1uS?s#;0D#Bf!9pNs|DZAY7SL|}XxBkVT&p6+D z6dwY|K8%6C4f7~dUXb~&yJ9kdANV2k zVH6zWli*lq0UZ0e0giQ6z%l*^9OKWxG5!i1_wNn6?0@(#QGaCrBkcBg!STkxv7T|o z3*eY%6&(Av1&-s|Rs2x#b8xJ)oHi2p>eUGxKXxnEA$ z<$gJbJXlZbYLFkjNAXd`li=8gg5oRSIIeZYH`(QQE9`Q-yO0OxNevw5)g?Igq3tJ| z_oo{i^TfdMJTL~1@fmQea~T}_Sq8^C_rNj!1RUcpz%jn{uQVTTC%f!_j9vDB2=d@~ zli*m-isD<~m}eIp`*sM9<2qIRQt`IG+Pn{aiVuV1b~E5O-ZjN{6t5{>SPSaJ<7iv) zJ$Abv@&2aAtnaEyIF7fX_<`bQ z;8^Fa;^Ds*%m>_VA2{ZTD}D=($IHoI5Avgzf0kVCmwk4*Uyj)2`QcLW@J6s*tiMn3 zVQ}ojxZ){r99Kc{Wp+8q3<+hJptE2_y6^D9^rLK{_Onh zNrHm#YxY&)x9sl!q3ZIqv{0b?-4^E^>~)bR^A3U*YNucSc`JETc$fX3#hQ;1;iK$1 z;luBucs_jn{2T8k-xKkd>?gu^-b3*>!s}u32sho0_nLq2I3_&KzfU?Yyyt1kvm*S) z{T`O^TlRh7Io`oF;dyrV+|Je6!V{;3_owq#_Ned*|2@hP;k)cb;h`=X*P8Ga_5NCBG7$V{iK|TJP#Cv3CnE zvkwa2VILQM$et5^%)TQ0lzl^ZoxLLboc&aIafHTmE&Ph9_y+ri@Edmb{~>eRy=6ZU@s&}oUwHB}%zwtDSl6Qly5*zgfB~;7hYi>79Qs}uNmQOe~0pxgmsJ|aBBJ|TRWy(s*Uy&}B$Hf{G%c$K{_{FdF_@4In@f06QppQ6vs$JvL3XZ{7n zO$gs*FABe8UlSfWqC7joi|jSw(SJqp7s5x_!%sKXpZnLeJSe>L-;gJTuO5@T|KEx0 zL(9J{B3Pbp7Lc%ueaEzi(;SAXVLX*nW1$37^0?AIthDSYsZd`0*Uds%qLuTy+Y z_~3sezZG8m4f5{y(q~uy)i-E)T=>~!G2s#RjPQ$VieDCf%f2o=^gk)SD*XKS$xnpevR?=f{Q<>CBJ|mfYyA&t zxkq@NeMETV|4@8Uc;U(K@K$UKAGRAZAN#^L*iVGl*jv8adzt?}x4VtE%n|wsL z`}^?|!pAv2FFeIw67K$9`=)UB_t$rXyT7Mi6~4v!PlO+^UkG=9kNj5nImbud-`Jnh zd#DdF;q77aG2xr+dEtBPYr>D&E5a|?Yr=b;qU~M@cYnvX<=Mvi-QVSn2zP&Hw@0}9 zySYQc-QU3-6Yl=5ZAQ5JJGINgqwQ4xy6`dfZQ%v>ec@~DHQ{yk3*qkXq}~d5f5$Z3 z(b%`*GgN1f@H+db@c4TvJ|ldeeO0*oyPI3W-QUsN74H5n=Am%+cP>wbkG+rTxfSmI z-emZD8prGYeq@*MW6m=oye~reCxkDv=Y=1!mxN!lZwl}HZpyzSe4V{2yzTuIe!KUF6{pG}gcUA@UyKSL{Q=Lw}s&$Aq`C=Y(H98 z-rni0_ODaRFOUxk-}@8fN#VthlCKJ{evG^#yyp|-r@~90B@caX$osID(I?DT+i~)4 z;VTcwj>hr(|s$ghQ;eu=#OgN=0#KO`R(UP_bag%8e)Dwn9}`~X->WPM?|Ve?d&1j`3sh{gT`Nc<-sejzMS}^jr;;d<`=WQ(+l$t({ouf%EzI`8V84^dh}5pXk5uFQ?yFn#_5yI5XFm$QK?bX6NS$=2g*RXz`5&SejkR z!4ib0DB7+!d!j#)&zW+vCYD!Brc%Me;?l!lfnO54BliNaMcj)G6hk)H`@-$z{)C}I zVkY+})Vq+*P4*Vj#R9c@X)gOlqL5zXMc3zq>Vd^X zVLmZAZ6A6&Pa_;U5b5Ur%0$YKZtlu-&96O8HgX@Re;r8N_NEh?4H?wnz znT7c!CYV=E3Y_MshTW7FnrZ)RvVzc6p+yg3q}j)sGTeZicBT!{VB-(QJL zdNS2(uZ6z#H!(AFvomuL;w^f6>h<(vGw(v##d-6|TrerZKt!%`xkx`10h`{6jPIDAXLVjT&^?^G~^G zm>-F`ki9XOOQas=%-7hrW}Tc{n!OVvJJ~EocCuMaW1eEd#(16NL$0A8{u* z&H6;cvUit_WcHvB?qxuHV)E`&Y5V@PNqDzMjIZ0_ntj@6G`2>w_kl8wB6{cM3+djM zU;X?KEfyxHUbnZkrYGhKL~|^YE>12^WwW$JcT#Lrzc_O;Yg}WlS>BBF)!rAI%lmY? zFqQFBPR*rfcp;y_1#^w_SD8Hn3+58;ukr5o7PD`q=cg%)f35NEJIwjjT6Eiv#A=x@g``P3Fw@{XBQg-{Re1zEzPc%#iNn zmEvceH;2N~!lR%9PAYsLA)sG^wgcVJ@QxX7dV@36Vq$V?YRMeMlZCXeW`~0Y=a8xS zxi2r7_sgzso>B{wZzd*ZW){-kDn55C<;@KZ2b!ZcJ7?bSF1qEsSYAk^m!@(8^G$J} zi7vh_UutGS;|A>+uu<#@aM8RSUhs?ZrcNW#iF1C=k1^mc*~8p_+Y@wLl6gAe-W$1~ zJHnS)ng)K9cj{^|GlR@UbbcX`nqPWoZcZCknggQQN_T!YbKkD#mpJWjP;Xz`YtY@m z2BbLJ;GKl+m3iuuX86s0%!w&v@Ed3LloIg?HlXH%if?nV?>EG*aC;BeczeTNLrdliWRAPu zDSENll(`P`*XD6Z@U=O6nT6iP!a`xvettY_KR-+tCe5>!dHdGHPdt$Ly#F3K@tV*5 z&3Pa(9Gq|)!W*6MsOh$F-aJrxslV4guHk2Tuf6tK=x)e>nO^4YK|)(QJ2_+Cn`&#D zW$f>L4W6SdJa_<0VxeI%?)Sm$5qb>rId?foeEcPUZGWPHn+@r;;)_j&Y6@%W1HJUn zv-xY>x`uaAz42nq?bY6?#X`)V5cX!yJks;QyPGAk_f3oGTzaaI7>LEZ$BVoejfLJ= znz!%NW)uAbu~1j4_aok;#OeI~JI^xi<11gdPg|xdhK-#y&jHQTNb?{yw2)3s1xscs z(86MV(p*No2wSZe4n|MO45z#hdP?Rmnj^>Eg!%?IroP!*yI`T2M>x-zgky+Ag=yEWc|S!`9M9&GbT!#^q$R{H~fivrnOP; zjic?ceM)Wq3%Q>A%ko)v!=r4NSoX#Kw6P1pEc5aPdAyBVFy?1z~bQfW+-hPNZD(AdK{wBh`kU2l_eHIUdUuPa`Wgn%@gOkOA zc@UY-<_GTGYg{#z$>vi28dKuEhUvG^yHFhP`e@E8{FN!I__)u^6AR|_VIE!BZ;jZq zsxf|QI$$S5!2o|@ZvAJ>6Ew5v9Rhp`p5aAz`FG1{bFE9I?G1sGsriL;g1&i^$lDuF ze~tUL!&K&VZp)l^U;Hh@?2WSsFt@X2dyTp6qbNacb9Q&ohP)eaCCa}+7wZGZk@#0J zKtD3oFlc*Y?YF>{-iTDYvxUj5IfI)Knj0$mZr(u1eZT8P_ckIC|Fq5f@&H_bUw!H2 zMlfreTtP!0&o7v72b!mIp%?wHK5iG`BG&)H0A2&{@$Sbb3HCU0j>ncW*Z)cLq{2L5 z2{k?rC-bJ5c>ZZZ?Jo0PS zr$d~xK~75MolyMq2;HZ8M)zC&bjA?@wC>vs>(`G6vx>j%ZJuqIBcxv*AqZye-6O;V z@Nv=aA0fufEw`O-{r+)b-VOAdMQ;w<+2~IEG(lmr`MywBvA2)DmH+?s@0ZNaOF!8p zL*#kVukp{txDfg&1-BFmwLK9ES>s=u^H&V#Yq555Lo_FdzHx zqSwF6d~K!GqWRz-D-Hd;`T1TO!9TX{t+W5E@OFp9;P}@OLhkb`=I520y}tTY+HTCx zNME?^yU&ZJe>Re;4T5j@_0`V6>{sq}PCsLQF0R@3_YY|Moi30+lZHah(`Nrz8xV1) z{Ce3J_j>pFM@-@NYdM#GhhP6Sk=MP>ef}l$`&sU53|;-F&Gc^UKQzBbVIyV#-0L&^ zb15#j?BA|=eY5#<6rmj-=bt;Y^T+-wnR~sPKhtLa$!*(hU44V<@9efqRO8Q?&+_&E E7ufaIHvj+t literal 0 HcmV?d00001 diff --git a/example/android/third_party/blst/i686/libblst.a b/example/android/third_party/blst/i686/libblst.a new file mode 100644 index 0000000000000000000000000000000000000000..666954b2d24c87eda30fdfa60d9df15530f70b81 GIT binary patch literal 337346 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

+zS^PO% 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

rFT)t zB7F|nl0Na*ntne%nv#B&B%S_6#l!1-e_$Jw8+m`A=sYM^q(bT1jz4FsU%Oc<`Nx+F+-gxBY186Q7mIh6oW7CGGv(`b;?3Tb9+npAC}=3??5>L_)eFjvYlJgYR?W&V_IxO%tJs%0#m51)_e1Gh#UYqkgebFDOXhEt%zIN< z&-`)(R7W`!hvAY5w_<(h6WE!G4N$$|&8&0hZ)hA>XQ5Jv-DMw;5M&UP1jT2#z~~^O z0ZA?z{uzvS&a8d6`Rg2Q@{oI>L`R`L0p}$+Wm_l+jWa^!l3!EmEv75R5fGO#O3I;L z0CCiGb^dF-%ZUT3>*S8E0yBXRcoZec>-7)g8;{TGewGGwy7aF^b$R`>+Mljm&tK%P z1`En0vN1(#H~h8EmfpD+9G=%4E;c_w-Mq^Bi^zimU`7M%R`e!`g%uUVuVez5tizcD zMkPnB4xyALw$pE9wr$~Gd|rmI`bin3w~K){fje6AB@Uqo20pehl}YEwsrW8{?^Mus z4BXX4frpSl!5jTFe+nps+8jUx(%LuJTja)sLZgF>Gv3KO(&t&>zb`5Ya(SMFF7E+eye<1 zKZZP`U8y`_+q}N6;7O*Q#h?aOmXM98cWE>1H!+B4y6W&X`~Rxg=u6K zhlGUrJf)UbK49`lkGRYc3koMzLO^b3Xphw5VedB5JTgQ2J4!>cN9QM*#*JdhH3o`A z>d69MU93cD3yTp3rYKQR+7nZfhX|34sjlu@uu+RrRuE78n(P^;>x!o&qvRCj9#$nd zC6w1h@FF(W0oKWaRDqdrFJ(K#QyayL57puExrL0+d;Dk!qCZ!Dy#873&pM$0k|KY_ zxU8eY@Q=e4GrY>r6!Fv#d!yF`0)EzlL~qIVn(g%5xR{he!Hf5!t|lu_A&pHXDgH#L z!XN;dx#Obx)2rKaxDW+<4s0?MT;2kqcIwa~PB)m{z9WQe$PlltBXvGW>K3)Ohikm zJ5djykd5Thy~5i$D8@DfhsO%EwdYxjAn>EnG<#Px!z2fWo6wY`J22BuL&46%%wv0@ zkW~2cwT!yCz-)340`ORGQ*q^F@xAQ6RrxK{Nl#5 zSwviDRCQ8{eP%iQ<7i~&&RYx1!pjRelxk!37qW)DvbNbq&bgaBapPf#e6)B-iycCX zKV3CEwOz}kM}*H+x$=H)eW4pb=(+uk_pabJSql=O-RXQ(>8jtOBu1I!9A70Og>A_jtg@BoDK_gfC zbwP~@DJ!$v*vjaYXXj9Q7fY1)Eli;5@VO=S=GOI|#BWjs*6r~JhI z4=f!1_?1n@Lmiu%K6PbRB|^nIZtS|UsjB>V`Mw7}zVOj6Um34{=<~Ghcq3y)L}&7V5Mnq3)z0^@l1BI1{vyA{`D8tnQ{qAg;Dp$2_-O9ASzyGr(g`e7sv!a0+E;v^ z#nwMT8~%X0gZWB60=sEO=9zO=TOeRQmC6~ZXR7ueS(7Nii@+XonI@N-xdK&%oWTcy zcQ~1cXJ$^n((~`QFH7Ykla0JuR+x(im>>IkNq;fY&*}7!uIU6>(${23ALLSVAJbP< zqz@9(cQV^wk@Ov=pH%733L%Bpl!JU#2=M#P&%OO9q|Q?Ob!6%HoS*b?mieI-C0Cj` zGc(xt1G%81(G|E`qhRR5_K6GUFVL_chAaCX@3}M6^t43q}@-ih2_3Kt9oJF=i)K7q%M`N(laG>N}1yk49_ zo4Jn|SI8g$OeP=|sjTv&vJc{za+HQHq8>zp=~txK@8Cp~6IBj5AH<|`x|EYrPQP*n zlryB9ta3(`Gp3vg^g!Gd(!t=b-#pu?fse^X-2-3hf7J4T_`@Q zK#9(np9Ls!8S_U0N<_x|v0%k@DFmE=+fQ3##dQP0S`@wFx*@om;AY`&hC3>3aUH)v z=u7l*+up4UJk%YOx)<){e;qg?SrJqHWR-5r>4VJ&*65* z`W7XDVcTWMb-@qspSd1$;gQ)D@%pv9eoMU{nJW*%y7OnsPmaY{Er&d9Meuh&AM>G& zD0I*FgSCAuWw4?Y&>DfRMnCG?q`(ls%?gYF+^WDRz!3$;0kTqp6;~$#ItuIpcv`@8 z3dsOtwFE2D{R*p6*nq-n6-E}e)9fxL`L>T0hEGTU)}$j)*g_qF!dQI>DV+-CQJD0t z+SnR+uzx|Y&afX`&P=V^hm^qocGIL4J8TazQ|M1Jmg;&oW9STHoI0EVTa*3o#LiGQ z@O7hR>KA>Wi1S}g9Y`Il)~V6x{4=ku-?%as2Nt=#5%um}YYmC<(R{o?II`^a=wEb&r9pjs;rcQBR(UJuBHfKcDBsA>&^wNPwijHBL*NIs?pK@?2GO=?skidt=GJ|{js_ny!NCSD0+^RSGE|}W0hha z3{`VzsN!WU#`RdApn(dMs9e)xTpuR|KUl4j3tEipyVSl#?9NSrr*LVCa@GplV;Mua zSZYze%2`Xsmjw@T^-f=7RhFnB_f64vRQrwzd6jb3P6*ZA<*PO`A>9(xA-*-};9KRc z3x|X(`{m#p0cLA^1_BYy?{qd+MJ4RoxKNc<0~Uy+4kWIzN;zx0bRgxT^zyCjk3l;9 z+E=+Kz4BGg+9B<$T$En0U@s6h2Vpe=;-}r||2elCb35GGn`StFyGO|(+=M<0&9^ax=qabh z;nyyHKKp-mSL<^VT>J9auR=I=120Un0w_T>uGDd@5*=JD#09&0m=D2wh1a{_#cLU8 zGC7MNY9sy&KVt^DLURb8@Yt2J?P*;6Beqi*t0pU@a3`E^l8TKDEbIx#0hzL{gxCvh#~tP=sT)?$CU4Y z@^yRQg!ZL*8=6X1`Kq1=J|dNTqzq<-!2JO)6iu8hj&g zP>o&U>AL7XDo|7fit8x)K}8)8NMQ6L6)33!b?HDu+Bd6wQ_8m=4!CSoJW&Zc(3lD| zpaKo)C?>RT37UzOpnONQuR$s+LHUj;-wEv-(Y{gTTOzeAYn)OE+Bd0uL&`TIm5$PD z-xOT%m=9eg&yNNWk8yNrZ`>je!xZ<>E#bL{Xew=~m&PM~T+YFQUNvsi#&**1Az@|J zOXs3cML9rl&giGoes7Y%XFiYKa|Dgdj+Jok_=)6(i#W~$71FhiIG_G8IuQ=NBi|x1 z{)rw~Aa1DqN771{8#0Mm3Y%kXa2(!mE2iOdp;WYQ4s%| zCVuA$S4Mi)YCJaa&EAIg(92NFJOgl>7Mlv1+YIL*w)m>#Mj)9bxf#w5Mbt9|R!*KH zJ&`s*ZWba{fw>N`p@^>76m8EW+nwc4DemB*8{vi{&h0@YOkQZjDGiPaYU6;zXq+Yq z&vE1gHz7E46|Q1!cjn~1kK9!1_;q2ngrzWiqnS&X@HxIiikUA_=yxcQg=Jq3bto#! z6nE}9$U_5l(94Q7JaxW=%~)ht!R;O(VZ&V`Ap#Kq7)#`| zNi0er4hlvQ?5qNiB+vyw#*dVU^*(Vp%qUbGpaTjO2k4MO#Q~Zns*MmpM~l(1VswHi z%oGS%!tBE}v>SqpQ#yvpD-$uCz5_R>*|(C4J-|Lv&pLno2x(FFI>FC?vF%%vXe5P? z3r=BL_~!lc%>da`zIj-}WI1XJ{yo9RX1n;m2wp-pIiK!vEJ7hKxc*Chla?@1+^VSX zFAAQ-Vur#$EqLmUE`EdH1DCq^)q-cqxsr!^!N&|2uMwP=$0+{_!9zH^RMewl?x%f?jm*5H_72hJkLs1vMUhwGEF8*hNC$DkwcMG1n*2Ui@ z_`p0De}mxJn2Vo9x5VbL>scScW%x`-fw&JN?tCnDVTj-qK17CZfsUfD5y5?+he5>kLa+D!(7b)5 zH=II5uoiLcw_m{PU?J%Z4=6Z9cu2vpk!T@Mab1+~sG`G4qAo;+;VDUYLeXI-(Vf3y zb&4dQA_FQ`OG-f5>0#>{(7q9cGCj5E2#&4fXHn&mq60Lp(0+|36*{2NE`<(hR6eR$ zoz=u;5?m@js0*S1O}bBBF#W1Uw4K>!$da8}MBckfO5?aJwhq zH{F1*jIgkjsfB?5-4k%78}JDUNMTzD*yRb><_7$Z1f&!$1f1^)_#QXlDhWvOTnPA1 zPrw;&z)wg(%I!kHmmoylQa{DR*3?ZR5|9ENLtKc`aopMK2{_~ioQ;4Mw!@LD`dxuP z?hJUs_9ARPh>QUe-AYf8Pb0_=y<-98mt^EyxOC3_xN@$}wVh}5xt>U>5sA7rEj=m2 z#zPj4-7{mi6Lr7EH5=$OxJvRIj_$H#EbkZ(LOv`b3G~1E$$a{M%=EEQ%AO|iA20&l z%l?rO42KYNdXm-FlhXz_Ua-u`_;ez4b(}f5h%f0#xpMk1DHbmFr83W5%vV|J#24$b zW<#-9$0kP9m<%Rr{8)!>K4ttE012x_mv9lua2Jud6#kc7KYE5_t}Xoymz1tcg2deo zTps@<*ZY5pze7N7O+h}wm4ljazc~OLe*FHsl%0T&FkDu_dx3ME`;JkCKM9<-F0CE| z4)+@q%Kc^uss?^z^fMH^gZ^wB(3$o(Bc3o(9R_|}7n75xfSDfG-0w)jpWk;W_nRpd z{#p9$6zJ>??s_r}>Hp$4+2QwDbGQT7~VL$bs6)$$1HO z6~XtL;_K6!H@}m&TFI8MdH5hdC!#%S9SC`I6*gdcOjXCG_u}-7_Yz==QHA6_kk8CA zoy`q$I2B&iDkp`RS1&>oC9zk1qC*sU)q!W-jDh#Pcb2+2;IY<`AIW?Tn{d=t9{~9+ zK4^=!Ue^5L-edT^r?*-fAiu?DLoc_(;*0z)pWbs4I)LBa-bUr=?(|vL+pGx1yM69d zt@+z_`}Adb_Piw6d!?#X-I%4$sqeWHTv|rBGYr$gXEpH$G%QN(SWw&K<*}j`RI^>7 z--EC773iV+km)=Xmf!D-k_iK1pRMrh&e70a)HZS z;8GWuMZ=m1&#p7=a%}2o7;VEh!Gd~p$pvS0{`X$_qf16xWLz4z;uC>3w+rH z{>BA9>jH~i;NvcEy$f9J0&`v9eJ=1W7kGyYRJwrQ1!lOwnH{cmP1Yz8+E6+e)MUlN(}_3#@m6)h@8o1-f0}b1v{17x;t=#9d&%3w+oG-tPi+ zE^q|^tv$#xHcWK+E{El~IJ)K(5{INIB#uB+NE~pANK+T>z%J+#?v|UaUC?D+1PW1m z{q78Ol9J%y>nBxs6&{DLWPx!X%UyWGBF+Y zg^4=QzhLF7&6h-y*Yjas5>=E+>4VJr<{81hAZ;j*L1~O&bCiMTYT-}J z-8|D01(pawSaa)M3pJh2SKmA{dXddDQ(lA#_EjQ1vodTYc$~tpT6pfF(u$Qq53DNR zXJMNXjB(|oR*!+@piudU)go`#mp^K?R3T_BfJ8OI)ZvEfSO{N5%C}pwFn|UEwE*S< zXsJWs#_|(ZECNcjJZHrk0L&vW7eEt%MgYwKdZI`xj?`oGKxt#lO#l`WXa=yDKpa4l zKpTK11Qr5V%8V^WTFc5u$|t;cTjBv+*{s@9Qj<#`Cx}p8_sh=J79VK@LF-m~SX;_S z<91fimftV?Sz7|65d>|8+Sl4*kj5>prZPL+FWX#ODoG{?axa=(?RjmfBAMG?L0&_$ zY=3R3CYd0}>qwT}uq`2y34+{DvTTiQ36o3^#(lCawImY+c@xR9Wwxb`WP%{y z1u`Z$O<*}(yjp>Q+;CR?86ND(27CVsoN2G8-PoGF+30z1X2dXOBXF|>rb!h*_owxwWl*@Y(&IjHoqnK40uKzW+;C&7y#s$$nYkryikCY_ndDn#SbA1FqZ$gLU zMC2Ojr$9LCkd=M7H^y~$mBoAz7IlH(ZX;gH>@ZZ+4K<($pGku74E`>De-*{2B~vAXtlh{Mcw{I z%l(U1`0q?1HUFLLpZ+`99sPH*_xbN+CjED^Z~5EKX8T;q*5cfSGWO6eyXR3NeY5d1R58DZP?~`&hw$Hh)7dGB?vepTuxav+|Sdm0y z>)S$##&YaXfDdkKD~#`QmtGmD&Nh=$z@mBJNcX2WBw!^JtYTrp1n1=JsP*MQPn;c@ zM%WQ^Ty7WV{ZQ@Z&#-({8OJSUOA!>#@`B_1#aB5;;Iv291CQKPa`eUrQLvKnH=-u4^x1r*ap#c86vL_ugU2a}O1j?*h%&3B8%I9M5LRxa z+hhI)akEU?adKhl^#~AW?IM8l$!E_`TJwEa0mAzqQFBl3*-L^Iy_YGT#aa?zGA#Td zpL#DNuL6dA>b;Du2pICI_p%`cLq7FhmQ^t1Q}1P?3Wj{@y=+Y2z7+CFbV8xhOMsT3 zZGuMMfcBNOcB7B%#=s%?=AM})=3RE$ir!!s)C%HBji)r;rSX1^r!+pG@qUdD0T%%| z00IPLZ!il=CR>_0UB*dQNl&}Iu?v~BZ(&j=XNP*K>{bI6Z2sn^vbf`eX$qQMDi}KY z9wD0N!MauE8G8QeaaGeFLwE?>4)c_=bDNOrv*vuC>0qS~4O2W*Qu>q}=ZQGXfqRob z_FX|^n}=T2M2)Q(`r%?Qa1vrI#LX+z;KUT>E+x1cTk<5+jCiz9dG9ZC?4t1_>SjcZ zMM5YfN;Bm015H}8QeiM(NCra$6~5`>zlgrc7@=@Bhnr9isxToQ1O$g+Rb=Z+%%{>U z|Ig^F+=x?D$68;-4)p6$HqKbB!SEJ@%8blV8tZ?c#1P!E5Pn)XEGED|GA=6p6$r;g zn;cDFcU-i|#2|Ef$3;7(Lq+i!m0f#45k8v);nl~*(Tj|WQ+3{6igk?dcyZun7}~At z%Ixpzu|0?s=Nm|grn%NAemX)rBdyfBKNSJ?I<~CK$n1DW=B;{U?)@6NnfdVeF{}-M zZ_6lgxcF=UFbISIga||cU>Jtr0}v$uZv4G1S)*_wRb=SRqJqq)tWKZ5v&7$7=I;#n zI}LwlrN6Vv-&yVN4Ea05{?1x|XPv(@;_qzmch2>9Hu^iG{?2*+&L)3nv%fR$?`-pT zF7$UU_ID=zolE?kOZ}b8{GDC?&TfC_a)0Lv|J^C1hAa9eB-j)OX^>#`Dy(t=HP}=#`cJ{;_vf=@`fislFJgSdVYif zW-IzaN%vpFHWev_Q0&GMJ?v9fb=dhfj(%WFp{&H%yyELJHdFFXKQ>d+UpO}NYbUfy zY3NI_5(P;VurAqb1pEB(qKlQXwV2CZl zDc_&oDPnj0MI8Oassai!#DWBSZv;PDmzf)+I996vVhF7Cs;tRnz_E(2p? z_yxlpl%+<@4O=S_nl`@jN37N=z)cG7s7Cl^!Vg>XLx_h)105gi#hwv}kO`q|%vgQW@kFOXifAry-o0R<;(Vm6)fIET~6m-udM=kiqj2IL^E46xWhB!J>QVYzU9Q zIeAIc`kO$o?_b!JL^GrL*c=rdP~C?D-RvMj!f^_Ya~T>_>5|-fWGg1Tsbu_HjA)zm z0%*`UFN-yId=~6&fi}UpZ453`qUwrSCp!V6W?r=8?A^!?!6!kWnDBn$KkrmM%jG%N>PiEuJUwlL2ML%W5xB_C235l`vy{IvC**|6< zR7GIst5lbyeFpuJ_8D|WWuHM$RQ4HkL+puAeXuzkRvnP`nMW-2KH6ub>nZyT`kk`R zpwlV)40;^xGt%9ZeFl9^*=Odv_L=#veFj}@nb>F0zi6M4&PDqS0A-&6pzJdMlzj$( zvd>6wQudkO(v|Y&8BagTn`b^>Zkrs+N$qNeFS z9J8kBJ{-iR={_9Qrs+N$=E!TJFq>zmVbix%3HQj-$Nf)Yl5(Ao+P)~{g^9{riIXmq zl#1TBiVM7-bl~CwAJDkCz=t$0F7T|z#RWd9adCl&0os?h<3 zj%k$24tysxnpJ2CD;^a}g$2HbM#mHy(&&UjBN{D1=@2-oQA43|pfUpt0Y{ClPJ)06 z8y|U*k}v=fiRVATn}LM$uFnZOj{lo@l|c&s2&^!%=)J$)>WMs?6e`6=!;na9Ht0c&js z=h`96we|e_`{ZQ^VD74LY^>tQoLhUY&wB>K>ez*I6Bl|~4TLuLI4%E%7x(6)0kDN+ zCzCCj3}ecz&f}~5Gd`6b1`Cv685eKF;SP;=;_0_%XLi5EYAHFHo7w$F(Sd9B1bdqh zp&*&B`tV%oRX{T<3B3;x))??r`P1fGF$6!E`Q^-D@0*cu=9L-UAIZFe8Ri=h$b7^q zt=VyMhY{@kYp@@#heQzE9D-jp(?%G8d(4-e2acYfG{?uW`K<6&_aDF77i$twcE`u> z#uuCM(m=5HHb9v@hWXZ@k!BL;4B{B+q{758(p?G@$4I9XCXSKrSC}|PdO%^~80jH} ziDRU*3KPdjk19+YBR!@tag6kY!o)GsCG4LStHm+W(zSIDH_{>HCytSpj*TO;BpT_c z@)HN;Q%lmhBbiNK)nlAajRfPW{5DsC0b$c!q#G36&% z#jS!FnF-~mMXq2Kw+d!tMDQ9GdTm*eXv8Q4>tE%?&U4D;3uN!&Jr-7Z zefDH76zqK?3@}{cc|r264|w{*Ji7@dDxB|x?FB2tphR)v6U!YO-9Z5(U6TX_3mqKS zLFu~iaA%5bK1bhwX{;I$7RVp&6coNgLSB_szN2*J=sm;m6&%MKmG6Z16%@XLUvRjy zgk^%SA!YL(?qtj%?Hf_PQE~F8It9hIapjv-zFlH?G~JcDuBj(r&+Y2edn+-K=&;wL7NW3GJ$?L;6yMU=HoFvW|W> z^UTc5nHk;h%bdaR{1cGuJL3GsDk2>0YW>sQ=Q%mHZbPwnXbwkYJC43Z9c&YA%U`g%61Fr47^dJ!;0-j0yX`2gJyNmqu`B)^;^F#Iq*l`}`0; z_-nx5T>LfSFN(i;_-n#nGydZEYs23{{4MrcnW4smPhqo$jKZ&CR{_Yc0t~nSIaVlH z7a-3HWy}T0wL&RD)e2y^0Gm)K5f_NMK->kAF3{xyDHrH>fdLm7a)GQ1jJm*>3rx5G z*;wVr1<1%MKLY&rORCa4Ia=h^V6`8a`wfdm9f&}Xf(HI?GJDJ7QP>~sugGOpV1sb9QUqRt3xRJ^#-%;%=D0~Gs zQe(<@Li-8|U%^oc(voXj(I+T;1xF<)-v}L~D=2)4=S5ZFURTJJ{4vf8jwVB9(Oz0u zc1LK?oM~vZ_2t9yhE+MS30q?qJe-aHsDu*_5iEG{{|hIIG;+3dbh5SpC8$>=3|t`O z0udL8x?i*C@n z*!ybJ$fu=<5}P)bz=2Kd>JWZD%4OLKBsfZntZxG0s;t?MN`ret90abnnnQ~4362`> zZY49NLq*+C1B&qJBnYp*Dm(pdrS0V>%mb$m@TkBE92G#qW%yH1Hv?#j;)ic;OP-pz z^tv$OW(f85qvwI}LF;`9hWX3jSEo;AxcroP9?1+()||?{aCzU4gMBxmRV-~*>A(h$ zQoG?s^QGJ`xxeFmT^Ip^2Ch2-oKkRzaKC~vi|l>hfP$lhhZKz2Wbga33QiIpRWPQM zz3&?nIL#^~I-yY3J5e!=!fc>XwZB82@20PqMW2INlwm(WlTOgUrDlMYSrnrV;C@AC z?mnQ*q8NJs4}s2F6|?9E#4NhKG;_AB=VRJPRJ4P`l#L9&GUUYh$iFLV(iI+}l0{A! zUU@6h?0>*q{Bg6xcOieu{3{M7EE+y>T@2atI-l6HE}=c^V}`cPK9o0EHHMuBhmeCy zv4=!^-kSG>J&Wg{&p3A?2);IPsA`Y166=|ITQD>_bK(M{mKx8wUR;zREJ%SQ`ykgo zb{;#Ry8Y>$3?*|C10 z<%EXZ{vPJ?phDyLC7QRU22PLpz)l@nJ^n{pN^XR&gU%2}eErOH{RoG#^b zD`&ZKR*17YMF;^D-Qh&CpBq1-NJq!PU+|5bR~(k#Xmn zL9Rh|zX`9LS7DhOCZw~@jlVcQdGxc&s&7cNob&NCFIq`#M*z^7t_zWZo&@U=fH;6C zfh2%9fi3_^S!H2PU_nAI)J%|8^Aw1%Q+*fLOmYX4;=g6+{SG|x2Hp+wP`UYxv-o|I zQ*a-{DDK-L>on7r3UPW!@QYV}`OBD{A`cmNRsT_y|(MM}`4$G~@YiLwY_ zgUnC?@VF2Tvvoa9K7AU%e)1`)!qs0L1ti?cb9AqTW4k|HpT*j1FLDh-?}xy%_hZKa zHbdQd7!F-2Fx+DrpV01$+C8n^bK?4LrIX2(WzMwr+&_NI+wfY;Ewue8f}-SwwjUG1 z3t3?VCL}nl(`=};O%OunufPkJ{5f`I464Uac}vlOF4?8Qb^pAQmsiIOTj_B{ z^G7$fBhFWF5g~Z(53LPS8GVm;*I;IeI~lPp3`f&$5Y=s*m7#d=O;R$0|42dF4+H1H2Yt8pDNfnZ#lq~l2})8Mqt{_@bc7G zvG?We2(%z z49wlh2a*Aj0}{YW3#A80djT-K#MORN3H~dEdVUUcoPE0wx0PV!39I&fYmlggrUy%W z?j(!_p`Lf)t14_-SdOlOsnT)`&nOL^8yfvr;f)kB5IXv&ZisDe2!!noAP2|sDBHiN zpp1#kg+qjy+vH<6%kU|yf82TH2u9}J$j649?KAPr8S>{fr)qihUtM1Z_P(C_8rb}r z>#Iiv_0-qLzdl`kJu?1V>g)B~Czv_5LLP%Fx`iGiQxqf9y1G)m5loIj=(p}WoVJgH zE3j$`&da~N(4KHUq{vX`X5+6FBf$$8wE%L1;tOq5NM2~Bl5r6wWcRefJX=2E-OfaT z618B@lFL73$m7+YGUQzy%IsX>;h?GYk?)srbmeM&5?6I)4u6{8I0Sh6Cwi0*g2HmI zDJ-RR1h#b~D`pbo>X0(ELIb900H2En47eXKwOf=Kf_(s3eU?@P05%56`ja^C5Rs(i z$Hb18%rPJ8wfUw1pFe1hJ4GfMzV3fzd>>~0x;@L3FK<|&}nh?s(* zO1qWFcZr!lRE8}vjb_dbdg^D~8Egf@HOI{ZxZN3>0&zutNy#6aw3dYfSKv|_ z1ghU%`h4)~xjDa)UDbc^h=q08eKp7Tjn|Bqo`JNPTYnT=nGBo^7|%RYDkLMbzoh;| z&5`;8W(*$x~RzC{b_WE7$uQW#xMKvCIc93vm{V>8#T!9ti zIoq)%s0`)w)r`y;#=g_)(v!$#Rq1XKbJ%GV9DKTT-%-mKHgop!8Mzl`%v=$kYaWaR z``(NS!I#{D6oOj~Hw?E5ZY|tOxOKKNQenyvmxBtCn|QMe9-J7ILr<)JybS!Ws`^bN zB9GF58o{GtXs9^Wv!!V;w(HTVR^5V$#wLTz;SHN0$ruHs3mlX}4V#bdd;W@saOrun z0CLli;l}kp2=={#amd2vK88WDp_V_49+8Fa^VJ<&pJyBYyud4j5Gug-bTVV5rw&?Z z%ba;+&K}kqcK4wzce5hVGWCy_=7L|}KIbt--e(@UqB6YiNX?$o6ZMawS<31kHAfIh z=|twoC0EvkYaXeu<1)Ih{x>y0LcI0DEWyFkrTbp6zc?fJ{EX5A=F8^8$bBFh?CVC} zFoS)rlye$(AKeG1_CGZDtFDKs@v$0AEAJ~UG}ZYt>5T6B{=F<1dPuGLvcAeVaig>2 zV@e>kN6@P45CD5QS&cdb-qE?y`9~Fo7nHGE#v$V(h0FOU;GAP;QOB=<)mE6NOenSp z##d|V;;0HdpoOz3{7}mc!#vu7IO-CReClly0}Nb?JtuYM!Ey&o9YJ{;Oc>M6v$U53 zn+vQ8mBw9amDnr_QO1_0X&y<)DFNVR<_UyG2WR^V#Eoi3`S$WXh@;I6gv*OAF*x-! zIE$sOAFtV0KaMnNafl6Oc92=r`lmpC3WPBJ>OkB;;u#RxheP;_fbCc|L|={mI$A%1 z1lemE;BlAosLFe=8_k8sfbyu!dn|`XBRuX=9=^OsH$0+9cr!fek0asZNVE%o^FSPA zXq37>2M-F0W%z4?$B^;}gKX-oeJMW}GBpg0Dbkh8B`d0&wNB+v(pZ>)U z-_-XT2Xj}e*_&5{mxC4nt()-!E(6@f_yHS$mjO23yezzwJ14EW zFu)}y9L(s0U#Cz*^ufU$r3h9V9K-=#a4YK47aYu$qU@32;6!O~@I2`aDBfH&a3DDN zSSfhCk#(-aMZtX#rxT^{4+RGwW%zjr-(*4cS5Y+w2S-Vc2k%3=!Fxt82hwKasW8+z zBpDfhh4YmwWUfLPfPoC^D|=xFbWgHpzMpus3BDUOB7T$COCK)s6EXXocu?&nGs~Me z$%HfZN#64X1;rIMkcX5XnPba}2Jda*6uwg1*=>{_%X)b|W}QkhGaNxjZbZr+zb@s6 zhn2uEcsFfWck;4!_pLpzrlI8W>ydY^{^j%Lno2~>bdgX=TSSc2{@=>&CAbo<1iRz>=q!LsO zbcvH(O@wr7E!~QmizXRpR5#6%# z-21tc8(Z65n{(lb1?O@cBQ4K$ho}Y`!u}N{ghO~dL3BgRQlp`xZ$w6XC{da7B`|2Q zswfS3(f0c|roow=WmAsNPdi^k{1@Htq4^UhBa80T&^O6o-Bhz?$BoYM`KsX(5sv0$ z+=Abe%8yS-8hk}&o@e%tfar{k&ObqyfF-H$E*i9-xbqL{%M32`KhBD9<3uFzU8&>s zEE5&;_(kjI3Mc^6)Q>7}vzN0uk|O0L!r_&dgTudr?y0Vgs6;$) zV6`|(*y7jxjrFIQ;bi^eIKm%0Z~iQJ`*yqGHrb$k^^iQ;TXA((Zso4HdK50iz|~`L zqi`qS!cDjSg`MJz~sf3_$z*E zl=-u|jo;+~AEz7f%xU9GUo+2}xxU?ybYZJH-2I+><^j+;@`!BdNbh1UoIihr+eMKk z4#)RAliAtmVQ!Z9JfcYN;tL{p?i?~HJ4

calUdhpekLM{e%h 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%0Dd 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/build.sh b/example/android/third_party/libsodium/build.sh new file mode 100644 index 00000000..4eca044c --- /dev/null +++ b/example/android/third_party/libsodium/build.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +rm -rf libsodium-1.0.18 libsodium-1.0.18.tar.gz + +export ANDROID_NDK_ROOT=../../../../android-ndk-r25b +export NDK_PLATFORM="android-32" +export OPENSSL_DIR=../crypto +export LIBSODIUM_FULL_BUILD=1 +export CC= +export CXX= + +wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz +tar -xvf libsodium-1.0.18.tar.gz + +cd libsodium-1.0.18 +#./autogen.sh -s + +./dist-build/android-x86.sh +cp -R libsodium-android-i686 .. + +./dist-build/android-x86_64.sh +cp -R libsodium-android-westmere .. + +./dist-build/android-armv7-a.sh +cp -R libsodium-android-armv7-a .. + +./dist-build/android-armv8-a.sh +cp -R libsodium-android-armv8-a .. + +#./dist-build/android-aar.sh + diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium.h new file mode 100644 index 00000000..295f911c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium.h @@ -0,0 +1,69 @@ + +#ifndef sodium_H +#define sodium_H + +#include "sodium/version.h" + +#include "sodium/core.h" +#include "sodium/crypto_aead_aes256gcm.h" +#include "sodium/crypto_aead_chacha20poly1305.h" +#include "sodium/crypto_aead_xchacha20poly1305.h" +#include "sodium/crypto_auth.h" +#include "sodium/crypto_auth_hmacsha256.h" +#include "sodium/crypto_auth_hmacsha512.h" +#include "sodium/crypto_auth_hmacsha512256.h" +#include "sodium/crypto_box.h" +#include "sodium/crypto_box_curve25519xsalsa20poly1305.h" +#include "sodium/crypto_core_hsalsa20.h" +#include "sodium/crypto_core_hchacha20.h" +#include "sodium/crypto_core_salsa20.h" +#include "sodium/crypto_core_salsa2012.h" +#include "sodium/crypto_core_salsa208.h" +#include "sodium/crypto_generichash.h" +#include "sodium/crypto_generichash_blake2b.h" +#include "sodium/crypto_hash.h" +#include "sodium/crypto_hash_sha256.h" +#include "sodium/crypto_hash_sha512.h" +#include "sodium/crypto_kdf.h" +#include "sodium/crypto_kdf_blake2b.h" +#include "sodium/crypto_kx.h" +#include "sodium/crypto_onetimeauth.h" +#include "sodium/crypto_onetimeauth_poly1305.h" +#include "sodium/crypto_pwhash.h" +#include "sodium/crypto_pwhash_argon2i.h" +#include "sodium/crypto_scalarmult.h" +#include "sodium/crypto_scalarmult_curve25519.h" +#include "sodium/crypto_secretbox.h" +#include "sodium/crypto_secretbox_xsalsa20poly1305.h" +#include "sodium/crypto_secretstream_xchacha20poly1305.h" +#include "sodium/crypto_shorthash.h" +#include "sodium/crypto_shorthash_siphash24.h" +#include "sodium/crypto_sign.h" +#include "sodium/crypto_sign_ed25519.h" +#include "sodium/crypto_stream.h" +#include "sodium/crypto_stream_chacha20.h" +#include "sodium/crypto_stream_salsa20.h" +#include "sodium/crypto_stream_xsalsa20.h" +#include "sodium/crypto_verify_16.h" +#include "sodium/crypto_verify_32.h" +#include "sodium/crypto_verify_64.h" +#include "sodium/randombytes.h" +#include "sodium/randombytes_internal_random.h" +#include "sodium/randombytes_sysrandom.h" +#include "sodium/runtime.h" +#include "sodium/utils.h" + +#ifndef SODIUM_LIBRARY_MINIMAL +# include "sodium/crypto_box_curve25519xchacha20poly1305.h" +# include "sodium/crypto_core_ed25519.h" +# include "sodium/crypto_core_ristretto255.h" +# include "sodium/crypto_scalarmult_ed25519.h" +# include "sodium/crypto_scalarmult_ristretto255.h" +# include "sodium/crypto_secretbox_xchacha20poly1305.h" +# include "sodium/crypto_pwhash_scryptsalsa208sha256.h" +# include "sodium/crypto_stream_salsa2012.h" +# include "sodium/crypto_stream_salsa208.h" +# include "sodium/crypto_stream_xchacha20.h" +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/core.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/core.h new file mode 100644 index 00000000..dd088d2c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/core.h @@ -0,0 +1,28 @@ + +#ifndef sodium_core_H +#define sodium_core_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int sodium_init(void) + __attribute__ ((warn_unused_result)); + +/* ---- */ + +SODIUM_EXPORT +int sodium_set_misuse_handler(void (*handler)(void)); + +SODIUM_EXPORT +void sodium_misuse(void) + __attribute__ ((noreturn)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_aes256gcm.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_aes256gcm.h new file mode 100644 index 00000000..9baeb3f1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_aes256gcm.h @@ -0,0 +1,179 @@ +#ifndef crypto_aead_aes256gcm_H +#define crypto_aead_aes256gcm_H + +/* + * WARNING: Despite being the most popular AEAD construction due to its + * use in TLS, safely using AES-GCM in a different context is tricky. + * + * No more than ~ 350 GB of input data should be encrypted with a given key. + * This is for ~ 16 KB messages -- Actual figures vary according to + * message sizes. + * + * In addition, nonces are short and repeated nonces would totally destroy + * the security of this scheme. + * + * Nonces should thus come from atomic counters, which can be difficult to + * set up in a distributed environment. + * + * Unless you absolutely need AES-GCM, use crypto_aead_xchacha20poly1305_ietf_*() + * instead. It doesn't have any of these limitations. + * Or, if you don't need to authenticate additional data, just stick to + * crypto_secretbox(). + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_chacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 00000000..5d671df1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 00000000..6643b0cb --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth.h new file mode 100644 index 00000000..540aee0e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha256.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 00000000..3da864c7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 00000000..d992cb81 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512256.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 00000000..3fb52638 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box.h new file mode 100644 index 00000000..e060dd29 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 00000000..26a3d31e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 00000000..e733f499 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ed25519.h new file mode 100644 index 00000000..3eae00c4 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hchacha20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 00000000..ece141b0 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hsalsa20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 00000000..4bf7a487 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 00000000..f2820e55 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa20.h new file mode 100644 index 00000000..bd79fd9f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 00000000..05957591 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa208.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa208.h new file mode 100644 index 00000000..d2f216af --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash.h new file mode 100644 index 00000000..d897e5d2 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash_blake2b.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 00000000..fee9d8ad --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,118 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash.h new file mode 100644 index 00000000..8752f9ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha256.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha256.h new file mode 100644 index 00000000..b18217e1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha512.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha512.h new file mode 100644 index 00000000..8efa7193 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf.h new file mode 100644 index 00000000..ac2fc618 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf_blake2b.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 00000000..3ae47dd3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kx.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kx.h new file mode 100644 index 00000000..347132c3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth.h new file mode 100644 index 00000000..7cd7b070 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth_poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 00000000..f3e34d86 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash.h new file mode 100644 index 00000000..585a993e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char str[crypto_pwhash_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char str[crypto_pwhash_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2i.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 00000000..88ff6221 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char str[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char str[crypto_pwhash_argon2i_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2id.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 00000000..7183abd1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char str[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char str[crypto_pwhash_argon2id_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 00000000..5c0bf7d3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult.h new file mode 100644 index 00000000..1c685853 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_curve25519.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 00000000..60e9d0c5 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 00000000..2dfa4d70 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 00000000..40a45cce --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox.h new file mode 100644 index 00000000..1d3709db --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 00000000..6ec674e3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 00000000..be0874cb --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretstream_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 00000000..b22e4e93 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash.h new file mode 100644 index 00000000..fecaa88b --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash_siphash24.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 00000000..1e6f72a6 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign.h new file mode 100644 index 00000000..f5fafb12 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 00000000..0fdac42d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_edwards25519sha512batch.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 00000000..eed158aa --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream.h new file mode 100644 index 00000000..88dab5f6 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_chacha20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 00000000..40889755 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 00000000..45b3b3e3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 00000000..6c5d303c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa208.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 00000000..d574f304 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xchacha20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 00000000..c4002db0 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xsalsa20.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 00000000..20034e34 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_16.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_16.h new file mode 100644 index 00000000..7b9c8077 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_32.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_32.h new file mode 100644 index 00000000..9b0f4529 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_64.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_64.h new file mode 100644 index 00000000..c83b7302 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/export.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/export.h new file mode 100644 index 00000000..a0074fc9 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes.h new file mode 100644 index 00000000..a03cc657 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_internal_random.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_internal_random.h new file mode 100644 index 00000000..2b2b7d6e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_sysrandom.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_sysrandom.h new file mode 100644 index 00000000..9e27b674 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/runtime.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/runtime.h new file mode 100644 index 00000000..7f15d58e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/runtime.h @@ -0,0 +1,52 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/utils.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/utils.h new file mode 100644 index 00000000..ac801512 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be prefered to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/version.h b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/version.h new file mode 100644 index 00000000..201a290e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/include/sodium/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.18" + +#define SODIUM_LIBRARY_VERSION_MAJOR 10 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.a b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.a new file mode 100644 index 0000000000000000000000000000000000000000..981e22cad0cc6ee519b6b8c175d3c8d5814694f4 GIT binary patch literal 433614 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∓RWmPoBEv<%gW^T;j&P6=9e<{=RTm_xo<@vT9 z^Dt~E^{Kl1z}A4C{Cwgs_*AM7jdv5#Y+e`m{&pW!|E$6ZM?0Z+{b02Bc1FwadS>^g z9rT|z5P#i2h)<0>^Q)TlJQ-jPUN$<|#nGPk&}fIZK0M|1Dfu+k>oYuF-yY_TzK<#v zKe2jUICEB;0{04y`SeTCkn?;K+uG3u3J1pUyc5qMz|7_W14=l|?sI3=8dxK}H`i<9#YV?xqAm{g&YU;z+nzmWIJ=T=?y$&vDZ0U+hot z8LWEhgB5FkU~b4PTDw>QYI}@ipJ#8tmGK*S;i1>m?$iJ&3%bCI;&fbOrH&h)oxyMR zw{Y#U#~7=y6E90+CFYz4R5s+xTo+)-&?@Y+Y5^9GI{;P2oA7ah5_BEf8U}TE%7@hG z!DY)eY+=G%&~Vn{HL)E~Wn?r;Jr43Y#bma@y zkAU8jX}s&nwb;g|E1z_0K320p@TK?ppvv(ObDh?2-IK}V0~;9BMxq?w#+526EOoHEo zS>te8voo%5Aq+|j;YN$D1GC(Z0sa}VXNE4H{Ny7HFTICHT@z5ZJcykv{|4iKonz7V zo6&sPPrkKH2%gH?$S3~X3N>^Ox9Iv4^+uawdc8dKF*9Wg?#_USgd&jlRz#akW6;gk z6Q5-DMx#g@^iNvL1MH81{q0G-aYP_0l%8g7&dq}_-4*zedoSRh_fgP8-iz5o zhVW_OKs;z%1-sumx9h)~oeQtB1-WQy9^861Tm69XiV9^R&H7VExvgEWp_ehktI%B40(}vVFd6 z`M}Gxj=_Cyd)69@e!O8S=4~MTfeys_IYMcN#~3};AKdr(U}xKKJbwBdTfJ3|+F0%Q z6Xka3`lUD9lURwX*I3{Xe1sOUHGKCl8fV$B9nYf`E@b35TV1A(i zzA4|vH^F=Om6eY8X4V4;*ZzRzZD@?%&RPtwD&vy^?O>jg86Waw0Vck1W4GP4AoZaV zS1dM$GU{(DK2n9Hs?;9-JBro;Ud+8?ndQ6(LCVG zQ=Q?Q#U$AH=`0k!MSQaP5y~u4z#d8gV4TX}Pv<7o-rtKWt$hp&JDTtT9x2eiY$Pvj z>xB6?19^hZZP02C|`yy6>H#phwZ>l-NS z)gOxT+d=2Iu6QE#2K+2q1s3P)xy;e&FmuTs7&=-HJ8cSrs0sI=+#rEH`!E*%Jf!)) z9gd@XhfuD(qX=`m7~!nI2RLc*Q#LAoAj-Y%#LLwzXl1!4Tulv|>*C7NC634ZP~~NUYqhjvWW@feO!&Jh-k2r%ZBU z)1N2cR1*XF*5aCrwv)pX`7zdfe)n0Dj- zl+JkmO&9#Fo{Wp9^n#y9Y5m$$g=oBS8(u#f1aCfW2gLwyc4v(oeAzM;jOBIFzhpl* zfA9w^o?3yc8{lBQyAT%M1wU;zWViJC;8~;YY~3SA)E^oFCzdau^~Fw~n* z)%lJxPBgDCYc_5k6$k3R-LcR7j;v3YWElHClpAgJfVjikS!mB>IIR%Q6!vz6xn7mH zrpHpS)N0GB&J6=Kbj9@k*KpM4SI{B54$!j$+L=VbMzihAjSmvHW7;7A$B3gSuhEIO4fqNDF7CihRofxN!V*W7 z=HaK0n!JZu8g^Cs#txfb0nK%>_<8Sgbh+umgSjj^WxMfkHzzz2*d97>Z-mBjS+I5W zgGpCyn9|&Ln7+`G6$P!Peplo+-E8n@_6{B%V-5-9X-tG}I;Q8*ScNfB_^aEZ1gtIz@oM7vF+N;aDUBnbSc}7wUw0^ zyksxWTr>}cJd)UeQt^HElP175VM1k;;Nti;L% zZ8yDV_gh!OtAI-8SiKb6%xTSJ+!-X=Y``Huah;fnHl(p{;j+IJc&Nd;YY+l2z;BQNkd&{jobsG&lph9QUxH z3r?WS)NOoz$~=g8u$mjMsKK@N6X0dtV@N*o0A4M;4d?7#xKq95oNa4L7PucLH1}8Q-9ikhYT|L zxA+HOwI&BF>lQ~wJ_?~8%hW?L>d z+N}+30|!&T)n)uxcbJ*aR0ErSmmqj>EgUa-1p4W|xOay(+z89XKJN0k^B)UztDJ!I zM^1)r#Wk4erVO`6#KS(d8(^wF63)0^gQkS{=zd9^>ZSYm(e4MF^VVU07KNbr^$pG6 z4Z$rbVPI8E{be4ZEF5LgTK+nOsNBSr9n>IY+D>@lLT#YK63~KA<*V&>g8%$c=xdjb z3oaHj+fDtz9G%fx=>j}z>cuV}jKhjSop{8!DtPj15s%(B3)kzPgi9C8v8YQ7ls%?- zY|}6B&A)p=&(XJ7)Gkj*yRXJCW;{mayivf52E$DIEAZ{=cig#Z8~d1%ft7BhY;@Er zxSaT!8N)!-=y!>Yj{X8CZsdadyAoWzx1PN_VGe24TUZW_TenJ{!+LpjhPbYod^4@> z<=8bGG!t4uzYEK8)RIbcK6neamb}31)K1uS>@s+gR)#Wq7PxR)JRh>r17~}Fpt*qb zU8(a7v)Zhr@p$P>D<~EXX|7`ftw+)->m?r*vueaPnYt;_;+vGFv(6%FVf4rENEHcHcgm`paWe955{Fruz3*6rQi>pUm z#CwBJbLY$fIB@AF=5X#aK6}J)5g!1RiXNB&@8J1oM_Nm|0E&#}@%u&d@aL5|-2dY= z+&{7oRF?(fj~}_*TW&d2dsMRLj?H-cRTs=|sK&?NK0?6nt2mS9-gyl-!ga?}`BJ?h z7+S5&zt4RFE_1KG})e4y}Y%6(6{X`fFTl8p>4HGd%jJ228*0!3#?|p~Cwt zFdPIdDChvnPke{>=G4Q+@=2`mxGC6#{oqSw+v4=FTNu5}9pk^fWPaDD;_GkY*^~Uk z=yurv4ZO3^!^xV5R_EZgzSX?jdrf@Re2d=YCg5#)=8l|y83Mkz@k-rFD8DzF=PSL1 z16^OiVyhvzb+0-cJZ}R%-URbKMb&UEconT_yaBrmk70#cL$IpnK=?HN430L9=Z8De zyB}+Z`9>$vxTJv}dgumMCJcit;Y0%1U#8^1)@I`@O@`D zLi(yEUadJ6EFX-8o*LTV9OTNl(@z|9)C%q{ZHsxKMhs^};{>~IFuq&{G(Uy2GyPLw zLgafIjiUwqlUqT`sEOF;>Fwg$axDv2Ok)Y6soM^&LV$ z;eI(>@&AK<5vn|L<`CRS^>b;TF1Sv)2*bA@fuK%m?0{`AT>NzzRAv7LOaC1H=*Uud z?VE`Yrd4D2_wV>a_vtvzvNf#B^@JlmGEgOB5t?;w%RKYX;Oa34*#5{u@Hu!0SmrcZ zFJS~5Zxn&^m$u{O@=>(bXEvsJzJl&=p0hp9|KP{iji9W)62IIxKsOb44E9$-*CkWH zvAhZ!X$5{OTbO%4D2u%gEQ8?=Rb7TfKzP>cl1~d=>fg*OWAi^m-`R3G4H|t zJD$P%!|PyigDWP_WKA?~)MIQdrhGn&FIR2gHiaHICSfUhm>$Gw zG~O$CR|S3^*q&Q$Y>Qofe`Aizw&J~Cbx_>R91YK&WQJ;2uz>pW^lVD#KG~5s?5o7w zg~2$Z?_N-%{(aj%7N9&k3y*uvgu7bPd74!rj(&R)hTnIAS#bvNepUmF+IE>~x9SIe zP2FH)!bivm--dC)_wi;`E}pv_gAodO0n8AkKmB*-$QKJOkt&@H&_zYnj`I*lu8 ze=vW`E+F$spB0-gf&~K>u=bV7(7M$+i1kUq5?OgzSCN6)o*L}K@|k$Q{cHBewGwoa zw=?&Rbf3FNecH*{D8FGN?6Hc$#ThA>Q+EuzUs{4&^+$~isc=wl z6ie$1I6`R)7Pg7Q=PvKrvhIO!X@MV(E~0fER}W({?{2}M$qykZc?v#K(`R>%TH&C_ zAK38Xnn0*bNU*}Bs{t*1&^qY;N@qnEZ zzrhhJI}Gpm0iA+m;k-p9yuCA<`s_3C%=Z^?{NhXY&f*A~t}0_8?aDEG5Va@7?!vg2 zGvL$1A{d~upEXV204o~qaJR?mIOE9yNYQG8jRvb>?(-N-FVo@038QeVeIk1x%b+rH z4qH8S8NS)Y(2mv_Ih|UB7rG9{SF(@T`yH2YCe0=6Zy$>jm)mn^l^w9OlLpi5@)R}H z3USLfW2`V<2|Xr1fTst4^AnksFzmqs=6A6H(+9m^{kVs*|U0}9dd;VcSE7-qzHJ?S_nObW;mKXHYL;V}e*e{a|jNa~l@#>IBth;=if2;WlcB^Z+?(1~) zKl>J!XVpT~_ib#*!xY#dyM&izHsi2VD{7}lteU9DR67-;>&+3|wW&Ag+@8orANz?R z!KPTD(h)2+d9xqyGqFDO4xgpD7ybHdWHTRM0L5$9__FJCd|&2c#U)=6+n5CGu(GaHaw*-DAk?k<3h$_<@@DuXMjIMR-EP+d_!?~rxdh1Y=J>r zm$2F!MtI!t8Yalt~*;D;sG%M`2Gs+1L#;Kdl13A`fiNc4px{`r@~q zt@+GnPq4N94nDnm2&U~#=3~`gV!5I@i;bEOMVEH4kZdPd-z6HuXno$!Yo_tDZN|W} zeTU&k!Yy2+6UU~WxQ9<#{pJP^JuuUt5C;yE$90hpc(CUaaE+P77QTpse>64NvFWYw zcD6BU+ZVu*z$|Dh=LlBy-C4*wC+MAg0%LYA!ltN!eD)?ey!A1GhbP<97@}Qlcbl$Y zy- zKDN8aZ8yw--D@gY-G)fijaG&!i>BeZnNI9f;a%7_Apw)EF2k`QdF=P2WBB;{Vm4<^ zHyk}SfCncJfb@Rdai}eag%6i7?-g#;&*hH2KFGuAt6{uDSplxtGYtZ_{RF4qhHT%N zYp89og~wgmkNWXnL4HyM^xvJ&XNQ*nTU-OJ^nOE}k{$G-`9N=Lm*TPikE=uIx|Cs{Gf9A5*TjOwub}#5d{gSP3hQiLg z$B?8N%p1lSW6mFcW^n2uqwa}~20P}oHq2e`V!()s6^>}3t`w|j>9g;(*;wonKujED7_?(FLI za9Eh$$UZx)pfwn}!M&q%vC*)U#cEgL3L0m*=TJ|4(%2aSFSf=>8*0&}ybgaSjE5&- z8E~*oHg?(55uQzX$lUyQVnyt z{2LGF2C-JZhvTFLZtUsnNLcK#k40Dng2%!H*!Pbj^uBi%p0v-xH98;A-k?PcbF z0s&Oxnf9Y_Y~61yZ24`EvH1_6%{(7$Tb~7yRjc42Th5iQZO5wWT2?YX5SxS3`1e;Y z@ZQXFXq`J8LVu28!Bc4M!-jl5s-re8GO6N5FCWu5tJYk`WgwijILp(f=3`XM5%_ez z0#2B0;Rou{UOKm8+5=b{X0`Wy#p4Tu7#t$7SK0ed~xuA zh0sLnKv_9&2URl;nOy^5Zr)rhl)DMKCDhLAx*i=i6a5e?q-iZ{SPfRy;Dm1g9PhfeWCE zD^Gc&)!VW3tuzNV>6knm)+=YqTI113rVVbs)&;hn`@o-B89|L{IxAT>05)wK#G~Kq z;^0wzapblJ^rG?FRRJRRP!#2BwEp2)BGT45Kf2BubU8jg4zfiaB% zpzXU8M^pbWI9TvGiE((v@(uge&jk7xe8z37uH(xAf3T}Z61e?&&1{woM)?!gID$Sn zzT(_3R#D*rYm^@FLs$R7!jsB8`QuTTqD^a2hDG6)>*cK1li^TuaV1vio8#r+0X*q+ zCmdq&nHSQxxvp24!?8ZQ@sjd+?kzhHW2?1z|E_JZ^FIe5v_TKXm2AhoN*(cHW;sji z+6t7W{=){|d<%wK`tuvR%<=W@j%-_WDl~^2=G)$Vfm*di;CChuD+34fiAO%;hjZm< z`$842FIvr3(>f;l#y8ocqgv=7I~PrpVu7ai;()37z{ihg^(zlSq2(sF;^}ypKQ^DM z7*{~Zi>q&{D1NMb^QOwAL$#< z@_sGH_y24Eq1WbtS0KI9HmCFN3vb~D`O{GGIuKrenaPLLbpwlmn|Z+)MHn*WGi*CD z3y10q!EX^>*gxC`Yo_jk!$}KxYJY3EKK}&X&+x+T`pa3zLx1q`i6s8dbNVJr=w;3y zHsDUrRlI5qt=)G1JKoNG37;P~ICb;r=$>qamhl^G)522OAFc7-Hz=>1k{{*mVBT{xHUj((C5s=Dq-!0sTA9 zNZ-&5Jvd*9;tIoQzZZdrsEyD7DHb!H~{@vu@+uvgJ zua*TFXeVP{{M4dLGHHyiLa2{YyRVYhBQ51iA@IfkWTxLUP}6n{{P%tQC?L2 zN1IUkU55eGlNaguKGSj9n*zv*<83B7(AhK<`B6sx<3<3iAWHt9OX;KVEt?Ejk-sn! zSIJ$(Xa{=f9Tq~rfe`d|OINK5Yj>R$9uF@>it^S|Lwko%yC!kH|OC_Zc2 zr*u%#@zAscF#M1EV$!D4&i`&y9>}lde{>1yJn9Pk*L@tN*Lr13l_|wXP4d)l|37y# z(uLFhr^nI1qiG*+h?0L!{}=zq{V8enG;;jA$-q_8nrT8(`VUL)IsemRNK2b0{W7ZK z<4J4$$K8hZ??bwZ%88Vpi^$#bq7*{f==vgUz3PAE`xp7Q{g3+t(w=!Oz9s*$q<#OR zb4bfw18|~vr1<-gZoK+G|BYmq+*>vocu3m*=Ku5s(ysr}`$#Jk{Lej(@>i4M{P+5! z&%%NFf80k{{~X^(I{(T4(MKuntN+n;q^0uwZ+IDs zU)p>qTt^uhI3xadBDcg$Dru)abi5+I1w^U7u_QMs{tl!EQD!*^eS-Y2C+#EBdz0)^eIpeS z$-fGvU8-LaMSAy>-I(f=f8D>+aY^+{m_m#Hcyd=7MR_FrA0&5OE2^JG{4_-S@AV|5 zQ;L5**`@1eJ=rDQmMC2x|EAZC+?A;O=Zo}6@krN$tyYWwN{UA-n2txMMK2?ND^lQZ zy)4D&P41d$l>SaF?wS-oeLfw0M0_VGKIwXpE@8<($^W-W`MH9Q|KCm0UjGWBq!&_r z()FN00j2P&M5+8s^@gOY{!jQ)3L};0^Q~IkS5SDVye5-f@-Jx(3UiWvHOP;2eM^+? z0}@|Iq_SKi*evWyd$#yrFOhVjL~_3>aYoBChO0fLleBDGI^PnN=(-_F z_OFsZ+CR_@OrnyYhD3^Ikf5osTMKP3w5Q;DVUH6!O)yW`3x$3m*eL9Bnl1ZP6*QJe z`yDN`t)Q>4uMj#$@Q|?Q2z^8Fjj-1U-6%*)+5L?_rVo+M>miABUh^c<@fS&?{a0wU z=z58yLAymOOC+r&Xeg1+>u8~E1zjb!qI-bQgLFvKd8Hwxf6wa+p{sP2IT6y93UULvK#RWMN^r9*l~l+uwZm@|;<6konX3STN%BiJl>Y*33oT5jR5e;=yb zrTwmuNa5lHQzg=V4+*}INc)wZJ*E9t2x=IRU5)A^K~srz^Rbpl*RF%a*;F4(oJRK% zp`#^|zhq(06!sipzai{J!v03szY2S^uqzq1#G@f`8l^)b?ax%$t%coQ*gb`vrhonQ zA0g~9!k#RV%3+RRp`iI-vQu5-Dv{!kkVyMW6`H2og2r6R7onAmNOz<1DUtkF3?Wkf z(kCPTQqH)A8pDXQ=>8;;@>hEHmh#u0C`)ybgP@bJPc|celn!5sRIXPD#z>?(By4z# z-E#zy%0sYVs(Fjfkx1#dAy_IHJ+j3eMzzpdBAp)xiF6))CC;Y(345GGI{r*yKPl{2 zC6fPQVXqMOMv3HKX>?0G>Jlk_Ly6?yQrPW<-B%*{j}Z14VNa7t{&R%=s<0c6A$u>% zH;I~5A4{b0ff6ZyS4gCMixxUj=ro~^34LDZ8$uUJq~mUsNbxF-B~rZV63K2Zk&bjp9hXu(85TE^tB`y0V}K^WI!*Ol0p;uUld3>1tOOcOjWSR|-n)e=5W zBIU~)iByMvl}P2XSt6xhb3Bpq(@-Milet97Cu^bYg?1I%S7;gv`!{^DM2h#2M2a^@ z*lQ$GzDVzCQohs+>P{d#<%_wXwP1wAepDX_o)pX%d?VN>sBGQhUsq6bVvCmE^<=3| zb&_-|s&@o~1s!b2E>GoIFhVd!BKeo2dy!P{DNCgLzOh6)4(XjxIu2TX?{B?7TIevz zoyu{vM9RlxiIlI0BvLs!FLb^{@>eSC6~bOG>~geE$-lBh>AXlJ|AxYDF6@(q-AUMe zggs2yqlG7dPZpJ9axs?#v(y#k_QbBau+NWtPzA=E$*s8J7711eHVZ1Jw(Lh&&|J`7&_^&rFj4TB;8np=!5Tri-7WE|3mOVq z3OWe}3Pua23g!sr3%(Jo7gXBQ62GRPso-QmPr)$3IKfQ8Ji#KtD#2z!)x9EL1V;>q(s`l@kp?sZB$6D3y1j#saz@N~CMUNunveKT7OL z_gjfnrg9|Gb?kbENY`zkMACVJX=hvPITFc!Rp=tY7lJjyy;)G6=SzL-#$23+cH|=(r1{DgQDh(tb}$B>#mHZRvSbqB`C0B+jDx@FKA*)k_jdYY43? zaWG*B05-Go2C6fOY z66rn_Cv>Vr@^?}&Un13e^%5!FjYKKk%|z+F0Is!YbE1^)$r34E2cdn04ij82QGx1H zp)&<@BvSYrLP!785|8E$BBf`LL`uhKp(hLNDzvZA>m}0u6D87drU`egn=RT_A{~d+ zHYXj215tXfaS}S_7P+^ka1tq=9KjnBTha5L&@~b%|KT=~@?TY=JUy2SnhV+r`Ur*z z#t70U7ygDjCXtRaE}uy0&J@fM%$G><(`N_%`g6F`;&1fb7W-t06uwv@g?}ToTmfl1 zUa757I$kBBbiB$EEh*i?ZcLQQpQRuT(EyF{R89qhB|6akUn1Sxk|ol0kts2N_9v0@ zr(PnZGqA9Q(Gn@2?C-VcV!} zRVC8?ZwOr~SS8pfsPTyWQGQ5mr&4}s5vBalm1s@nOk!KApCwMD>t3P_T~|cOf9g{T zPw6`*m?u~z*eFOx1_NX$-vyNgsml3l*A&zhq}Q*%cB&%&a93|L>o4gP{H3d) zk6@r+m|%opv|yZIvS6CvA;FV^=LN3{<_i`HmI}TRtP=bx*eD3BC7lX_%7W^Gnu5B5 zhJvPoqXnh@D=8ms1sw!k1*P_0$vsdoOc3VH``eE<&(F)xBQTu4=jG+AKgMo~zE{`+ z&oJ=zGBPn4Y&OrsFCY}=|9|AYdvqMvedl@m0dxaw!)*si5EG6IZ%BrzCPm4R&BQI6 zcIb$<+curh2`4C$fC$;P0%qlybM44d{ z<%HSM>?miov$p}ZBr86#Cy(9CY$n>z_f{3qgdkB$&h9_1gT}2}_tt&&vh{0?&z)uwoHtTEUetfFK^yGxqZjjiVts}ujGafu8iLdz=g}v5(VJc z`oQjA9-F_pp=oW0&tDgQ4v)Ofr4{b_o-d8=*tK)vme(EZe53PAKeBU-wH=FQWA;pJ zA6>{r;|1g+6Du~m!ud7XJvREl*0FgohS|oI+4jKZ-J^z)?O=okYS{Co-IJSljLr{3 zb7Muej*l%|a~Qq&VgQ6iHFvOWKi@q=R5lv1&c{XrGTc3O|H|Bot@CAI;QSIDBf2I3>&mu}0Hocoy-0A+W za{pJl|NP_b_q)5@|CR1P|EPVp{;zWXSGxcFqxM~{w)?-*{l9BbU#s2S?*A(Hf2I4s zdVcoBmBp3t5;%uz@XmQq6nFjeRjck=Kfq?bGb0sSC_#Fw)BS=0^y~nr~ z9jd3_U3924I)3@{jk$%g_i`CH7aQwgPR$?DT`QSKGzS$vL3`O$&<^UVo3rL}$DQwA z@xRKL>9H)G-MBW4yoYec$bT z;@IrE>z|l4=CgCg9IJy1t)_6Yp7c-F)8=G7XO`77q=Tfa*(;Mx&2u|Po9Db`ADbK7 zn3~h|Rd0*WZE5+LIdAJn=2XA<>5tLY@w&%(lC+mJLpns-X-?4Av3fgcI(NKoiYMyH zD(Ch@JySYS?T{h>Pt#2Njwi& zX;Z0f?&!6>S^CHyt8YF!ZFAh0E*-1KvR}6`ug7i~K4RN*$Lejl9-AfI`pqfpQD@7` zx7jA|kd5cM>`?Y>ee1?4n=1C%ZSR`49a-vK>9T{=`@+NlyX^!0HdZWAZ+Sgc(Dk$R zv2|0{RD12juN<;-nL~DGr)M`09=3C9y6x81k`;_Lr#{%MkGEn6ft0W&K~+Z!=uq zGT3LgoSCv))-$ix+w4$&S=~O%T)01G3bW-`UwxP1T(IiQmg-u^c2dDSODdRVNVQHK zxl%pNdD1V{O@SZl-g*7L*&lr4cV6~5|H)VHsAa=+ab6fL%)b)S?Gs`8RG3!7^oJ#G z@Am|d@K`Et@4rTcF6FyKVP5ciC!9(qt5+Q zjd+{VjxhDYbg@CR!kH}d#>Up&UoIl%x9-|KHZo2~B!8=NBVQc*a$p-QUA*go$>IZ( zZ&YLZ&RbO2x@+g2u!Y5D#bV|9=CPrnE!M=A9HgXtB!d9OEsy^|jYLDOCy^)r(2$R~ zzTm9$MtOb>xJL)KxkI9Wdh>Gn@2NA$wWw-TPi?{TO`e|)#dE2i)>Y$CJ)Qp;Kh=%q z)Jx$~a`m^udL-`ny~as#MQ!Lf&yS*_%kWS2mXfRgJ7v+BRrl|yS0+_E8k>HC$sMb6 zcQ%Mp@0N0P^*x~+zO`JPP$#b=SJy6v!BUcM2>RBIo%Jp`x50d^^7P(5BgYf50^6+8XQ9V{qmX6hHXZmb!0p9E# zv9rtjY?|^GZ_3X8p=X=Dui19$&35)W+11MR!8}iZFB`B!-tu}ZS3>TdMSdTv&waPw zdb#CwsCfxt?x7(OMZC~8y*|eFlDgS_d@#>JZ6FoL*4kF9W)(0!d!w>e@Ci69G ze--)0cv{V2Yg-0rgL#{h^)L6?xH)9K0nKksIohwN-- zg-zSD^^{k#v%k24IW4Oj?|_}Xjd6L)>P_CX-7=tYFRM3u`?=m_6S---_5Hmzn?GA` z@%P&oI|rH1v3jC_jQ1U>Wc|TW`xwk@sve zH)ZFJcH5YD*v`Iph(0y`X=^{;%lK!k|L?nOC-vjmduQY3({qo$`s&vtFC`x%dD-FQ zBk&}Z9F>fe+-xtFz$N4*c~iYvUJ4-{E&Y(hseecl4v(ee-It?6m&VO#m@mORB;RyM zKHWkdy*Xj9XY<4!$ti61RksodVcoYX4>mB=M%MW~GGEao!Xx6N;(a=Aln0t~bOfvm z=EVi-&C7!)sUyA~RgLPYtwwopgML*{KaEHAbiP;~JWWGO$%8wn8;zAy^9zlWYABPw zLD9TCP`#z(!6xcOW9HPw$reb}hsLH~AP?>w_8N{`%7fhSo3^vA2Lrgt&RVRmF3vM7 zH%7ruV~y5L`jUgs4+$OrFU&VOmZIbT92L4WZsfnvA-IW-eUzGRl92bHOyq zbNYsQ>Mi)eO}bq~_Did$QR(Yyr%{F1Q%!K zDd!RHHu4-Vsze&`lEpknJWcf?`i<(T-A11CEEiNyYbbW1dOBasb0)d=7{BOHJNkVm zOrz`X)WwD)%Ie-mo}+q8@tpsSdeNBG%zEmTNY#$UreDBw?tV)==g!>w?+#eht##1J zRyt|WL0i@Py7zteZBJBcX>`!`YGuw;kJbO-)mQ(*U_&pvUg5(azw>hB|0y--sko(D zO*zm}^G@G7Szkjc9}sWyLl+BtKx3y<&IeRH{;@e-k9hhiB%E#(nd0Bnhn17SwessJ!`K{EJ{8pW$Ye?Hk<=a|ADxG~bsmA1VRx6#2 z`h~Offv)DEhn5&G^^%5qq-j$5fjonsr&_74%L9Xa$*#@OCOYzseO-1ndY#E1vTK=F z-d|R~vFvuc-W;o^(0PX{%j@>zgEof#*jhMX*XQxI99=;k-T2WSn>I(#k-M$N+JX)~ zOh3KoduET?^;LXE_=5(y7SHduYw3HP`n=DxZRq0my}fqO z1J3l9_vyQ(k2aUp>Ao?>BQC%1_%Hj||v&{)k=6J)=L~<@|r^=|AIiaNv@kvNzUyz-h+X53aCDv)|h9 z4%&64<@EJ+#@J=G-f8n_y#<^y=I3e;zWVCF(fY1t-lhmn0FPnL*O)_YJzbvj81{f$ zSNbz%3V0lXP6B@yQ3k;K5O$F6pJr}{9PX&zAmW6OuW zwb%8rHSm+n>+qAe(nk6p+Xjp-#;-R_bIBk-9H#j&T^FW>Fr5t3ePKEirt)d1Jv|qu z^r0+xIg&q>HM*UvuXMmHQE&R!_T-T(VRY|p0k?z$+ zeXUuP_bJ!fMfoYpwT4kXO?z6)Uh1hm$!D!;RIbI-+D7?%Dc2fDd7pBvb(H^W@>=uW zu)Tjts6I|$@*C=yURXXDrnxX34%2*? zt_#ybm~ISHKTOBNv>2v)!}K*etYS!B-_IJVi^EI1S;NwmtKP8q4GV`yUQY*JX#5s6 zZq>r@$m?j)3q8DXgTtEVTc|6&mkyn$kOh(2`QXcs&WjYLOuDqXoz-@k}L+7Vt; zv#LiIrimZz&HF4eTqtoZ>N;vqeKxlDH0`OLuBncGYLAU7H$Ksyj-#}P7o4XVxP zxILOscp)mQaMEZ$sNPcc!=F0cBK=_T^`!Y$-I#A!?bE51=C_4=cI)5w-86g5Y5S|Q z?Rj+m%CF9*3y-~=E`06f_WZBbv+IB7W$cny8h;+XY30?9;Gp$UDmW+=J}C9VbTCY{ zcDkMq({*853{%;JDi?25x-U!#hWp~!sx9V+MYg}E0pXUC?Ry)_g`K11*8r>Fh)1uh z3D>3Bj8LABimBf%;Bsi)B&)S9I*;;%p}Mt<@^R{GO{2Wl*=xw3=6tXr|L>@;HdRmU zKS`SB7u|n>@^$2OkIL6FzUa_BKEEPA(U!`E57D9WIqny(MCJdTd~~S%^W=3;RK9yr z`G?30x1#ak8^hEO)5W?%C>^$q?Ht>^o!!?xL6tQCLKZV0}&0$t)^yGPqZg_OndV> z$5Z6T`9)nv?Wxa3ouf*7s;Bl;Cu(myH>&O`emXod>L)r>rr*zpsm7#Zkc&&{CMUVB z`q3di*?2@*oPam!CaSlTZnB2)MRRlQkSSAF?Vv`vd1OiNxa-a!AT88SZl#;7y!);< z?c01g0P4JMBH!j))lH)MQ5xwc|5QCg{8g~Xhv~X7{bA7~u4(e&v6LR6_gO6*alR=S zmryMmw2qkNij;Zu~qhkQpvUS(cGzR3AtL;e)!xrY32a~}1f{$|PN8_EyT{ zQoZPC)TMPTD!Yvn;8JX?x0K9cGiiRzs(Y3E55jh$@ny;1ao62%(Vl*PE)a6Jwx@@A zHjm>bnHBA|eewVN#H=Z4pW%4@dG;OhUWL~V9ybCrB@HeVp_P z=_u(7T=z+zA-~V1$Lf1Yt6ZNXeVXe9eGRq}ND$NuMM2NUxKwb>-SSQ(k*#>W6(d(kDqP z=DykX^6`2$&t4#VEjQSEv-x0Oa&K{Y{WN<0&0=l-a7-Q0nn zZk>yJ$L+Qc-Zz)XRcxwAY?$9;FP7L>TU)8+tEcPz>t|}sqm|mg#KGE=?DwoK({ABm z`xNJA?DBeR@v?1Z97)nxw$BaCF`nU`l2@sn`^I!_iuqSQHB~DypXa^h^?mH&Jja}kcf!sTh%L)qu%{Sf z6Zx-xrfIH?eA}l#I+yTov#0Z1FZSC%`%HQ+?hn})|Jl#ZH5K}8dV6N>>8+od+sK%j zix1mv_qWZpd_l4J1I+o7-RCP7zTX<=x|cd#`wrG(?UkB0F;#nlJ)x^vV$n?5US~Xs z>^a-ad5W~a9PpO24!Zw}RUNItuYde)bI&sV{hzvb?s`spO6P2e>qV|@qWuZxWO65M znf9IomKzG(U$|`JrIYreceeh;f4OY#D09B|UwmqAoU!fR`u4emy<|7A54>~YBXe=~ zN!tp2Hd*eo1+JwzPw{*2-nY-4`pT!~QpHEyyfi;IuU^(*&2%uQp{d$6=JYIcN;BSd z9&!K7CGM4Nf^oKFyKRxN3TH+siwy#Y!Rh&R%u|*sm+g27JT&KR2l*?sw>HOqH1*T@ zGWRWqKF-z;GlzJgViW!;JHz=;d?GWKC|t6ea%bxHzK_l|@w`E@*kd=6|MI=@xsK}D zdNbF)@{xO?{T};Y?oP~o;G=J!d-sP}-|WNoQy=}=xg@xnE_E?pVjzLL1(xX>mD(`< zcdz++EzVpA*H71)!R;3)%jJpDgs(LD=Pa?HHsL)Eu6Kc}-F7wORZOU1jsqRjwHc3? z$i0Fl|wu?!2JDg+gj|kr-4@sxPOXy4boR8_jri&JvK)F-uJ#!{SaJEm%?&(PeCJbL(baRqt$l6LUzw zo1V#?B~}4=z@M7(Cy2YfV2?5ftz{c{urCixhk?WJen(r~@JPjo#BAAWuUfIfnd$}G zL7QmDcD3LHZE9_w$t|y+`_#hPj#9TsJ*{n~sAh*H=kslm}bF`x#Spo@0x?PDwySX7GOV4+ge8eIghi`0#?Mk&@vYcR@~ zTj3Rho?@Z9?PQVhg3pKPOE?`D|F|+;OZZ*fbGz+iZgKmV&1Rv4@>OfHw^{Agqx@S# zzg@^2$9tchs$Hi)KHO%XWxk2rW%llmL&FzX1J6$Ce$f#y9A^w&z%inuGnBPKM|(9U z>K`Vbq;3Y-mvbQJx5b1|BRiX?IzYx zvMFWH!y|~-VNN~FN4%jcv%gjaKBA!}V7!6xiH-!{6zf@H?s3*B1FQ2B3H|P3z_6~floV02BRJ=?tFld8+$FjFOJb9ta zIB!6AkxY8FRC`8ilRafy@|PSPwPi2bV%T4T{zS*3r5xjJq$SCuR@Qc(C*FKvUM7i_ zj^+YddcFvsfIb{O{YI%KJV`Ug3ipVfHgG=ZDF$o-=JT@YPp4|*luuF~%bsyK;^1wM z+vjLk@=dadw~{cw$8DZ^Lw@iag=Equ@)^woJ|?-;dw9B*T!&m*H&aV{#5MT?w%{`k z{~^19G*%G4_k(kN_6BW>@8ub14}3h5OV%KZn49QD{5+Pu>|~N)*o;gP9vSmZVzk6x z(4C+q@gVWTc2b}Fr6ZW^X*ZqR;2yjo@GJrbCXO zcMr`t9ezDymVCdZh}M-K=39<=p5{6ca{ zc1j{A{5sCFLD(hGmGr$7G`*CZIz?F$+LD}VrM~!Dn!2K`!?{pSeSd+jgg=rShH;A5 z3^IoZ#+3>%{_28^l1^|99wyl&T~zu(vv=N_Dm*lQ-syP3Gd9PaUZ;7-OW$_%7595= zf%-Yxj~9AuGkDN*OD7TpXs&2r5LzWAWauoN5-w^gWVc!sMMYXE(1dcYAM#s zW38^UM$*%H(+>S;eJ>KHK z(m71!amO<}#%thzl2`lkoaYAY6guBE@{!JW?mg&Qxf712oE(4`NIokbuo=6gsqBTa z>Jd9b8wv0wmL0N5i@xV0qtH+Kp`&I}=_wW%Z^~<|C+!VjC0i;1T@l-B;G-)dTh+R$JO@%Jjr`NXn=(fJbiF{%nZNR7pT`%H&()mui zH9Bsk?|E)5kkPD#baS6MHG!ioxdj>3bGlSZfFq;y*R^+lt(c=RGZ!guvC*+S1u1MDt-5X@Wll}rdO)!UZ(B4!Qn=6!2;=Rq#Qd91N z&6JK4&&!-D!uv-8TJ$d4VXnz077r1viiX-Cq746i*~-&>@t%CqmBr|cPE#PfbxE6?v%bt3o zy0FfTc9irK>jk#Ed;zkZB%5T*$c|5xu){e|l)HFO0&*SRA-_jU@e=dHmysW^8;bM= zzq?Aglf5DD6Fw)HhwP>%bI$2^E%28P#+C-gUV;0-kBLHq-ISiLjWdo+nekfuYd-zc zzI-sv@Ib9)Tj|%BBlkjAl2fu1gfsJYRA#D{$v$WkRptULlUeKnugA7kyPRwq&jEAj zDns8x*iexlA_YxJE=i7wkBR=YhVydi8`HIt3H%VkA<1;fM$4MSu<2eXF0Yrc4f6iY zwv*(NbWF*A@rg5~&~~c8Gr^^`l(%!eVp(JO!3NG{D<;a1V*|tUX)odT+hNWV1#~`i zy}oNR^Rg*ZxZO6x`!_Hz@%DUy^?|o*eWX8(k{6yC2yx-!xtg>)X5l)AIK+zts{OT-ERtgPki<~ zx?W^IIXfR3x+q#IT(FX>qN7y)lAWZTWL3`rAlnMeJ9h@1Q?jYYHX)l*MffT68Ndf2 zS=)uIeTKQnpCY;Nf`{Hv6rVue!e^SmL-EOgo_ej5VT)vw?50EoUlDyu&us&Lq}R!I zlI|zjG*nUh-PR|64qMRiN_@BS>pbu3o??vfaA>kbowz+0*ih)@Wy;fq6V7&uWj$zz zwe*oMzF^&NlcSPLfll7L340K{YR@xw+LDZrTuS)gffq}^dpxk0fJq#f^fGV5e7ZIw zC&6oPe5zI~Li;)B2HqpN)QYdQ$s2Gql(Dj%0=bl_;OjWWJ!g*0`}3|)KZgJDY1)wP zZHmW{=~tZ(A`TrTXy;kRCK?hgiH1Z=l1tL@B$tkowuCfP0-jUQ#ET6!?BboG|%~NNvfPT;Ti$&HS-E0Hb zWJj&$y6peBkMDRR^w0SEuN5_5(rIMNOJ|6AkMj&nAL||PEW;Yf z*Vm2h6z>IQn;QKPk2rsz?20DVOuDCRhYaUK+@AyoD~v@xGT}!go8&8(4J98$2je#O zn}HvpaygVow+DU*dWM!lJ)Xe_ z2O4drjm$@So@hz5lP+t0^h{2`FWlNP7umAsMh?~7y1rfhFX%m|^*Z5XV!Em|Ne#r+x8-KRYLZZwIKu&oaC?cG6!m+ap?u3Z^PVPgG~BX;Dbm4zcgbOtVcPY^aaaqcu}RMy`p)W6#Y*8Uo>INNqZIk z(ov!P+~d5@pzL_L>{Iz2O!2hC!!u>p8yiJ*=j1OkN&H=OW+az@Qy*}0KJu3j)Y8)F z3O()_wv_)M_W^tS&Kck&x%52!OE!s*Z}LS`fo$r6rsTJIj&k{xjH9RH*aPxKoVQN{ z$5{3eWP|WfK3)7}%r#Lt@BHJj(rITO=v&d&g6z++`*EQ~1H+RyqRvQh97Q_^kAxdEZwjIv!(? z{a{Rh&(f9Tr;Irsex9}Lu}7Iln`GM{`vp1lxIyL*EW7ZJi+?m(@RfF?*Ch+*t+N4H z-(m8yab?#>Yuu>YJq5hvAC*rp@{i9@S2|uI0vPYb))MU?N8&qlr`jVda1Y;CEnTzy~-Q@buV7KKT0$&+Fyvg9JXa!GYZ)$&R z68Od7Ma4Y$gglZjzN=%pb|woAK}(WDl1o#LLGXo-C$+1-*MTHC$!C0Qx@ z5FP2c(sR2)I|-h34LCbK0gXTJ$sUDYmC)hK=WU)ghPl@3+Bkv#AkgjN`O9_<=NZNs zFG3@n4^cuK(5uCVu322oSc%3 zpP=u>c9V3zeT*m4`Q-Z(Zbth~l2!A*2z=$js|xicpX8rOddR8b0^CJsjeZDAefj1j zr{r^T`(j1*@wwhsy1={ev?gU|&pWvUf0K-Iw!PnDB?n|XHE$GeL03KvF0I3_H9k{o z!ES2C_arz;FAzS(^Y|ms&$VYM8XC=02JUs^|B}uZ$ft+x3$&XD&W63ECWDqzWPtn;;+K<@KS$o_YUaH2^@-Ow|Dk=v`kWi@@j&l`zGPn+Y@Pjnr6zfK znZ4YIwuF0<}8 z@C*5`Wiusmr|k22Vl;fofJ?R++DhdvIzBVQd^5=UmK=5%FzmsnBR^Olyw>rG{7EYt zF6Kj5j7xT{Xls!3)wC`9O|o~qD7`PVpPb$Y{?otP&jnWUhiR|=F!i+0cuHw$!B^gf zP7=ue0V^F({!_``aqn2YZ|G2<@9jHK6R(l(E!aQB7|ysc;CIg<6QM2bQ4X4bzS7J| z{zTKkyzp6RUf$urx7WeFEyZq|wmnvBo6J9En=6U|3jO2Iw1+L~=n4P0_S2;EX-`e^ zK)w*!pz@DTW*7Y9vZWh+d(!#jAD5hxFHkz4^h5df=H=A)r)wpH&Ic_CKcxF)G;YIQ zX>Ngz4f8R#*Rd{y-J4?8u{fo6e@+AMb(q!S|)b%zR$*#bc zmodaJFy=JZMAPywNoSIuyjo(P*rLOF;K0a&9wL23KD;z*+2);R9^f3Q^gPKY`S3Ei zZ{nN2?B>%{=ykC(S{Ko7-x_>MoO|#&#fHd-uC;j@ywTp2e63m!`F=z*^5tcqJtzO6 z8R3_byrg;|kU3oMECDxk z6Y+BSUrZ&~2Q@`vAh;%5DJ9xD9r*AR1JP21u9&}XXcHU|KU1us{6tPBc>`ATB3nzc zJK6{A!Z&V^+s{(AjxvL7kz~zMth?x^4Ot|)vBs0Fe4cfWWYBW_cACq1=RY6ke);0H z&*XdsU#6i<{)X##&lM~yTj z+oR3mZ(+=$mrNBOOjh%}-NhA2_GB&Xc-@X?G}?cP=Qv8;1pGjL2R+nhWS#bR_+wac@cce8C>y37Z2RG4B$3ocwp#ag4PYShRY)?}fSb zYF@}3>7Cts1KY)8Z-0_Lli00ol@l(OD2C3GvFNov`X_WH8q)mCDR2rOp7V7)d!VNM zVN+mlSSkL43~_2L(5`In1b8J~Upk%QR~O45#Xm>}H6w!}Ki*9;=r^Woj)p?N!v@AE zKacjg8fDNv9~%18kVoAyg1n>MVoLjJ*#yiQlAh{dP1bdSo96dWyrZC&)M9GmCuL886sJ(K<=T?1tYt zS(KTsJ;~TN(7yPu<{bC5M~i%+4U;=(1xv+NYTwJ*VcB0pe<&j-M6ZGWZWHz0UM;?k zBIo5i@F)lNl48Cb?Zdycw|#nT$(*)Z1?2W+a?7o0cQ zCH9ukKcYCpF2xx#*7b~CdrPuObM;>psxyVn4pUf|^PI{bFbSF+~$Y_ON4 zxChacWLN@vlD?;XCFujvzLNNnXh}BG1ogD`23(gM6<;>+i2~;aI(9P2#~)rGHWWH} zeB?mwAoA(_9S3X1$JeTQ`AgsdssE4_y(unFw3Ms{ae2*^P&Soh7eUYPSj7y)nNJ^f zk&AJ~@9>02JbXcV;6pCeT7DSU3y8@2L^5}FB7+n{>{0bMMyD*z$RjENBIhP zk4==w$sek?$sW6g_C?!^*GGQe3S*MJD|(deorHe0K7zkwsQeAm>$Fen_V+q?P9WE? zPrH%$*1Y0diOpl4&Gv-zn`bJ>8P-8@DVP?wFY#)CD<>GlRzLj$ATWFskUb%!k09Omtmwu=FkXy2i2d=SKuorv5 z8=?+%8GE1nPzGEfFQ1qbn6vm4a6Dq%ie01xnr%PLyR=^Fe&G?l8Jbhf(YrudaN zZ`1IGl&K&KXrI($Y>K~2G7kCni+OwxIp#VHU*LYP0~-|nx|Va3hG)E7s>#QYsyv7< z4LmJ`apUOAPn5ACb60KCsBEMjE8nh3!lST};=m&5J#Jgd58A5*V%5vCk+7BMU$~y~ zZgYFMad>+ddXa1;*-7#_|aF zFED29(TE5X)k^^l*&#2=b1 z<-e9pQVgYHe&hpBu|`SOAfl%Pv?Q67Ez&=@JeWt{!dIucd1-7V#+73(&AHpKDTp;< zPMOkUZqF|T-J3#hD3^$RxCmU?SBmVV=E8Be_osekD{1Z9Zec6Q-yr{Y$&=g)WKtB1 zcRCl+QG-m94Nw4nfqpk&gT3xy901s>!%Z!d$#z=Gi^5;JaI}hra3JC1TnuVC`f#NEg?0gR-Tfy(N`N4#}oboT*|S zB%gfXA=@#MO)>bDWQ3_)ax&_0L3MApikXnTG0)H69@tE>t+h|<(T41G`T4X@D;p&y zx+0aYR(P$whNc33@?2lAPaDSK1P; z8fHw5vPr(1WGRqMvYE7>>2z2V#D|M_Y7Uta_cI>p5NRvkxnMIrp>d;MT%{~txNH?8 zS>{|k`g(zDRXr;K5AsB#-L|57ey^KPtM|B-&L&-=2OoH1H8g<^Q8tVV_=_jVUV4su z6hkDvPCoD<%H@ZUEm-t{H!`a0O7Luv2W{;$&~lzVq@4CypuZ~q#S+h35jWDwwFLW< zi5u`}p1nxHe|xY6nu`wtZ+HVbLmTo?Yn`MI&AX^^fPdcLjN6ktMZSxDxe9eMS)L~a z*JN8ACNJ43n@;p1*q!@E2&?b2hs?NSD+%xAhgr+HR|;UOy5a?m_Ndzr&&eNqf;d0? zbT*(Vt%G=3%0~yqPLfYcdrEQar1hLjmoAW(KSFfVjb0~y)6BdB-@-R-AAD7^c~ZCm z{N+zgvB1a69CCV{c%5u3`5P?lAN2)G;t!1Wt61N>bUS>#%u7B; zJ=ZBaD%z(_vvwW8Xd`v>Tmj$Da{8J^tw?W90z`S9;uOjWOpR2;-c`K&|ao`o_=q0G^FQzHqfrtRsOrzrJ4NW zPS=o+A;CQ4hmV(gou5I^2+L-bPA8oqU6MZpIUtKtnA*l{AFN592qi4`kQ2q zY?|&(3o=J`PT*JInW>`IB#5)L%%KT5$u?+(rX+KsXOtv!L{ECAM=~c%ev*74%e>2{ z@vVc4=n9e>rWELNE=~dcr&J_{;j6*3NtL(54_W^q>S=G&?eC$-$uAxAi7nLiYQK}i zG3GX-Ji4NuO_2Q3y9P9;0esxg1Gk6|B=9N84&KDL+;c(bwR*-VgUunH*#w?RXG)BN zW5g&5uX^B>t0~hnNd@K_H-9h}qCSWL?BF$Ljmy2L68flDQ5I@^U9r5sa zp9gCvU9hdR5WgT^n_(P^8Cb)4+T$GgAzB?~9a7+c0k`^2V+(9#-h0_M!tP0dtFi|q zPlQKt)+mTy=yT7)YQ18}A3d+Fwd$If#y@k)?W;!d3(Y3jD_q00m!BA-ma^ukM12 z?Ux*D^MYrJWs5h)tm-+Nm9Nilbgv38Pwl6#`3q}3RL z=h3C#%P!JhZ?q4aE}U^Ok&#{0>SGuA=tp^Ij5)Pb;FruRxt8&vb4zY#^BPC+oS*1b zdR(&?$Rp`|gN!`^-e$aR7awanBqPw-4~MqV#%bcnh?Ri9YHizqNsGlE!oMIJ$@#la zfg6#Zj%O(JP6zoLuNL*40{C+=hyjm#qNy%h$}&%2xR3EP#stZ?AfNY9#-*5`GWjSD zeBLICWKp;WD;ppQ{KPBuj)(}(+GB0>EflFIy-skJZ$W$N(K{Vd{&~BWvf(1Uff!KP zs2wHhR01EJ^u&1|9db$jg+T42 zV$rO843bMNfzNvEE6NUT29D4AJmXgdhW-iQc9s1yU;r;k!;5D8kd7Erqrdw(#v_0C zb&v02Ku6E=-3-M7iHBX!z1FwT%NWF`Br7GW^~^{_M>z`}L32}C;OzX}%j-iWjRBuO zc8Yu-;^Ep$idBfW66~?vq)$kzrauDp6_GbB=cpT8RU`Ad2<1q2>m~XzLLzd2k8gT_w{4jH8Vf?x~stG zDC5#z_cJ+c8XsCg9yP;94eR*~bJIH=w1=p8hZy))E#7Ps>786ng&?+3I%={6EWiih zsq~LQ4}MrsAKgyRYm`Z&lxt5zYaGcV?GZ{I$v>B{-B$WtD>{?g1BIq#7q$2oY=yB# z@~BZ3U19E58Kc(WY1)5+dX2K^DaNMviY1UmZP2*nQ1_Kk20=^W&%&K}b->AY#b-77 zXPjQC=TvgEZ*0Hw%eI|@KO>JM2UmP=rY2v=3o1A0s>FS_mQA!hVxI5n zpxc=={i5IT2J?C|cv2v3@`N+eC;2Xp_z$$8?_QoKwr4N2H67B%Bz2F{k8DuMn#dPA z593`6bTmVq!_*02EW8c&wdP@r?kpH5Dwmy&rFX0(3IoJI20Eks3EG2o^uu}IVdPLz z&z|s{M?taemst~RD8I*=8~E(-u?W9B{K3{&zYp0Pq>7c1eWtjt)67MCXs4KGih0V{ z(!DO=&x(c5J3ew88U}72bWJ_CR^XKI!@(i9tX=^wC4*uICH7j4Vgj(!S0ksf&zE<+QQ|hd~lAjCz+#*^(`!8J+Q|X%`-|#j-q-6>%zr+18$75~@0%@Ahi|OUrNP@| z@$2<{9{oT&hHtN$+?kh*_nR+WU;FQCX;Ye&?=0y*TqoYLuDvk6`&7@H!d${5-i>^c z{P*3r!7KCM_%<9d{re&L*5NkIH9VGjckb7tLYKzPXTrSqY2KY1j|Z>{ujzf3odB=1 zDY)R?F*`D{d2I8R?ISzJc5E$vdGRY}mv}q-;+L&1e*0tmx70gOKTKIP zC)N9J4RcUFDqF=la4G7V4%PcWaO(a?^$wDY#;k(XjL#=kc{D!F;f}j=cY6&-?ltGZ zmAk`FiQKh%Wmx~#??7GmBXrR44%7_2|A23ZW%(9J3?8~M`>lGOcb}R9KGW-eL6ZkH0YRniTw{DF=^%x0w9@@RE27I=$m1N&jSByvum|;e(0~-e3Q#kf;2B zZyV~}%{lr@(_dcSH-x|6Ywn%B*A(Y?rSmsqwEs5xPMANb$1;_<-!y+xOVYo|{z-jJ z@cog$NE-TQ4AFSf*YBIn(YEr@To$)I7`0to-1eb4wcSbE3HpuuLA!kGZI*A&&9Sbn z&GeN8CTgE`dc{!J@O|ebKYjO^Z*S!L(9J0(o@M)aGwGckf zhTm{8ri_d&6Q{YX9>EOO@=aqtGpBLiYd-Q$=I{<+sa5`(+KR=@+}nzk+HW~HGR6>& zvBICY?@nqAT2Iv_rfe2HY>wComshH}H+hv>DHqK@s9zF}gx6G0_oh5PgT?20t%rVX!)2erk0e13>-oM+fxt6pxCu(bfxiyDpJkJuwxG(n*V>^Xz zQbO*X;@aVQ$sDKc8DM;VHd%cLnLbmGnUmn?)!A6~=a~*yx;q`e8K(Lk<-O*^j#oVd-4*&ara&~SCeCctb0sQmqT$1-Emx|?CQ)F$6=Vp_nrQ&C1jeQXO{5`?iCaau- zJ2CSgh_RtR&)gX^k3q**DgO*Svl7c>E6m`4!?R@eKs};oKX$4v-156->QmJHf((T0 z%xo%zvBs!z;ZvIJEn~ZvOVHYkqqi)n=&yrRer2t_{LO=;+UL~Tc9I(2^_=uhYwp$* z8LJVV{?_d1?><*gGLNLo|4)qd0N1}mx@iu6&OYhPJN?qktXJVXuodtsSNhQ;KYcef z*14JdLG;vv^E^uUBYFVrw23`TDn5`l#8g02?Nw;cD|1h|p5dA)o~b7*XW$Q9D~N9% zCr;+1#VR;WMtTF`u3L zukfaON&oLxU%ee4DsWU=pH+Elur@~D3v+Trazi{Uor6Z1zpg8lY)o=Js9%|b4rigm zm;e77cSluo`s`dge2uxcM)Sab?qo05UWu-y7-xp@|6}K*wT`~K28^77sPtKWN~3SK z>|-63e-dRwX}T#$pG^hnOgcz6qTH(dwVzwKBh>frK+TWNLzRE~&PngJH$)%*8412; zG#D8X?kf=9?L*!J+&4Tj*>HNB`Rx0CnhzOGjP3N+{FL|M_4nTQ(N!NF`SAKredN9m ze}2P9Kg-A%`yW32*V|rf`N9V;|Iy5W?`->@-}`r`{$clD?_Bd=?tb^k2mba`m;P+} z#eenH&$NB|Jrh6u-lOA9kACrY?)`s${m=Km=gVDR`H`Ra6Z?xlEOzEEvgXmTl%4r5 zaADzyn`ZJ8^B3agQh0x!YcZ2De@DL9Q2t%=lk7FH#mAs@p-i;4{p1wby75 zs=Q@U{f{qdFR>{9F6xV(H-zmyLn`<_Lp`w@}%6%KdRQ;&lQKi&-K1}~k zDeWd1m&)6fc5uJapFr*?MRKfDx}3FA%AkaE{=312Fnw9q)gQ3v{7GZRm6AUlrhl)L zetTiO8s8eFluv|dStRDgFPwQUL`RsQ+Y`K1Zs4|3)e8p1~=h zdFk7lx?TY0y1q#%?Tm+MSt;$EQp)(ARN58Lgxc5lN|jbg6B*W3>Dw5WQViL47E1T6 zRr=$`tXGO;9aYM>CzX1vxl-z-S=&w=BA(J81rL=9zDlX5<91+4b(aDXmjV)(dSN;k zrnxX34%2*?t_xGM$Pe{KB0?Yg(-#KcgtO{a&AjH*K`Vj}{56hdVz=3|YjpbqJLDt# zm9gEsmJoOg@~gOg>la71jP02m*}kJVF}7oDC!ZPIzH7;k`$baDeZFv{xOw;H9l!yZ zM-yAezc_OL=Iw9z?Z4nYATgqEFU@~j=?%x{fcNIBM?<{%juq=iMhc(#=!OlSANknl zKKYRiAOF-RM@Ck>5wL^L6pn;$M$OK=DaYX(wHbbIFj}1Ldmh*`b`$)zJ+OKA=)CW7 zX_w<0br4QI`VL{#(#Xeu?k04d*gb6UT=H*p#rt)3x6bZbRA;qH_&2)ZPL=H0Gq!t@ z?;Pr5hXK;*3y1&YuO8}Kfv~XoV-Ui8Ps0V+s5?Y=I*0AJV>SPMXgfM!U+!4Te_hVI zoG~xMQ+~jW%gEE!ybtpp&beHi4(pxbrb1Xpm!kIW;=HlF=ieUGQ+ukTpLohL#;ozJ z;-}*VH=Pbn-G7zoca}jY)mU_tS{KHuyxP+7Nq(v)KBS{cy+)ZDwfEPY=sY@pNds#* zqO!eQV~EA5NcBDtWk{oXUt(a<*i?L)dWCSzERCD5(mU>cYu`p(HM}}>!`|A*8m?=T z)>smH8KcXF-&@Y&TevrO?`+=enPX``(2k9j#~uMZU&~^f?8$xq#dIFOOYT_xOPt5C zmolgDw&lO=XlNUeHs3bl=%%(i3y;=2{MYXz;~%SM z3xU5Z>P!B~B7H@^TT`%ed2B<_>1(k(zQ^oGnA4Z$f@Rq-hu!!ifc;&2vfqDE_7iLO ziq3a4rv>}3AU`u|3-M9-KBKnN^1p=bBMNV7U-QZUCp4?MG%!&=;IQkbt-)SH+~3rn zvG@$C(VQ0gZSWnx63aMS_x9bM8}lm$KlR(5;5iNK@GoM^w_}I5FJXrZ=c6BUWo-g{ z+!UtQ!n7A86`oeY^kSI49Hy^jjgc+q?7G)})@}>mwcGW;WN49n?&F`_Fg)^!dpDX} z*nCbl48FFvd7-*s1@7FlecR5lQID?-@0KmNb=S^4lir@~zcMy5dD{=orXXu}p@FF^ zWv{IU!55CW@yNfR#db&BJQALXAIpCFTgpDp`FNQBaq6oKRnV2clf3XEIO66H!~TU+ z`evr=x#$o-W8=ixN)w!`{P*YY4SYlExGp@5?pMFjq5B)EJ73aIaY6XHk21CQ#fA#1 z-?}LOON>W&EqS8)rA6agMqc>7HY^`nRGw~tpW3hR)BIg~*gyY~d~~Q>^XY_XKB*M_ z`|p*)=$xGcQ<~sj>Gg+|qVH>L`iA!tO0hGXor7MkHIm(Al_H#PC`E@?-|xoG(D9Ga zyKk)%{*x8z*ZT%{q(TNC>3+@jaj0;=0r~%NhLhZvdeM zPI;3Z@Rrr|TYhc)O@D5DenhYPQSkX1BVm=L<%zzxKDl{|S+VEKJCwdY6yBg{BgcET`WUl@6Y1U?Y3Mh}M~BMv`%swX!h#m= zTS}+?B=@U+bX;zLiLOOuM>wab*jR5Vo%(laFPfX`-r%MRji?>XPxBB@zT@uqH-;*B zjhWy)_#eeBtXz5bu;-3j>(tK&1Gq`2&WHYW>0C*4G-JMDBY!)?apMzwHBLl?OZSX# zzH23b{vioxGGAfd(Xo`?^7~PtOXKD@NIT}Q#mz^e#?(N+M@2~W);fTt9j%$sy zt$It*ws>eXW;HWJ13szR(b)9Uc<*@ss<#$jIlOY!o7GePzMT#l;w$C*i~LBP#KkF= z$MZ^c#mDuMdgSFFgA2_Wd|(=16ccx!zDbX7O)+twfYru|mD=_AGqpsSIK@(>wtr=% zHr-XWSAKebP4972T-p!1pQ&As)nCdNinFHjyR%K+M&5_^=N7-*?J8IQrZ8n=x&QQ1 zQ(?x&vd3o!bAQ0N&d;WEpXOcC|EvAKUVZfgE9GNUT|cPX>_>I~ovYhK-PW)!&&JLU z5?2&kGd-KcmzTtMsW~FS?5>sS8kSy^$ZJGEH>MB;L#S7v@ zbWh&@x!HX25dObEnEjCXW$yXg*}q{tP39qD!z6APlbgqXddcJ%lPS**dcRLB-?`al zuV9m>dtMw-YD@Vr~hrilMn zKAtaGj~F&%%XOtYyMS%ET>s1dZg+j>dlj=k?Vi0%mx4Mi{^44i-^??|W#R_YmUzUP zsZQHie#R>9Xd=ctnYLDH-)r{ljWM3ReJ{^}n;z;VZ6-fO>?Y4&5S-S_GbAa-aASfP zUgEkst5fx6@`~?GXCHLu9a)||%HyP-$1}5B zBTm?E+su1{xZajMT6^jKew#Ma^=*&#yE?IK%C`9#-n}qY^BJRMd>zHKgF5Nmyga$^VcdM=A+ zf>|5I$F^uqi!;ItyN&)fgBvf=Uu~@4Zo7~7Jr=%Be<{*7*H>?uet?nQM^#(jZ}t4F z#-?X(wVrw>V6qs%p*=fO@AMz3CvpdEr+=p2oZD}EeZ7-sztws0y*KcR^Ld#F%_U5y{~Gq;KFoKqI9Z#FkmHzi{$T-Y<~nS@cp9X|qk{57(0UBW|9p`Dxo*;eCGamm7WE_Qp|Q z>h*vJNgFG}FFf8yT9|hDm&s4pdp*TZa*uZge#QEF!TO3uO?ldG2d};hUTyzl;T7*H zD7BC_(H=PFF;8%+&Er1ixg}Al%{F;<_IsX9m|l2E+$Kt%<53;ulH*-zWZj^P*_`6} z{WFf=>G@do*QP%0lod|xd`E~+Ki1`NXXmf$-O{|Tvc%eETfmdUwcgTl)%;Y&Y-Dpk4SuveM;vUAqnVS<*}qw@HjDIFo2yec?tAV%P0jGAi6233RQj#w>)qYU>)-p)F8jUCE;p8J z@nBuobJ>%1Q$1ME`KRl`-6TJ)wffe%)>nL4I6ewr6c4%qPZSRt{dK;@cq-LLa`{0q!yBOd{&3?@BY7>qnLmayL?#v#nuZCwf7vLM2J#idB2~}cV$a)(xmH4xIYG+)uA!Ho2m{E&iK6Z&u=2nyXeZn+=na3125=P zGNYq#ka+PvJFLDLEAq#RZ=_4$iebI|lD$6$Z$|#y|7d_CNuOsa4A1_1aq2f)@Uhk= z9-S8-I%2mlj#*FAV_S zl3h)IdXLeI+^43t&Wo>A)?|}iErmaEOCeI;KXAS2s@%-USAMdpTALW}ato7_iDzz=-&vzj^OUR!B z@8KyOslPmk%(@LY_MwX~X4?b(k*~z`ZWzW=nR3t9=gpD&Y=U>sRgToRFy8a;(EI#O z)>HWsFrTq{_92;{;ys~9>NkMt4dB%~)@AF!ZjAFwz%5o{O@W6enkyW(&5Xlm40EjS z*6scF<&8YwxmozOy#6xtPWT7y;OF4)q)ml`yaVD$y*|#osoQr~zkP-CS2({N+{jiW zm%q-t`FI}OKVU7e`+wPc8#p_w>fV2!*O?5%j*GV5LOmyL=4D)B!-{D+Ajb-Jzk6tyYEU9Gsa zC;0ZCpwk`D=?HWZ?@Nyo|E{HMY9}uGuyoy7|BkH{+!*Q0=L{Y-6Sf{ze&(F+qtuhV z1DTPZqce}{+i2|J+U|2%lWuawlEyTS`D1v1@yvws(dQW#U8QyAjEUmR_eV_+=bPU; z+)jQP6EJppwLQx|3h3wJFTb-HGlb&}tu>cl5I**m`Wib?rn0Vfy>oK2i?T%q_&g6}C! zxR!m$oTzh-amJb<#(jC6?f+o;>;i3m=pOj_9&6C8^lN4;z&eN#=?4zKap2|K=80q9 zHv9SQ;@5jD+!rGl?uF3)mNsx#ZLd}3{+1<_M?Z(3o(R8m05yh}+pri#@Mi(k8g8xM z*4k~Y+t!+Gt=HCCZLQPZdFh7hHqW~1Q-AeuLtowhcVGR%$DjV_)jv7sC%5eDnz`jW zzt{Z5oe$T1FY@v3bD!+JtnKTctN+OA-+glB|NG^?&mT;_bl>Wq-1pQ|OYeKR?|o1H z_#5{>HU68s>)Tdz{NR#@dsctorH3Aw_x*uieEOyjzkBEMZ(Mfh`N^?Ip1bRoul@8a z`;GT)KKPvvFZ}c5?H6C%*jx9Fke)9ZRW zR&LpS>}z{&xb1>NxzFG5^xh9Id+u$=wtTxSdGB|7uWa~PuK0=6Tb|nYw%TP^y?xGS zW>5a=6OT;$N`3RyA9(nCAG-0+cYXY)E2b{_r>=WeuUNQ$P2-y9dupT4ZT#0?Jz4nS zvdq5!vG*5G{_~noeIqZN{W{N^WCCJ>$6P+5s@d~;D#B&GxeIs4C|+5|5WG7;%|HA; z;o@EYiF#|!#lx!+5>fu$$@?!cGKAsHxE(owN}mIY*Zs#|*KoYT{Q<@2=Mq8jZ{uBU z!hfRXL%8#-GYH+Gom*v+{gL3&C&k-wehQmMfWnuKh8oWn^#!@f|7QS&|IV23n}hG~ z48qrs2_L%-!y#PjrG-PyuPEQRoM0pC z$^-X{f~20!Xn=vdi*m&#gIyDN$$; zz>^krp3#2!Dn?pwrNr3Dq0=upzIpbwGVgY-TyV##+g7YR^*Z4S)9&df>nkIwKvM(z zvfh_2SmxWAs~Mn!>H5lr%Kk#z8&=-2sM54Ne_^hQb$RN_6^jmR;g9e^7x133 z=L8htze9wKoy&qvm0zyQPiBV5tDSe)$$P^5#A~p;*Txl~J@JY+b}s8WGE@1&^vA@z z@(7;V0A37~cZj6fe4v`W`zt}bAenhZ1*v$#tUrJs_{)VsidW6veGLi1vMH`Z`^)2} ze8%%ref5b;ue$Oor{ej~p38F4g)|TULI5d(S0>@htK*xb@B80tE{kOkr{O0g;@gE&WF{h-j4C!w(NXbjN1K-g}2l)<28muOqJ< z&1>FE^FwDi_mz1Ab6=VCH>mTT;jwdH8OmSx+ozuU%AeufSDv}Ad@%QQ*BQ=zWlk~o zb=E~EXfQe!59Yoe^VZihjx^oFI+rR1oCa(H>KrZyI0M)Ybb)E$EZ}tDY+x*l?bBr( zk9?0f%t_^VPd|DzjvdaQKRb97yYBE6%%$ZSH^-g+GIMwrXnd~y-{OystZY@`di>&u z?zhzWa5EUwwx{$vtDH53W67%-=MV8Sj~z|CmGl>L?%Lbdl_pK*EJ*BseeW!m_P2GF zCSJuIear(TCv$Gw#n=)llg_*9{jFl@z_jj?=IUY&b`#1S<*b6Zv!nd8nGco|1@h+n z)_Dp~-^2OWoWJFKO4Bd?J-+_pnE7>Y>n9*;n>$qeoHx?-BO-~-y-}{_$4jp z=kWf5^K>bhczNc~$U9!t8EDKQ z@cx23RN{OCn*kpQcekBG+019a@lwk4+5S@7?R}-19A{O2vREoEVm{y&>`LSxza6{E z(!P@OG4ArnPPF-ta|T~$Zz;j|>N8WZImGQax825F!@LFaG;SNVe&K1*P9I|4FTLL; z4d>2NC!POXWA<8|!)vbHa;)J}?#aHDeHxUp_Ht|{6S_)MnRjl#gS$+?^W8JJGvkWx zlHsfc;kkBZu{8Cv?o!;vot|U|mK94!7WS2cFIN7Dzb<~MX!Yz(?D zv7|AwlRN_N`e*XT(;Kjp=$vQHTr(TXHBV!QfnU9|Se>HH;%^F@sjqC#oN4HAMxPU- z3~?KCy7)FYg?D1i=hbEtHhwNRPjmj=3TU#RuQd7X>q@$_r=NQ6qn_h9J6Y~H;aTXY zbEGE|udQJtba!kI@eUF%o{>$^u{Gpvid((!2_O1K9pA`O&zkX^wMYI_BKcBHi`pIE zX)cx?J`caCv;)%Dy@NRCtSi+FiJx2Sh7R&?<(?&QqITier^f28%CJ7MbRBaDqDOaW zUKaXu9^ee{5ANVaow>tVIkZLN-U}VD7Z-SEok6^YHvcxtM*C2^MpdR5?X``z+D2Oy9aXL#+N)@=mo_U}d2QC=yhw1}iGL=oGg@2hBJsTV#O;ND z;?|oBkh{3PJh!OxKd{ML_9C;_MFiqR|YN=jC(;HD`!YpSd~a zv+>s)WMg3mbD2dOOK-QT>nun1)~z-=RP@gJ*7^TBdsJx3v5q}POiw0STv+jpz-{}@R+v+^j1}mJa4TyfmB&?vz_wuQA$I`$~ z@aMSejyb$XT+R?LZ00QC$GEo_{5sq>>q2Ml>S)8=RNP!{&TZxl*)3i@YH|;e=N9mO z&_ICH#6IHatkoLoqAD4Nr zoIx)3m*UW29_=*&9Yl{Ml&d!X1?$S@?HsVR(4hAHlrhVhxzM2HeLa+~&34^@{F{Z$ zKo-YS@bmkSk?-#*wIhq;?nFC)ES8MfBY9llE*}THdono+Pcz>~n9i4X(%>=2x((#H z`a&~=Zi9Z)q4zxRPQDzYUXFRxo7c}c*nnNmT%#|U!+X@-XWM{IhB-0(+JNHk1pYdc zvo5pGjsy4e$S*RqpZS^#nUC~ofo$;bA4$Vw@IwPMm>SR^hMW=|?hfcMkG3Duq5)b= z4QTC4f0lQa zeNtzQ7QcXehNihXt2>qJph2DF4>d>cjnOhNukK{wESDH~`9 zduRup&^0zR!OkYnC6rTrr%6ws9MGcB>h;5pn?E)i9GRkzbM-IUi`j0z?9J~j68}@) zj?@;f9Z5eB-rLh#%Bn|)Ab!HR?!Txu`hzO>L62v73wB96+{$+!0tH=DwLh`KX}EgHwt2^(cy zMBI`-gAAZ=ZJ=+BrCA3-zpAoCEq88$|AZ-e_}AIyYC|TygL_J8&(1@35x9*5y~fe#%L#VfRR+x);d$H?iQK`|3{q! z?iOp@?y{j=anoI%g@4g>A9HfxE{z_N`HFYub&|8;r*WpKk?+!TLY+o9ohbQE-<5y{(rGe| zFW-9uokn*MO0V_he7+QA4a+>}k<2!DdPM^HuC;rMpiMMGIQZ8(l)03Hx%pDmll=j| zXN$B=aFX8T-EC!%r6JxgM&4W;@cMf2DZGyh`daU-Sa9D;pCH_4ML*MGyXhMqqOXmD zbLlz}$MMdtk2>R!1&)=)PUU{RGlIjB~`7@9?kW^H@GVB-wHce4h3B zyd6ACz8mAqcTcv%)3MCOd^2jJ;7#k8bl*rP--+f}7lv%ty$8~l)WY}NNB(tB;hZm}-k z(>+!?Z#a_OW3yS(3fJ&p5`0er-wyarUgzVx4}2HFxAUQ%QmoiwMUzQ{OBaheZ8ks0 z*VztS-vbS}D=kNUu5|qv_Z6d0yGfgHdrI|QeK(eBh9qlh81on(@0`P|HWN1wgXgoj zSAja32YgyM@CLXx$Z7*_Taec+;8bTQcYU04(O*VCOMb|Pd1^nzb3W5wa)`&ADe)%T z{2xFs@U&+&{Y?>BnPN?8&hg}JO)g5G(Qe0qbIBD$`8~Nl61Dix*Iy| zh6a+!arId)x~LnWPEoHfW4)i(?;01}n23$LqL1W&bd(()?xW@~dWFu_q3qW5HwH}N9(BYC*e8Up0DTZ8T> zUeQ_Bw0~$a3n-fCylUZHYXInz${H6MbQ{q@c7n{%Bk(Xfo`b$ldDVAzB75qy>Nhzr zFC|@ayX|BQ9&_Mp@T{idu78v~}R$u%6)M@nC4YPlG9u zyhj7+H_}}mh6YnS8ZfR3X+R#L!G?eaKK{`w(yAvkFj4Og0RL{Go|5j8i$I?Uw28ZQ z@E*Eh3K|F>0SzRhT;!F;SL%nQ_nPdH6XUDwS>;L4Vp2ehK4_uwRWgwI(gBjtL*uJ9 z;t5}p`8~+|1IT<+>@P>5nKw2{_k&;767jvLgB>Evci}P7ML0IuN$^vDS!0xVinzEX zi{=)#Am?S*_%iE$8H-ZZc?Ebrx5d+qbq9GZZNmVQS=s|>>YanOp|IVWA?}z3Z{u8F zzpqEviMP-XX6SRl{lux18{8*6nzY#74(i94ReHb5tudGS`rBS$>`m+q%ExQ2V^)IK|N&?S4= z;%Tx(hX{C zyIFTE4xT%3XI;*L&#gm7uJikV9CgUhpQZj7dlS5iTk>WR@fKNM?l-vmu$yf5=xewW zB+0w(;;7|5h;i7oW;nF{wC`k&-f+Ub!;AC(V+t6gg(&3WOsXVF?KFG z1a!F=9Ww(C!tuvA=+z3XWP4cOjP8N$LGmE>j$-Lz^i^MvL*Iag4?)9daRTxV{5r@Y zH{#vJCY?ilF6)r+!{7KaDha+l8l{Pk-78Cbk3y$<_*`SKdT{Nvg8xhX6e=PylXLegp_u_sG$;3o@x1GkfV`j46+wGZ+3`jWBZY}8;EVyx9*X&X7osyJms4ztcON#AOmU0yjR(yy)_ z+KGNv#Lc});Jwz;29Yf)Lofa80rjzbD?vKZDG}0!w2IS5oc%!@*${cZfRRELwcnYHe=3*jJu#$3RKL40Td@s9M2BH`#5Az4fe=!=@?@dcrT6qWDIQ(I}f<6hcD}| z4tSF>s6i%bT%mF3VaB1JUa%B>0NGG?6?8yX?6?}e7yGX4M;kvWJ*v(=yr{1v8$l$0 z$Qv7IoFRKlM+V%w6Fl8L&i)J84BEi=+H9e`2EAmBH&(@#Lcb|K))=TW>*H_^_z3$< z;Y(vy@v?F5wUP88d)#>z9oXmVMc_kW(o>I{rx^p|uFs78Wz^Jh#~=Ls0CNcUm;2vB zdqvjlMK|l7B>pHI>yBU}gFhuV`pbrhi_}_r#p0H1LvMn zcu=;>&Kx=)_ITZ!Ed46ZnpE8#g>G%rl+R?a!!y>-s!u`o^g^>%WW!$d1I}a{gI?V$ z;9+=jKjW~yt=Q?Xo$p_WKlcJ@>|c|^&Zh5Vi?)sSr+V~J?gP|AW$&XdD!^AvQ2QoEj9J`x(^iU7A zZMltoz|OL|=|KvMwo-Y?jF@Qir2G`kvs3CJI7ttjg$XCZhg7yo?>ZZdOdMA zd-mowl?fV1){9Sd&w1S4ZW|=G>>zw`zsEN-torTU9-r*WtS^i2i{c}AKM#&omLuTU zp$+Mtxw{G9SzKTC+e@3BN_or&d$1Ey9@>QgS6*ELd&x>7H7Fm{sNa2w+*>arhthz=Ww-%HviXH$7fD`BMFPg?0{;{SvvTPInQ z^~cc@p_$g^Z@iK36(#@o+BSncb++5A>Ym!~$)5ata6#KUjNM0bq4l%@2mTiiivPuP z8{s+G+T!%PhZk}OQf7}58)zT8KBUluMSKCVRTL-46&QQx)D>FbVNmqb>hckQOli++<9 z!nYUom3qNn#5%T%wEIc72R!P&&@TL2u5fHG{(JBje&s)rbkR$YY0x=JKAIzFcA3)v zA5mws*RCgnmq>P>9iZMpl~{=uBT?aZTF zp-9MgPgG zxWgLSL@((tMb@hB@ahV90==LJeWeq4{V#mu^;Pgqan)pK%w7-bou}TC2Z`(?`?DdR z#-3dWy;O2gbB>-}3%7W&0r))M>!SYOr2f)#4~F1`euvT3Vq{`;E|+7C(c11 z%Hj3Vfjkgzi_b%uaL{Z2etYhxJxhO(T$tuc#%#k*?$0d@sVumq!#(4b@qkr3R-5aZ zL|M?S8gknh+qBr9gUbo@;u4R%vDco0+3--ATu`bJHy;F)cJPJEIi_Y(@f9e~ijh2#*pC-Y3 zob+xGPj--SO_JihP_b_&JX^GA%;?=v*uY2jL~h3ZYU=hp1wF}E_K=u;^k`&g-mumh zwamfomXE&s#;?7?{@md>YXw?n;paSCZfU2DyU&&*yz5Rooi7@$L3@eyPXoc8oSswc z$g^? ziSU~qz$b9XU6|;@>?9vP5x`&f&V`mE?SHHNJl|UU<5unIx%9U__#^G>dE)QZuhZV1 z>0h1wQ|<40+Y5<5(jK4tZhYI9w9lt$-SY2iug`VS*k0}Td2&VWJ=*iL@zIw*q0fCt&|iPxCl6>p(8$Car)y8p zSHH9I^V%1*c-P_2Xm8M+(RbdW{XyL?AGkw%gkJo&YyVXHguZ(7Io;YT^u>R;?Vq$? zD0TT`muSz>%nARtQ~QQqZus$&+B@|0J%@f<`-dhTtlO$RL@T;tR{Mx@cQn*#FVQbA z{p0^*ivDrRGryyKMgQ=XZTD+$(cdrp(&x3m=+L8|nV~&KuN?Wu_i3Ne zZ(Z5dsJ%vuVn3Oq{YH`Wbx&x|(dHdLe?j|>(oc3KwfCs$rXPP-`;Sr&E&ho1AWd;T z^)c;3di>k}?Q-o!dj5sKeq8&JZvNu6AJ(3vdw+QMKWJalq1pG9v^Qzt@BG=b+Mo0n z8?GJE9;HL z_Jyt5zx0DY?fQG|VLJb_-*{B}nBIBw$`S2l+O=TPtAF|K$$wt+^w5Oo9`F11+ka@k z_1({X|J60$zT=+jiA5R|G`TU+|Kew>%$l1SmGQM->ITyaK`MfL7 z`qYIzpNqHt%V++seQVou?jL;d&o6)C$v->4?#Tyc%sD%?>zUgxy8e%@d-q>F`Qo#4 zru^aJU+%j2u3LWeuiw4qi!1(O{#)n1?*kj(HfvcP-v0med6TS1pDG~|Jk|DMZLSDs zKEt~cLVGg&Cu&{@-dv#eM)eb4GRl9Vrk5AVsux?8I%-z%{`|Qo!Y{_{;><_=^q;`} z&5CgCdys6?nQ}_MnDBYH{U>TZhI@##c|7#}EN;d3pQ!mb?zxjsxGxW0RmN(2v;G}_ zh4qk5;g#$4>37UQev-MWx594+hL6HmlTI@D5bp}#9tHvx{#L@nNA7lh+9M^L#u8}z zglmu0+yEXHWG_mFIx3!U7h|K!^OQmEmjZZPkaWKkJl~jl%FxXIw>Clirv+|Tko@KZ zP`HepZHzM+fAa1SWYbKiAbYcfJC$o5Fx$j0fU1M`WNH6~pz0z>l#}*qsebbRwfAgk zGlI8g>(<5Znzs0kh4VkXcp-;$U3=39r!H8%dganv?_9lj)k$A@?VS;9;8HeczJW`z z{qtB)b6#L@-k(=GZQu$^dddx4ig0EdxD@luHgL67*{wBZQx}_)-!hhR_!~h@823CZdiAvJ3ze3Ck$g>gYcIN!xXRD z{;l_sAS|2WTH+P(Q$DJr>MMBZ^zeRH$9vK~sCf5%M$c8fa(WQu_4jz}@{yYG<$OCh zjPOl=|CSp-#%HDT?V>ib)S8Zb)K7sYdMp@!QO)%j(JRe_1IdC6Bxis9W?`WD6ohBW|SV+0z%TJPLP_zlB` zxJ@o+h5>7bHVr$B51QSL$Bg5TL+Tkr>z=%^cj|Gzf0R2CygNsCf=kIPJ;Jf*AL3e2 zVS-Ko-z;Y?rd8?Ssiqfb5Aun}-vj-6lws)|be?B^?a|4{qL1wzD|7PqC0Bg0+77`t zyruZv(6>Ttn^`!dGlft1+KGqWlRBWk z;zk_u3uShgUmJdv`889%Fh9i!^V8mbl`qXt&kP*Z_6axOuXy3}{YnR(q4PoB`Bbhl zUbTMay(9?BthkLhEKvEN?p5?N!G+>M|ML3%%oS&RF6JyBS)=`o&cz&iX7}s$JK^3# z^)Z13LeR~`BeY*MdMC9iI&07}-Vu1)|0x_WewzxY8gyngDG}bcMd9fHR`v^H`-3VSz}P5LS1w-WjcFFIS-NOVWoBpERaEODPTMsEx9wFH?z0S~ z<}as5sPH6TE{Ax{g>jsPv1r9|zi?axTbbfDN2k*VRFnOqLz3WB3f(qw*&97#q6J2% z><=WrGh&Y5314r=t@q0QU~U)*=!+!o)8)NVe(xhc@g*t*Ty{c!U(Y-FjrIo{aZeB8 z07mnh$$MpfPmqb?DZk48K=NPZ3+)uo@Gc$amJ>TS4t>3WtD}MOMzEb&w z&OLZm_8W>2h}zv>@8`;-Acff|0Qi`vzt)33U$Vo373d(f{)Up~!`|N7&TCLxV( zN`1Mcf%=W`o-o~|7IFP~0mIlt^53L5Lkk!;x*MFeD*QCxpt*{0PQttME9f)Ayfn9< zyduO6`jOH2=^$=6f6&h!cHOP5`IdA<_fBx1c9wD&&M(UrL67b~V;;sm@!k~Geo9kU zo4>EjnwsIL<}y;OuXBPk$9Sh#Cf$ce7#?4cXG~>OAI3Lsy2$--gy;ORPL{Ki<#q_u zJjpoHs($Qg94))THLn!LQMmkcc37n!=Z$%Jx#XqzVZ3Cpf4nB8vtGY*)Jc82Tw|W$ zT*Pl2jj%`EF(1=C;1{q?WZ0#gN+%jLoy+>VD&w%qxemqkY+q3Hv^dQLIL)2FV^y4T zpPh%(ypPj_^9FF5{a=sMBsfh5I8B=8jwVyj9F1iA!0AVSBRCDm>8FBY^)9t6wQ2Q> zf@=c!O&oGNF(0-EFde|@0dxbn=JG4AyzJ^Xn-*ovzY0mgQ%#S0ccltoz(KpTCO{*(NK zudqB%;1+&Dy>C5k@oMP)4sP*m=-z`{yc@c=k(YQ_d8>ZvYh*W=4ZNt{m_>4f+|_~m z1-Xg*OF``N8W+l*?g(OUpBA`h2XLNXBWExM;e!FxT#4-WLxOMdc|vETJ&#+k4LW;g zvI+8?C4ziswIJUa2;92@_=q6ik-nkuV*yN2H+`p3knf1Ml)uKQg5o93Gw2a-3NM1f zhhS3xodC86FdabYHj3v4@HKaANYSlo?^v~P!LkJ_m*2T;^yUrpPAn^2H_4?w-V{Kn zmadt=$OB1@v2qa?<}j!s!@Gy!tizvXXhZRSC)6dFwLn zmL6+`QIf@rs#{*hsMl*$#@vFXD^Dus;zgt0;Z4fHHP@Avlv7{vi{6Y?7!3-pke zGQW+KPw~c%1ui9_;)Y{^Z<3$ndH5(yzY7AWwx{R&#H%(IxRuC?A3kfs0tFsn*bi`% zMXoYlwXr}08r51wi|(acI_g0tR?}zjiUBmDTc@H0jXZeZVYDW6r8esS+{1Ewz z55n-LE9$TCi*SoS!ti&E3I9B9@r~jt{}^u7H!S}jjEV0Mb`d&Chak2rl})xRmEj_E z1%2xxbb#5w80{t_H+{bz_0`H(P~Q_2ZUmhGwg*u8%3t{jx&c(aa)({piaQpsUb=ko zf;(3)VYYtd(%U{;EhKCSVU#f@Fwa?4QK-zmQZ1j!YFJ%yhR^LsabmH90qKgA3CN5xaSOOsIL3;X)-@vd~?qcHtG7C^N@JtcnC`g+ZU zDSr6q4DHG%bp8lWij)h(6t7xeAEkU@-4s{jlpH_hgZkp(F9p2x>Tv$Yx8}Xxe9`6U ztIl}7Xuv1lsNGNN5-R6^8d-PHU>`hcSZknppoSrAMcC<@Id@iNs}?tYinz6&z3RcE zwX7*Vm-HT;h8`@}4?TFaerQ)&d3t_9yi`TJv3f_SkDSmYeEmd468g>a|7D zA`F)vvLtkpUmb4I$bX_HfqQM}R4d_szQX-)l($gfmV6RT{U>V1Pw3Vf%Y23VE4=G_k~4~bJ5an7x;OGJo(kP_NPoD(y;}tc z9+d~{7>#f`HDWZ<>Gg@xXw?;q`KRei=jSj=%)fQ6$OK{=&zP0G2K7L z-dhEE8bm2pb%O&bFH0*YG20nFKcrpIcaA>O(D@zSD|HIRtEN-@6#uZy%CiYa5kKW4JBP}b;&*Y|H^o~$KmtmY+uH9j_S zoVcwqV>L(F8UN`~oi%l~tNqhG-h5h$Z?v=4v61gIk#{rsYERO5v+0%ADq=Ztoh9l2leJG z=2!0n51awQw=}1xZ-#S-r(2K7UMz1trewO;Ma;hB2WLML%-J!AsC#fj{Z0A8DW~)c z%c^o3v)SAG=F_C79K#)Z$M}(7o#&1?5zd<74yYtJ{Z*>o_lriLMNfI0{N4dQ6fYKm z9zDz(Z!3#l8ILYKoI%y&-8&_kXkNCRIE}n_0GohmU^8$A_eoCYm*JkNY4}y{JBtgS zIm$^{r*r>Rv;bcfnRCvwSI*f{j;0DF+Iw9pJi|OYJe)}1Vw36bTg~%E(pp-1^GIE` zcnP}xbJyhn*VQ9t~h}_ki`64&XkVXbsJ(sqo^YQi++q{l+m!zPBk8?7%j(dDnUftt0j`C_RwaOdrdkp7|=1jP%{AAu|8acEzej9roio{Iy!O+~zQ`u-wc_NLbG{?uLE;hODd zKRtV-KMg*o5O%P?^wj(Y&YY>W9r>PN?o}>DY|NUo`%CSdE6^U$>4}(UWt0U$|lT_>KNLx)8UW@M|MyeWh|Y z4L4b2U+!;)oAcZ=oGFysijsw!%6q}5)=lU*(CjTnuF|1^FFk>{LxSS;;7E5XmI*%dy)H@owLfB=r4}e zrt|g-3wpe>m{NK6^3o35NV8?ZKJOfvt+jV^W~;xCyCc?X8!Tshus>Jl;};eku{sk( z_oeC_*m};KsderzPaMqKdvDrkxtrQ{P|kXDgm2t!+j)-+6-zrh^WJ%DI;UXkk|Q>e z*$xek*c~?&ZJhM?-b!5ZOQzUgOr0B`N1MIBJmGgayMR6HCe{mHHbl9yNKRphm-*FF&G^6<0u6ZwfpP4P(N^vUp%e6w^-xs9oCuN&Tkh> zGigiF*6z~GE1nury=UJ1{77^Hca>7_81g~>Gq*lHGP8SVq~#yGq4)jJoBOt1?L)q4 z*rdNcJl?EC9{qH96*9w+uCb6WH`#o-IiH7L^YAP0;_-XvTX>{*H1bEVCxANxcsPJV z0bGR8;MGV+6KqWQkXJ7crB_;|d$WwoHHRHO)yCyt3&MqC?d8*&g%gjzCP8@Z48pGl z3cs2wSNwAbtLNQ+qCVbn=kQQ?J>kkb46nhxw!%G!0MVrpsQ6LB<@TSbS;dR!yAP;v ztw|6K!}t;2MbFT^j(DQGB_GBAXTriqdh7Af0hGIIOn7OGd-s_5kBo7DEpY4m=R}ic zCs1nuUKCV01Q}%1lCRbT2v^zj_;vti%O89SzgiQpMv!>Ik>ce8xKaMh9~1@2_c1~8 z?Vz6ep7PKdgt-CyrQrGCBJTUANb{SVSD;!Rt;pVk=ocQW51?=>TAsmZH<*U_56v-* z4swHmGk3I&PUHFO5=LX(x@^V5Pp*1{yAw|{Zk=CstbVGs0oBINK@Qc&=cDB&cJldxnhKiKP5gw=lo! zc~^dEetLSyubPcO>$(&#d|H%w#S?~Y#*eb)!XU+~W+V77B&a~YnMb^Q@C`(fS3b4> zOD{{OUpv>}c#rSz{|)y;PJ09UAv^VfiZuqBcc>g=#?3h+$Ra2^SjG}FLcQuzj1hDe zUgZ369PEctmpY9f)^YZaKRzDx#ug@{aII190e)lzTLKa_a~}A=Ab~DEI_3?=kF|{d zeLw$hWyVFXhB|s9I(qc){B_XoIa-UH8S(A|Hl638J2F#X8bzR zaA&uzVXPN7+mFUG+?SN@>toR`R1xYB z!;#-Ag8#u|vVo}Fj30(07y9E?)g^qN?$PId4~IIBrMZeNq;h@oba+m7iQ^x<ol&?n()hbk2^YZ+>WF;(+3%HO>Gc% z31KPT8wpoj!s-<0i6=@tT5o9r!!JyW(`D3+1!DcsGw+K)eRtqsf~`-pXFwGTfDFr|fxA_VP9n z7qq@AegbDD-4R*Och2$rZyNap_5UWkeQw~U4l(Wxd$pN3=LLSpiSsS|+VE=({KQ9p zf!|rUj{(O6UjbeSd>I(Fm3rtHp{e1M%5MN`EEWPeuDUlXlQF zrX9SU``bes>9nY1&0KJDkB!hS;5*nv^e>cOifk$~A5`b&*yoUi@4o`qV`)R_?gMO#Vb8H!AWc{`(JK(9(NG_|r z(SO#}JKK=4$TI3@T)&Rf&3DS|ruX`YTJot6!Dil}BZlo!Nyxa=#S0zp8xo z?xWx2+kG{*@Z>9Y-xTt7uH>s*EY0%TWamgz)>h@KM%pMU!3B+y;q-N5@4crTML0_= zdOWZ%>khCyXS1nX=X-h5kI<(gXT3gKv_tOIMeamK!-I;az6Jq*K|Q=8w=dIsuy;xp z)89}}!}$a)=~{Rx5B)9l-Gsb`zrll-M~XH|-ZjWk=?Q*5q~qJu!KGw@{3PoPeN%lF zzM+5AyZTAl(3P$>=ii0U=J8A%sZ({K>EUH~()8Z8Z+w zPCQZbE8-s?O%wI@h6u<06E*+B`_Ds#ob+B?a227>;iL39g$Iw^l?9f2 zG2y~rSf4*06aO7SS^>pBJjVT3xP@P#Sl=H4stts0bSlq&GAn>{1RMOpj$n`6Onm%E zkX~{h-?4EP!*UzxHml!8_g_kO00QNIpLkB%OFm z>3$i&47h7X$mIlC)VeW%hXVLa0Br!Z##-?j84wCi3*a00Ay4ZnYJC=kWkS25+4SP7jLaQ^2kIBS9yC?Ey>&aC!jU0G?!y$bEL~ zmY4bS7c5?I>(cpmE?uAXPKpCrV?pRoDgUa#+%Rrv-t9!}96)P84F;ihhs$64ox^*OCk28M0 zNn1v=jXtyC<8km@_z>(pjP*P*MicU$Y5e`B7&drl+TL>sf6<4G>$zxCv2n|S#y{g6;->Dgp00>q_YUGpKSfktFb-P*D0#Iuh+BJ#xX}87TH?NpZY+IPy6R}2 zjBCMNo$?Lm!D6O=xQQ`{ub*bL_gHod=4kIPpGSO^_os}lcb+0Yjl0L@!MM9_ne0$O zK4BTOP9oH?rBlCDCGFpmc3PFRT5D06mht}uP5Dj3`nJX%VfmjUeUs)*`F5H$7}NMg zQh)n$8+gR;oUf5i`7|-MOBDjWJPn?plXUyWBIDJ>reiwyxW?h`1jc6Lh#%(vCDLmi zSl?(QZ***xJ+uX}l()c`%O%5B|2F<;uv+o)1%JkVTYzIHVb`Z;a$aYa) z?k={G^!3A$%y-Jy5a%rO=@D!)jB{=tIST$GW)(bc>eAQ_M{vi?hpchdmG#}wp60D9 z;+t!+Aw=`wFspK6M<9>ThM+qnG_H=~_j&mGZ0uv}5esu@0|`?solSW|-agB!IR|WC719&uE9r4cc;+??zo#dT#d#voD=fMM_pXe=k7H*&RouyB3F%@@6 z+K7{f=Qa(C_9}-L*PUhKocXYT@3ws|Il?*)``bBpM0v(?y)SoQ6RMVP%$+riCR4hZ zyib?!4dmMqukrIWLB6K<<@VRfmwAiR=6fais;p0sryZ%RK3{ebU;He2NtzgZ{;JaI&Vx2@&Hg>`AotkGmJE+q+9Gna zBbQ$@Kgw>72Q~?vEh0HG$lAAWb<}(9L_GSa}OHX?XKZJ+_W-$1<+ncP-;` z)|vEWucZz3jf~5326?6%+?s2~!OMxXKW?W@Ve5Bo!oiM+y+AU-=QY`lpF67iV5-@v zEA1NtlvjGIo(R8<)Il&jr{SCE@^ZKN>dw+dqi?3|)4y%nmjAZtSj{g7qm0H;NJSdY z`6k)6_)}Fpc&d%{?-w#hpQu4Dc{tw%)S7_xgs+AM{zDHRyrHH*hom=`rFZ&r&#iMA z;C&;#O5qx#VtXHTe-t-Er%|`|3~Ia@#@C)e(cFLha~MVQ$M8^jmJ|L2?lAlk+x`kR z>;@e>Djs_zbZ`Izhl<^?aQWz%SBDk6Yue?va>yAW%h;Itn&IrC#S2#~TFj}Q3zsrP z^uiT!{=y}ne9bXvcV2P%{M9QsKXc_$Mz0)Ct(1W)$R}`Be#Sopl2|Px#u3hu&ck@6k9aA3Au4MZHIIPIA)qT*xIHYKLTtB=Y0Y zq+T<&eT=-EAP!(OKgo;A{N|96gP-!#H}z9~ck>PYkM7NUk^EHV@KKn4Zyyuy=ftB4 zj6TXs@h%QvItXb*9#k7E9}MCJ(afX7t9+D~p6mF5=bY!@kK$buI)Gukvw0Do!skcC zv-l}I>~n+@#>(&V$HbN6!V|3t)&R(VxQ4m?Dx^J zq%%63%3n_~zk*J^%KZ41Hg|iu9sMqfPObaVz~u!I^rU!dds%bO(*1r1Kk1uu5ixBV zSE2I>vL1mr+=X`c4c=OSCNnVnIBo~{1n|0s8-{C(1H-Apz;JtJz|$Y66ZX&V@O6DB z?TsJNSGSi3%!XraxEuNIfLVXco7+RrdpyVeS^5t1X2+f9ymQ%}a2UI#dl@fw9n-qi z=INYkU3*r!-5U!H44XV->iZctFdm_vBc@m!QMvBQTriC2z2I@u4CR<}cD8usHrWHi zvrOI_D?Z`)bCDX0hHDzG`_K);U2nf(xJG!vU%I29=Af`8cy5)c_nh_I33l(%NO8lk z?g2e+o-ftr2bg=MUOCoeo8Kw@cW=!sdm4zZ_1V&;HU3Ix(VvM&+hCpwzub1lzS6sS z2MXV;bS$ODuP7C{i#E@ChGzV*Ie(!E8akwHCQsexHwgQ66^f-U_9^U$Oo0{GvE~7K zQQo?s{6ra%4j*AxcU?Y@PVMW;@r+*|&8cbp9m#(n+L70{HJ=CHK#Os%@W8#BtYr}| zXbrIZ)<^QJC*NLvAwR@Ef*_wP^Z%5|p=?diSKk!PqKx4gt6-(iXzs2qY9=w>m_S(z zr8s4$yh?9Onv;ibjWwvQ_B?KaLDjKjp)^4=EP;cjN$b#u8U zx6dXrTkSH^?ILXdj~O5458BzJkEPpfKXlz%=&}dL!~eOh;B1Or;%w&b;mzgf&_vry z9hli+@5Bz9%ucp-1=ioYtVxQq528L_N-kn7pDEbFo-SLM+G5*&)K{u?kJviy`Rd8A zw<|pny6&?Dhc*5VcdpJYmRgtemij4sY{Bl zp4^G|NN!VkUzUAR&R+W%c{B{QSYsz!wa>dLyOW{LBoxcLhB&pBihW)NCzDi3~|`-~~u zk-Ky+??D@5PlE2kO;hfq*<*KQ?}uKx?{`zVkNgi%{z8oX2-J5+Yl}@n*TyVyv-_-p zj?tk5cD1v)oWU>Zbl5&%@V(!bc=GN&lPMQ zIA=)mXpfCKlkG;zo*b2B)qg)4fj?nU$JT$?Y&@;huj?PY*(9fF2iKhkHn zQnw?#f8l+T!JF=G6%X#?en<9k@SV7IJbtWk*dqg9B)O};)49L=c!oOyi?TUhY!lQs zxtcQ1gMZqnM~=4J(N%h!Z^uRN4{Wfy>-M_eL-x4a?Gst{j-q~(*%_9*6KBH%v$?w)8cq`Z;Mu`vd+l28X;&Lw0ZEjz^K!1XXWoN zcY(v=jol@+8>LaZ8T|BQyJtndR3M((&%CU7?tqOUqjdLtO-}Shju*N68T>_&E0Rq) z{FV?N9cr~}cweS>$`s=+ypEk+r2)$JcwtldftEhoqdbdWu;ZX@f%0$Q+Ydhoo=l(J zvh-rY@Au@%A==3U;ND~p+Isl96&kN0egPU9WNV$-;^mc0>+bb}9hcv0=keWM=(C^v zV%c`qg+e>{u9bTg)y5JT@OzYces;2*w5z)`m-w;lL$(3_RXyVMiVXvf$4?4En_rM1L~ ztNkoi|8R(UGG~x2*rI`VU1-O5d!UO+x7Y%HJBeR6#69cIKKnTS8~DC)k#jBUk!QPT zW86(m*|s`)yEQS(N$nwARD-0ow>}8o-VExqKEq2mD9ZK(96Z zUYlrX?=CGP&W=}lZ4sWA%&4PoJ3czmE`df3l*0vwJ zrSIH7(Y74!gQgGLaqggPa>bWzwi}vBXGvra*yb#}ha5@H1?O{nOF3{Cqwm=EOpo1m z9eAHj-pG~)C7n-w;T&gOxh}w0C9c}cy7ChSSxfvpYoWC^?Z5oH z=7Oa6ozSIf7reeMRe$Yf@;ISO)n9S4E>*ko)Vfq{EBQzN_t2%JM;YoXo$6Hjl=P=c zeQH#fx)J#{sTUe-w}bF*9Grx@R3g9E#=%LC&-Jmu+9cTTZp6*$ba z*f{vg(f8Ek_S5Dn-6_FHB-X0IJUN7_g|rB8GtxAs!r?YH-OZGRxo zcRn`JZgeTLtMCv>WD=v2B(Sb9~R zIiXWEke{zR`Z|^Rn4MRwx6-{%(yOemSKSRxkF21)`}^%ybn1O~u|}GFckV#9qI@;z zkC_~DRlErwHo%(+XCM7EdR4~PtELgwUzA=o(MrckWRTm7sLw|FR_am%E+!?4+rT|;%0G>=O0SY0r84HDzHXJo-E%pz75zneR=0DqUR6JVut+t% zYO1HxRoAPy=l-q=y$V`*W063wN)FL?QD^B^Np!1alx?hTHFt7+jn&e3pjUZ1RnFI`l8nuy z$BY~D^{F_tl+Gr;jX|rnUEBqq_4WCC5A@mA8M>qWUd9XTD_^3!?7=6zTT4Hqb}Bt4 zNxxZ7|5TIl`}qWYQwx2Q+Sf$%sdy`TZeK{FL96kA#%<<$^;fca73=`?Q9rLfQhUKS zw$R^I>AQNMO{i1lFRRq4ruu#S|Hb-L5B+(iK9vXOWA&+ea9vHGs$J#lQzpQ(^r<*F zK9xST5j9;7aDk_Wv@!mW@Q^o(OwLCmh5GT6gqDX8;tH}PY)jT_NC=^l;iZF z(#gdCHR(zAxbsv=>!oCet1rmDy1g7JtY>cjmJ;&}Q)CmB9X5jf^|^oj)vFQne$G58 zj;P$Rf788H*adw%Vf0sohwHRLoB1F%bM5uJ?hf?EJY}LUP??iKnN?n|tlmC4-6h{g zA1ytX{dn3-m-5RScXyN{sWux=^?UZZ0&736d%&;1@(S-0QGQxqs0o>WrS6;_Z7CDu=f>Oe{=S}PWr~s-sktg%PWY77|K{5Cqi&2Mem*HH(kpKN}kIx2E?%OrRW9d+A#C)!GTU!rib zy-)gx?5ErECv?>$6j5beClF(YYvtizhNp+iN>q^w4YpeLy+_b|T7@Fng_Z z>KgjL*Vy}x7C zL++W``_jap22Iq*%ifpay}?C?H@j$pjd>+f$D}2|Wx3mN{ zzXtTdQJdd3-{$u)v>AMEveh{{&X8>k_ZU{A?zDsL=^ zzLV@g7M+E9CpDfp-0SJ4vhT_6R}am%ynj75-G|ZHx7&@x4efo0;iE0v(LV3p&UjsXCYzsh(e3YPvz-}iVDv|0ZGLgWW$&w_ z9d$b=>!qQ+PxCIdj`|ShF@Uo7Ro6*w&n*~&`AsTVzZfS*PCMLp)b+iR&pLvbc&~w z&L&Ukq}km4W!aZ2ZGBk-ozY37=3d)L*=o`U>}<-Fgl2U`+6mv3ZmM?X>7~q_^k#j% z^nu$p26`#w&Y<@`-{I+{$qK!+K8sEYjzt^UXUE$3WZTpHis&f%$nGTC$kw;0=-Xpu z>(e+YPMGX`p*}jxJ=yjoJD=t~rMt?$9NPM(@h%&)N1rNs=^VnV+4*whB{?V^trL34 z&L^FB3GqWa-vIuvXXjf@8pGH#wDT#?YIeQ>_l?>4Iw7&r-$rw? zo$pJdcD@rj)amSep$=8e&R3~JRoeN+>QKKaJKt|ghmxJ|Kcqw5C>`p|?0lm-RN-VD zs?yFE>QJGb?~UkC)$Dw~jt(XLNqSVMKgrG)>QK_3deDCgvh`hy4u!3+hJMo1p|abp zZ|B=@^Edf+KF!hWu-$h5U7C|A*d1x?eAqW-=c~zMkCUA*r#YF)HclTQJ70}OwrA)! zW|C$W{qjjRupT>c9`-M12l9SXdB^qG`H=4&N{byy_B>-IdUKR9=Kyx^6SlreJD>EZ z2D8)Cqbluu(jU6%TPp2*bMtS^&R5u*AGPz{8#~#~*NA+Tolk3E-iVz~x|H-N=~J@v zNtde4(gzq{my&)VeJZr|>6||4Q~l^uJDEQ{Ntd$Qz4_C-spk=7=hp4$Qs|_j?aue2 zzqr00m1I7_;TyGlOS-)5d^OHKPnSwy=ks)_4EEomZ|568o_cn^)zECCKZm-Ja>>q@ z3~YSKA==F+HelDo#>W^_nj#X*n>xU2Gw6oC0SA&hO9em2hSCczo<4d@0R{Bsfi`_6Q zn;-fVX|-0R4LfXnHsx>c@oaqCMs0koae!}Shn22mu(iBV8=v$k=~AJM&)20+ZR7jD zMVI=|wDFDArDWr))TKfj-~S1^)L0u|s7w7ic0TD+r?c@%m#Vb!d2^=lcY%FdvX{k; zZ{suAsp2WxXO8uGo^9{m*R}11HaWu+;WzEA!J6AQ$sU<|Rq^1dwnwHE26`}Rt^*23 zgDg6Z^6$1FTz=X^^6iTFT8}(1#{HQwZs9z96#uEv0hGJIPv=)^PmbVp5(v%;;9SAD z@$cdUdV4rn>^VJ(KQJG_&KPbM9uEi-uPDd@@}CK^;&dPTJ>;HCJp>O4;y*COck}s^ z_CCDvy$)mdHhA0py^a3!KeLouw$`jz`I@Z>UYyFU^rPnxEaM!4JdH<6R+|K!?Z^VyyU_##k(eS0K<5H!h2X| z1;0$ZM}qJKP~}s3S>J#48`=wh`LrPV>#y&3&f)_Vd*QwH{lWgpwAS~dXBjt?wV4r6 zctI@no?-1PkD5=7TujwEay{N0NIa$a0z1-cb{y-9WJ(%8L_f@0B>cM~#mh9W(VpcD zaCB|W&lD07Pfs_T@1*e$Ysonikh8^!FPScTv*H=%c-Xqcc~0~RyhAhZY&Ygkym=Gl zt9T06d1*Q;?dLixjlQC?pJ3nRFy~4g3+G~HP`{?aeb~md#tl6y!(2>}xs%bpC8PcQ zb#2`DE*zwES3+9n9Nx#-U*6jJ;acauvg)TfmVtQw*x96QN^2~k@dJC*qnnO3<97Jz zd~?m)r}>5TqD|Ck4oKw;=WJ*Pub!W=>=QSyHuBBp9N(qh@JgNV67CJ)?7rShrbcswb7KPtl%?c@uQ9@che8*bHE{Jn#Yb_*i>!?C(745Bk}Vm_LD2m6nRDR z%vZU7o{i*LOWOJ&_<}r}vgGY&RZN?zUY5K`Ixi&kC!hvV`33? z70=plsYH)ZqOE0 zm)W#Ef=js#Cy_V zl;8g(@9pE{Dy}>4+dZ$62Hc>*meH_WNdpW-$SoLbL6nCU5-_%9r?G{tWR+D5&A`YA zsVxomI8ox3G!imMruBwike~$upVgnq^;fe0zg?xt7YsDf;7HT~>PtJD7BgzM8Cd?lN-uSmanX zL4LPy&1!chd)BJe1AVjZ{N&x&b9>kF`>kZ*ePL%iWL@vJu;4DRQE3f1xarOcn_lNS z>RPaKOnxqWvhxSjb*f?2tfSpLjhi#hsx~HjbgnaUSLDdtWD7K~@KXF_-lbit-;x_u z%%ds>?O1&W&egfjOxkmgr2zzVf^v)U>jrUd;^p}5z%KbzXJrQ9SMMzIKj9}jXD)RK zvJTGgzk`!6*(hDTxz1(+C|%CzE<)XNCO%F+wX+Y+=5(?@Vv-|PKeUJc-M#R$Z|?36 zNzOgjX${lR)Ex-Xh2kBno@L(i_apZrcX6jt13Hc71Hqj}=p8A}m(p`r^jjR?Rw<$j zarZCZhIkKq=x(0RI#hB*FS_6JK4xjkjreKa;PjDR>nEMO#V3x4-|tvI%_j&K=xU46 zYg`nw2wsKRkP@mHBOUlGc%IL;nVoqOidp<~R6;=Dr?yn&~Chsc+} zs6M|}^uM>mBnSWN>3>oEO|5?xnX{nU3B}T_=Xxh$ZP8+ z|H%;t;rG5tV%3l;=ht=@$HtJeLDg@OKrzfb(qrvm*6{bQHK zPYZ%Kl1}+chm;1}LmHPwE;_2onEOt0c*@5lnSVpG532#v9$2p0E(9YVJ=Dap#}2bdB5- zr|~|#Yh8KZ?p+V*;}b(X9t$CBC;{JiV+a`+LcAe_j4vS`523r)QFkZC8JijyZ{jJ& zq_i7@J`=3*X{?&c*h%@m`95!;?0NrECO>bH`}=YC?49*m&(xiaoxav1Su^A9Ox9{H z?@Bz*Ta0%NpZWREuk&$lNT$o4|JP;i%)iC+3&V$+gLhjd&Lo`fGUdIE%UhGIt>LFN zxM{qBqqVkHpL;@Z^NQiRjMijWf2*#mkgt=uccl6@$4sqjk(QI>V~lj=BrEyZkR_d@ z)#*<@ZvZrTVVc{JuZ1^L89y&iWF_}!xwF)}t~HO`3B6DHY8f4i>Q@+kt~p&|`Z#e) zZd*A4??i#MILjx8zmHoRI@vYIuk~52<4XRJClX#6-u}#UZ_eH*s5Mcv<;hUR##Y z_j2`CO)KRPQ~oLMNt5U&y-FTx{o1b2r=V*fzvC&~Gp-KZJv<%$T9eBWCw9+1p*36dCGxE~p|x(-@`GPtSl`lUectES$uHoSMX%zgZ;Bir z`lTSeggBIp2++tzg z!o3z|iA3?}ZaG1>o@gwtbq~3_dmKC8GnyoC5Ri6f>gkgAX|SsrZj=RI5WxqOaTwGr z^03+aB>pPL(C{`SxYp_%?t`lw9KIL3%HbUxw8woF{xYrnE(L!b{<1s#S?q}j{to_A zBKWtk`w?7YWmg3MHSlBvpN)MEKk-z2dgGxd;-A5uj^O_V|HTn}Blb)Le?R%zAHnB= zXCwGZ@WBYa3p^LWPmmW|BKSXm=Og$$@V(%#^OL-~$I=<4;o%zml=B42|F`j1dywv| z@W3wdUxI z@Mml2wN~kj{Qm%dwO_|yax^sAIfL$B1lOAg$}hnT0_$yrBZBz9B{+>Ad^)Ccf?E)} zITrQ{&Is#prjxt_7aX$wdBLm0dpH&DHQ{u$?+7AP2eNgbD0T^6M|i2eBMGgg&Flm!U|pWIC`OVg+uKOV=R4^Zz@)dS&XeuzB;>h<%$PZ3@m+M z+2A-5FsC~g$vs~h=v#Xh7TINM*M6}#AQ-hysukezCx^8uTefl_h-e%+$*Iu0cJ5d| z<&fJODo4#;SFQo=TeD`>>T#kO$uVyDtj~HR$HpbGIX14p%dxZEB3iqIU00TIBvh?h z)z{a%mM1WRH!|u5?hR_+D7w*Cj;>j@s(1ARVOs8a@ZNDEtLE6+zEx{^m*Wf72R3R- zxSDV0BCK*;v1*`i&9dd^!}HvvRjz!g1lNIcidm%#b^xMl64CotSA@GAZuNh8_$bKe zq}N$Ma62PfQn9-L-Q#5NvX%EOwe4!Qy?d4A1@2w_rEgkgtf8B&niNXQO5B`bCW$Wx8Qd1d2w+@w*Fq zlwS^{h@1F{MnCaej79Rfbvx~!iN+cE>8E{J!KC&08FWuryMUvcjUci+bAa(PYMkH4 zu#kTmDgqj1t5mirs&T)H^$6Ig&8e*ms;vl$ zzo2hnmxW0S=UCWdVcNpQ7G^B$w=iqrpoKXLw^*3BaIb~B(_QiR+P3WG%e|fNoeA?} zkpZOMd^twnH)7)6KR~~r>Jaz7tPI4cd(wPa^Bt8}XyV>5_>yYp8TXzCSAIMHKLeL( z<)`@+3uA%Z;r|i$M8v1g0FynFZiqcB(L_r zok?KXU4#F`c>?9%i@)l*bO43_DEys~e-8f62=A)#|7?xFqEq>)4v60j7Z|AUa<9%; zS&S`$YhKz)K*7a=%o7WO_`ho1gKvWHho#ry+j;9W=!H)Y>rjTsGT?%mql;fo@GADm zEDneNBj%a)b;VGn|3crI757#@^QnH|JW-NaHhc zlO!mt`WyMO=zQmuJX-lw` zT05^iuSs4+_H#_$A}Kg0Wwj=qbMhA9dLFb@zSSArI8}e7nz|`rG`qrCUj3joHPX%g zMo;^C>&*L@xs5Z=>s=a|==J`JXL{Zd`eFX6<}DP)=Ef=-=rO{y4$2=RacH#1e1yKy znQ9P-qI0vC36O(G^BIwgPGh3RK1i!`y&vFt1UJXh@mqvjlwS|>iO$WB9KU}e5t7f% z^@hNuJ2)dh{U-8HFljv=g|6OQ?`8xMoio=vfvkh`TZ9D`*(hDTx!y5|T-rq255J6! zL+KNHjdLI3^RgSmt>@tX*nR2I-iZj_i?o2;k@iUr-@m@nw=PuZJX+1;+^3_WzH6BM*vqw- zsP`B<((DnkAE@&T!8iOx_KS1uBbsoJknDL=dv@nTOL30gH)M_*oEhPqM`GdiKWaV3 z_gl!Nb0LzgwfG43N3io-_-CitlYBGD97uFJN74qZpH#-i?e6Sd5GYB!iE(4u z`x@CRwfp%xnyE`_IsUNIty~X zaUrNMKb)yI zAN|6p{ypy91Fo?rG;z?Vfs0n-l<2kAr?Lr6+-m^W z-j~CFCi$u|#=U>VuCp1=|Krfpmjz>|_+11p)5=ftrE9@uclgh+tL{4d$5e(X5&XYl z_ak@%vUEl8zs9b*?ZQtX{G14$1W!fq-@)F)PjO0~+Wp@l+%xvAYYy{VQ zb})k91)huG1K?XCxb}zh5&SjMvp0hOGk76_-v)jJ{3t)ktNl!8l!lk!=Zx?_LSAQt ze;!;hE@9Tp!M}ub36K5yhjqenV^cEuiS7O9~zrB%JiYE0XXPg}pT9@V*A8n*)Vsl zk)fJB>7Q$Fm^+^%6a^?fGY3tNvd4NStY2lsQSB;XDik|xOSY~U-(0oH@ZH<@eA(oM9*k z%s=v9_UM{HA`;LA`7tz_1E=`O%%wAb9w^<3?!LNa@Fnck96U$d=3rYXIh)wq~CoVD7)&6@NWX0k^2mODj(;s??IiB|EKw>+|+Iq z{wAOw!6lpYGtpi_;}fqdBpl{^zRx@V!$WKNlxEqQ2O>(rh|AK@8tMSHhm82v*A2pc za=g(s5`4_K6YhkxWF7qISobN3DB{f*Dd(}^h3hhIeO?vA1RIahrA7S0vrb$7|f%U+Rt zUXqWR+l!MbJ^b1-e|?H`7sH!w`}C=%Z2DAliZ>my50#p-sZ+7^?Yukj;PC(CJD6B; zYdMzOSiaI*GW=8UE0cd6+^4eSb5B;joNOpJXC5^V-F63eeWp)cnR>0#AU^3$rIs{& zvUkGgi^2CatWO4Kky|q9s(UPR2ls?-F8wQfwf-Dyn>@_-%-BWy-BVujJEvlt9r0N^ z{I`JS`#Rq^E;`7l_R9*2e`+*dFJg5??|MlR$d2h^X8kk^1O+c zn_77dywSVUyb5ggZa1$0CwM(3MH*hlt~Lz3+x5%1$F>;0d*!Q56l3!0vBec z2KVEpbIJ$sH1}MkcndZ)wX%-1%`G5%;SRINY^%&Ha<@+gSu#Clagls9l)Jx;JAtNF zh7waN$M9>)EZ}Y6ZIuN{WKB-39L4S8%tG$BpIT{EdTCF3w>Fl!&FIWmFX>rAdJf~( zkh#+o0>6~$$326)?j36Mbq^QsMf(RU#|zsk2P{ozfj6$9*$W=e%s0CN_m3IgRN-75 z_w#1Bn<%r{wDJaYntIvjZ8D31ZQfVS!ptPz1(jXz9_UW}oLK^%0MBN4+Z#Ls9>|x4 zkN1%21rOx1ct3c9x52CgPW0AOHz)DtExgzRn2THDsi+BR>zOsdu$;dyXZZ-nmxcXdYiUhwB>FNU^AUl6o+ zwV`}^o9==uY5ziPoNo++bN#aG%%Ao)WLI5Mdr@6dds1CedsAIfdsF*UJ30we`#BBF z0oDE*w^MJaQ)-WcxvA8vO~#ASK2uXG?`FBXKTZ8eZ!x(dZO!OS(5aQTNp~SViFdPx z%v(w73HFQATX~;?dh6;FZn5+Rlc7E-?du406t{--W^*j?%Ndskz0@bY7cc;?l|Jpi zFsX9f(hL^DHuyYvJiXDp5V${ViokyOhWFy%PJQ}lP>yQjD!(@R2$h@OA6S%C8j;sa z8I@fxZtHMs23OfhK96uJw?HQRgsa>dyxW5Enn=4=IjOJHy{Wuc8l3-oKDn)|_hNUY z4+ecJsSxAtU47{@Q=x@j;@P^DCW^W3&O~>!-*5Z#i-y0$z09#V1vnBR;OZ+=JHuCm1Wi^*~5t7g*@;7RvA?^1|~r(wf%Tccq#M7BCH*Tk1kS7NB>Ayi4Pu@sbUW`t1yNS_$ zGNk*~$rH={1=63KZ*HC3QbuP1#>=s6ivBbl2XAfg%0rp34i>3fZ(+}6sJGOyElJ$x zZL7RPnVrV|ZkoQNK>q@b`Xkj*wF`}t6X@T5;B8|(CM>d}Yfz`RF&-b}4RPHsm!r;a ztEesPO^1EF#%Q&d7=9Y3)s}|fCH!S@=`a(M8_fygZl;X4kfv7rUPx@K^q_|{_#1*T zSp8|yXZ*AMr)#(BJ0+)d8uh8M#JqBh`!~PA8xtC5q{}oCMtihD|C$Z;8M$fiSZ;#4 zzfX42sV{E9U%1XnyS|yaH0DvdUN<)w5D^;fi%$AIm?1hPuUVfo?H@@j$wT>XPo$QMu2_Y%8n& zslK_oqxw~^F1R|7<{Obt-s$rEd&-^3e5DiF8?x6JznCYTE!=Gnp1j8B-cv8Ry)rY2 z&IC*X^^ROO?rp#>U;^ml?!l)!pvyzY_aop_0=hhQ>22bpGv_l*2k&^rlPyMfs3x8!O=}?IOryJy;)Mp@VVYX$&P_$u>zKPC zYX%zR_OpcZo3Kwe9`2ea>3yUwbfC7>ddmGOGZWr=Yq}{-Iq+7c>Q@JDdiSXvdjfk$ zHl*#O4z%IcDF575#)qGWy*(HDC*Y$v+K{8yTYq{Axa$vG9e9B{5Hs8tkl2CVO*sG; z0KLQ$K*}4q7}yHz2DS-$+bZ+C9jANzNtJg03GV+yPsY8Y_(UbY;hT(ejFEZ9;X~gx zOYrkkPgK&yNtOJ}7ikaZTSev_$tNnQ)TGK|U#S=$nl5;$f6q6*#5=)-QosBTpECV< z^&_;!`9)}_R#F+=UqBer_ENy2+EynVu~ zN7f|t(lPfPI%PU>&(ANJZf`1cVCZud;%2U!B9Br#EBpL2W&ya~vYT0?T@@9ceDil! zCNsy~)zCn_ByY{s%8ml*hE}>pnmQU!axbh8PrpPzGPSZ3-c!5-e4oYqf_UTPwPaU6 zJOtmJ%Ova6%7PTK6t`8nGLtGxGNIfJq*?V-ecg`t51Yvubg*WRH~r|l2(PhaVitY{ z@^+muorLQuBGVIZn8|)&cusy&WhVKvZ>VB=Qpog|Z}JA+u1Y_4-|%)>JZ@GR{M(1k z9Ngv-&qAO4CqGlfyW^`Bvtz9Zbb-Y_;pe|W`EhS7Ja@kIrs=`WFHmO+J1U*r(-FLl zhg%nUrgG~lY^&_N^o;3+=e{+@DBUWT$*dXdkHt(^fjO(EITmTpGPlZxWwFT9{Bcrc z=bdkug~*Y=_(kI*XD4}+%uKC3@mx80bM1-y&X{BtS_5DFls|i#TTBl$i?iI{3%@7s z8#bN59{lzG+CtKnhUdOJPMH*Ry?JOhR!oX?sr*-_hzD7u=k9DS(SL2LWYW+aE(dv} z`n0npZWh2pV?kG8Qbq4J>Mf6CVQOX1(`U?%;cpwgtEIZ5`n9l#eDIVUJ8nKhA2zkJ zoA}jN^dL{XduLhwuHtQ`Jm(^pWJ#x>-&`?EBsaVsYb+T*@H<%9vF8oOG{(&gd5v3F zeo|$}b8i^wPBU>+KJ7a7hUtYyWvl#A{g^|!?;u}2|7dx}?{kj{`f^K>x51I)w%>oo z#E_+(^mzVrWsN0I&n=V|Am@e~H1ZjTx9%+8I-{i=_vf4L zBy%nDaEiYX9!Ja9pj&nkE>8G{j}T}+TBuZgmzo)@VnEY79!=$!LTncf6-Bdxw{ zQe`)I8hmb=_c0dY=S{6_PlbKKe#&+?_6%v#O z5q(CA@rilCBIs1^J6C<%bQ$8m=akW0cP}uNqu=nU6aB=4+Y`N~cnh9*SDrEx6U@1w zS%iOgfi&Q!db=Ap)x{m3J7qlHveLNImEjGww<3V z2JL=Hf&5)==x5be9<1zNVay)zUhJALKhbYY+K>-9+6eA?OL04Hz2xK0WybUaclR38 zn$o-M$bp-m(46Wq^GaKRxybhNt;^%(X69bq8OHX+X2vn*PwlaCEV00JfHT&Vr;|rY zTMYU3-1ZW0M#1;avRMq&n7kkRg6zS{o{yG;cfRD8!fzpQK7l=L>9v-%v!`tOlhDpD z2jj(Jg~Q$sNIT*Y329oAGo;RO-L@w`8`6=dcYU4%b zn>przQxcjtN%l_%eOF8J8zx3wYY66{`SPtd#>=X=;+wEMV(oi~D^{LP{ccF!X}pFF zr4FApRCsqLH*<&m)XL8~<7KrSwK0uB+{}lLu^C-hYl(%CIr!uaCO5+i?&8)PmzrzG z{ZI3D?9_^6i6^$32G8a@vM8+Py&m~I{fa^`m+d4CYBOOO+-9`))ks{m`p7!;kyd|u zr7^pmbujc1Z+m6OJ>M`7rMcTY%RG?2tRug@vZrs@aF1kV1LIj!u2AZx4aEx@QyIey z{R?3m2(u%3!d%U`8=ZNtar31F4{J6%pq(Ovdv60 zCKGlqeP}!3rAOsIi(Zh0Cvo`rYnPIy+aET`9Ai$N_|7m+rD(U_4)g7fr)lrBfwl4S?l<2sEwllRVcluXLmxt( zLuJ)L?L~O3DJ{fL>qlMST5nEWM7wMc*O4?wRQpKbr}d{;;)$UDF0zKSA%i}76?NUx zc0s$RYuHRv{T^OlnwdbZYllrYa(S6;mF=CwW@OzH9`Yr1(bJ@BQsrvK zh`B!L@?x}E`f=|s&Gx3B80j&4&|`F0*!Je1m>BWyX#GjhPal}@6QjDcukk0$otR5> z=gXRdd5N!+=Zs~Hi!sJJ&AVdB0{KoqKJZO52iYF`Jo-q6zH+c);yJYw=FY!cF~L~( z1@vP0#{E4e;cu(V560{rW${rNJ-viC&$>?py4FLV-c)+*hLfg|@X~#D+;Y;i`n<6= z`y}lhy&y;3!7lw%ZcT}u=G$`*oA?6ygi;g}yEA`h?qUzx;H$vziX_ zE6G?f|C`Jasq6DAL4UgAW3)}le;a9{to8z>i^tI;)W^)b0-a;Q&hpO|H3n;RO{_Jw z(dVh3R6S@&-WI$!=i_#GZlUxdb#VRUjV1Zd4g5c4G$yvBU!srQZkm!K@=HIJ{0Zdu z5>J<7-8+bNsPI&E+ zX}xScW%eTVZs$!yX8rB4(yj9)r`CtkChq?wedSL2*l>+aGOC|v{jXZLwO*n1LhTuh z*S~t07{6Cp0}_0V4-o`k=K~qRe(qrxlo8GO7)L)It@-iquKV?Q&wu^>pBetQpFVlw zbN}yzZ9hJ6!yo_e&G$6Df9Xe`_m&>m{le4ft(|}T>L1^IVBgLy{ zfAWW~K6%M!x%cpF=F9(ZHs7EB{L9>vcsBFp_sadgS49e{-ZwNk>#uUxooP=;=;iVi z3Rv}}F&_GV2VC_g-x}h70IvFzX$o=OA@*{$4h0*~K@~Clk9n=${{|{9$L|Z!kJP!i zr*9pcNnp7*B9HLT)ZpEY7%2aRH8>5WYUIDiVu^ zVC7{4JYKO-cMf-4!X07AEc)jK;deq%3B;V&w?xpzDN~XY!12E=;u55#YjrXI($#CY z{AU)o`!2tK<%+cf-o4=mX-ikE;?(qjH*5Lo2Oj8KHR3+7I{cW((cQbo-iYMY-b3Xm z)_%UqbotsZF3X<%YauT4nw?y_;(_eSKE=CiV8!ZH)$n}$H0E=q`>eo`kB{nqakO;g zYa*_JQY-=8VDJH6=u+pSq*-fL_bwY)7G`B&tG%gcG~ONgQt50TG=&k0IH}@2FVjtZ zZHQ3%(>OnXn={T@@7tx9xf{S4)ejj}EvliH;wLl3r`-ancJvZqJyM&ZO4H6qzFm43 zUR{<35Y#t8#UJH&+7Ic(PjTueerX6r>(bK6$ER|4#>ux3qA0(_v`}X8qj^;MEwKC~ zvrH0xCa{J7Y!mY4gDPH^t#qX|Rx~sm1$?3h%pJ-s1fbT|QM#H=0w7BIVXsKVD99hB8eWTZ4OhpFGvbTHvMdl~_Ky zv+iAT(6cyRK^_fQxW&S}g?lZ0uZ;VbtHM}QZ`@xS@mG!0J4@Bd3BCecc^R5`aF@xD zL-AjVzw$UVyf13`DU7~-{Zr=!RDIwh=9^sN1QcE$4hm)_I2 zcA$0;J8P)A!`?XOUg{?*7|iN=)fv^!CQEn(gTolytylf%_JYPKeVf`47H9DP44t3O z(K+L+syDK$FPG`&SCGXT^$jwrYteDwIQ*QO`c=`XPSuW6ui@6k&-J~IpW=-2I{|^{ zcx!Y*ZIds~H~yvsb9o`CybzpXp>LteRPHK2!IXs=3v(6@a;$FcvKx}w z)hoZm5X>k3?~wyE)yh}F=ehvk|7h(@U&!NT@6Yj1Mf~+PuZ-%g z#)z+3yTiWL;`c57H91%#nt$P!;pg)c zeOryc-p0w{=i>kOHU3I_18rjo@CxQ?>jX*skRb1H%bd>`rZk97vJ1|!FlAwnh1JR@1oh=YR{y&@u@1s>TF;2`r#3&Ya1?ian&Ouarfa~JDiSl)6)q1vFBc# zJZBkF9m&#K;Uc4{om9@^yy@&&voCBCNWIucos5pJy36QCk$UQ^cS0+BbbQ?c?u^C} znfd&py57r@h&1`v!(f|v4(@>>i)(TShp)KBf}Z(t_* z+!+?NMfD@j$WOmdSg5ula|Mp|#^I0SE_!GF?)?o?;EE&*ehV(R(d|hy*JF`5}C&< zUQ+Y8M@_qrowxDy-I(B(7~gF1&7Zz8Yb!j?9PjRu?w=t)_BVRBn-+cL{-6u0jE;awW|E3OuQaqvx{ zzGq(H`K^@AIKRR0x=C{g7 z-zNG#WsAScMtRhj3ggwg>n*soB_FTodjsvA1?7}8!>R+UcTD7a(rRAnTZ4g1c$Y}` zAtm^BQ9ti4>Rn;fTYlVMn5w{u8OcQGfcw>s05JCdugPabrPg=M5bE+R~3xX08tZ^GF>|hjqBg+f$;So9O2@ zmmLpe4(mR3SZVZ<&(y8IidXMQD&EFS7>0KCroyPcs|~P+8-~YU{!a7m zqCS7G{D-_B6{Eac{JV_mg!rf)H?f!B;%%lLKWr36Jlb+$c^pKKevA5+<)=E9NPLRD zweP{t+{jwY>}VZSoC*I^W$mXX5?h1%<|V&TuB~&fzNres)+5sc*c}gHn$AP+?-lj> zl_0T7u*Qm?{yemW{~H)t=94cYChkoJf4v$e?p+M7JPb|Tn*iQJ9y(n6Ey`1eYu`mi zVWitm!QUB;Q!}c(!g1^E8r+S;3M2aeDvLG3H#-C<{JS;yf2!dpUD_GZ|I{Hs;id-f zt)UmHv@8NDJ+=EpdHhtjbpL?-udhk(yc+&&X$AR}w)_?V^%l!kK|0lfAcKR}4YYss zt|0qIt;D1KBVQ2rnS$v4YCGDWS!eNGf+#QrK{|({)?M@W4(0|b+e|xm{8;Eqb{c+C z5anu65P9|rG6^~+_(ArI1c~o0LHI0Uz>~ZO1d-iM$1~mJVPH+)vIlhCt>*Si2UoB0+=V6faqQ^jrqO3L>qb@oUCl^> zA6Px|(nnnm_H9ikM0jgTREAL(td2}Wdi!{@yT7k`mCA@uknv-@$E17dish~-M#8GR z>P%xI2^x8aqh>MCX7KXWYx&7o7$YDT~Kwa<^UD5NA=JeyaV$^{>vVn z*A%GJ&N%B@9HR4(byC_1C^xYco$7u+Kb))cn%D5~adS~Se!aMj;zwZ7$xSr+iQn(@ zgI{&s@NGQm%~y1{y6BwQfkG2C&hI%K$(OA26J5Re${7MUnML~wbjNHQl1uWbjem%X zP;LshmCkG3@P->dY?l_#eQ(MU<#Ek?#l2sleWp12jE^p%{U&<%VbA|wnXd8{>23{a z>D1^qK03cIy;|q2olf-`bebV_qHm%*0#hS;E~_ul4WSPYp$89D+-9{Q-!Tu49Zw!Viv=uuZnUt}KRWRa|`1@u6lZ+(zOa~tWru`I9<#_#)*>me%_ z(9Rd6>oSyFE?zp@rSQ@Zm9D1bNO-xqc?EegEPc4%T!DNTr4MWFt+|4a-lx5@^Iem* zalJ{I2 z_a4PxdF=29EWPqyy32i4zp#zo72&5gyB&Ygp0xCQ`&u>fj|30e_=bps{7W_Xr8VKd z1dZfVKOuRftg0?J{CnUlBlux()eYxA6T9k&!*9f2b;aS&V^^JVINN_!Bl%MN^li;z zL5N-#M8|nckcKpcu=4K|M8`=BqVp(^Gw5cEEtF1pg%+wXXVYzb>)&Nz(!x0wrYv;h zTHO)dJ}gk9!#Mq8+?BvzY>BpZJ#p#yYqn!Z&%TH|hWsq6x?^b1w#++*c-(bgmuI2& z;KBt;+h~o%mB)x8x8n z&#?BIR)l({FgndbM11TxDzZe_wqlgBk3)&v~?3((Wwtm zyCZm2=Xx2W2R9eBl;06NL|3bGWkY^doht#OdOFuX5l=*H@9Qo?!pk^6-CG;g zxkOh_=lUq_Q5L5`G%pk%<(1Nr;D^q2lihqhFP-bA8*aQIRMF0@b3Km&g{gkq6YSNp zw#mBNo9_N`FT;8y`c({lV+wxpRH#>J{Z4C{jee-xc-e5x61rhOySd_f-(rn%H|M2y zS2}}llncX2+-LIZ;+tpPjqdcjKsSP~))$E{xJxMDli38HZ^CC6e0ITS6S^0CaG%Mq zE3v7f_tG7oIre*`0{U8Onl&-xlg{S*tYKNbtsT8h>%CfA?1XO@eqHdE3_2I#qbuqg zdZq0W)<#9^WRgxPckxqrolDU7{+;NKp}a%LGz5v%RTgRIGuAI$7GT-L}h5v=uo+I0GI z|898`Ls?Sm>*z}N=&-Yk&MAywdYQ$S>lL`}Keg0M(Uhl+-cam?slt=5mZ9fY5TY0>6s1J*e z=$xG5lMKEG`_{=g;o9<#2k#MxzBLWcr1al|74Zw|qLod2vGWQ#=pL|+3~T@7mC~TF!Ml21f_Z~?x!mL@cg+jv z8z#0`I-Ms_-Jsi;cnLB}zPG%WN`vefbk(VM)RR$r2I8qX@^P4UM(W^wwhpS@zh>)S zg8UBlgi<4QZ*NWAZa;GwdZ! z;IBQ2@0Npey|g#ZLSC0vT}^EsRabrD4&FH^6o%8(S;?KJ+*DUI2NE9CC!0@G658L; z*|x_kO@8Q~xK!<^udMnizo1RpdJwIvp7(b_T}|7%Ib#SiKc@M9QFS%u{oP5` z1MQ_rCWUo!>3#s&yYrlT!cX$JI+>upDcqp;F!<(CvPmu%wiAEOZI*Q|O?6H6Lj4)* z`vFf^_ryp3?W9|7AM*0r0|?HO%ta>gQ#j>Q3Vu;sc2`fEsHdv833!QC^^H0>QTt(u zgmW{)SL@9WuQ1${E0mN!N*D2$bU%U8=96aErkk?bC)rH>=bO)Q>c8ryQutu=rQ_JSUB6v0*t6BbUf z(6_M5!lZ?BEEJ1T<~{N$(&wn8&eWS<|1jdO0)GKqWgeQi_g}$PCJz4-@G}h~_=`5Y zbTNIW^he-YCl5{BlU{jR3R_?}Gb8^9K27xuqxzuv@w3&ip?=o^F27#u|82rMqc}gQ zItuLJr|>DD>Qa%P@T%zGqW@OJLHO5f{8$73n`-#~9`P&vL(qxepVr9tw+d*D_%+n< z`|BF|H)`U)vnD<|kE#*BZ&tBTzS{MLf3D%rJ(gkq<1Tssxh6i%=av61zrP}X+K9ui z23H$%`2WOPZO!4jCs=LH;SI>Iw&(DL#H%*waHTko4U zS$7z+@U$R3Sg=lkKHi0V!uti$>{M5^2cx-x;9GLnItB4)FQ!cpCDIpU&nIQ!Lcz-^ zTfwRJ-3a_&u=uN%4&^Ecr}rTgUiW1Od<0o2RC>jKogn8Ub_xDF&KwDn_>+RjsrN=Z zSO`_y3FHJekPmNLyg)`s?qh<;t#&BBuL=_H84KSLMDETeAaeHz;@@lGkcCGreBHv+ zg2?-}AbcCC10B=IS3&R|LHG>{k`C@V3E#gIBppVObet3<9ct4`#~Gl~@s@>eTX#y} zSF%pjWBH^lTx?;+!hQ?07V;3`vc6^atkBbt%SX1#!leYh3)9xs;PQSpej*>HE*)5Q z9|wn6xfs1vFfM&ad$#qdaf6=EXM}buYsD(QO$<(non>)@6J;x^&sm%!ne|t;#uc@{ zZyAT!>U^O%ZiuxUEUWiz;^^dgKauB9vb2JWr5cICGIDDnrgwY!lnGuJNF z^4ob9uwBG*as*3`<0e8Sur&MN%9ZEIJRprOcSScz&ryV`so|FC+3H07P1OrZ&D#F+ zOpPSUK6u{b0qJ<3h=%QRRCzlo>MiUot-JMme#w;Bwk?i&yma(taUFqF0k!jc_JXRj zLg|h?a^@rYC`ZjEFpsMCCS9V#tzefQ7rF@f2xA4qOVzx_x;_*As$r-M%%AdKcDnAs zbn`z&pYDtc@+UY%*9?c)KX{#hY$tdOlb+}_uB$J`xw-~90IxyZL?h$)NpFktTY`L| z6F<>7evf03d@lSM_%S3^jr?R@;3s=h2aA63EO%ijPv_bERZTWfe~H3 zwaT5y=VTM%YtU)mN_@zoARUtTL$hy6-sF#%bDk^dPM-Jva4{_CQEQdVUxT@qJ3lh! z+(?nRXfaq{dehEf-$cwnZe@w&m)wHBg)=Q&yCTbB=l&b0EANq+l;`~wX?LdHTuQq0 zh>3fbf}?U-!?{3fQ~eI!+{53uZmL1QVeQI$>FzUtvOD}Zc9n;I^4|&c`Jpxk_&))i z5zYPlR9-IpVdn{yzhrAbAM66^ZH=TLZBXWX_V~s>2VXtj?)u{X)oTV+U&d~(RekDf z0yPI0s?>IXu04BD8=p7cNK<7r_Ar9;s?&wnvR^vV3`WlM{Zgk8%H)06l!Iaj_Pc+L zdg6?;qIy$@M)%q3x1FI&3XIA*+Q%-UUqam<(`Qo+#IM?C_k*imxPHy?Q=CzLD$@>h-mM z=sW|+H@_BFKB;eHiW=mZ!{r_A)5i2&1AT*$YdOYm=x6D{s-3~oar&}Vs|WgK-TBG8 zuVuE;1kve_O1sxF%+E29qI6&q3PfENss!KBJ7i5p>d~$QfwfEY7VF3i9 zb8W}biC45=&^IZfQ~paH(aEl*8PO*B$*8^7YwrWNi_V$o*d{mU*NZ*c-bGihy+4J! zlNoF9t#Jk@K9Ws8$%~Hm5&IBMps1ZoN8_b5d$q*5+q=HM!HjC}Zf~=by;+@^Y01ag zgW&u~a=n>Qm~Z-iqj`Asjdu<|u)2A;k$azeSKTq(n$5E(^4lfP9m5aa)I6;FkvV%)Sr%^@UYopgxbNaShQ0JGb5CRQa6@XAS$0Fqa9`t{!>hY- z=cdcGO}Hn!OmpTMGce)KVJ~})X)LfelHXSO9lGra-fgC-!2O8qX?T8c4uZ2oyUdn5 z*xSe-HP3!@DA?m@%w20X&vhSqOP+M3`M%(&zBNdd zo7vm>vFAP9n0>VD#rB-?-g?L^^mrea-&}s({G|JJ@{^v|?0vW59eKFaBzXAYQX_C; zAy;Y;zGPD=E~qpLF4|OL@3C?*`&C|IQ)x>xd$;6iYmu^^kSlrqOtTrcBiN@W!aXvE-1hC{e*pJ zb7>>xp|S|dA#=5Pn*47}`9}B0H&c!ivb#(t>1^yNl&BAw5gcwtXa)-meKp$}{* zwNM^YCN)nP$@*+^^YK%2D?YQy+&uhHOnkqR&pcsb-ci$B+-b{?ldihXU!1h@D$~+ zfw(4mvv{+JHlMxPNQS1&bd#Hd45v1hT7b>md3p65?8wnfIbJikxztG9P2@?F`Xb6@ zOu+lQ!UN6kaOi(EH7R8pQ5TF4*hC-}2W6J^(s*k@X)GmTmJ74v4pz3eTg zpE89Nn@c(B?NbwS$Z$31+Mpp_Gfr)y-=-o4p~Pn z)2(84RI~B5L@m|XcNH&8fBP-OkLqt*n2czi?@Y{Eq^rmt)!&p4&NNz!oS>`D>yiYJ z8sf6i(TP`7f6EcC==3|A{x%1G_4Kz75zfhq)%#l~s1S_vlb#;c-$YkWe_IBflUd=l zCz%C`k60@mq5k&a*%ze0efa$Kw_P>*o4yBp)vmFnEc9!jb5GgtBWl;+_|_tL>(-qM zZ8eXSThmXRZcRQ?X)8WbNtj0}WA1VJWoe2d>wYeN2g$}DPnA^Vt*d8RGZ5}u*kxhT z!jy#zEbOsxrG#D7DL|2o`@{G5E-usb9EABO$}(E00oWoP97Z^-vD(D~~OvNQ5ma#h!z z|K-jTD1Vi$)@D;c-G{S4@RIOMo$kZgD*Q6`83gscfFR!i6b0GGKOx9IzGS$9PF8VU zF^zwi=sJkv60Wiq^et4`3Qt-%$HJ6_DjWHyEnIA2#=?FJvlb3on6uFBaIIZ&->Ps! z)16#(gQ`4iFOcmYO)}2LyF#4L_IfmiQM>1(qa5QE?)Z(_L|3TngZHfDg1Xw+2o8wJz6j7LFF`N}EwxMpW5lD@MDmg{79K#(3ClTzXD|I)O*UI_e0BpX}0^WVBB3YG4chsXvmDZXMMJx8k8T zt~Gq33i_>9;5>fttLm4HAX_XAAfOY}-d2>~N%)CQ{1m5t;@6JMlF#iMXdO}R&d5){ zwHB&>lG%l0Jw5a_+(qxq4H73_x==mT>6^aqzFp=UVa}XX-C3g=&rjb6YfdYA z>5c9z%wpCsV;SE5(PxRh_D zb#_GSi!DC)+<4*rM51fw{{N2Pe%nWl$NjeY#k^0IbXJ6OGQnAq40%3Asi){RWpf0G0R3}sy1SOlG zZ()~(s=spYv9Q-djhAwl9wOMvKf(9PT0vAFtEUgwo(ukuYLr0+DU;l1<_9>qx92b!qHD(7i81tT|x9zl~HC2>9A1yxT0Guh!U)` z&Z1LUiEhY3LI(P#@?UzV(jW*)0DTKp2ET~jdRFb@?B|gqgZTxkpCcMeRND-`lvvxp z?55c_jQ+ec8r4~}QKyxiMJpYNcpUxI@sQ3qR!?=l_4U>9zHN-AYt%=K!7RY>Tzmi0 zfz?a1_m8<)GV*C}^ir5;;Ob1Fj>0&SR@EK}Ueym@P3y7Dwj}4?KVGCxFS36e z+*!$;hKXa_$_0D2H=aS~LhnJRDaFxge5=cZI@{k=F3J{4S0?_Z@(!PZa=HXPDtxc{ z%EUJ-I#VVcOtg*Iot`G0Ncxd@$8!Ckv!*z74zJk{+f%>azTHh4OVUe& zJV+bjPY-wV+>YK%cRHZlK4jejI`ChMdlLtUd(h`CNpwSMWO-d~Y9*JQTG4yyo_9}q zC^NP4dSLG_zZSsz%3IRBkQsx$@rP)XIs#zN}mf z;HvTqz?iqP{5+6f`H1#c$(N(qZI#1C-VZn1DhK>+mEH_*hZn-L!Oydvt24KHBYcs^ zd*8qVyT5IEuxE16zfm+VurI4UR=pW_pzB*^L6J8C@jn3VR`!_>crTmd;182m{lK01 zQ|2gs4TVA}N7w_YSInHkw#t704YMAav(UCFb4>K44QoJ zX)}cT1Z3Ho2mjzn_U=f>wH5rs_zu8N^?kr+&$(DA>0R_>n)mwdIc+9WZ+FMzrXRP~ zJoPYFC@t~HPiSBE*t_#Ll=p&5|JQrRo{ucJ?`=A1UL{Nye1?#1ONw{gP7WLG$?r;H z=gniC>0FYBM+(^zxGm$YVCwDeSj;R&wmfd@(}mIyaNjehOd4KC(g!Px^UyYx%wA+T zM!b5@dIpF$bW@mrtA5@Glhk4xq?ef6LAUymL9;3eFv@97d)c#G~`<${+DR z2EEEF-*wXDJ>CX|r}BB9;hn%daY3te7x3FR&6wBm(|P`ahg@>YkS33J>YzQI;f>Zz zVR(CU%&aT&rf>0JWnCtGQ~m(uJxJK&Y3jzIu$*#9_$0&f(RtTA@BA%*Pku3PBGX44 zChi~j`o;mdJV0vWl2vFxsfrGpiHhAHY*F;D%k>j zOJ~f=9Qgo0mGQoo7tI{#3&^oI$-APIc?W*M`?Q~a!|c29B{Pth%*2^iT4)2%9)R{( zhWv*%<@46y@{{H${(Blq=5UsBs+=(e@Eu=ylQ)?wW*zh^bG$iC+}Q$YhM)4`aF%o} z9yT3>Q5@^wJp^qIzdg7Q;=bd)lffIQL-@sa?I~w*yOuW~+w-*Z+;incdEPFEcPsBf z_7wQ;Bl`sWXd~AjHL>nJWxd&}_losyUWTxGv-b#cG$bE0T^Y)+rNkS-yu%lH7x-xM zVC5asrZ<7N77tb?8{U8>ZF(PA>2vP`7qIKC-+dQPFz$_Dy%(%FkK?B}b7|fZCC


bVrF#avd-03U-^d<0Z&o9h-uc|qRx-PQkAZgrw;=PLR^AYnUvtTL zg0zbvV565e`!8-Zw_S0_98OS93G&j{Tc7k#7kj)Pt2%rtsE3OSVLRFdeiXX7hPsrZ z{(uj7yj6_bPXCnY$G(5&Dbro#ZCdaY_<^odWDUkd72K7*W>mCdmd+DFJE7B?z56GZ z%~oK#K-}2d=sOM&HdRCh=vkYf57zl?>fuGax5@jw^!;VE@2A=drG-9y2{Ndk+S^++ zi&FF>Ipny<1pSEW*Dmb(hG@s>@U4b2$8F~- zV-DcH3-`GHn0Zm}1Gn$sec)J`akkv--)2rDM=SjFmgkWS`ODj%dK)+H-)Y{(ZvlQg z9wdL@vHJ^Uqq5xv>;djgQRV|>qkNl-eLwC8uPF_a1(vEdn?$zL)Bw-!yLNUMT|v0ePwW0UvfkjYm40b;&HEtXs+ZA zhfq)a3v?2vC;kQPazsy5d?~A^wR!dL*ds3*c&jSTTUEhY-2gh8^fVb%XfJPJyVa+4 zKbhR$D{Ec3AhAlY<~d{UGj5KDe&K)4w1c-*!^FLJu`BPK|4Hn}$wP-Lzh#uqTFZ&P zX`m^^P1UgBy2@Q5wnqL})%fqmO}vKqiQi>4{#5>|QTVs3Sjb=RXE`JP{{b%fTbTfg z-yb_qp!{pss=ia>e{BsuuLj=_Z+8!|_=8rB_-l@;Z*vz3B11-y{L2bX^1PgdCj>bk z^O|4_3XC9YU|J{BJ;ExJ3=9(%&XoJ5?A;2oCbmehoj{bI*1TGYLu+GcLE>L0IE8%? zLHHgMgs;j{e4n=v4#651K?0~WMAyP<&p_8~mj-C?xx0Hx@?4Kny0;*+H?lHQf61rL zHr)AdH#+{T#6+LZ^ql*OwM$pCwYzKuyQvS}bKjcP4~{wI8(pzE&+F!@=fs1>Bo|lY zsjuMaFXvu;kaOv(zWdm&T>6D&Yjpc^ox`Jc7q!kJPTgDzmb*q?N2|9I$!eI^#3Dq& za*$;gS-^_yCSKSI(Zkfu230I;dZ>SsBK;2DftkU7*_%T&*gt%Mdg)A~wdlJpnv$2Y z_#o}(m~|6d(W(BbIl!;FKJ*s6eB4~rj-TpylwTL}iB4{!as1|BmwZWnG6~vmz4f6c zh(zbi*P)9V=hurP`I2>hqPxW*Ku5O&i<4R2r=iQ^CV#q$Kt82`eZiY=a*IR2bFB~E z(0#*suMeG6M78Tfzj^(SI#?gtZP!AU@IHl~9x7`ND;*%757$PJmTo&=>5S?D*>J6d z^iR~7@76`g^NF2|_3d@umuRWEPgnQ+PK<9&N@Qy)`R1J3b%K%A1~`J zH~0nd3Tk~Q&|T15L@PJF5mD>bjN1gC@8*+X*iWwJ9TI5eu5fP6No!$){)k_brN3h- zZqQ1%5xt<|4&=*V2iH28;+31;dhs%*!OLzgJd?y;S3m5G=-*!x zUj4pwvW0>SEb9d6sI~|)rtG!uM+NDdPYBW|UKeC+I%A;+U*T%M(!r((($JEEM67gc zpL3xgx?M()mZP%NeK>;_?vlF(NgAA>_9?WlnGu|VJ4QMiqK?wx#(cZJrf=n}(PtCu z?lOfBo%RR2h)!i0PgjfVqwy9&Rm-Z?zDD1wQcraWzWN%Yd5zUd?2RQ(F4Vc@%edco z#qwnTv^**?~ zo_<%i0BZLFl{e#SfR_43&ItTs2L)cGeladr&B-RL)F)@~4vf{WM(JxKXDC9wM1*Qn zQT?g|e#fkv*f#Q0T~##juIg(C@KkknQHxGS@kjZ+LO{{UO*D?*<=91=$I@)`dz}DIX3=gXP~OI&W-IxWCm)*qk=gcuXP~v6Q(tqB zi2LW>&pV(Djp%DSPvF*Uw1?-V+!%c~_n-2<7vC~T_n3~}q3@IQZB^2~@ygoDX|Z#A zU)$058d*P*PLV_BlRl+8Fyom}?~Cet(v74GB+%79_9S;P@i)8lAn0E>=!l#Je}U>bjj9Scn2|O-h()zdWmFpatTV`N?Ey5xlr$_ z7yprT7{A-cbUIvD?1vTUgm+%@L(XIsO7F1$*%cdE*ShnPzXspd`#IChH z-rP%|FXeKVH70VGNf)m7wge;Cs5@n|)Gw`jB^F-)qgHf2y+fz-9+dNNTZ*++o%^u* zAz_F0zI%fEo1Kn0Mf5rJy>u?zPtAmTyg|N^wxA5r2RUO~_OgU$eNehw6MniM*lXY| zyKJ~;m|)#dYojU8FUP!miRMXDT%@-(CZ@c-=##oH_e6;y72R&pa4NB-j7+0+M8)SZ zM^O2U=!;=nOp#8tNv%Z*w$s=IKfU6<+ry(B{;Ji!vo2q~a^;G(D^{;s3(b4xKAHQJ zA=cE>8UG>Tuiol3_*@qNe6#hRj+^e283s>9{Qn&M2bM1+ zVvYK~Qw{+NzlE?V;9;QXH3m5&|F1g)DE#kg@DJ9|$7=8;HT3!>%o*|fszZRn57yva zHT1s@uJk6MlTP_3*i{du0}B6gO?dH?uGkIKeK^YN1{%ho+!?rb38EVw5ybxm3ttgL zS2Tj?il+r(MjsRCijBl8T`?gDAIYikb1e*XNy0A@PPidKTAIcqtrs4!P-B+X4OONY z)(wq?jif2KJ5!MOdo6xckTW4N^>j^*$8!Hw=$v(wzEQg9S(XkX%AM5F5w$b8ukZZT z%U@n;jA)C&+TSmx306P&a={;XaOJYz@B^gDBnA6Rb-x00@o^plmQ^pmIBio3zd z7xE^Nd8CqEIFcUq)4xpoE-!91JIYGCmwviDYd(76Cx%L%8IUeHeAWCD+!yg5jF*0` zOx{yPt*ll~-^rP_au&n`_RO_4}c$cDE_*SQ)Lnw_GiJRGdWym ze^piv|1o$fg6r&?%Fy|jz=tCEN8zWkb^h0Y7bCdtm{*xQ|4YD=@NjrDxaxw#{}*<> zDeLgJu&a(Z{LidS^;3GL(jvRVbrw!_*5P}xtL{4dhuHlHF50dLeuLx#mwqb#wP%l? zs-`83=Mb_f{})>N&)~28PFq}Kl=3&=hhG0#=#`%f9P1L;K~n|o-43BqqO`Z{%T9k|MTE#QvptVz0l|`@_t~3&it6gRcC~&QOaNWDm>7m z!Br=O=dAyb#b2;^(c&|SOW{?oqqs`*43_V^vj=#LBDtS$8S&n)yy{B*Oz|s{DWLE}Pv@aWA z^Eh$ThNx}exnLd8ed5h*%dFv)}(Y5lc zod>;)=N8-@OUF-fM)~QD4bi!|gX8xoZlZN5Pm_jv^P7u^z@-Ut?0>;@nyLSI<%TQb!>hPAQTz9OgDt}itfvof$KpL7ymQ!Zm_O|Q`W?fp zw^npsIs19+-VV-U?5K2@9TnYcI3)+nqznqd!91_IljS%ZVtb0W8Z~KYuz|pM{o4e=?Uv)LO!&)!rPW^B(SoR30c@{^a?jHB7V8)JnSB65CjNChhoZf5OLK z=~G_R=7aJ;-#O2Lc5YJghk4NIA7I^o<7wrAOTSC|FO_Ed9n3<_Npkv5Vn=Bv^Z{r$~R1GAV8=x2GQC zzQ)HYDyJ#g$12;st*2SbFKbTerJ1Li$0}`^$0}VJ<;A{A`~Oeg`@qRrm3QCw%ubSJ zSz&-xw_%Yx$pT9Z$t2mplEyNDC{dyg5F}FCoz3osL^j!Bv%%n#*2zB-AkozZjhH-+ zmbXQvPiag0(w5p)!D5SjqN2s8Xz!WHxG~a?w6!hz@RaxaJNG%W_s-5H8`^%}zAq=4 zz3%Ir>s;smzw0`G2rrTQR3#0rb>J#5EN|-13GLU=osaDSd4hXafqnn*)f!a!5iLu% z$Jgn5OuB;cbm>jHEvraN>cGLzZNei(+4ZV{WDo#AFQmu=lZh884kJJXmSX65lLqz|jX;H$O<44zn(&E)(xW z?r^0sdl-9k6!1};m9BG0SNkYwf~ISPed6$5ji2eH>lMl?mMau z?0o|5+$YeO9H|T>X@kIxz$CB_*aFM~TY@1AC;DHnk_|SCpU4g@cuAylo|&b3!^+>dMeA{DT#?2`t~3 zzoDdZb2_dZd&uM7gGIU`L;(f#NPjc7F?9p_mamS*ynJa!lD$32e=NQH>Z{9BDcU(d z`o@!;IpQ{-;Cy)QLD?N>V zkY&$)ws{xlK+dk*(d2Vpe$t!I5VzU$g8i~vu{+o_FfZ6Z{ubNj20gd! z4mNaM67(J^6nj_fq6{uHv~mCArQ)NU&0>Gtg1qVgVyOu<)UR6F0gbb7lg zdCGStcr5#glI~hfVYk{tznc7PX-DQl>fK&*mc;We4;J9IMsD8jAfDp9l&|l(L5H`y zlEGf}lXqV2y{&pbbT?-qIooFFb_Kqr_px7xeVes!xAtw=-;RBU!S@lzxj`#-S?snO zyZfmwVVEu0tBvJsm^zar`Xu&hiv!kvzqN11egOL&2HzDNu=e|*Ys9U|`-llI!S^2M zRNe`bPjdtH7o?d!XB&C+k0tto`RU9prF0H`tpAl#dSrL$@BZ!8lj?uuuJbuF%oOaF zGJQo;%=`B781ymkE64x0?ihxDDx0TY%U7hguJ;CS^exCfn6-MLVX9~L@(Z5ekKkxL zgog=CxXe%a$z5)*7a7@kF7YI}o{a1-u$NKZ#QFE$2)%6PVXr(KA;0DR2bR{+zY4BA zect*%4jd(a9sVxdd`u}xuyuWr&Zg`4I*-ovt zoMI_lM-nhe!CAYqx9^Ts*W>W;terli{=>T}>UeOA_;G*E#yu`I#TB@KkS2{+swwxXvu0okfjv)B2mZDJzT-UA;AV2OeA=h;TssuoEAB zDt<~AYx1kzt0r2SpKcG_;$>aaUX$+#Gpo8L*B&^Zd9iek?u}umbF95PH=aCtBAzt+ z=}$WSnAWRCw}yU7x-@rp?zj#qOrOe8=~Vgz)sG0OyahWgTx;R>tvv%~ z(~W68%BZS|d(s26M{w8P)CROaX)*4~-_XRpYwefHLV661QTlec%0@qj|BP>ylk7zQ zSHKQ_>f42D40J{`_wiFX`uybnX`nN5|08}XU&sGP&JiegrKN$+BL&nOwHZOiq;-NK zz)WXMQXEAmK7zGl(8RIg6cYLIAxh)YAXkfWbLQsBFVck8r;v%)ys8z_PZox|O0Th^ zMwVJnMm_1mrc=wLCtnF_;!#g7T-_sGb4BLFoO97Vvr&oFE%nCr<&=)OgK|TpF1b(S zf~IeXj!U=8gEe7SMt=#eI-j=oPg3SS-|ACU{GwBxs~wj{uN46)W4!5FVy}EZy$o3MYfN>#In^E)H>SA#A}y!b z!=iY*eI7~1pq60rzLf-WK(lX!v8jczY33;M-Sqfg4^)v8_N^=!4fm^aF3VM;KeZNDg`8xBYJPu9VI|%-)Lvh~^uDlP;_!_Pe3yoi!fckd0>YRQK z|1JEtf~WY2{y5MX(P?~K4OE=v{t!^{arhf-_>N!g8u4*xRVR!)iz@lk8g0LYN{jI4 zfES(5AIxhRAJw;=ew?%uvNO7JF&yZe&na}z&iNGM=frWxdC(|XqcV0*)6^I{@;b}J z`a!-XWv~lnqF&b8)*pUP@nCV?h@I&WY|hO^$KYo{zD#{|#(n-G7W$5k!GR+JChYfB z!04Dc06*W_ooWnjfq5D_H%>Wz3Ny;@0Q^KJJJIN;cCnJ5Xw?Q~w7#u3w$8_1bk0Qg z)XL7e-Oo2c<)U=;#@0L@T%1L#JuYb*hMOm-4`6Ivb|(7OC5x9$`(Enj!$O%bw!ZZ4 z@O*Phdbez$s5@w+Yl@?%(D`%Dqm-myX-EqnL1qm^cc||+Wb-;(B0W*k+h3aD7m7R4 zC+SR!&hW@yXQV`9$Gji6A=9jP7AL`OTJ)dsmkv(6gU0DXyA(fo9aj9%^~JMc{94eh zwkm%4Fn-cSomCS@=~=@#vZvEWca{Vazj@xS6G@MAQ=<1meb`KYJl^s*?RY;B##{Zh z#&~yz$n0-TqhA`e>)tf-ett>j1>R_=V{_+-rdn5z&lkdaSAaiN$K1&)cz{2Ghb%l| z;lmcbUgihA$^>ib%@6)I;;z=H{5tGBfPWOc5W(*U&s6=yy}f*|i{PKK-}0mJTC!DV z)Rv#F!JlxBK)F|H@Hf@aOa4=UM*hVA9X0McU!(YF4K4Q@fT{~_esCwa(&%u7sk-5C z$-GrZ96pn8XGFV-pX9w-LrG>lAc%16kYIC|cUfe?N5BP7$R7F@_~@KVyCC#y1ff@6 zif*li>JxP?=MkXZN|AXj^N~}p*WIe~HB3aRUZ$an-!cpdVo8jQd=Hg}$S66s>ig(Of}B^W5m1B7;ND+G#8o zo!ZU}et56SuN9{Jy7AueQxH*pqd2%QMC15f8}h5pQCeYCZ;tXWmJVRdAGrW6?viv6 zJUT}aUA;NVui+ueLi?t(*olwQsrad1V2*P2VlDiwIjy|8Gi6Cmzy8;`8ccPLqBpmb zR^IH!$F#+pnG=`d8f~iw=&O_m!Qf^u+_q03y)d& zdYK#SA-&Gjn;R%U#!dJ>xo|f&zT18~{7P`;t;01ID~~l+YApV9pz_+`|ATLZ;c!0B zXsoLp<7)04u|2K5wqo&>Rwp{q`pV9_)=QU6p+T)xbcWpP^!*cqVNdWxiz_>8EW&Fw zQp$tr8rz3e$-C&#zEj1*IxbXYqWT`~+ZV{fny`DB+-GN@QG{Io=jh}$+GjTsuINDSKYbKVgH}Cc7k`pSL@R7tYY5mQEaz#jpC#JQlfXuPj4V;ykB5{ zKG5;kn$X1|F-06i(^A79o{f&b^46W-bN7K{Exq>NN3GI8U=rv&HA_D&lDF#`8ZKD2|Go>W%xUyk%ni z+_)z@;YTbSweUp?2XK_T=7EBNg(oa*rd`Q?&8GF?w0+f0*GJT6iz452karJm>hmL3 z9ox3(`H=oTpY0q&{`_8U(imRg8{k*n1_rm>;p@-k-ui7Dx(E8V_$%J#-~7(o-roK0 zmFr$Vn(hCojJBrUSe=h{c=Uc7z*Wye6ZihieyQ)1Ui&88RS!ZF_dWrC)rTxU?d5tK z?p>jyvC-Rdt`3RfGVlWt_cn0VqtL|JZx!A(;c(ptJZfF#Uw6x$h~OW>UG*+B;d#Ek zYMSHT8r)SMo%>bbS|dALvP0EVhtC0jA%geV?`8;MXzt#GyXv!}*S(>Q{2WdcJ=JfA z|1-3?2%fVpOqSu-XmtAeUTN`Pf%cdARvE~BKTt+_uDQ@k`02ad;=c`aMtw=ZPx2&D{pbhVVsfw25{w9ns3qn9^cBJPK#f_w=<%D7eD2P`U}x7;#=+9 zh5t*~D?f&<`?b})2**;TQ~M5lpzgF&-4VXg;s-1~V&NfRmJ3%8Tl`_5{5@&$XDoig z;xAh~MV#8^!Cw%1$$EsVu9)yF++p2SM`V9Y_@!Z;XrM<{So4N00>+q&t zX7yWob!}dFzw)+CeVgvyJlHqEldgv8-n47VoCpt~y7xh?YZQ!m?(Rn`(584xi zi`k!O&k-)>AmN#wCM5D(xAqSWn-hf-&lQG+&Dlb8z_4aN3Sllj!-Iv?+3%}e0iDS- zvh$t#?F`Pws9(@`bnTIk&?Q1LGarwxDU!5Fwf$y(A{QM&cxr<1tICxg$8jBYj-}(L zFr)llR$qag_=(2xqw6qyU0Ry?a6E9Te(PQ<@pR#cPQ09vo6MaM=-cgQX@zdkxP*V? zre8R2gzF}`?1Qe}+UTDwy=Y`EiAE0Gg`4FY7CC@1qFe3|prb>uQ%!@Mv(RaOv)nJ@ zC-xc-SR0+uTdV&3f^gJ!wrv0fnE+RdCh zDwLT>H^q|q(!ad--17G_+$Wg**6~>C=F+7@dxFb`X9SlH?F-J$&Me)U+s7HKm7MRo zH~8L;S*4kM`+{2s?k!!~$GkuLrH=nF?#~NSsX3)Yc6Tthy->V#?XKdh-W#GtS@}!N1k&Pgxln;D;{S}#ISX;8JS;WM&~MSEP~I^c|ZB#r7f&qlCgjq z5X8JZX?j2R;Bim3GX3|ByIO)Z8f3&{$mtGyYywt?n>+6K0 za1}pzoK$+72~YXPHj0xfx4Gnr$C(Ye$zI`6znbJ0%dalI$+}~Q|BP7^iihY;xEZBA z;GRMGeV;iSk|chO$(@0hyqC0jCza*~%hU0bAFcJg%$_&8Glw(%FT?Yu@)zefHGDG} z%=*IocQts)p7_Yz-QI8dg;;#?wN$s=UPCGyk0l$t0yi=wa3>yd$t~isJhe0**BZ{P z4V8{)ozYs?+=ZPD>&?vMC}G}MX0O@oFV1c%e_{5!%D-{muHbV%cOag3Z4kdpYk%hHpf9#4pc} z{8IjSgx`p~SM_q%@XlhqaBu0VrnAhNaEABP*v#xZcxQNTX@+;3?#8~~lsRSD=-o?s zt}FgM?V{1UyG)o(G4fL9b7p$!;F_e~JdPPYmzgrVxlEriF+Pfi;**WUXGG^>qw%?q z_%x2kXXKredb^N2@f4>AjV9 z=q-oOLo>WR!Hnef!Q1?B9Z%t(oROn1Nbcj#&^@$|_vtL}&RM+KqjHw4!qp|=T6_PH z{Fu(#+trsJUUP2w*^AFDH>C1GY&0KS@8?T5caDuMXpaZ4Cg+u6K|ENAUEFU7zI;ss zbbfFJVZ>6qOY>U3T3=Yv;}?VkfaH{k^f z5~G|I{K*g1t|jyN_r&9^k$5b!@p$zL?%_PcIJoxGP9LlOwI#(JS@e_YV`q9_rM+az zRG`^O*SDH}NS`1VlO65a)+!h0J`9sAaY8_GJ*t@-`RuXhH2?C&i3iLVqtD`^qd!nr2e}RPWSJc7QjMFR_vP=!@T9 z{44t6cIvO%zTSI^U62oEdb?;p8FS7bKFf7)YTUmTJN2(O7I)FNXiU;OXDRykn8#UO z`uv#M6=fm%80}BzC)MBouKIhzQ(nUFq-o>IW9o(M==+d$9jq{BoopUa7~V<6QSnh( zCg^(`Xm`e6GBD-&9%xklXQk;c2`}uo*Ol3`JUbcxGWw{1a>E*gw&agin7+(+{G;VUUlf)Ld=lPm#ear}i6h|> z&mw254Wth;Q2g8Ss*m2uxx{@2uto8PR`p$B%1*c``%J!~xS6&=-h|`gt;$!E-m|=X zz)aGPi|?O2E}HyYOWq%41-yqRkjDG8csdM2V|K!4{80T;xiWr#g!|0Gx);t9_fWXx zsks+k@QHYczd*+-ypKo=p0F?!4le2)?CbB{%5o@__gPK<`b}Gw=;F#NJ3H#g0k>}Y zP=EJiso-fTH*Fb4V2E-jH@H;-LwzDUL_V{nZ%Bg3j;_wDQ;Veu77Onf9K2(of9v43q27L- za#%DxI5onFmU(gD{@1FAL#EL_B(s8OfBu-us+q>+mpJgv;XQPOS^hDbgl1P zoVv1iX^Lw$J3AM5ZMgDsZ>4s*nYe2L`U!<;b>n^ns5ZQ9u-|5{@O_IqZa;D5PsS(A-F@3iSiLaGU-u4{5>nkqFH&} zz{L7FK^DHx3(~=~W2gN=!`KNvX`zps!e3{h&i4r~2*Ow9waBg9h8#81js4rFA*OOd zl+FE{xAqTvwO3nN!Bd3FT%bEV)Vp!Wv{=cj%)?P=1twT*8{#zEhJH5h;LzROKQy#u z&_$1^Eg^~y4Lg*{HaZ?lFVtuHf?8Fs+j?Ygm~y?u+c0hd>_#ikCM7UfS(T7GQPe1Yng+Of(4m5BKPOnZ36 z!eJ^R|INN%LG9BMtj+<4m@9cq&wSfs_6{Ld@85zjzC#+~%e{fY-aDC)z3pv2;k;g^ zYu+w(wAR#{ubqgvt5x}s89GWx2zgL5Qz6QUzCVo0^>x}%r7hL(df^Vg#2VD8LQ8?*kEnGFC z{}Mmt*Dz4-Dto=VuuhPTSObD@4hKEG-B=yn5=1bID>!^hKGkXt=~4>ztwYeL)*6KdDrecP~7(Bwsmjl?-|}U1i@6=-ul|) zNjzsJK`wvoAKJv!eCx*U^#eV3_AgoAJ>>zy>VZQZQ|lSx zsR^RHZRqa)@Kv?bdK=u*uVnUY8{WwJe&C+POH<2EA6V{#CUQMPcMNV>a(eQKo9?Gg zPY&>ZNor~jx#5l6fY8^ynWEd?y={xeJ8z<;v2ulKkSW$GX7C*7@436*6;W6`46vJq zH}wo4J?XOps;8p`b#&2A`#gSs?WA*)|9LAJ?z>Ps3Y(GndxAFg_t-f@^EF2EFn!Zx zjp^j?fe2l~+N&>&u07V_L4Ank>mnDO`bN4Y@vE+7Mse)G&arg-6lRp)DDe}WoBun0 ztFaSbmlloJiit!&cfHrO!i+%uQT=L zu@5M7s)qA>_FMU`dCna`ed{-uns^)ZDhr3t2UnRm{5)_!f)9arL~u}3R*wE!EL3I= z{|evf2rjwj>InXMzEzfv{`-8ZOdZbWw8sAqOQ(9H`GVpgn6^-13RhTy3PaHK>uzY* zgQq=rPnN??d~UT?=;p=}$7Rw4!4CP(U7>90=W_Tu_PO2xM(jzux9U*#^l#m=sU8aw zux#;?>YeV

1@oQOmPdb;heY;cP|DwzOV2Q`r;#k}2q?vhO^@d*fo%GrG>ISpYJk z%4m)IybN65(Qz$nX$0K3!IWHd)$!^Oc$S~4h>W9a{edwRrNF z63W;@`|z)Ox^&r9)0e3o(Lfg2el+!EIdj1s%;qkDo$MzVEi(cK-m#ERGw1#5-C@d^_c(kTCA&!zL6xQA%QL44lk#ecjk2dC`Sw!6e_N`()euQz!k%B0KkeU%iAU;~@rR!v=8qnq%f2i5Qyw@Oqld29 zoNGxzKMK8n6MHnidAvEbJ2;15EH!#udVA$*bbm$EUu^W7$K}rpj#cEZA@v^P@8-^6 ztk&OU=0drr_?_kL!|xr0}%rw_<0}6MjH7^_VSed?E(6cpQ{V5jG1vr#*Bm|D7(HbL7YkZ zLx*N~fvX!P%`R?Up{)MT-IF37j89G5NqaJzrXN5~&YqZ=={V_MTSScVP=fN?$sU`X zxn*N2+gbTM{ekwWh50Gjz0zyyD0N=pi7#Un_dj!AiluXYUV68w=O?)v#ngAvYw+ph z=i2Yt#8dW$mzBXw&Yh%BadBicGG#>mKeRKMB;Mrz>X5hm`4N7n^Q$`WTKy_dYW=#s zQl{T41k}Tuwg0mzmc6djkf-m@QSZ{U=Mn9lx`6h<-q7Ss`c3cTEb`3dZOnT|Fv|}p z(@YT&-uy=P+|2UxL4$Wwkuhd|EO~uk_GW5dWkGwTb_V%TwH@|1(FSAwuJb+rzBe`$ zzQOwt^MZ!ljbjb;@3G9=OX`1T`j8(mCGEMfO(~)xVg%J@||J zYl7G)Y4r1q)wZospH$@JrJ0Kes!jSa8k#0tB`8iW> zO?xlpH*VtI0QgANBJQmNSKSE>vmx+fRi5$cyL}WtFCp*jf;ARzBQ+j zZsTR3Gs>esfL?91kDuJ5cN)q4fok4`c{&Grm51X$3tVk_qxHWXTy5LA=kTvKE*kNF zif^^`w4(>A&39P*e?YIc-(~TC<6C`z!|%gheL+_4q_2Z-XB6LYy;m6DwKeWKJE{8M z!dqYC4$G<$zZaobU!y!y{Qn8u8M#XasXF!;_Hu8lasQ$t28v#F(;4B)7iWZjyT<=& zcsnEa6hGC!H9&>u_L7N4?jI&T>H}3qa%ZDr)yVw=HR;<_bq)PL4z4~^^1;n#K<_JS0m*63}Qhkb%{O3#4{J}*dSza;m!!i0Rhh(KF_3a?!d`%c*} zB!0rl+@}N=lO79S6ol?&LHsWu@7w4QRtZ99_M)-rc8_o>NkNeKj0&O{RbQj{JY%8u zs0lZF)QF$iqo(*;`xgYyrVIp|X&Zv<0cxa7+L*j+|Jy~2JkJ+Scsm4%hwizRj`3kZ z1Qd@0FS;68wQ$8pkd94#lZlTY;Xg0?<)l~e7pVi3 z>R=`eJwro1_tYvc-R3=WPBL^f^2e!EnY}~iy~(PcGNR9Ptn6+<7nw^bhVJ!)+qU#o)twREW{=@u-==Mwx$XLn%|5^Ng9F-vm>cT98=b86(mgOdI33at^$!hBix!n{u7~@+#Mg>7iJZJU)ZA7U zwb-<^+n{dy>%#?YO5 z&5afT(DfSA&EK>5r47cogfQY|Jkm`wLWXqm_6~knSLMuUET6D6fGWRh`Hu2imkjB| zPhsjOe&4XrMg3(gTd{LSG%|NVpmaFBsOYvBm++6=^c%D=6ccn+^B?~0CUb@5|H-EFXB$0fgN2OdR&N@{RdIB27W6H?m@^I>K!3fcDZSq# z-Okio(;at?2FA@jWlUwPiF-_!jA3d(e$F)SdMIy0GyZOe>@)|x6{v63cj2mIsy7ZF z=G%|p3af$njLfO#9JNDpowuQCm4S9MknI--Hmx6Ga?ov0yRg4!%lI{%lN@_KFxgR; zDA4Clr4e+D>3cVAxx=$)9nIeO9hsAFC`g4lF}=Tk3R&1xLi$b`?vEl~Rqth5_~|>^ zcXr6Z8ntN|m0Ps0)7nnurY=Q&g6M>+xZqdqJ8uW~`MG|>@l%*lek~A)PW(jU_H5Sayr&%Ypr`K>3t{0^`$Y3TvVAvqSo)$&q39c(#76^G z7#00|^m2Mjm+r2qImx}*$WY&a{Ll9b<%U9d_RYwQy-!q9dgm1TMDi2d>%IF#+FM)l zy#G~d_s_1-ewU|4ZYaGWkDuIqCCR3B&$iygmE6?JI(-hZeBMk&e-X^|{$eb~*=9ch z9l8MSFq@r5N0#P1wpaMe(ly>N{C{5hG3PCtyhBCmNfU3?mQqQ=v3w;bSNy7aKJRJs zPNL5nxM}31ax>|%-#+@rdiRSnHZ(-vP1L%d<*Vo9&L;n|yf->U{;eTy(ml2+4-1hz zL>}G3*~Mg zhLty&FmJrup!;5lW%P1C7v_Ux+b%C8A69x3-gm|lW=UOf(!ywA_En$?h0?V(8!ON7$_~eGkk@GN{9TvB#8e3;x0HMi2oxN zJ|&2MrA_`NcM_C|&M|~bhM2IhR&ZeE7+Qh%Z{O5sw<4W-|B;<*xYez_3bkg7ZJh^1 zqRYj)7kpb5r+iaVeBHAl;e&XmeK(SY;ZkpWK4Rl*F6Vwtw{Rm%A}<+Jt7Z?Ah1rys zGwyR97W$6PNyc>rVVTGeVzLQy2+7#;*iqcn*zq}po#RyJB$5NG&Wc7xWh^7R=$xdF z_{mQEM5CYT>x=vpKbIECB4zK4<97m!D8JzdKc&s_yPR+FOYxIwgWq)KE`Q=85PCB_ z^r^WLPC0AsiLTzqIfHQNa4gN7f_)xw<`cXauT7l2KxPlpMk2=?r@DW{?7<)&G5Gj)ZsB;k zeFE+bT8H8f?EvwQrO;IquHxU|3x@MB?T_MKp_1a`8TX)U_g&5ILQl_~9wnv6=%DSM zfM(*YvwOAi*4`=3r%>5@?c*iWc#_l7q zZ@!o}RdR*m2=R{RNoyvIx86t5n<_2L#a#UL){Dz`FRi#|xC6?Y-Ruz#^hxO7?j8J* z<_Ts_$Xyz4kA?C^eqBCJ_YIgmHeGIygZACTMu{W&cP@K4*n1S9fnlEtdVa;j;~oi* zyPN{vTHzgaf(_g?C&rK$429=~XLXpNF& z51H=c5bcQmk|C_ z3m>LGHMoVV=}?91{sX~v7G^EnXkpI6?G{2h(Y#Jhg#L{5J5z7Y`&q`*aTE9M1wT-= zhjw8NjYi7bz*XkX{T6WP8y%hj zSD8Cp_vy+g4w83m!QB~!`Kt~A3g1%Y9pVj<^vhj3O=pB(Qsb_3FbZn{KZVBvziLE( z2z(Sc!cXo?YvS`j4SqZH$`6erqCZ*_-q*p^79O+iKPG(TPsZZ^Tob`%Ol`1s|0?=PREC zUIg7wg`=Q1vIiy`X~LC1)m7221{&S1#dRk3A_QKK1FPpd!G9{8@Y~2I`S*eH-)`YX z*+Vxhh%n(v!3)E+kZ|ePFY=k|kf-9C6$H--!uPNsd{yVgw_xE3*+aL2ywN#Undn*y zuLjpVO7^~m9Tui6?6NRz;c5#r7Ak+`KWpJe3v(83w=i#^@?Z4sm5KF(+aqTzx4UDC z)#Hy&rWsiIM?Ss2=7)9HdfgU6#!$7*Xos^;O^m#I$YE4OX^ zz$PvoxF@_Sd79B)-_OOy{aZGlk*CO`SknwYUD+QUP$hSKk>`g}Y;q|(Qt#wnkw8>(v}I-@37fLvB+@kv6&xSne7FrfV)_p2Cn* zHG5c?{Z?e|!Z2ve6a3Y8RF0HqjB>_(K8{6HPV+(|YkoY!mRZlZoaQdRvCi!R$~+E( z5uj*f9KX$cNBR8}M0DaO8vO{udn<8P{G9();7M?2Kj~pXaD6T}N;d`9r85uvD6P0BsEGO3xkJi)Zp^zcP zqI#%N65Ynnoh_REgLjuMKKAsOWG4Gb?;A*KJQJojmNl{ubUTHz(%YH};gJ}39}~9Z z5Q0u7CRviRQyP`_sGa0vt=Ng?NbG3cb9&}YUi-G~4&vDwiK~%&5w|??RNPXM6Cn2r zWd&h*NN$AOKzDO3kLQrbqBQ0zOEcqdJ23iei3IAzu(4Q=}{LZ_Z2|t zo^BVU162pyMkhKVNJA(HvW`^#3Tpfk3Kd7WjwsC*Di5ujTq>i*1i!hwpX?$10R zh(DEq=nq+_z3>XRk+^A{w?Gg&m4)a!EhHGTep39kj)KHMwe|nE*Hv})_}Ga@^cEg- zUC=Zq(_8y{2L4@(hJW7zK*4uwYB*sgYNon%61HK}mYxAOcRbBBj~8&Dt-U>`4%2P9 zzMf%b!e@|S-R{wt+AXb$lS$I}rACvc&voXX%mgQ0y)&+ZJi~e7b=2ADJW+e-@5as< znt?HS{^~nAPfSPXXe!2NoQuxuUc})sYbSEisjb|_4}R5oqU0?;c8;avS36HULi|Lh zFht|{-OIP)m*OXL2uAhhf4>8f=$z4+qNs6h&tn;#|B0^N{O<uYHVt zPc!^bS0=j|zjDy(f_Z-*XfSJyr3+}^Llo!?2T@ia#+J0Gr=4_ z&HUQTF(Z1_diirE_f9zdlge9p?B??qd(Tzadr-RAdkWp{czNnx*(jark?wTRouQ7G zbl6JcM7nHAH10g`e%0%Iq4)@COOv)(Hk{`xe9iCm)BM?`Zx3{Sa&JlLKjJ-h;)wTI zek1&Lp3pkM_x4rSBGGk#sY}FP>zcHk?>nBFgS)kX=%&)mntArYQ0IJvhN?cYjbCkA z9;->q#WiV(d3()z;{bFq+|tQ!{Fg}6!_hQxeqMcmDW7zqc*v!RJXYSTeAFknGSZ#| z-`i{2xAIl_?Av^vZn-#m)fd;sTc)@>Mf(Ea-JwKLU+>9nJDHV&>XJYwth!-@m>cy%7c&lP-5KN8 z&L6?&EIeW1D;7#GBlpKGeBMH*KX!WH1qflEK;@LR2a9}DT0cY#NB!@mYTU}-eVQW@(Pnz*->?{>=B;ak8} z{tkaX_#+YgtKg~^&ix7S0m|LszXPuN;_%z-m+Gk2rkYbaqdDDgsNz^7TzAenBmA6d zTElhW7i-+Vg}Zn^#!vkB)zE*f2H!{goDu(jaR^ZOBHY!E9KU%r^gqWNU+2}Gk^kK___mt(Ux>Tv!y0Ji|MNBU->r$y<TPgn`17PFMBsaqIr4 zHU3wDtN!h=?tf9^|7WTj$IJ{&j{lG1wkf{FA2`EvX^-#qgyd#ZPi0@mnAWzfM8;t+MvoKOuhV+r&@%C&X{q z;*SBvXH*bA$1EOL{3XGqzEPpy&Wk3eS(Cqy|u#gg3HJsLHwzY zl)pzUJTCjUvR6WocqFJp^4B5=-X%!*s{{#uqab|LmzwlgsJeZTDj7zyutp124~0_& z4D>CeXbhgRP+mosws5tD84K50n6+@Dg*gkiTbQ?Szl9?fPJ6$)7512Y-Ti&x?bD&! zkIS|>sK#yFy`il|>v`Zv_TAjH%>6loJZmt1k#{{>%Uma;2f`!q^{9|54fXeJ>+SCg z=_jcF>qItmzr$Uhy_BQtQ+u%wGEelQYk#KpB6a4}uAxiqW`pR?kbxo3MNSusZq)(p z?!loxt`B$iWa8kK?#;ZN)y+ZeJB9|g<=p9ScWA)wEpR8`ozL*bBKyj8z1%!4fi09! ziSFcz6SDafPS&$-M0IsV-;)k5xabmnZetkSvI*^S)yD+OT4AO0Y0{yhs2jy`*V@eh z&VQK2MkHC6gH6en{yQWHt(TK7qfFhbMn0^n6H*-RA#efbR3S;V_D-CNZ{)yg<=>-fK|LHcye^;TT-|Xhe?ui0i7e;Pz zZn3#df+Hn5SK>~$_HG?sTIaEDXv|%+XZ|Sn^^6+~Syi(R{mEZr=M2NHG4uGVZ@O_~ z=<2zg@dGfGL6a<#riv%(LKim~Tjpar}~CQ5o_mdLPl%?hW`1 z9uz;OG{)%e9p8QnH1hNL{Te^frTEE=Kvz#T{3RkHI%gJ&LBu$>VLr$|4Kv1wuAXf8 zy~NL@O@tev3-BmD$Y4$WDXoi^ELnUeXGfNHPXF9%g0jF=Wy9JV;ADnIHjG@s$#s+G z4i*c%@#*&aPe(q=^v=j{TID2Rkf$+`=@LvR`ZAsD)2isQEen&0Wlb$1Lt-HqTpJ^LM!i7CKpu z=JT?D*}~V09Oca*yly$Q$(-S_eF#j53Bdo4`jSc&~L)`DtBvW7RE`1N<)G z$?br3zabL7`kUXZ!EcX*FZZi!_(`syI^y`%$`yv`wPoPoQ}=;(n;= zJIv1y6Cc%e=RaE$zgNN42AsS4cxM#;Ji=4kaPHUFgnvHtN~3dssmA>Q+yZ_KA13`3 zpxTtfH}b8vYABxe}0_~U}e8&s#WRFWqxRGI2+CY9Yqtzj8y&%VmyA`~Rb z^NZdR=Iup(n1>h54fE=vb|QoMuduGH-OoP0@1pLM(d-v>3&$wM&?X&I9v&WKE!l17 zqjeUP6UdmY{|BuqC$P1lPq6@Gm`{k;)C;_*mzu=ZSKkWKh-)i8j>U$lNOWp7Kc3xSq|FOUn=Yd zr}cLY159LS^7hcT|2lTg(A^rNaa`YSsn;pn$e853Xl#qF)7tUyytNa#=rjf)Mijs5 zx~~(*{n$B{j-SGe@_Pk-qLZCy9KQ$n7OhLW&S=$J&q*#UI%jT+CLT-Y_60t0%0=nw zt>@Mf0T*Y{N-iu}v-l{l6hGw&>$%RZGuZ31bZN?xpZ*@BPR3hIbv>uOK2CScJwioB z%}P6aDu~N$?)|A;#dqBM?hNc2h$o|bp{%>`GkNw9?%5|^C)50K@mZH840wBaemU+o z%6>GMq4V#_@0j!O3eSZ@{xxwodub*IDuP_Wvv=-Y4aseN1JA@8$Ma zl!ny`%iiI1yWQuM=MJKV0{gzR%8QQ%+Dp=z!9;`HFuV>Ffw&Z6HR?Z(O6x-7WD@%43iheRvk{+FnsW+d$vv6ZO zI(U~B_sy5e(o^PTMx@q$)gp{#g`Uv*StSkD0dOZ zbCMr9;hQ+KKRw012=C)38retB9&me4Ql?D1Fy-m{7gi2%4}y7*H~F!O$4_BI_sZ*j zrKTkNqx|vmZ70pT`+ufa9P45aRZQpqIYTZQKgE6ix&48cygqzmArtPc(q4ivowt<# zj`E-7-D2~ufJWfyW$YbT{J&VA4wHDbT~`WDfPB|PVQS{ zjp=)NH{~OxbGh&8&F|aGI|SbSqDy28#ebn5m^#4QEHr_pYqB#+Gjsd6OKD~4lADQJ z_W7}dcWW`09X-w-BbslfTwz}kQ8-DM#b%E>N}U;w)S2+TghKfmXqm3w-#Gf|N+MS% zfAIrN@24?Y@r1?~zP*;|UIpRTlD-$32_!PsNz zr;Ca7YTiS5n)efM&#|8+e<)BpyT*%^W^&h*-Y%GPf$HlI##+gz8Qwe18wWon%`?3B z2LZG*@_T|A$)Kz-Ji_(7gY3atSJWHZ*JR_Rgm+&sGr5!Z6libRAB@eN$5{rwW0Xyg ziH}G9Pk1B2H=s{Y{tZ6qPmS;4`U~un)DzX`Sdw>fcrT*4@abjr1xvl;=(0bj{9lNa zeM)UJOWW}dmKsP?JRjbdVd|0k1M**Tq~e9jvsoZ{>~Np%bks-H}1PrwzZ6 zy;`%#SIL^%D61L7t2K47qO&G#qqbe7)mFyiN;5Qj6xpv*Quz}tdQ5r(3$>;ZeuP33 z)VW^4!xXIG!bPdYOO|#nyYi~8t5;ro-Kw|0$tZU{N)IJ9$e)a8uaPlD%V3;i2o4yA#mru z*}6Mi>*xiPzr%aMRUaJwtMacw-Wc|`fUBN3{QuZ5rAhbo2NoBgzc=^SD}Dw1$^D&j zutx4X90C-60d&p?|GYzh!XwTG-(2HnKO|KOj{3JeSEoAi|MXP9UdC$ z-8kg+Z#8Rz?(r`UTyP=SFg7(upIPw_aGt@gA?(}3p?7`#1FcC)!E+Jw}Ime+-6-zZ)f8i zM)nFs1)B%A)H|-wxA5w^$6@=o^bYp*U)d=~{z&E3*B@GSZ$m{MD!uGd$0@@|$>P_l z_j(WYuiBicBf|{nU&78A_c;#>eN)AZ>Ey5W^*BSdGp1JWb)=EK6u3}D>21c>D>MP| z%k2WnWZ{(piblrqQyU{nUYeiGDiG0$pJ?@i9s&RDh<~h72*T}gB=2zKpJ~180GBb=-2;>w+(P*=ZsOhz7E!)wtc%vu zBzD*EliMom&f=wN#$Ef64Xi&?KqVi=o#jclFjvc?=!o0z$=gsVbkLS^8_8i zABLaiuj;Uj?Gq>Tv5$vN=CATuCdn__C+6X&GLfD77}qCK6lx#UK2{TbpP%c896yC0 z<)=A@=wv4v$B*fUX>TfLnMOR;>pOoPH}Q1lx1tD^4xPt0`J(D#jOe0u($Q)BaB&u4 zfI|T&cNah9$)Y7o7hiP-GN#2>P5)hW?Hj~Q=sTU9<->o+TCPwiK8~E_<=hRWSVsLD z_f2Lw_fKD^HJSRs2HPLDBWH2zF}HS0h$cm!HxkMcT0GW#^qXtwH#5i~Qmp-w>4PQp zgE8)3R{xwj_s@U$GH1MWui#9tP&`IoEqRF6kXjqc4!+eh`oeXVMDDXjiC0i4Ug14? zLg)6c;Ox&8-VuH~Pn<*ib#Fo3%fMUlI96&?(d0R&Lj1(XrAxdVUw?|QO#iO?rTyo| zV#&FImwakWY4Ay(?(kMvv5`-ey!<2Fy_gBi9gyC!;P|Vr&To|bhp`|DO-o*J;_Xv^ zb>Q>9Y|JmrQQQ@W1ncws#|y=Ld|mO6UVZicmpMas41aQKpW@t0R2K9Il}T+#hR@f{ z67_GDR%_~wA#X96;V9zXFMvxI8Jf6vw*8i_S7U&if5}~K@{1v%`78W?*Wl_aoRNE# zHQ&O2)j3+cc0Kp?8uv7~-qTwr$QX23kO|_W7JovJjx9kzqH7g|u3ZrO{eny`9~MNY z_KaY2nC9#oLj9|tjK;JxUnkimLeIA0joll$aLO)a%#rijHB`;QXwuHeDR_maylV%x zDTv+a?Mbf-<<_&(S#m`fzdFNUbTeP>o-QwQ?G3Bmv84Ov)hk(=y%uH6kI7EPgR1GG zbDu~4JL5j*VWDq3wJ>kvjEl--JVdR^-Ryao@UcurT3; z?=!o1dE#eHq>m*g;_+D_?(E~%Jr)b?-8kLO8Yj+p(U3*nnr6IZoYVNAv3906QY4RN zC(Rob-$jq%&6nGo7(>WE^S<kUwj99KvZe^VEQ#~a=dt>R%=OLqIe7kBXaY=eNzxm3-jZNGMjBK}b3FENj z<p?Fm|3E$m=WX|4Zk&QD)i;WbD8^{;U(He50>^)qkhUcR- zpAnA>)1tYxdtG6qDXesEZ2I zu6W;qj?3Auf31V!Mz5m>&-=N(T za$!wZ_h7_pHKXc6>jSr`-duE$;Z ztvRi9Jo9mXl>Bz?mw+q(9qxnce4WE}Pom1j;h&<+WK?&g6ZtFq?Qp#Tta*jQU*=o& z%HcN=4?lu`7`!8ba}3YSmBd5*uZCYb;(jOJt0VX(+*J=9f6b#*A02)fanDBZZt#r} zTxV2OPaXX~fUCYb{AK9#;Lr0@e11fHolzVY6TUOTe_Dfo9{GOB7s|JEA!muvX_QjPoU8vK(r@sW3xzt%ts|3r;@OHKH5Yw#ZYs(w5R zANhZCZAM48xo7)yV#Zm@(DESzG%+b5$0dKCxNLoF1_&&FN9Ub|vx@5|-1HQuh|FCEv&*Tjhozmi9doalWvEup8V@ZGDURG{M;qnS~#~a@&T!aJ7YvwPyQ7U8J9K@ zb}~l4goXI9ell@Q0+D}Rz4#3DL`#>tt;?sEf9;`cF?IDsYo%jn-Pr1dx}CP{r`ZAY zz6*$=S*L5=MxLLPyL3pO@OB2VSf<1-g%ULLTaYPv-uuzNcuiVoR^?GS_F1y_baJ71 zo-?AXQRANOPySwMjQxwZ%$QMbC=`mf%y@hGb4f4wJkzUK^4h@j-We>N*HB(M@49k4 z6$|E^7Z2h&FYse=+;`)?FF5xauRP~`;xfl8`|&(@y4;YA1(XSP>GH?ov0xQfa%GS)mWwTm#E{)kN!l7=@XN@1O&B-fP59QxSHX%C~KiT~bdpNb`PNWZ2yj-EY)5zkGHKf=l z?5o_4RywlCaMG;xvj@>fS$Q1s&f{ht56MXM)><`)rOZk;XmePga841~OcVB|N+u(aS zldS#P3&r|tSzr%$2ABn+7n96H zd!?uH(~g^DE!uM`d6V)ug+GHL}d%kd`}ru=CSdA#rt`(A$wx!JzJ%j^wQ#-4Xu z5b8U>8?YaDd20qc;;A@x;iuE44Q&#+2rU)MbH7w`7Yh z4T`^$Ax-4_sR?{jXTVo!RQeoWrKg(4NV=XST`A>1W!jcHN}27U?X-^3rqGG5WJ!N> z@#l&w>0OY7j{IqZSB$blzEj+To9d>kmkH{lk9#9^p&ck4uUOnmL zc;sbqH}z8WNqtK^T|nlHYem}EIsad_@kaBX*<&6R@<1NJ2d8?Z6ap9nc4E1ae-YG7Rhj_5sx=-JU&KNt5SmMvqo@ z6pmKbrjJ&#!O==)JUdX(?ILGbBIgBk2o4?aI9ILo^~$X+%VzaI&L zfqB8Kl=`||LD1G7tngG1=ofN%(~pep@ae1f1zm(0oINjyr*;PA8~mV)FlZ-1`RYrF z4{=QG4tn1_H%Q>OIeBlOdQ`k{UNBSin-Dvxg8q&Lh zMB!-V_>UI^@$^T6`Fn%Xj(Nd~obq>HQ2NC= zf%GV|7_T}AC+_bm6~BH-Fq1t34aoyR&n!PsyLgCt;*q9w?qDhH9i)up|2HTz!Cis+ zgkkK}2K#`@$5lY}TN{BX;C7%7TnFp`t_Cgu4ggL2^mkMK2dN7OsS~Or2dN+MKkqka zH=i6cZ)l&lyIQB!Zrr%-Vd&qy9f=TboDss;%YL>!$^dKX$wdR_XkhpjwespkaLGBJ z0V>Z%;~_p|=|!Wx2`eowpn0Hv&glD{4gm_kr3U|24c-neInY`QRe0KKAi1mHMnT-o zo&qKz1>sEaUJzu0qc`ldXFS0~N^rzN^DY|rFh9{5c@ybM@oVEJBe@bmOpr6x?xU+N zqc*XO3LQ`V)O2@uxZa;~M_uiL*DYShw?v;}r50|QuCrcS&o1pdH*ezNcRexP<=IW% z-IKNyoZ-H^N5~(tv}%r!_mwJU+ZOm-eiVu4mLHvbcPMkMp%{!oR5@Xt)C@n#-Y8mX z-}pL7MFhX#hl}0Enec>A9I79W#WGF zV(fJv`-jcl-%nTG;D>ri&Ak<$8H70=kMA%?M5pcfrI>$V3_uJivuRNPN zjW?Y(jY^;HXTF%UE3f}O>8qwKnI?_oNAr26%o6aercY_}f(zWfbB}a=o%H#XQ}q2_ zRUp+_wIx9(XGwzyUu|J)Jj8tqJ1l&?jK4Zd=1kr3H{!0I;c0N?X$q+E_d`JC``vg4ou8&N;ab07A?0pLruJDwFT^81k|KoSARCO2b>V)v}3U1gKcGA&t8+R$7 zy>2B`NH~v?8%dniq{~R^u&S@sa2(F$W=ksxuNMZ-F*3*K9q2)mF*TW^u(}Q|i!o1U zy0}d1KFLVv;Ukb!2WQ+P^zL#H)MkrQbtXgZ6`jdmB&1f6Puu(<^{XL5y@o-GMM~AU z&lYU-9i9J3pyrImc^Rtgg!#&oIApAy$VI2NQ9J+X!!eD$W9j%QOqz>v19;7NOao;n z8pm%o-=cMie;7vf=0DnJAUbERjV2yT=k{5?amq#M>dk-jj+cwGXr*6HV<$c}^PjFI z{b1N3tBrlr>k0+xY}?oubA}?ZUXR5J%gfdaNykepDHVA*cjNQITtP-qtGx=SD!HBzRb;jb#H;v8r z7@y&vBw$_*-cy4=U4tv%#YQiFWOSThf2tvJ0%84evSz5NU4^@$D>7u5 zQD^d?G%+kaUmWo>!EvhL>C`;WY=}xz{&cBTlLZ;J^-`AZv)=fmxt%j%7dd%+YJ{KW zMjB7lkBd(At#*7;Jbdh3U+?%Si0Jr~hM(w8H$G+YSZ{oK4!`2*%)dnuEFJoXd=r$K zfH9)0H$G{u?cyxLE)ca7@lhJ|OY&Q^WZ9B4x_jx$#nT?2Mwq{1CXP>54&TeUxQmZ{ zb*xQtR{H%X*n1skd`M=|@30otKH?UiZ_dVP{VTYiw`b9nnSIdQpTe2oTZ)Z2_N{x~ zLkaKg0eZv0^L}2U442RF))pzxhh})Is`jLLzQ!+&F|&NTz9!7{NciTD^femW{Nx8q z;kfv7ZKq^^JZs5zWiqLWRACvIDOaXJ{7kZ?$Qk?tXclLKzF_* z!JATFBfWcrS;;+tXTubYTNmfk;a=!Q(myjrUf49ZAp>{cg0Z$xPOzW1di|QalB9DY z4h^+ui(p_=%-FJ6QAZF%p;}G z-KnfRbGn-y(%obV#aE~+sweTB>cvNcR??)p5-WuD#N@ZBLnGwR+0}HZjC604k1RlS zOmYb2Q6e3NtG(Nj@ie2C)EP#1rXAHnS#^Nw+=RZSnwLJh&f)VW-Xo>FK_?oE=8g8- zd-+27ACVKyNHcHpZsX@I*WEn{?_GiP+TmHsmr4w4%bTdXgk{{DsJ~HnhQIl$^C~07 z(bbtmL236+%1viJ#_RAukJsT$SchkLpOk*R$x5?D_Ho5h1wq~ zd+mu8e7(#$kC89V)SGj@mriut#J!8apEnsK+ql`!8$@s&U|3Bah9+*_ic+3C{9YTL z{Adn2H^N`z94elw5nlTi)BCEf;kfu0+q_@8&z6wtHl>v(WRiNss<~+jxpZ3lMx~}TF^H)z# z9~O#vALdNepEo$(H<)$kMANJEn`K&)#!7D3G>8wmA?T{5uR+hqw$^8E3p7V5d^{fwE zW(~2=($&8EeC)H&KIfjd&(}U5AcESg!|wuD+jaOs;;9WgddrA1a!nVjaF zb=hLFzTWPEO`E&Tsp4#3&%I5H(@We&ZZi)!Zg2KP8Ex+F@9*5uZAK$zQ*?=`L|eF$ z8AtEWo+ux#z79t`Q;?LoF?!0eIapnKEah^-s&waOtUqzJN@sJreS6%0j_l$ywF@9geeyQy96RJ(9TEn1CkthI$P7Y1!~by1wV9m~b^#+LuYcgkm8 zbj#^C)Gs(k7h~M_`LFlr+~-NYf9Krm_wdlTFJlAVK#5aA`H_{UcggEz8nP*R?kKnhWXj`+EH?ElbkZwYGFE@L411-QaW1r5~d~ zepAcB^uncn!^VMuZ2t!rE$R$OEZor7x1p!Izi;c7b=_J)Sv1hs*F!7a)VrvsXWQm$ zvs?N;-MwzWZ&|lAy|{b*+Vr}0o$2dZx|cOCZtYy(y0)b$y>#8;G$yoJA8%d1bb)u{ zGT1erg;%zS*N-$WOfT~)YpQOnE}N04NzU{xElZWXGjUmRR@u9~_ms~rdvDpC#JsZT z2{M(~^Y(_o{4b?@{b?jzHMzp#sypcdR|56!a0N$y>&DHSjomrodZCSdTLyHDp}l`o zR&aZBOZ&J^y;P*qopXFBBStDJ6_aqJHKS%)9nRdjx+PB`LeS`d* z(>EZePmOrRZ(g!iJoo*$c%l{k<{!jE@l*%mNAdKIs$=p^1Laopl=|kk;V+ub{nEWy z=)%^6N56T+EA`DE$KUZR64K*3fTAPb^oZX@%}dkEMwdJM$-epKWlN{L-=h(|4L9bS zcXI=E%nfKhq-rq1zE9=`*q1mX{gFUt>bEYb98UVoGvx+H`qQ^!R~UOs9SuQebJcKP z%Pqsz8SwN~fo$XM`Y>^`gCkux++u7hl&9;1?prH|yWdeceDA7ThWpBI9Zu%22|918 z8uq+vg0%yL-G0k(@?=BMJ#g!ARd7|%e`h6W*)Mq4t!CU>(N@o1MxD)GU7)^dX6L>% zGQ+>6EF?1vgM{B0>|PJO`}Y>g zH|7ghZQNU^Sd%ZzZ{1U<>9{&zMn9-Z4+b;Zo(>X&j|DrgW^A879voY+vrv<52xj>6 zf_*DVzi)S8@5l0m{LQ-yxte_8>55#TB2yofdw!6F?o4RZwjB!+!DE3>9$q!`1SgLN z_0_~{yE-V(_(4s_0mI*(4`RE*BabD!3eUjj%sk}|<_9(Dc|po&KWDBXNI-Y@`}2k4 zSM4lFo|SF$kQeh*9ajg{jOoA1I+f17(8%RYfc^w>euWkB$45~hTVnQ zwyT1f$h5rUiD1th>dMOpw1L9Wn|BoU@1-5QcYk5lAp8$L8k8Y}UH>Luc;>x33OkWS zCG}F4x;l_dYLI9_cJ-)M$BkVZ! zz6YB5syzkm8Ly%p&+@|kyzHi+-Lj{-V-OyX2FcvPU^o1g=bsLqTC%%P<1OHunjd(r zoB?UrRoJl z4xW)8^-_r}{Oa9>9owjnw#Q8U)MnIPj|5NMyRWdbhO*?I2zEicvg4XS^pDa06NATt z3d+70dgAZsRl8}|e2>}3jm&1Io;LY<)i~z@A%>SL(6gsgJ6B$Bi5k*};G> zCXn1EC&@KOIjeJz&<}iR~)i^8hry*(tRdzfT5e78s69hN0uv6J>&k1Vbt?V+Hojqi~5zl%0ek$XB& zU02hG*TTcj^`!se-a^^Ne8KgRb8Y{aguk-PLB6A}21)wRs{BzS=c5adFYSFMeWSjc zrw;PnAj2cbYX^L&9UO<3WM*!VfNrww5N+lwK|Ou2>vO6)_?C!QVfos7H|cWuAd&gw z;OL!uOr7Mbb`_q6W~K5cZgpw_-{e(6B7KP87oTrYw}7w^bu!voBpOeH5golTq}`hWyivx9Gd&q))`6&M~ z)fMeWXF#5*$`w3sZjdDZYHZ2YruU3^%+0!e@#@QuaF)fxmFeFFqT_#9Wwox9jz8!E z4NQ2S2QDuva0xR;SQEiNZR1y?WNHi`C!K#1T|aJ=ZYoMTr<>Q8P}C5OZv1=bv(#?eUfewO^ zN_6B4+gWRj+O*O+OVLoiDc0Kb?)xDxerlgto7Os_{I$;I^1A)cWCto-vs2m=?5)x{ zNtH+V#}9|=vVQJBtuju=ZNr#vXwTd%#l<2ig;$yL|N2r!E0fFR8sF z+{46qzdO+*emsP|#1Ce2cMfIPNAC^3z`EcaftUJULo4x5r1tQ;NqbA(F>)pQ<33{U z9MU@VpMx3Mlhw$6`H=hzJk>m7NE&b_2hrXCu)W6^D+qbf=AIX*_y1_nojD znf&m%>W%g{X3cxQtv7wy>QlB`IGavK_=WO2y)e?rminE3I1;WN`2p}$(T_V@c$dsV z#~moVKVSSoOPGCi3X^>GyZvb++%UHK?=8i&&;>sh3*Q_@HUAZU3*n-b2a4X!v2fi% zaec!)3t0ImLg;Awc0e7vP-m2x`J>BOVHWHHHu4C;4cVrBP6)Ezcv5htT`vWm7S1~5 zYl6f#>!!p{!N1laeL?&+?EIe_$iB@7Noa$Ly+>C^NQqa>~X!1Uv=85 z>~(2r`%Z9(`^TNghsT8MbY%tfmXjh-4=PSet7 zY+bX&8s+$%k#2D*oV4E9xumI?YiBnNcrNNdUpO`G@W__VxFYPd*-aaIIWzIu&MjU2 z+)~@L42#K-UE4XZZlfl{vz?o^6v@YrI=JP&?#<>D!c<6Vd2h_ZV03XZTCUP-l2gdS zi<=*c2tK-w8O_WtUplcx_LZ8wsLsE*6Ba8-8#)KNxv6)H7OvTdYGlX2p=;~9QVXAs zf~k=9b>ZTsOT|f+_?4!8Yy10px(8Uf8FzuGG4E5P*OYB)ALwh(HoLYF+COXOt{p3@ zNIBo^Fhw>EY2HQGgU)^cKj-*VjhoMZy+_9=+PC1Gbapw70r(WX43FGvBvAh#Kao{D zvheuqMXxxPNfN-PZsGt;JVAY9QF^OMta$PhEk|zw@8U1bBUeX2sjww+2=*Pwq+M8JJJz8jGO+Y$wA`_m~kltLLNB8P*dgl`(>GW+w9{$PH6C+jLt}_{9 zi~7ey_5LO7nd45(!P|!3kt0p^{vqjk(#OqO0%IhvBhwN5{yoBVTAchx}H+o5qRbWH=~! zI2j&{$nao9hCebgoGTfk2m4uU_~vq^oYIe7S-pHH!y500uhi(i3g)D0yzjhHmVaO< zGWPtJLt751=Oyc*xw9nW&<;vb#)IEAGR{y3vS~DgoM#|sehO>ELsZUA zPcQR+7|J>I-%cz4GVeR5jqRTEl=mttZ$xgsnG8687mSXcS6QtqrK2Z}FkFmq?_6uq zFX8*!yIh2I1&+S2_* zpYOrwpxSRDolNuvm9ccLS__R1NrO{aI%=68w9t&*=;Kc*9_dz57Qw6_>F={pXYGtm z3sidPh=Ous_6tN*gsJIf=hCLaT|d?a1lrkDc4oz=B*$-?!YrotdySGUJwa(S1E(Ry zk~nR^>{cogdb0`v^7~Ibk)L*NIfL>U)Q5BKbv_#D;f7pqsy!z(G4wm`cGLLaF3wA-0aNF6PM-e~xrLtvFSsPKtcuj7d%d18 zy+`{sAKW?D4{6g}v>*BjiBxUzevR%)^onDh)!;sl>mwXJce<|MS*IK4I)|v7? ztQ8l>Iv2+}7sonp%e}#e=^LCY^}AZ^kW8e6xsxwC*7+6w8P{pi6a4}_I@bAXOI&eE zjdgxv!v)k&#ply|V&MV*48XeVk7`c}Mkux8peH4{bRB#+~mt=NnLo>H`yub6T6GG56WjblsHC z`B#S(cyXNbCeCX7y=?~qrTXJvN5WOpw^`hcTRsD>cZaJ_)#LCl@g5!Ld=K0?#rszs z=d`~0VNUD#qakB^pJ@+r48`e>aazxNh~xcFKL@Z>{)CTZYax#`(`So{i?6YmB4ca^#YY#w#_(`DY?T`?Pb9aax-ePoqz3 zZl3yCla-nzitSBvb2rX505eKv4#(LVO>3Qpb&4MDL)5xMf;9>49m8(HP%V4H$}_?T zjeUHrpXj}gH6XX&E9LDQs_@x=RQAvrt*s=};rhyicQZcpjcTpIbik~>b7#}NRlH=` zlP+Fzqr7mgU}$!P7wx0cUacrU+FvG`+V`Y82xqZ2C0@!CJI|!N{lH3%>$f<Qv(0Dp=%*}QKDgi6i(>U)f^J;vUQGIn8uyhn8+*`+C^6Kx}b<5}sopH6ci zqQjD`k&C{~Ma``(cHm|-qsi8@T3Qy{<*&)l+@GS~z!k@NDRPhB$L?$|RrA}f{mV(_ z3H95XWIwU9vE+1=?ZkQck;5Z12Khbqel&85{oL9st-aiCA9o%5xI5X8EE--0eSkB( z*ohiSS-Oh()#(~L+lYT>CwA9|G$_$;7ZHMg5fz5Rhv0afW7dCMzlA@?Ah>x zVXrOJ5fl%3zM%62?7|wk1o}y@?Oh**2kB%kzTtVy%<>0B` z*Zy>L8F;G7s*Ea^+l!Mm_QbT;UOJ zPnF)K`^0N}&->VnjP?a_4urJY_n!30D;Kt<0t-%cJ5&n#K-8ZxXUUwtkjDL6}lMdx8y|X<1a3H#A!uJr~ zNO)t3@Yj&ZX&&hZEs@9P-94#Q*Zz;{XCE3`4K1C4@H~~*v|n=voZ2D7m^rN`JU`q* zy-B9#`^cQ+U1@fV_zI86+RJ$FN+O#S=VGK!HQJ{R=*Bu_IbDA!si*9>8i?+baG?N{1!>j2#)o0Qijf@3XQV>DyM;1J5A+JXF zQC-L>p5k!V#BciV?GJzQqkCf)6@3>)^?{-SgP*vs>ngdul<>`UN>r07bG zcOJIkYFE1F;2X4)QJ3)Y;CuttC5%mEA#_l*w`%YI0F}0$N9pe;zVOg7{|9}wy%wOt z`w38+oQ0q8A>P$yp9czW$KU4(9pf+iE;h^1ZgSv!SEj8CmmNCQsdyAWHvr{AyvDnO zaMk-ecohCM@Y%eFG%CHj!Np(b*q6ck8u)Se7r<54g*;0CJs8oNRI|lp=k5o*Gc+;b z*MOhqogX@b_Y+^=-2k}CcLU+VLzgi2;DQLQ^Bj_g3%?v(d!HQsA}`YOmhgz5&l0|w zcYZ4j4k)^E!lUbFs+V5kJ12aO1Z$n}`(yZg7YI~%cPxBX48Jml|78qM$MCKgKd;5| zd&c6bvv;Cpt6t0LeCvVQ{g4YV0S(yMKj)0pak9Sb-wA{;%l(ZaMKBA1?~>3-uGhxzM9c=stI24-lv}Dn9NJB>xUU=ywTn z4rQYtsDjQCO; zRlc&pSbjx#zkK0{@wnnAC^KXX)bF2gwLQUE76QD4Z{q>ua_(g4?H0=_T3dKs$e8Mu#EVSCHTX>zku5%bu51k8_I*d7pu7yh+#$-fs zMuKg@{r%lr2AW~o*d=Usv6{Vb?mtcZ_~b@kCE?9KH9DP;p&Z>c~JkyK|17&SXaEy#zhFWJ6D7 zbM%f|dd-$VEA+Jg!#U-pX917O9^h(Xee27eyuX8_EAtTO(EyRy9WL=Qrm70sW1iA26bh8*_1y)vb z@fCmKm${f$yQ$8Xn`|zItM6=-$>(BTCr?~)E=IN!+}w-CTURp<@>01GGsfc{mf!j? z#)4z-bqn!Y>+ftsCTc@}XU{vn&ZF-|?Lj)B;A#uiD1<*~;Ry@BZDC;H8y0GgL-Dmf zASk^~u+GAI3mYwz9>w1UGmeVd%PuvJ`cd=)<7;zzt?EbXDvOP`C!qr9`uKq-A#o_AH)Mgys6p@$W%3u9|y@eSI@3C;Zg$FEr z*1{JpJY%8u{+-V{km^ACYR1Bq7PeWq#=;H@H(HprP<$$V&ce7}YS%Kbo7#m}U*{^e3=cb;{wLRVEC}o`gb3}{tEt9^{rb#31-Bd!mo~F+FUA_sY zZ}Dk(v-#HlJATgb*&6pD{_7o8#yIJ$S{rsQX8MU>tk0g5L-#c}lhkaxvR^T@ppQc8!LO9qPP+!HQC>*2!Y^AgqJ6t9#H z_XGT+Bu;^-ETZH1OYy#_d0F##z0Ig|R-X$)o&Bq&OI_^Ab-4RNri(gUm2&@WnMX}b zY@^!Mx2n(l{x2MBL^^(sDgId(?=fHm*<9jt65Xk|43VPWk$z*W*E+h*Oqee>p}EIwX)o?W+h zE1bmJ^(S4U2EJX|_3yyzl-l*;bn~)M^)UaPrXeJJkLe=C+czd}*ZVKFYtwSxOuO#f zvZ1fH`P%iHdU~#1+tau1Gqmjf?#1WTXMYTC;%!^~pL1`QwyocuDYormFFe|wO*6mP zwkNs^<}KE<*YOQpZ7qLC`|9ZXMV+MN9bRv7+b+>>cega1 zmr8OW_S>y?bNt1Adph^iy~S;NyuRJJZTtC50`fb4;prsJP171n7Pa%q$C4N4NJ3@y z&5R|-_1ov!v^6gr*R{3g>fGB!*Vdf;)W(sRiVoF}srA_x+jV%S=v&-pkJGg;wrleV zPNQ8fYr5F3r+-)OTimYWbK2+GtS`Vh?ZwR(=SJSd9nf!ayDq6?b8|(ho7MXWrZRcxm za56PG;&H!K1ILwwyK}XAuTJHL9$1tcYQS#2#~r%drEBh4;k(TyaHySm#@lnHz_6MpbE(sa%lEu(z4Br48JJ z+~DsRsXlevP?~+tjl?~8CI0^5k%kgyK($BnG|#gmpC|&VlC=oQu^yYVwt> z9zC)(LN99LfNyb(4I-VL7Qf%;{QO2}eBqtma2M^lt3-R& zx3P`zHp1IVgnx~WO7{A-e_Chcbbd~I>;~-fB5nUUo;=TkJQ^FiX9e%>IZI!X;;ea! zzNC!yO8ex#jnHPo%kbdJY5EVoYu%x!awL7?rjcjIXx}jp*_~)RJW|p2aNx?S{zCWt zs;}T4ck;kSLH4CrTzIAW7VgR@=dO|&#H}Lk4BM}CMDlOA?Aa0Jm-Gim$}*1(&ATFF zc=6hf4*B#KXEP@Y)UT1R?tVN=pHWZxhv_qXWayWW;Y-Nj7|%UCvm%c>f3G`DbcViY zcOvrx({AR|cZJ{CiXok)pG{glE}d)uIJt%Wi?L}?QSGf6Mniwz#y1X#}d2Q2;z(r@71<^L(t zs}GoszvzDx==uct+)P~c8D9q~{LcxWRV-t|TWR0Ll58IQ3*qu|_#@zIGm?SI`%9o) zh}U?B371Sb)@{O1fUExrY0NNZ;j`fCrtf9 z1@&#S$V2@9G2y~Pm+&40UqksE{vqPONZbq_O8-aT>K9wVmHuN;Le5uuf~p_&KM|sE8*Y7 z)5#C-qLYn<=Zjd_u0BvKdx&?F-Z{0qmt(kor=3&yVKHExaM=KG&gTUMq39I;?nt=s zKZ)VrD#i}^`Tbb!8e<6ln8{_wnVz}1kofCi0*l>MQ<7_%y%Q-RpW!oVm z2;L>gVb}XCe!@b1FLhMrX^Z>NtxJdBZaHUg8^8s%M_w>(q51*gt%7_cI$t822N^+> zkRD)Nlf8qK{J$m~_-#S*dsVPG)JyB=1gepT?ktrJh&q^GEr@}RoP~!3m)g5X3D?<; zIvUqm>t9EG*3tOY57sS%FAI&W2R6@d7f$}W1O;iG zJr;IY*d+)b8wGvpPmp?i5GXna1aBZe`BUCwg3$T84L>D_oPQ!nJ*Y2H_^X1Hzk$A^ z?!(X(gpUU;RG*@J4+u6;FMwGla+yh zsoTV84Eyy25bFe`3`v|r#W_dp(wY@_zz*oD)4ugxom08IwlpVE+HoD!Tx1)X?BGD) z=B)!g{nE$Uxf)gb`X;yI5hrNX%5z!su;=VTeHXhJ+{xP6oHo}OOrLpU1SEDHZqXdY zL^eT+Opi5{F@?G*rVPs|izA`Xwk-_HG@&_=_;ID_7kOg)ATjRR$6E<0#u!`ja~TP- z!rij9SIw}U!zk@rx>R(v%&$$ebG%a>!M!2{_w^x*~LqcXvMYAK#o~3B5k;wK4#z&0R z8qAKAGDT9l^{Wg`X-93^c1mvH_lUouJHT((C+Opy<7d=3{jTesZqhh@BE1t1;oT+K z&bxH#43FG$`uH>SqnGjyF!9v4Zsvhr@yzE>phdTC;sA>DHt`;%R}X)RCwj_LkLcY^ zA;h06i|l8pk9N-S_X#3I>D>c8#S=Xh$I;X8u;`&e7`GgHwJLyh3e)pb9_8=yT?ui1 zZi>$3E1T4cKUusl5Gl&vZurx0koaTbwaDL2-bGKpKXR){RO(FN2jE%pocpDSN1O{A j!VliEE=ckCxh*;u?{*?Z#Nai;lyn(|^D}Pv6Tkl#v3h0? literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.la b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.la new file mode 100644 index 00000000..0a5a3478 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.la @@ -0,0 +1,41 @@ +# libsodium.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libsodium.so' + +# Names of this library. +library_names='libsodium.so' + +# The name of the static archive. +old_library='libsodium.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' -pthread' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libsodium. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-armv7-a/lib' diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.so b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/libsodium.so new file mode 100644 index 0000000000000000000000000000000000000000..58caf1642a0606ab4d710838576742e5b6c96ef1 GIT binary patch literal 314464 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/pkgconfig/libsodium.pc b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/pkgconfig/libsodium.pc new file mode 100644 index 00000000..8ef4197f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv7-a/lib/pkgconfig/libsodium.pc @@ -0,0 +1,12 @@ +prefix=/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-armv7-a +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libsodium +Version: 1.0.18 +Description: A modern and easy-to-use crypto library + +Libs: -L${libdir} -lsodium +Libs.private: -pthread +Cflags: -I${includedir} diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium.h new file mode 100644 index 00000000..295f911c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium.h @@ -0,0 +1,69 @@ + +#ifndef sodium_H +#define sodium_H + +#include "sodium/version.h" + +#include "sodium/core.h" +#include "sodium/crypto_aead_aes256gcm.h" +#include "sodium/crypto_aead_chacha20poly1305.h" +#include "sodium/crypto_aead_xchacha20poly1305.h" +#include "sodium/crypto_auth.h" +#include "sodium/crypto_auth_hmacsha256.h" +#include "sodium/crypto_auth_hmacsha512.h" +#include "sodium/crypto_auth_hmacsha512256.h" +#include "sodium/crypto_box.h" +#include "sodium/crypto_box_curve25519xsalsa20poly1305.h" +#include "sodium/crypto_core_hsalsa20.h" +#include "sodium/crypto_core_hchacha20.h" +#include "sodium/crypto_core_salsa20.h" +#include "sodium/crypto_core_salsa2012.h" +#include "sodium/crypto_core_salsa208.h" +#include "sodium/crypto_generichash.h" +#include "sodium/crypto_generichash_blake2b.h" +#include "sodium/crypto_hash.h" +#include "sodium/crypto_hash_sha256.h" +#include "sodium/crypto_hash_sha512.h" +#include "sodium/crypto_kdf.h" +#include "sodium/crypto_kdf_blake2b.h" +#include "sodium/crypto_kx.h" +#include "sodium/crypto_onetimeauth.h" +#include "sodium/crypto_onetimeauth_poly1305.h" +#include "sodium/crypto_pwhash.h" +#include "sodium/crypto_pwhash_argon2i.h" +#include "sodium/crypto_scalarmult.h" +#include "sodium/crypto_scalarmult_curve25519.h" +#include "sodium/crypto_secretbox.h" +#include "sodium/crypto_secretbox_xsalsa20poly1305.h" +#include "sodium/crypto_secretstream_xchacha20poly1305.h" +#include "sodium/crypto_shorthash.h" +#include "sodium/crypto_shorthash_siphash24.h" +#include "sodium/crypto_sign.h" +#include "sodium/crypto_sign_ed25519.h" +#include "sodium/crypto_stream.h" +#include "sodium/crypto_stream_chacha20.h" +#include "sodium/crypto_stream_salsa20.h" +#include "sodium/crypto_stream_xsalsa20.h" +#include "sodium/crypto_verify_16.h" +#include "sodium/crypto_verify_32.h" +#include "sodium/crypto_verify_64.h" +#include "sodium/randombytes.h" +#include "sodium/randombytes_internal_random.h" +#include "sodium/randombytes_sysrandom.h" +#include "sodium/runtime.h" +#include "sodium/utils.h" + +#ifndef SODIUM_LIBRARY_MINIMAL +# include "sodium/crypto_box_curve25519xchacha20poly1305.h" +# include "sodium/crypto_core_ed25519.h" +# include "sodium/crypto_core_ristretto255.h" +# include "sodium/crypto_scalarmult_ed25519.h" +# include "sodium/crypto_scalarmult_ristretto255.h" +# include "sodium/crypto_secretbox_xchacha20poly1305.h" +# include "sodium/crypto_pwhash_scryptsalsa208sha256.h" +# include "sodium/crypto_stream_salsa2012.h" +# include "sodium/crypto_stream_salsa208.h" +# include "sodium/crypto_stream_xchacha20.h" +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/core.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/core.h new file mode 100644 index 00000000..dd088d2c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/core.h @@ -0,0 +1,28 @@ + +#ifndef sodium_core_H +#define sodium_core_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int sodium_init(void) + __attribute__ ((warn_unused_result)); + +/* ---- */ + +SODIUM_EXPORT +int sodium_set_misuse_handler(void (*handler)(void)); + +SODIUM_EXPORT +void sodium_misuse(void) + __attribute__ ((noreturn)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_aes256gcm.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_aes256gcm.h new file mode 100644 index 00000000..9baeb3f1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_aes256gcm.h @@ -0,0 +1,179 @@ +#ifndef crypto_aead_aes256gcm_H +#define crypto_aead_aes256gcm_H + +/* + * WARNING: Despite being the most popular AEAD construction due to its + * use in TLS, safely using AES-GCM in a different context is tricky. + * + * No more than ~ 350 GB of input data should be encrypted with a given key. + * This is for ~ 16 KB messages -- Actual figures vary according to + * message sizes. + * + * In addition, nonces are short and repeated nonces would totally destroy + * the security of this scheme. + * + * Nonces should thus come from atomic counters, which can be difficult to + * set up in a distributed environment. + * + * Unless you absolutely need AES-GCM, use crypto_aead_xchacha20poly1305_ietf_*() + * instead. It doesn't have any of these limitations. + * Or, if you don't need to authenticate additional data, just stick to + * crypto_secretbox(). + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_chacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 00000000..5d671df1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 00000000..6643b0cb --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth.h new file mode 100644 index 00000000..540aee0e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha256.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 00000000..3da864c7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 00000000..d992cb81 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512256.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 00000000..3fb52638 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box.h new file mode 100644 index 00000000..e060dd29 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 00000000..26a3d31e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 00000000..e733f499 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ed25519.h new file mode 100644 index 00000000..3eae00c4 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hchacha20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 00000000..ece141b0 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hsalsa20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 00000000..4bf7a487 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 00000000..f2820e55 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa20.h new file mode 100644 index 00000000..bd79fd9f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 00000000..05957591 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa208.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa208.h new file mode 100644 index 00000000..d2f216af --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash.h new file mode 100644 index 00000000..d897e5d2 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash_blake2b.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 00000000..fee9d8ad --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,118 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash.h new file mode 100644 index 00000000..8752f9ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha256.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha256.h new file mode 100644 index 00000000..b18217e1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha512.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha512.h new file mode 100644 index 00000000..8efa7193 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf.h new file mode 100644 index 00000000..ac2fc618 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf_blake2b.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 00000000..3ae47dd3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kx.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kx.h new file mode 100644 index 00000000..347132c3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth.h new file mode 100644 index 00000000..7cd7b070 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth_poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 00000000..f3e34d86 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash.h new file mode 100644 index 00000000..585a993e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char str[crypto_pwhash_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char str[crypto_pwhash_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2i.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 00000000..88ff6221 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char str[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char str[crypto_pwhash_argon2i_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2id.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 00000000..7183abd1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char str[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char str[crypto_pwhash_argon2id_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 00000000..5c0bf7d3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult.h new file mode 100644 index 00000000..1c685853 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_curve25519.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 00000000..60e9d0c5 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 00000000..2dfa4d70 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 00000000..40a45cce --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox.h new file mode 100644 index 00000000..1d3709db --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 00000000..6ec674e3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 00000000..be0874cb --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretstream_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 00000000..b22e4e93 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash.h new file mode 100644 index 00000000..fecaa88b --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash_siphash24.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 00000000..1e6f72a6 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign.h new file mode 100644 index 00000000..f5fafb12 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_ed25519.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 00000000..0fdac42d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_edwards25519sha512batch.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 00000000..eed158aa --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream.h new file mode 100644 index 00000000..88dab5f6 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_chacha20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 00000000..40889755 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 00000000..45b3b3e3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 00000000..6c5d303c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa208.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 00000000..d574f304 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xchacha20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 00000000..c4002db0 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xsalsa20.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 00000000..20034e34 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_16.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_16.h new file mode 100644 index 00000000..7b9c8077 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_32.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_32.h new file mode 100644 index 00000000..9b0f4529 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_64.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_64.h new file mode 100644 index 00000000..c83b7302 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/export.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/export.h new file mode 100644 index 00000000..a0074fc9 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes.h new file mode 100644 index 00000000..a03cc657 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_internal_random.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_internal_random.h new file mode 100644 index 00000000..2b2b7d6e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_sysrandom.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_sysrandom.h new file mode 100644 index 00000000..9e27b674 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/runtime.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/runtime.h new file mode 100644 index 00000000..7f15d58e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/runtime.h @@ -0,0 +1,52 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/utils.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/utils.h new file mode 100644 index 00000000..ac801512 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be prefered to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/version.h b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/version.h new file mode 100644 index 00000000..201a290e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/include/sodium/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.18" + +#define SODIUM_LIBRARY_VERSION_MAJOR 10 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.a b/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.a new file mode 100644 index 0000000000000000000000000000000000000000..865ac560a1b5e44263633e4b49df11f276bc4508 GIT binary patch literal 433990 zcmeFa34D~*xj%kpCV?ab5+FcW0%1`@WC?^NX=5E0B?OcmaUF(aAR%j$pjZ~8K}Ca0 zfL5=sZEm!J+h6bJ zb6V}?(r+bA&I~_tlw0#!{hOINb=u6CGdRuaB*vWo z&REqCzTWemsf=~!e58sotJD7|W3kTXf5cd<^FIzS7VB*Nn6a;V9vjA3wDaSYjLEZe z0ApX_bR^%%{?VuNq5~}Aocu9!PX8kO{N@|X`L~|)mojHh&lQuHvpeSvMa;SBTirW% z-OZeK=Oa%sr#$y&Gbf$ocFSBoqfN< zT-`Z`e9T-I4U2siJjYygUb&OG)_pJbdGl=Mx^3&SrO+ z=*hW!CyP_hHBYfPc~%8joO*7qVsT&fY(gFlq+xeHzLdp9JNIA7;_S{}{Ds9?oxet$ z?woHx7y5Y&<)WXbvRPbD&M*71xWB_0KjI-4c8*=i;wRqr^_+8_V)61^G@HeLUFZ7C zS^QT$w-m8>^}J^ii&xLxwJiSoNayQ1pZN=mfAL1^^YD5Wub#jA7K@K|elUQ=)A`{@ z7TKi~mz|YN{)4o|2n0-Q%m`!JZOdJwkjXtUJ`viOPKSYkSC7jS`)CiLWQ}3hL-A zdE!0et48St^K#$KYi_Rh)pdiks%FEQZqwHJin~ke?Ji-ZuddF!&d13;mEMirkQv!q z=c|fN*gX|=Gxt^9%XoM4+_UUjtysWCM-Y({bni4R#3td}Q<*l#@ zw1KU3BP5+ZWvaa*C@`8LC_K6%1P8UNqS90nw^Ibgv{wX$+A0EpR*IlF7L_Cl;-!K|vfsyMtk5u@+;YO5ni5nzdN(HF}5vMTh{^=zGp;4LW$UWX#f z&>-Te@~wk);knUUTVGb`3r4A#QZvN^m$hbUB$OM1a*3wcbXz6w8UoF7lTh7;HNiM~ zSV=WT4xgv4*jwSPt=v#iA0bO9D99uPdDeLALSmQId8(_-Ru`l-u}W`Ql?QUHtF7Kp zqlOiGQE$qSdJru2)_LkGy%p%8YD;{ztge{%KOP9DUXzApkWjw7t@V{`DE5Uy>!2e& z6)FPHhN?0QftA6eIf(R2S#4QeJ(^8@HPTi}KMYnh9fpUvh^d5P46~k6=_bj}AsqEo zZ>X=?P#@OdG>S4f8c_-KL0*erTwPUX6<>7h;c^MkUMxvqCzTAh7D|TN$RvWpM3PbL z6eYuL1d_p)^2osG;)E<&u2~TYhHMOxKoMOi5JVFT!O;cFvr<%EEV1%pNR<~=s5}dq zU_`_3Lq)F>uB4~3ENEj`1coM8A_8TO)Bvd?JFcN{YsNC%ig$!dt0o-jL@1$F+*E%- zA=MlOH6+YKPy-+|ZmkkoQ{gT5O#E_3hxMOUgi(vqBiRY1%iH4W%9>hC3wmmOYom$E{X|cVx7Hi;} zb0=*HJd|;d%vkJXA#+rsa3|G1S@7vW(zf+h>Q3r3s%(cA?hJGLL5E z5c2?SVvS=w>4+R-#!a8Gs;=^p59g&R)yP_?hK5yMH9${B36ttmAZ>0?4N>d4iig*8 zH6*N_s{v8-8D6wu(Zu?ymE6I#*YL?rtLR}Z){?+JOTlF9^ClO8ZA&D`BTCVDf<)1a zJxC_BCOdV@Y{lx;EhCjwS5l~N?&Dl?ak=Gs*B6( z*p1$bGFt2aH9XBalVojKEe2UZLG`K(bBEO9GI2x9ytV79tEPHvg_c>Zxrz7HvBJXrIukDAqS9hKSd<6?0oHnNl0bqW+585*aLQfr@HKFUHxhoR@jL73(}A+LT-y8eS>Yj#}d(!b5$w7GC46 ztGlTr3Ij=C%OS$_)>1$Lg|(c>V3^Ho%YsYjT6lF$T?H*9MiDVYVk;!-a4aq%5?e08 zgvu}y*LsW9)lE(8Ah+10L9UgkeznRvq8-Z^bU}V~zN)&g6<9llF$is{9tzezL{@X_ znvJNK)%2B+v&0*sC0PkI?rza3Ev3Y+sgy*TUg7!(64;f03B0!GttCWZ&m%^A;hB!o zV0d`67E^*nn^;XorLmVZScjDf8eL@}8hbuLd1AH&bVRbDc7ry^H+q9mn8qRua*WX; z6qd0lt(yoh#VA2G%_rJ`5DK$s0thVet@UE+UQ5(&{IDB0Y+HZ~h^Pj3_1$J%0Bl*i zgGCcr8ACx4i3h7wWUNq7M64h~`$`y$ZBG*9VpHpaENsGq@$ITukbw<>R@BgJBtk}p z1sZO2i$))#H;!-ulog<8VSIH+3;>}hQm7CT?$0Z@c^TGcDxsmJJhB9*G+lz!!1F-iL5)1VbX%U(KaoiWRYL8Va&nRSkve z3#dwn%{IvpMP$X0vIcc8fw0X8Ar9g0WeAtsCL;N$J0C*ymRl*bVC$Iru7}7JbqbrT zM3CtYWk{R|(r6_cK^BWRw`GmbOdQbvH-jl*5`mo8Sy3*>}dOqb5-f0Kn2t@@$B7096 z6wIpxXkt{EVGSi(S5`xbPo1WXR>6oN0((J%G{JPs)?qJ4#FpDSg2S`P3H9xYoX&c7 zmIs+tD?%RPWm``uFj8SMd3~;#CxZmkeT9UDWl-H7$0I}xI>g>IrXn^1@(9$8gs}{t zs^m1hw!k*$tqg?>j@37?UpH+hIJ`dwk3gOyO3!|3k+u49OUKxC{k;9H=>1Gm_r(c zZROMG_=763lH)|N)8u5`OxP~x8>?$QWyMiK?SjlFZZ?Lx8>@_BfzcB^1!5C5iP+I8 zg{Ul`Zgs5E1Qnsdilzm}^piAtR9-uu(4@2}eB0uVQNWR75Kl%^NTiA^m4ew7+Hh^x z9%Qhstdbyx%z{jlQAV~baV5|unsqtKc-<^U=^|)pNZ7hEtD$xgZAv{D)mEiJiWoW# z(uEhS=&h${k2?uCSKHPg;2E0r7GxrG7mTg}Gp4axZ&iudxr`wzVy}!E9KMalQ{}~W zWHsEp4uk6I@mz*VBlpv)*qRM%!)S0%=8~@#({|Woi|$UP4sD57(c+3~>@rpmR##n8 zwxQCqrmSjesc)ma#pP5$@|GrXpgpnp=c&LZ1SOss8bmm)8k>)Jg1)#G9wZhVX*;r+ zGDj+WUOWRQkjk>U4UkgYk+w|)ON&({6^Q8(LA4vIXrq8<9Y~66Hh9*;_}hT(WiqM^ zhv|+L5^QPG;t^g~=bLJS=UU@+KAQmFv?*3Gyf+5bstN?yGGXA@6|>fgQ%!LN-@9!p zE{vJ4uByx`N^J=hc2Hv_8!9WYDedOUHPsb-TYRnWMq2*GEGbQQcq;0vB^Lq7TevC3 z_%BhuzTFE)59LI_9-fi3V{1W}G3AVsj z7n@eDh*?SN^fFfEhN`ezPA&uajkmVed$UAn8-TpVZpP|*Uva&ss@hvz3=cXY01gQ@ z6I29a2V+pcO=t~4UNv6q!#9QBP^H|USK^y?;PlfXz96Y6TT|=BjsqE5>0J+d!7i|@ zDl(9|4Lltn`#LeFAV(Ja0iUKpLne3Rj8ZoqXOb4Gx{*WmA!8*WpQ@3v$D)_Uv(@8d z(Xt}rbvGTmXUU?ap-z{^%17ArYfm#17P-4Q;*tKAYy~5BH>J>kCFZPRDZ|>mjup## zQY2O^S>eLmsaTOBjh|RC^m*Z!^fr^jvEu2EF-EJOL>o30-yP;*dg9M`NIw=`INu$G zygs4!vSLf73Sv#4BF+$?IC6`4&nvm%YIBeTLqRh3Ph zvP#RM;)an$R*SIU*p)Dh+`6KLk*KxJSI3(KJ&;m|-IREok#DCIXf2cBn2&+|gx!>~ z3CT?XJi0Kg^2Fl+Sd%gh(^}s;dftL>FBR94A-PT-7^g7PB*e)~Xz}a?b1$FjSynhp zdG$fGB)JkTHVK*;(c}}v5gR`&iRI3g&{JyBa-cOw;U5_+#P160#3L%;E|!9A+^NN5(ZD7LOj> z9WLsd#4J)#yTHiA)ZWrUR5jR6-f$WlX~KxCL<;VGiS$Kv2hOzq$%2ifRUNTtbe4Wp z%n04(9x;W=OQYtjbjn9BEB)^k~mRBWJ+H*2T`yJnX7U)d237R_yVo@ zpxPR5eKCKDmO4)$7D_E?yTy;nGDv7HWQYza^k7=}#0Z{bi(GXG#)-_S#uTkme^X)#1#tHlsW3@ru; zH9ZA!n?(^hb!DN)P*ky4VcPem9aVR8oq21sjK<%o>Gh$?&sbMn8U3Y~5o9tC8k4B6 z_6so)WHwCX)Q3&5{?<=@R!S2|l4~yv(x`O7V=$HE(V4z74_6lwkb!cchlUNMb%vi=bSd6*V!B%2RCQJ=_{xgz=@}503m8juZMu`<}#X=+xBOxMo zD2TtEELu2Cn?;0cQ)i;9wpE0jGvhl)BAD^HvEa*aY=T7+w5vN(872ooV$FaDQtZfJ z^IgE`#^swzB1n`l@o0AhiFm?qBF#$Biy#$K0rJM8Y8$QB3vlk7Sr!1O9Pze!&CV5N(>;5Mg-y`=;$nuO}Xp#yGuiJfc(Eg9)reIyTM(_Ta%#y)ZnB5*SEBS35RrlBf_vWQ4BAgbJ)M?}5<)X*}}`64hNHmgZ+Yq?j*|CJHtcQ zZhq-zNuca<^*(Zb(_sJk#`xxQ)kFMWtV{Qw^$hi&zG|4iW6^N`f$Gcs*S+=4-=1~3 z0-w8_fex1=(CK1!|(E(9py+oIm^M8cPzTr-{u;X zefp|vpogoWk5&G2)mQn?Z(8Yxu9{zPd45Mcx?X0`o5Oz|dFxo@^nVWh+~Q_GUE^fS z{|p_x4;{QK^tE@OyVJo2HXU<~3cTkU82Df;^AnGH$Wc0*HE)L;9gAl3bkA>^I)~cb5dZm?sokZco()BP8-{i_9PMs|{};LL&TG-`s9v2$JvxOp zS4wTJQMS3>s9!_S9($ub_6mG~I(L@ZU887sjnFA*dHIMq<~6m6VQ4o)&9Wmpq5DqR zZU{rWJcha&j3a11S83)*{*GqZwx~~_HcRo&x>z>vBhc39{*;3~i%wx$8`|tqv@yv) zoiz+dU@XnV&2-;IyEWUpS;r{v{>D%{ZF8k(cPzRN`nnc+y9WBZ8trry+UZsPt~t@# zsUxu4%|4rhwqDBOn*3;+akJQwW6(3DdE908J-ZnDc`wMsARDfq9mUwUw>y9M5cL_< zR@HWj^!_Qz5}(#Y8y&jf8kcCJyc~yx%1|lOcGtiKZ3s8pp+Y0dIjk-S?ElI>vg}!0 z!%`X(8Zd6rFUF1lA0trb`TZ^5`5FB>K!-MvCh3_CJ##kf45LS+uwzzLNo{pmNoH2w zwEUbYGxH{7(pLPE%<8Jl+G*2sX68*R8J~%zEmg z8Jok2#iVuB)$1yJb=4bci+z(|%1y4XuC9QAR8}>)qTnXi&fRg}?e)Ec2a+C4{+E6ar5XbsPW!>&?-Sh!oP~nElztZ{XJiun z4|;tc{RHR7aa@;nli!2H2S*M4vEcVS;W)a>uiYePCG=~-FF_b#4|Y>Nt{1Sf;zv4N zCHPVP=^(7a0&B3qc3WV3EwEo&U~gGq?^$4HEwE%K7nP|pXKENaST;?=%vjcc?~P+D zj(yf;73yMwkrMb<(BsR^3SwUVH*g0y$wSs#x_2qK4F3Zs4be;dZ4SlD+u-k;9Pb^x zmlwZsF*ZPvN0$40pjTy(^l8wm72bd>S>X%7-wLm>;s22hpFi2)4?r-IU&<}pVUofH;bWpmgJm(Z#)lX_%h+f4rZSZL}xLd(h{VY^)Ri0G}o^Fc3 z|CTDaO5dR1LlyeR6-GO_f$R1EJsUn9Hh6*nx+84x92>kq!PRmsRB$!F%N1NL#}Wls={GC5T8?`Z zTy59yD7adVsiNPf{3=tDtU}T-poL9+Bxv zd*MlqUfK&UXt=Z&-qvtw7qn}*vSWiA%dcjxQ3Ic0ry-FYSV`&02EO zKDZVV^>rbZ`;sDeDNd^ORd^@ShXcBime|4;ow8d*Ty(45cM+MCMC6*&`?_V~R(m?k z2c5Bz9?z*rI%_@f^ey+iMF`M6D$dY)ms|wLZjzZS@vLXqQytd%vEF|dkuqm#u@^6b zP|%2NZqO)y_+0GOuogk8RN38XO(?eMdFcIL_y9|BX}M=DHYdsgvn*KijcAjq@W}b3 zc~`EO$fK%nbMVkRBII6@@SO}El1zqKau=_9lDRcs!eF)xUn#zdLGQ7Mop(|3BVOcX zt%aUZbLGm-p8D2)>jdnm#k#L7a;_cg9lt>m@d6jibS4$ENnly;U4!47EBSA2H9i60 zl`1p0Z+NE6VB<aSJczr+)gCb}%K%}v$y>GtSA@BPhf^0O==7TjV)J zru4<|U`EE@Hj%DsQ&6BTe;)vZ>6-jh#Qy(Hd_ew!k5Z5~Gts=fI z|NSC5sA`<4gTLg~(bGT;g|xGxDjZ9K?or=nTIAw%QA8W5ckvGaPF?Be2$!fwi%b zSZj3#Xl?93pUeHUE=_CFXO#7^cQFS~Yh1J*-6_|ju`bp%g#9a$*u4@V^RZ>D z`Q1iyJ*~abahAf`Tu!WCIm~r4{L=b%2&eUCbG;fiFkcVNmuoFNp1G#>F8IC=zHL~a zlk3;CmKEYd>)z(NHD3=!Tyq^ptjQ5CvE~w53lCwz^-!LsSl`CA!(x4#uNRtY54-g> zw2nnLh_&wPq2KGE=WDTsb`93HuErX4v^BK9&sz8SO$Yqv`moOP(CHWJoRG*_2}DAq$C#aii6tbJt+>|p|FB{PgL_HzB zhOe~_&W8T6&*3tZ$6S=l9MqNBC@Xj8`Ax6xtt052N zOXf$`zsqg-KLDKQ&x&&A^%OkD+UTJTVOHrjiFBXm`VOttd?4@ELB&W*f9fiL-H`%V>D*ZVdJe3rRL+3xv2G3D&wO+_M zIpU-0VYx!D;yV;vFgAX$+9%;^dBN5S>P^k>I0aYdp3Q#M z)U!&zP@$J@Ffp!CaJ7Dt4@QSxPo7n9wLYk8IO{Ei$^VWJ*K$r&1})TZ z*8ZP@eIpM))Q-V9^ zV@&EsPSa}hCFV4aK8DJozWI|b27?kUP&D@- z?Kf~mnBCl=Tw9hAME59f*>qeH<_;p}#bPnYz9Z77TN+}dy_GKLha;TQ7sHQ08QUQe zQpXkw)a8FpU^&5<=EcJzeyq7e7ZTQa5{GX@x&WN9PJ6Y8ugmWi@w2oDGXJKOjFFvT zrN1mO7=9`UNq<&zhXbKMJ#C6oDhjk+1d7f4#Co1(YRd0n=uZPxoR2XlHU zaY%&z99JrZ2r}2@BYo@}5Kg|CJY?SH3tZmI-=_sG%OP1r#IpgMkF@2aWPbrJX$2|& zAu%c4OaV%I(z6wPji4VV=%qYAw4s+g$kvyZ*W06bxT0}N?%gOx3d{efL>3VSnL&oJ}7?ahtihm%kgXSl$`0R(GbgK z$i;&$CVltU8@DSRoEtJwZWBq9(pHea!_2h>hp-d68l6~=?2Tvj9L=Y%O2B$lqJJgU zqB^h+^*Poa4-R&B((`$qILBx7{9PlSEu&}IkO0;b=~=gdSQ9eW>5jT+UC<0m1OLyJ z`xpM~ScLVQ{aAzCpXS7~p-y-HYrPtlCOQ&}w)bM69dBg$Zty;VwVJYCthvbH{@DVD zJ3k?weKui`JFnc4T(n>i%ky@1EvIMyC>^I*zx?^5j$pbCA2=h@xvS6DlMY{R46d1m z)|5y`a!u(dOplI5^Tpa@A=Vq`VSUdjZM5CzH~rdAYk;QyMrEJh^detl>S}bL99$>| z)_iI#J&P6ZU%}S|9f7^ze{?LK#YH*DXCQYY&xEx>_fE4cQ69ARC7x?Um?-1j6hB

    %8td*v+Cllc8si{GKRh$-YCgA#b)LQ|6?LLNuM_eaX;~-Qkj7E0QB(R- zE)z=&t`nN~W}Q&=oHA`wA7=i4=p1;G zbdi?&!)u66>PXi`gOg>G4ru+4^r7nFpWA9i4Zm&d8C^xcwmM`_%PNU$;Zh@P4l_IV1H4&hJydOLop)5w@LvgYgr1>`Xuh3CF>C ztV+&sOa2ch|DfOZQ#p?hO%m2XzZwq_6!G&k>1aojs}HvYj2$aM{j2)o|I)tQ zj+}g(ppJ7NQHf*elq%sC?-(T~RiQ9FSh)w-S4rRP3f+b6f7W8gSP0NX4g0#Yn!g@x za@M(qf38+#D?&6kT8rO3SDI!BMZt(&y}5iZuh`K0wK&l)qTPw6BWjxY(;zzG1kny< zpy*cQEgOd`!t{~WEhq{!=5Yd-KX}K5r4J~dHCZLnr}jygvYpEImko^4&%vo4ave36 z4@~{Jo+sinOczuz*J+;+@ijHEOc6gpiy-BfvhG1Rk-8-ye)p2oi{l;hhv%DgEaS`k zzlQjF+7u;A&fAMX62mI~5=&~RTk z)!c*o^Vu%V7q(6>%qRW|>G3_9BJDPpx!)M7->v$3M`5jZELtRdy({5oU4i#ah5S5Q zpV&on6Y(e)NAsy%@`-y#_lc4Bpidn1(>0%1;JP2!v1p#~i7)e?!k*hMSIB3_eqqQl z9KJdBY`;rBvAI{9=1IPOpE$H{`TQpAS$-F?sQZ;|b@Dg(#5THUAfFgIAf24wbQ#Jj zq>KOaiOv2c6F;TqC2OEgFX)fry)Xag6GI{TNd3>_6Z7(dg#WL7Vj7d_kYlX$iJuqv zb~BhA!#(-XZZXF05IB($en{XA0w*6@`V#`;Kd<7i6)t_3f3#2BE`%drO7-nJ6kHk7 zgYOB_=}SlvI0#pLO*!|W;}0wJsy?KTr1O7Ip;vv}vkI=tA1BI#_^9;q`C(n20)<|c zXS0HZL4{uBe^$X&pEyqOaaEsqgo3L+aiM~%{AIn8zN}eFAsbra z($<_S2qZ3ft8*8Oi zc&8M@$|u%wJ(XxaF~yDU6BEVX<`YxQ9{9vWZs`+;0`x^>^cgTJ~0tbJl)8`~!a zmAy|aoZlJ2Pd8~PD-XH;U47#Fzb2np?g}BmqFATE`t_)6@~Ju&&A~H& z@>#!E_6DEzYy7`;$7t`tgnol|WhS7X z5RT(P`eU=cNNZbkG|-=*KPSC80wa%CVB_^?P&&nc`kbyaM-D^f!VJ z@gJwr+dZc@RM2M$dS0Hm&bN_=<~^;_Judic6MT5N;~FrRM?S~VAi`{5N?H2 zoufndnKC(Q;;Qc=^RMqYTqx+tCs5OAP;m7*oEH>a<^Ps~t3Jn{6kO$>PKv-m>8ku` zo?7Cn523C*(!d~(3WZ+v6&_S@mA}-RwDBdM9C0CWSr6xGxXi;U4VU$|Lc=q~eS?O} z@}PD>hfG)2yJt-}h|7BPj)u#6WaAU`e5ni;YP3}`GILe0K{HV)Y77T~NMia3L}cYA z*lxt^p=&_=!@L76A0qH?^AL!6xRaoB@0OzgHuk=P#u2o#2K?QY(0I-J1KO1^uSHEX zf8;yI=s9Qg5X~?MU4$#b^by4^DCFFTxDAf6@_r01;&8epAbuN!&6_6@r1ndq$aXB- z=R{ycBHKGI`SB+aFP6`+5_E!8M&-ZX(ef<=b=m_WzE0jCfKO#a@hjz*@Xrz7D*w+5 zh06Yc;t?d{%lscjd_8UAEuYhrb3`P!Rs6|#prl7W!}OkiPo+kgY;u!u%;xzMxt=C} z#d|B5ych3@XQ5yI{&z6EAE)#KXgIMvmG5MU&(_H2DgVhIXhDYPkYm+9%0`xTjnduB zB?#3&!bs_KsC18;P#E^S1$Iba(&iw3Z33hAKnGzR{3>Ld6DHTDRXRCts#p$HdK@Y? z*8*FmVP>qzzrRL9>xpfi$val7)@l8`j=4ujN*hYQH|HZd#1PD!92b)-3QoGUvgKC_ zT$Y#oEf6^AmJW%3AJ0YPNUkBWZ|1X6+t2O#zHuP@_ z`Vx))0~>h&bNNd(`ajw5zg6(B(CC|O_)Goj&qXa1@dqKE)GdyfxHA8QX9TJ7tp{;UIL%4QV}!VnwzWjUSIaG4+T z`M;3wBFl-|5gk(g)%*_cKuO#efkI%IrZ-^$l3OfVbh1zMnJuA=oaCVeeCU#})eX_gT0n z%&p#UnMUQ zh5wXUfe6vzpNshT2|MJzf>JGlD3&1YPY}^ce?JigBIn5Lo;!RS@%6Nc`8yI6=v?{dg-8Q$|a*L>bfS&yRcTE54> zmFEn2@V(2IU@9fJS@SW-d6Z;yB?Q1XP2I03zlYh=c*MtCTl?RqpE>x(;2Lg5HVmLO zv#g+wO#P@jiADR*zMn7^1x1IQ4=?-7aiE#NDaBfoy2eD`f#XlHnR~sYT{n&BYeLV- zQM;9Wavp`%hr&pX9faXf)7-<6=xI{igMuzg{HEdePvTn2Ep9D;>d?vb#Fzdd=&gFM zhd3^C5K8L19M?xG#ELCE-%oK`@u6%HeLH^X;N^}$@3j5({I}3>l%@-af1FQ#0-ZQC-ITb zZOQVbH5bCq33|PZ$=6b6A_|Ea4q6XVy7XXuBwVF$;M69)*sj76DHqWz(}=<63-ol~ zQ~0QR*-{ao4x&#mFZo|NZ$$i6dZ|aESIa?;(R#k_7yJoV>GvqOny6f$QnY zZ-Nm1x2%83`nyWxUHWFS-qmZktY7zQxYWzz8ZPV6Aq|)Hs7=FVJyH#HpSSL2^`3hV z9JJa3XZ_R_8QK)Z%7qB>vkH`-ORxu*_V{fCIpRp<_dlsekiBkFwQ$Wl&ZnyOZG zEJPh9rW(aIfHY;{w1hss@U`qqqoThZ^;UB)c#TLGjq!0&??p9X+AX^n0fgy2x?4oZ z3U%omk@Z~!vkP%Sm|FtkSNa|eB0&;|Sjj$u#!xz@;3Se9x>1f&k!~#Cp$&2LJQ15- zR!Xs;bs;jv*RsjvH<&&pX38Pum(Z8Eu*$#u2GR?Hkm8Y!Wqg@``u3upHbprrMO!WW1?VEJt@o_`dm7mhdS?i|yZ#022OA0B;Dy^* z^JBo@M||^r@tPk2+#&o3N=IH3F9+7SAnb0EL-#Mve3PD=nGYX>-u-bo-X{@yc82!5 z9e4FULf-+P{ciLg5Zd#0>HFW=X}RZ(%Qgyr&ZvM3X}155`Tg!Tj;rtepgasz-UDLh z$tmQd{cp$r$K5%~k$Cbb?Dk*tbffKkgKUkg`OI*V)BHvO>7MfId4cg~;MNHHAN%do zAyJwuXJ@ia4You(rxU>y9lG_)ZT-?_P%&WiK;)6OTL5u{HEFdGsDB* zOTzH37`{L6pZZO9REIP(2< z-0K%AGg%kNMpeskGwA8iZCdFc60X{=yq*Yp6_@3s)4$ERoBUNKqCSb@jj;1#*{&l(T@z;!CmD&~ z3-L>sTinZ^!fx)7va?-j{hE$gwky?ZEsH$f7nq`X5h)%)GJd+iXCr<@+6a44r2i8V4hQ|voP-{K^3?q4J+WP<<;y))-Jkc~ zt8_$e$UvpdzwhOW{>(bP!_A!Qc80$<4bM+-9M4eD_nB71P6gAjce?FW?9CUsy<|S0 ztv|1Re$%fo&+g#%CB4Isr-@&Ov}eV8;yM=1f{pspUZj)OH7E4UL&u^xe>>>uS&zGr zCg#92+XD1$VV#r?;|vgXm)*VP95j=on#G}{%KAK@~Kd3QY1 zFQ2!d^yyUR!_VLycyhgfY)`W9PeCTK8M*C`w2orF{usW2M)tpM`(r#vdk-{i_@0!s z@81=6r@l_0+M#lt;0%8!oVixO-wUU#6Z~(HlgWK}cE8=_!SDnVMjx}+c`z34B{tYy+vZ%Z0M%}C;I1wK)fE~`b!)7 z+im2hc`)KLO_VRl_%YmuzE#L6>zAaz)kY7OfPnZ*A7ZcIzgO^)K7quy3jNDx<7HjF z74eAAZp5QQ;tO$2_`@1LRPcFR!>tirPntq6>l5LF6I!xoru5Z@;5uhVe7eM>%4kN0czQjd>oxNLt1 zHC(p84>er2KXk(Ukm<_ym!{#e{m~p09g<$QKbgM7W&2yK(aZK%qT#arZPakt{&r}% zY=5fr8fEuerLV5eyUyH8=&AH>WL7I*igz4^mANitwdpZRB>SC`Q6j5GYY-cUd|}wUtxo${X9*S^rX%vk+Nm|3#}Gz)SiJcXM4I= zw`f68a-`{=C{pmXM~fYrQKIyWT4pnHqDr5CvUwj!U9q>qTU)uIqF%{|XN|YcCt9Dc z)U&qMTj^ubvuZIPB|aY^Rb`n{Ffh34tCx(Vh@QN;iBy!Ie6uGW?^ND0A_C2CVTt1Z zn!aiAXV`D}A8{mz!TyKRKobtTAxF!QMcHGY*Owvm_`3?EA zB0<`VLad}clr9J{2f)+Ul3{5gQ|g#cQFQs|2rNhNlRx7`{8)2r^&)*4PyW6n;>&ya ztEc~OBEByFK@tB!ErQIyrN`xx={w2Aj>VWi~yDs8!}LB>4TEYV(!lItKDa_UvQtjIA_+` zgxB0VCnN*=?VQ%4qnEdqAD-2kFpl}RcP?yAn&9v!q_R$$Yf|U9KF9o$oY#UKySx3z zZvTm=XZb(Gp3#KEiGeG8*R=Yl&kt1o%evMbhwEDdWkrFe?=J|@Tu|wS%)fq;!~Z#b zJ3-82WsP(DtMHs7{f7_j+JXDMqx%^jy?JmK@$ownn?8EeTs{KgM{x zZ!7VR0mI%t9!7lD<9au1SW2`rp@WJ+Os(9AG5dUW$WXN_P&f)pRaZ<0!HjG7hjA6bEbNlE+jvj^InO z-Ai#?W;)|>U7sA1?E*ax=t#C(DURR)|0FCO^b3}HtEV_5D^B>Armn?3=4gX)DEv{B z9nBrD1KzP{0p_NQ@a|C;pC|5E^lSgb$KC!zn9D4M9PxqTapat*0+q*FK%glf6ME}%gnW}WXl^y)s}w7qs)0=;MTrI{gyY4D%Njb^_CQ4 zHj6vZd+TB2f~~I`pEw5Yo3b^@xWn1|z(VjGwyp*MM)9gettYk-dhukqkL z_s}7ZPjSZWn+W_hmbmXHhmY(ka<~qRM<28Ad|hjiBmO|9liF(PzQbs5=z9+IL0hK2 zh}x_d?fE$H!s!V{5`MD|7dG8R?Q+EEEBlE1qzTNQkbpfW4Yw9_EHb}SbJp|k*xTa3 z`hwGcaltG^&vhUd~zcD^wgAY8qB_8*K_WfqdtB9Lu zybt{kLfNcwI`?hd{F*Ts<@E$hJJ11|>02GfVAtRSGq=8Iyt5_F*bS_8%PYq3oI?)$ z81Z*I)A#)d{GUJc(ymtLzynX99PWVb>o+GE>rmD=ZhqZ(m8I`X-`d9*xV43+H4`#Z zyy=jc;_QZOzu)38ez)aCk_&uaLHLk;k0ZT0=imd+9eQ;a@!f_psYm$|-+^0GjBRZ2 zzMD|iH*S8D^DW+-V%&-Rr)+)G$VGlWai$!YhP-^h214dU=;1ZggR}$BA|1jWL7Ja9 z1|4|j&?~!+GRMB&TMzN@mCDUq;=39c`fr^ugKB^}R4!U=CESl|?b>%hO zpT26Ae^jRHw}lf?Ur>)`q5fcuYq}d@ygx_1DLOpAiN?7k)EOFosotFRyv*OL)isCK z#mr|N{)(~pi*@mM2BR11Qg76y1pgWI^_dMX7mVKVQbF1t)=Ybfj`efzr?KFeYe-<$ zwxd_JUxHAg((VuKW z+Q;#m{nuMs7vOCFG4q$=_r%i9`3%GlZ}M(Cc4gU9@&3|4 zFVNjq;JvM}0CpJq#X{(89&~rP|BH3zH;ewt?GSUH*?hFW1e6br-wR-iI8aVxFHzZy zX?UT4%BTEr5ys}k7B|M}BDCG(Ew}t^HTs06!wZ^4waFqK9{wz=j%9x(jq4hoX9;>D@&&QZd>wL7Xr`mf|*U09R_8x1vylbWL?=DXs}K>(ju%Pv{-Kg#UN_G0W=bX|AWi+oTX+U|7j zZ^s@>7}vXr)*;r2q5Ete7vr)XMmoeZTiK*T)1Da^_zuz^;~Knx_G40ho&-NCOR^Up z0bkmC`D@pxvwIr9wf`!}#(4uH-g{lw=aIeR-|Eh%xCst6z?m_>i0qoxXs4tLYJ*;+ zp+3_!3(s`5I|t*LuIv1mTwZees%ufVuJNB+cQtH>RsOCyy@PAaT`yDrlYlztY(BMs z-X)*pr+T;NF?NL3$lK3DUoS&e+`libkK+EAxITt!lEV!dC=SsPM&%&ye-B!^rg&t_ zOh=gH`4+;yOLivl!FdSxKNohU8YfGM^D=0rlbtEz{91`4F-m7R#TjezeGW7m$j+pD zoIlg!03*5kiF8O7zn0DuN*q--ha%g<6o>3g#3vpPDsd!6vULELvfYR44PG+z9cIuhm#u>f^|#rG9M(`ZwzDvQU>2 zvt0f@IcEPx{oO(IaWjxVy^q^P`cV3~n^2C_$5DUL-99c8Jb3>?eaRf>5h@4jSE#)X z#kJbU-9-0FA6G|lK}YRpB-;Kl5s&UGG}=<4ony9nm%PS3@%PgGW2hH&5B`@SAA4R# zdjqETQ7<^z^tL-^oBf{)?NRoB*q>)Szk30R-+Z@;f??8Hk_+FnO;O&LoQwN)-0ly^2 z0ALNcr+koYN3^HQzkxif@0h)x((>Y@@}jaT#W>w?hjah-Z%{vP?s5A6kY?AM&^*JbYbh)__&pIy zcQ5u9jdr6>qkhT#L{#6%Unaf1hBg({;5KL0_^FED>2sw8@dSgb2;qi(jWEqZ-@O%HuCzX68xoCvQDy($!=C{ zX6Tu>tFKxo3ZMtIPUMlEzUDe{e$xT}xoUGi-xuqg$cGDkg!x=X*PIKE6k>lI+05-O z*4g%MW^=+I~^R6l52D0VHp|cYxi;Ev&&BM{hjX&yW9&z5) z+<~$kl-98HBz(^W2s@4Pp|VX+X;``mb?_wm^98dU%|)R90)6oD-mH^+RkNH22L2PW zZeM>cZ)k>l=csu0?FICX1f{&Px@NU?tH8H2>1;S(@H)N;KJ~m?HrKGg38Zy3 z(qXs0RN%Pv<%0J6+?{UtHAmq;hJ2bn``cSs=Ot*1`PI)Ge;tVLCquq5k5OMeJh14m z)ZYz*Ju(dA)zH8K+@DH8-;X~1SZ{n+7;WHkV4cNFg|3DN&MaGoF>_cT3;zD;$K0KX zO8T_)p_y(S7*E7>dZj;Cm?tG=SaWLmHUs*8Nt)1v6sq` z%81I(ee0ouIkz4zpl7tye$RdDj)GaY-cvx&eISH`;SMW4;F?w#XH z%ksuw@cOXvu!Ry!v+_`vn^BiPbD%DBx;WOHjrMRc&g9b4yeDB_jp}rLhW&BNKZG0; zfq(4k6G$ojIPXntD@!eH&--lj;bD`VseQUGVc*_?F*5~xN0m;>!!sjksm}fjMtzG- zDaUK%K5-=nQW2I@R-N}2wr*ZpHaYJTq~CSk^;t2}hh31C4eZy0*k|qFvmaq^;M{@p zY52fhkaNztuH__iIZl%M=oekf&AE$^-_3OdS_s7 zj7M88!dZ@!=JeXpmgSt@1f<#XIlZA`PH!0I^oEN$y&;x!dTHPvYfkU{rhmhnhB^M9 z^*GTcUGOX8ur_k(5!1Ic>k;`9=KK)tm3Ic7AL}?mc5ElcXgJj_w>i&w`hjl>>VB$!{s=aZ z_z=J4BYH2JKjN;WQ|L=+?wQ^zbyZyAf`l}zLx69)lPyiiU<0VHMIXO}=B1rmMlGZD z2}(PZ?)CzbYtOxR7JS$rdjg!JmcDqK6Lt+7K)Ry16z_cs>&2G7=p>sbJnX-Dypf34 zJ0k4&2-^#pUvwrlw>uMxI8VfveBb1JDb3`FxCbdLiPB7o2z!yInSpryBf<_KjC?Da zlkj5PpuU{^X_||racqs#&F4RkHQrWGim{-ru@P$xv-h`O#5!qwKpoxB?OBXz@GqJf zY)P8K{d1@EbNJkB_8z3uv1l>MXA$Nu#5X?YnBVy1-+A$v{g<3u=xXeJWQFis+C&=+ zkdKVE5kQ|cy7cR9i+k%lsM9pJoY-e?-Ke}9&?j`DJu(IoO6%^btfMqp4?@=e5we~ZvZ`|tM_~`4EYN1f`v5%DUX^d*yi9W@ zeK4o#Y(7&=&t&yQ`|B5Me@Pn~mcl2vpW0u!gEdq8qjka=6S5822C4l~8>O~FZItSh ztn*|~P`ezJNA14>?NPMJ^oC3J^t-)a46oa06R?N$wl>N@z4$*jclWR z5ysmg+Nf1KjOToj=9c3upMn}&m6}Q z8gIx(*n7sD$Jq0(#6hwk+bCJizC^+2-05{IuhkpAGtPVs5qtY3_L}G`B|A za-E9u5k9X*^QKGv=M0)xlXItJi^GNz^P6Ed)SQt=%x_wmI%ykA_Q=4%Dg1`!0AbGn zI}abM?J?L&kM%Zf2mBtz{V~vTJ83LzBN6rt#*L%6mt$<3qy?V{T8tyzrbV6YHZ8`P zZqs7S={7CKpzhM{!I(s}W}Y#Apnt+7_Wip?H7p$r-}j6YJ`d?;ENgy(eBAY)=cTLj z5sFR|Xg-3|#y2}x3=YmmtfKh{g|6L|zJTcXd<1akisv{j@85xwEOoGTZt2B-IvRc- zFLR`C%9s><*Na-WxNS3MWVmg^=g&j7O~Ph({%iD}7FSkw!caCKiG1RC_E~}>JNpsX zkckXy1?U6s&S+Rl{U6rK7r^IAqIsgs(WObIzsZgyK|f@Z9*0bLM@DnkGwk`UKI~t~ zZ^r(?z(=m6z*F(F^Cp*-=e^-bF8bKfFMCqi#d+kr-jcySqxmE7Z^rsn^QbNCvsoCQ z5+NJ))5P}#_)=dz9x_&d&lRv|VZ#<-|6q2|h828Z^I~3cR5ry~P{#Aqd?~_^))K6N zWqXkp8=bJMYYsE#QyXc#NWfe{BIXQ|U<39+-;|6oqpyE_0_OS&i4bGRN&6f z^v-P^?{??+C7yHL`G+a3LW+}~JASd?wa}ga(-pH?`wrN$b6g3flaSjtW8*Vf*SYg2 zX4E`0e(|i0kDZ^>I&rl-KNWenpcKCYYIa@-J?{mdZ#hx}+ef74j<3M|h=kmUHSYYO zkUOj1oqqwPv(cUZ1k#-cJrLjLSIurEzVo4@!y`(cDTHpGI6trT3h3%W@LvWUy_#CH zb2)V6NBmxnUV%dB={VAu2R)TRz7^2VF6iS5=w%>yw~t8Ay$EUU9hsWD0y^4@{J*w& zu#pCx6hc>Z*UWA`J}$}Fk2t^G%#6N>Q+i<^<3o(eZ?5+#@8wbGaL)7_Ul&6ZJ z#_R#~at7JP9iu3pr4xbX|5~y0HM|M%M=+&qJ4{F1zc(p~f`>Yjz%R z3=7<|HQs2ySm@%yk;Z(~0iykAM!FF|`h}-#|Y^E;dPg_ zuD^Jsam7W+3`>@rSH=x4MKXPpN(_cy90^*7oxnbER&s8I^pXfCJ9%S6<( z_6Z}6yHL+gPD8n(o>f5JEY!2INkfft?q>;vs zsj0?Clg)gWPj(sp3p0$CNg2k6Q~Mib7xgz5K;9>(GUSyRO_P~%&o`J+m78KLyeP$( zKQYDlbViEt5$0)+H!^?Qk1yx@$*3%kk7Aw2G5<=sxNk4Y%V2$Hx+~4FGYE)mEZv6g+k;a?f8fskSaT$v)9cg%x?tPcKj0Zd! z#-d9yjAhsNH&QO?ZyX^WvlERa^U{r@mpc8Q;QRKJUdiOXM)SO(M$M&(#->~1jh5Mc zjZZH&!~U}>-B@zjNaNb-p+?GOE@R1@MB~$o%rK)G`p8W*uB~(#b7mzPZ+s)sSUjb# zacFa2<5je!yTGe?USDHK-@e9`-|UM#nepa8z6BSg8?Ujs&DVft#|rG3TT#CA!yM?1 zCARz+?cpQLL6d9`m8TnjcFb*Fav9p@bf@tl+RTT;&9H0Ah8jiKBk6qX_N9F$4mFOk zJ+&X9jeUeMiQ?`+ISiVGcvti_Qp-jfN#oOvw+Ap|9Mb&=b>*W=O}fFA8OG3+cQn1V zw|wWl-(<#qr1uTi+-C1>w=Zq0_~FtWE3Rmo}mXBOlT?JSB|~xDJ|HG+ER}6G738njhBQ9>MV$XhU~jBg&~yjr z{|oVc#d@_ofjGTZJk)g95#LgX>nnj5xDr|pf+qFLU;pKT756q>1Ky>}7dDjv>w|n3 zcdgiU68WaRZ1ZP2jEO6+Z<^wq+k7z7VXVg<%zHn%XQ#2rVf%n)wqkqe{Gy55(*t`0{@>NZ{ z&}PTGhBW*$%afP81}*8_s*53P7XQ~T24=PcV6u5)6xOk zmeT!~b^VNQuSzxUS~b2E(bj<}ZnXxmHX^)o&e<@@;JRO4;%U6{*^)A+q& zrqlTSirr1e$2p9TMO!(PlWOdS%!j8j>?KZXnL9AUczeb7n!c!T8dM%Tax;wIA^hV4 zv20L*Z{UaPmg3DBMhEDoto&Zn zjum${eSmWR9rUyx^#1|6$C8H|<;csctar;g#J?R_F&omfZTa__idlTi1&Es<;*}%L zMUZJF&JOS?UVeMi8wk6|mDaK!d8Kr31n(yhwj5aR3x64l6&R3W3YMOpchOu(_l}+UnhM6f9Hr)qj>oP;G1DQK;g^pZ7N#v-KL-8`U5ru`$q@0e6YN+X$9!1ZrqLhJdUt> zl=VztMQ9_BgU{6n%U=22rY4m48%x|ff6Dr_ELia`P4O!pXle)jc=QojXrJR(Y-=L= zX3%A$kMgtrEk|%oZFP+zda&D_P3!hT`a$#%g z(zIpNcfYk{RPMbP|931&SynxPfaO=5FKR7cGGJMi zo8|ZUc1G?b=%`{Y=+9r)`UdowaQ=$c@$&Rr z{`D0s|L*hiTWMXbtOj)Fm$Z6wSbohkmS4V_&3cx|gSUvSB}S{{=Sgg|Jo0huPnM%g#*L=iDEG&3Xm-Bd|eVFMuBcySE5( z-Vfhp8tl+y_)l4|WiJG;i(qg5hX7Hq_eU?a{WKLq~A z-QYJX)t%ov1O5o~LwqkwbLUS7&-v-@{5ZtD8u}QAxP{Qi3CwLg4qu1-o3bR>@X*Nx zuz!c*zR=;m`FJ(!91p#Y2cJK{CmD?Wli!B#u=g65v908?)~leq&zG^zXW$F1g8t@1 zcl%He+Sjqpy<7Vmosc=Ob(pa|bA&OmdS2_0QR%tlqtLioI%b%$3VNmMyR%Y^nb4ts zD>HtNID1E@7=uB37y9nMu9@5VJf59+-<1+5gH8Sk)|^j_?c*;*ITWEBDEh;WHh_yy<+DC-G`ZhfRmHpTo0CCq7T`7ol9SM=bXel<9nw^~pu7b02Kg z>roDYts{&}P!@Mha2a=J4KrHchm=EiKgM$<|GG8Z`1daOFjs*$>cG=m(~J{ySSQc_ zs{Y2iu%V};o+hH6w9hkbkB8Bh-&>Mw%tKuvx_>DcVw`}#OxH6;4>O8TceZU#Grol1 zxbNC{?#EDA$$%lo4anm>)T2-EzO6w2bYmoBJ~@wdo?K+|UVm}2LH_3Z@J~wMn=C*b zqqx~wz2Hx#2A=ER%b1J$$FcDYeoU{xx@(#7JNQF^i&G8ql}nK4a*Px6P%nutklo+- zbb-5bB-#)8FN9q@vA^-&h?-|USZ1bs5aZaNUHt=d;mhosoN8=?-Vcr)W&|b;gZ}^@ zJTt{;$xcB&Vf#V1?Q?{@h)4cWVEiy+{l)N;q(54lY@8Ev?j7AfsGs#~(~Z)xsm7-$ zyG~c%KxyVMBMbHF6SRkukHvFaVDEU;fp0jBlV~d>Yw1|nYSm_X*bHQRgf_!*_-CZA zD%7WwsV0^+I@wsC)!*1Vw!e`LTcZm4{unxb8Z`UHIE|0cz9{bAi-#E}(B|m61$q1! zZHnV#QjL$%eik8K0C6f&A3lNJTA-6pg{?nv<`ARvF_*s`?ULeD&P+E>o{aOKyw;Sl za$3BRg!oyvq#2z#Ce6g@4&!ymQ95>r@df7T_s?WT5&Ew3NvX!?Xrshu|BPhg3-}at zU7DG09G=n3sKT5=*8fl3n}B2Wb^YV(oO2K6c}_|i&>*EjR753&5~WdT5Dl8=GDLDy zN%P%cXmFb<&9hQclth{fO-Ry=r2pqo&(r&T-sk)NpWp9yU9ao9FK6$w&z|?%>$BF{ zYa0utyloO6e+&F;H_(Dq^hrI|?5AIAHMJW_E3o$7jRPi`WLMvFTS`RzxK&-8< zy>z94kOM53r7Qi8`LAdcbSxe1?><~l`r+5QN$)L`e)_fMk2(mYwO9|$b??nc<*<&9 z4q>Fe1Jpck^)Zkx06i%jVj$H79gDG2lGggSq|G0yB>j$c@&WTz6SOA?>CT}}r9By0 zHDvRAe&^=sN=vam-oftp-LJXc#gdh7LjUlX)6j6~vGY7lU!^6zHCHILHS#}J4I09q zP3FJf1*}l|D=%3mU8x#qPz<9g$pzu8E$s4r$*5&x`gZWg_80#zfsCXEynJBm@sc>?n}K@2 z%eI%j#k!YZ-qfIfoxR*7OAy};?RyX2Fv3bC4MaT(fC*}_FLfi;ym!E71U{KTIx*^7 zgT0Bzs(hOD?Ukj@NIw!2XzX_y+1LD0qyz(>l+*9Z94 zX$^2C@~fY&F3lMgBjIIV>G=N831<&A;V3(I zw1dQKs=Rc8cME1S!uz(!{|(N}^0YH@jk5Gm8}RX{UnS11DtJwlB%?3hv{sRtVQ+P2 zv?Y(dototVoeWv&LezhKCl#p=c=8I2DL=0yZPan*(=pb}Ym~&C(UXipo;qGbCCT_- zH$_d#W5r5iH7Sp&hobBhKNa9PC&>=f1?S}@)tF0sK2@NRJkBs{uOj8;54|9FF$et& z@fsu10}k6dS`A~Tmp5jOiZmL1vc40G{8?!l`r!oI3g_2#BqxBqqCkg_`>9KNW6U9o z&l|=tlBy9(QdMBlEaY#$MjiN^@_bPrXGT*}CQ_2F9ThAg)DyD#yexcYOd<&{r#bLD z9{4H;@7v<4vdM_A2K{}{i1H$k_Beh;cxQ$&r%@4-wWOIB0ZhYVGb=t1g!$+1*xx=Q z-U9fo5_GW|-+AJFBldDVJTFEX8?SMaO3eASz?7Q626AZkXhtXRsOhX%QVqY{y{cO>v@{GR38e_GB zGt7Ii(m+~)^?ky7r^FiNm@)c!JLjlKzhge}%;w)TI|tKBvTw5tH`_vgBx#7uil(%H#Mj6?N(E`D)TA^VZVi zsFR*=Yw7y->QZL(7RiGER%%S*=DAD0>QcU4b@N-=121EeO2{PjMz_pgIn1AR=%+2S z)S&+n=XD{aypXBN(l8|zX(#k$lqo9>CIjiqkt))K2muW0P z8dHqN0gOuso?oi5QaNB_XJFQ^Nb^ETUD^}n>4FYMV*LF`C(jY}(ZqZIQ6Z8l@O~k9 z&*7U$#5<$U800e)G?2%+=6J{BSJ2SBw!q7kzhrWen9uH@LvomFUGQB9`d9&Y)fC^) z#C(ZH*@~b+ri@bF4dlV&Mj0!g#{jqTSlA5t5dL=o7UnVVZ#*0$RF)-98VqdAHn|iT z11qbI)bxx2{=Ef!82SqrTLKe@0S6xeKD-5dcpLaI8hG6e7&u&xtYd(Ey8`=e0v7I$ zGByAMcLN5dQPGkZ;N7mkyF4D=01T`GT+NI$?70c~#{lQX{KCBXBMf?~cxZUW0PiX{ z4k`*UC2M2g<7i;sYSc9v{TBnwtK8^ZWZ8_Fqb2Gifti7ULx4SFfPrIxfdkQx(ZIkP zoPeA8GJt=Fqs`GCWbKN+$p;4J`!@>MS^@9*zKsFaoeg{w4IDfRI5-fP*adA>KwIU| z)>z)(6P%Al zd?J3ljx;{0CHxN?e-qx`g@4a9zb{Q{@z+s~_!gb&uQ1}9!$~dYEXz%Pg`rzaKpEwT z=il?XU|w(jJO5(XIP+m%2hX1g;?wXxI(Xe9U&ilu&GFEs{to{&EnmOi@A$OG|0XT( z%lQ8^ZL>d-e_P*{^D}%~_&SXGn>zg8)c5b}@L&6^_;2d)*Zy7jcWE)c|EGO+{6EO| z@7nes^%>^dpY{FQe)vn;QT(~w|DR+0|Ej+KN!$LDwEQ~!-Io7p4VC|8jQ_UJ{*yKI zm;PP&ck|&dYyLl}!+(}Gs=)3q=G+Efown?@&yIR%v2#e;Oz>OfcsyFtfUCP9Jqt`- z!++0z3ruYROw9m0bHKwR)K+bFhg?q``1vJpuqrU5C1fx`kPkAz(!AXR3#=?=RdId; zazGPCrUndb0(p=q$j;gUdA;Dv0_JVbADFiQaV#+MC&(yNgCUb;<-8**H-}(4r zJL^__Up+t=>Ghx3SvRLIwX@bmyunL+S7B$}2QrI#q-SgGtbLHjO2{S+_~4A1bZ4Yv(Kno`x^xP#oT!zev=!tBgOJxc;I%k+b*T+xxRI)= z(r=J|u5ZOiM`1h;jIu8Z3m8&l1q|*3n~8?SjC49=if@cqX{-G$d4F$V_iTw){#*QK}o?l18A(N=wElN~_SW9pFpDR1~EFu(#M1pe}tjdW@vc8b$Er zz{jx9SW9|&;W~`8O2t_c=cXpT5B@q5@-1FRWTMJQPk3*a^b1r4e>_TJ)(QH}iGiCt z=tAc6OGdGG1uM-4zx>EwP1@6)mELI2O0Q|DN|*B3#gvi022ZOCUN?so<&}U(|BmoO z{1zZzo)3S>=|j)t4Ze9tGynYtdaC2oRi!(z?s(kjjc?DOzvX~e7O;AG8U0x4ehoF? z>1~qac8v5iWGv}!`qCogdB{i|7)LYD6XlfnveMgq)udY?8{>7R2Y|_nJ=B|Zbop)d zrB0k?UXCFnJ%l=VdO;VB@4bE0q)Q;rb+cB5UQ#>HQC%G}8M|dXo*FfRfxc{=#6@3U z%F7L2gFk;G=H(tyk^|6}PxsIVHquSe_F<%7Ra-Ea)(Ey45AoQ}8N7Z8#%nwJMF-`) zflM8~4Du9)!}etiE1jywNQ=-XJpK^3R)sGkojf_{woam~{c8Hn{W${|-VD0bMX>kb zb#MWukeRksmxiGYhajgt0h^y3=6do4E3rZmAtjk84g9>DZuWxF(xNQG15AG{}8x_$4CoMKWE_h4CpGo zpy$&>+MB>Q$&kO!!MnlGA;QmGUI60dfS<0T9&^z5FObJ=@YwMG1$-SP;rj!=kMaVW z^^WTh?-)A+X~@p?gC z|Co;76g^gY5NU$c)TF%5Z!X54$4hG7p^|xe>e9(tjC63LQ_&C)HBZ>aTC>1Dy!@C0 z_IVFXBmj2d@ed39Qx0rk>Ag|H0Rx#Jp2tfb9!5ROfeGFN6Bt7$I~VvT0@#Vibu2JY zyQX19YQR9Mz&{pE_C?)!og&)K0{2`&eyYGi7LAU;FY2B`0a>d92dVM#z(K0OL2}Uj ziGZh^p!-t?{!s-MDuC|Kve6azNy}3XSjZpski(ct@IN2Az}wIT2BHiGSV#p}NF7*6 z30R2N2d1M>d3~S?uuuldQ34j41uP^7EaVR?lnX4x_pKtZkPH7FI4BJ`NDeqC88|2% zILHiRHXB&T1?_f5yXAmuKD!T1zu~M z>mXACZsPBfQwDBQ07jAnCQ<|*l5fUCE$8x-U=zuo>*3FmRKa%h?N8Xez&29ZKcKG} zY&AE`4Co6x%EC!PI(nE>iYmq%6>c!{=5ofv6%t@yIgp`wrQ&@C%{H9e zKhOFZlU?&UcZT;>wGw+dd@(7)ccnaRFO}fGl4bNY0^zrkuhTI2Hd26ZqiFat0uNAM zd6?jX%f3hkpC8q!jI0u}^pl{TO%Bto<9R=A^hZ3>oq%0#BHr<53B#&?Zs%>$`S`MI zQEVdq|9lIdnyfH=>O0tGhjE1oh&zM-I!IgUARo(z6A@mB@D-KexPuXC@Z-;)WQm;9 zUnnx^jyQwpi?fFnHum+WxzTl{nv`w;x#SFdlNI5TUW&33!kEHd+^WoSaTa_qjjAK~ zUMlCZ`pYo}5@S3kbB1-L@byslmM>R;bLprbzVYVkf#)*Bec<2u!5$mon%~a|zy0I6 z9PfrT*ByD_U9*1?KFoiIJW7#vC(o1eVf>yTY>l(cA;6%`H7ZhO%b1l#|gi_ zDfsi7Uvd05o$*bxUlGLRAk8xP@8QGznVl?b5<>2|uU&=Z0=QqfouPoW`f&{rBJ<|33N8Z+^w`-w6Jw+diaO2LC<3>n8onH^1xl4e`J8-OQ)?qnr(Y ze)C7&s`zjCFn-~9UdH$JuW-m8-^62V`851^Jw-e}KX~lI&s~0w`itzWoBI;)f6r5W z#%?n|SI?j=IIEubLKSCrMULs_I0u~4%xTogINiEcvJd3R zuQ9&PmqVj$FNaEO%R(>PRzAiW3JtcckWl^Q&=A|$KgNe|PpJvcOyGNdyc5yZGK7D( z)qgeY6_6h7rBHUCW(N4&fn(z`2Iv*PybE)eLkMg6Y2Q${CfFa z-p?@Qe?1Qlp6t)_;Q!8-Minnh0zTqt5pPePnnZc!?lx#?TG)iT6rA~b4_canu}odix^L=>adnnA?Kam86v!-s zv#gy#V|kyuJS{%*VnW?d(DMw3@pV<5sXpb{__`0E#ew{~s?`*yiP zCvg)#)A({yjVac$hk~@)1p7xF@poM$kj|9YOmnUQyK!g&T$ zV<&Stb?Re^y{_~H7Yo~zf9tC`!GSB}eOo1W>e=kCImNjxE3Dg0a3ru(m2jQ~g|| z!#=!;?^Ea_W6SY<{;zWQxMuo=|NPlV;wU|xF9Tt|&&!dwj1QaqGkoFKxA7eI(ImEz zml>W3)2<7~8V|-AAB8o9^KRw|cwde>@#A&`-z>yAe?E>slh4a2QxR95&5vt~pUOiB zC!$~Y^!)lxLfBVi_sf?RXx%7#cmAxVG5*WJ7p*Vuit~p*B!12EG?4eF7w-odZ8k5< zZSlLO1HTM>o0g&t33%5shjh%ZfadUh*isj*lt`4t`yObPPa-e=OgJxxUG|6Xk~K&Z zkG%P_dp$XA7rxx)GMnSHK#xdc0V`+D$Mfl!Up@u>Su!u>+^*~#Dek!(2!&-)1E$E2+J&Nw#ZOg3A{&*k@6Kh0x>cRU|59PMZs z2hEfUy!+kX{JSA|_s=l=i~bRQhdxY19>3q){PB+Ot3C)f^GfLZyL_1_pWg%ce7o~$ zlOQi|4r`@oA+L6-cImh)W)pu#t^|A+@1uu5dmoH3f1!x;(cp7VfIo`l$9(MzH#z88 zOT~ip3h1N_`TTzSIYYiYpHu-IDgR9ipQPQ)C-L?zysyWDOEC;r<9M?)CaC+g1oN;=1Jg~2M< zY%g!PV$1vY;M->c-?WV;;#k=3)x*{gzCN^4czQh<{S3Xa#BQB1z2Y3z$MfUifb)F# zl_S67{JcuSzKgNv^EuKy&k#nO%kO7CEhmVTA>0)0G-DuPo*nHrOLR4^A zjO}FPi*Zaz<}~XIWy|uA?2b}@Q&vt)$lF~ae;_S$1fkx zkX59lGD<1$5LRNC9OiNhIP!=yQtFYM}5(Vh@I z^S&|tQ9s@frkz+Wz2Zg79>lM$|LRLfmF|C{)K+V)R-*(rW(mt93w<|78`#6k~m$*JT^U?Y9laG0Q zuYb%JUHzDX^l$M?!;h~gu$Ckbc3KskbYvBWc{~HY5OMYJmjHiSE~TKCW!b=oSQ}nQ(@dKX$B)my%zwo5 z?dIn{-)>93j9>F#g89$q)x6e!rQ>m8QryaPU&F*XA^26s+100DE$}qN3G1K~Yk)6< zUk?>=*b9)SA@ZzDh3zTVDz6IZ1A#e9*9}YOzv1(9#&_K~xhS5_so_6gU%nrB+WkV) zDZMfkv<_vZ99t~o%aom3B0C&5rkSq6?{{K6Fa+qG-mtXz!dmhLm%#ROW2YyWWc)=fO_5XbYQ6=>sce)KnQ^5xC1{lkxG**}n9E#i0@%8!u*&!yRXIcP893i-0c%hSQP zVf&cK8flh<}Y4O|o1bO&^pZ?9GKj6dgT~LNH`8OlJb&Lm5r?}d zUgO>f{{D&ZRr%6r@ci@O-ygPPse!gJOkE2<|MN&4cNFmHZ}2kr zR1@5BV2t|?__)9}9}+2vk$ke_Y0$6KZF>H|52d{m74VzjZs#8SmZ-6>*P%+F5tp zYr}`%3mJr!&kny;&>SuW-c1uKrN&%cvl;XLEPtPX8ScCZ1_tKu6)?q}6gPNTD1Q9C z6f^Pvf4Z0AuRd|T40(S)%|3C>!Q-YxVjc3naCu*y;KR+=@?p#q-p>Ue=J}f6eq=wl z_{TN>?H_kpCGW5Hzxv$$YyLrh$$!=#`TsS)X~+-s=pTPcOMNtN4(I5?9BmuZWQNSL z7~jMA{Ei{r{;@2JUAK|%w;(iaI|EZ-SucVKKMEN+Md~VEQQ-df60jx z(67P_okBfE&#M<2#Lb{Z=phVa7Ebcyj{kfAV zF0i#SxKetzCqp3{&Fb&E3&=lZ`8uHnL(A^PjoG?PK=CuA-KQ%Hspi#1<*v98ET?w; zN!<@3>b||kHTj5;UV6>Dq1IYNY60@OyP=qHXOd%lmkUTW`Apf=1Tjs!+ql1?4MX`U z?tM<57nA$&_n*gF2uUrbeutf#iuRadIXjP| zoW%L3{ry;ycK#3$nkb~6=MKm@;zGzlqvD^wT}otP-%I1@PnNnye2J-9#8KNhS_R{` zuynR$=>F_bhCaUU{c5TiOP(~UP3UHZ#&1}<_d`8PCyowyb7&Mp;i2XsA0BhGefz+( zx(!5a`|duz`>Tjz!jCDB#dw}Ow(WIlKLK4za@%reJWGDV4Nfoc7E^InVTUsw3~AY$ zJ?sm`!HuxZ2QN+*z!^o4lwDoKH2m8_$0ai`KEaulN2U_p=w$Q7t(GIpS9kBdD`6<{ z*l8wrHb>nj#uXnbC0eDNfBV!khPpg$>n8Jr1D^Ptqu*s>vhYhj7&Svg(~doe>{BJA zWrKE>l(b^$#Y=skH)&$JpWe4G6Vk1* z-$!NiLI0-oyHj|Hqw#y#9Vem~s$B2;<60MvgwieJJvs{L?sBC_y#N6{%8%4*w_iZd zJv)z__JpI^YbdeZ6{4CYkEN%)Il8UUWK>}!pjGnX3$nHh&9$mt{R3XT<1Ve~VZ(?? zIpE#9IhenPKb=dQ28D;0zR&vG(9p4q3qzN7#9iJ=-4^I45X~~*aQ1_Zh;}{Sl)q)4 zh@2XwOA0Lov_1aO+_T#;&#MYFxqK1r+#j=6Gl?Mu6a7J+d1CVY@$A{QtsFhmSQFdM zNJNSS(L*9`aTJne(9RPVE6-7Ia~X0&M4Uix?b%6U62=%8kGBz!&WSrxi^VJ*%X|9$ zO%6jB%G0vtebCPXx^8ET1vETEO`}Bp&)anWK}!DH2j;(x{byvyime;3WOh0-IQ#SZ zkMDQX-g}-VEXwI=eY7tdIoq>QcwILjsQ>T>?q_Wk7b~mHP&IGs+0ey0KgaF*k0qPa zxaHM9|MqXqyT5(?b4|_v@V?4!LU76tC{Bw;cXN8n(wOrL*~z%n?q_cQ$%-RD&l<*W z%8d~JuhFyn^K9c9-w4Pt^JJ4foR=;(SfyY%MohImhI@9^71P~y4Srdhgp_>m_#oc{ z40#sr)y`j!Tgo$RQ=Xj`(t{J~?zJf_ZQeb7tj{?SOQzFWh}}6Tzs|i zJ4b_Dy6p%&O!R8$*%2C$R7I|=d6%IrCeL19^X}A(|JUfZ}NJ#smSFJdS3o(0|y>V<&?kCi_pq1p8s!uPndy~Bu)vJXThwX)a^ip>AozOiw@ zQ^9o5o8A(k%7{i0Dd%U#D9zx=qUY_M4}cJEw-PO$2t@VJYV)Ue6T~#iwoPhpTnP8* z%b1#twM2bN;x)IG5tX*pbY^878N?>uc=&~(y2ger%hbhmEvEct@&lIEDamIZbr#dr z>MPg8Gg)fA+rm%fsem3HXxFjuHcO8N4V_#W!%*>w$8%-7#Z*JPiu*hj(Zmrc!$$dW zlsaMPouvTa8ru^zhAIjv{j+Msl_xA&_OC5jtjy8%mm*_bM*&54eRp^SK>b+vchW{H zAz6(qupawBNK-2`=FP-Kre zc|t498=GZTlg_#`WF>cb_rCpN%4rw1R1^EuIO~sdTz(4alKAV`4b?1VS06aP$eN?# zZ{ag_hKOm`8wIl7NwmCv>N3~0Lh3)RzD&0_L)Qi--!^k%=ydfwHw#5E*-mZTpamhp z;&D5<0gH%c%t+0gbV*3}dksFHJ&EYb)~DOo0#sN0JYF(PTSR>ek9JMeWohq`ZlZ!S zL}R|anz#E0OHZF29+`2BX!}e3>4)|(w887{C{crmitQ)f)ejZZh@3?W7cbyw)3o+l zd0UD6(+-+r_-TaG`LGXI7mgwYL-!#f63Z_T`dkvx!}LPCA3Is_4}x9KJ_^alF#l{# zmY5XG>W(Jl3uxofZ11Y?3`LEzFZ-}mOrI~mUpVHQh}N+Bb~B?`8vZ0u)~BILpa*wH=tjewPKp&nBBcYlqST^xG3)r!qfn98MDh2x@I`+?ll z-rze@o2JJu(L}!+H4QsBMo8=P-)Hn1BA~M$*Eu;r@#)xArCkWLNh56a4jF6`P;H$- z^r%w|>4fz5j7EP{_V4>fOtPGy(s`)o#UTz09aj;xPM&(;WGG94CX4EV-wDV=X>jX{-$nGe zQ6qZ(TLGh4aTWv2&*AmbN6^k$r2)fsQ?-H=GSWKr%R_%T11^#~TJwM}Ujs}k*^EMG2 z-N?vuH7a9CW0~1v?Y<0^meg+0y2H}z%^XLY?{PDfF2^K#&nri0eKN=V<5S5~vnIC{VNZNIK+EDhP1+}*ZliY_MNbh@YP$-#qdPF4dYffzoFF9A z6|%xy@Cl0|OlKJc5EU1Ui&EPqK>x1V5UnesMcljvR<#W6@O7R%te=<;UV0MY>?@>` zQ*~Ds7h-;Q3$T>KzBSn6#^A@tSW@a96XNd2(8BV473<|$>Q-G9E&)!tUA|(P5BBGv zbz^20V!XR6b`)k-0%r%QZavdoOl$JH_WQ9!Og)Bae3xwzQmyvQ;0PmTSg%gzaV!-y zJ^DNZ{h##hS;I!)biw&gKW-T@)Ztyz#!6hgEwmoG%eaG($}~o7cF`2kJJIpZTfk43 zKg}9^HHawb{?&F5)CJU|cIZ{%Ng=t`zNyV=LOq9enR)&;M-yfG0XvousY;e4q*RG0 z^_uH@iw}@5ti0ORCs;^bw%5-a3ORsX*1qQ#z{iDTZYKK1(A%i0CySj~vb&!3JhPpU zoXUc&^ee=4#@-?R;Xsbgw~dn^r}6p(OW>FJi}v)h zVCd#m&q`9pzHKpA{W&M1$kNiqSNe0bYwAz^ZD|bU1iOD9JXb`CO=oKQ=3`%d95jEb zn4w(dg;gKa#PrO)?*eeSE#!y2tjA54BqR zJ-Dlgwl{RDoil)_qUW}~w((+m|4QEE;v50>9X5HUrv=eEVPg6#?E7qe;J(~epuf5L zQy1dmWrvX-s&6LYq6@99xowBBG|_d- z{_6+udB!Gl$ItZ>P?2KEW^Jt3ifiF3_F-OEdwA=1UCz+n%a>*k0KcSiaY5hK1H@FP z(CXgT0~}3CQ$FauPDCB6qgE^e9la1d>2rVd=fQ3Jq6aP&(XG8p4_UEr+MKy`-brQf z;VNAoC4qhx1sP@y-Xta;wGP@Vun#m9c$)a%64R&8Y5u-2*2-VFym6P9qvKN*r)|f2 z+3B`BEp?56Ze?bAvT)pYvSHnWar+rsd3mPo40cBnAi;NCq zsk_Gz=Yk^~bzS}?<8(V1&UUC=B1&gz`QZCA?BxX%8sHn1*Bbk{<&ujHg!$i7J=-&1 zOd-m0P16d*l+cQq{_q+{Uvs`bwgaD^yKhf4*c*xtTsA8Fk&rsj)}V{0Ig&qkuSWm+OBX^QLTHcjdmoJ2j`f*xnb=$*i;Kp{GT3(e>%m)HxjKr}dc9X+KAKs~sQD z2j9Qu&?(`yI*!x^uBjiLECOG*#yhJ~Kn8B1dzC;(8rB9yb#Y+HUzTk9ZH0hln08zo zi~Z%cTCn@`3L!nysamNEe(T4H6N7g>WT<*)d-oY8LelK0*RcWCxI3Z+I~Ht&oJYIZ zz2iQP%2voXr8;xevtI|U5ptqWr(&C~OIgx!Ui)(LA)-my^EIZ77t!wWH;;9JbG~d@ z5V~Nnke+&cJyFZQEjeQ9=kl`V7Wmfe@tNWtV}%s$(|5Rmu7L9D z_6~^Z&5~kTxm?O9boil-12=3C0Z_0d*rVK5aWe<60wCjzXDUgpi{v=)ciuuPx zJGspiQ%Q|e<&S$r7Zx6HH-@o533tcyoHp=Ha+hU$b+K;jasw*k89LeTTzQ-cOL-Bl zQHu^i>DN>;KpXhcZbw~)35+^-&)hlk;z%ML6V3OpFyGHMzI~IFn#C^rZSDS8b zNxAfbqjjejZ&@~2K+BwlXvl+puX$Fd{R8yOXypAG^Wg$|dFaaBX{d)?Ro{{0f>_#a zGa)l*mVnNz-oHlgJV$Hh`^_$r6VMdjgJ0_!u%A6k?z;XQORvkX*A}Ba-|Mt|KK0;8 z=}JVEHumM@^!AS;XEXHNe0n?44$$+l`sd#=Li#SMG<@J8pn(fB47WYNdOf=;I{Si% z{En9$I$nhJm0teL1@eSczipk;^8~bLWZQ!YCpjvZeJ8e41@?1W+0FU=S^AvfpL(iR zNQ3>(7I%1t@oaNHzWpYK4Ads6Pn*P$+;*)Qn<@o#_&{Fa1AT_XZJTa?hdg%6rYoPW zO+fsz6KzKh<|s;JtjN zq>IZ!@`H~C6%`N}d@k&;tdEcq<$S%p-8kCYl=rX^M!E^5HfqOx1oYIr>p+)XLVCO5 zT&@-7o4m8nMO$l@p1FoD+0g_!l9F0Rhc=1uqC4x_W3)+bkwfklOW&gK)>Ux02q z3TMS;ipVDRtU{p`M~@3aPTT^Y*n49?FW4ec=1(KRG01=Dr}z_>4Z1VuK8N zRo`L+R5k3_i+yNc*P@#dB6>Dl_vd^WL#jCo z{QRIiPR(4pu~iAtk=~ap-`^*?r!aNBVJbu0+kDOl#eopzceJ# zntt{Y(i>m>?=zl4AJud?K|B=vU+3N3w2UE-)T?vSyG|5gYx3Zsi-5Y1Y1%NlLPRI* zgJzEt2uORi)u)oH0t(XKxT6vBy0U3W19ZPa&Neus{?TBJ)0D@4eSo*?BNaUA!6)Bn zv+8m|wU~^;LdB*xG5_u#UDfk6=;PMD?`K1gF?4mxqaSh5&#bHHV|#<8hOld<1`Zr8 zdmwo<4Eu-S<>hwC$AO<~-|qZ=P((QFO-g?P-p92nZO4nSi(MC+wV>bzoh{pqbjmvsm5r=+(4GK&-bJ-udf-FWEbs2X%ws9_ljQiu2OKTmc-igk zFqS5n{hXkV@&v_g99Q;*UaxEV#Je+3ojV5Df!<`H<4Fl`cnxL!&YuoD$MytG!w^ zS3tiScTM@S7<6q|qem5RU3dx3vtF)%enM#)w{Z4b@~T8(+p{>)sT6s()L?XI~K z!0+$9V%NQ5m4M!er)53^pS^47lZMyDptlwAYr=4e+V$NB#!uhC(nIAf+Sfr>wi+h% zn*{yp%(XA>?^q$EwdwhDpF(~%W>e#~aDRsOP3DRNFc06)Uy|$tK5PHQ1(WAMe?2;& z%fN3~4{NPfHqHqGp6Fd|y>tio)HMZL+kh`Q|ML8XMH%4h9-T_}5s2wr{G{#|+<^-d z7Ul0y5KzxW3hm0GA(yyZrncNzL{l#n2B&Qm)3MISV~0IvXuiYFalTluV|I<7_rg*{ z8|N3iFQ^0`ecQ=YrwRJY%#{ma1ol{12eVPDm~G1qa=QUPr^x}3 z->}b5m&UYT0(r^@$q$?J>%nK(Cj|_s$GpzCT#}R}pnx%o9oJ#p8uK->Z$NJ_F8;~@ z7w`omv~6n>_lRi4!O25(`?1vb?3`2LK19_D;`vqRCRpg?o182f@cQ)it_bf!yo7 zlVSb?BANd2IYq31M#gJJf4wax>%uGJIzXQhpl4b92J&B>^g|E2Dv3#R^}Exnwm}X$ z(&A3dSccATxf8op3+p22vf$%<5qSoLXhw8~eyMuyK94O7rKMTkd|)c1hBK!Z%!WMq zSbgcvJn(By*1dBYN->XbIla924g0d{BQ@1B0adn5Ju?e>s5`T&+#6Bv{k^VhZw7yA zbt};HOi$Pe?0$Uq*i8{NTzI~^ubY@2szzPYbO8NpKgBz_4Gf##J-Pp83(*Gk4GS8e zpXppPNrB&Ai}h>w1VNs#^Hz6fD}vm)UGHv#X0cRzLKq#& ze%fhnndt)g=J>iV<~V3LF!H18K3^iun+Yf8fSwlSzfW|8q1lP1eTVNt9+f@gSr6TJ zxCm6oY-Y9`M;>=SI(-^|eK8?n;!tdBk!ABLUSPj`ZZxGw0&uoXufwkGI}0eP^opw} zP((!+l-RbYpJn*GWw(GI(@(BjdJXcJ&OZ0sd`uP6@(53jV(gP6EIZ9p4CZKZ$Wg0z zQyGGr^sa~Ji)oyj#4(~6bVM)a=@{r=B(@$i_N`@zjSGBVYJzqD+Cty;p@>vxCbkgGF&3?A$@q-`OSGS*yUN=faO-H`QT;IS^yMUyN8MX`sOmcgb^HxZwRr+rdm~y0? znfTZOa><0(86@#%4 z3i~frM!B59sh^D*0y5Io7WD2dq-jgV@;xnCI)B*8!Eppj72bWqvyZS8VQzjZ4|sK( zMw5pt^hV0r?=_!7UsLlcI6Ehcq2wvwU$ln)>62V+$wt_J}z%N)NJ5Fy`W)ZfGY#{oKSGby1nA(?`H|U&5=Q?557`h$nsH}+H=cMzWeJlhcI7? ztK^Kk0Vl>S@>Eq`!BDrgH?sVufSy?oULBf>^?cvqu`=k2$?;|VE&*ps?>^t6ttq6Y zkujB>4r0D}huhm}gT9CDyR!)VQr8%XZzlGIp`FJWPJ>-hC$%6ylL*MebM&v2T!p@E zOvKOrwL}G3vY&U+PXTU4#-pEuPADy3Z1G6|d!6f5srMLqStcl}G!)R2%cCx8Lq2jL z_eN)R8O3sLA zesQjr>2sFe?N=zj2z^ZTQjLgrG0@xJxN9%zzN_%rLDkYikXpItLR zNI$xrdAdSbwN zwhHvMS7hd*NRFOX_8Spx21S`pyk2jtUwNxO4pT8d54W@N*!oOJ&&#V?wM9FYFZelZ z4D6yB#6zboc*D|V6W8sZFR*lB^4;7s#{^`0UY1!Afc~O{Y_#k`BG$$h4hWkmH8Dg4#c!Pc4AcmH=nRD{`DFN+x_&z-0BF4c> zZQl6?$mg1RFWvW@p@Ur)4fz}j`!d%aZHq8Zb9O9MUk`gFMf>>8!@++Xy0%pHA=b6& zqw`l2&_9D`UYO|=0(tv{{ju4n#AJW6SDMZOAqB`+wtis`{hX!3G1)=zse(3h?_9_F z?x$E6^jJ(wcjXRn&J)op>yY#c$YZ9?HM}t9nwa_z*;dqE8~S5|y^eunAn$zVylM3Z zmNwY7j<{PUrn86R$2&tGP&n7#ycO`+=vkJE0iYXCTHW7!0Q|mDbsGcL75wa)IU_p3 zeyGIZkb>Awj4P&}=1mP`$l+~|6)po|AJi-KK&n3Y{PZW6wn7fLd)EYmuBeyApm4>u zyRa`motJXS3&xL2Csi#`Bo9a{xU{#9H__0!X%VT_0?MTO z;grKsRikp*0N{=}M#Jv+fqpZk;E~x(9pIL)mVu#=U#xPTIl~L~FYR6({q|WXrXAkr zJCwox6221BF*+SaejJZ;!3C@YP5KVuj0S3%JGzQcu7zH-i;&<|p2x5#+Id>818 zm{!|2;eC>y?4up{xl0E%(kj6(U9;~Y$OpZy_GeP3Zh#%)+~m_25?L~v*)`C{3i^i1 z=oA6utCbGfxz4LZv}E*h_j7?l+Gw(JO83ps6W;HlVUP}cf)^fh4m=~eZ*G}e=q)7U zidILxXF#ueWW{Q&DFQ0JG+?1V_NNo({yvT1W3J~$zewFq6lxu#^aA7iBXr1`p(Y%ap6k+Ky))zrM>e{2M?Wgq9GaZw z&ywNAi&h^+`2KC)A?`Tz=Jxw)eG@Rhe{8Ecqzb$>$82~n;F9Y)HV41Ju1!m+;F#hU z*ze@r3_k{WNiUt7r8~eEGTx_-*8{hIa?Cgp3%OD5(d9A0uqQmy-D}3oLn8XN!_D+N z_U%tSJNJze!hRxFM^Cm0a_gwTGqy>xpX<(l)t9cLu``QVkqrX0f9CX9@Oj_SL~YV3X`K z%_c}l8YRNv`(P)~MRfDoup?q>3_AUMHRO+`N0*e;%oIZYcH~JPd5&6DE#1vQ4%)Ai z(dQW8<}gRcUdthu+_~cJsUMR?^wPMb^^ENLcDg{0F!baOCA}BGPeG;O;k!6$^6U6!r4H;=2R*LV>Mx?x zLG@3JK{uC&u8lWZ1wG9X(}XuCu`f2(>GXx{s%ztb=Q za>%n2uDF8leniK0A8lnRJ}%-^CDvKaC-Zz4?57cLlhm)a5m8pR%exA(FO~{U=R5{Z z*}U$E?9wvO=Rx-pgCWmaHqrcg6YL1OhME_TfE{FoWy#66Cm0e9^*QSPo}tgm-5-tU zM>OBiyYq<|0^0OSjoo|?a-MBV_b$E(dgkQ6=6YZ3>nn7|y`Cr{na64UN01YnO`SF^ z0`tUm*IXa#R54wO-@myAbeMUtUt#ch@WYBWOAda9z3O=t#a8V_q#f7VeK+KuUqWBJ zNg(u_g&#k|JuJx<0ngM->rNWq- zX}*w$f6Tcz3H*6#^%d1u_C5r9@P7KN)q69cCwp{$ z%)!oLGSF<0H-sEV;XW{h)`tW<0Cr2!Y7z#sw9WF6!FNyKCs9~+gIGkPMh?iG2)p1PYlWM<_d#yd zxOsE2qmUvaMq2GV3wd$Z!T)5O+8F^k(T%{kOcQg^@7DnbE?_>|l^O}Rs1kW@ zKP)~M2fEu(Tz&El_SNsc+AFYMotl(yHNy<)o_6@LW(D@C?nT)qp!Ww0eP75ehJ0v# z?x#}l$9+!foqQMpx%|b7>&sxzqVZJj{BGDW{tWVb(0@GWmcD6|2>P#g+M82FkFh^g z^->s_&5%!4pt0Rt=zSlmN=GLG_f)U8>xl7JbU)$z2>hSM?339Z>o{^w$~%A16Y_?j zo&s?v=mpl*kJ+HeQa(MNoZE+^nmda|-$8x`ui9;~gI#@xuD34+hGYNWEDi zVLqYxzDU1y+@~U}7ZaJom8HIrv$kp<*W(#W{Vr_xMRUnTHb`!3Ycc6Qxc*8#5PAUj zyo(ax!U={7F2ZcsZ(I&r(jWZKb<;ihf}tRsACK;M1-p;Evls3#oCEp6;jKZ6n2%nz z6;p$^LXNmRal-pVoNw6EtuzhzwxV`grB8dO@+MhflL6<={yzku0^0+0Uv&-HD_(Fb`@HDX91y#r; z+gN)VO$Xl7U7#Ed{PA;c!_=46B8vCjf8GxJhf>UU1sUk4sYb$igJ2=;OS77og?;SU zWv>sfI*4dnkNIM~={6j{dsZZTB_ch_2I??X89UE28Vib}y4e zB$*Xvvmpa|oAm3Gme~L|PTJd--3Yw3Xx;e_KA@XQ_9{CC;Hxs4?%W5isqJwmtf_({ z+rsx1@OMip#;-*yLC*rT)@$XEJTfy$n^0nnQPE1cPe|Ip(I*H$!IBxes0f{ELGz?jWdX5;IdaXV5 zZ$*2S_Vfn*d))WqBhZ0Nn?09j6+y1s?tYLX=1qo7FQ|Vw>|k=Q3?GmJ{-I2)orHbp zZO>j`UYud+nkc!`eeelM+P8DPu>Y%=DTv+SWXitJg9zul(C6GP{^_(>KzsIv#coxA z-HC3i zv_&Ujw=(9ZzGZ4B73{kwhb?!TBF9qEt6jmffd5C$?0;1O^yh$&_e0lrEY+JXI;ITz zW(CjC=kr;*^8XR{;|e<=Iyn5BQO~Ui(N1#3kMLD_>|KK9}=%Jaz0Y z`0A^ZQi3EI#HaW^uv_T96mKRdZU!FXE7{yy0KHmYtq|V{;8=>2-rP38=QOi^*1aZV z?$Vg;sX9zz@02L~Ya!Ml;U7gRz?XUw`h2^S>7+--QOVsI{-s4r5W|p*)NiUScLQ#i z;uzgjjl3^Sm$NJVE^?8_3Ok>DXa#Q}BYGtW_fx{76b0Fv(0#6x6R#Nyy`6gKu6*DF z9SP2Xf8xO#uPVJ|2S33~g^?-*{^*a;W&_1`;EORzf6{E}d_X`nRWL4AFkG=3m z)*Sh^uMIrn_^QKmzLr3r)MXh|ggmm$U6JLlP7so&a^{9x78lu|ciTZg0JwaF<}o3} z1@d01srxaHgf)uE?E;?{=5D<1436j1y%ft;I~XKnP21rfFYqtN%Z!>I(TSYO(>W`U zU$i0FPiG16zJU4&tL?uKH*DZt+7=F;_u}4!mB(r1g@M<`E@3*^9Qh*T#aJG4{mtb~ zCcuXlPy3`aG=TNR>`P0>6I>S!sozIvG_u!j?!5pv;P-D{y9R+r88>6EHuo*yosHES zKEGg)7+aYQ8o1tnrY<&G_Y(MN^$lLq!6a+M{dFz%xXD?~Z@pHjz}=;*(bDBa{zurfBwOXb1*(~_VuZ1gyOuMPS>4{dG3eAH~BDi z@XQNWLW*{G*aaazc=+qx)SsBoP4&n4lw0=IXB5n zUszid03Eiv*_4uS$L!v@(U8q_l*I@$&*N&z9}+M?4e|km570pPSIm z7_Hd1g+}5x-PTLPIIlO?)VzrJQM-7)Z4z)3pQJZsuc1G&uPjiJ-3LEsjX;(z@XzG3 zms@%sflqjT{bScH%p19BV;^roLUrENt{BAg4W^fNNYiN~w#jMRRN(ezdkr@R1CQil z+WF{W-fr*WY4lx!am4#V@?|pkjW_F>2QjY=l{;MMxXd6{snAr9Y7FYv8dP9q29RbA6FA=imdc+9|MPt{VgWowtlCKXu?&p(Jo+@Czs}S|RGao#?c&p4{r2#kb zo>(~JfDSi#9kQ}4=?;V3Y=0VY96W=@#BjTQ_+jemS=NP!m(IJq(w{Cyh?Ma*)y;JH zTfY~WFkMi@$#rN)ga>$!-%Z_e!36rLe!3~vs~u_eW!*-|`&;?!um$kEZ+5yhs;0p4 zWHihiRuZ!8=hmPcImC0#4;C-N`Lqk(av>4({Lt8%h~6Pw$MRnbvYHX6UcLEJv>bUF zIa$S59$}p@&sq}RKqn{0(lxd43b;L0@b%#-lzCa(KD1NT+%RE4*j>X@Xh(LCR}0rB~{ll5QE(n#b-`Z#Cs zQ)RoBKYD=mz##XekstU~vnBE-$?%Jh?wHu;EWjWa1?H_+{D|{=?w)=pbYatS$FKkH z%R^?*N!IK$Vvrdw$FD7RWsv%{lZG^KpW1D;vNp6tKG5|ST6w^APvuUOboQqcetj#~ zR?Iv33kI4eSAfrSh?{MUc-8gQ)7~=-26$xKin3lhdDi~xMLyyzCE>k%Rk_%Ii)h{? z#FY}uibWb*a2;EEm+~S$`*PngvvN8O4?s4vPyoJhlB-9~{5v6@KN{|MO=86(yhn== zC#*K$dFb1L^X;XoG)sq09$DrtvzEsBYW;IRAJ_HRT=ngDfy15rJKx##K8^f2yuNV; z=6&@$ulAPQhc2$ccVUz-lL!u69y2YDha}$~*sYPkL$(c7&KndUq#)NJaOr0zQRPeK zRREvjN$;%Q!UUf;MJ6YB0pgD1-@C__1NV}rExbMl`nc1A(QVL=?NN&!FLVs|NnWmf ze+?H|Z@d13r#W=Fo2z5{!S@Lp_yjjpK%bDyC>Ey-@fyj?)GAQx>gL%^G+@#;l+{pAF->38(It~eS)$7o`3|N{(1Ojg=8uM4? zm?4ck2&%H$I0@tY$ri8md!R2;%n>SHi}C4sWYb;X|2A5NO@4*oTlEXC{f6E#Wy`Ig z*>@R4nJ4mM0c(GKB(|w2EYV(9aw|G!qxM&dh11<-o zDi9|`i2*nxtdyB?=zwaztRp z4g#F^{K>wH;I)s|ad$-lH#YmUE5RIm!Tk#nv#uj=Otkf)1md?TM{V-=ex?&=`}IX( z@I&gmUOD-^#C+(UIdoUA ztyqtDkBxnFD;WCx>gzFl)m&tyY2y{ADh3g+@H6p#j`>aC)~pqx;B9&mRdOdG?=NQe zMafNwcY-Q{4itYw3ltJ@0f5IS5p>up5D>6vk1|7Fx@S=;J zXf0h7i#YhawNZK_@Fus;aQAv9d2{zp;bN@o&CQwVK0e6fQ%#pyh&XhIXZoCgZs;=R zuV~%Bm76^3TzuwO7xYXgG(9dNE=Z5OkXwp*kQpJcFB*L9gqLSr#1DXmYeL`x+~RG9s1_v7uy>| zFh1Q*OF4r_$aVcPO&qxK@4sJ|-AloT-G2J^D1^mzOuK<9@MfN44xQeCdArdl_|l6H zh!eMJT5LauI98)W$^JPHNi~s(v(~1O+2LJ9dxLSlPd*HF0IoH8M@z%KeBioQ{#JF? zGRXbOxvxU2prfGuz2p6ZL5d~bEwF*VW+Gj+&ItTfNtT z%O8M$Ys|Rucl=u5uICcp{_-U zn583d!`R9lrh7!`^I@TL^KHc~A$M)Z52PQ1T0t91A?1h3B`EHB;YSi@3IFN%1sP;n&Wpb4SNebd#^}nD)wK!$IeyOnnv9IW+w@Nk3Obo z)}8@9!b#iY&Gjzu14NHqvcS5ebl{r6>?|hn4s6Jl1rOM?yDIYz=F=`M=HnCPm>+AC zY9?cz6Xm9@<-?8eOYoFLFZ}IeI|S>0BF@w;oOewI$5$y7XwK3(zM7b*vi+Wm(Q{_w6<`)q}@P;Vn%d&1);#G4*Vmn}iu>%Xt- zRQ+!he{4wIAr#L|3V4*ccAch^DQj2WjcEZ+WN33gY%KC(zZh@2g*Y}l?^DEO@M*<; z1}!FkXk<>^)#6b2i;Z7WWoGV!A3sezVJYynoV)L~g~M-cySUt<1b%6F`<7W;xKF+J zu0I+AoOJtwg-mha*+UBB47=t6PyX8Hb;Gls`=kVCWGghKCk~e{GiJj zpJ#O~1wSUbL3lUffkf*$Hhvh_7N^%%F9VJjdxmMQe}G1k3;SF;FrS+z=Q$bzFTHO5 ze&5G;JVaV-!;yaA4(EA}M`|FhNUD$tK8X8_IYlNc{uA^as(pX$zM^<--rG6ZShp05 zL%Y5y(n+=VfzB9p#J>`F&;;UL;lqJus=~-iS-tO70`~98u@K8wiSV;OZnh`_U-x<_ zKEl2M>*pnz3!#2=@^nu}Mvw;TBV6adbyo&>?-&6`mwc=zRW))e(t)oWe%JFMolbUb z4UQMGCS;ZI429}qkPA5>1Ft$s(=&;B{)OvkLpMZq&{5EWY%S zNtW`+@oWd*;4Js{UH5myFK2rB&f)&#dseVn0XXO%*ROIv+6mcNX7jN2I*lm$eVx*V zc;dFt!5M)LsOKTuk@OqIf)r-{{K&-moYrW0)#w^@H1g{U%%>v%MJUBI3fH%JtAKLB zEgEzo2j?-ef!idMTV-Tnp3=)=@K;0UR+E2Q1M%_#e$s`K~cfalij<)N{?Coo> z!hdUA`9=Zw*1D>AFXJF?V*H@+;ST7JL=-N)f8>q4kZh$C=5OHem52F_BIxAsy!**9 zn3vUFuXxu7{G#B@UO|mu2AQ9y!Y^ikd*`+ZINf#te&JEN z&d=Y31YIuH+=V#7XIX0(QYnce{XPI^btC#Pm(>V)B|4VW_DydKOy4+ri;YR%O zMffL=!S&M?nKB5!Jl`=fQ(YbYk>c17Dn{S|_r*PXyq8I)$*nD4`wRIhgX?4@fJdwz zGchbh0Qc+SnKN%rg)V7cXF!=h52=~t;Vppiq|ux0aTR)ar(-j7H8Ia=x@W2ng6F$1 zKD|HJ41T5l_4FU$&Ax8PR;-i*-c@V(Wh3}b#g{%yZ|CDUw&q(p%FxLAO80l`4kK^Z zCad+~8agRyd6qhW^Yk_HXk64h=r`|Ad0c)N`S`Ai=Nb{;3!B?k2yxN|ygxk>ftSXUj>zc;^9&$nd&Q$1e zRooZ1Yh~8ZnnN-=~2*ic?Zeww484#QWIg$tKIO z|EKtBCjy6lU6_1b5dMem{0}0@XTZ}}W(I`42Yz;F>aM6k;3L@YyMdqHI9#!1+j*?xKB=k<=rh)(PPn=Pae54w{q0AyfVUiQNzp4Kq+Gyp;sc!T z?ExtYd1q*3lmD@Ehv45|T=7YMHs*))xlWmn5%2f>86Q%GJdLS6;dMn=Ctf+o^L2SZ zFI&H$$1jjUWOIkguD=C;Y9}>z`e)#Da|3p5y}=*_{6Bik{jk1Qj?bG69hHKT>N!35 z5#l!|^WQf_eB4A24u^lBt?3+e75>f2qSvK9SP#t7);&C4jnA!YTDn>rdUJ=yn_I!B zeY5_N{~UNr*7aNbPu?P49I_I-t;9nneTz~FhkstM6#yZ4zkt`ikEhilzCIG)Zvef+ zxScIKoSAg;>$h6Lt_IA*vkuJKvJ!c5_nWs_wB!A6hi5rp!1m7U_!J6%bJx;fot^MA zQ}$a_l;qKgK%s?a>QTg*>kycs&;m1BaZ-$Q;z#_`f9tc$NbHVny5fX;KO_>>U%zcw4~0zW2$ z2fZ8X^A-F@m&CkB(!deTX`55GUIcIQJ~XWtIF;(z&&j{XbCKm4YV!|=!C!lJ_Vk&r zSby9^-Bx41ldN99^P3&=+;vTKCqwtSitl3YBu&&Oa9u-V@FJf&K+kFp@QUBBZt2Ng zM_s3kbsa~bFPkA=;;6L{{(O7Gs|n+vuU%Z^B%1(!{HtF=?F{4zu05DX{{Vj@_Nz(W zC+NhbwS!mL(#d5_p+3o#Tx4wWv8~Y49UA-f&)U=AKSLVZ ztE#xjrWebF-z*2;=ceJlQ6KsV1<&x9rQl7<8GpWkU;DF2mODR(LDB@D{w&epCbJLF z=a**zZ%dmt-xPj^s^n+8Yz^Gc);Iqy2hJF?_{JG+tdH+gKFC;K1+G2r)6T+Z%=`Aw z>m!$;?t|+XY{0+?Qp9D~^ zL!SF}2yh%p*_d)u%%@xY9`2rJ(^c>J$xp z%KFQ$*1!e5TC7hZ-aB~Xknidq=qc4UtN$uxke5PF3xseU-@Y?T@B)6D(H6gF0OvpL z^4RH4e$W}_Z8%~Io~kNTi+8^_lSGtsDpzrVw}TMH9eB%Jk({V&&?|Dik>gubgnDs9 zp)#qNSU*?REiR5g{Ms0Nqw@j4WQpT8izs+~PX%~yUu_+&hC)5`REP8S>5P%OvDQJ&=;%D?|Qw zs$8-g?z>y(Yq!Yy;yx{#ML)TWLEZ~r&6tDv-BCd5+mr<4lQz>I_8S7{J(;#?4D$b0 z`s&SYMI0e9ec$HOPk@tTnXJl|M18r(w`IMf8KgpfTaGU9>!3He_1U|SpJ?<(ZjCmb z1kRbJtn-Eti+Js4{=gHCjmzKj-~(_jF`tJgtDxt&5mJ4ACX?7ax619mMo4BNea3UF zr#4*T=eI#`k?ksSx8x2hf9O5^<5S?$X>PJzS#)CKvdGd7*Eix(~r6c zhiufG@v)JMw7>W|aRTtjslGbn-6f&7*2{^R9E0`u{dlMAxDJ(725S5Sbu4yyzCI;S zNasGG10EvKX%$V`r-XH2kBF+|+c@w;b zFm$nbf9(X+Yjpc?>4*ZIy!BWuC_M{x5S&Y;8^QmsG86bM0KH*~f~#ib1n5j={+i>c zOC!E}AMF|_W)gb9{vCb*a!*ev-B7NC^LBl8UPTl)X>4gI4ReKG=irkz8Gg|n9xb{2 z`%JP=G-dHY;9BW^iK>SF$O9d!HrWWh%5Ift)ys3SZnvIFTX_Yz>HhkV9t#@rZmzVM z4FCPbBrzSQ6yz;6>i5QBKDQ8GN3SSEogj0$na$kL-S)P=D|7=->agZQf);S5!@_AT zAA$33zs#?uj=06}_0z2JB-583OU9W~9GhXl&R-q|t-{->>QrO9UGIkz1Mf4LI(k3^M0 zZ5=m>UYWbq0lMDio7uTpJ<#3Cf6XfcKXUqj*{o9BU(+Urr#^}XF1IC2_$Tx_(OF$D zBU7N8dZF`kuNZV^Eq*^sqzHNAsPl38Ga8{!4wQ+3zh9>@PcQf-c=u-^v9|Cxf_`mI zG};gRt5&f}!xZa4;8!(+c=!tnl22H;!lE1PIfvE(Z_h9?KmQ$kp5O$hAmAJ4r+g38 z1|FVO&}N>yy>MM+V$a+#x(9!}3hv=9AzHe4}2-<)ZEl*SB+F$GOR}9oriOp3%w1 zg7|T*Sm(a-Y`pj32b~O^Sfj0nd2r6>P5btpq>)crYDueO7{vFX!czTr46;mQ*(cRF z=zY`!*Ox43k`1{6emoMDUQlJ-2d`bdb;CrS5fU z46f^|!Z|P2A`Vs>{BZ#IRAE+?$j{rT^IE^N8n~&c1 zpA4O@&$rSKkPx|XnvcFNic{7%WC1coB?h-QcGnl9!c_m^aFX8ZKL&SO{r)BS0Zb(49m%G76VDC{L;{17R!@vX7r{QwAwt^4!VEz3yHJp&AbS936hKmD^;W1YJ??!J3Jc+TcTUe~dOz%@JmzNA~BE>Ed#RX6;kan6>`^JgP2c{pxO zHS|N*xSIa(d)4@YjpPY@TkK0vy0Qj5)3b`aXX11+!vMpD{}zx)||Wuiz$! z`c*W-c+Ia;*NJ>A_vOv6hk(nK8Ye8&g}-p8LMacp*}{d}4Kg<|NnM_n1}Bf9B$HTm@{s}+91xEl8*rZ_+A9d_m~!RNllYwxxN z&p+2nY0FCFr>$H)F0cf6YMQWz=Yqq1-nJaD&dSI9?J5?Pc!P&*`t*`{ z?lJO-h5HpV!7IsKV=#V$?|YuCo&H6fhh%?pd)NLG`81IaTLvDXE=*wkf?2VsgClm# zF$4Vi{`;9TLikbdAeF=g^rC*{tYudO33!%lzU|J?5#2Yuu$~Wo(7iv5Ye~?zJScT- zwyBpbo`mDPn7KF)c-rk|t+D=^n2&S{)?8SKeC~&nE9$GEzuL7?>52{VOD;&4 z9DhzDKAxNZuI>eIf2_t*8*!kh?7PaUr3?~qzT@*Y2Kdf5D&i@?xBZ;=uWJUcx^rrh z;RF}tbww{YwkQs`%ge#4Wmvb(W8Mlag^tIn!D)g074RZA6#Kho!EYMpo^jn9dF@Ni zlP&(xdD8A5+KqYtMC{#ybDIbmaQJ?=59{oyA;;$e&>`%5a^=Orm8hreEjE4#JVVr_ z8rfGE57AxuOX4>|U$QsqkP+gxvQ5*M=>h+5%w1!djrdq#+~fcwjAL`5!HJ76!7shh zQ4w$(e6f%1<%|o6ljm6qwX0zr%3ZednIIQ=<)8JC5B}w%yzjZwZlVsvv2{^7IF7z1 zaiRQNCTY1cMXnWop@W)b>Fks6LppNyy~Dg&{@tY0_!IPkCU?!pZ-BqMa2x$J=I6&c z!V+4DbM+5@o%AG`i=30XQc-0C{e(_7{}1TgWVu{=&x&)A>$G&{df=$v4=8?rb%IXj z@8%6W}fandOd!XrByzNqhm|;f1e~| ztmdTN_n|z*_4Z0GWrA5*)HmDg6-iBt>UyGFJ1D!_VHT7#5F2Zh>YFuQ+tJ&!-L*UJFO6yAeP~XCN<-&8wQ;!nga5)*e^1#5> zZ_mt8=SQ`rSo09#hd8151QF=X4~y!!LN`1q;!s60>GtElthyz9 zeS15hck&4ST`CS7BIELEKj5VsAFYXboQZk&6WQ2y4Eo*O38hn+z}eEYMJ=IA7fKh* z4B5#=f_O}u-U280+OqKSQ}7j~`$HGL!hCyej_pl_9tJs+wfpKZ=t(ASWf*SS4_sF# z(J10H7m0F{eYFPT_v16wRu#+}x?4o6L*NfT`SD)rf+^yt{#j-z-lz-W*S|DyHu5LT zRNCg9f}U1u;?ThjxUb#j$4$rhn7G-(!yWiYW#`kn9g~6cg>|nGhJU|Bzi!b0;>IUI ze%@BVZywZY8Gf70O|Gn-y|y?2!(pKrN>=h_;zc_@@Y$}|=)Tk-_B%1raBW!ITx z!Xb+gDd2_Gwj!^aF%Rt0=nRSXL_10T>Xcg45pO&!vMmVuj6iG2EpDjK__%gzDLEPG_KBc+q$|XCiPPpXXQam`eaZ z+w)j+GH{%m`91*-_qfSl0rif+EYz*ic^@)>*XxVUq&)`j+Yrld|4f>Y855q~zl3=2 zmQmojm4|6W+G=Lr>;-fpsCU}^As761HfMo;7oWl9ndo$+BeQ)+_--ZS>nwRZSL-cdc?@y*c5S**}%TZXz%^d+;)!CRJT7lMQL`Z`xnh`r0G^?4=aXO2l2Jdn@RI2jJJw5L{a+jCy$225GC!nS@t9 zNv2yLb?9%;)0{k&5c{flJt5$` z^Vh7y#7VY%miJo&et3W2f|}omH}sBv@^}@%BpyorhWqQ@sRrrjoh(*8?w9$eN_eYYN?skoK7) z&WLN8^{mz05zkb*FH4dJ-tpV_e3lOCsO~*APwfO3$+%c?iCzYr;>IP7&{@cP^zS{j z9Ov(@O{@9=;8pe2<1B)Mct~Dy#fwGYn^cPW8M!8?JLQ@Bj6kO<6z(A{t4$+qYO&6z z#$x?>BwfGo3jFHvJ_|M&BK{TCSYNJ(`El3NKT8mg)7}V&Zy5l8`1eVH9P(a`DichW zTLH%y`0@9R6za+RSnu=(ad6W&ODz%TaMiBz>^gb|c(LrE)Ef9L?Z?FzSNL+1clLU9 z4-l`eSZ-;&6a3Zkj3JG6$Omtlns_k(7~;aI8mk{8e#pzY)}{j7=}fY$@9q%9rB+M3 z5-?t$HCz2q`OK=jqxEsdT^z5qR_#5+Uzv$cgGYhmdZ+YXkY9w)Z)$%hVFNvYoK;_? z8TgIvl-TX-fSc2f9^0w{26I7zdvtP3y(M zd+uz?`aJ&!4SBQ10f)Fy?`Y=z*7l948x^50aSgibs~S?{mbvkenK}U_pE2K89W~{9 zREqPWvrXqjHLkPeU{^85clg3%HkWoHPsdRxY=aG+Gt%x;H9r#d=FS~&_QU@Lyngcj z%TR~hp@Zi00{no&*we3H5kmiK6Lf|SzBl64{MtI?kJ(RH+$4>yp^zzfCsd$anW|BwqhdilU-JXfaDx^57D+2+f(Zx8L_A?Mu3 zTUflMk%2ave&AK`K4r^hIpI1-ZZ|Th0iUo-`LCk$H0Yf!$G@G0i6GXbdVNMPc!`pG znhY5RdF}aopkx~Aq#ggucy)zFvIK7^W%5C%vGaN9EPUU#fY-O@7Vr?qsV#rCm*Tk_ zE@C^m;J4*{6P<7gxPh|%iKEwk(n$B7;6Dx@kng%C;IldW)=ii5A8dyH#c_W6!m)Gd zgzsR4E))K~RdY)5N#H(So~I)7phwYs&TabxenQ0k0A+tc)4s~8o10x<`}s3ByQQEnrDyU59GUl=*MxE z*L1Hjf*vN8Z^}k*jMGUO5wE0YATHSC)!3KGO~TU~4O0+TJlNzORED@-Kf$~5pc3?a z$C?u~7xIvaE8pLpbB;z@=j@+c0erD9HtTe=27_b=^LGpW!91{Dsrxc;<*M?ic2-@{ z98r^Mfk)u=E>3%$4gc~?4YO$C4jOqnB$*nHaWyH*W=3)r@WH^E$d@XJ`}PMfF)JYC zZkN>RTaC~QZBA`Q#Vf*P8XfP9^*G?+fx0h<=L0Pkdp$IR-unDQ-y9kEtrpg<@@>%R z7JAM(xDL-YYgWBo)z03@@*>}^HN>*@@AZ$ zZHiY1;aBl}Xm>^Z7TqOetwm`Ctp+-e z{n6(l!jacy`;1HGCv;qKuOAWMr&3Bcx#Vx4UU0?r(6IIJOHTENm14Z7eTaNiw-DDg zapS%?;FQNCGL?r+zzazD1*{N-?C!?iU$rNYZ$-gr*EPj{F6i-2M^|ezh}x^j#~-%?=gWKfvwA0k9G;zKun+U^ z{-2lgcfgP5l8!c50bFwMX0UNTH=b`4Sv6_(e8iR7-E(IkA71M5t~D3I51fpRIWSm` z`=Na2@leEdcT)zf3D&XNSp^=^=P}Rh{%HHM5Op6KxN-(_P-mUbE`%F+Kuh;#`h8W@ ztJ2t_v*-Zkxzde==P(Xq^uDfo58VCR_v=Z5&)7cA9ctAp(V8dOc&Ie|16W(uCQFtjCrH4t+T<#pGn+xeO3!F z=;VCEr`C$S;B!2MC&d*b|7ZreckcxJgC%b@w*e;zYg_*28uW+De7`>*Hv>G1Z`GtO z@bS^TFRzZ7hkC!gCL5+sR| zVn<|Pk^{f`wM*u_g;~h+Z+~kT0sq^~h{@l9@pN7$eNkv0bTSji zM$1DtwBO*&aY+sEaM@?+#};sr10nMy?h!oiYxlTtDcry5k(Up|_#rQtDFvHn%gZCDg#vEDwA?dk&Kv?cY0HbQg`t zB{0UNZUQf8lr8xKes4xjc+D5AZ`Lwlrr{6qJv-{f_AlWf@eVU-${|=cmc*7#17Chy zzph}%Uf^IdVSPW&fcKst$PD>|IBMoO(GWM}eW-g&;o+3TR`KeFThM#0IoST>B>b4A zJxSY-Vx2kdCVy=k=8J>Z@0kBZyfrQUxxkt6sJn0R`+_7F@Xdi5?&^B1*DKa`mx7

    ^WWPjeTpD^YaO{B8pMP}082qpr|FnB5Y)1%1VG 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®%%>f@Km@K>XdZl(I$c884`h$@kYyn^Cgmq3)K< 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.la b/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.la new file mode 100644 index 00000000..4248f421 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.la @@ -0,0 +1,41 @@ +# libsodium.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libsodium.so' + +# Names of this library. +library_names='libsodium.so' + +# The name of the static archive. +old_library='libsodium.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' -pthread' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libsodium. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-armv8-a/lib' diff --git a/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.so b/example/android/third_party/libsodium/libsodium-android-armv8-a/lib/libsodium.so new file mode 100644 index 0000000000000000000000000000000000000000..b5fe50346c6feed9aca0220e0a6e07935a47ca85 GIT binary patch literal 283928 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

    Xw`Ok#ij`D`w0N}(Q&-@_F&mf7z`H(&d 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 kc4g(my?;vTf6_#pTfUb3Z=AIF@BB+rpV8-$;Y +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_chacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 00000000..5d671df1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 00000000..6643b0cb --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth.h new file mode 100644 index 00000000..540aee0e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha256.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 00000000..3da864c7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 00000000..d992cb81 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512256.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 00000000..3fb52638 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box.h new file mode 100644 index 00000000..e060dd29 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 00000000..26a3d31e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 00000000..e733f499 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ed25519.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ed25519.h new file mode 100644 index 00000000..3eae00c4 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hchacha20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 00000000..ece141b0 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hsalsa20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 00000000..4bf7a487 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 00000000..f2820e55 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa20.h new file mode 100644 index 00000000..bd79fd9f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 00000000..05957591 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa208.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa208.h new file mode 100644 index 00000000..d2f216af --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash.h new file mode 100644 index 00000000..d897e5d2 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash_blake2b.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 00000000..fee9d8ad --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,118 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash.h new file mode 100644 index 00000000..8752f9ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha256.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha256.h new file mode 100644 index 00000000..b18217e1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha512.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha512.h new file mode 100644 index 00000000..8efa7193 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf.h new file mode 100644 index 00000000..ac2fc618 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf_blake2b.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 00000000..3ae47dd3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kx.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kx.h new file mode 100644 index 00000000..347132c3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth.h new file mode 100644 index 00000000..7cd7b070 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth_poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 00000000..f3e34d86 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash.h new file mode 100644 index 00000000..585a993e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char str[crypto_pwhash_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char str[crypto_pwhash_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2i.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 00000000..88ff6221 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char str[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char str[crypto_pwhash_argon2i_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2id.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 00000000..7183abd1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char str[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char str[crypto_pwhash_argon2id_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 00000000..5c0bf7d3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult.h new file mode 100644 index 00000000..1c685853 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_curve25519.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 00000000..60e9d0c5 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ed25519.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 00000000..2dfa4d70 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 00000000..40a45cce --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox.h new file mode 100644 index 00000000..1d3709db --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 00000000..6ec674e3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 00000000..be0874cb --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretstream_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 00000000..b22e4e93 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash.h new file mode 100644 index 00000000..fecaa88b --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash_siphash24.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 00000000..1e6f72a6 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign.h new file mode 100644 index 00000000..f5fafb12 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_ed25519.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 00000000..0fdac42d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_edwards25519sha512batch.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 00000000..eed158aa --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream.h new file mode 100644 index 00000000..88dab5f6 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_chacha20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 00000000..40889755 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 00000000..45b3b3e3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 00000000..6c5d303c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa208.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 00000000..d574f304 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xchacha20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 00000000..c4002db0 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xsalsa20.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 00000000..20034e34 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_16.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_16.h new file mode 100644 index 00000000..7b9c8077 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_32.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_32.h new file mode 100644 index 00000000..9b0f4529 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_64.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_64.h new file mode 100644 index 00000000..c83b7302 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/export.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/export.h new file mode 100644 index 00000000..a0074fc9 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes.h new file mode 100644 index 00000000..a03cc657 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_internal_random.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_internal_random.h new file mode 100644 index 00000000..2b2b7d6e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_sysrandom.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_sysrandom.h new file mode 100644 index 00000000..9e27b674 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/runtime.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/runtime.h new file mode 100644 index 00000000..7f15d58e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/runtime.h @@ -0,0 +1,52 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/utils.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/utils.h new file mode 100644 index 00000000..ac801512 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be prefered to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/version.h b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/version.h new file mode 100644 index 00000000..201a290e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/include/sodium/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.18" + +#define SODIUM_LIBRARY_VERSION_MAJOR 10 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.a b/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.a new file mode 100644 index 0000000000000000000000000000000000000000..8d5be2e7df7c943785154b88f93fd23b47d11ba4 GIT binary patch literal 567114 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

    }Ldg3TA@n%{ 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‚>7-CpI7`| zwmaK;K{xn6)}gOGVkYQ3No>jelcGVA4<0T&6ZHG}b! zF;1Y?_S_yZ^P=3gfQTWF^H*YR`5%f0n)t7HL-E-oL_+wtwiejYcvHBrsX4wXQn;$+ z55>0zajyxPjbU?TB(bs_Glt(>8cFgk{KU#ut`nG8uYW#y?X&03C6MTym8iKa0GCEo?&_~F*^ds`WcTYeXT@`vKj%|+5v8;Wm5p+S?C0ifRliarZ; zO)1cafwo1eu<6yXq4;z2HWUv|t;R!>9}2Dt;NMyFEY%n zF=QqHmhnR|Q5$QZ4b&Paz`cT*g4mZ10=Dwu{`gS%(n0Q-UD_If6r2>e^+O>Z4Y)q? zN%0fWTTgN-byTLZX7YRVO9wnwj!8^QN-lgdJJA_uy z^%C4TL4kF}6%j5ZBfGa#UknOoaN^*L^CCV>Gmn7u#SguG>cqUN>Eb)5sg0C?opnEw z#K?fsDx)6HCySw4R5a)J%jP_K;rUo6yUt8*J;Y8R`je0@cc|&yn2(|GL-y{0E%_ev zMDnU%qJBp(x$x}3dx417u#gWpS@0b4UxZrT`Lx7&(qKEE`Eceq9?)cXsNgdsQp9gT zOdUV?2{7wW0p=%gUavXtBByoy;9s1aY?AK*C&sU(=y1;`{~F<`;|E)TSzG^0QAjVJ z5a~akyul&$qf)BKt2lljb@+kgemZ$Ixvk>|mr8ErNtMX+$$tQ+rNj9MPaQvad3Lz<}KL*C*2bgP7q-aGb>*TeX_umjIiu{{+KphvMjxj=pn1AqWJ;d4*HHrfz z)jzwmU5xk_qwUp);-3n~>oFV-T!?!`2!{%)U&IhueQ-l@|F1COKV>ZZ#loMW3!dCi z{EKHc6#ooe@|hoF=v;v32S7Ux{FlJHLe)5|6|O$W;S?|8$#%0DZOPtZ&`x)NglTa* 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 z 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

    gLUs6v#1!{~=CdF=rWQTUl1I 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 y>IUzFSQd5bf*jfNmz7n8R;YhJBtuVKy;k3 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

    NSp%kj?1EW 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 BhT;GK literal 0 HcmV?d00001 diff --git a/example/android/third_party/secp256k1/armv7/libsecp256k1.so b/example/android/third_party/secp256k1/armv7/libsecp256k1.so new file mode 100644 index 0000000000000000000000000000000000000000..b5d939abd19d5951399ff0039fa6a8aaf52e432d GIT binary patch literal 136228 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%0D9RAIr7x5 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 ZUy%Hzx8`dj4zV*|iEd}9L8 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

    l}VVu8XnF*Iu& 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

    vH!zj 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

    9gFw|6=%V%Kfya$d4FEl zWb0c$fw(N>*EPA4kIf62^2R*cJ|#9B!o1d>vaG^1A1K_sDgesn$XlK!XB_zPxK z-NH9AJdV2fb5OL)(*mSE$e?jZa(6ap!fxohm4|RAd zq4Gl=O7_5q{62^0yMT;!YJLTv7ZR*9maHlK2bF5hN}aJh3j@_PvM0c77R?&subrG_ zndOrpcuW}l3nXm?eoi6Rz9>1ljpa!~!i&(v^feG=(gPo<5|cbG0XHqDiKjJe#Y7GA zFOiMB494HxaL_Yb#IZggtHs}=etk`EVhZx?^Bmk4_oV8k{E}zflOwN2hkUDsz9Tfa z*cSIBJ7~c!s>`Vs>?M7Qs^Of3+V|N{Ay?(e-Vv88o%{!(E1A6rCvbdzU;rs%M^(}tVaC)PBSX?TsSzPiW&r3*i zv4#UZXgfdTg5`I(&gv|^8Gk}K%ap;>Sq2aPq|%gpe#Kn`G>&@6)*1&DY>13~YH>DZ@XZhaR=ZmOl!W(Qd9M z|BeP312(>67>}U>_|gJq%eaZ`7O6Y&nwjecaTD3wQkNkr-E87YMqBQ})W*Irk-Y%l z74cLxLhSmfH{l925Q(?LPjS~Vr|#`{<4Zxby@6dwnmYpT&EqCTc~-)58uIfj29b8} z1(9~kS3cI@H8>}#xX196aj8@gM9pg95$g zoSJe61$xbSX$;cYU(ri08kLwq5NC7HD+<_jYjB{Gq)I1I(X4SeacrJ7RL!uf5tkWv zh{UB6y@q;7CmN1Ubfi`%dLK#Bi3$UqNY3!xkh4&8s}vpSJsctDn2RX(DNeOdF+Zd+ z5XLq4VEif$)zP)pRG#6Z(2NGv_?>}sVHP(-ze-u1dKLw+i7Bh)>^4N-*aHWotY-VM zVIZFkOj(_?3+FEvon$W))rVldLP`85VR-pX+0e?}1;_ph&3zKYoCr0o9)8ckWR#f1 zq?^7LP~5X&kWB-lPX}f{gx$lGub8C_`3)zcpoH=;$^|1xhmsn7t|A|;tfkhYWd@Ww zj^?GjfLHjGF(c6`qx0Rcwwhu}l8K_JoN_fKH8pvhnv!fTlSfnY4pz%K6TdFbQGK39 z9&xX!5~bU}7Q7#bdrhXw?PBp8jPu?MQt38vTmL{lvZ`*=N*Ziq4h8R$ZkM@qPYwMj zXb`f#-qgsgf}XO)%sV3}Rp8!$lr1dR7&s1N&Vgk_v$!ixt2IXYUu!o`wlsZ=y21Di z=TB}h#>hQN>qUsm4aOK#ZZP<@GjYQhaYNSiI9|H{Sn2**cQ(eJ49@Ngp3SpLa^(1g{wB88SE++znx+Fu7_l_y%)cA)9}xQ zVEkLxnK4*r?DQHmV9E}ldu=nr_=sd^3#=HE9M3R}<0SJ?>W?5z`6ZwfWHQl&*I&0J zepfoS$1whe#Q_oxTVvp))|iZOe$3))=*b(EC;MjFp1e_cG70hh=+{V>TeXuoRy=p3 z^4t`pi|1}qo|}J#?Ku?}&ppw`_S~&-&(|37HJ*D8N#dT{0`AGCd#X_{YcgHq7uRI7 zRTn8vK^7k)i&zLoTgq>v#C>$-RPGa)?@C_9oGc3)Cf z!|oWV(T5wrQYu5ND`{=yx~cC}`({#h%21Tdb~3r36H|B9jLO|IDhF1g0*l1MkI=)@ zm4^%3+8&;+Je-1fH9b6CX6DxC(Yhll&LNsL66rG6&XD7?<{>V9^G@-27xBL0;_aMv zxQ(Pg?t-f>=G)%RpRncckWx6q%mP8(Ty901&tD9gNhx2|=}hyP4vuc+D-ind*Mt(-iO%5;o=6 zBW!vH>8G;U>Q2&w3u!xx^fS_siN|B)-VeRO*Xk5E_*zaeA0iukEj^$^1(Fl8CxtA6%QQ@TSiKHtfmP}U+fAUAZxiZ1heNFJ63 zbN}iss2R?_VLf76(q~@oU|+i-c)sirIzrzLBrQhL&$W{F2a?K=R~K4SUI-Pe!Ysdv%pUV?*-1~snB&TN!i-fWkMG^OUq&3Eah&)f>3j=(f%Hd;_fv(5z9R{9~5Dh#fUBWT3tlSy< z$<4_A=0o#$EZ)Nain$0g=0{!xI=A}8&uN0I5Z>AzF|B{ zcb;~Y&x5Fp9tBgMu^R`Y=I~?OS2UU*^3BdtoC^$N`F=?qq+I?XJ5I5m!sa)Y{0{1fQM`ciq`e-!HhtcfhbJ(j9 zs^aXxxc^Gb%sAD`SeZQ)j0f_>H6#(E$7m3L!Z2=%=14BbjY5M?slR=vu6hkRah^#1 z5K);cI&rSRj=p6kzXs7@04FCzFB;sCSraw;gr*)cKf~QXFm-#{|NSC%Kt>_jmyK_>`#%_Ba8S_kPWf^K&zo1|z|NQHFs6F7R-J6C>doLCw(T5S z4Lq=Xgf};-k?>dXw`pd z)j3*qkyd>|tCnlk7qsdot-4*Sz8j{}ll#I{dgrTJYM_^#w$++mLffCU>K|Iw`E6+5 z3FI52Rg<-96Rp}xtLA9c&RVsPRvn^Mi?!-#tvXSw-lkRW)T;Ms)dgDhF|GQvR$Z-C z*K5_+v}&bReP6475~i~EeHo^*NBvk!4UFU8Y_;|{HcqJ?Ra=eHstH;(O{=!hs%^Du zN3GgZs}9tvUadM(t6rm3Z`P`JXw`eP>O8HwSgSs%Raa=$7q#kUt@@@`-K|ykY1Kno z^=qyAomTxtt6tKo)@fbui`A+Pw5ms|w$`e7TD7ZIy;7?V)2e>0I##P*uT>{&)tOrL zeyzGtt3Iw(pVg|*Yt@Zfb(>b*p;bTBst2^{u`rdh+?gntyOOfQ(4-yFqNgsjOM6FqJjS(W;%bY9FmSBur&#qry~{ zHbJZ2qE)AbsmynFn96(~(yB|e>N8q(jaJDocAytG=gI ztF-E2t@=%v$~s&KQ(1?ASvuK`!DUFzk(NL2_{)?f^mDPb2ScB!%x|xs2q_z1SQMk}(Te zw7_ze`vQ)7kV)N8@Z*6b?g?;5LRkR?=Br?iO5mR$fwqa}&w;$j#EdtPmc_KqkPb7A z|4PV7rVYBYKB6ZPH4lI|Kf#C6L5z&3UD(XZV^ScsW?E~I4on-gn8$QO)JuIL$Y_v^ zrZ^;thYW{uBQ1?V8)-TN@fkE-2{MFO-5Yo>~>kIN1h$N*jDGN&7gJ4F+9+)?y z=7-i0ntK*V28bj{C2xR|C+35yS;@x`?@d#>cNk5-LoQ;v2FgffdXc78h~GfdKS1uF z>E8j<<4|UcX+|2l0j%){^{8eU%{?H`FmX_P0;25^-A0{`-UX7;0f$Ii`a}7Imd2n= znodIeYnmX zZ6JO=LXaeE8Z+Fvh#f(I_65wPqmM%T41#+uel8$Ll6dJ>#2klcKIk+nxeW38h`V=y zGzQ7|3%Q8ti%_mmru@{C`yk?-Y5HG~el$(k1J5EW_h~3TWtvLU1n{eA+6_OqAY`6$&%n>)2pN3?rsEM?fdJEiG+hY33Bmm;e%?gL7#A=tN9+Rx zm|joQ_rVV%xR2uJBohYBr~VVDc^ISsKlKnY9zzx}NOwCBYlHyP3Yrc9Z;jv{gP#se z7{ou3a8CyHQhy3RqY*N8Ad3iQF$b|55nx(H)Aisp5Zs6GGZ!J_Gnh&bcn7gZ5ny_n zrr(1{wH%70NftG?k{;BK|W? z*Ms~;(^fE*=H3aVE&_7Rq3Ju|4H4XD@RPyNK9K7H#PSeeT1eAN;Jp#tEx*9z2$C@h zrs9D(C?l2W^)&5__zg6@2ILN!-WJGpD3saCbQVpgAznt)3Xo@L`Up%TQL6hvDC?Bz zGMc`E_%@mz1KCB>Re@Z0L-|CRZlvis#J{F#=cAY_Y5Fcq#RE<#e<;&EG#!d~6wKYX zgCv7w?1QQF@3BytL4kGwnunE|2Q8Q8n?SnLoJmsOm@8@824oRUuLzhXL0PU$doru|?V%er}?>`V9qUI@eWOI0r`lge+Mej3Ca;= zT1nGch@YY9dmtBRTK7Y>CEooQ6bC$k2A!tq5ya~wo-r5}(xM-sT%j!DQ()n$#>9!Z zy9Y==nqC*ktN|3CnBs3SfG;8e`*P&gRdzM)MLDf1p{6w89qjZ}lyRG*^#eGLn-amf zBeV5&h;x%6;`|r#uqm;+CGThvUy4HzKhcukW<#8Jw1}T>nT7i+JB~Zt#jzjY<}zlI zqXM7YL%b@wE1VcJ+3}K!Z>+PA=~EnARlKsvLB^*#b|Rj&)Su89^6}{L z3u=7`m5Z6>u-chdL-BkCGd|yW{sNgnvJ_-42zKM;@CgmO@isd7PzF+&vKGX>32oa# zQVqiADt9^#;-i#%EXZM!T_-WkgS6$|I~Lr;K*4AE?|1nYLo(za_VU1+`Alf;;NG{5 z&d`7RtL@XM_}j2pfgQjxDUPUik*lDoo{vGS?AK?>fEO-j{<87>?{vm7pMT-10)?Hw_6K4szEsou%NLBO^5d1B| zU&y0?UTo@!`hV2D34B%6)%SmH1_q6nFd9J3MG1liNWv6A5D2rN0V6mPLJ}YfNyxzD zgo28S6)aV(R#K&EQE8mVR#d7uV;$<)MvF?Vt#L+ic)x4yz3 z_HVDX_PozN=bp3Aq3u$eHAi?zw^H)vo<<^h5<<_iiRAl5 z`b&g~;_mjDS%0&ev*jaPNMz=52)a4j90c8*Z3%*YHEa!n?$WjmL3e3;9YJ?#J7~Av zrEM63?$UM^!kah@M&C?13MoMJ4+q5#q?zO!-m&wDwjauFNZD))zrC9lo*J}eAO0wL zkg|{G8fz1_V6e9x=kM)SX6XNPWc!&B;wxNcq?Z zo4W0_I!P&?Y7%=R=?GIY7^0fsp@wem+7Dr%eCI3&ME}O4nQb>@@Rh8@@3HIW=aw)z zmrMJ7ZazO3F&}^%{h@8jISAU6=OAcPUWuShDGx7bQ{Ic9P5Cl{HsuEh+LS4KY*Wf_ z`P!7@5VR>Z`6#p036lJmnmpewTQrf1KM5t>=1+b+*W}Me(ByxHpvnIlL6g4+L6d(9 zL6d(IL6hH$utOZm&%v5}KLnG!?A~?-bNU+EIQq4IX00LB?ccVljrUDCITzH5)?U@( zdvo@)ZhXUCcSh?!{0Z)BH8Ge(t4&e|_D0R{J|jC&HUyk3ZP6xay2R;bfc(|10F!mc zGW{CdLZeeFIyQ}FyOW&ySS#^u*={>&Lw16X)X>K+qjPj@CPft|v11TSJ|!P%4Bsh| z&vr@j9leGm`_XBUysZg!f5wy0EfC%ICQX|sG}T`)P~KI|Ud5EqB{y2FM)Ycf<-srpRV@>`{JN*lY|1Ic z(7#cdHxIWTW;*m5n`fVmU!k`u9pCG2EuYX8`gue1?kJyb*B9@V z{(GYKs!m2bjX7SI534%)+IRw0M^|;WqpPWr zAN~?S_BF^7|5eyA)Gi z-d{VWTQ)JpK8CgZk6zr?q$syGwH+I!Us86P;u#6PU5fJ)SXagx%O<9{)_GpnK|Qar zDc<1tdklZO->z`6_tO`3GdhTbx-&eXpqtKBq)cT%>q zix;i4mseAyz|CA6Kxn0^g;uV_By)~TES#{H_EwYUH1m$Wgx=${)c+)&xuEnC?$(wAW{y^l*JzP+i;9XcZUoWTBAJa2;6RiuU zuMu?NbihY;;dCg1E}U`@bm3HhpbIB?R7e+2bqKm}x(Z>(L>5lJLC}ShJcwf!PO?#Q zBWWHlX$EYRET0XQeUe#(ZV%%7BX1}3vOhAfG6lL|3Usg553o$ZQuamGC_Ukd3;%Sh zEt-m|bdY-6jXG-B?+?;#elS{+HUp#i7P>G(q)66xd~aEoERmVIUKxJxf!u|-ju)k$ zFv4R=yd3?Mk#D#OSvTyzE+RYj57j+HuG1|?f@IlvWMXWn`7%MI=o#*=q&B!$`kEp` zX%fQXPp*z5`U+ozdxdXLB*(v(vBK!8GRMeRAG>Mcck5z#kk{(%BqvDDIEUC zWI7c((v&g-Fl(?3`LZ4N9hLRw7B+>)(}4@+MI-xdiiL;$2H(j?@PA4cbnX{ubjz~u z;%3P&Zo%Yc9Ic@4B1P{?!#t)9)9>Rk_Ep=*BE!(?cN5`Kso2NNtG1^S)`oga8>(MN z!l#>fX{dg8Qj= zXJQ!49x^sCn=JfMbDv#BSYQ0zq2Z}*sDZAOLk3UkQ})fxqlVkMhlu@vMfh&@5Er$R zsE*_Os4*_;X`*^3L>)&|dr9FL_eQqf1ldZ$hYI~t_^En_eh)QmXTxdj__5Kp|CQ&#F zQg>@qx`{F`9RG{BVTD_2x4kZmhx`lOUyJ6882lTV7OzU*be&K?=^<8y~@+Aj3j?GfFa;oyk815LO|Z}oM^(D#ESJ}Hxk4&BZB z!^_B?>^jk*hi1S3&0E==h=T2gFH=8?@0B5~I$V~6||XD=f3lzS1; z5tJ6I=pydl>9^K{{x{AEg4^L2Ns2M&O?M5NDjR)IrE!@(f(}PT`c9QDbR&dRZihjU z_WFkKyAZ5yf(}C??K9VrS$Q2e^K}GyK{(J?*`FB2U3<|PMlTsy5CmI@ij70~9m26c zx+9{mxSs?suedWskpn3!?Jm_u3-fN{jNtHf{n^gk@ZOR})+R3}uuJWE>w^T=oz1>h zmL-OG)&$H-L+VMA+OWs)dsuxi z?IpU$+`*3mmNkndVdb^ltF4D+gyjJUscrEUU$+Ih2Qn0+WoGt`mg(+cx>hNZ8^!rC zi7l6fO8yaXF&NSZxzi!qf$YokhnNk+4qi2u-|uMQNYR9@%w*?gTru7Zj|0z@(UI{a zL0SDAc&_-D4{b!w?IA%K3%pvpE2x*?dByl3cxz;Z1Xsx$ucLNjyGnxR-$`qZ`hXS6 zf(`^Pl(WmI(cBG?)1(b9CpeZF=)emkwx`^T*hnX;B5>d}a(kC4Pws8>mp8~I=C}CN z`x_diyK!mUD7w$X5+`>i+F%yH!_o7#MkYowMM;7KFO{!k+#1>Z9%SrjQvWByp(%U$ zKj=A?94|pLNi=_P(3oPv{Zl+Lx+N)fjC^y@wx>+}+G*H0?C^7_?yguvq_P>3E^&=O z+GFnGOFWb+Qk0ZIs~nZle2=N(PDkw_W23U}wfod%%ZvA;P9S(U^G7EWTtQIxxHG|< z2zUv-g1Ymb38vrAu#<#Lu#lkc>1RA&Pf*S? z?5-fWdWfKY?}dH1sDepN!y@`6lSt7;G*7o$X~T@al|{7gbgR|3v@^KPDP6T&t@Itb z(suJyjs{1KCsw!Ash7<=M!mxRDZ1HCopuM=0qDW}Nbo3$b-Sob>}N#(11|Gh%ycWD zaWLUlK&yvGf|Et}lGNCZ#B`reBR_`F8zJ*UgnOiuopXeCj9I)N& zXY+|JTnO(l3zJXWZcXXBu4p!M^Z~TBWH$9PH6Nj?hEG-2?H&5EZozwy`UR)^!%)^m zg3hO3k^T`9^>w7XP9l4RU{Ya;#=adRv1BI;{_jIqj1(Ounf%UWa(%L#$OsQZi%f1z z)}1Q8i^ykh2yfC87xA*1;zX1_gz=X8y*u%&kJK_cQ-5$Lp5}-a>PJ(kT=J;}i6luA zWS{5?8E9AwHgc?88YFW^e?h!pvQpYep2=L0nwn(xxR~yAAz~|?uDU5Eis}ne+c2oK zZU)M^W-a!q?UTAQPMhs!3cpj2ppR)NQ0($JlMJM#|{RlM5C@=gBJ3h{5nvQ#M;SNSOwHrNb?qs*%md$i> zN#j`bQoD0fNZt_JEGrNdWCfDB2}@mj+=d`)58V$$j0ns2I;yIxWwYr~^+cA;l2i|p znod%(>5(ew)*L#L#au^nOh$6Cc*@-@H8aPaz2}5y?>Uc2#wS;!)JxCCOQkAeS{40n z#J>*om{vu9%fk*Opx} zocbgk7&~YRzqHR`qRd6meKB)VshshI;`_Kf03-WiuERzAr-nkN6*(2hmcoYnVy+k3 zoQ1cCXJNB7<{skQrZ0u$t+!MrTVvkqvc}e!oG3HeLif|5&P|L(FtW-GHZMaOEx$A@ zM08b43~6{k`X`4e&Y#mI^ta{BYsoFj(8bdUtq;xlS-yF zC6eZxF@-$yX9<6TagDTU*J09|BYA&PSx$I)uc;`*EtuSZ;(ek}v_V>SpzGvzm%xFp zlYe14`9SUDbo#x4ctPJz;rSQIl%1oUUM?+k4CHDsdna|Lr=daWJ^L%d+7I%=evm!Q z&e%g}uB_wT7?E$AjV9^%F{E$d}TLbNty z=)|WR4bC9L!ML}npRUK6%9l~n^;q51O55RB9bwuI$4Wcoe=o{omPP3)h5FxLYw80qz-&2Jzva2q4LjqpIyCkQ=%g}<-K^rg7%I!+(fh;051q_J;A z(o5r0Phf$CPIPYyGf88l#SitmG3Y9EdWxR{@$*2^X5AY!qI-jmmSssknd~}6BDqwt z7vzohf}CeJlI^l&Z@4UxZ{>Pd%`T_C5fy`elP?h&5bu%l|)HT#*|@~+Eq!W&oT|!RY{K0Btjj@ zoG7kkT~c7x!=Ex_>b%de((yHCXct6g45yv>Q^KEMTu+8sSKWToPMy=ksdKuSI@hDv zi*Xn!dZ8=TGABOz%t>)heDs;AbB>!j_n4`3j+;7jE|aOV*iD^g1wYq}z2WpX9eeZ4 z*jqqY$6kqsb$PLNrX6Z!bmT_YK{e`^MCo`ccjKvl{exURLR0TSYK2an>6ntgH}V59Pm&Xg z&y71pnYnQop5v>e47}>x*b6qC8w-V&xpBIq?c7*Rgqs^*$NRz37nmDwaM=w8e)bUe z3PkNfp8n8zr#-hmkQ$RVcR^x~*p-xNgvQ8G2-@jNm{l_I*7X#9ZZ64gbhqzbKDa|v zCy6>kCo((BnH`Wv%XGSn&rFhaHXPoVlSy(-0$Xn<$zS+vI7$9G z?$QlTnIa!lR_13jb-vEjDU;-}ltky!gh}#ASSHC&_!CTyaVsMSAyRZ;H;TN@j4=kZ zUKOlMD(uPy5}R*tkO^*`jwt=LVlZ}$+9363N$m%Jdl=W6a!+LV9EN=~nIGZwXU*h@ z+}SgiXUP%y#WNUQEgF}&3%E=4AynPN7*aRdyjT=2O_CdpLGGmzc*0)PJR#nK;alK3 z^(GCukh3f0<{aK0q z?c-WT;bj&6JkepEjk=DgUnN9k6BVVXsn@%CqQ5-g_#wrjI|iv-4>1rMBAewY$DZ<( z<7Y(C{p3kURv8TuZcLho9d&}4OgB&cbyEA-{bW%mn70tj=Lv|){1>741aqq>GrvTeL)6 zFWJQnWwZBO8r(gXrts&6j?`*D%)FtiS7E<|A0zH=B}>als>OAfi)Z9ExH~U$L$!FW z9l2DTEIk@@F>xKNE^eOFXm{>g3M=FG?F811+fNeMWp*?NWQ+kTo?QaEwvmD;ztiwL z?ZDlve0X8lAa`A66wob#araC2f54nsWt4S#Kn8$*i@eizxn-KKw^|=mQE$Q;@y}xS zdu8<-DMr-$un#G#_iv4^eiy}vde7I0dNV0A(>K$YwHnQaIq#{qTOLCLk?Vd>~ zl1VdSC#A?ZH@ABxrAR@{EuP8dc8}irF>)~c6Y+A5olg)#FV~o{o}0oz$>3;ksH0q!gX0@2nPm&omlb|dXGx|zUzxJ`R&MZALvQuMqMC-~!W7fHt z{;9D`5@K#3hLdNIF~Hsg?Rgs690fa2*dg4rm|Y5^*WQ&z$k@CB!CW|}pebiEbLMh8 z^dFkY>V@;2a6#^AQrBtbSN@DNsUg!SX}SW}Mlqt+N}BwbX&NwX2x5>dg-srTm?AB8 z%yyjCQ<0IPTcib!k?4%$SDIT_8OMnKj7|h!>MpTz4=>|2%CF9k5$74dB&a>)7)fAM zBg)!KMoANly8ayUEImboT9J^?WX9Fr;~hQwQl3YMNtc)#yr(-f<~d^U5@c+a z82508PCdJcI#!}?Y9AXx0d(?7p-ndH?4!?igwxMV@)@6g!e={n__TetqX~{@JBHz3 zZ~4ta5YxnGJMJ)S{Min9{hwz$PNnjKaTm+vHCx)tPGGb3(p4Vh$e8_g2~(9k!(m0a zS)MUlFKFe-4a@5IQ5X3)ino)cTJvuf@f2Cu>e)KuRJo;||65^ClNDwD?IND8gHg7< zx1wzHY{lP+!WpWoqjiqtGRVCPI=aNJl9z;K}Mq)Cp|8( zy{R!Zw&WszoMgM0J5yt85@JTXn7dMA*CfOg5~F9tyWKdEx%zR^94TquD+_FXuuG<# za?Kmr97T#8GOrK1scMGi5-t*J*EVP}wMh15}2CuuT*j>#@(GfXA7bLCo_-0B@3 zjjAL{XWF^4sXW;?QF5~RB~c%XRhccL-Y*|5JH9tbfhrD)O{c1EBb>Qyjos_Lr#x}_ z#40Xu#B!0Ox5qvCDVOf|at7TdQA_mlJANm$F=cc7PH4Y#S?Qr;F5!2zx)Ulp-j||7 zcMmf3^|xD7-H!JZ&g^(EzqqYN>F5Ybb&?pLjnZG-RMMZ^?x6PdC%0!2;y<~G)ihko zPj0Gf?uYd(raC`4kH?-R*=3sjgr1$Kk2FpxGV?{T zip=T(!=Ehv*gL;OXGrup@rRs&dbK8bPl-|RXH~2W-2{*KKFy$M0h+3Wis-yxS%}7H$1E>f{yRTs6cO zzYBRTbSUI;@@>iCKMLI~+5TYPEjg^qZporBLhGixT9~>yI615vD{I|k7+&kf>TBIt zUhBs4S~r&0y0N_0jpem&EU$HAd954EYu#90>&Eh0H+lq+Ivvr^PxS8TZjSH}1oV^6d#LP6)-xp*SrR3q!Fe6i*JtGeU7*C`wz| zB;5e*V(HcB^z@<{zyDiP8zIkg+T&pbUNTfNT`^*;CX zjBNEjkLzh#Um88lgORP?mx+2`d3r{+dSAu$)W_Fex<)BJts<ycAlP*tzNsho|d=0(bF;++3K~A>uKD9ozt_9#nUsg)$5X|*VWTAveoOFsMpQYGqTm|mZ*2Ir)OlVcW|O!hNov_ ztCx|e*WJ@IveoMz*VFpzVf3_)jBNFK#Pu}p5YL~Ht==JtdWU*?Mz(r~Ch8sL=^5GT z9hRt<>FF8S>SZSC#XLPDTfJDKUN2A2$X2gcqTb=2o{_EI;c-2!zurbq>&VDfuXkKe zh<&VjBNG##r3qjM;kpY zlaa07(Q!SE%l7;k+3IB{>h<^ZjBNG#C+ZFG^o(rv1|;eY^z@8u^#;cEv>drcPxESI ztCt(s)3`j(pOLLzUZUP0PtV9!Z&0G%U{BA;R&Q`zPxCj_%b$_0-q5(7=5Lti&&XD9 zSfXCOr)OlVmmk;DbVqpU8rkZNNYoqU=^5GTjf(4O{ziJ~8rkZNw0gmj+xN2FIg7?f z(etc3yPXj^Dl$XvkRi!W4*mX=7BTyB66Vq+`=Wy)!MEJW>Q=04kL)dkb)i{i!g~no zV$+8AMI(VOIBobJ9V5Z_Vn5gDAJ&P5ZO_o(uL&o6;f4I5+(yDye;eWUUi=4LB0-uL zzNc#>=-}z6bc+O?y!gKm?&`%K!HwDsFaCSNJ-zsG8Ij;HFMewGNYKlR-$J;z7arCl z5*+D;yZ7V=aW6cRaDOjcPB_;KzfO3FgiB2QEI%X?=!%xJ=l-X&s$gNyP50;a~O)>I1kn8afIf^ z$XVm?CO_6>Z+G6Rowp3JO{1%7X_lDWoJ3gdO*rdB?73YVWXFim(kyZI`C@;zv#;^e zHgZ-4wv5uiT&C4HyF#(M5<4wPoh`{iVUrjrnwxshn~}4&x{^Haa#HU+t`ghX&UUG1 zYvinlooz3av=mF7ZG+gJFm8A2TOXnh!PCC=Lme+){nlTOQ<|3EJO=7#;>0auU&&XLF_u2A|LrLrAQfJ#J zwvRj8%RE~nXC02M*6TWFdzrJ{DYmacYu#LK^89z_%Y?J?un+6za#uIULWgy8v8|iw zuwmV-wRO`Z>2%~2rs=FR=?o;Sbz{O=)tH8Lv(Dvluh{<4>8|(6XXLC6*lF8eiIUdM zdS{y+!W!@wB>Nj@dyTVQFSb*$)%w|F@?GbAnQ&Gf z_B;U;WS>EV=6jQ~Zxs8rPX9V%|BUlz!db^+-%;#uarW0)`>a_+g|)fS*713;+KKec zbFHo8U6R&cTw2$gwA!%5(Y%{*)_P3!to*4<>w1^hX0gvkU+ZbJu|L+?n{d`|uy0RZ z&AhkShjsH7q(wJ z+dGVHCQCOhrwM2Mh^n*gUv;Jn`Ha#Sd`2ea7J9Np#F8ab;FTX`rs z`=8GCE@xXUwx!PYZqL@pS@W=!TFf4elGeoCt~8etr5$f6QCgaNZE4nu*CyxnKF_O> zvwrDv^b6QIuTQ;Ni&)sak)8JY}Y&8CyebIgf(|2 zoHZ9)={&~v31_=pY#(yAPaE5tds$l(&RT-4tj3M))2<{pLCXoi%p%)uN!H`hFppd2 zR!JidpV~@0G!4^AM$US~<}LdhGNLuT!{u+M*q-e2^GB1vtDG+r&Uzku?IC9oq4s}t zdHkHHaHf0G)8@5F(ra?*J!8`A!G)jZ-Gs9a_|ckw?$Ue4rFRrj zVS3Nn^d`gVgfP~5dck-uBCM@s!darI=2{B#^DmE6$#w!i5Y`3>`U) zNgu=Kp&t2yOp0v&JS`oq^t2Zv(`83#DM%VW=1(7qBl*EI?WIV{blFQ5K= z*+_a8hH0-w(t>39vdi(GLA6Usdn_{jbtK7n+S8HXgeC$~8)?r(f|L{X5Rzy3)1Hf@ zqy+6HqL2a1{h}aursT9FlBanrk*GY~-?~KdlP7seD~bR7npPs!nt!i&p0|$w^OuQv zsXobdwCEa9>!M7Y1-a*-5#1WelRd|xTO}L%Fl=#s)O(94 z+%Bz?FJ7a!iHBhLR-s?9PdXrIH;|uRk+tdNH&o=uD8iC(AGL zj+bBIo%|wn~kze&V9CPN>EGSA4wB9S0UX(L5{ zmmYA1_N{*X87#AVYFM7_ov|uOYSzV;5-Zg}`0Enx{9Q@-bfYcJAzM|*gPv(WGh0z? zA$pEPU!~5oUnE>6;SDC-Ot?bA>rHr4??|v%!dGgzzwG-`LN;ank#@b^#Y*;lIrPVf z?)nnZU0-ysB5qRzpNZbDte!r%Bu_@_V@v1aTAo(QT+Uu-^8C_hd31B{;mjktOF+7P z`FTq02qwNOP+BP&xzS`Svri;APr^58cwj+NBp8EY+O|k~>=l$xfQWsCaH z57+b^4`cJ+?Rb4GIIj|{Y8W?_wll!2%VYuze30o zgG0z%<~E{|xdP5SpJY2Agi((XbqGulOnIHWWj=z&(W3ey!Y~ouLnsj8O9Z(+!H0Tq zJW(7U&wPEB#FZc{6QK@awFp-sT&dbQ&1SyO{0-D?688YY{Sr5&S<-x#;LF1Q1>vtE ze2VZ75mK0FzE;h4-3cB{uroQ%JPILGgi#1bi%^I#41sTLh-M|h6NSG3p;&~C2xp0K z3&JwhTqv4=M1)F&pNp^+VY8@C>Dzv_<5?(?02*R1`5C)2{8DXRd&mc?^)hRim`3}KS;hPbvL`ZH!X+-FTaEWT3ESf_J z%BnK+T!i0=a4W*YB0Pog6hcv%;F@B%$-$ZpU!Y3je*p||W&<~+4 z<0hDLt7slW@CbsLs}Tl@a5ch65$;8pgpl<<$!JTQ08<2m@h&lbnQ*D7#@bODQJwy! z?SdZ?b&gTpBdUYYxLi~xB3vWFIS4n2a3#X;M0HB~Aq4LrC__DSJHnqucp2euB7BeV ziE8GEW_tSwR~2-uBM@ZFXAVU;LWC&@0}+BLb47C@!Q+Hqk1$(=n-EGxcnqNmA?tgx z&iOycJR9a57>qZG@wXhxGIiBFN!f!zMGeXwmU)lON z8D_U=GJ%Tf7Q&y4>iq~mitr4=fimd#ARLUq;1$h%1P2KpJut#XI0(HEjuT-p!fe%y z9g5~mg0;ezBb+b7bqL%hWNJsaMl}mX^D%;V3x5FT2d>eAtcSj~ZTt#R&xt1AZxYqR z(0EH!%Mm^lVL8I*B3zE}BSO}<80*B73&WEtV!U3Ae@nQhhV`2&TldPdtnBruTe9=) z>)U7!|1_PG6{l14v|2$@{5eQSIm?aE9|k9wA1U=mLo4eKibl3io-xspxVfM*vi&7< za{L!hy?B}G=~?*zt_ZtXIU35=ernuaFHxo$d-Y{ywXw4LGP1Rw7PnWM>0bIqwtCa! zdYTSv3Mr4;SXtAtvZiBXYkxxAUTq4!bgZm4R#sm|w)TaI_A@WY6BpYHww=H?p-qIc~4{XUQ1vw^mjgE2}RfTl-Vv_L_gr>+ybKWwo)g z`ZBV$KP_&r>7VYUZ)LTyvidTzwLd-4{tVCF$X4%+xSr;-*vqGtH61H!I!3nk#fkQF zJ$oywy_MD8$ku*tqJ4>HZ)LTyvidTzwJ(X=Ydy{L%4ub_v9kIyvbCR=XkX^pTUqU` ztoBB>_GNK(o;$ku*-++NdP;H7V5tG6Jo zr|DF9=~!9Qv9hLPWNTj$x7T#e^wP1i+E`hA8QI#O8MoK;&+^i@vf5Z#eHq!>pOt98 z*t55?+E`hA8QIz|PPAuv9UsqDRvRm;FC$y~%DBCjzsf7Wk*!`;qTUiu&&ulC%9^H; zt^Ja?z1CBWmrpCJjg{4xk*$4AqJ5obZ)LT&vf3Nj+Seu8*L(IxwtDr6ddoaLD{DGd z)^v<)?UyCmukh@RZ1q-Hyezw^iN=&`azwvi2~WEh=p`TU0T~%|Sc;=1ATQ z{rd-&IJ$dW`pxpDUfz|;%6+8#t3|x^my;0X23Yzn!j8_bJxG>>a{nL^kK2gHwMaQQNPk?5^aOVu z(jV7bV+ZH(@Yan-$$g4St}fG8XSC@T3A83wi@%IKf@->2OfzmKD0h(3SBv?mZwYSX zk|2GJ1hX!|SsR><>V8xtxL){6h40yerQ>$up6>^BMf=!rq7R4T_Q|c0{s@^jX7kLG z2vc)-LrH{MgVLiENcC!k8k;DZ-kQ zSRjjV@vKPjg9vxe=5aI%lX>UKTsewx@TvSK!no6T@=Jtir}Ib`!j$#gRm$8*?#2rJ zGP#?Ez$KUPo2F4R;cr7IQ@&aFSEomUCBpAPI7j*P-tb3~@k@mtfv{2e9O26-$FGH7 zhH$&`lZF2|#d=Wqn-O*>KUesF&Wr>v2_I10x0PQmdOJOM)}u;znlu2BK!>qMank||LG}_phWl- zDsqwX?XuuIQk^S=?~SlV`Izv1sND_14@bCO`F!EWo)HOtD|`{cJ<6Xf`~rfH3BMBI zIpsGA-;>}Q!Vf^$t$efan+Sd?{A~!|DIe?b#7X68;5*Y~^1U{#}B@h5rI!yz=b^!nZA@{|lds zaJuqigdb0^LikFAI_0Z{zkuKc!f!;7=Qx>vgujL0wZcDyutoXTg@2ylox(REJfeJh z4*cf?pBBDN8U0`RF~WBz_^$BT2p=oIT=-)N%G02k6$mLjC&`^&;m;x1kznS{2!|-& zEc}B6`$>@F;0Er!T!0)YIzdjXPiD;TYfr3C%K13sK!RV$Y5K{>I7PC(NY0gV!hA}0 zKN$T2#&bCpr0?Wy>DjLlirtO=y9m4#pY}0-GmnD!8o_8U7wu4Xxk#5GPA5|Dknaci~Rs z2fa6?h*#T{$kno>$kS3^Ev3%?R$@0rG1K4c(tr5{<;hRxH|6weWhLY-cannKw!-H| zbfcp5T)DNBceqmWn0me}^wRSp;-IgvMm#DMvqMpSkFyH$)1MXPA!;iQ5M8-bXMVr5 zY;MR74#i=iI3g5Bh2oe{EC|Jkp*STJr-fo+C>Dj{$)R|9D9(+GBlG1|;PfGycX7Dms2-$gAl1V?tg<$Bznm6&*i1 zQUPZ@G3V9VBKR)DDbo}IySJClP zLS9A3PYrn$;k8laUUFcXT1BTXzfRfqQqk#85A{`a`p1X*DmwiWLVXpTeqpGuqSK!d z>Z|DVXNLMJI{gzveHER4QK+w?(?2QHSJCOu4)s-Z`X`6_DmwjBLVXpT{;8q9icbHu zP+vu-e|o5|qSHSk)K}5z&k6Nabo#}izKTwNZm6%K(=Q42Rdo9ELVXpTerc$$qSG%6 z^;LBG<)OZcPJe!=ucFgm80xF&_==EM(eY=7yo!!LE96yl{GyOo(eaBzUPZ@OhP;Z7 zuL^k;9bX;tDms2i$gAl1nvhq~@wFkZqT}mAUPZ^ta}Rc$s_6KoA+Mt2mxa8F+yR)# z5+wDKuIxz3V}9+2hx_wY2dVOIRWiSk_Bf*5_#T;UWp{O1aP)`;ZTGQEQMp&F?f1xX zD(-Rkm>~ITY*LQm6nmUJ6VrYjyxxFl7qoxQljX4<$IH`3DwCRgoG&<+bNR(!5BL|z z;>0u(xPxCMgYN%q+)FI+vi3%up=3)=H70&oLp0Pd(juHFwXx|f05 z!IQup>yVuf7x%6gf9U~1umNla4*_=!XU#JSECTZR4R>roejU66-uL)vG{CjsW+2b2 zxnm*nEnpk?y~n@D!sR8-^`FtaUFF$DdkDXT#gyD$x&&Mf?gtNoC%{wS1JDdou#bXE zz?I-x;EqYe|KIfE(%oOap78SZ-_4Wr{|3H};;Ee>U_Eu`j$-QY4Uo!{U!B1~@B(nh z3gWH=SA$>v8@EI%rALtIW~xAjKD3F*&Qz)8w8(&C1aRBfIALAcHGCv?x;X^ z{5oWJG)!U)P2q_!Fbs?W1>ks41Wp4bpc*U(tHGsU6Sx61g8RTu@GOvTuhao|i2r_* z>5rfQ90!(y<={eaF=zlcgFC?!;D0hdE+5;-$4>Apcop;{o&P`Q%a!Z@RDJzt>&E3n z+AJOP1OHQfNxq=tj{npC|2BoX&X=tO4?!q6ff3UAKz}e56oN{y9Q*}*07l`@ z9cN&7K6niLzwqbsvA=xgdHMYB=FRz+Pcs}ei?IoIfTw_b%fKC*y!brg+_CQ`c=^1+ z{`|<-2ps=s&(F_JW^Y1Ja7qyT2;4D;W%$IoL2w@U6>x{}yTJ$GTkr!os+dQg!B8*) zoB~S0GH?O-6nq25dww3m?*FDAm;e3cYq*!M|8Aa~|1tBqPr86}FSrY=SQrFn19!MM z`D*TJ;0|B+O7uSkpL=#b7s2iT&>sv26TxI~DsYF3n+xaCx)QlTbk1Zg3O)et@O_9) zT-Pd`$HiOmq9B+D7K3U~1KjZ&Mb3+)6024ql zs0Wt;cRcxDuzAq4ll?@S&SxLyRh;L*I?&|;=QZTl!#@Gsv0HR5q^>}Fa1iJW4hDyU zUf@V@G{^-*z({Z`m;k1LSs;EO|L^+R?D_j_HS5MT?0*Z61nv;73pfP0xWUNBfTh44 zPRGSL{(N*^1Mh+NJ$;``zsPBGeRT!bPhcl_2DroLUh?>(f5sRCJ;?3pdYl%ROE= z(G~7OkN*hy2XMfXJd+RH;d4DbehBhBuo|rOc;S{=?h20=PIQI4+T%sO4creN@pzxx z>G8QwF|NQ2FblZD=jM65$jiWLu-4;!ZllM4kKAb|V;dX}+~IQrJYM7iZ~`duc%Pf= z@gi4)Wnd*(3oZxl*k9bwy?Bu~gPXuskN3I9JznJ3zE6tN5U6?sbCg39k|2iO5s<7OTcAd9dO42}(JGWWH>?chz#aRGd&7$t`91JC_ztAM%RXM9Kgb0W!0})nI18K))`IIn18~Rxj*quI zKPi7^gAC9KNFBMu=U*bu9S@-MFnAK2^(ONmxDb2`z6b8`^)7nDvCIp|V%JiCf4-!x z+|l?q*1q5)@C|TB<0ss&0B-|%MbaG;n(5Qv7Vr>ohvWVL_bg}ve*>R^FMvDt7bkBd z_5g>26Tm589#{a};p>ctp9os&F81`Dj&QXezY6&d@E~{;yaql8?(pNDw{e-DF&BVx z;0}osTZtP0@_@W^SO{hU(X9sV@Z-dn#9aq|0G&Q}T85LC3f}s*Z9HgG@q0_+3s@Z;qDzK=Ye4qrPh&Nc8a0O5Liyl`S8+z3z(R(kP1w;KKzU=z3l z{0_Kde{l~HzXQAhJ_g?cceIRiyy#@_GZ;f@8%zy%&JI*z-{<7LA*+4${E(B$#L z-EFzgJzhB3(d}yx`Oc+EJ9wOIvgQtvW#hDYpvvQglMT^|fb3o-akao55_c>p1fnBx zvY(kdT--%)>p>%Uz>617HX+*vT%5dX?+zFD1l%r<{}EX>_Ua9ek_R5_A>84Xlij`C zA=`Dywp+Deg~tmgTWVDS7q{ArcX7hW{#x#k4YOq9t5?BW9xt41X!Qbcaq{N8J6zm1 zaI*Q7J48pgQE;*YlsiO6Hk!H=Z1i~HWCN*TKx`y#6L5!%6HeZkcZX~dC0jkoOZDQ@ z9m2^rPQL}R-O{^YH*kl0li2d{wLz#Y8E6x^0rH@X zAAbiA0?+3$+V8-Rz#Z}cuj9JQ8y)ueGxA=L#M=#rfIdLp)R+hg!KvT^a5>lrwt%g` z9X=Q16@dXD2e`xMZiT-GJmkgu+z_6$F8~wdiFS1xIEcy51+fl<3-*lVIEpak_VUU;dAGDyvQGdFTvLy?{g=03H^xt40sW| z;eaL zV^3|60Y-o-upDdykAUaF8{h-*F>q-*zs{Fz(kglK)80<{vdQSPUOptvx4`?L8T{4r zEk1mkZ?KE7M`n94089jHz@^|S@BnxkyaiUVzvR!rv*6EQ5BL{I>PZ=aJN&f2CH==q z)0I*3G9Q~W!L{H9@EfoV^uot2o*%LG>+S|@U7d-~Y1kA3v3Uag1x!CA%!kx<0hkVE zf-8ae7>rFm5Zxu^qX+#xout;IGC zn{*&Le*%92?}NQy_FHM3XTIa z!RcT-aEI&Lqp@*)Nqk9NUJFFG349E`25E=$CJk_hjEN7yr{HtY58J^&`j+@Cp!}17 z*lYr~fqTFoz|lv9etaLYUu`#RT^|#lQkUNVu{i;p2Ihf!unV|DY+WA{A2(BPTY>1v zc4F;&)BivZa3OGqjA7Te+*o#fOva?t-7FwBH-dY>!{7ywn-%(zG3ff1jKw6%*#?Nt z3@{%o2Ft)(z#aY=bbU$2qSVy`Ky<$c?fZ~_kOkHPcepVqeMiRNS(LR3h|Z1Re(*SW z4&)pe+WBM9^%)t9Qb%2Y=*|RlKsi_m-UaS(V^8{ujJ+M$>;$5-52W*wP*0ErE(h-L z$DHdUGWMiymH^THEqE9_4qgTMyd3NfH^!t-$QbKMxnvhM(K#I~21~&zup79;A5*Sx z$k>v)c@l_jJKiSl0(ycR@N?h}Hxeh^CBQR&wEUh z#sbk90P?_1p1wauT%VA!@&z_~f$07Y+zp22h3U94B7H!{$Y0Twx)7b?!A$Uyr|*vm z*9T;5xU!4xJK$YVHYiNTjR|RU856F|qH`X&5Pa?F`(wbhxr_x@cF|29OuFDg;0`wi zq)lZExH5~*51`!;)=|J6exG-3DSh9S-M6{ivvYl3+EDtuE3@bvIFt?TKv$3njs))T z`?_mW>GQ4*_Gf#IXYcoUX)Ecou8n03xH=J=F2h(8g4w_wV=K#Qsw&E2ee(wo&&eH@ zpBIdIRaFZXmDg6)*OZnID6LvNu&%0VQR%{xipqhD7A;-ezq+RC%<|H@*x=HkIfKgQ z&&w$-Ey)=+xO{ltp!|~g`SS+n<_s+zlv7exHh6Gu{`{f+g4&wWfwkqO)pWWM2mIqM93xefAWl&#PTR~D~v5LyNpt!i6KZEj$ z>w>sYTs(H>%(15wpE%{z3B^UH6iz5E_L7-jUR+yORa3H{JXqn;3qm@~l1ty@%w=am zd8NxzDUV-ORF(y0o~PQK5^WqkipXr5cx|)zp zyJFFz@&zS}igCVZUP+I(*phu!*&VVb&AXy;3Je6ql9HFQMaj3a-#$ z=PC}YR&lGUbrC;Vg|>Za>q_b>N?phGQlm4GU~L^eHq1O7uHdAZvnCXe^T_hjvf2`> zTwT1lqO!iWxT>bCyyho#G_JU$wpcn-c}-PNRaqWXmy`u`>)f#37F97l$bWW#3>|C- zhzbnViqe3NR8?9mtrsjVS#E?dx3#4;C3U3>i)*V(XrWep#YTI%bRAE-Tu?eMkiqQ5 zCyu4!irV6N^%b;{4DK*l*G>#~&0k4fd6~)D{6!@TYJ-~cf9I2d<@stoii&0E{d*0` zRGG{+ntW?rmqDYq;LNzH$)(KIIwCwv#&&USIh~nUCF#f@d>JUDZ`!|24&*1TK_vUSXmLQWHwk{T*YajxNK!{?UMSEn)0#$z9J6{ z3TjXYt6F9}&DEL3D=R9OdNJgyt|~rDh8FNBYVrx>{FpNPQ`Cl%(e^3tz-#~fU;Nan4@<%>(JR|I9Xbc>o& z&)}zBdrJH1VWo@8X`L|P{rV{@ryN!O>BkMXQaWB;c_7`W*wjkPx^bFuA7-F>NlK-z zD6X!br+-Rn=#k}%$`=PPo|bL?<$f;U7?(?_nlf$W6?wt(L2R%Z7KfIrtg4~Gr1F-P zmz)*UIeY6rnPc5Q7L$mrQ)}f_S!Td#4%Yw?PU`4rKQC5xlp}w>{kSRm; zelmrYRT|F#bBL=r`h5vAw3g^ZDb~!Owz_rJTs_XK@ax8Ah;~|7v0!0qE7yQw4y}dl zIIIA)fy4MPidgd!# zTy6Su{rvefZb@~uH2b{z`9anE`OL1KtNqLsl*ya}!%Vy8YcY$2b9JzixqOi4S0-iF z3{0o3yl72V)Ya0Z>l0R+*w{62ap~f!rGcDVSp?Lcm81Xr9Z^y?%Vnb)CPEB#@1<(z zotlcJGOp@mcF<{_P@tjKx@L|FRjd6PvvuK4k^UKKe@St+{PzhYD#%$mG5^9a@L9;P zwp!`=awqWk+C8iUYO>{w?@y7OxvR{?voa@G>DQ|mO4TR0B8RP31F}Ap%OQH8Sp;zL z^Ka&a{i?ETDy{H4h#4FE)&1#_Zqqs+Sz87r zvWyJVqLvpds+w1_h;=0AJ+uB~90ZmPR{Hst0m6b#*O6vE)D>mPO8Pu4M8D4q76zqnd%ySeldC8f&MkX=i+s{v{#KOFKPKuY+R3x^fv2&|X$$%^@ z$Ste7QVF(BgsxFpJD;@|%jWvZvx4$qey|`|mJ=+?4VL8v%LWC@1_#TA1j~j7%Z3HZ z@`Gi=iIQmIsm*1%Xyl@jJH&Io-{q-Ygob5tT0b2jYwrEHjW1H;Yar)JXZ4o%G{O|! z6+p{tbG-)Gud|=LSa%C%b0yoV2no?%5fXUrD70L$mzO3kvBSKFG2zw_4nk zaW{ANR~4;XP(NBn2@y<1dTHa)yw@8xo;9yj=xT85f#== ziwJBI8;0}bPu(hEE%Fno#aD%`y|=m%v%gU$3!PR&-mQzOS~!)9PSbR(Dascl%roIC z$IGc1F&-hcQNE;jc?-wZm>kQsk*DuwrG)ZZ(p+%r={;--J4VgYDL$y}d{OM5NWIf~ zXudy1Mg!~Rgp;oCCw}G)z1W3At5Y?X10`J9aec*Y>R^Uhx5<(~7jSZ}W*sMCBN=+= z;6QE_$fDiyFwALk$y>2N&hLwB7of02))#sQzlOEkS#o=`#=jx6pQ4$IIsBF^T2Pfc zR2<+)=UVLS%9+;&*Se9*5SFVNS5d3 zvFhh;KP!}aRwtEQedYv}xj|)Ku$Usj3=S6a|Bztu;GlA7uy{yNIV@O=!2kKd;^Dz! z7C4JBug(do`9CkH9u!m$395$%)x&~nRC4(T%d$t-<;#N7k{YRCDnORV!J-mw((70v zP|1ywW!zv7q^C%;NvqbC^E(t5^m;#0S6+JeCiwsK&vg8j*v0;y7+Ep z_MK*h*rdd=^Ey3gZ6U2@(prh^+3FIrOKA(d!bsY4@s)ERukc!5ULQIk+GVO%__%0{3TG<}bk?I^ zjsE{c+Hd2l=|7qFVA4)Y4uV)3uTI*$nts}{f6ejw7q8NwJ083B*qv(ayfP-aewcoo zc1Rr$b?7&vKZn0zdz$f(6n3877&j#)cS>$q$xW1NBc_jFUr4?EF}0PShDhjVOJr=c zA(C`jRD@e2}6zxzAQI+=prB=l$7u$HeVg?jA9b_evk zgz^WS23(JyAOk=AY2l|jEMDE%Xm!%&mQJcMkvXFYA5HjJ z(K;`KosZX_ zA~-5NX}rfBmzbCsQ`M^O|D}r64OL8g7m|hB$xn4ZUcV)rke`C+7+01F(eY!WW0Jch zwM=A8L3HxusQf=II&EyUa7uK{G~5Ktt=o@g+l2qv=c%oIPV&5&xxNs8g#*~4qxD?h zkQ!!kODe@qO+GWVWi}fq<9M>Q2|ux+yc#2UOsxARuMh2}4>d)S8e6()lIGq6Zd#!n)C67iF5{4_6_3gqednSh@O=uNPCl7*xy9Enh{pTFXS0hBa_cr#v} zqt2^`^Ez+q`CwJDtNSU@HOZJICl75=_q^&!eWkafKaAELX|&$yT5@KUPIaa|rH+~J zgn8kdHW|CZV|g95bv>_-r#&IMk+jz*C+})8;Dj_~SdX7oV>#FDXKswQ*QBUv_vF$R zbEEO`3O<4fK~UNtUi z{5G0I8_sUkW~)f2ffMt6t>>o}b6j#=t4d>%ld-Y`A9ESZy;`?>lUMh~7xGri5U@dM};qL<$~y+*Ih_fY1>xYfcT(Onc`79WkZW_#m=yc9%R z^n;|k674ztkt|gaJcp0%b!?f@y5ARu{l19Fe?R@cupoN!#lF5uPb)_rtUd<`;5&q1q_lDo9%qh?(1#z(_N zK`@|Yy%$7}as49s@D@`TY0DUiMQO83nAc@aO&lYu;^%YH=X|~@HR+v}#aJc7Q|6Y1 z_zBjt#SD3A;pg@Eyq^5fL5U8`IcbaJ;a9x+-C|ybS zUZ7>(3!>}8G&i(snPxg!%wWyed<(CrBg>Hkvf*-WWs77X{JLa zBFX8kDq7021|R9W*(zf{^&CGBoe=$k^H6hg^0Zd;DTc?wR$> zneEJ(GiT;|{6Sq#WWh0i{@ymZ9DKtJ*Go3$d+qY%;W>HomW}wH+T<_b2ohXV+gOHc zmxn8I^6=!1WJ&2>2A0A*H_;VsJo$4zZ(WX$h&a%;8`R`7@7hzYh1SF=MwQ^x(WuHjw)h@zd|?!_}1cD%S+e#{JN?M>L;rKqz#6 zdO6QV2J^`ki^aa~QY@e<^FOwc^?r~nb5@X8LMF>jIpbHSSD!p83M>2dZ%(ep61B{q z*Gxc@6Iu8VJ>%rlhMv9CE+@6$E;z?sFDS$Q!I?LeVIp5We(3n!cRgX(pOkS7RhFcj z3Fn;so8M&0s?Rw)S5nzInUguANRAP4Ri}(P{p1sN95#NZT?v5v(P#gr`pn1~ofkyz zHU&Pn5f~2b$9+CJQs3`Be&?N{fa=UCr*D{Z3@!ApR_F9nPNGuoK1Nw|4{)W5^wNw}(Wh zt?hn)hNH&J!;?D)YOB_-xnPouM@(qzq1?gU1gN6HMR7!5P+$YAaUGbagP1KWO6(IR zZAoYfleRFdw6XBKf`ql^-nz;HYXh?~NK_Vdw!MqY!g!jHLi6_IthLi^a6g&Ns6=C! zGRx|!Z2!=F7G&&ZiE5H}HLGHYOu;6$#Jn)Ms=%7Jh$;-LK=`-Xq{2hR&`E6*P3No`3Wp-2k+c0grg=-5so3%kUKBUx^=%*W5 zLi2cS6J?wGVj0TmYwqaOXa|KE+q=>h^BY#%&BK)4I%E40kaPh92-qfL`~UrbWX2^* z*Sgn6O=D;-b`9_ejbXM>Q@lI5Rf9h?OHF;^u=Oik z%9h&f3!!P5TyJULw_<9^dRmK#$9y&y(gm8*v+A1MbowMnEY#dRI8hlUnY(WKyU7<; zk`M}howdbN8D~kC{vJ{=<}QvU!)EaP#37qjS5IW2`5gWbnvZMA5t^h*&W4Gl%=5Q` zh1M1&P6Y|h-P~fteYL zZzXyi zwiC|rNwU&*MM)c*MrATp1qt)E=EazVa0H=wAO<@vN~~!wgCTl}9XQ&?Mmywxs?92; zDT!|v1No=mtqK#>ge*{1HpttLyqmY>eZuGMu~FWu$y?CFmKT`^YvJ%}z&#k^i(Dmp zgl2fM+9p@pQf5o>1!(7EwUq8iWN;Ql=s zC8m2l6S&!?V4mS(mV=BPma)fI*`2d?SSyH%Li1rv%S@8=14462ZG)`wd&%64`uOHYR7f$?2qb`QF6Sh&`1C592+tG*hg zb%<`gDc&5K=E)5Fo8wtK7#`-PWH#1n3e&cyxpi_H0+j9NHbKV@s?51#(5?D12 zwW;P@1#t=;Zc9dZ=OMP_Q13iAv2R=I^be+BDTv17K6BW<|Uz(QD?ZFWMpI zIO<(&wt)-V&gR3K7B!T4Icg{K9fTH{Y+N%C4_&n`mK{l#^o|c@4t_DYNv-PQ-GDxr z;R|13_%75OnZguIn9HKkufWh;6mN0e*e6Veqr*hK`Dk*LmhMa9EDEFPjrS*$eO^4X z)+MMn?-0+pdNs!ETU?ux1DF`-9l3xX12Z0xx}_g8ztck7f7I~MOdCfTUu)?YP9sTV z5sR;~-AOYcZTp)ysAPUb-_Tq|#6W_F~Ve@sR!s0(QZRc=UD$>@8Y?V!ngG{!>CTRn&fi=K!<7VSSwm z)thRZH?C6Xs7Pq0kE1n7w8-{bWc#m5>=l~7jV1hC#-S&ye>igVXxn>qXuchrvPVEt zJk5xBEzC}xI<><6X$rVy$1=B9*1$;Br#(Y6Bx|=B$%s!!1N^RdrR~WGE@}jnGc+pg zw!mQo?N({GOxdDTE+Q;1x5edAYGsO2=U{*Q+c5ac(stKMJD7|~+l#PGz?g%Z!Ddt*TTrxIx|~q!cVK{P_wsNcaSRCP9#}pSPPTpuk1#OLUSVmSz!oA zdm-}Qobx}ApHgm#MH{QxaK5vWiBih$Y-ZOcvRcZh|IT)BIZKpKis^oh9A@sD%+e2s zejE;50&UZ4vrHZMZ082sV^3ymrMamtX_|vHuvG%~8sss}hkoq3!lA5Tb&0f(&#>QW z4yvrJg#WNL8l_mrwO`Pd?CQ{5S69XMOv^U}ydG%XM-ik5)~+%oW@HhO9iEdwj# zt=e0j!cGxVZd2OT@ia|&tDMh@1Ff-xD?lfyVNJ!3p}AqQB+1+2X~d_P*)9P+=A0}g zt!yu8wJWKqy`+L(5EpB*M-|PXDeLV~&>unAPng9oSlI@TWP>FCe>hkVM7DXhmPMHz z2ck`nGF%9u;b@?G7XK8xZMof=rt5)ko3O=hMe?MJ+cs>lThqJBp}6M16Sq-5C-$lY z;RMCj;VyQYF=NKq&5)FAahdHzT`Fv+^1W^G@V(*Nbt&74Wdt%6NkyQ2UKIF#0Mnm~ zo9)U+O0XvxX5(jRy_Kak$;d6Uv0-jf+#GAssDA)aeKhlGf!epljr^;k#rOt1=FgLp z=7xA0n97IY+K@ec%G^lQzW^Dn%%SB>fq@K+CM3XK3`<17r0q=qv4hyM(WcV&$TYzf zgf-@cHEa-8p0-CfFhfVvr;S=Dwr;fhr0uak6gG8(blTVbP*`OizO;FiA>znPZ$OfQ zr~ZR5k@@$E$|wEDrt3f^jk`m=wJAZCdS}OxZtB=CWG6`M>{S&C&*vZTCeQ3Tf?0*_{vaRjZARVbrx^cj8X`r1NiLM0JvkhbS+N#Bd z)_=qexd&W-%R^M!1vi73;0|FLc}l8m>`yv)Hg_>@$PuX__rD}Jv}U0Nt$?U*aD+uw z#3QOT$fC%o&gl+yX30=h+H!R8{NK!;$q^rQBWe#vS_k4=TpBk5qE>MI3Hvk;QlpZP zP7KV$$TNimB%Q0Xlz;WM_ei*7Ranm6w_MA;SLxqP1lfVz@L<9|y=68?0vD zpJE~Wv8x%#sp7>5N=Yc#veKqf_Q+@l(wP~NOy!5E5prSWDSLFvuUfEgRLPZgpOigT zVUcw5Zwh0QiXOkX=8DgenNLzKtonP%{I`rRakGRi8EJUm`S22h|h`JK3QG?x9(w)TaM}5) z+jrwsAd|=^Wc!Goo@W0PJKP2rCfWT`%G4Q5F{9BX2+c!q)d9${Ly~sqq(zW8IBkzl z+XKS~Q1U=&e=5hJ$ZoU@lMu=3-iZ7rsZ*BY9>82n+fGe*>Lnbm#MiS7oJj%+m>rtC zqAaV>!sQ3w5d}X@hA0@te3ei@gX!-?Yk1K6Wwc|)ZrecRx`d_yqPC}6 z@78!l8QN3yTBx-erPgxexMjRFH2ux|PMk*#xBW+t9BsR!yJGq58@Aek9rRbq;bx4> zvZRyPZ=rd4e3kQG-6=J^U3E0tZi5P|2^QC6cWKjN^&VqW=&Vxq07frE@EvK!z8hN= zX_vH3x8`tyq($mQh0Md$p*MBv*ky260?t(pdE(I)-FN7{WF#-r}dN{OE^7q;)s>x}{~Xb+g}0?uy_ znBxM@YY%uQhI$4jp%Ey>K{GSaI9?y$sf%O^hE6F!TXL%QYuJV9MZEW)%4C^Jf7hgJ z0c?yJZ=S3{Vai^9xyjf8vrwK8l?iv^P_m{~yykWj<)*X}I6Ir*f=z5Mb1kYS4ceFE zX|W9LitiB@dBQQ2yP0_$5j+V_op9V$!yXGZsIhTdO$tXAHP15kwUuh2z6{z+YiL_| z*9X+Nmp$G*H(3g&LQ@}4H123i6Vq(>#2RoW&F{bs+io`KJG#YpD0L)v6BpQ#G$ZY1 zoXLS9G;dDUnCxb*1O*&CG}qR|_lQN)Ynx=K0}u*-$TVs$K2ckhSm~D2Hzy~W{Cb+N zA|tg^j?pCZ;xI&7;&W@KF-dxnxdqZPoF!CK&kTA8)>*U;(b0LS!Wc+&%_4+<&fmMx zE3em5;e_ZfA=VAVTVtG}j8sbV5U2k=tL?UBsERXQRopY&lUCD`Q6b20PdO^X3bf*Q z7@$r`>H>W#>AfrLw)@y^4z^_^$kQEHc-?UXHz!%Ia*Er5rO|1oQ63Ko56x2+_oDnr z-K;Dszn9Ca^1I*xy;B`;jCf|?h*SQvL4W_O1Iw9~`Fv+{`P6^>!qqlpTOfk`>e4C$$mBO@WVsTD|y!jFl%_Wo?gST~$(2tlT?wi$s4-WKkilUkOu7nKZ@7j!p4Pq4?m zJCa9M5$i>qJCTxLksAm-g#56e)2Xt9T(bj;HwiY(kH=#TW5({ypDjU!hcSz5;yjS_VCqb4(JsN;I^n2Ty8eVEUU1XEe)>?n>v*68%~ z-gta4D9)=vMutxt&RXFObYFDDOw?E83=+e@9N)69q@n`xytOr0=!ofEr9!@*M2_>| zl}YoJoEH=j_{Ai8lApu4Pcgm5xW3kj-ob%exFEdu`Dg9k)c%~orSpbHYcY{C368ox>TGY z#W}nLUu*8D%h=+P4D<|J33EV7nHXF#I(t1^@{7pPTimAJ9u%5QBr6Out2!|V7mbs} z7UO6^EMBAj;Cpd#1_lH56h_k+uos)(=|G~lq>8lTHq0n?Eu4MAZL&I|mwcDa$#>ep zjJN&E+BPn>=V(6#SwLoQ=vx%UwM22=r`^lwwv^wq|CnMsv5rK1pd=hR3@XpApEhmU zh!G=XUc&f(o_$F#^GoS;Q9b`loA{A#G<4jse_z5#;jSENSo zZ$7hZLd?vGuyJsMAQvF=HNW!$`r&5UnHiku45_ev@S-bZV$wo0CRQp;2=kK2+mOpq z?PA-!E3jYs%u)<_S<6?50Cv7&<4omsu@>>j`{MDRL}p3v!4VRT`3IlUJb z?b+Zr`n}vf*y5z!L`P2%ZRE6Nr_8TqVX}z4z08+2I_Y7<^be<7d6drS(Q-Pof9uqO zft1^0S&!TlJKtciX3o-y;~Q#(=xp6=n_1i5qRS?^171xq=^t1Now16u{#ej%{n0jSwXs(}n>WXU zZE@|tG&Q|pj9-DT#CCM!DJs!LQ&fvt73zbICNPwp{dbwbXs+t$E@f#tOkm(uYf%+b z0LDn{W>}6@S`x8@e%ctiF=AF1R zG)4zW-(YAwB&Q{a42`wUU0<76xU8TjBc)p_$MALWZDQsz4qOYv&FKcs>G$ICy(IUXDY<7= z`{;bijZQaxqv86r3t$p6RJ5aJNTZ&KB~s*b`)t!#fDjaz&N7~65YLS`z*WMz)^ULO za=sODfI+$O%G5pHtf^s?%An=9b?iayP6T!_E!6Z#ctMx2!o!jFX#6GNNX@N(1f#ik zmz#TMW5^jzp{O!zU1gX^xym5k7DSuXXzrcw=ib+vd*_Mnuib>3F6TGSIZe**Hkfn&r0 zA->+vq#4X4P0r_P`JNDSs#kpbzHT>S!)jSjI8BD8;)>i%jP^kJ`JXSyO@;rQpLPo zF<8~_W+pmajX_=4eCw*}f?j6H;i<7iOSHarP-c$)p0Ioc=igIiij{Au%-lFk zcCW|6@+G_jsTtkJiqh3&U@C>CIElFNL@m@2zMMYC9H=C|M{iqruI)aXzT`+TEOV8V z&3YQcDtl0(-eMi*Y_qRJ>w(#?JAxeKw8orK){4J^Z-&iObNyp9?o_CoAS>iDA5Ua| z2u1AJ!B$vDF)vVx*St-17gpk1^a1a%Pu!3k3;+0m%?{dWHajS&+crB{Hako5j%$*6 zyPo`$nB2Kcark@N=}=qJwhhV)h|>E2cB3UDXmoAPr$$?(@7V?&>rxD$**89dq0U2H zbV(>gm9zrF`gl%3WP}y}RZopw^Qb|a!*1_$=?)TuA_b{N7fN?_*xj-9hmSr#IsOYx z74-I3BO!ATT(eNzHD|f|Uoz>HO|U~m$M=&-FOtjuFHCxuJpbb@dJ%5i+?Qs+i#Bw} zy#{vj@~n{X?DJlOB!j+tBG&#eWUFHTHc`bkYjZN+>O|n%_JFHgz&GydfCQRm zT_O5y0g8$NMP{!AhaJl&q2@461r4~I@%u{l$K7p(xw1w#MtY93#pBRTR+-CCfDAJ4 zAgp1GUxJne^Luk?bp7Q$Lgk%D8u$R_bj~|B@_rC`eWuDb$kFCF4jryU`ADX9u%iSV zFhbo9H`P55cye*0-PB|nFz@S3Ynp0~z|gbc8rxuZGevTZ%h-cVp3qoRAbpR}lt;d)Prg z=U72E4_G&l&^XxXa35i>_WKBXM)wgaNxMhheFQaM?)E~*)a~~XB+}QhihUTc=1LV! z3$+IIY9Wj!l2oJ><5bKi7-6*IDnvA~;yY0}Y6}Ge(GuO2O*cxw#Fn-=aprp4bqQQ5 zgU(xug^YQkh61<GxvVvy_ep{S?JxyUivmcx#BL)RV- zu_fng5ZR$2iQEZ2>9yC8>q(c(V!B!UQ6eRUz%6k zP}cDLigk?3_tC?Q@}U~<`5CJ7d^y^CVemZEOvL6pqL;e76su2EME?+7uBI-!b1V+yTcH7UqoXxkh49$GY;Z6TKN;gUp*6$VDPOC!-;L?<2(q4@L+;eUJt zWOIF99-7~98f&^S$nwWnZXgVmnfje*>AFZi@Nq#s)#+zmtC1|Xn^|PEckY_!m$W=7 zMIa;Qa+6s#moqCfigAF*I3yGcagG;(8Pm!k?hrBnNwF|3-6d`7r zp|#Blox_P|Ml&Q@Hi*52*b*7z>r`2*hs$$o$I!V^=xw=BooA;oNpWd!&xJ-9=0u?k z<9xicqtH8Zp;~8BoOwA6cXFqC7>dX$@9b`?ya>sQK1gu@N26n75OT#28)+}9`sL((*kH#SG z{7J3mOSgK_%6HaQn!*-3b0mjzW=&fksegVShl$ZYEUR=616})y&GxcfkSr!LyOg$2 ztnVJ9guw9<;$y-za{0{%mLOiYM{3MuAzg~t#~raO zwBtmb7QoElqR-9k=L8esX1FZ=F`c7=71I(se*G0+F@7F0)n*L{gnX>z_(e1^pY3{|+G##y3 z^ELB1)6x8}oVNa7KJ;R9{ZHln`xdVG)~q=)^TYnf$fPgX^UUC!TNbW|!(yF*t2cAi z*piv+6G5U`9X)}LzO9bcY_)n?y?g-bV&30KbYCM(vT2J9r4L|mMW(V54wdqJfC?ip z+=M~9`ydg3xTA1VcA0@FL5mci8G* zhIz(2weel@Eu1I?4R3&jlRX$NUueFnO((dco;csNYjwwV?a(rah%u?eoZaa2G1Tj7 zk=trv39Ho@x4Fi6M$X&ilnIzhdj&(P(Y8zCHX2$R6mt)Us=ZiRikt=rv!(`dx_pbq zed=Y@xPduiA92h@oDQhLUgIX6T5M6BGjLt(?3sJPL1X@Ctb?Bi54o4>^T62b)%>{iBV`N@g%yTq|VE?<6YAgOdN;QTW8kf2Tp2m?zdPs@W zNEe2@ZopaaDcsDr5~$b_L@%TuK5b-cH;a2G-qxfJ2V>@maT>J{`#OexlZ;k% z3fzpGKdTlkHOn4-u{@6K7p9RQFwH2gjCygJ_{(E5+G8SfV?%4r!?lvAkylo5J=58Q zR$+wb99h$(#{pL8{`dAI$%Z?!eQ)Ff`J$CCY7^A}S_;3_8FWSuT)4IEHh4tByyf&t zF5q?-@Me3!9WG!kV!mJSq~N(-7XK*3OW}y_<}24Ub!V+nvR`!TwYxc>${xwJ4aO7i z%4ldl1>L2isY8XCr=$9w`?PIxlG^4<_fZUP;g7I8iz)~)0mteEm z7SP}Vo^KDh#RYW0p)CJA4xKz}r%h$9k0%pvC(e@{<)-F#Ce|QC(`{wC6ZOXLgY5A~ z&7E6Lyft_7Sd#Snj|Q1jPhxMsrLtLbcO8nb-%Vx_d4X4&lmL^3VCew&n{@tgZy24d!8G1Bncdl};*N_R* z3ZGw^9BfyHgr_=3Xtt;?SAEGBV;PjXCSYQ;+KQsFw&%WHnJ1>}w0LU93nqZB9-MffEwwg`Ic;ZNYDDY9Y>5<}E`wfQ z(b&uBHZ#&~s=+=FT4^23f6($aa8#vzCtFl3{(Okn-#nm8@hlOlM8jl>LjUDT{KGo% z-b}6nW0)0b*6Cyz7*VVn1l;z@V72e~{e9>wGKgg6QK_<6Xa2y6RA?G&kbfUH&FpNJW167G zUK!cwgNn%&AJRiag)405PuxgLCz{WjTfP@(jC1Fj(=(>0UW-GmC&f@#r)m>SAdPfn zafdfnkZ^0UEKI*bbKF9>mf4C27xcQo4+oKG>-0ZL^bb%;BTa#MsM@)2S7#q8T{T8$ zeH-i{O!(W>5;W0jXbR)k@gdg2le7I9ySjGGt7>3tXo_-NRB~GpF9d@^LPuW)4%!rEG=5wv-v$ zx4EsLnXVvgp)sRYLAZQDFmD(48F4dQ94^Ie#vJbvHeqe8@-V!{l>|~mvdvi z?bAt>W+ulupH70Adl%2;;Nti*NpQwFOT!81<~X8*s>=$b053HYq+9-oqcOtflYFol z+ep1O;Y9$Wjgq1u^r|02Xd8i;YL%KIu)IW}on@_nON8OFr5QXajmX&r=-uA4ou**L z*abz#OPo$!2Q8)H&YS>7^xg`+gSh8XYQ{Gz&=GuBfi8$wH$iY`5uBkYML{rDinj0U z?`hFo3#(<@2%RWG3(2hm%+BTk2z|s6ic5q(5)pb+0k;<(o@zUtD@vI+kI=FYI7)wp zaehQ8$BIx|28*Jrq4oZV)@K~8nPzB3e>9jUOQI-fmC4@^j)Jwmw-2(VHOOv`zBL6Y zTx!TQ5q-al=zCNR`S4T-taAj~((^f`)wK~-Z<3?Pj72K+$=)FV;zVYb zR$OO8rqV*@yWdA6@SsCc>pAdO4!!Vvr;* zgq)>oY$r3Z-jg&TG=GjtS!&attVxW7AkBqpmH%h5QvMxe^%VKEcUpMEs)@)!gLyWG za{8KX8hXD${`Z;gRe6rOV{PeqZ1o&<_d(rbj=KA3QK)+?qV5Jy-5UNNZ-T6xxgJ+~ zEe||IE!JeKK3NfsvayW)2S5U8Pf<2~=mK0@Jq;qJtJ*4>3@*x5W3^qlp2m_&XgcHF z(X$46e&^`H1wCRKr_tjVva!@3v~UhCTB009NP@Ou9ESjGQ+QRt_FQP@P=&3`hc=4~ zqfNweXz0nM*Dh5^_`l@jf?zVXs035OQ)4EBRLaH%I|8U6>RqDxX{RHU{T7;wK)JnH zPw3VeJhE*x-!d-xv3`Pe(<(ESKr&J)v~>5hsPuiYJLI6gpP7aPK|*;*C|rf63x)rb z4BXo4Oy3k$na{aH+nGHBiFNV2i2ZiV+z{6ZSAfJ!4|gs~{M_2aTHBd-*tpZD2Wi)^ zdCGtDwai(RZ%rkTQ1l>eIW^~|I~KHmKY)v@O4Q*&+VUTPOoss)2h<`*j~+4jF(^6^ z`0t>HrbDH1om2V;oD$MQMW&UfQTx)l12AkxXNUaVmnM&VNDwlg$_rpzZJa{)Q;;zj zj_e+jX7vQ#vZ526MDWxEH~N={NCZu|8OAHZY)&S4ispfd-AC&FkxU@tYMs9K<LVJ~huKePh6yUPh!=+>?DRLAh%iW` z2}7PlWv}yPa}7*SdTPD>X1uH4MV%-Lvr=ey2pQj^M$>$gXsEQ*`1MYi7io79!IF2GBjO#1 zxXcmpPN#ZX>h2Hy#x=aEd}e5tApO&;q*E5Rbgk=@?zrZi3;wOlxrwYfmlUi{(;X9Q zXj-L`-0P7u+HM(u^+Q1TJt_8kc^bN z@tXH8o9KS#QgUxvW#l2DaDCsJx0aGv^A;<*ZOz*v#e&y@QDE01?Y`NUJLQj*McQKj z>o6AX4`$x1wM9jT+sT{kvwqXCCS7dMU`p=XMmN(ZZytSxuOTsgZa zv|Cup4b|C4WGLkWP$>U{fFG3w<2YAJ&Jd<67E!X?>Q&FuHj?9lz)a&2O4vXlXIf~^ z-m7KMT_(GUcWRLVFGu%RbRSO!)VkvVc6sO|ZDO$td^H!i#0PFd$`^BiH@d(rtOBv2 z*Bue5{7~-1f7Qc;5+VktXbgqFhlTpbH_ z(V44jF=@5~-tuoob3CVAb8HSpfogU}5s_02r_2baJ>Et9DP=00?s!+{pM? zsK7GDYsuYc<(m$!o=tpsK^0w&tqugQ^tP_|L|#4ct=PMx#7{b}>LV5C55r9(^*Eo6 zV7l_yC}J{?nWF6}S%~Xwv{*)L#GHfmDuzh7GO~4zEMbu&+gzJ@n^>JgL^iQ#m1PN= z*ux%lij5sWr@p~8`2j`M7{S)t3SN&**{Y=db;ce6B588UoH&|F+5OYDjMui3_UCDP zNXm{)+Q}Jv5~*a(Rqj&lm9qP#W#4dA(jLdX#gxTxOxh*U z`$pwINJy0V?-3$$+lttL5ZsBKkI;lD(~y6%u_p+Df?4b({Ap?1V$9k@}%`Z4R;ub z|IefyleFWi%JsI{cY7Nc50Zou~MNb}WfutgX55PZTcREIxOBU3{2B{x#Fi z#vPv%Ka20$BT+Vcu4}#P<4vfHhflR#kD%4kv{n=QmB==EABMDJ5$|yt)K#i>)X&V^ zJcxa?COBqxu$uch!h!`n2K$T{oAxD@ye#H|^^k^GL1W~7+vn{-*rY}bi&LZN##>M|DfcVes#T=RC9=HCZ*p$=Din4hSxwlpKq z0-#F11kHAL7^t}bs)rl{i5$Ib&xjlXw?lRx63XTrZUmbJl9jRk1{aD-80(+9SDK3w zQ*9~V%Xku@iD%bYU$|W;YtSmYiHs)Ux-fSM8%TnuAREcO$o4!HkdmOaiz1R-tArbv zPe{K7XMJh;b$p~{g+N2+s8L#h5~nmFgspqXriRa8NDdcg@5cP%De8NK zY87Sz(Ie4P$Y0D1(<{-5O8*RWy|~93^7v<>C4$*w*!$JhD}{P!s}{ERDKnj?rN4%d z>2UkKa5+MzbH>|;%PNqsnr_Bx#)4fCULwNEbVf>tO+nb|`5+0%rsExE!xz!X?1gkv zmpMup_E!jg=_m zI=)%95jR1bs~oNHI~s@K_ySaKeyr`v7h(9F>fJq#k%&Ti9)?h3WD&fwwimK;3ii7b zwQngCZmLpzCnB<-!#+2QqnZBW>@{nqpnF2r zFUaCPS7@gcq_FxJ4!XZhB4d^q^WCJBPC6XAZxuSN0CeAQ7iC%j=)Q4BL({p+nB{pH zaGZy;isxlqN=MpPlOXMUF6w5@mr9{mXR3I~gcRo&Bq_`}FH~WlQ`m*Ru=PqXLxp`t zVKY?NXOp0PW`St`)Y;Yl*3tfnuwL9od#f_eaxot(rrwpeE(%q7&N*A-CD`-Xe0VyYG*E>WnMhRShzNr4Z!4>sqrMS_hctI&{a78)i?^M(p6?Jn#`WQKR2aTfE zDBaB}>iJ15`V9`xbFS2-ZjAg%IG2GlYQ<;OV7Cxs{-|rWw-sce+dGMQW>O2Qlv10g zmGKTo%u_1lwt{p86@N`;fiM>?UJb53xVC*k+=1=3TYUEI%h>Z-+r)5ub{R?=0iSGSd*( zdvBL;ZoU)evB+7N12Ir!Ke5!ASTvK2ZQ6YW3$>_(oXS4RZFoq4DZ}u!_lC>fUYA9~ z(4BgJH>p{Z9H>J?T$VQK0mGwEwseV~aM6!Xt?{$NGNu~#N!S+Av_S^R?{>b&^fZ=j zYq)ef8@yy|qWoT=8N5(mXX_E)qf{1gJR7&n4vz2C!|p3pI3@84@xGC(Ip;uO@Q;HA zg^67#UsUksQdy!q#jw6tK#Byh|Bl;$h$`b52>uqJmiuUFWax#dhzC&qu0&97cqEb}(~ao= zPbcF zB+J)>pY7Bik(LlY7EeO_KsI}WGg)4Dlkho!d7m`yErOPUCf?U}AI-az2iiJA>bvfe zRBzTR8HP$Fz>PUX$NtFk3%w5=YY*={n}>==*n2G8HZ%N}}H9%X^H7`)XTw6Nr{V9*N0tvV^8moB!`^I+-b|6QibM zxBZX3xz;1`kL^ev_G08jLuH80Le+XaOsbDF7V}UkmTelQ+BudC#NErbY&!*%G9)6Z;QY`-GuwJxZe2!Gt zoU3ULcCs57{+-i)&H3!yHD_2k2ez9Y-)=aksg*PS%jLjiT^tg=S$~);GC^oO$byuFG`lq87{5 zrGq74JtY6*N_HbtWU-`w^hTYze)J3Qa&#j@zRS>BD@E_VF!h|aHIjx|KaZ;hy(wt;xA z5FR#HR|7Z4icX)$<4PfR&1gw-CWviz&3Q(D-Ug4+*k<(i!$Bn4+8h1-aH4+!RnFwP z-RSQS)&MrUHo*>sr#hv_aFy+7=@-skV+J*!c;$a$;Wu~gROAAz^_{TrEn7u1m1}&R zbzbvsfxdd1HkV3NeGlWOnCT@`z`%T^N0m3%YmX+&M%|k4Sb4T!tcJRx-xKqGR)A=j z4hXmZA9`MZnV0{$!xvAAzIKQqFx`pzF#6b`?A-qntK_~(fXWDa3ij!xyxCQqDAVH2 zvGuLG&+;rcE>JZ#)UoYoj@&mQ4soy`waOe6a6@}=G^glSb0O7)T&0jVb0MF^2)a~3 z@8^O(G6dBts5KW<-NP0>$XKp(;sKA6vgX{!nAT+=H@Ky#;w&S+B?*c6GIz)!?MQn> zE`g)X7QP^bhnM%Ra0%IJ)OwT)d`{Gi!uZ!5#_LeTI*hwUMLk~|KhDvxbi<oe^JzUT1d^O5jzNQNVFNhp*1k9F@=Kavajb#<=^7E`^t7_?%3UxmkU( zTzkNk1+5J3yV;BLtVJ?RtQjsJd!tos#~OGoVxeA+0KzR z)a(%5G^qtwlD7t`fN7LD*y^$OlUolEu#c7Ncau1aegRiHJSMS%7qQnu@{Qzq0r`(z z-1XW_5}B#L8qABNUW%Z29Zv$9m+C?&CCX>-1ufSq=U)q|5Jaz0 zM_1+JYe3ceKLQLb}2^~_rN{Yp#z#mqR0_&nliDvT} zzLik0kUG9j%7v4%g5ey7xQcqcAUi_NlxZRK?4zrXU2)FrrAwbs7~l9*peit56$)3QFMhG?i~_l!>i=Ox`E&^iIKF`Wok-n5}8Vqc)jvn2)>l&Q;0~M zM;E-I!{?XP?k%$H!jE77bmKhj@gs;zC^oQf^ej;*wP3wbHMQ-L360k zhv1(Be*EFFv)MMy7HuEnqZ(%|s7|nq%!a^^2%!ylVSvcWFfkfD7lWsj@WiM@#T?aT z@5CX)Krut~e5#7hWb}PX$HQD^fCRI|@EjM4LW_*%LK<3*_|`oRF{d;57HGinCIs3d zx!#v+?xYNwse<$^w~Re!%$~z|FPwT!i?jiYoi>1};~pU>EuzP+p6nLMcjEN_Ws_TY z)ew^dUEg|-Z{?VIe7g;Y)S(%|eB$>NHFt8_$g!4YzC>R`=Hohh46UF6E>U)TESP69 zynUv1%2YoYsy~)%mRzmzdS03sI(_#F+Tr5KH2J5Bn~4F|F099L``n+A(#%jX>*Hj+ zNUqOuWx}Bvmlx?a(-%tPJ}K}yh41IC$@=VH$H6^a4;Or+w{fQ_`M0YPO^Tf7ziT|5a)*+WG}d(E?21izDtbE*uwzm;nm%2M#WumUvS>aE!6#-aHd zi}2|N-8W)|^k#WzE)<&2mH8rRTGz`p1B5v=>xE`!gyvJw%mmG+pc&N>O})^pQ|8%1 z^O0P0@~CkEmzagasniF${&1->yelj8%M3s7=v83e8(<76>wLwom5Z?9+cTbO(q=A! zBUY+^-qI5gJ`F8$6{_DV(;|g3c5}ZSI+dP(Lu%qhCcP3~BIgoed|4Xhn^a0ORk_Jj zrg0G7prGdzxm3yiL}5!!3J69X(qNsfX>g7m%4peVmGD*tuU6ySM(O4meSDUaC7w=I z81G=f)oU_1(1i{kO|73&uDg`tN!9Ca6^TTHsHwE>W#8q5HHAaZp$zB0SC}7H%Pd#E zCdgV2Sxv%pzd{~W{s-iGM6L(P-w+P}~*m!QRiN?z@c>=AqNFvhl=a3H@%kNUU#nD1F40OY=d zxlumOgd+XoHazo>lf#8syh^{dzV4Iv(aTP}%{>AMZbEXHp3U#X8hdFS1nWJn;=Ksq zwW(96DH>1?J+PCN7WCRWeZvPHuXpMjyA|R1=2ePw^>$QcW3L?yT!- za#++r=w0XQ2CZI!=bgf;g3j;&?(}+tE94E0j;rYyQcHhYsOz`v^>uF@?cx=%&&`S9 zgU$5eUg)QG52Yy~>hm}+TW~zuRVu03wRm_haE;y8oPf~XmFtfg-Vf`R*q67X*|Ee2 z_h4qAGV98jV&y8^?L0Hfg&)u(aemmEfQr7Ht{0la8hAUaD|a-TlqfVuGClRVcpKls zVW7|RQRpBpUe@Dt(~ocYn2P#;DRWf*U~mhhmZLe?md69WuT6$TH6m)`MmY_G_QKHY#CMGE;v)I?x5?k7iOTGPRDFRA z#BM_F@5<8;Jg%A7DTz;Al{PMa_a2GU$X?z$m&Mk7PDoY-6I}gx0-25~ErNBG4`r}4 zagxnfPk4T(^c=i2;=$-ThM-koAScS%s&B#Ll1pv(QTnEc9l@CbPgO|ejL3KdI#j)O z|DKVM)6u4s%$_ z9_S$@?vk;GB|ak730%97rGi^=tjaEn548OfM|Vh4#g~3Nq##?B*`>-1?l*0QSDM`#%<%ZWF|%8J zIQ3p)$-g`K52*s=ev{5!X?AZgha@u2lW4^kAw0O*?2*QB!R(PW2gg$}eA-+6v>xL$ z^HcUs0+nXZtodpDfSB1c8I~Oj9S7B$y{gPX(79LI98~FklkPX`e&ajD9E6w@{|{{B zK-wG#x>VX6Sjhvn=D-%`*3;T4kS-t*)R&X^0A%^{tT{l`l&8%B1no`K{%oT5PMiHJ z&E8qFzZzw4%;!YRe)VRbwAru8{Z_i)R`-ipqJv;~C_tp$mtD|9JV>~2WdxccAQ}h` z%hbXTGSqo~CyRqeEZsvqw8sN=?0_C2>jQNdDHHoZ9e0y)RYfG+k3AIT8GK&0j<2dZ z$meDqWWSz^;gBIn$G0z?|MTA_c1qMDR@7DLVR2w3FdII&biq>OfxDzjAp8U~p+3IF zrn47}9Bp`w7OVGBe|y7BX#MLb_t~@i^z|T2`9}Rlm}nwwK}IF^`jdQA`SBo&;MrKm zOD-x`@0NR5uBa}UT5TI6cNMmT^}sYRvCs!#i>e@fE?_yaO*r@B5L2bg zO`uXV(L#KyQ$Y%$BNbV8tl}d&r8PvWAd&+%ClH8o?jwCSfzN?0*U6P!!j#6Av`eZY%fu($u8OLL905T z@*p<~;c-qELv5a<8A=$oW1$zM!f=;Nah?nsaZ~}*KupcNi}F?xRHBACtI?EX%-BpW zxV@0(p)8P zCiC-TzS(smNpNM96i7adx@7lMA33_viDx&OF4VJL2+n5g{SKnBb^>OBm}BU)T*+~f z7h@^YMUU-XS(k{s6LL9kr05qY`bOwhvKt-Uk&C37By{=`1it3SDHAjr2-lJCCGuTI zJ|()&6&1P2_ZL@GeTTVmEm{6TmTSqP_-kEJk&7&U{h^|+A>UugcMbWJ=$g9to-ywt z-^<@q)Dp71OqL~NQT!6ujFF2huedDi?B=K$oiD!`uO{~^ThDGf zYJqao@p7`gO}5L)rZktk0Tj8otwJGXX@`(ZF%nmk;nRK!rq2fh@(&YQv0sOLuY?kLbb68>R?4#SjzdW4j* zFLaR$se@>O!1IyEGaG6@B3(Od^nRLZKmNuC_1B|0Zaf;f?MIi|zTFrDK*r&ACOj_$xauC9Rj$9}eT?hobp*X|g{fyKzkU|Io zy0%>(WT$}bBH0D|l(fZq4d09E;-@oeurJngu`O}{)%4!AZA|BdUj}+8=seb$uSjs7 z)HGiQdg;=BZHp$3KBv4|hg$53&W)wdDYsp(V~^(E)GMsQB5xi0EH+_tbOMFGBo-#7 zIZeh1Y^k>{ded%+dS*uSz%4}Svy%PT$#HK_kLUE;%Wl4R6cC;ZL~Vl|FxK;K?*=)d zOR5Se(iJu`W}UGzJG*ZbEAxC}zYQvLu~VaqE8i(L8^!*Odon)nlqi;(P@O1t3g+xl zEF`fB{fM>)+U|`Or_fErx=_7cTbLEF7fn}p^L%l=I&>F%Iq-@jdcYddQ(;)!f63sSca+}+} zsdyrY#exm~9xiMTCX~jQFCU6nYM?41(QBC;an)%6XLgEeeh{ zL2%}jAlM!{6n_l#9lj_C7Eplv-w__v2f<3{l7COqFPSG9RyjzMSm~qJM6|FSWh1L6@CEj68@_{cgBAN?p*yogq{=eclYs+<3AgBh4;_F ze?RVA{%ZWI@E_vi55)f*G;Hqub+~VRI0!BQs{Bggdq6AIa^=57`LFf~f(f4fD%Bsi z#*pZ{SM|rAYu_^b`{B>g`*&Y z`k!#czfXT3MM>Mb@`{3U83*fb2!g%vD}Fq9e@5D$czTB5pPE8sSeu|Es&j0^{3z4fQ+xB>I#FRQze+`;fG`_A92n52x(tuOK*; z_B}D@WxO3mdg0Es|M8?R1~<*?`sWtX_rRZ{_appg=H)*I|G9boMYLaip1+Xzt;ye) zF!lEt#P5SYN8fPDTb!4E7yP&8`R9=Tp*;WNwfG0-`3>c3JVt*7!HJZ=Z=U~m;6FUi|5N-Y=J{jz&&=}=0^hlL{#x+W=lM%j zzc1h+^rQN3E&j!M@gwlxn&+Pf{)h7XDg3MR{GU^wSM&VK8HWQ|7P`>p!v7NZ*5$?T zkDuVS`py7f*F67zxX=A42zK%Ob9?GDFfaZB@(;`N-%tL1^Zdu*KRnOB3H}rF{D0Pb zDvkw9wu|VymT_MbXsuAU6$QH!zj%{aFogiozZ>l|IWN99^qiT8F9SX2=K1fSy!t%< z;rJKl`Jbh{2lDWJN&Z{&;%8IuTH^Qh^n8S0f3RdiY23U&vyq?9$on$^h3EYl$0geX zjN=0N{;usFTqfuleBp}}|LRVA6z3J8)K3$?FR-VNznY1BBJP)fN`DG)U)oUXqWrh` z`rvguxyuIrJ=@wMioZ3l$||o#8U3I9-NF4T|HsG;{+v7w{jU$}H)nA&Tfh=(eD zZ~VbQLGUY|erNn=9vlRNe0>g}Ef>>RcYAtI!hhlj;(h%dro8(9!0+Q<#sAO|$Ot~Z zAM_4HJ{#uC&(N3k{}}}LkWS@4K)zegVJ!Om#{nP81VOc@=UwvcJ1z(=^!XQ(e>MI& zK7KUtOgj4u$`QW7^koxiK~I0%U?=dc%Jb7zK~Y^0lmQE=pA6gWx`emj=Nf1bYO*vx+}22((@ooF4@50fnzS{Zl|=4FeW3X-@zuyiVbibD7|U zL2w&T_?{Fb-Pb^+v$S8~Ok^BE#_43B!e{vKc|g&1vyXqq$G_&|-xH)y#Fv#{>xuI3 z4^%xW6y7@sjs=ST69l2Z4ybgq6;Ju|1;MjI5Ipbu_*S6se64WWp%Wb{JSBqQNdkqZ zTz=|19;kXsE>`%H@*_OFrg-WRhupCSrE(=>_=Hl+QNb06C4x-CjpiI zAz;DWAXrA*6>bp(_X-XUg2x2641#9_$@ik*R?sWBHRF!DDF2JJLE*O4OAx#zeWLLD zfeL>{a685)G%5Y{{jLGm9YxF@_u zkj3RZpz^JP7YQc!iNa3;%D>-!_$lW|LDG&AB;Q=1;!6&S;1LH$;aQ-{4m}zFPlMp$Q9#hcga<%HL@m{_Wux zf~4y&NZXA7D*hTDzD$tu^12WI33X9_Zwt>=KkY2|lOWhzkp3PnNV{c$!n6Kd{1x!a zDL~q7CqdF5C`kHa1Zl@?qnMvFfJd`_2_8c|ehWO7`6x&qyw2WT=@0o`1b4kVg1>l}c={$I zcpU8vRJtjTM)PpqW0C)_PeyRwbENx45L_pCd=M-Zq)+b@JORESNZ)?)dX#?D8~EwV zM!{bpX9=Fn_-Tpaul*>3J0feV+~Gj+n?qSB?R#l82{wIL^aqf;UIdjFS#bpE$KJW&w&I}1|YW*%ilI-urj;{yn|_AVJ#k2=D); z_g^dsp84K?hlkI2__>GLM=RYRLGT>p{YQBJNghgHr1)z*yj75T-RI$xKKu(o@YzkG z^!+{D!^4w2oZ#Us53lp^E)SpfaIJ@uqg8%47^~nm9`5boQ65Uqr})Vpo-YWUvpk$H z2z`sZ|7P!(zE9~M^za!EU-9rG5C7(2m*Ob><{la{)OIullL$4{s#o9-}65FWe?x-aGi%=dKm8#mA8q9Jv{91;np6Oc~~w8{EZDnj`Hvf565|Uu7?+TILE{J9$xF=?SkN6DKAmu&g;Zr`m*~3>neA~m1J^ac;!@f#%cJ{ERhnsu2 zjfcZL+{45DJ(TW6<^QLLRX+ST9**~Liia0@c)1|??iQpSdv=T9j)H{mDF|H$csRnt zqdokEhoe0_)58fKW<8wY;am?FczC^scM4MeDnZKq)WaA8kNl;A(9zGstvpP6xSNOj zdN|y}BRu@MhbMdZYY!(0f`6L#|JK9#KKwpG=z7olKlSn7dKi{Qbd`A6$HPG$Zs+07 z9;Q4z$iu@tJl4Zef|Pf*_n+temw5jT-oL{8AM@}j51Tz~5d_ay-fwzDbawV|Q$gal z@%~{R?&0CVKEBe!-*`CP!}%WG?%@+2zUJW<9(L&&m9v$HdwY0-ApG%E56|*&iia0? zSnuIg9^UBTogO~xq4W*Hx7I@)6smqDf{dF!9&Y8scl7>!y#F8%e+E4~54Z4esE50Icz}n8c{tL; zlRZ4s!$}^V=iv<=-r`}Shrjo5wTCZx_`Zjqc^K;((OK%@W*%A2|{=&o2 z9-iajbPq4~@JbJF5Tw6v^ZtiCe8$5U1t+j?_x^Xh{{!#;!oyB%;KYAQ1Sc>~J={tV z{5yL8zTRKy;TR7yK0Yf5o{PNyMj!vEhi`cJrH99C7M1raLCVQ`{}S(C?%@j_e(T{L z{i5`h9**_!QV;L-@C6S)@X+>;@@?kfjvgN3;Rzm|>EQ()Uhd&79{%3LmpuH~!vq^( z)nkB%WgZ^n;m6=TH`&LMmeH9@)kSmdEVN>jay|F)zRPE*OBUL&7237j*!~=K& z&*KezfG_X^W-Dj<`^#79VjP+G}`TKl~!I`*Km33$EiYoiNi!Z4cDR25TQe}QC zRpxa&KDDktdSpt8(2H)HmQx zJb)+gJl?Z_p_0SVrV;A(nK#aseI8v2!Oj70CGpWxZCy`f> zx8o62)}3cu|9OPouLt-7KVY_sW;`Dj#d25`-LM{dVr%SzJ{X9RI0%R11e}iZF$ve= zc2&-^UzPiCl=?~XCGs`$1M(B{TeALOkgm_6%KgYgE=n#*u0(bu*Ce}>J;}|<9m(I3 zt>gf5B)LC%D0u{VvMT4BO-^Kd33(lP6Zrt1#k=?#vsW_bER0`bO>Balu{ZX|kvLtI zeQm(A_zLq>HuteGmch#CitgA5TVW^ci2)d`%5}$)f5N%A7+2$F+=GYl6kfvH_*|9# zWvUoGF&M|H@;Ublu2SXovI+O8vi=_9FVU{5nU`CY@!HrCLogm^;jfsCr|~{!ay0#l zqBAx_AMB6gaGENw_c^NU|7Y@Y@@n!$6O{x}FH;}YC~r!W;W zIGes-pd)%<7YxOCOu*H+4=>^~%au`iCm*|-)D;AMP{IowSDGFSs!qA$ka1Wd#&cpPuz zJ1kJ$^sj{Vu>%HT98SaKxChVTBg|aG^eu+Y=!xAi0!QIoT!)A7D!#;AHBJ9=SPQ+- zim^Bmf5B~d67S*%EL6+%uYwJ*69(f@oPjGb8PDSr%v#&@ErG7s6fGEqV{krhz!bcW zuQ5*@)87H>U>o$uK{y$g;0`>6shGjt^!)-I(F40+D8^#~uEu?M5uai9x~6|Abi?N8 zjnOy`7vLs5iZ}5M=BsD=S44MgtPYev2dFXf&tb?t$Ufx0I2eCa<#T@x{*E{Bi7I{H zVYd1v7r;_j5nZsJDt()fJEFHL`?He6$dTlsYOMVH6!j@MUzL8#$y-&K_Zv9{x+ z7WoQ)NFr$${ih@&NMpOSNE3{~YmMB`BElT~{#So0fcva7<%07>g z-(&G+X51B)gzu-#h8*vvN#FKadZ{kCIiFPf`_4H>S z_1yWf7*tp$ zUTDQwoQS{RHav-U@dFlWZTeTi2G|LMaVXBfm6(j@@d;*aWBQgrS8R$FjKVQEA2(nM zUdPv%r>*JlfOW79`r{y+j7x9_p2Aej(9ZPz0v*u0C&Z01$L2G|LMaVXBfm6(j@@d;+_ zV)~XqS8R$FjKVQEA2(nMUdPv%=R4Ei0qbBJ^v6Ls8JFM=JcX&4p{wcp1v;V!cEM1L z#{^uB`|u(@L;V@u&nzR|m@P57ij?`(kocay4=t za(!|$aw~Eda(8lXau7M197`Tf9!;J~o-b+4CK1IGlzCnJBZ!v2R zbME|D65X&Nwn8iR#ep~iC*cBIh8r zT#D?3wW-%5HzT(q_fTaYfz)Hj!^u;~^T{j8TgeB>SJhbg=L6KA;aln%dYb*_R%PDj zok6E9A%c0ke3UzByI7kA<-uI$=QKE6czUZ$QK zi=qQoLw9V1ZLm8A;9wk!)9`0pjvH|g9>KGC10P{lf3wd#SQIO$a{g*$cUA7=H{=%N z*5q#Fp5!2M7`bY4QWi(%Z~0r^>#nq8rx3=Bo7VihVE) z2dMJ=4OgYlX!1|wndC*}B=UOlX7XP0LGn3Ou6vvMb8^lAsmuGU3|3aE>s%n;QRVvg$*;(7$=Ujt@tmscr!cuV`Ac$Da!qWa z%5^$0?yJhV!!U;W5d2Y<`LoH3a4q%U@Hq90k{=$4;s|PhH7@s`MR*qZpq?UPxX; z-a$?wpCjKP7Ya80s;Y7wH}p{Dd24}fsP`cE!5EBJWnZ(%iK_Hlfg8|1#LO#!HL*KJ zV*;+n6jl0NAV0uNp{8FkbU_d7f?+rqr(yyos`7eTrpk3zk++a{kdNR+ypM12voO=A z2!4q*urYQ(Ka9XQoPaY`+0PvE67q8LR#oo%NxX|6uuxw!UIiOqCk)1+I0IK=GM>jL zm^Iw=ErG7s6fGEqV{krhz!bcWuQ5-A>F+ld>#g~{%K4W#?<**idp%r6s zBL0Hg@Fd>F4_HV()3kpTY=E6G7>D8vT#3ne9-m;=L8fmBbj7AF;B|bB zdA>LO9k33zL4O>ClW_^|z*Crt8GbN*zd%Ryz%Cey@tA0b)nusM2T zG>*dsxCxKqO?-p-;!OXFSQp!20RDheaVhS?Gxz{A4l#X;;8)lPyJBA)fwOTf9>B}^ z9CHjc{mWntY>B=YgA*_jx8QNSjqk9)Fw?&h*2fMQh;cX#m*XBhi;pmKyy;sEozWA! zV+4-ExwsAw;Z=NzxrUqm<**idp%r6sBL0Hg@Fd>F4_Ih~>0bpKU?&X5p*RCqVltk` zCzy4l>01I_u_;@AYudpUIP-R^+ay#rs-AWE4$B>8MSn5;Bb8xXLpXtlV z>v5+l*E>KyffrPnf0cX>pQ$qcEjjBLGcTtq_o)z;RApX8vWqJHYLLIdrmDO;t5a0>O=|$TR#ncI7mKJeuPoV- zT%BAWo2qi1R^(3DQK7**y?AnRo=BcaUVzJ}uOshNWk1Q}BX~xY{ahiZsxt2}`8C>4F!OS#a=y=1nOBTl z9vxNbSDoBIm3fWHUf5ZcdEVq8Rp#|255S?S%o|Idrpmlo)X-d*yas?2*$wx1|j&YMG(c?HR(RGC+v z?1nOC3OOqF?Fc{s?3{8o~O#ZMDhyUpvt_R z*HoF8N`689K+ZNv#^t>ERGC+l?4U}&%4An`S7lx!a%)xQbs+aZe^us%kz-YvH<&yM zC#fWxS)xyeH(hs?5tUS$@emKf?m5%qvc=sLH&m zWH+p*$~;eUTUF+DBKO1qRpy102a$)9C*XAI^U2Fp>9?A^8TY8t?=bm{D)TOoZ{kB$ z=Dj4_Pcieds&d}Es*D#QmuI{Z*#+yUGVfb*dvYI)ROR<=0~sGo9!vg_JP%jlPCSNJ z@G`>1li zlgJww-$Oo(r|=Tq#>e;??WdXRLo=;99uf?sH zjJ2nm>vh0rRn9+NmFHm^&ch|R2DjjEn1ZMAGTy-#s`Sq_!}R|gOW~L3jJ44NTVMz5 zf&Lh!O8*4hg;!O%ubF2W9k403Rb%Yzx?+GTeWv1ORn{NF+tf2Bn0hgE!4}v-mA*aD zAEQ+1pNLyA1#jbfEHul^cf$JE5rc6UCg2)8fLHM~=9z8!I$&MwfPol?({Ls3!;AO~ zv(GVo%U~_^LMz7NWL%27@C-h{%yUiO66lIe(Sp%90TXcx9>=?wVV>#x1v;V!cEfNS ziPLcfCgTNsiuUtO{{mPE8(=34#t}FdH{nsdg^$&N^6vvw<#qOf{MpYY=T>FBI98-y zgE$=y}C-at&i&3Fm_#H@+tIt8#2 zI%8c``gxMusdD{JWM8sBIf5Kb9!efTo=l!bUO@hZyaD&&8N7whF~cIWkIbq(5BbQ2 z$PTLPyE=L>-iF+R97K*Gk08&%^|(is>l{_({3prR8GnyOelgc|!-lHN_an#R1pEo- z;yOHxC-8zQ*T17mzx(7@Xk|(LMk7c+YZ{s^v z`sZ6_=2gIY=!Ly8T$TF~qsqELOkFAuo@xg@zP*^%r_uB*y@@+7xqyd&A0Y$ZqH57dW}$CD?K=d03pIra6p z15+43OTLDw_=0h}73N%du{3^#byRsi>XVyeS5>axoAG|+5jYhSFj1BJw+@r>6yCr; zG1E%+rONdSl1r1zlfPDF9}TE`k$Yk=^;q&GRldI_;RSrmc_z+)X=GA6AHx|VT=z{gIIkv~17=$sZ+>fE;$+!U5;BHms9aZK2UL?OI zXI^9K`Bj26a&%r{bV4_*qssm8#J1Rj z@!sVAI1;DhFSs6et8(A=l24FNlW(cApJ&uFtYd#z2RmYa9Eo#q4Q^Cr|G(i;Jcl>& zF}}r2>&?16SWK0DIgs735q3Z;Mq!*P=Zz;%Bu^zLs?v8o?qU2m`4ag)IpYSIFRzQ7 zs`M>{C8?JqS0mRXHzKzpcOzTLQRFyP_A`$9Eb58mKNx?Dr8k=S4OH1z1dgOWRh4}% zChx@Kcnx1+?oFnj1J=cM7=U5ePnG9)2#&)Uj4vRs#XWcuui+DXr^d*y&8BZIRdPOZ z8CC9&6LoiTJM4!OaV_q_v-kj?sj~kM_}Lbd3t?%jf;CjRegkqF^v1pzhZAwOD(9F_ zUQS+3-la<46L^{N2jsuV*|wT_rPNsY_t&Y?*BNV5uTO44Zcp|m_aXNu$B`$JXRETG zCDb=kPo7& zzf|d$b*HHpQYDuqS0j6(4-Qu4`5C23ze$)teI9u^c^!E-`4IUm`5O5t`MoOp_-vQy zUqqGM8hc|D<0HxQa6Rt8Q<#bwcAI`h&>20kr7F*N7xcqW9DwooBPQS?T#Z|CAD+OA zcnAN)cbI*T*+(HPgN|4mJ+@p?{1RQU9yZ1H*b{qW1b&aBaH=Y=v$^CIxD5~EdAx_OG20=t&o8j7D)+4d z*-e%Hjj#>l7IGjth8$0xOkRQqsGm{g``l&n9ejd+VaCH|ADvXWemIW9#j5mKrOJLc z;XcN%VU`rLzA}1Ys4DCFV?6cwcm`i!o+GADF;&(%ksD(t48h?z8-K+^cmbbcwxgzh zNvw{o&=32l^16(`A8-s#!v(k!x8OcJiI*`IUt-2%<~n(>7*<4AtdGsH6Z&E(#^MN^ zjB{~4?!ZHM2Cw5Ie1ln!n|&6*Qdk9Rpa*(kSM0K87n5)u?!-fQ8n59)e2tk-ntkWRBItn5SQndO z2lT-ZjK$IT6E46txE&ASIlP6>(EfMsD;C4bSRFmEE%v}b9Du`dGX9J!a0?#9(|8@9 z;(N?-%IvQwRzO#5h^??I_Q8HQ6er;vT#B1UVXQ$1+KF4zCg7vUDeuup< z0*ByuOu!^uk9+V0UcyxT3$vUt`znBC(FyBdGwg`I7>?iL7@UcVa4qh}BX}O~;S0?8 zhuK$tEQwXHHa5m~=z}2`i=*);T!3qEJ08MwcnhDQ{aLfG+*k}NV|Dbvw%7v$aR3g- z$@nv_z%6(XPvdobitjPUIkUf_SOHzJA-2M<*a!RJP@IHwa4Bxay?7F@;X{0bpPe`R z`W(xl3)aKt_#O7b2podrF#(fsJ?_C1cnMSSFU)em?5hBlMJKF-&9Ec-VmN+}V{j%e z!nL>?kKlQ{hc7VWMYFH`SQ4vXZETF~&_|WuzXg%|;Se=O{@$HDiTo4!XYwNQ8uEJb zZt`C83G!+3HS#U;Q}PS4{Uvk#Eb2h{xn1(-& zJcK-)Jc;}h`DgMX@*47b@^128@(J>3@-^};@>B8)vi)Vwuj={9pOedyE0A5t)yWOX zjmd4v9mziAUgU6cKk^V9k27(RDzBH7s=PkdQr|(|Lq4j?yg#U4pngw{mH&S|^=H&S zkTYJ9aXD`uRn`|)nR++seN zRr)MqJc;^7Rr+kBzKePa`8fHaD(i1izeoL*D(l}-&u~?;oI4j5QDt3Oay3=vyQ#9z zTGSg;Z%*BddRO#UrB4{+k<^E%(r*OyG1RBw0#(*6V|*3$?W(NXLwz6hljJkx>#D53 zPyI3V_o}SVcukaZWL4$d1;}5J%c=JA^UTz%QLm@UdJpQJ)Z3v&wU>Vmu1fzP>H}0+ z_XG8z)F)tqYA^r)8CBLTroLX4bz7+Kpniyalzd*bm;df4`6>AgIooy9CzmSy^Qm&~ z667*uM^*Y%Cx5HT^_!})t|j#@XjNr?2;2Q*pj3>yj8>L4B(#>vmC3 zrhc4!ihNa-_4mlH$Qf=(UCxzTmGLjgOKz&ly0+w=s;slBvMzvn z6vnACe>CIcsn1en-F)ha)K}v+Ro3lg{2=u|R9SbC`c>)=$WO@cR9T$XwfMLh-2 zsk1%aW^+Ympn1y~y2E>FcdZA1n2~i=PpDpLUvGPy%X7;+=$$k+?Cv$+*g&pQPkte@#KlB z^qomwtjc+otFmr2^=;%`wcge5#zckSgabgN~~7tIl|B>P=MHM@#B$sCUNzRn~tux;X0b)F+aslIN?kK8d`Myo-E9l|Cm`+4mXh z*U7iZ&s6F2mi*a$vo4P+>k6oH-csapiyr$GUs&bvK)GgEl$)V&}RrWcI`bg?OQJ+g*Mqa1Nbv98?CLbW5Ql;M|@?-Kl zRn}#BXe_A8yfWm<=%&g!>tQqOh&~vC18_J_!a10P>v1<8!E<;EpJ9eaW*Dz3{1q; zxD5~BDZGjg@HJ+B!hW$NR>qpDydD~oTdDGTX-n>jLDa*@1IdHQ6EK1LT=G)#O7a%+ z4)P)LQSxO~_LKFgv4Sf5`3l`td4G9fd+ME4dHwp4dz1UCGCz*`Xq=4mRk_|iJg!Qg zvy5LP-z7gFzr$S5%=)6L?6VwJMK`Rc%5^-+t+5MrA9AoN`wb_@;xHVC(^Tmb#9R#;VaDWr;N*aa;P#dFS!Vo#VY8g%DmcS4{U)Q(4xvbKXNek z!yj;@D*K*Do~6pV`Q#-0mHH;~Zajp)<0VzrUnk$k=lCA8J~!9RtIGL{sj{v#xe~fy z9c-k^yk_Kf*bS{1qRP3V$wO3GH-h{l&cL5>nJV*ElQ-iYJdCGQ>3@lQSCw@S$uBX( z3scXc$~p63VJw4{Rq5wSuBS>r4{{6afIZM(m33j{SXI^yCXd2Nn1G3@%u6D##jTi( zM^%~kJNY8s!bkW@m3?G*DZk{LIaOJgk6aYXVO6ZI%Dg({Z?PqIM2jl@dy^wnS=XN& zhoe=QH<>&~m3a%u%WxfT$Nj3zOCg`e%XkN$sxt2-+3uBOId68%kHuA)SB6{}UC|vI zsj}Zzp}L%FpR;Ws>~Zno`^G5>9>HqLX~-I$y+fQkKiAw%)3awg^%zR+P^mQ zvZ`|KyjTRwVpUc8Ig@LnhbsGPLGGl=yl!MGhF~-fR%P8N@)T9p%^)vke7h>&SN7pa zyo{;%5;Of}=I6x{SQTsHx7ZrHV-WVoVfZ7?#$~t>lks=Fg7@(iW`1M#R}f2MRji4P zus!y~AncFvI0fh7GTeyC_&Z*~2ly7Vy=8w`8XeIcn_zqFiNQD!N8%Kmhs$v*?#JKp z3O>NMnC%_=!_w%8?$`v|V^0jmfjAPU;zC@7TX8?0!W;M)-(t4+W`BjSJXS+@Y=Rxo z55sUEj>M_B5Le+=+>fX520q5OnC%1m!}3@S-LVOFKtBw_K{ytt<3e18+wd^{fj96m zzQde$89u(>3uAe#hIO$8c1Ax8!$CL}r{h9gh1>8j{((2~PqfQm_LUP0qXT}8-(U;u zj8=@q!8jJDV;2r!E?d;9|a$#}&65a4yY>i#97lz{ijK?1_0Ta;m zGCsyPm^Gu>X928=Ut=R|iJj3GLsj{{5knrV#>n3XkSCBQljo3sCNC$iCT~@xUo!Or z)c>G*m9vSPrYA8`eWlY>i#e2Lmw@2jOs>fYWh4CgED#iph9Hjg`O0 zB45B;)KkfS;(O{DGn;ef#LrdfQ;b|5ov6E#-LWzC=H&L+gSsy{2>VfwB@e^#)F+c? z;Uelw$-m-u>U+qC@ig`Gq`ZMxd%#y{NH-{>(vw~QXdO31ctWLcS`CDv7y&bt5 z_M#q0j>PY&4<(PqpQtC07vc))Ysp)2FZDy@-|-Ul>*V|Rg8CbBrmW`Nxm9`I3y_Or z1?pAEUt>M$9^@9-k$P9MABIqmAP>ah)W?vg;2i1;$jfj&^)2Mz@Cfyjb~S4>_NOp|BBnG z?;#(?)6~zCZ{S1f&&Y2vOLlYK9IC$lu_X0!SmdL8n&*ot~PayRTnJ&+uU-%}q- z9*aLwParSE71Y;~x8h#vhseL_4Q9Kjuog^A%BhasC$rG zU`Og*$$l6@J%T(Chf^Ozo`Q3zFCZ_&_0+eJ_p9>#?Swi|{(g@7Me-f;eez$JJ%>4O zVO5^@N?3z>eR31*g8r&pFB-?;Lfnc+RoTxOyoL|(6=uw7<`u(o=!CWKTlB*3(28Lg zi^Fju&ca`C4Q|8zcoHw+UHlV2;Agqaz6)V#tb*0CA-2Tt(2C(W2uI^o{27P;ES=fZS7D|s zCb!2~cmt1RHRA=d8C&2K`~!<;H{-)_Kj!_6bvOmLqFoL%-UP?uF|3-?jE7;jTqZBX zJ6JxqsR!X=yn@B^nDJ`phl}wBmd{#osYW zo=^S$YZq({_6>`%i?I5Jxwusibhh}0hD2KXM_T->5s~4cwj&X~;ogzHy)6-8-oDm< z8Bbdo7H;(p3JUf0jWdq(m zK~_sdfPaX0WK_6SS4%O{&dE14IM^EU=`y{HO`nj^5V;S%qC$Kl142XOq`ka#g51#v ztL;27{jA|a`U@w**E`5N+!E2(wkS{Cr-e^$hRteeW-%KGkk_BT)wYRQ^KUmo zR@wCU=RDKz(>eauJ{D_VOMgp0Z`-B*vQKNIrGMx@>azck(D2}oPf>&=GSo7_8veiL z{A0OZ%`Y@cUt|BgULT9MpPxmp`{_X1noGt7-fC;_nE z*8l6w|1w8D4E#caKV5J8TI>}N^6{Nw)Bf+5hxvd_e>d68v3---l>hgu-DaXb^X92d z|A@31<$V$z9uR4J?tkl^_U^D*ZS$%Mk(cQwE&jgl{}}R>?}neOO1t6zG4Sd4*Z&w! zTleWx`p@pXHRSuHRX+9qaS(HpK7K6PjHEUG`11Id`llDv*O1Mmf4hw~A4xjd=0hbY z;FHCF-$41G^U<-7bFIBCy~4eNZ7=ip%gFW{x6MA}JtCjZ5s{(c-u|`=^%K~9(ArEk z-Q?Wzo(c`uZ#~`-mR?r7Ug1{TwSRy1SbSvXel{Jr&C=PXX!BYzpFsaPZ2JlH>8QL3 zJ}vONO?yu{g?ang$u}bTjaAxrV||$Z{nts#@_jkd+eeHE{%Clpez@}l=%e)6X}?X9 z?`~<|XDoIW&lX+{8?>-^HE!IlQF}}K1`S&@ve>No$8UIe>iG?UlS{3%N6zVw(jU0g zOdm{tqz^n=H~so+OO5ow^hf%@3|3DYbdg8qL{7dDkW#${gFP9 zX>K(wU$dZk+N0`Ur#+Hw>8RdQCztd`&gqX>DotF|oA9W*TUt%prHz_Lrk&P4K5|Zf z#5A{B78lb_8uQ3C{n6Le(`s@FM&%Mbk{$ENSs(rVT&MlcOuk3?xY`cLYfis$X)*1j zw!^FoxB5lNZ*<+9(`WtthzrWLozu6?BiS~OWZP-A^ha`lv=!-(}GWZ63)M z(`v41k6b=JFq_puv)O9$2d@9WuN3)nto)HW{i{i67P~O{GiTbD{Bix`*CqL1eJp=$ z{`mEc{O|QzX`}LUI;L!QPL!5*-;fLM&1^SV{*3*FWc_2H{4w25{zz@NQvQ6btL2Z6 zAHS;A&S1AwC-9~H^q0LX(0OTld@O&VaEv*M_R_ESGQsw`(^E3rRg=12SN{knH$ zl5M}8bu)Y%lPMp+bbtDFQ|8(B+b{j}TG~&Jliu&J{JCBGxyUd5`c3*hwK<25>931i zH*IL+HyP}9d>qkLrk}c=dHPttq8r%THS^aF<}2;dGKp!Ab!6A#jCQrtHg7XlfcvL& z^y|&CjCQBx?{Lz-(jMiJdA8?0Cg*K3*PK^h4%%AJUsMi|wnlp#-y_%ku{@#<{ lKl*(m?;|OF>{rO9-zm9h+TOHFlP#I;j`3djo_Tr2{|COj;$r{+ literal 0 HcmV?d00001 diff --git a/example/android/third_party/secp256k1/i686/libsecp256k1.so b/example/android/third_party/secp256k1/i686/libsecp256k1.so new file mode 100644 index 0000000000000000000000000000000000000000..e245a72429a002fcf9040ab800137f725deb0779 GIT binary patch literal 386152 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 z zOt@=x*sw%cOGE>=Z8IH>{8J9KbgTU%dq{KJ#AJwno6ThveAUDD%BdRT*{(;Yxz0;* z4nyw<7`5pZCObF;%Om$?XXs#OKr8P%pt2Wq@JC#5@=8&q9;&LnwC2!ylI-GENtjNiM73S|I^e|2`SiC?!r0F+J%@0$)WJXDS$kTAPrNZze91{c%~_phTm z9o<&}3#*FJEUim-swPxFV3_T6COVXHMR+HLoWOvMYKsN+t;dBA)_u$!F?q$jA* z*KQ5(>HuB5whK3_*6k?Th5X2208F^jWjJX*ZC%dg-7_M1w-?Sl2Y@jVIRpyxIyw{+Ib@Iw52{$C!=ZX#A`!NO}_C0ZT0TSc`;<>kM z#tuoibHHQbER_Qao;c}5TtE_Ms>Ev^_p&7%_(v9L(C&OQV-v;Uuwfc2*y*S1o@2LD zmehHkRkW9U_oW#-65$rJCGSlPIX{FFB4#^P=64enLGeWgsksP{8p;>Uk8d?Twlb{t zh$cU6F+E8$6?eHnO8ewRHT{%6>G60(^~qVJmV=@`UT(rP%3L@CrV9jZoz$(PA1z5L zevW3{hqc6rCrzAv0y#VR*MfF-E>X1kwF35Ol$^s|0llgO!U@FbQXxX4&BOI`Cu&wL zXfvmFdr$_zz(p|E8-x$YS$Gn&`*uzAU(?>_0JFCSG%R--UIoL@%~+Pv5aB@8n2(XO z7IQ5+ckC%*N1Ki8!Uy!Z^7pJo@eanf#yoiC6CPHlC9E^K8D?rQ*xn!BObNcyCph>iT1bhtMxM-3qEQeHvd`&jgDegN zg^ps3)Q9KcNDd5hB||g8=fU_p>&|Z`uwb zY*HV-Sk@;cSa}no0S6<^kp`YGVFwV5FjMU}>b8uR>4Mpfs+sb{kQi;gZL7&>0_g5I z6{7DEj3~OVBR-#)8obN*t{=touYvIKtp-Z_Eic^~b~K^W7ZrY~U$^wilb-H?q`wmL zb~zAS)d(5WB$TqV$WUo6lr^$)!l4kutDv3}ti0%3or<&6N@9tZj$G8dSB^-v`RQol zTwdgzH$E6xQz&<}0>Rn&uE-le-9w{)uZ`R4$mH=~w6*AsT$T*J4=0;t90>=L90L8Q zlPfk~!@20Wbo`s{ZjT-XF9)mgUMpvh4YZAc3J!O%{iz>qP%ipOEoHeuk5aMG+YgLr z3@{Lj&!(hD%(^UnT=#F)1(%o`AcR9G7;uRs4>mHgW-Z;26qKgEC` zR`#Dyj0%nr0rw($=MEUWYY`X)^s9L25YF}ZupdUd>ExjhH%i@@`XGi=%$vX&Ac#Az zi?qI)2sDNgc8_RQD*bg{(|ya0#1*_qX9G8}He^XZw5+BqF*_-HfJ*q@Koz>wsOSbF z%ru4oddIXKK+#!=h{#uRAL3c?6=Bv25a7rtrq;Gy#5h3$LAd_cSC?r5K@|*>L{tE@ ziYQ3W5JJ-3%lvc8n4;GO(fMkW&Cb(TwZI#;^mrIg*}jt-;GfW^lYGiLS>)LNWcF|e zM;=3!UYIf&0ENiYry`J21p~;ZYS%$PvU)d*e3WWw6-sGRY0#Z?VVa;S7iIl559^_H zYC(AF1^F_kVx{n1iQHz<0(O@y^1C~Na6}YTq>8KmwjN{~JjS{Sk~Cx7RgNNX_P4C8QIfYr%C|G`}8vZdT>;d6l}5qpnfE zH)zGR8w(RBlZlP`Z{V3Ji;5C)s=5A@6-Ydp`5_&7okf2aA=$6nr}>cRHz!!trJSZ1 zIS3UyH`h=C-EZmW9?Y#WTlE7cZV%IdKFmM9kARb+w+=^+0DE>+ZPgra@>!2aoC5KV z%c6J~eXNa#J54~3Gc4vFDtXr3eCSZ?A~b<{6yPz|0!I1hY^3I`s19kGNF|A{M*Pkk zpAaB6@M4PF$0RnadTB}O&#YXZ?<<3iAMHAY7pWyS-XL*tReLY%=2L_@ceg2<)z_ei znzJ%7T!R-)QvELtTh+u-HSk2`)aNsm`a6#zT0z{{pmf8vSCFa87Fc_$?7X2%7weo~ zoIb7D!bw6GOT-|@$J6uG#!BnyQ0;@7jQiDhb8Sw!6Yf+pXYkK3;3sG>vNM&iBVWSG zo`;rpP#;dEaTVHhiET}T`J`OJpUNg=5wLWmNiKkgM`=)~2XAm4aT0nsmT2%nrCu}v z*(A73TBI}d$Op*CJ6X&NcFQwLHKwP~T)82R%1+`60!a-kPg3;(!qt#0TXe$p*w(vm zqD*m#ta+yPp!o%jWvHkpnfI3H4jGr|Cg5N3TZ+7XuuMf=BfXKZ;A5?~M4s|nY)%5# z7t;Bi*+KG2m}B=NuCe!PuXjo((f0m+X}E|{?&Lpv7f-nL+C!k&2-}{cd1#H> zd;Yv&PNS9{_I9c;G3K{Z6>{j|`qH9iNOj$6ElRTLKiaE9g94@wmYRlSf4ZsgM8?6c zCtE`cD9Zdxk%}enm??#<8(no`n?iXQFRLDG?kZe1A3brBs-;89BbsEN`giyrxp0U9 zJ?@LKN#e9=0V0AeE=RHcVH!7X5Y1+UnVVjOw=#fj_iFc-V##9R1Sk9^f{-z^35KfK zse`T|MZ0!M))?B~J=}v{68JGi-8@Ut(CO+@9L=qvsVig*6aXCrbQQ5p%HwX0n2~B& zAA+h-`Qc5hIDJTR9V^)PzOI((sdk5;=xG7tU||qR`t`w(apW5pyquxTRt5A!sZ7pEx(Bz)GlY3>yQ66tAsyDJ3ObD4g$+!@}eBE9? zP{oP(UsSa-Mwu)4)o#q_`HFB}?)EJhsuk#SC!dWSg`*1v-h@i0Dqx#$A@wb?8ghPW zq<|eVkE*p+Ms5iDzy|}OpNB-LzfW#>&CN%PzQI8JU_lFPLLlZZRhUxP%=UO{u%mCBy zfT>OcNwaNsp|Tk#Y`4b})kiKHw2YvDga!N51q? zTYVa>O54(w%KU^w;9@+tY2ID-;Y#W@GpT=Gj=nhDYMzdgwNXp=Ba3$HijSHG>`%#y z^9@haLhaeoA9DOUc0WzMruMh&tRItH=&7EY;I|RBe?tJ=SOj#lnt-+`2;Aa5j@{!-!ipk$yA(cmpoB5cK1B$&o2zKO3oGdMoj>98{k5f(3&xx4Q9 zM6W|WYNp-|2riK=;p3N+S4UPvptRqD0K~lv=adf5Nu>>MWYf5O(k$T#l%(8pND@=* zT+8d&4Mb)5{>8mqY#q^8tK!RdbHT9;+P8I)v=6kJl5+9ZNtNVQpj2U1D~clt87da^ zG;a}7T11&wi7|Ndjmex6_uJOFE`MnFl;asLLYR;F4=T#7vF{d{e5g=_uofSetrxs7S#O}o9u`xqARBUEzhoUxPc zs#($Cfz%p^m7Ezev?*i=k)3{S#nea)6*}@E_2D-U0zv97<(r$R7k!Rbh4mQLy!W)z zLGm;l4Jj`Z=bR;1<-s;FsYmAdPkaxE0@{BS%z_k|WlA9`QB%{IJPQ_sq7$*^vLffF z=D03j^?(=PvRe8;%oAJ3$~>gc0KfXu666)VYwg5e+X z)rL@T|yyM$n9VSbJ#HJx4x_Y_kS`*yYTRd zsG66Z4ke&Eps`k@Q5Nd-T#-@k!#YJeX$YyWTBgI=`5(Ld+MYMGPDx+E&zy&n68W(# zSub}j8NLG*gQsDmMUv&Ml-<1An_z>ZIT;AJz~V{LY67MamE?3{pWDIlNCda+kH&Jk z;OUk1eyDOg!!3t=ZjP+?OC9uViYj3u6l}L{F1LX(pgo|x{8=D4<+dS!HbpBe=hFZq)S{BxIpMdNiAfUXmmllZNQwd)>LNAQl9Zab<8od;ut2K(;wasTuuzZHDmA)=8hxc`?! zuQY(_m~<}O=r*dEo-c{B4}#iFmL3v)zPIZ2xM;9}DrTkHS~|{2^xRjb;IH~8ws^#* zGsB)cfr#fgb-6L3b!&~KCH?RxwNYQIhDkVdVJv ziZTSsZqF@m37>M=zPOaXcYj$%wrbFmdK>oPEjABa&71X*&mGe*m45g_W(2KaCS2f8 z5xsQ31+c$7j`R~t+$>AiyhK1WH{UVJ`^vq8-Ehs^+BAX(x(jR!ApH=5glBuPbBOa? z(|Du5_58|kxL5OSzVCN6{uJ3-9BM7oI~iOxpI#pe+9 z5!dTP&`xTAB57UEd&9c%V-!Cb>1(iX#p3(+905)fQ zi^i&FL(I!#FK6H~#QI$T&Vpl_HBo)94rp>+-@$hMEvAZDJMzpGW`Q~w0kytXr1Z7# zNIs6D)Y86)z;d=u+7QRSqc(*W?WT%!FNsL%##~lo0H`QfL%{1*ZUSkJd8?t07m4t= zde4{@dEY)JVw6{O!vj*qvP*W%A*cW_HY5Q%8J{~;eLBk+`zB*=BjT*p|8HvaXY<|r zKh+t1(8i5ia3OO2RFY`gun#Lv*sl7sMHg2{`M50QEoMw+UaiCBG-Lb$tdf zA2M@KseZ=YzR}85*vl`zo=TZ0ulsk+cSPWY0>Ul$uAJ(?6*3gn|J9`U6lRP{e0T6b zN*IlkpC0f99C||5-9&d83vBptZ)m>?dyLQUJYv+9gT=iDOOY!|`*Z0=x`Q3#ZI%}c z(<_fld9TfmTYYBljvbWJ7hbx}#Ur0g_O1`GX}ZG|73>pABY zJ_@1(b=`MNrGq;y8fM7%wz7-ciVL6!K9w1`h)}eec*9Q6oXRMquBhBN(_J2fr&#rb#Ec zfkSU2cSZr!LZxr*nj1r3Bn*Y09O2%=;LIN?d;J^S$E75lzuXnWLcSaA8@}D#gr^zQ zKSq2oIaZ*LymxiNPE^1c+vKS#Tr6ex9I=~kt72f!9{gd~%E2=zmIuKMbaet#!>>^f z4i?I77WcWz!$5B@MbmZ|pCIV7i+W5%ufBkn=B*c{4mrHBLjbL9=FM+?86??mI4_5% zj=byrh8yp@3c#0p%;fqU3_4}R4Q$&;*S@32X`6=}^AbS7G)iv4qa!uj@?yps;jIId z9Z&lN{c~{eS6Qj0v<`G{jGi5EzQ`o&X}d-bzWzaxJxTCp5_>I?nB|m)eJ4a+EaskD zR%7-ILBn|(ynMZkHe@M-RJ_zAxwA{K8#(ZoVem3q(cXLbThLYz+d=6mnFBehpg{JI zYy9<86_uebAx5|YXKFFC;LoVFYM>khrSwDfAP#CBr@D<`YD-R)g7>F~QHUN|i@HejV5KR= zk_#kQsWzlTxk71A`C4*UgR_fOekB*J&g?0VR+tBIuS+^Cz8s|}@-gre*U;ndL}!lZ z{q^;5&BZ^dRwL__Nji6My3sDUwn`c?4D;3yn-h?x;Rz3s5phwsty$Lb;s$dndt@OE z82RDpw^@&I-_?j+aArP`W36QR{`WF9MY(eR`cg$SyMOjmIm>*<-x`?SjkfdolT-fK zwJ_=Ap0(UAj7I4my5QtR0rFp*CtJ@;kzg~$)|JrM)pJGhA7r;1Hy?ke@6`o|?=;vH z+<7G{eMn-o(AxGg-&PRhkejV69K++}1=2t%n0gdSSpK)BiIN*GM-|VZJxaZxPj{K4m2jm|w5P zX07^NawrOH-7#QqaN|8OPL|_Iv5*FDf;1%>ygLaCqZ^3L^Jlt=O$es-teEXIWX~$v zGeO8cp~J{p*r`V>y4^-HS2)WTv-%zi5KKu4gRAn=t6j;7sgI^Y@~M>*ENhP5f9W8? zGT@8qDQ(#bnJv}&7|TUsZd(IiOh?PfZ9>Ytp5~`;t5JKcTj2zv9iiTX{HAV?SAuJj z^NCw(d<{FtDl#kjBvr!3_VIUGR|gBOYrpnHxJDInl_bV;jUQlZ5y-vP(cRe#!a%<) zg6$J8H&YveMml9Ih&0~>Al{~YN4MvIPo5z0P7FW@BgUN{&>8Qnq1q#4KT8j7x5i;N z4cl4M(~yLyfO$`S+&Ht1|!p7F6+qb~9bLmR6cSn`&dV+aS47|>0w<}GS=>G{)O3|JTif`$C zc@1mwUOh1X+YFsZ6!A^ru9dD20$bGAnz}04mdA3n7Nq*snJZ?}-%rOAsUVIPzcR{V zIGkBWm4?^@^~*zh;B*SdiAz%Y#`!=nIa7~n{-fE9kdYGW5=rOr5p4$DU<&7`2cUC^ z6b*YxCRI@OSSXtvJTf#?HtJPVWMN0iU}2!fxFqlc6wF$DxeOu4hR@)lc_?>a7-Uj1 zFK`Q}`y}b~^9S1?a_N-Ho8&-bz}Z&Lq4N(HX$)RCMmJG5s!m!3Z2Hg%Lom!|7bz}q2{K|J^P z>|1Qu5chDiMgYmte>6~T6+=a&V>3a>0`@u}Li|_kjFtCXh zn8J>TVa)J_Ooi_AdT1;o)eG)<{vMfTA$hfvK3p`Q(?h$at-6#%kDYg#QFZ{2emDL^zh6EbRpa9mtS6!BbOt56GO?B0azcqng^Nn_A>Adac zY@j-x=ZWUFcUJ@>I(*+zn1V4|^ImK_$ContUI-%CIj@rm)$?Pto$xOmZvwpgPSSt` ztNHG7oc{{~IlGZXvUl&g4BLvORN+i*Qv_+SN5&kXr9dc&_R!`(&0qL(zr$u$>mJl@ z;J9z^#(P8am;PRmp5;tzi0Jj%SL563W>!LkA}=p|m~`?Ch{Kj8)K8+kW z81Eia#}Cr!|G72~tT(l1$puDOy@Onh|L3SM%-agE1z#H=x+Zy47Tyl2K7{&d-1Zv- zg5*m)oSJHzb}q3uxF>CwNl`zez>|Z|P>bt`z>9z)KM7_aladXpnG{<9%SeAFJ!whP zV$Q=JjY2cI0WI|ei$Q8{*au^d`hb}2<5gMuakWhtqlGlzy2dfM+&6`~@3_p=wy%q0;>cg zN#M0lW$M$en%E=@eHBa#ttan-|90T%>>Nw!wz1(xcfi5eae#MO8xEQZlVZc z1$WiE>KpZKHSdX1wiw|`|Eg4Ym+XiV6|lY3WzVQgEaega+*@;cvppVdE=N$(FT}iH zWI?BufENsT-mRe|JHncLE17a`cVNz*brsdE-kKcX%%_Zg!?~d&h)*8`v~4u$s;$vS zX_g9Z#fbE`#mZQ?zaChrX^B1lc#a8gJ@~*5z$~u6y`E{$L*)W0ry4V4Gx}-a99*c_ zRD3UF^eh>HtLGKzByi3jDQj8Xj^XK2n(I)F;-|k|LnzJ_J2oRi=m(1|EU6xhLRj!p zr?Zj4e%AZ5TjRMVh|JU!(mQo-7)UniH08^hoDLnJ=P7ia6Ai{kUz#oyE=OAIRmID|&JZGQ{$9Ds`mF4UIg*V45ThnxfB&1$HJ zLxih{OHwPySVZ%zL1r4bvgJ4PVPX?BF+7eE-%klDnQ5H7jJ5Ibh>t(-9h~itiSYG- zBtCMEl)=w%wGjMT?uY`L_Vnow@iy zO1y7RNfmjVmPNm9y(7dfQkEl+NKdO2={**J`KLIX9C@=_Mqt;0&IN|tct%vLk@Pn- z@dbY!*6?cpPoPqQo^tYfHKPPZB&$m0?)Bd9VxA80=V^FPlC9gw$IC`kH>S_$$O^Ti z23u7a=Ij`a@Yrr(Mg|v>(bt`zXD@IC>MT^5gL5PXgWKy@36UcmsYXzXE%}-e>Cu3{ z0*>-2HFZPB)7Y3x9b?88;w6WHBeC`10Mm?uD!|FyX`A#&sLTJS zRlsF!Q0o{5er<9#t;bwwaGC#mLo3E^KLl{Vcj5bwP8|lI+Y+|GtGlvt5|E`PQ-q;X zJ=N+%CE2x*9+&Hp;E;@FDh21JN=%=>BAnNE~QO9~tgI+_~;kAq6nbRLv4&D~S3;JjK4#s0#Y%b3e z1>u9Y%{|rNtoQk}{yntec~0sc|K0qak#>|`?5Z8pyggHmPw60Oj|YOG>kzL5kT1kj z_K2=bMK&4QV?xGI0!a-0jSM`zmR2BcVLsZFDYCT+?UGgFf23EL7ogboKH*A*pOl%9 zElT58>e4CFR8pG&ms>6mIjgpWmDwO1<7Q;~>W@XgBFXVhfPO0Qp$eJ6Ycun}xNw$p ze6MrE`X-DjXEjl`E_R{;?z7qyPr~}8XO90vA$~j0Fa77y^K5ZR>}=43`t2gPSum>t z`Lwt1w2@yYXv|p9K)|12VvELbe2F1O`T$iL7~yW8tF-({bvu2CJrG9dMk0-nrE&&fzYFh^e&d=V;oO6XDFcPlk;S{65^Qp@q|%QszihPLgN$+@#*YV*OJ& z^1pA{4U4P92VLay)}#iv==_RGpeWU99UzO2<|jXhp8)gK8o7CC?whPF#bjQnTZ*m6#=cu||BV?fEqj%ynP=p3jZ|Jj&Aaay49w z3~dB$KzAse7jh44x!yGVj}p7-JOHV#cBY{YAWWV+cf~zA1P)D`j;9;jlQ-*Z;8aqk zkS+?>(pj@$)3!-6U^1cXYMm{^B~O=|waNwUZI!M^ss#f)*nr?*0l_(o9rY!;*#xuP-JE zPF4`G0l)Kf9+r6E*j79q0}&7PeFp!LY|X?y2|;wg)@i|SB&TIJGeZuKR@9w+C!=Ue zTF1HlDK1C3dNuBB39o868(>DSg>S>G)Cn05=?W(Zv6=y`Tq#S z4>j9$<1@)+TZ$Qx4r!4g-8T$ZEi#9TZr>v#m2z9H?kSy3;`^TH7i=;0y55#&V%`1A zJn3jhu=HVo!>qe;9Qp;;cgnB2nNSX`L1QIp@Lp4p^pxDyIdTt}_I#R;T}<#zG8|e0 z9r&0%zz}_Mh zUws!P`uiJkAF+VhNb?(e`)2C#{&DVQtn}rCKpo6=W@d0`OyL)XjLuqPnQ@8s)sVNtG{o_I3P?P9h+m;tc$3Ga_F2j z{zkweaG>f`h=2Ez7VQ*ihv2-0zx|~5u22w-XUjK#qm<){LIh|QpW#1FE6RI`dHBo- zP1=}nq3^DiWzk*`C4W(Di>L?4gg3|nb{v;tm4FxEPFMvFJH&$ZH4Sl*?yIvzxjMrW zCO>}x^`xosz@b0$mjqS0j%?Uak^nbZf7b?Y|4l7&2d<=W%;9{H8@$O8*bN78WS%4d zq~o1 zv3tb5W^nj}_Gqli4Iu7e2c5Gk%k$%R79T`Sqrwh`W$UL@I=-;EA7~`~1ogN1W@S-J z==+^XtbI?WJW2t%nt*oT?)oi;CDu1A)tLh6H^ym!wM|w{8ocp05afSgZ8BfBAUbHo zd*)TInL!1Gpf#xup=O1mV2rydDqqDdX3p+27MW+RVL1C4NlI|jm zX_T)+NDDS8HKsJr$mea#YX|G5NeKqb*;DlZxyVkk1;oL)9y zJP?u`2779x9=Nb69fZ8fEIh8!BUaE%?d86COE`n0{orodB~2 z3AnerKD9)m2)z9_M zd+>1K9#n|4{zyRc?7S%_)@fgU zD*Y*!x&mzvH?L%&F=`Qje2wo2%6V3aqh&FLpq=gQ%dP{z;VA%A(G%nsRrJxJm_SXe zJdtIasO^ITdJPc?2HREDRJ`&q^J0Uuw0sg;6Hy?A{2e@B*&L`Hs^GOUkk!l3=K0(( ziGdRVJ1$xJr7`;U^+)<)-j>$6uF`WH570Z{BjCKd`6Alcna{D{`{pWN1nB%g zqK~rhu0i4VrBTAVb5K`P$PpGCyx6N84jSHn`w>Ivy|do+l}1}KE^~KORCs?eitgBi zET2|bca$LBMPTG1Ikl)3F7Az7h?yDM{fi;;&hvnTxq)~H`1cbF6@yRDCkq?ITIQ`p zan<76Sm4OdUa3qDjr~J}L-!6`nuO0{Hr6flqOX>4C)=?pu{+beH?^F$TGVBJWktPD zp74a0erlGjCi%PAsJn!T9!7u*&vqC$oVXCg{GEjGyOpz`!$6ouV$15X!D2|vO#Hpv zsZ3?ZvK>op=7pq!+1ohD_}e5_nffGrh0D0AU4-z~P`+2#b0LnJPp{K2(h6$Fj}Dh& z%0kCRAYHtS@0`Dlk3}Gu@>Zb?4(DYB&2+pJ#H68k_KOEqZE%!2Unui!w^}5 zA$GXZPz@(t=pUpb_4JPx^-SJeHjxla=hTtLG^pJem&#Lcebirt26tuY*I(xeqEqQr z%0pJtpY7RZrx9<+t6Nr3k<~>Q_LfwB(5yEQcVRxnAA)kXlKGgQdLfIq+Tem?0^>U} z%1XCT)g>IyxaSk=B+u~%h>E~;PeKGwkx5B`Vc-)O6GnI5$m ziNFsLH|5Z*kapDF%U_~!u2*3m%4=S-6k-@5oKCi=zs}v5muJ}U<}a^j7sM6O=70=H zqzOJ{ECoaZCx|34*6@jVCq2z|nglEBM{RzUCt^L{1O8Y+>B*dN4)C z*Qgj0niA**zZLAQ)3Z4w*YIc7&`r*j8j_lt9vk&KQaUp~Q2c)#*j6<58=>hF{F7oL zS*jd6;`wsd2Z%}Oh`mD_o4++&tnX6)7MX=5;8CnzN5v=mCd@^}!HMe23`iXPl-Y*u zJJEU*#OO7G8CCB>sx60VT4cC#ET*WVW_)QKeNp_QUclQ&?&3r&oo^pfjaUR#*RLwV z_~cbWDB1Ea2iw#faApaZ>ON9%nLWpwbR-Vvul}0&UEv7GP{fp`9{IEBy{M9#6QQ`L zm;wMPK-Rw>B$w6i0fWDSk%-2xDEF&bXNQAxYmf*melvL|%(l#twijIkOkr^{-tFGk z<*;}J=R*tHWp7ad;ld5x4*+9UQ!K|nf%~{+B2vCMa>%VW)feXD@M{BL8(OVr zu4e}o%FGkaZ{Ij!o4mt|CfY&Zy*fV!!OESWe}SYFx-c);4t=bb(=GsONWRnHz5_*f zt%(fk-6eTZ-YLN)zK&--;gQ&DbB9h?3dPz$jTD_W#K^lJa1>vhU2B{M1{h*%O`Dp+ z6~ae{HfuFRT+hB0#M>a$VJ({zLm9rZWy~uW@WHm8_b`$RK9&uhVBTp$^6kgCrh~aH z*ic}i@wxhm=(@Lu9ECYCjtia4S`d4;*@TR(HbYe0^i0D=R1WA8Qa6?+tO23 z>1#2+yrOSF=!-V61?BI(_uX1%N$zUos+s~ff z^#9U}`ev+W1&FpI79A3+d=(8h)qQ)+W~IzLeus&R@93xYm#R~~Op+Gx-$VxH<`GF# zxC0h7!x9?iDe`_>tc>`UaWG;3hBV|XHuDmMCKz#$I%gq)=y6E3(AvQ?)KlmW9vK)d|`s8Zi{F zyrA&NGm}wn)^W>kh|RZEkIQcvSoiz(Fh0u0U0;+2V&Zp6ohG9~AuW0-fdMI?T)o%HT+O)!56;1zUno);xrk)KV@N0ZB5Eo&(`YujDO6|zihRd z^T?Y8;qxZ5lPLlUt~Rn)ihAvabgkdZG#0wyTSoHVRcELJ3zvGxHU&HgBY0-dg#NXC zYmIpB9b@R~j%|tMf4693Rd=zd#7PQ-OUC;03QNxC-cwosWLzud=(>f$q8xHaciIH&a)^?#ZlL zG+-T|XLf1lsC+SX!NZ>&}z2IREl<(KNk7df~*Zck_K~W>(UOMTmgs8yI>z4$HJ&9FEBZBP2 zBQOcV#|~!5FkCSRI{xr9&ZSc5ckGtmk*ifOW6tOm6}ij&K7SDt3CdGXO*Ptj!UrJ} zGiT+Hn=+%?YDY`I5e@fbK(JE%y5AswJ9{vtuYWnj+y5t`xYB74X zX@nyZ^o+dVG8QSz7F7@Ps@~1+gC?Mes(3tMzgfv8#K zJI978|4PJs>B7efb}YJ5s!z+Z)L=t5o*4#hlfdGe8ShgC><|F1bCwu^n8VEP2{u5zDDYOS8Rr>Y2kc??o_%^4m?q`eqRB8a z-meU!1!3$QtV9CQR)f049M`kk4qsE$97jqc4kMCo#blQ7IXftUQ?-m zUob&nWZV=76IuI%PC0-#e-X59e2NO_VA|9Vh!Fa$u??IgT3ma+;F#R>zzgBbI1A5b z8}Mxy3TPg67YTq)JGWIh%#fHb-psgWNPFLBMR{Zoi5qzpt?dN0@<$Ix>ok`l;aji! zm_WBcIaF6FmkyCCGQai;68fFh-t2tmchZ~vUY@D!3T;`D;HokMX;1DIrvJhZKe8Iq zfV7p8>#R7p#N()=(+%m=;*L%Ni&_R}3*T;w43bmpjZa>7sU%@JiYtx!5=)ssw@{Df~V=yJPn{e)hdu-;Ncjy*V?e# zbFjFT`DC56ElB7DW#dUd6~`~quf0R(aiCtkwU)X5)CjK>JoV|E=XrhVMreIlW2D3B^p;{jbBTM5%L)w)v;zyl2?VV>DODWTy4b)u?Q4yoJ(cc5J7_LmNk zi&-BzLsB9Xi9Oa#*T;hg30wCzgJE0WLnWGR=6~Sk#gN&~7ZFUH2#x1?mLb~e$={#H z^Ac2u15$s20w?#S5+v;2$C{;kx+!$FV}T#IkO22+?W*~UJR$^p{}GqI{d+_-YD1!A zdjVDfkDzI1Zz4u@Pf@D_stmz8(*Z6vcpwRmN$T-qcX~d+5-W)2;VI8I$*5rO@?k8Y zcfIuvI##SEB>9MI7;7y?t3Z|qyJ-mXUf2i;+}yMvC#!x8$Hbu8+)HhsrqF%%U2Aq} zV_d~$&NqSHjpUY>Q=zEhO{OK&d9-U@15$Gu^1N(xA0m61DD9kE!MkZWj+0 z8>e9bsccM;?Dhr`au#v_1~2Cp`$XYrw#Q*kS#s6dUD7@GR7s1hN6RfK^g<#Dufsqd zL*%{qrOY#6L6Ye=&0vS_fTqjQ^W+}RE2Nq#OvoRUNv%d5BqLlST=wB+v!P4dp!Pms zUNZmV&{TRk8N4Q?P6D78^V;Qpm2pFZtN_Ze4XC7wE~9e|`=hredPwa5#g%AB?Qo6n z=S9ofo$98zV_O*DGcZo5ftj?>zz6|s_tD3ZhDGQ!{FqP?ChcR zRBTjeQ`_ih?C5E0y59#mOM|j_vHg;sK0>e5=0x|m-N#v42j@r0PXliwn{4`P-bC{8 za8_7ZO0hc(6z%ZK2V+WtV6Bbd-&AV>alJnB>@9-NdovBaZ7uLDPPu-wn8t`}#l`)2 zJ4>f7`CK&}EVq3ic&K%6T`sZK65wNJx)Ar+WT%qMN#4qU%||wvN<`*fT3LvxLbH+K zkVJrj;b3^iuERo`UUiRpiNrpuS3Q(eK;5>3hZe@$<1&^_N$8i5_|X`HD-PV3z2A$a zVtt>c>~P#eF=hb^6F`VD%t%yiOu|k`7O(3XcM$= zen3c-7-6%A*5do4{^1#0fqU-eoggJh_G>1$XM4&=wHT6*pjjvbp>K7O^ysc{+PHYb3lHu|Hp+A3!Hq^}+deFm^NF+N^mnJ^euIG7y-_%hB$4!2+~!D< ziKQ%rXb*b}1}Pm;qMRz?Uj(=;vU`o?a9)maB1hWXwjmp|RE3DgQS76j%oOwwK>3<{ zZ0q0FdVBfNE@Y#nIaCh2@E%R(@lP_89atqBMplDK+>hunItfR=Y!K&yUM}wCLrXm;DqT*Ue!^>Hda;X< zSsR&I1C4qW0ygO>3|rUNpZ!BK`}I0+C3tGieRvykSS&g5N`Z1nL*S|?cCw-_VjvzR z+XBc|Jk5dL#&VM0(<=nFFE&6fshVR;bF9*al4-zuL8R>=^k!pm!7&3_+jt}-iQ>@+ zp0{A*2S}6e0zcv;L#Q*I8C)4~*TS+`SVw6Joxvv_kO9FVAk(&*lT%T z-i7}=)pqwu&$hB0*1rkJ7}|4-{NEzJV9CUK#RutPuKot!A6y^|>=IG*n-Clj3|syT zOQf2C|4q`#3Js#0v#(%1d~1ekE^ zpPJ!|4y)@?d*2W;@_uwSAYFrCQ1& zU@&Ij$ie-EHty*qg75dA&1Fy#{@mlp4ngl)pX?pE`%9~=B!;=)-{*l-AJP-sAb{)3 zL>GVV={(Ry-~FT?E<58u%)!p+{hLY2ayPrt>!5xT{HFfETLBRa&M&P6d7$k|a}(cQ z5)jWlzLOv&rFjW>eb%w&oh-_PZiPvLz05#4ISlRERQL#tfGz}^%7wPia%i3QO}#6N z!q_Ox?rRBVCNo`w(#ZL;W81s0e6{^qPMplHReS=jI2|%=QGh&Z#i)Wvi8EE>iI|NO z6x{pHcdDo`yx|gOjM@SGC6!fUU^HVdWwLJ%>@Pu<&@FEh+n~Tg)%ff_zqlYPlv9S4 z(AtyMXolDDV?1IZ+V2yjS7JK`xA)w9pslq8KR*#%8Z*{MlG#EiWc-FUtw-z0{i||t zx;TYyU&K>Xcj(9h=6j~IH8HOdAh5?HHP&V4{L6V=+tU!L6BV7t4BKjbFaJRU|nBl4WHiHj71$&BW^$2lX&?)9#$^Uj*P{uvg*r`QG3fYX z7}C6LjxJ&RV^x{y{l(2^Cu$WstlRS?)4)F#5Ny0U#E{+2%LZhAN|X{_f1+}qY9NMi z^#%XsqKKH#dyPo`g4h->56vd#ygrufg`ME7UhsvzQy8T-28?I}r}ZWkm`yn=kb%mN zeI;RtcW)kF?4$Ta!+}>!uOXZgcsRR-jL-w2ITFi8%Qfk>whW;c{2d;@#2}MbHKNb? zT%@UDHa$#bNjOyf`6Kg9-6G@gW8~l)bYOLi`ehK31_Nspw6u0fM6Mc6ZHq~ zKH82wjG$jaBi)n^b?;#L|JeSW9Q>2W+9Vb6+c=efK5<^&h^78$zfd=Fz+YIXd~W+? zjy@L1^Gr(?^)R>t6D#M9dv&%ZQ1J~R!PSUF@$!FbXcrO)J4kj}F~rv0*A4m|MY7W* zfFOONzb>QJf99rx|(W~2&s1#U&{3R!#-)Mpx+bANI$J;_*Wx3cS zP2wk1JuSDI>CC0Mgb!*WnBN%{-7JTkt1&ig0a37sdTL)ey-sya zVzQKaI27ZzFMyKuo$Hcl?&IX|QCi9k z$Ap&^1PiVqq&eQ=1l6@D#)V0`8yUnbj&WKQIhy`P^P6Ks#4@%k7?pOUN-9~uobwIN zOH}4B`02!EW7$hPc)QU8?Rnn^wncP~W+m=9<|A*YIGd!YD*m9U-d}>;^5|U?#j$Ih zu6`qb*~l!bYbtgNCOu<=+*@yisA-`EAgbM`3&B}{81I~xc*MT{Z!Z%$ z8PGq!C5&PoY$C8{HVqeeP6h_A4GZb>8Wa6N@_e1CdwOX{s!!)&1BLj8Y1n90=yVPL z9b#jksb9jh`fH`CJ1`~E^c+7;m4~iNbtpdSx8Solque)OGKbIfZNej;!<~$|2XK;Ynr;Hbv$MX5Bq|*j7 zWGCgMQsGC%6lBD|_7U4xLCu(u=sGDbJs{*X>WZ;%)VZ$_p6EtxVH3&TFpXrI_u4{V zk^M=Wzm_eM*Qmsfr-((GqQW56BM+3&ss_Vsv&`bq-*$R*HZZqy2 zJuDKgm{AwUSC-ASqDys1_a#z$Yg&Ve^chbCu=UI)+vpizme>)|H;* z_)i_zy+2bTaM?%Vzxx+`TUTw6zIj4PFGq^N$GwU?lqPFlDb>fv^C<21{W{}i>Fvvo z(h@q!4Vo*O2l{rFjAgE~)aVB8_e7I-P-gGOH(Lf+k$1ZGx9MS6)y)8S%;aWbT(!!n zOIuyCIiVQQnHw!Xrn5jaOS0 zAj$!ft}fE8B}uDTDJyXcG|(>{vS^ry&XitAo_gl1O3pon;$zTFm;VnJrU_y z_4PCLgs?t~8#{`SNh}4s6(~nGtut~RD+ojkLtk@K?EaT?Le;hDZ5JV8#qh1`8)&h& zyiYSg=<45XQlF3|Xe~Mne@Nu9CSW#wPJXaiRQB8ZQwS7jGH4%HbwW$H+M3isvnKKc zqm{>G>(eH&wDWFs=`bZ>w-dE`Hk=p`Y=`S{7t`}0Tn#3sD9}NX7f>2iC0%eWq&7Ou zJ0^v{awMHL`{*0b)zYHGm9qHF0mge6J>2Ad=QCM-MgJ2-eb+gci~k>2!(zHOZ=(&- zyGl)XcM9q}F+*I9o?`5tYyH4f}C!RB#eh}w`QTeIOk6@fn^>Wvn2 z)sHrMW>lp{-gBhvyxS8`p0rpMYWS{!)=!6uph({7`73%h*{+gew4h7Dk4nTD%M#vC zJzX-s|MOj3;8S~hgM-GIWA~wE9XjmHBZ}ri(6ls)i(&!DpGU=lpGDEHz?9j{KlVW* zCpmLfE{e4{ax3%9+}_4Wgyf1{YHjy!o?#KpO{#aY803wm4hEFYDD*ci{ka2d?-_AZ zjO&qG`Fx5=6@h4|PvjAu{eqGw;3Gi?6`_0)&0NQ05z$CM+~mNehFXTqNt6lT|AcV zVB6GOll!=H<1oUBhC8mS@P2a&4Rfe9}0W16j#Lnzs?k=zW1@K}J-MsPZU)FIZK?!eFat$L-UO7f)7 zL_f71kV@S>s+!f!AKe|q(1514+FTdt11LJhVV zt(iHF;n$C$slxL88;Lqc?d%BwFe?85?B#s-Z(Eea^Wx19b1GknO!h6y=YtsB<$MZ& zGb|^bK@`Pad=B@Sm$;u@OomxhN8ajS|>Ke}AD zH$IJb09@Zc-;86Ip6){9%6N>}3xNsw^^s~b)XqPnEgg{ z!-H(EP?%bSFh^BhHdvyic7LmXJfM8!m5&OrKs;(HvppFE zMHC(T$wCB`IM%w6(kX<5isj3@Ki(nik#`XVqhz?48w6ca0z4hD?BXyzC&m{qhZzRG zCZS)!LbeHPp3L6Rd7(z&E8zGBMy#Lx8Voq$G_*)vC+`&WXOby#dKWdMdu>O;?N;~m zcRbTAkwzOOZC+`)bax$eWlh0H1g2N|RT6)df=ApTIq~RwE*X0x58la}1dkNp`o7yv zVqBP0$%@9|`fWDYZ~(0zC&Akp+znD{o_-AI$}$GT<%^)d&+m74dj}v}TkTBFv(12| zVM&=Aj^aO$qSv#@a4jV-F+5=P5qBk*7 zvYHr|hUfT|s6iOmMF4h6=V>_ohutT1h0AOHdXLwr?6`7~t`Q7RxfafSSgd80*5;ST zwRf)<0TxF#n?a6-Ad(qLR+v-n5Pk)ItN_>ZIzV=JH6cP`;e+`$RDXh2bLd>hk4(x) z|4{J6ELkSj+b7_E0rp-rVod+4_hg^?{=)SnPxr8DK@alTol zsYU>qpLjH1+`PMl$3rZJQ~DTJkef#2dKm5D*bJw}>b;RLP+QwP*zSW&++R)y&wL-# zlC#FN)-GbnvQw+K{!815=w+ff@dg;%`>Ib@v(>I15gt~gK`rEPKl&!ZKVu4}D-znm zbALEAGlbFpOZbZ*FW^bX(4JLfEoT=i){+7=7r~t`<-WiuP&*W{)XV6mvyDCL6<+*q zK=ps5o~a6zh{eHv#n!h!Sbc~CZrQCXH*Cfzn=OqExM8M+7pwT}Lt!}?YFMcW@=rOH zNTrhMB&&SZTd2OvyS@kmk8en|bEcAuy#WaJ1L9m#1TWK+$Fc^Ly#0_kZoBSgD9(!t zLntZq21qloZRd}k>xo=+O0SALSeY*@?z10E4AAs5P7ubtNz8HRU~W@uXhg_n4y>X{Y{NdN6|=2)!6f)4e!At$Gv8Aj!s8O;iUNBlktZvvN1|^xV#fi*B2n z9Cvk}b*NF&<3be#*kVH!G1(Xa!lt4FW>UbHnYRa)eumgv$h#I};Sn=KTSgkx8|B-@ zHp=pWq5;Zl`RjX$WWoD&A@>rWn7I>$9`pahsvD?bcNLc%Z{C_MpK=x?mz4*^-Qd-= z3&zVS;J-n=Y7kzaYY)~Tv(btfiN?|gS7I#?qf23}6Dl(AE`r5-adB^>E)3KPL?Sl{ z$p@gacs^TrI87aDz}T-~j;myn^dry8=u0wu?hv5wBBlFM z*JBeFNWQb{6inj4xgJ*>5}ikS-$_2Ei9>gIB(@x^zgzq z+24?B5>RSZvWd_mk-8)wO0xlEhW!tqmuvN)u)WgOzJyFU5Okn4D-{3L1AfsV2j9=u zwg0`OKRJth+rLZgK_q4jfa>md=YcOEqu4f_pthJz?DE2}vlY1Y?iImyeR|d*oy-kD zHSrk_WOLce*bJ;Kp(MKdsfi@E8?N5T65IKJp4(!)}%4(M9!2F zkSP%|L?~W%v4`96e;l3AyC1kUz%a>wDB6jy;Pv4WYp4Ka2bJX9Jqlra{M9OgTnJz$ z-|^2h^Qmzh3;$1h^@vp;2wc784#GBgbGx4$`miDZnR;)mN)J1Ut&KZ>q`n4H0mF11Q)A4^%#aX0=CweQyDQj}#Y!6G4&Zw8t zRay64Aq{&CJ(U9Wpbz#!H^ z3iDuddJ&Wq0apGvN34lG9SpfSt8A+Os~}}aV5ag;z>jMVSQrsYv6BVTCdWIM$D=8) z3567iIJ2?Su~+^_g@=9Vc?KhABLeZyNKXw5?JElv!RBdY5U$s7b*m)Kmh7zjpMruRv{P|lcX`c#OlaQ zIVIVVla4l=)@y5w(}n~hLmrsZtPx=QL$`X^K+imm(oK30FlFN6O^dMbs@qJ;sTahg zptZ91%Z{8B6S1yajAYS{(9TyWVVJEuvq3UI$l1|33L6Pm+82; z?kGZ=l!Uhqkz|;S#|vCJdyXE%HnmnZKW;^11y2r5bdx_CY=eJvX*T+J4=Inv!5uo! z>#|uAOje^*toU9@S`%7)bEIr zO_>SB!(9qp-zzxftfRt!1lw~HJOlQnk&7J_>+qXdP_06mB+I(r8f8@xlAG7qmczg3 z2+62Ml$xhGDU+bQ6G@!b=(~opG4UMo6O4D9640bslf~wxxc@}inPRD<0r6Up?+=-; zRvSiM(mR$CG31l1Yg-l+g~c~z7{E#{dm>ZlX!gMLxAPUvsbvhEk|ZtLG5%y#r23Mo zwAJUR4afiGh=zL5!d)E%iw~|_4z^EMEIu@6?QzAja{KZbx9uWjMt0Ipp*d|Imp!0QKCjS>+pPjy=j}%8jNXvQhYSPl!7?rWNdxEkjupUgs~Wdr zJ>lGGBf{6>l*vB(p?oRL2}>Y7x&_BlOz}df(%F+<%#@CwHqkLND>~g{qOf@liNjovz`heYH*AE(-|G)yeQ`qN{jbDbN}PI3rprxa4x7zWYMC(Bg}{7?;u0$I0Dfa)DJ5x# zTd|vG2KyRV&yq;sLQ?!GY*s^xgpMmo2i+W)q(G4AG;~W z((v1Ksf)7bq+^6lNP-)i)ASP?M;G@AZAi8rmWPW$O<7dh$Uf;hgC#?V>~#^>{!+Rk zjW)q4>ObB9f=9FO>K-cXLWg6jUc3>4tL!fePsi%*DT&UQe-Y4rG~kzp<{%PI^XV4t zP(bGhHO)j7!Sg&SO)+Q92@LXZ+^xQxOU;fvwhR5DF|z{WKso3X<` z>}rN)q#|Hr2RjSw^Ysd1R#e&14q`la3<_ZFUEMprcH%#?ySn?y-K#TV8m+jh<>?~b zZullj$#Rx?FJej7B-0F`W%tCkVBK&#ifHx37Tb~uwvI< zD^ez9CrFmeJE;EJA%O$l%Pgg`jm}@~Q*5AekW93FBbPjpk}^OU)Sx<_Tq}QgGI7?U znSfzvL&G3M1Y+ISAjpsekKYGEldI&}3tB_W+wu)DollGl^V8v3)idEK)Ky#SH8oC} z)a9|xlIva4TTd|g;l4=?Riodpt_)%Ks(uu{&P^oDliQ=e5xcq4kt33-)ylKthuj^g zn$5EoDt*_H<#!#TX=E?wpNU8`gz|lpa|0kk0Z~BuShk?=;S>LwldLe!hp_B3@oq5b z{y3{$nC*rA`ifXO=a7{>ZOm@30D8(mSc10U2kgd!3`GS=dFN%KXaEu)H+?a_+2_GS zRDDy8so!OPbe;B&B+1@xn5xtp@bBWCvnib37k%72&yf+2lgTHfZa2VQz;SCe%Mq3} z5h?|Lm^>L!01bP%^77sd$tBDI!~BRgOUdy|u?sKr^O<5M>HrdgB2Y&*}K`J93jC#3MPKf*e@Lv=oh z#@U~sZ|TLesP6W3iilO_B~GRR`$_R$= zq8K#hHvX$co)Tun{QV#*eAl=cHdK49`wS=^QpxeOy{`p{w!qE*VvTn(NP0T{7a|XIKw) zcbK&+Y{#Jmr~#uwBOZ~9jnPvGXdiI_%20z@ojgm{hh#a4>pqxdF7Pn&oi3wLrR>eC zFct|W(9S%5DMX%gW1~rM?mm2xf6hn=#@?ya)ItsWBwKczw?M*0^%b5_zxlBj95;vS zE--<2PSGY2qFLB4jX+iznan!QYV-|B(fYUAT;I`dQfeHUewuU6rxR=52amS9FhceB zU`VqVSm~p@n%w-(Ihy{cgzra1<{zk0xS?H^N|jWXgiz<&69FI$=$N{V6ZekE_@7%J zN&WqWA0N7e&c~W9eUu;F>*Gl*=5m{1ynmbXy z=BYSS4?#Kx`3!+v@ILxeP>m6io-hW{Ibf(Qpz(zI>N1^5c!J_3|6_PPQ{!|CeAFU*M~NH|+58`Ly; z8o^z91!wVwxAPDz8IDkf5*GaH;qIj*)ff(xS7jsDenGXOW!+frOTf3nk-QrU zV~aLclEW>M{<%APV!k?wI?Ufc{QhimHMCo$b8fsx)M+w^NJYot2^>uBvy5n7wNYu+gX&X6DH4F9)&g#s0sT zI1(bzhiNHBi97wvYM!{b-2~rqi^eoS+;f>ui=IO|IYbB4<`Q+h3?x(=%0ovzwMs+^ z8C&-UysbJwS6<@y&9%nFKBas|9*pH-Um(MEhJk_lMI)$y~#Ys6jNjK`YTT$EMXG4fkXziABWf4sq2G@aK&Uer|G)X ze&Og#4xehbE z@y+%h;oM5Te{IOvt8o*i6%g~p zEL45_II+ktN3|kT(G?D91|u0>?cuWdoky!mFYZbo6pMfJA=U}gzpmO#VmW9-mMSTP zeM%7vP3rp=jw}fyawgqF8n~7&xO0<%=FSS&IhcZLqC70J}KK{YR+y0pb*9?(|MBd9*Dm zK8sd->i^-T<=Jk~r;C$OCmq>9Oj;oAKG;d*%*$bwvov$Btv^E$(p>lHtStKf;6>is zxjj5c@@Z~@RiAO%Gvo~FAS52Z0^_fDZ6&!u6*Qa7h6@5CACAj4%K%bA_Ljo&?8p2m zmPG|=g^4S-yJL*zuA3xao{JOQC03N4CK>7rH@hr&0v!4F4k@|8TB!B}h1e#*xZZ{{ zD^*j0yQlS*<#z;jB+x&)*yFJKliVZpMs&-~gBiwfuX4F*;^-MVoZlp8?7z}=6P=7m zQG@Uu^EYYI76*3%HWKnZmw_;rcKa3f4WTFmD?Xu_F`nLZ(~yq5S*M&yMo!cJ{%A@0 z?a`>LZVZ8dd2$I~jwstU3+|*x^SwBD%#nokvNkDMqYhZMbx2~=ma1s$m_-a#2im8F zE>#0&Q~pIuWmwW1jhT_lt{n@Wa#kQ)S?@#p;Dyfrb8|s4+1KZ#0VM@a;76r_jUk`l zbXhC3Xgg1>t*&MOg46joMfP?E3~RWMMg=@5IuM?`KIjkl^L$tLl&FYw=1z&W;3v4k z5P7s`Nmm{IZJ%DLzCm5Z|-mlBdeU}u~@K}^!+(!$-7=%hs? zOw8xd&98KIng=^5NZp-KkLIkp&YghbJ@YGJ0CYex$q}PO8EO0bk&%)O2Py;-M6Z0r z&`sMpXpf{T4cQ}sEWZuMjL)`NF5*X?X(?0?2BP6l*_+=`yP2+P@KYY5_UIXex9Fis z2S!`PL|2IguxiEVK?YmO1&fryh#iQQ@!?IpF2%chNs8LW|LdVIQTiZ=S zG@c%jv>|mBg&G7zgBdNY_}$sms4s^!mM{$>XZG8Vl6GqltlMY#zv6wEk2@#jZaT{& z|MLK8BlO%|2_qPN>W2d~1d|?94aj__6Guj|Ng%id4A}Luw`KW!fitm_=JkkNnAokX zcoXq#_Kx7`#(8!Vw#-Z>9qcXw;se`0jXM3n)wL04YKh`lt%kepifeagjT`ggy$e6a zqL|^g27`@5vI7P2n|7AE0VJL({8Yu(_oPhJ(|7M1Hs9z~a;rHGEM-|H@4iv)K;#&F zv+$4op{p48#*P%f_&;Ao6e!kEf6CR?tCckR*BL9Yx2!SQa6-GvE#g3_S*2aYMPLQh zJ_KCNLKnxepoYsh;W*)fVV>C0IY z9+3M!m?9Y~Pf7~(xZ$|>D*%710kW*4Cv&XtlnPBMhDKxx>Q-n*AVU9J&JNppy{_2T zXc3*n7RUiZ(QRQchHMTryaCN!761B4c4_JQ?3Qk1Fb>S~SK`~i%cOlFT&I7WAQSN; zp4{f!YIH#9WY>M*Jm!}t|4s}(Cku{+9mLz{De$q9F?#%p*2tj2MB47VOHAfO%#@>ohD9?qkzW8A4ZD!R;sp8ZLbB33a-TuiLOKo@6{X3f7NnjSaVs)ggLe|SsP*MS zv4n0c6E+dh4GO4J+TJ9KUvPDg|8RHuwxbRmZ`@AuSD_0lcjZ{v29ONb4qd#*X_?zbrVM_Z0zON@we!w5sNW6dx zBA!Wn`J3WA#&4J1n_%(D5(yy>!%YNm%Xg(1Rs3+whGixVa*OUeTEEt%m`_Iq4|B2Q zZyXW_6^n-%a%S65k^LyN@eC;`y|ueAOCGC{3{(vm!ApFNo0#GSVg&W34-x^+BB4!7 zf~T{wVMI@LHUq4wA76W?0@R0zY$(z=8!#v)u{zS#Qsl?ue)TQeBggr8{F^P!I_@3! zC;i{MVZ_#G+s@p!>N_}4MpCTw(U)VLvz^Ks`qjvFDggItJq@VAF=JF7)bo^-FZ^vM=$M>3ev_L!w3sel22NIQ+YW z#pPn)oFs7)7Nu~Or49mu%Tm^>G?w{!H^U5GpOaK+XU!i4P8E6T`cI4$Q^rkv4~O+V z@0BQ;l!EUp&&&$J^xMFr?puafIAr_r<*bS?Rr}lz)-BS%(lpp)JOZ${=M9Q;Ux3Fbv zL71%D_zknG+qps&!IR>aObL>u4c94|2gfmD#(@8Sl!`xS#-ZL-l_tYH zs->uIs96)S&(^5i)qD*!QwyEypqtJ4b@p^Mw+<||6nr)6wdw1v$ZVJoG`Bt2YS8XY zN`i@P0s4lI^s))R53PlBY0NI^;OAi#h`t^^&Hkrw0ybWUkW{gfVY4Z~djxVWUCC}# zR_;K+OUTrFgTwedL7n`674bbnYV1_GQxScUPKngK6;Ass(TciJ)tWRXbDkEdJ6(=? zv`d$itXZUVjJupxp_|2kzmO-du!(z`q!&u_HE#|_AbQjiGKr2{ISnfl*pR7C5LqeNq=5Tg2aevn?fz%1 zYT{AI$=&9)^m)zs0{c?XFMobUyfz;1qL(=oL6V3ziAd$OjRaSKHm)v$bkZAbF))4I5JMS@D@~xLy;4xU(wKvc(IYr z06Rd$zksDSs-N0M(&i+=`FaH1*rw^joKF?|8q$s|j#8)gF6+BPnU5t!c!n?hg$j<= z3vtfaOp*g=D4yDV{q?IDw7)N8pZ-mL9x+PGc~b?$;j-*jV|J--^ytq@HpqB%Bwhr= zWgJk%=W_@Ua9~m-#9s2<6vj)`(5u#^gV#sTKuT0H*Du8+8KBP(Qp(spFwBfTObLoN zNYk14 z9ZXLK_$13|5p{w%TneZj7Tur`YO2={ldZ3r2i}|O96!EKRXTe0sMFS8M0#uzUVT|X z@QUc3dGISM6Cu22CttD zXi;pY?Em(O;*wQ*Bn6EvP`KGRSO)QWAPkB7Yjm%ddL~jO!Zpi9^6Fq6wrsbf^#nW* zSY})F=4u%wdAo&pr&Wb6BFyum5E%n6hti1MA*gB6I-L<30p8iP;;K2Ay`Kyf3)m&& zyoZ-EkfCHlY0tvbD7xNs=O8KDe(_~wEJ#^T}pONAGP4dcWGuQEk zHCMNfmEg{F8QQwYUF%3_xs{4Aj-RrJ3iD^TPA1pfj;e1(q)wTD0#=>z`}Ii-jj5>*l9YuOW08TyD zQ&~eTXa}i>LA0kfuwNqyJVAZLA%8k>?LQu=SX*e>e6wc9dnbsR-xZ0T9#eISRnG%8 z3$1JW)H%y|SbpGqu(e+XLDirGVv7}vbW*yKz)B&E+WvzCvIUGB&ux$IT-Lj}g33Q* zxH#7L-U<7HB}o0LNz=zLu3<-^?g-i*%rv`U8``RID3^ny-VFn&3cd7goo&Zf6pFf@ z5#`O`vP>bbfPmSSkAR7p96mzQeYZRJIi&g%@POmfCwQ2e%wwR*V+y0bCDL@V+W_S3 z5;5?9LDO#UEKt8LGDRV0;-{<-m-iK!D~+`d3QrDtyR#^E4KEQwzr!hO5g`EkINIq8}XiM4&%@(rLKPmxk*bADDOYg zqOL&x^fV!14+auEgxn~+y8ze8uTZ=y6RX>>xY$fu+O;Tc025KxbH3vKM;ReFsPBsC z0Cnyj4JEoE{n$H3hV2@$1>-fXaYuaF)CPQTw&%IE#52$ypiXq+0Q2@BsKf(~0Mt4w z8eCXP-oXm=J<|ttxqM2Q{n0n$Vo-S@mhG_i99nfTPXAmWyReIr#zb-NkYOO@H_3Vd_{sT$SuGz zV9}4(^ILF$pWV?R?fyh?K-ofak>aUfFKer)v2}s$!Q>TiA~Pee-^5WLDexi$E?sNIktg2VWsW{^eKu8tf$Fcb{-)d7iTW^H34;MYFXT+72NgylfTw z5AE`T#Jf7f*#c4K%OLr0)a7ri1+>Pg)}leY!rAtk*i4Q?wg0uHzR`1Q=__;X(81=2 zO@@?&8s%{1FG}r-Hg+s{=e@~o27XTnAt7bWV+$UhgX5sKx|3iJ*UHRPZ8}0=$neBu zC*+}8+{vGH*Uu6f`o14G($2=5d z;gT^t<@Sh*XV2JW989&@W#`VMpDxq9S$#YDggf&;;duBvtsBov>0ZEs?eHeO$sGnE z!m(8^03+>{mLd2Cv}=ZU{Hq`)=>MNF>&m`2vjWDVkKP4La5yv9aMs>T4pyWMuwY5 zb+9++AeGZ0%$Q7%ZobQ*1|C~fHxew*PDWn|b`>&F<&TA0c-XzKk_P8JQrQ&ES`S=P z>@@>&gzbi}1#kAGHT>)HwX7E-5#}*%8(XNdHxO2CchKH!shF?*css{`v)LeDsYyFE;nIpSpq_LbjQ-fR5Al`_dm4${?LO@#pSak|YEshmKYb4? z0E5IJ>i_nVj~{);4a!dO|Pk!vf)4*q|eFEe##2LV`Bh3>?B|`ar>v zDrq^(ig7e^gifv|!kI=*&5|u1yjgrQwEUGdsYw)&<56Bs^Be`^BKEU%j-*{5zM#?i ziOhRk0%@M(;=fGD!voZ$s8M1pVp| zbR&2(0LH6KEeVSsUjAu#(-^A&H@Vbd*|d2`-wUcxUbN+O^zCUX;*P(Ati!i?8V5eh z`5Gp0&c;6{rFu-JK)@qXJ7#jrfq-r)8*65tGt%UQS$Mvlc0(#eLIic+8at2Hj%gFg zPUN^|l&=ybvI$_SZ3HeYhpdS1lE-AGugVMgO|C12FMOP^_dr-LTU~X=w=eQAfyF6Z z9uYZX-HBBv`K|8cd6=gDM)ej16556}?ZLnYa0fvs@iIdF-ShB+Xn4URqf4ErhWM>uH!A?U z+ak?7xOOMUi$5zw42DXL)?vUw*mGwXGG7sBwq?pntWpLC0nE^bW=~RGkv|@q;lG!w ztq-|9Q9=wtVYXLz_kKo9c2^*EQ$_n!scbmN zqx8Rp$LdU6&|Y?3@N}CH`{bZ8U4+ZSLHZ1LBCpY_4?FiMYNah4fVst_xC z7AaC`+0g!Ca6y$By&K7v+h*S#<$ZWNat?GwJzkLP=(mhThC;G|T3lKgmWP=-;zuCZ&EJxa>KU{n|%Pq)#=}{d34~sg_PXMj#z|LQ_TLKS$h@-jg;Ye zABV!Z2MFZd-;3m!n(bUV(i=`$>M+IiA^=%Rk2T}rsSfKbYvZGh*`BZ9@9>+u)cn^0 z7WgA?2#SQb!s_YcBaQ#qW z9xDH@u@K1lRZSzBQWkPj=D#kvSq^Nzq$RRG^$r5$7V<(>Gl)F(`~x6kL>Sh~3HW4! z5k+hX3VI#lL0D2J-xIZ(N;WZbtG9S{~s%5Z;RzylAl~PEBv=-S? zTL^fh5lQz_eTL!MUKNy49y|rP=$8?L^Stabb*jjfJ{=iRMt=IFx`V6^SHae{2DhnyGVtRG23waJ`OMuEc8$IRrEMEsOqA;r z_GERaUJyZf~Dy{wN$kwm|eLzmmNiC!qk|i44_E`OFB{9va~R z&pisRt2k|8qV^`Z*GAzi>fl|WcsWMkgfkcWMu9~}YY$B$Wur6@%O(1c6V9nh-1S+B z_YR>-wNTg*k1nvfuI(+J1(jTu-;Clld5zHOfHEu*r0;F#YzJoqS{@s?jJwfOZ3BZeY!iU zzDfjI9Ww17OVJ!uM4I`DohK{=+%dPi)sLJP31e;bcZ;pQ~y~`cx=pRN>7avl^u9#Neo+E8DiEn95e)m~JCmZ!Qbn z)HNORUU<=`?y!rg%H<+X=K54Y zlL&HtNIeR9$1otir#tGvLIW(B^`598x})$PF(FL__9@F`b&}~vxVDQaZ(arU^ZcO@ zrdf-gM*mH zkNFuYOCoO$f_C1K&q51)-k!uKL<%Wf_GA{$##f%G7}9|7YsEMs*S2%PL8BbfNzP@n z1kVJ+0zjf*_ZX*;KmeCX{9b5wUnQ+W$ zy9y>cYYZdNDq%IRFB_G+pC!6Rj)T&(3TZ5Yf{(C7G?royZs|9N&?9}e9cYc~9@)se zPMa9$beIB!=?oOOkHq6$Vw46q%7HN$-q!SPE(FVpku<=+IQ`~%nMR{CM}hz4;Q)V* zK@WJLxH+Pmonn1zU( zKjQ`v?+Ibq#n!WT)!J9g=$=wB>d4=f>I&may9@e+w9_)%=K1{>WEJ4cMIQF>S9b`9 zrvj^`Zh5g%J|S1vDS=9UoP<;y8blnoi0BPVBA`hxISZj(v!66{0+YG4@jm^dReG7D zJY!~XnY`qL%?8JnPCz;>QD|JBN4bU6Y8P~l5>Dxk_37G?t zQzeK`Xm$nD-7`MkiCAzUJVCrpLBMtI$kwj#f6H<&nE6|FIc735+Ae(S`tFK zR2Le$W1h&rd<#W}cgzC$(5|U2Lotou-RT;^F6YKtFrjbp8L1xOL=K+`eKvLE$L<+o zfNTv`o&`+C>3#wj2NqyY(fln+wAmdnCnrX~JwGQeuyyNKI^LA1y+0sh`_>$S0TYvzHNI-E z0<%;&F+0@Upe9|G0>gl%{s=~tH1mK2+MvZ*fIDGDgYx>O%rQ`qr?9 zkt;FiLP4n%06~=XuH&D7NAZBWutKZwq$DRZog9L;lm^;E^o@tT*@R#C z($bU)dZ>ip>H#Id3GYhDJZm_D z#1hQv^SY*PEnT?`kxOEAtDy<^qD&hhuEEF1B3zwdyw_V(ch7rLMvUy#Xw0?k=)UG@ zXL$fii_jAfQnIII5uHDswhIYQkMyyZfwk_hcs+)Sq3Gvd29l~T<1`g%TQZ6fL=`ky zrW)Ds_|_+&0l9V~bdDxq6CfZpwZQr-xlZeHTMVa*IOHKTHo=YUej7bIuP*^7i172` zerj{(?{U0EnWm_EPL_odz!{|*)wJLXIX3zT6fR{ZQ6`&ORIx|#-9K9HTp_V9UexyS zGXCzPpn#Na*}11G)&)Nf6M#^-b~WKHV-bTAJZH~F5vT7aTia0(?-w}WGoLs|R|cFT z(z!4O2%?5t@4^cGwP~I*{+++yg*D8t34I_ez}o)a$DJE(wXQ zw(R^e`v*$U*rAyg0}&8|;v5VM5Uw1J;mDFnvs#z@yjfzLnUT#*J*n}}d11UvNP_u= zS@~~pM<;KIV*JPFF(H#nqW$7c#6#Z`bSkK(J;(oYG{VjFfqvaOZ#mwIQ5vQ){<{J6C)f=#S5In_YW3^V4jhTa^jvMCdbMRw6F^l zpc(*uY^|z52+H`3S|L)wy7T4OfwOdRjmuS4d{0-M&@Xn%w%;bCSh7Fmi(u#>sF0K8 zViW>zQUqfnDe%T6J`vXH}{BDd8f(h~{c2zjQ9w zhsALcKuVmkXVZa^1B1obUC3X3z48>xS_D}VV}gKy`;mGBKiHze5Ka6?gMCb~j>Dc)=Q$<~*uu`| zois{16l>1?bN>u8_?y&8oL2JFd43P-a>0O&GumI5lGz_xW6C4Q(@7TpOad)FDNr%4 zg*y9V?snaVZ(^hb0-upJN9^uf8__FULQKZ-G{k#0IY~eegk>H?b2Zq8hl+>VvE5Oz zVS{~3Pi#_>>t(ci+s@`Gjt;Xuh${>h(?Zdqy(e_I*#ERiI5>QhBln%s^O)4IbduN* zHT3-A1~i>hJ_+L>L>rWM*_Y%b3CAO({WTu3Ej`~A&hiLBwQm0e&}8Nphn)Kj_Nu&$ zhUmm=aH%nrq26FQv*w(r$@qhE8RdC?O@-ume;Q^469NgJcyN|&{%zPi*f`zs|2s{V zFX(!Di4=&dHKS5G>q!(8Sqk12zqt9KYK=*201>q>OlwtBb!mXe;}_B25E|ly&<4Nj zKsr|4;+M-`IG4uJ>^F|8D`v0Yo7~M>~C!CA%aRnTV$Dbv#>iB(_m2$BEleY0@!U9Wl>C z%~qUV&mGKu^&WkpP_e@sJeSe|yU}?cVw-$zr8>7m=2C(#eH*R=dV**-Qmcd@XtK}` z1hbS(Z$AYKtFO36NQwN9;s4EWrXoc-_hew+Xf6?y_4f zX3%fFF->TA48-2&lYXD!>$%_qFj)4ap=ovQO4WDCV&c$wL}s+v)so> z@KkApXU}L7Y}zJ$?+ovhIAEOH%ey{GIFeiFBvv50WF+gl|L_vtW^oHn5L~H#M$FmM z+(fuqj6&lX*=GBbch?y-CP8@5BT}dcuvB-n8`u>QQ_9pFU$xRA40=qj9D{yzGm-S* zu+kg!qfd;sYMFc~!4{2~Bemnar;`rpww`*$duY@q*M*dZMj?b_e6+a?MoJO<%n>ma zsfc}zVU8IBO6oE^nolmy>10ieVXL0hN-!ia*c39Oo!`J64Ezlwkh1i|lc$heZ}(cY zdI6-QS{lo9hl!;?j32s1TQHO{(TO^O>rqdV4(jtcvyk=2tU>o&FA6|LtV1+A>Waw} z_F1>ns_6TSUtdWxz#P-e2wzL-3N`$(5_(s~Gr|rDEz>gnc~zL7D6_8pGz=b7*2uf+ z|GCOZcME(GrMA_-MntZQT{N!$=BQgmCC;%D1-lqDmDS&o&;ddZ3G(MELf8Ik!d}v} zw#w2c*rjo~6j(D%@a<&*;CbNaM=&CCY@0|&Ecg?Oe>@7LK~4=j=7?;2#}z-i+nvFE z`J!!XV$#v9`Qc1|&mX|a?5PWpx|(yuH3lKITj{H9$9?Io_&HAeWrL5 zm^DyvlUTu1YI?aG^5UlaCZ73xWf&C;LX;W%O{cI!t-vrGU1AGBV4*YO8ii`g#(6Fl z`9l{`XC!lXsov` z)RB|gxvek9+oQ{~O~KIQ3K_S?S>r4qkv;c@h_gJahrL?dUp~L8D`G4gHHt=GErPqa3ybd3cHgF|f2 zG%u-vGJIJ_Lqw904`Xqx3+LXESEX=uCQBeoK&?V})t_TAdmTOM_}pQ_E+Lnl8bA4; zw%_>J1~yZQKvSYrQjsv8CSBJ#)FTiZRL6ID!dt+(71|_D9b6d9X?M=d1KE|U=dPO= zaj6gf_(FB)?)#32<8e}(KYkV zaMO53z+f)h$v0DNc@YR;k56}oD?>(BjUe{1%xJHQ#bF%h%TmN=3XGGR-+`gFWly<& zXO~a!qfZO9%g5Xi;;tp3-dXt7E%d&=_ZmJ81oc&0Kj7~w={BJ7bW5FqQ#bQDm32Qb>?;~97{LBI(mLV%n$<;vc#$In1%h3MOvMAd@2Ma#-ReWUG5^Md-i+i z;*djk|N2T5@ptm_`*(~WZXZ^B1xvvXH$ptCX36*H3W>U+F_+w;Ik*!BS|g8P`hX&Y zAn+;6PfVc-{7I}@iZP0WwOFTxm^rp0hRg5a4?XP>c5cI<5-pIlO5U;9-q0eA=!bth z;fXV4OKzxTixkCAgCzBI8owUkN8ujL#I)$7(Li1a{R?rrmzkdriXh`Kk@~J_4@hrM zv0t-=BzA}7YsfLZXRlg&?Wrfn^@TDW2X-N+evBH03gmD&$sMpvJze!1anAh;>J0 z?)cxCy$0`|+CvMyZXaiPW@4APfWv)>iy+wUTh<+q#`lY8HF0_-Ea4m1Ms)qh2lMTz zpN~T%O4^c1zoFd9Wl1A~cWOGV0k@|%P`)>mlI9?qIGZ=)X7gP%J3mz7=|;m=H! zQdVR`)4hJJCC)nlQXJ&7XRw++1k4pfI^p-b5-l}B7OXc-^mR3Vi}~Bnn~vle-WUDA z_?ZK|$OkpIs<3ON&sG@^43FLn6qnFe54j5Oh_(&&>oW}B2LNAe5xJj=S&-gwx~2@Y zF&{40eWL}PPaJ~DvD?)Z6FV16WP2DATJn4G2(hzJ<%igh!Cx22!tc;R<#Rsd0(|SS zRQ~cEUkqGRKiDw`J3cLYidaWRdGOr=b~Zi(oQ$N{C_Z3Pry2Kn3==j7Hykr$T}p#? z`9!QiZ)uKeWlHb&P^eoW24;4XO&i?Z!8&EbS-F02Fm*nl0Gs{ zEA}RKAQSCt5!3k(@wf^6H%Ae1GhESzf2=05UpHTMMgUmaEM7y6k09?%L=zQ?eIc;o zP~V54d*|Hos7Bf_S!jJi#eI^V0ndzCY7~qSnh7W>XnPOeZo z=AbrrQc0?3aHrmZOfm%qnDkm7hcVv;C>vV5N%9pqxx_#uzwE?%=S1peO5dd^f5hRA zF)fn#VjYw;Nc?&WQbk|wPbU$vd%NE> z3;`UKml4|O`izpCE9QM`Y9c+~_%=iHKI%Pv0OisbKIrNHt>c^aq&S&z)dqbaurS+U ztJleMl?OI7H!G=buGhppA*OnZ({tvZ|EXt5Nqs9jmCV?OwP)8~bs&?SHhujTod@DfIDTl` zdc*}z&*S(9FNydeJ0o=Eh9<^<_Na*)kc!f5xNiOqbcZUHps5DuasQ1FaoyCWo%HWU zL^YoH+gC4%NO5k-P(AvWr-Cob=Y{ZhaJotE4lyQ+>xarL1p~T${w|_7FePJ3eD*Z| zuzP#M{?UeFU7V$ID}$mAL5FhbcM{9YB?z;<O{t(K!2^K@x^Fh&#X@I{6^m@yaBP&K%8NRhGgjr=!90;l{UCOB5Hzvn{MUtUG%T6tHG#v@l>if_(AK{+C&<4ugjtrfQj^u<(rQTDnWv3k!-ZEST8PEMA2TIJ7gqN9v!x zl}~~sq48j3jF;HqQ2S-)8&Zn_i`EM58Q(zL3jjLr*TD|OIpHGjtuK?3Z znY60a=}KXcZ7}7;bkhdL(=z8CWySQYDg79cRGw|fXn^V+#-b8AVnu7zzfCX9<~PLM zN3x{f(YBa`xdLVlIA|6@WMvVWM3z=32%+@YkR*=ki?B0~2-pL|!6qEQjA@2)zD=agjSy0$0J4Rs9T9nr9UmPG$H(3=&H{=wT8F5>wtO58#_z)HFk z9qPbhU%`HO`b2DG9hOp1?V*=~j*Xpp?@00b_Wq`v2xcu=SANa3@8Y^{gk;Afzg>*t z{mI6fTUC9ybgH@ykB|g1v4QfJmS$Ub-*<)7h53p2jtNKy?*cigibLnCf1jwPWzme05F7+a_~Wy~ntXwBVn8J=kWLDp60z zTfJ2{M)?Trw#JIynSOjvhB$Aq@=0&`39)4M3LUJOMQN?cSVla%UWyiK=k=sLlTg?S z3wU2vz4lydpJQHwn`I%u{c$I+>I?q-ugi(3p*#KZ#naiA1Dg*a<#HV$bv9M)b$Bay z4o5fJqjO^^qm^5K<$(o+-Ld1XQq2{7DpB>;=lBtUpRK7^OT2W11ZG}bBdepyn> zf53sKgsK|iq><67fSS;(2{V`A{rg=3XxRAWD(_JL%tpbdSMYAUNZYvd zRdN6(9&pp4#8r;i{^RzAyIryy@a&9BL4lo%x-O#JT;HE``)(%k^^4n&i=caD8m9E|${O(8`N-^+2t8Yo_r_VZxFSLS*?*a&FtzA`)Eg@LV|c!& z%>ggP{$-v-rJ6L^s82q^YLP2$l719=Yc;O+iD7DP37>zuNN|+>McQ}bQ7}t_$EajZ zD^5Mp+}|;cfalNyW9^ehJTo)+d)8PKU^dc*xDwD)#9Zq&j8{ zvL&O=y`2$!(s~+u$iH+GxdG5OJ9|H2L1*Cb;8rXD85KHOhG-}4EL_eM+U>NVZ&8&I zqzl*#W^d2hw^$S_A1|8|a|s^4Os5=bUQ%M@Js7G=KFClmn+B9=*9IVJfNiUy4FDyU zgi6b}s~{>0Xtb~+eQLOYM%Jf9`%Eo0cps+-1NLUH+`-|$*ZEL5{h1k-)C^6P;+slI zlcmLf|0D*)t1T!@3E2(}Wyu@srGJj?(W9Px(m3X|Vj}@s#Z$Jm6I{O}w{@ z*_A|U@+^Tf4&$o?-0qaTIDHb1wC{?An?gKl;u zGUl?%+I5(I7MH)zQEJj_`oHH**TE(XbHdl`j_7j@E-d>blthpkZ!l9hkuCA2))Zqo z)@b|CgwqBawddpKe$(Zj^;{%^;sxw(Mw(tI(3T2@pS*Um>zov7bbKnR zjF_w0NQ5jkl``3s47yxT(b$a~RzV=iz8S{ZQ=Q{E+`|M+nK97Ws~34S`eop9WQR_5 zB)8ZA?W;PYe1XPRco?#PX;Ul|Wh5UbFy|p%+)B|`55$?SsMBR9%ni>de4e5|n~Ay{ zK~=+UEIDO`H4Re|vN1__H2ZWn)`X3a)mO%TAYS5kxAyN`OPG=o~wMDEgr%Da5`L=GPw{k4@q!Z;gUPXdzm$yzDiI@t{IX z;69wcoy@3D{?n%W_3$}hT>ODYNU5;wOf)7{IzV_|(g&b=I#!PO#s|yUzCTvb*^8GMWyg{!=vP7bZh#JBq1^X0N0vrV zxTAYpy1)p`_T%2O=;FHBZu#9=;huRh&en(2V_!K~vSQm=y-WaWJijB=L<)w&YdGwo zp%{TlMRtvP{a}ebHdK&++Jq_ozAccC1l zA$E&~_lYT+H|g`V9<9i=No) zK?f}wcS9%{GWnDPLj|D``;ux-ETS;vLpU7CMlUb9`Nqe-sAd)hCk!v;I_f}WfkE@Z$2skQmnxW`DnY%$d|VlB8A8HM%7!OZCQqkfnl^mm zZs4WVzEYs)eDm=~6D?V$zX?dF%ag4>KzmUWEvnmRQoDPnoR?v$#jdvu22505k!G@c z|D8s%{Z8_E`GSj2uvupu(eBARrIh2#>rkOK1Yr2E z3-qV4fk|IpM6!(qnq4X^_DL%&du}M14@xdPng2U^+f+}#zX8#U5X*VMl_9D~AW&Rg z{4ucv31*Dt;uqoW*RRUa-2(gtxjGV$PcL%GwJdo1HvEaElKZWK*oom{*UnjI&NcK7 zW9!TMCZQ9zWxz<1A;QIr7E&_$b5E9^MMLPqzw^Cl7434}t$ZMhyjrF*$NghwA{QeL zQp7t9a4JzD+mN%U80V0|%JWbJu*TzMR`RBeMvd1d877iy8t$TFtW+Y?KN`?Uv zk*3Q89U)8TDFC>5A2k6@$3zS{&AFeoHEzGD-2pRI5p}e%3|&LN3uAsF~iVr zE2940k0KI^fC`dgR9vaA1-JvQ=Z;5@1EX>{m8poeWQ(OMp2L!_T?2w2z(>qXe_L97 zHWbrD4Fg~j9SBOQ@ACq=Ay9BBd4S>C-l6Izu+(Aa>nNGJ!^W)kGvncCATFHWEdv|c zS`=Wwq^pp+`C8s!!M4SyV37Vbk$;nJTSXs9YfGJpHnU!q$>>Rlnkh+8<+=wUBL&c-Yz0DD}7yE-HdsyN0n)KkTduZ zaaO021@}w0t7V!4R8Af}NFICM&iDz2tmS%1`&u7;iH@(d?&*1vN+US+GpaWnM|uch zaEO-Un9cI8SL=vAMBu$`{kLn0Cy2F67Rq!-Zsn?r9Y=Q!bBk$9Uf|+Mw_>}{+G&S6 z(}BgkIT}GJ;J4g83orzkQ0W%0kxv&JJ4DS&c?t zY9}O&7L50tp3t&O=Oq2i!69ihrJJv(29PVv4BPz%J3B_VBQQYtP=KFA#2D)$>u$=z zyG*;48I!lJg&U4TrG`w(7+tBeQw=fx7Ep~-YOtGq-$WW1;cgs^p#(g0qRW zaKcF%%^HGU3?8UZY!qlXa%ba8{f=XDveu;25SC+A)1-YTu@P3t}$GM5p|OXJNWmns1S366k2z=i25a^nSvZEhw_ ztAy!}*20V68ds*1w&OD5HmTpQ#NV2ZP-yE_Val&?mesF|6 z`p!_>#*!b0SU}=F2=z~RyZ6%y*~H2#bdWR}H@(4~;?=1)Y@KZ**!d7OhT-uZZw6Tp zvj6(Rp%Kn1@K+cQz}R{8anLbs{Km~q0@RH%dh!#5p<%L0>%={tj`ocuyA5FE>Y8(= z6zE(uCC98G0sqsC6Qn-nh77q5(KQsPzJ^92%W3W$bR9Uhrc>fYm2QqXRb(f82~BzS zK!i8ENe)pp{GT%lWRQhixggtS8WuFf_UlV<*0SIPQz)I681N;rAbKk)<>gTb5e)?G zfE`}Xw?Uw@sq0O%DK^tf>S9RM{X`4Y_+nX7aWes!OHct=XNQjufvBm@^whE|ani^v z`B4q3qZb>vulT@P2jMzEk2DU^z;3d^&b?h}6FhT=sKc3G;2Af#o9-9{;WYsRdv^T= zs7(M%VYOVsa13m{8zsdNP=*Bc7d}Vqbj*8iG^yXOIZB$DYCn_xhVl#wM#QCf-QCOt zln-*a#?E!sChTsp;^BFC?eilCJK>u^z@)`c8mWyhKaLc*x>QZoQO-|V8ZC>=xK?*q zzS}9+_~uPWm&@n&iD{3v)7Ap^EXC(qj*UY9Q|!9(uD|5}eWAfN;}V#ICb)qyV@09s zXB2}|=}!wlEX02zE5)cvQh0jxHl6ot4Li~Z3;?=w*m0x}yRPt5K$I~+Op2?_&_W{5 zKm`gZ_Ei7@{QMa|07N*e>XlUO*wN>bIi&ROYA~0i)9htUL{$pxD&`js%8NFyfyYtJ zsGKn@tjK-MK?D?yU_FO6q|>XJ0<%=+f=daXbx^Jq)`3nN3N3tnY|qEUwUe zaETODB{jCn&{td*k2$=4O&v$tfzJ@MnmxOX?l9jV3<685G*} z$gwRX;*nS$^l8nEYaUAwFs`X@Q|Zq{GQLPhmeuS5TfS5l5vAt@8r=1lXVNwz4?Q)u zPu3nd?T@2cMLMqP2;Cpe7#pZp_Y@;*N-rPYpyHdb8F(&N@0>k<-QMveGfcz~M`28-k07i0^`@WR%|q03a{iB%dnh0eF`3}GNZG!sD&4dn6MMpq3QG|_0IMoAzEK?5u` zK&n*JN-1iDs6k^JF>w>!$A|5uiq*EXQk&b-TWqnVhzd0Ugn+0)`~jjiTH9_2D&P-( z2;}=dGtX`|iT8f)=X>ve-!CtcnK^T2=FH5QbIzQZXL9n)S7Yz^o1VJ+F9CD$UH81d zd&YyWO#gJ=ZNDm=a`dy7uMVGlVb)VGZdmu&)l>J5KL4%U)<^%gXv^k*ro7^EUG&52 zpL~DX&S%O${dd=EbAET`@gHvb_mjrAm5lbc_H4DLj4s@NiRZ|hqpm!9Md8|;d(ZmU z;k$S5ywv#ggkV#5*Kdw|d-X5v4D0BP?>ztcPWMfF_U>5stHYOGRq^6q>;Jr_;P8Xp z*Nz%-x77?fu`s`l-sc{kt1xUOcXM?;F3F zHKOVBFFx`#?wRnx+Mhkpy5z2cPj;W)@Yrp`UcGR{4VOK&>dc#eyJX2_4MpFne01do z|9NG?EBG>QCFY+;+RoYAKd)z zzS*BXKm6WXXU_fjy9?IMpYg@f=tr;J{rjF{yDwXC-E(8FG2af~>)n%i$HJ#JtX@_A zy91|9tM-*Nlr0VRm$DTRVd&Q3K`t*atA9!Za^TPDIhJ118 z;rCDO*)=zH&*|=Or98iM?5_(mcT_i>aDD7g;~sxLr{he|=^GcHw)(BxUNDaS+krQK z^n0EkeE!^{4MX30?uB12`{UG4Dvthp%Gg~)e)Gk!KcBPuj%f?G{g_XY@A-Y_#X|~i z{Ac*uSHAhTM<$Eow9TL(u1cQNPRhc=h%klHqZV0<~K)vd(Y#Avo9{bC)Cot z@mr18g)aS5d+94PZ;MQEU-bSpW6x-RBY(wztn|Hj=XVx0o_*ezZ(VY@{rLkAU--S^ z-P3QY|I45MF#Urc-%)W_@0OjDK7Vh>Ymcve@4D5#=Zf#ksGRvh<|Eb<`@edA<8S|- z_Q8!ut}l$u8u^GlVav;&Gsf=UaeZ`m)9t^%=ABDUIIt}`oB{VVr@aW8b7|K~GH ze>-x=KRR>Ho0svue=hILoqFXL+bb`=GV8R>p3Q$*GWMAkcWUu9Pd4AQZQ?&>&hSK^ ze01dH(H-BLebYtWJ2!sx#`zEI`uUT`Ql2|H=hPc+U-IWaf3(T>hmY>wUU$>zpIrLj z)Lggu>(=u#UW+`HfAuc{vo0*kysBx!)*JUXRQ`Eu>6Paelw9^u*3n1iy!Yt~M<4#} zZ_m4;^}(;!E_v_RwsqHj^Rs70UfR(a{+(6+-0**GIAQVKV*=M#A0IhCuzuy}X)oN^ z`kniBPr0mT<-KQgyk7OlU!U0V$>^t_p8ETOaXGI{yLi;K4;=sd@ds9Y|J0IGu6*V7 zd!JkO+z@;JMBk9zKMou`XZ=Ix%sXw(t=Scy9~$;>g;n&=VYwbx*~@p<9((hY^}lJ{ zHEPa{&F6e8Bk&*3mOtIQ&g!*4p8M&|Kic;GPpADTf1&Hhe|&PYcGoxmwAZTdiUvQL`0ML#K575^ z(~A!L@tR%V9DD9LA9UM4skrii;+j$SojQ8?vw>d~T+{XVFR#D3dedDOUj5a-e4Cyz ze{kf;)3*-!?8ZOd^86<~li$8=SKX@Ab$NfCTk-b4wcKRR+h`yBLv$#ABj%lg=bjyT z*}V0SE#xmo{$D%0(&(@?K{dr1i`}$v{&Kff`WyUj~q`Z50VaiYEpJ}Xl!=HNm?9W{r ze_HH1E$7&+OLA*>->Ot^@!RnobJv6s-B2cDZc3F`?nFE)&i2$vEDhk!#^NjU2g z!&pYRl(3V~n-A_#!>AyvAY4n>OqhA8VXPu-D1ZjZzuGXCoB$m~hVd?;x7aWOY0xpA zItiCfqYc8n*BM5UhjKHZld$4O!`Mlfc@y}rx~x|F>$V_da=q?{mo#`?bE~AmK z(Cacb60SJaWu%=#e!yi^5LS$F84q`6M_y4?{MeFB!r&rTv|3qr9kZGz7qPAT=J7yJA(eQCu$*u`K7 zj1qpjz@wP@C$K7h-USBBsDDI_8h)g{(E{mT-*xf&a>-i4PbYX64aS?~OP}n^DDh<$ z`vT?3Wjes!MwzjL%S`sAm#8u&1Iio)w}UcQ4lZ+}s+*2Z@MV;%*1(Z|F`UL5lwoMq zzY>0z0F(ajhR>y6#Xc`3i+$;3zOJDU4tdBOPHkb_J{np~I(6jY3mRJm`KXRYpEYuTzSoY8udG1E5y$(?QvHDLa>V9}V$>GG*VBW;2SN zq4Q7et3x_jq2QBz(nqNyLuAPyTIiFIljxEVbfYh4f-kq+7nmgUWtaMLidAx&FFT~- zlYH3~P9!j~f8XI_+G?h)Tqdr8coOZZ%R+g|^#7bzNHjK5zLxSb4o-QYGBIQ~_Z1J6 zgCcTrG59z4;p_Pt)VI6)lS^+WBy~pGE<%>BqOMDvx{}t&RA2fvYQV<}-!ZV#b}jfD z|CiccOI@-5X50C+Epq=5`12fEHJ=XTuN#y23;6+V(9Qf@Xc*T!<&yfC66ZtzwR$zm zdZ+}y8vGk+uWvr}dPwPGo{uQpm6AFlb>JX(F+U;$mQqiBo?*NsLZtt?TITAjr`1*L zTjol+!6%XBuJOJVgezU;08`&{53GEdYXV4;`Co+ATn+X0)C#_^%KJ=`-%rM?( z&Gn;eg0C@&u4c$+bfp{{NI|0%E8?etddgY&i2Q-|)b@3+uGm+b^5nouYAGTzqm4Q~ zB69CwTJqy{q~7l8Uz~D__&G}1>?;f-1-;g7O_}0bPHF`| zD^nQ5luBR>dP+$W?Arc~NnwUsp(lq7v8sk4X1+s06LN4li)0Gve)LT66~+5f>MJSs z6{V)93~Z!mg0H;XC%-Fv6~(^LBwvxp1Cgz**BD0h|6J$wgX^4_RGZdwxybmBsCesO zS-)&ZACav?==PA*TZarJa~WeUYowm?HI?W&;{E!H&Pd{+kKmy$SIWwP)pW^p$M|WZ zp3kZ0-hurq^X*Hj=X2`W=SsQRchq&QuaUXf=bAsT&V8=$l08jjA9771K9Tr%Uo+Db z;b##)i&G|2^t--8)Yq3kk^G6|mpl0tNzL3sd@}WvQco#(r4F8ukTRc&Br@S^LaBrW zlro8YyK#54F_u#rOZRE?gq zyP0CNC2Uk($6V_0Mhzpi-`HalOz;ihgOoq@FOT}8*(!ckP{&T{STLCHLw$T-iSYj# zz7I|CRh9etepmQrF}ss|Ax&S}N$A6WGYpG%^t|MXT*$|kP5GuH4{|5?3d()*yTVt9 zz?kIAEsf8a$YR-NmM=DpM+VaOwX#@*ZCn=LIk3zBeOX-le<6$K(q!mAlf`#`jSP;< z=Hzv**Fyn&y6a0Y^h;fIB?u2_zL5Ek$Tnu5k}jxMhtA9CBHujJ$jJe;?@P@6B;V)E{k|co zx12a|95K6$B4lFzTZZxIVBSmU;)z-pKkJfkZi%mk>8$Y8Tr0n;XZ5dDG>*{r1obxT zG>kdecLQka+xyh3Ef3qAGY9w-^xArtI+p*CE=Y$@b>iZl$v@bQaV$e8C z9m}a>X^P9ZbTFT-Oz`?l-zw->=}Pr^2KGgGWiNF+f&c7=!Ruvqd^l344q{Q|SIEW( zxAtV0;Tt^93EeZ%C%R{{ud>uvHQqO?)K`tdN!|6eV^U9j4X3z_*9ObIK6^40wmoEh)YiaRAOf!(}uLp5KICPN~omD0@IpFr|zl z%C9=pWju90iT-=^zI{yGo=vI3ur2q+n54b@>?7XgN*!`O(1}Si4K&bR{z`yIld(%W`8#gpF!Pc>I$PlIwf1!e!VcL4QkIT}p4Kt}8kJN%F&c-MY!BUGV4Qy`kQ^V8*mq znQA+Owv+MagRhYVEi?WT%Z_7j+qNwkf1J~Pp=-g2bHpp#-gV+htLUpDg^owV-47k> zz10ZCzQ80_y|62S?!30}<%aoKTYJ~Z3O%{c)32L3qiJsioE9IoUDwjfCBfN%8jrZl zmM4)^_NrhtX*-<3=-759zpWoFr)BHGR({*zfPx1Ve5Hb~;P+-RB8<&tvKEYk>ka0% zZe(-{Bed<|W4)HkdOPp+*sU|E<_NiT$ZQVMTKH4#bsE(%slIA&2$ zhC+HFTVTnrmoyEDdsfmBC!I|Qoz1}~R0NCyA`n_cpeR@yTt+myBDjpC)omS#o%RbN zg~90BV1U}K!`7bI>L`(%V6-CWkJI{VK%@%ubB;_o7ok?fRMRN zAdoFn3ppjhT-Cca0h1~a(mR|)xg^kV8nH?t3U8U&dU(xj>XB|s_XRG)L0WaQO+~1{ zPlRq}5Xis0-e^s*9*$!MX;V?vNm)_8x?N6qiY1NI@&DoL`T;OJSH8DIQY7wZ30&v zT|^9;7Ym?&M>h&cb#w`_zK+UV=#D-i@I*&tUfN^Q(WMe|Iw}(q-dxnw+tzymOFS3J zEQ|~P3UjUsc1mnN>?k7=bJ>!z4#cusVbugT^Qh;~$jA>;^pF$~o`3UUB8rojQ8d~R z^jn8xZ30wWUqGEgYV2u1^ibH!g42nLT#H8Pj5LH$>_&PavjD2hfq%tx2L+z6&<6_QR$Lk zx;-(?T+yDMK*+GCdO`5T5i;$Geh|_U2mzR^J0+0}+EdfP&y3?|+Y>XuADKYNv8QH& z;EyBZ!VnOWZ%?GA1Xh7PHJD6Sp*=CXA6-TE)SP6xO6-Zb{pc$1PgjLKH9wiIkUg=W zA6=F9)WT%Csx)1*;vz1Jgp*m0^BuGNBUVNqTOEkK`Z!Ynr>zPGU=x^ePwX~OG*kJl zt=22C8%V2J*K>P>N||c)8&;6{onrzFC}6-Y3D#bK_+;90iPsR%C!Q~jh%nw7J5lNv znawA`1}Jsmw%+jOw(udB`H;ziaa6IjuW6%b?Hg~p;oBRu-nZOAy5@#=jo26PrD71& zdw8!uCO|BrV-u7G6TpJF%-Y<~hM;upwLF)BadVZm$!Z9?1@g3pjJEcLH~MMoYnpmk zmOy?m_7tdjU-rCdhYyJ{U_|Y93ngC>OpDs%BPynFjgWBiKK7bmV-h^vEPS-mY^ z*5zWhj7v6KFs(u}XT)x$D8$$&KIwS1gpBY|UW4#n27gsFk1&ayT^z)XnCo*9b$!-0QX zH*U-^Yo9A-4ehy95g?tW7umh5S1KZYvO*DoZKgNVSWyt5-4O{Yd@|X8xk$z(o%-wtrAP2ER-IG} z*Yv91^}H?h4H)kRU1PRg6AUtx0jJi2y3s8kN5iqdVx5(~WIZIKW2sq;4~`mJMfQNn z?b#&FB>pAa%ceA@xKXTfdkIX4jh#NNH#as!(eIC)M3^Wmkpc8>LnzB^em%WUyy(y? zb8I~;6aGJ;_a z^Fo}M;&nIA#V)_=<~zRw=e4C``6(U~s9Z*J^WJbf)~X0xdEytc-1spgV4h$OEzT1md_ zdGcNdp$;f)2A8 z!7O_mL5F1NUThUDVrHc=EVY zhucqR|8Qt(WzajvoQJV7%C()y79yz_FhsZOXgbkdI+`)Z{BAoxJLZ@*>(RH5?o=jJ zyijHzCYpBM2f9#@0x$RFWX~~oQ}(-mr;csJw_?Zc8Ko^0lr-9!p7q&lM-~OU6aa0W z3pj4IRRoJJSfp&krgkyiSTLarnuDK%>*^dL#v9VGQt{I~hRlLh7NqqQG4rq2T_Io@ zv)E^Bwq);w+%C^f;}cQ3LMmJE=bj!rB9p0?>}#yA z9#&i*#Eh>vk*8?EwOYP4?OjAV#*f$p-B+@{mMEscwpa!b)@~k)1Kdu@+j6j3ZTbuv zHkYvP84_;Ky1c`DAVcyO1*PK6a4m(ln9V)`t_X_A5M_OavI#)R zA@JMxpw zmEQEBid6=4JV%=Tsp56P+=TI(@7eF!-t-TF+iXP8wPtneHVsV&N$N;6nE>1OMzBkWm0 zNZ#dTOG%?FrA(R`8gC;r(LzRo&h$h(e%%f;s=9xGX^{~zTldJOOooX88AhE!v$Z`z zx~@ofR1Zn}C&M7ad*UqSVpcGd2@45Xgq4KpgjIxo!ddjEnwgvpH_l~DY9PASsteX( zl-AQ8&K)_FW&vbVA`n}Dr%Hrk&k>=^6;?-k%m=}(;6}<^k{lW-OM%965g{4j4^yMw zha*!`Wgp<@!h2-SkVx53ik1lOh)CH95)O-?(g;%`WuEpAhElvpil>J^9Ou~@nK4XC zdm~d$l+YcS;%)D8Q$?Z3f|215P0#wsjFY6iFH+`{5E@J>DdXh{b)GDq2bKPoY9f8 zK=Mj$DPz5E8Y&&DbLz=*>JhbE+pnIpoqB?iIp;*m&ZSI^;L?}#B&09d64IA3x-WB+ z`*Ob1mkXS}+u z&AFVV?O)!w;I{DQ^pniKCc8VKo)GU~* z&u{s-?!E9K_dPqI;*IFERBLm1b8lTWoymxXjuR+V68=|eooJC@-s_0o40CnisqOzr z^BfDWcU@i?3@+F+rV@Qaj_d6nw}fGKE2(#$40=s4GrZn?`I`$4+cl>iHD8IQr-j$2 zSTPx{relpVRu5Dm{3+!h^Y-P3%m?3K-`-s+pd{sd<$tZNyUznZz8{$tpWniKWpdXd zQ`2e4fT}vC<{_eJk9wJG>6>BO-ri_`2|{pKsyEnfS2ulcg|Ezvn%`v+;}Yu3H# z%%tDG#%*pv`D9pAGVBypLuOV-)**IOShV49Pr?uz39{#G=T(aI=eb_pDaC_GF zytbxe|KxKI_&Uveq|MrT@b#?qo+Ej?n~wbpu=(f)tMg!I7D_yCw_O-)>b-JV`5(sR(T%UaD46l`Tbg>K0(!Ka3fn0v%mmNy@kyuo z=z5ynddvD3|GMR(TejZytFcA59NBo&v!PqwIqmFer7k=SC$lrNrnpZo44#ZSwic#Y zH;Pr@9o}h``HA?$orYDGj_}L~Z1vmR0`e|Td+&66WT^nS~WM2NH4 zF8nK)X|nMMuMGwXV6aNBN@eTRG*Xz1Ii$o^oJ`VM8g!GiQ<%b8_INizl|4RB$tC0`63BtKzt_w5Tp5X~A8h)6>BHCb-vuJIi{xy(fciRK}4+Mo?%vNHaj1 zDSV~0BLgNIM+WdzNy`ArW`J}C1AQ80MuFQ9$2}zVR0dCvhEj}s~! z2W)hlhAy2BKtmQZoCU73USt4v>b$e#xUyBFY!KXYz!j^dHePRs&QsQl3_zPsXM;Ni z-1EUz7LL@rM(14+uXm+R=YTsF+zY|2j@P?f=Uo)Xm7@)4$OShK+>6;7%(mFNW{|kV z>eQpZOe5t->VlUtFqbJS0y!P2akFX;!cmLCh}H!Q8j)d~irfUeajoKJV_kqeGcpYj z7?-b;FKo<~@lx`u=3X;Wpfj#mcc#i1qce7!kP8lJ-(ngEai2&b@lwD3!ZX7j^1?N@tE+cbdw4 zlq8MI!lB+4omsRlgCxy;q`)onbPexnBy}iL7c5>UH(bn?X=Kv4)F6$I*Hw&PH&W$Z zqKi89pQAG;tdlQ!%$AWPX}p;Pji>3%l6C1MY5WZZZrRTcmee+l^mkJ9ymTGcFsR`T zk~A(gNaHV&wB#IhRkfIaH82#10G~Fl4Zp4 zxW(h(-J$WyscEBNm@VJY^{$mv9N$k|*ITUdCz&lbf`_nfB&+$OI3icT97H)zhJb6# zmg{wef|#g~>vay^K2|h%*P1Oeh0uoJ+yv4|38a@bQUz45l4{JBsk+h?l8QI(C9bLb zxyGMtwp0j}Xo5Zx<;IZ4TA;C}m@U^zZOKg!OCW_b(o~HEeN~C}9JzOFV633Z>R0(~u=<3Eb&sOM#|sRv&Hfu*SG5S`wTA zr_RJP!@$il%%83gY*iGM>@!!dU&rhlV_s5R+2aTC8|$)w^bApA1uDHPiT$!98iJ>; z36KS8BJ3gUeZa!zKt$YwxJ@HwtkFVf9Z8zIf_Hb|RS>8vx>XbE(ol+!hz zt#i&?qs31;N!qNZI*-m7y~dF}G2P|?#)&q&R4Ve3tQm~`HCpz(Ns>0}rOhomD{GAw zJkLuxUGpDx&RJ`;)R7}?+Qc-EJf?HbUgLKwCW1bv{UN(jgmCvnGx|slYg$+a;olbt>h~Sqw-Cie;!SCXaZzd zNVQ1{R3%&#>PNDSaEWQz$+E45^rX{FpS?bWD#Dzi??Eos<<8w7F)ruA+ zDHOu*HA0@*a=xZTwWWlF%2(^ZA$T$82AY=HLW`0Ql;Fw#*?y$ppc< z7My&u<#J8HY()TZgKdPj{zAmTr663U#ldVX4$P86hyp=)4jwSZv|AlLZm>p1z1iXR zq1J}HHcWXj>@Oc?4ZHJZYrnlpS^b-a=30BA?hC?gZoF}u%2HAyGg6~vZallP+p_*< zFIB=~`m|8&EpAZa<=s?rp*zJo9I3c)NYs5{xNWGMn931WD7H#tI9?OkZzQ}XcAtO5 zRt^-8_(yEnANQ`5S(&D{i!{KdbbVY<#?@^1C0}tHt#2`OpUuWOjuh9i-9C*JUlHBM z$5X7}; z_dgG-A&9S#?zfVV)LM|{+BH&qZFE1AgrwGkAT8BM@%7QYC!~gXeX(ZjrIVDm%G7>sfoqMRwO?ifsb6TW!R3vmdIjR=QsQyF18IjsE zBcajO0c*b^EFdB9tVr!ykEP3y(87TzIV*Fe^hgKy?-alJ>$@Jqe;!kS(Z51o`hhAou|0sez;QT|ma zze$zfB+fp{XB}rmg9FN|T6(SHS;we89lCbAUX!Amdu?bxxPAC8>t!0tI%vIRuHF*f z&C~yoGY=9ij?YfeZA_G3pv`~w+PmY zi@0vS65wz^nXFtBZ_bkq2j{_{h;uJrk{rrO5}_ws7B;dgNP>GMslKbw5#~2`!5)sp z{rK{6>2p<~Q}D)U9}LIZWpctjh0}DdA&9xBZbdF5Vy{(hFkv9Q4B8l{3YGywRRwus zDZ=dH+B^*RZ%|yg!?S_SuWUx)TwKR$v9xDxhhC{%t(K6pT3|=dPAXcVDr!2cSICAe z>Hv@NZ#o=bBkwzFWQDQ`#XqdqNt?AFmv6ggmw@ydX|rBqjcjI(=yOYQoORM>eRXh0 z)&|eZd9TOU$$9|qc#hE3Ws2nZT4~RsM$dM$We19hZWqFVMeu0}7M2XOJ;7~Xn`U3< zweRv<2hG;EIThZ@L3X>>zQAma4b|th>Ri}4z}2VO`ho`@#YHsdiQ(&%oiGl(#gg9c zX-}L*SK7B_*w3`t2JyeSUA4+4`Bg{gV`ZqU@YCuTs}}t$inQ!2!=zv(zJ} z+y7wBQspdrJFP_o+MTFfdp$gd&F0Z)a8^MBv(N?(Q@4?TiK}D$>pdO7I|P6$kDhOn z=&WFkXP2j)(G^Cr_5puG!{;)aOO#vC!_+dS?*jK6GMnW-A}b*S8Y}oo=O@HZIX@-* z6!BANHp{IYhI$tC%x1W&Aw~^#eZVdc+M#T_D#xzPC5N$opPwC!_g1exH=lV)x91kv zMTKVT;l3LLp~M+{MdB_&dE$h=BylcZWVKtLn62Gh9%ZG=G5;`@ISm|kw||!cL#G^>mGq=bdQOqV=i27RZR4B0r5%G8B~Lr9_Z zqzd5-QgWt1s!^x1brlU{$bka2g@|&$Qlb?^Ir5TdIne?gEg@Q{qeVoEbX45AB|4f; zw4A85Dp;W*g+RoMghRfPfLm6wx8y$}NL?S(m&DYyDA89SG)ON0qWb$2_%w~E8auh| zsE5g7K$iq#pu)W(Lu11jHY8*D7_ADPG*k(%I{k&57G zIAXSPHUkXAbF;`ji`=ux)#m}^2IINskb5q<=aH)&)#R%4dOwjd|a%H^7{D z*|FqaNbW`CYUeq*x$)dQaxW%V4&${Op4|L+?xo~jM(#Jr)ee1f3*xz#lY0fZS4LL_ zyJQH(NZTKq&-XFTXpwUL!7!eaF~&A%d5awjszF~@V@kHnG4Jj$L+#;1rrGi=nGEUY z;IcXX9jPYmB9enK^PwjIESL&tFZu6{|DIt!)FPllK%(VRN{)hcr+~%)`UsFcYi_Ff z&`kmw38)Lu$Iov`)fUJ@lYmDb4e)J{LqF8sd}lK4rB92_k&A%s-KT?XH!Y_MScF@! zA!|JlP`dxmMwL+JJyJ#t0gD& zTs1Xugm|KfgJO7z*B{>EM=W;%wY>7Nkt}ZJSw6hD2YT{8Rs?cPb|ChR?JS9xTvx78 zQ+Rie;{_0^)v9=|h*(S8g4Uj=b$>*b$NMvhuPG7l(jQK}-2_JXemBO)i7YC(;*dbh z<}{tsJkmUb6x1ChORN@`B%75dv!yL+@9dU)yB!u66uIXeWgw!mE)RraxAPeVwmXKa z+o&5WqJd&kCxW3!E|?Z!z}#OX*YdbfCs*=>RMiPCB{EEN%pOiPH3Qdm%rW0?zlsZi zM%^lDNUj-u0a;G4tM%>(2Er^5W!7ue#nQJ&j<7iGor z4Y$ap3VrKFEjoSc=JCFr+WTS}54b|!eKE!La&qkB8krz?InIMGjerMHkAUI9N+>f} zj*LPZvDi*Ak+pI{%d7;%a_~zP@>$TW^GRbz@b$=%*nQsvsy7wIp@a)NAy{)QQp9y>5yX(g$b|M4#rMFE?`wN6E6iLR7?GLUU5jGN$ar7Y%J zbxXL5EOkq`kq9zQ)~*zh{z`4}w5%;jqtf*C;xy`41(ySXpQ~d(zX$U7$CeNvyqW=H z**MC5Q~M_w;eVz^Gk?_H?L!@8wC@=jspQajR&bQQY*i6FJu*9(iS9VV#xj&c(-9=j zl*lk5qa~6;B*2AXo6Cf8b(0?M8t3UGBTJ6?z0`V^MBGHqZvVi|!Ri5PUwdq1xXbi( zfEJ{n)^Xu32wK_xsn0qD{2WcvxsasKi-8R~C>D~`39*o*)TfX%cJOVu%HW0iDjG^v z-$moPuUtl}!NP1nxgWMZiI2%&>5ktzlDKtP8O-Abff}ca<(6DY@Dhm1*VhI_nI}|k zR17ZIPkbT=@z=r~)_bu(y^9*cwr7U8XnY!Xq8i{-90g2^%xCxmSJYi>r7$_o;7A3l z^fzZPrqvVs@FB&;5uK+#yt|1bGDL5qfDTi)@PF(Fza^EguX+DL%A9J?cUv(}r+rVF zeG}&taBD~z?Gyd>P3h>w3Lxc}>o>`@(GuA(@Wq&id*$1y561^iIqmphCyY#wOcWDTV@vvGM(Ey+?oZ-WtqI)#4BVo$Tn*S8?7zYLB=%HbX@Q4+SOK# z-Iwg^tm9m;u{x-!(-UJ$=D0rATQ41aGwV&yD+1D6y7gAKTnqAWQ>Y0)xAuBCMd8tO zPmG!Li@!#DKQ>UOZ1c7>9nr22)vi);X7hdq{^0BMWxaA^tQR+i^aED}UW7LBBDCQ} z;GRy?W^rI3;JL-qi*sU&Ym>Mya8BU9*d*=?HX~J(W4c2JcTg6OLmRFJDZ4>AFFJeS zvkK+9cq!rf(5?#zFNcmc@tCwh46C68w?(_8+U0wtSqJf4v<=@ROP5)pi|JN@bkwSs z>u*(7eVSF}wdVS*P`Xu~0bN#YCdi82+UimpbM=i#Bz;@cMv9xxI}urO7{onoEWB}u~0IDJ}e0@6!YVEQh<*l z2*gjaf-v4GZLMGko!Qqjv*iX=<$V2lDH>MWBS}iO!|7ZzH?WNGCbz{0tzuB^kKGM` z!Iou=hUp?eqg1Okdg3i4*2dM%f!OIcfkQ#QOs5dW*Yi^~fRRSItRTgp7et-y5I5_# z#vTWVUaO`+ywlv!qU&tUQ7R(T<)7UA^UKY@fOvFd2Pht%WrQddj7OyyME&V|gXoPl zPC|VX-VsOC--L^80+piAqS_@9``aujt2cD|vk1KrbiRyeR>(^K2Pg%7&i4_HJt?!Q zcUccEr*b3@*0{2(&r1GEP1y+kWQby$_;+iZF|F$3nLhj4>Wp*Dv%}z+C2AT>f0G)A z;YBq>WuUkeS#A1@E=}=`H4c9$rBS5Qi z+$4uU$q-quP{^p3+jEKUCuZ9fvOP9i54qzAb7?MMb(*am!{VSCu-FJwRpQ%YrQ(NC zUmfV#R%aZw9#j-JsEO|<8o3Zaq0WU94+3~o^};f}9`3wy&@-%F{UWw(q#{vlOD@C9YcS*ura$AU^L zxTqXHQe-x76%6lVf+)69s@>cy?6V_=82$$Foy0Q<-z5wXb`j#J z9{v#_p6cN-!W_cAgt>(K2=fU)w`+zUviN3(@F-!Soim)EsQV7gfToR!O`)by)?avU zMNImK3Mo8+rH5>iUD4TW>f+94WRkT$_QxIS)^z|b3}TTSLa${rRyktIbMSypr>xvC zEdrVkv;?a~ZjhoKl^2o8%G>Sf#H2X5`|D00{)T?eM8USXUJ=d7*#gSRZx7#0 zRcLPr;M2NZ&K=fg?UFNxcj#^=-3<_C5C#dwAj_tlpRVM{)IfAT%@$ZMGYs%57f#`u z*%6mS{gGl<N0Dj*b}*9SY+CX+WH3W zm30FCNs&8zk!dEDChHuyU)`3C6c3NwF(NWe&K=WL(~)8oQsR`z9U~*ttpGX`_`s2yd*=$^hZ=U)TuxGv&mB80>%8!fqYi`#B7V zCB2V8nD23z4{J8l&b8;d?fNu3I{Mo_D6O z#Pbq{VPV4KT%K?kS9sp>>>!|20o&nC~Sp7)Vfq6X!k+5A&f1{{>Gcp1jyphC=gIq1sgxI(0J2K3}| z$l#_+@-<$L+4_}mT{e`AfU=-E+(51%PKRpW`SWY{@$Sz7`B-6hAb))^Y!A)R*gn>L#I;C^{~LK|=bG{$t0TEuWg7wOMxE0IaCQ|#UAvh{b|GHEB6_`2v2r3T{3 z7{?ti1HTD*Jh4)e<#Xcul%*~fi)_=mHim7HM(xT0C$=x^wO%ac?+{0)rCHcI4Y2Xy z*uhtNd;280e4X+SAnfkajJo0ab05w_hvN9;l{aPGG6U$s7xyYo%cN#4;+Oz7mla5V zk@y@bdpM|uzp|}kP?Y1@OkS?%HP73OLB8j2eO1@}+Iokt1tKFQ@JD92A`4R@H>Qe9 zAtN%wEg{e$k$FQSQ}|$7E)`5k(=LoDp2!@&Pdm}M-ybRSYA<-%Ns)QJ$P`h+3X%~i z^E)}iBlAW?rpQ-=3PMi0lXFUB-pI(5Q^`>fax$Ep(<1XmMW&oiH{|1(vP?(D4gTmx zjM@I50Y8ZQ*^2Lqx>xr(yO=`9zGYbBDs~t9D+FB^AZAe6lk$96^E`|MmflCe#a(xY zB=yOMOlloTCN)649~4YjyJh>rlPM?1dTjyi7!2radn}kZsQk5^&Qdn;>A% z%OLHD|t#q!E@fhlgN~P=Ftnx*vs-4OITgW-=tZPW+eJ zyDGcRHgeRi6Ne@n%}xigUJ^T1!tr8~7S2{~PZ6F9U8EjO7&IZRn8TMSpS*#Shh4h3Zq?2{1p08sfwk zQfXotf&7c=+t$i&eDSwPuTn44DcA9M*~jBLUZfst!Q(I3|An17c}_6|jfo zn8{3)^2|e&l!{gcL$OhlDTb!%0+5(o+50-Pq)I!jpvc-lb81l{jU52=Ys+omq1st} z=VH#r-k%Ina<1=`tY=kx1`_qiTnso()5=b>-~eUUUCSyOpzqXnB=JPg(?{qdR*;R2 ziLmt27bP4!2wAvuMKZohoN-g$F0K!w?$S0Vt2;mH?#oR|RO0^{?l_&wzpfJD4R{4hqHZEitB%3}N7NaLXd>{zWDB`MwmPyLq-SIdMcE8g zNT>~|RkTyR=nzrnQcHwT;fgL-O8p5U$%^R5Wnli-ib&l!5zVEX%55s5`NH^LRYu)+ z^7+AkM;nPC>*LjdHx9Zlpql;yHu*iS(fBBAbV2xDE-!e|Kk4CicTDd4tImYw@nbEI zmogPHkm6G7{)}P5F2J~221LTePS~hI%mNJ2LQZW)+tUK}9hr8qIFr0Kt{My;`(Ceo zi@*CP;4&Y!^8oLp65{G{-r@MU{kD3xcle~>=HfcqW(JEf)tY1yH#doCDE~G$$rQ>z zGutlb{S5BGR|>AZzOs8zPnS>aXgi9a$Of3 zMXvas-0^xH=abyys^cD4C5P6IR}7V_-C`V5lXn(*a`#<%z|hOu1;!aPdFPUMo=rzO z7}IRK*sUV!1qO99rxp&SI^>VzrsfcU%N%C`7UnINixm1SMxn?It|{VI&yY0%0u+E7 zW*|^@$Xc~Si|V(#wk+4DKC0j{kP|hiNTY_p1)Mqgkqxq5dQ6868R#^b1mwYi*i>#s zVRjyfJ@_s0lGS|(W!lmsqD?*Q7*6tP+dmz zzhhvzqYFg@i6FqJEhtf9N2RcH4~vftdw6?3;Dr?kq`sUZu@`_Mz?8iDqhL&_ljPRe zQ<7Mr2Lg8}olEQSEKc-CUX{In1!dLCoJFLjt#f=53*Lb#alS!0QcKiJTxH~Kxk?>R zI;1}@%b7vc69)%IDP^%k))!Y4Iwro>n11#4Cx^cd>Bd$Y0 zDuK+kcH-5Rj#)Cdo{lw)jhu@f+{v|lj*oE}a|YbBDSmN&Q}XezIGy!{ zdED0evV7l(u?00r7v>>uHWjwXW%)L7MDwNuv^MDr^OQf%Y4jG?203x&GeTM3#}y#s+D?j)bg3G91ocLpW5Qzcurqi;5Qsj%aY;>@M~Gjd-=hOEkQu zX`={AwHJv?T`fNs0ao&}s;TXFpTHy{4)t^4;vCLF1}T?EzYT?4o2MME6!}h{)N-AY zkNDA+LYM;dm&LN$L?*X6VW$&zIpIDhbW8EoEM?2vYj|qp;WfTbd7_vq5_YLdU7q(d2$WUi}U1~Y>e=|^gX$j>|=?)x15={+MS`>p~_tA z0LvJU6_2fPvf{k7hU4b{{L)(biFoQ+@p2w8mr#xeY6#`!wOT?sT&SZP^{`w6-jzls zIPQm8qWv(dlw%nNSWKS$tILba9jzg_poQB#wqJOFMH6mwUC!-yQdYa!vKw=^=Ui-+ zWs;q|bM_9{IrsdI8y0I7-*PK=Ea*vXMpvn$60s>&W3$VZv<*lr>OJkNiC|Z9QCdKv zJ%(STL2)8u1^}df2VJlVMPz?^p=v`|o^Qtt3y#qX`M1<(D^= zA$<#3P%ga_EAa2#Kwz`*`VbP=Pd~fZI>lb0k0QkxiL!ti1vQlM?|b5=qMkA+T}5qH zhxHma?{4Xk$39aRDK@035a-amYQ6*vUgva)a?g-wIvo!omWfV@HAr5%PA!uZ-uF?d z`pT*GR{JNTQdg-f60+XL8P+lDVEd<|QjxBL`&E0-sMMu;&%;sWC|3-3Xh__lEXfc{ zMOFpT495@4%^wZ$CIC-pKzafoBsqdf_tcSHnj}X6^wGpS?3x(ICF@Y5zf^+bWn^J! z##r8=#pj_O7ngOC8S~~S>MHEg3OQaFdCPV+iqo_4&W__D{h_Iob9m8|Q;JcptweZ| zXH@ER+(Yx!AWhFF_PTtzI4X5=0dJjx^WB}ice)FcCG5PJ`hm(V1apguVaVtgS0|T% z{Xqg=&Ks$ey??3NhmyrBtu-G4>;l-THqB~kTyogf_W_JIIwM=Uhoe|J+8rynfIf-+ z?KmZ~Nz3Y#nUK}FOhQ&?KvpNWh*&hjWomUo+k8B#R79KlzAX@JNezkb%C&8LoY!5o zu|=9OIgW)%I+r_)o#49~up(9k z(wC8uipEC-XUM|W$&mFDGuj3&(jgFglsz!j^u7IGt7_qu**5y7s_Rsd`C;d;0nqC> zN_D)&E>QF-;vq|49Mi{#`$&o0i)y2pk)`brghZXIR2#=I^fl~j_He=UmaW1>YTR`1 z7Isj65#?R&+^ZFP95Z}j8$c0q%qKTdM!7mI?lm^;?-XINKD@6etHbJ+WdI-U8RZ!9 z3pe5ZZcIoDJgdeve zM!7m~H!~23&@FpXYGaAw-)XNSEJo9rx_d+J^unvDtO7FS}E! zP0p_E)HNpKNEL6ojtR}<3{Q7fto`FrsVh|HoRsT5>yxH0)zEE9JD??=r<*shn>aJ< zrE~EQ@#wxRUZ#GQ9+Njn0TfXRuu20(j{+2N3b0ZG-_<}Rq8z3Y6D=HCC)U9C11nGQY+LvQ#fRnyad;@IzsUHMe1wGdJ(B zvhMtBG{64Nulw2UfWbS}e?wgE=B?=-L?+@g0KbsId(?kp2fVw7jBYZhiVT|c(qs`) zdR8KkW;M1#mn>AEA})Z+;0jb$Do`1Dpfb7wm8EE}P~&QrAc0AOBr`$vGWKQ(E05{u zQgJaPoiC#FfSM)Toij@?HYq0K&3WEl0vl`JEO`x!Q-;(_^KD$D^r|sr+gt2rYdxQ6I?K-?yj}*@;CR&+c2)eK?L>ur_OB$OEqR877dupw{)7=bfxw z#9d!me{15U8zkau+Hz5!-NADe7fh~KA6%!t$gDE0hduA`3zn#6lu)2sY-~hvy}{GR z+lUlbyS}vUsCBhj#dUD=67_escs!lI*`rFJqjdzqyHY`TM%`enVRao*>g)ohQ}enC zHZWy1&&kD@3l;^_C1a7Z!WO;`o3%k3GZ}Do!iFV?NnVW@c}uq_HP=h5;#x*~y@){m z&XXbtHv>d>D_uG7+9I6tv5m+$+8{)B<65=b&&>V5&PD{dL+ht3<=vNEEU+_RO7 zwQ|{0uVj*P>!OhDg_vJLHn}C@$jOBuZa+`-OCn$nKLO*9T^g3(#DLQk=@-#jN--MV zXyH9TffELu2~R1VTmO%tB*sJ9$~a)GFsfdQqEyBtdM0X9k@cZgI0 zV^JS<&m}4kL)S#zRYZ%xkxE&t`9&V6K~S4P#Q+<#H5#e^pm#LlBkGp>abAKUhmQ5i7s1)! zMWjkDvZB6Z(}?Y$s>vKe^`j-#Ng+6KKC)Cel|Q498(pq4KOQyal{kyG180Mvxp6%< zQ$ci{Li%*nnAf6Ds%X!sG3c(^c40@sm*L2uD@D;qRsNn)Q2Vfoc8?m_bIkB`Q2r67@zE>;na3k872e zGmD}24^m*okX6prCdQ}2E~<~t?LEl;YT?$bJ=ig_3A8WC+T?l5`UVrAEXCK!xy!9! z_qYWp0!#tZG?3%V+AT6wQpa6h4Mfx}TrX+APK$^VKf6Xs*T8fEN_DDah6ZK;Y*SKD zif3wIChRX0mDO#%Z(kRXSBkBf0T#E+R@R=gCj>p6*2JKw6T7rNT280vj?7oq%l3?H z@ZYg!W=jtpP>u%W0FwC;tXvJs1tjw#pnMI=XL2jSeXB~yIww_&9Ayik`lk20!z4pvd)_OjWMYLrZZyd&GnxW z!j$U4?k9nw_s1rg%ukj6N{8b>OXzL`>f; z=h$Vr1le|(JS!cv%jD{GfJ=aMzRKdG4LKhy#cw6YgQc#>?J1GTsrq!U)U6K1mPMM@1%|PL6ssf*ch>?HQ5V&x}kS zjh~erCGdbg$Slo@+(604u=&7US5XpUrORY z&d0Ok%-73aNyuT^b9v)nyx3u!YL}Y+@px*lQI8*R*y;|(UqsN)FqzpvvYAK@nOQTF z;_uyO>p!NZ9xBxDfZ1RF@KSgqs18lq|0)}?I90a@RnGecZuT530`VVLx&cJwlm8S>7- z*S>hL;YF!dJ=ai$S^VF5@!*GeRrvEFUU7JelO%qxAAKv6;=BTe-oZBIcjDE9NitQ% zfk<&t_bjSVOX2_B!w2$oN&oTH{8@-Pi}U9e9`Asn5Fm9Ad?AlDqWou(mg|j8lEf<^ z$u|B-2uZlMk|cZ@AtmpH_&Jju6L<7#$1fccZku18%g#_ceAO1QO$x3qDndl3$G-`n z=Wsathm6>^U!V{5o9VQ=1Y{8Trkst1@-xXvy8ffHSX+gBo3aUS$TC6u6nHBU&nr;B zTq19JzMzg35`D>R{>-iXGjURS;*MIy6xaf9?-wta^lA&3*8A25{e*s|MEsFiT>qHO z^$+LG0=aM!(7Ge}@`qA2=pZfcd=DpJ&b5&2__dJa$9t53lsX-W%_|rW+Hx%U)E3uzqfB6Qp%#1AO z4|hE&oY3X6l+Rh5S76PJ-G#qf7+?jtjB2AyShKn(E$l65iiO3)B~Bgj6sh^{BBEUW zA#&6SlX5Uorboap+Zh9HS3nKlK|0SFeg$!bgKuY4B;U@E zrx25FchCd zrez2ZGrBU!v4=|;S2l#KQ+XEE4XRAOpf1t=UoBi>+bb03bTCP9j`-)`rxtNAGhfRD zDt`?6^z%ut4fyAo=4C8F51Rz+aPeS$)ndI^PHowV%P6}v)~V%H}CXm$mHjFgTV z3+{(784m_S8j0=ZrF5xI2xA?IAdR0Y?*mOvm7z?Jp(3#hDEdI%X4Mz{dahL%jbvz@ z7Jo@=!3f!B7z<9c(I{8R<5_oK;8+3Dj_CdYR)9R_Aj&`=Q{yIDkk@orp4hr)^Mdnu z9-~&?*1G3~=LEz{THH#Km$mNsj|Ibs&y^>&?)haC$Ljor8-uVW|JRR8SbOY+)Rd<7 zv)27g{$zFC5T4$YKO9ppjEG8B2bEC6-h^2a*N!+DAUeI9Ki)I=v90{R^Y3U_z5CPe zO9A!#Prok(PF&?u;)_uyz zY) z_TQ>wSmsog%O4#_IF z>F&xD?wpTfiQnu7`P~Vo^K(Da2nYnq8Lo4VD}JTws9Q{fYNE4sbT$>rUuP|f1*npQ zpA&{t;y?>JW8{p^dj&kpADlg|Pa(}61dvG@2x1KV3wS}m@nWT?d? zRsxksQGFamkF=fPR2^TDXdA)B>R3y_A(M`Xh!WDa#?JS$inC=G%bp@2fA;MEq3&(K z<2U>>Z> zf!u7iq$KUbTWD+Eqz@@g+q47&Aq1^tOOAsb*~Xv29|)B8<>8r>6Y?JfO!>nuQ+__ z&r-jFgH~)S1N;ZTF9B}Z0dPc7KLdEiM?J5opE15P1>1_5cNZ`b1G^EhyYC?`aV@rf z!B-~Q2)B~hN6XFz)o5w0sTlhV?cQ9xu7SZMP3N^H--mVc_h%j&d+k+`3k64>zKwP} zY_!=9aoE%X`NCqW3Of>#xYmMe0D=V#5dEe`{(P_%v_^=zsS!Xt|H0P6f{xkcNoU8t z5QGalde=)fm^d_%;np`A3OD4!k#L9he2-Zt&db_`)AA?SjiJZMLLwt|aAq|}#rjhK1W@>BE3Q#gjtAnd=mi zIfpO7X$xMOi`mmIdv$vmw(H@lEb17&GhtE|j&Z737jDpGL$yNAB#*>dvSMMyT(;)I zAbfAE5VITU#EI8vABC&x(mdkfHTt41#6teox)5u5ri|e=Oh+3cmT}`tw^WtN`0~;9 zCNHEi_kDI{RbhT-&rRV1PCLv;6VMquFCyk=O+pYMhJ6>~hdB2O*R`Nu%x_1xSkOMa zpi^o^qyjHs)$$7qmJToIA*|}i$FZVh(}8j@&c2mVtah05+K3}ePHQkZ$B2IT8XLM8 zp}NVvn`al#E}oq{v6Nld#*{x`k`BO)3o|!^1rd@0VwI~M# zoD~$xI$&f5Wn;@lc2EyEJ1F+#`$3D8*1_;s16WdD!}b`^jH6gMVemtq-Gacnt>jG6 z7RkfoEgKmfwZ;Ea>!8?lU^7R4QBQK4;S3j8e?emw+S&d>EDqiX$dpx}mfz8g1!~cq zT>;YHZ)z#8tWy(X`6X?=|o7<}7racJSMK_iHEuw~qMRw>Zk1?<`XX8JZ1ZoZhpX-DDAe@0>H6lQ0}yb!QL;Vk5sU}-kt{%udthH-)-S#LQwk(f=0 zW^dZ{45OA&_E{+VTtwLlNnLwE(tABg(;}WDX-1$U5qNr%f+r2V+NED=qt|+uK1ZVU zEe&gOU?_!wRXlC)-+V*qO^u^w z9s$j*#e1YI--#B5glXhm#gsp4?<}!^Hx-irf>W8!oh{$E0@T9`PR|0MBU5x_ zg%tE-xb&z;MKwj~L4sT;EOQ##G(&d8MMx>{d&os_P#0fgggZ4&8?7Ow;nP=PySZ|n zAXF3B`M=Qz**HYQT85r?ws)X;+t`~3-lgD|!kgp_seAN*Vt)0TO3agE;Z2RitcYU9 zEavI(rX~V=E(#nbqm4I)H#HNp@}iih6+;oalVH^=V)`kf6_i&)fQurB!<*U&Uvp7- zc+)(>?j~&ZCNKq`@TPVKu6qMaq1rrIG@(DAXDX;YbX%Bmu=jW?Ld_+wL9N;s7L zM#TJQ-O{1)yHXJ49J$dNuDytIfVWe5gk-S29yGV9ir2N!K7)npI<9gS&l+SAAs04j z^lJ$gwD*?iuw1>`ap)9{6R|w}`MPLab`FH2Y2t8Omb|MNC27#ALxX(bXQSRf$9f{d zo$M0q1}H4dh1$lFdx*Bt=fXjrSzKtKxHJJa6c%bHtd*Eu;f7$}^i_(DTOwx(R%nw` zs3j!W9u5UB)trN2nhG~3NwOGRt&BDu@mofc4Z*3Jy~MN>Zcg)9R7s%2e_cKgE~F(v z#?tv5(ooGBc07~j!p*w2wX>3mw)2)w$b}r)mxq7|05pS(0>A zl1N)zL6V)}U~r`7f)5ubHWl72S1?WCX$)Y*P@~TUyFsfTu;xU#U9L2+_gT$rczSdx z6H~V|Op>n=MrjR%DvLVXwa@a_igLIU)e{Y|JvcudZINV)iC6+Thl8Uva;>z8_hn$T zAvj;NpZ6BtyQqXP9Ob=p^g*MICD{kkNK%q4osgu1_wH~9EwsNz-fLtlvtsnc;8@LJ zM2S$Ij>=>9@U%QmJ*WzJnri!4`j4p5(CBldR7I$dI>Pj*cD~*gByrBGlM|=1}*VlEwvq$PJRV1Qh`MRN1GR?NRO_@#@^~KT1=#kXfcsCoxD$^ zP4g>hBU((PO;Z6A&C%zB-8E;K5!5+CL==d;^bu@S7=4cU0|d&jL+}tZVA7PPBdr!W zm}zJZ#WNY%sdBe+Ad6!dZ};3%p`H4l^oY1) zlUPKZT!@_7!Q{#2GNRi&Vnm)+I`OX33-TmWS6!E@IZC+5v}6K*h)l~S@Q3)NYeIa7 zC)+re$?j$8=nD~H;D|9Y8m`05u$jplSrrD zs@^HH6O&Xw4^G#dfTJ?gxjJj7Q7V)3gvxkA89&9~CsjraM9-`hFXCq;&c+TTl z%d;mKs@VnH4xA3p8&B~?xEnOYP?B+tps|#9(Mh7Wop;eqM4AWPG*}TNx`{|V1g~;L z(!s;1&*~Zut=bT|vSPF+B>7V8Bs!+yK<2eFV7P+h8dHfC#ahE*q{+{x(1sb!$!lIB zLZn-Q6dDZ9)tus8q!SlPDv3**$gFGh=SZcq)v+8L7K`Wxaxp5U$B8=uNWGVrqyW=OS;FRBS~dXQu-_{CH_+{Rl{0Obp%sqrK75PfU5wF zs!O2iC1e?9`Zo+w>(^=&7L&p{4nA6U=43o5PGr+A-W%vWhz?lK`pr0bqZ*6i zp1i6nL=wdpi8G;#lqrHlaS>H*BBGWWxlFvm&7H&ucgAGlU0JJAi;AM6_`~i?T+%v% zN8LnJ6+3S)JwJuIDwS%*hfTyRp_lKamseCLJ@sYL@h$U4T%ogC zHxew(Bze?*uR1}Jm}7CoHMxk~IRtSgSF*8R1D*)o8k7;FP&y44Co4lwMCozCU|cLh zOYY30r5Zg+9j`|1Cz7gC@T(Ytx3%s~b>hw1;~Ulhya``Y3SV-KsRxL|gHfP3GA?Ee zF3qbIR7HMy))Z0H91X}k*=edNM0^|4c~@hI>`O@7HO~HvcwI*Dq7q$pCh61`Ed(wl zFmfDcN{DNZPGY)==`6qnkq*_sS85K~sI4HbS)*EWZoCmX2$byaAfc$s2xX*YF*ZCA zjp}WFu$mxrseODp_SZZcd1iTb@m#`l8P7#Lm-1}k+0C<)=L(+9JUe(UmW03&9K_oZ z8~}=e(rTz0%1+EyKigUTl-K9;`Z%y?08qdP}O(p(~Vk>cOFD zrGwLgk(w<(aEsBS&!W>j4!(}DZ{4C`Dx+LwJlYWcF@_pCn;xEVE61Rodhn%7OV3}* zm(m2?m%-7#omJsJKFNh2$OXGoQR&$!I4i^=Q%aj5!@~M? zS%*x#f($JtWRewR8XPk0kwwTfI%FgRYcEEo$sto$L8jRuqrCx#Op8M%7a_wPiCr|q zU}TTF3T09o&Rs!2f9JVbVv;!|%4A`oW8#_iOD2QK9)0xIiyAS?1qhIAWwt*LnvhDjT7+j$di zS|X9ejU&-(XBG^#2Erto8=bmAXCrY78SO&PV7}4>((N?|_}gI^k(y^?aE!khZXkJZ zII75?uZT@0;^=(cD7sl@wJ}&I4cx@D8I5-ba3>>&By+8%L~8Mmq zm0o1+wTKQahPO$O8n)7AE1Zf*$~v_R4Y5KBqFUvI#0#yF@lIAMjS(&1V6Eo+h4G{s zgg#@{y1?JYsJEzEXd|vAQ1VVi4#eq1izv9k>PUyNdPdZjkW%Gak*VS}qrYme4Yn** z6?3ZE%Y3y}g`l61q?`7>VqxWF+O73zsFFhzG#mbCS3Dbe&zks-YknKN#Ct4ScOtcl zp%6*h35}r6uX@{2^u;k}b&ss^}K`=f*lawaSa|zEDp38VH=Gn@#0Xfg3F4$1B9YwK@V7&|TPNy`s zNom}jdhkeee=R(S2B7ZKDn!s64qf4t#$V$PiFJN`KB+Pog!{!x1Ur_UtIdC`XbZf-k)={pgK|(2Q5q8not)m zG-VM+-SY}%kzvQFvcVB)in=R08Gb$&Y>za>{g=Av@B<=4_qdwaw|3 zP59vW_%~Z3rvy6_8z(v=h?h9pgJAg!~_SKEhwwTK=7uuggdNS6sgL*v_u@xDW$FlvUZ?tq^VwCrm@k-lW)#j-j^Rf0EAy?C`)(JTT~i z$2{50pIceGmMr2mXf#{?-Hc zd!XQfKli|AJg~w8AN9ZoJ#eE3Iy~^l9{58Kff!BNB3J*;6K+FT@jz<+d;ekUQ zIOu_09@yf64IX&h1K;t$w>|Jp4}8r7U-7^fJ@9!C^myRo9=OE=?-dXUhx54GG2x>Y zG#+kJ7gKYIjnjIvUXT?Vr+>5lb;5H9@!~;t_@E#9b>w#-L&;n4@w1|1OMDgwe5tFDDtvUPE zc<_lDPkeGvPa5?Rd%Cq?8g(tNmct7#MReKcfu8~t-4N%C`J^wVpUdih;qX1TkQFRzkw-C>P4ZiSdQDmPSKJ6@&x3f)h z>xfw>*Jv(gM#|nmId1mGai#+?gOZUZs3jBKrsJ%ZGt$gwR$pI>#WK@?JL{zDp;Iqm z#wX7+)gQ8D22Bt$y}6u}OiXd(dWO3yvqi1;$Gj4VJ|5$}qDe-YAI186mY6}*Z>m30 znd?-vMT$)`bI90=OfPEBJE~-vj8XDoxvN6n{k3XKeOQu+2YdSlbl+W7RgCLkvzt=u zHYG~8mTX1%nB2weVF6JGBt#pGueIJ5Q9~OTngtUppS0{|I0NO{aRX(XeCU&`w@gm! zf)`nnMtkiW3an^^4G~cah6f;>$PaGp;M&Apm(hFB4hTygElQELcUJD?4_j_FH0N^KT{WOf%7w|?|m#*dOn@noLYBnb?MnOUeVTl z?2^9ct4q(jU7md;c=Jin9T zWU8r%zW&KDNQ-7Xk}OiBTlLZry~q-4i85f>fy{M)ve?5iu6(){RYatZ=gGZ@zd0q< zMC+4Lob=Vpi8DP%M({SaGy$j-CD$Ztg`NyyS$jIM$k<}iQG?)>%FX6e9;guz=~3U^ z9p$fVFB-d)fyOSE?|(ja4YG1z`9J1?e-jYpf1}U8%I7~qi)n1s;HUhL=?VV*_H>g- z@PC9?%l5-Q+xH2GMu!W#BD9s8p`F&}WUKF#t;^2Y3~R_eM!V4ndYI~$RBoDTReRtp z^Gypm?t!ug4tQXv2R3_Py$62ifqxeeHSJ9vPoZac9s~j5DMW;4mGGtdBYFqVex5Lc z9yVcFs@%j0@AtsFJ@8Hsw0YpI9(bb%-r#{c4@~#K6b}R*IL*}6$~x+S7d)`f13&e^ zQyv)bzz;m|hzGtUAewpo$%d(@W3Ju{D}wVdSH$Rnmq8k9+>5U%RP|vK(zw$+o@PG&Y#sh!pfxA8M1rL1M1E27~ zQV+b}1Ml|0J3Y|mfwy|#jUIS|2kJa9-2+oR5P0A;ijooPs0Uu~z&;QB)B{g>V88=E z@W3M;_?8F$&I5l1P;^o*jAm(nur1;vHK(;}o7#_dRl})WU3=c+7SQ0MEa9}P9)@n4 z&;6|)c%v&uW27(UsjX2l%H4`t4ZGOk0%Zi?3c${tbF=(qjfmm8%SzaPFrv&35B$Uf zgC2Oy1OMiMhdl829{6hy$QPRByv75c^T6#MxYYw)9=O>9*Lh&R2UTW6D%%4-h9 zIzXyN!Q&@uvjle%yprHzW4d>P&KeQ6h%nuezWA!hKwd{qgJbR}66;1R^%t8jsg$i9 zGIwrF$%eolcO!|@uYmyk>iFgOWyw$%a-x1y-$ri6ba%-oj`h6RZBF#zBlXOc)R|u$ zzZ}0TzfAqs`a{t^z!nr^wt!HZ?}V@oxN*H>J#?QIZt8n3Fje_&xFMz0dTyq?T24pK z<&4>F*EaHp6MN>ze1x75Ip;n*z`2dNI#M~8gB{BY?)28#jf7s?qVv$HtFCPiuWfe@ zO0Vq*ujLr9RPI-3<9@!?5$^P=_?N$oB8~OLFob|1-BnAFPb+rW!rSxxb9Qk@AU$*S zJMgWtL4AF5@%kW~HfL+9Zym42>n{nXrPkdX^q$50OjT;lHwpap!0I~|$o)Se5-Tu-S^|qDibo|S&U9&B9*Pyz<(|u`=6-1f*lfopmF2kfOp4d^$q{1uuO2HhW z?sy)~sh$0FAWZn;kgBly?ARSwSUqk}`8s@N)*;ziJrb7d7o<3ceXk_eEapbDM-!LlQY)LYT2lXX=ohDiI%kY_0=NQ+xs^B=8h3HD4AqR zFQ#Q0b(Tejq<~H1ZFT2g^qyT!#pzY9wfbIQ1M|=w^pc6{M|9t>Y*Y&m=ho_>gDe== zLy>IZjw(($%cIQCd96iw;n7hhGR*`GhC7U>x$kxgR&#(n7m-t?5SdEUxozjfsyV7aS(YisX3VYk)ttp1WF4iY)-h+Vu@n2Q;ACh946PU@m1{0g%wm14voc1& zHm#2}TFI6-H3Rwdn2dgWDMBpC3|-|=|9%o=K(AkyDUIXNV#skq$mMUPHdnp^xAb%p z^MR}|poj`KJKJzOn4RQpiN0*8V5YP(Bf%&iv#$f}N>gydm^Sxa5e{)#KIx>=N%ys* zV>~h&+aaQ``hwAb5hYzPyd16(AsfI)h+IU-29OnovONG<;nF~waWZzPI2pJ)GK$~Q zhU^3~=0wIiB~&)fB<3PA){T=cwST& z|3#ati%`vxX1p#-E7h=!h44ZWsAIuyjwKeVE^Ug^{=cgFGM0#q*F`B*+l%U=(i=xv zLv-xAT`ki_UDW;bf$CCAiLzBZpmOwq>e6Bj%;A@pf1yfou&tOeb{fvmMh-|EUd~XGcGd-nQDt z(K^h`myv=)&r5lrhvLs?`L(z<&|Qfyzwvo019un6`aZw1s^?GfkM#%&5C3(xol_b> z2CN4l@~4X7Uw+#o0Ts=HZQWgHXg{4yG)+iU5mSxVfXGhfFaO*Oa3UOh9o7!0_J1^eEE)lwAw)|zq++z+ck?EpzG1JsH&_FKX z`Eob0R=oUS+Vr}K?1Y^%P$k;*WOXL1@Y!n&5yi_xrmTlrqV&t6_jcYb$CU(Fj*AJ2 zipGSa2@-WQbt$VZ%aXNl_sP7b6_$QAuh8Ib9{Q)kLtf+j(W_J z31N}p9zHJOyiP6tXpNzoX;v@JM;?4~#DHxFyWu*;5Hg#2ol{6vy<|#kEg} zJ5Cn*q+IPjuS(eGD<&j4QGW6J_W3Fo_q7Re`dpus*DJ|AxzjF5|AZtb$`84?9(+Mj zh4OeDAM1nimt2DNE`ewhA{#fA|GuBO9n{j7qShKcX`)r4Rt*jZJhkp8!btrMAM&^l zS+BI@@r~%)2c!3gqxVO7$9KU-9{yr9xBrSyS%txJ?qaluc(a)~K^Xvi{Xgsy*j6N$ zV7a$O7pHvvWoX|Ajw~C`_{-29SA29CTEAfP5BG3R_?mTWu(5Y(E~{B|ff+WEN$3D( zoLwUU!ia##pArGWhk(XP3ZYbS&LWJW4cbR@9wl}rIenuTmLPfI#E)KBk>e?fpX!U!Q^=6)yQenN)&XNlt0HE6>&=I2OJ#}5GT4vfKi z7t3En0j#k-pW@^0@u(Am@=3CLGcp6_@1_sPpXACXjQ1KSCuF5IVyatQXeXfrWkC)J zQSKm=zPm!NNGwIN3@Da_m%L)@Py;o+N>lke*P&qXZVQd#jXSz3T5==tHiAhNy(QT?s2)2_uT6 zMic7rQD4Hp{KP0_b$GYSOLw0-DoGlYTV3cPSHi;tsSdy6O8AXl>29tB6B|(-CixON zCX{gOajU~_mJkGe4v%%)atZ-nES?Nz6mE)g&5bKo{qy+P5;M-_>|}Y%Krlf^Fcg)VLpc z8<{VSV7|O^&Clvjlm4{nPpAHL4bSgUF2nOz=uw>CiD1uZY3EJT^xD8{V{!f>3e}Qo zs=?fIs%svk5G|O=jUUhZv~WhWJlZH)%hI;W#=G^mP6Ak7z)=&uaIJlevz2=R4&7@A ztP}#_sp6y7C&S}(PIZ5J%e+n2N(3BJ*V4l4vyT}K! z2ba?QAcUy+n@8xwH;>I3O?~ArFTmILJl@K1eAknyHGi&G=Z?OhVX-0g7ym**rDrGg zl@9hj+h54Uf2>i%yb(9?R_KXyykqD1@eaHa#bboV2~Ac^g;C)j#qA^VeAqgN^hGelyGTcGOGlX)!Z0D3pXa}LSgmRJa&U7V|tFPlM z#806{ivY8R{$fES&5?8*|0RTS_f4FOf+yhLMQ8(|T%SAv|D}X-<4wGY&~g0PJcu_< z#J^hsB;zjP3HYxdw3*NrLdWs%A+&|iRzk<|*L75^lf^mEJ4KB;LD?=KCNv94-8GkH zKlE{W_o&@|_Ihr&dTvtRbNz*6+O?VP^KRm;(37Ukwv5-gxzLfO&C;~lmWgfFk*3Yk zwAq%4ZPt;d&C;~lmhn2bkwY5On@B0aKcE6gMw@M!*k&DR+AK|*Z5gjKGq^NumZr_N zjMur7&^k_(f;2akq_g#B=){`b5wKVRd_mJys`02z2$5_{h@=J6v|yz+(at_wY(&zK zX&SOpsptwM+_Vr$d!}j6O5LI@T^vFby3PWY8=vpART&F7}TUnTwZhcHUOjkK4025jn#$EiFcAJR0TQuPC z`(w1X-dB?m?_K_Vg?nG>-z9iWy~9Jih0T@&y;?r$cCRv}Tj4-?6_o?29{0LQ{D#v5 z=Z{vm1+N z>oJae!LV6C!I!0+aR(dRz+lawZfMOQ8Ej+An7!M6{Z%>ds%m|N@O&8MaF zmqKcDYw7%V>CJsBd~t0hyqI}Cst3*Bu13aPKiyniwfyCOqwBc25renpEEfDJf*Jie zdjQo<4M-b+gGosNLhvGEz=c6DWKrL=KYUv{j)6}1x@dX;>fa+o)7P?Oa+O<9b34oQ zMi-NFG2&qFV{*M^2@WF;U_HYCaB#GYiaurqQFQ0T602Ok$9T++wy{~Aae=>5U|ALQ zWy!}T5=FIOfB7Faj*a2J@Ar{5%Dntn_MTdEis(p5bXq7X&JVuHVECdwcUFt&@%BwG zLt*jZT&ABb-wA~JpxxaUa#p#kHRY6 zDusymR{5w^4~LalE<_G1cfz$eth}*-4}U{FNB1i-@>!`!d{*ArNMse5MUl>J<(BZq zCcjYSKcW9mFbs94uvYUvSL@)^iUV!a7u@4`3x08<@GP#0VftIR+qwHEz?*CwcFGhD!PXL#^R^|dts(E`X$E&8vMgcN)Oi*9 zuz3lUB|z6zY+c~URg))lY~5(kR{jH2mcI4fuR^ch|M;1Rt1WvS%gA`by?&XAEHNG; zYp&#s33v@5CSJx47%f@cU2N}1_0B3pH(A<%>$D>@Ea|HDa}a_ z9QMGo9@y=Hr#&#_fgcHojJbRF8x_=Nj0)dWoT~ga4}8S~U-ZD|J<#KUk9*)254_g{ zogP@|fwz0$%^qm46###62(;k1+hT2Y%^+UwGgd4{Yw#-L(BgqNdEj?E@LL|p zc;Gc2xWofzwBRN*j(Olk5A65A4iEgq1A`uT%mdm@vwR-%z~6h|uRT!oz#0#H&I7l5 z;8qW4JIFG;*#p;kV7>=hJ#e)Le$NB-9;o#|$^(~r;Jj9SRrgJh0}lv@OsqfpjP;Bb-!s0XIPr+?nls=I4|IFr!yb5_2X63yEhOvncleOE zc;NRvkn_OnJaCzSXrS4-7s03;&QFRE_>~8a0AMe>*t79J`J~%?iYGl_+b+uGd-?{) z6+Zhr{WpK-lm3+lwB=+a_X&u)%0i$1HXr*D4=nM(dpvM000_4DkEi&L^FD=bWC*X< z`;aRHM1}3$6V*NNv8Q7ZPDefPf`Eut-}dRZ`q+&g_^}7pdElP~@Zklk<8uG$U;Fr? z2iADta~`FxMA}5Kj2`g7-+16JJ#e>x2+4@g z$2{<-9OEjLXDH7UA#hfUFaBxH^4Q0}c9Q9E`IjE}g$JGifQ+@CEMNEE z4EPj3@PMhrD(721{T_I?2j1y{HV<%lrNiuv9(V%)gtwa6{3}E8 z2RV6zVK>ztSGt}3j+R}RqR3m?A7YHl6`i9mM&_{Z>mB&k5@K0CL3Lje-B&&OVzIR< z|ID0W8OEJ2HopfuBJ7Y-_pi^cFScGbXBU=HU8!~Jo&9H;DmFR;R~bb$kb-Y_@vRJ< z#&aq*zDL%x{g}vd+fsIbBi0yZ4q$B7MA^!v7XMAMj+GJaQkiZwxvXU2sq8i>+^&Gg?>$p1Z)4!7&(3tveZvIs*1! z#Wu>P@~oDu*#VN>-s%mc&ED3LP6Z9Api|(Bzp}3my7p^H-7jlMXMQOwv_-j0_Q2gj zCMI%^kTOC%XRQyp3?-h>D?TRFYF2T^b{*ef+RWcV50{;_zJ;$bV;$rzQ*8cJfIak} z@zJp5pP5L=_n5uiiquz!h1IYl78Q^YoU_QIfwJe+n%mUo1GpcfL`*bgeFah|#n#T?CALFa zM8;Oj#@SbjLKyLVnbR>@>?+4m!5Xop*m%1N6>s-vM~a!Z%sBylsCnGOVzIUWvsb>= zqdyol&vv*T$oCujn)zXN^dK$Sf2w`h!ArD#EgR-nAg&_u;@TB_KrEH z9r@aevA4`Q=HTWDa0Bgc)~XzrUxkhDAn$E8=lHuwT(QssIt9iJtSz>FOg&3n;Ut8p zZp=zBgq6S$u^_>#R=$zS8*$-^W@~2z7T<_$S>uXkDnc=0P$cI-fT%6D8ds>$i@Bm> zB3EP_SJZm0pusU$j)R~0F~Y40;Yj{wxhw+ac+06#9m!y&23TBf-fC-(*6?|tt2%PU z#<}Ws;!E{%)i4|N?uo*b{^{AHn0ZeChlp6#(9ND;ZBcEpznvhqcB4yEXWZE!bv%oe3 zTZ@_7_11209S%<$o9@Qo7NTieP6oLUP8~;8ZW^y%aEcBEC%p%EwRBiRIcLqIo~b>& zHu@&twp(>YbeypRt3u>6VFa2$w6GkM=jc>e7E*(68$V?r|Kajqoup9tu5PA{nvhs@ zFdH-C!Lbl&Hjytq&gqxoOjBModNp4*XQw2qB&x}jo#6?S$JmKyQ|o?JBgdOUI!zVQ z<1JQ>tOISY8TSfVTR2LVlgQuEvZXvF2>%c)OFC^aIK-cZ_wCSl2-ED zoJ%UUzHZI|vS@))D|w2mSMjXH6mK<}3}6%B8VBY8?{;7sQ2Q-x4`~rPweC!6-DX%g zIEzZLDU2?cxZl?6ifjY3ZY_i2#bvJY!~9uV(zxd23~HSJnND1oek}XgkDqw*O<|dK z%#A+xV|&>S>&L1ug%I+e`sVL*$2QKCcS>|Yxme-G zc(C(rbXA%VJpu;DuA7dcvAJNDOGzu0Z?sry#_5&~0cwC`R~>>|LJ!HTgWI7D=T zL6%nMYNnoC+Va1DDuP-LSy#GnknkQpuXW|uM&&n}sJ8OsGDz!<7}B?p>BfQASG@acy)A*OhM zymUiEqvcj^DRw{bl53B+`jiQm-R(I451D4Lpkl!j^0oW1HtVw%+4^YBRPj|Fqv&j_*t zJ%wiH(Nr^FOkzD*90GMfw81x%M&LLSTx8bBU*Sq8Ae(~$Q5r_cYIr${XiAcw9hg+d z&?Ueb90wnuDK&*wZsRqS(=2r@DXn`=g2cqSjI?}~6ryv=pee$szE-0jia}Fz&ruvl zP;FX%l+F)s0kDd2ct+C@woNj04$H0l={5ZB7SKR78iF?J)N z1~VNK%QCHv^PI=CuI7Brb~;}M&dR~YNmm42&UiA-*sd`?Q-7jaY6y&LJZQ z;sdA$d0xg)x5ClUUG>BHZM0gp_xuY#`N<+t^oe^EjA4R8RMzQdT||?RwAO^TBODR?12Sz2}Pxx^I9SPb3C7 zhEH2vbIn^uQup=OA4`m&kYvU{{?-xoyIYTmuWmgp2D-H@D$(dMs;wK>>JSTA76)o@ zCl-Dt9^NV+Uyvuq=bj?hWWpOH8__0pG>k!v>y|lo-8rshIQ@bn!DaC+yT>#C1O*45 z`JCcjCY$h&$!Krh4dp+cqjTKp$~D8NE;6`Pk&VN&468n};SEplqwAm`Z05B9Ay zXiO?1c=iW-g~-4dILf9VIl8rmof-By1hIE-g^^4|bIIk;H`$bX$ttEPdcjRBGAeqhl>4x={*tYHy1X@Rwo6$` zW7+mZx#ZqeYVp4I!UdMT%l}MRf#YNZhOr#U&X)g%pzshpyrewFmRTyjAe%~GXZ54H zV)&c4rDijRrW&yAOx4^U(GD|Fy}W{G?zYv`%>%ANH*a#8kb|#-#Z>B`36*OjkeLcH zs_6>R?SD-~wMIik!v8JmS?#~U&M2)|A({?|81+uFTlW7gEdo&af0Y*Z()<%?vD&>m z270GsAnn&qWT1lUljTK(M_lv+r1bw$%H1qx6i52*cM%J1Qp5e9V4<6_;<1AjQL)B9 z+OM5Rvku;kf4;+J+wg)mIv+D>$uB3+oILAR|D(r^i?XZdF`Rv-ttz!X@=&L+UK$p?`ehq#5RXdVSUY`7)x?A$69kLd~_7 zPbAgUJIP=2UH?)I6{)t`Ue!PUxB6xA;oMqsF!G)k6(@AhU%GddS-kJdjwSclwk85> zary1g?v+G)g#dHp`p@X}zar3o!g|UOVrjqjzeub|dab4+{{2m2N+QPj*n{iL}_D2GJncsPfa7GNMT{T#~A3M@>-2Bmo^$9dTUwL~U{Ur>mO82_YBBni=eEvB54`CX3% z;_~}8x^s6-YyK?NQZjiE~)qIE)I#I@7#8mP6rD%hhh$7_IRQ?Vb7rwHd zzv0GGc~Usg`yB9ON>3Iun*povKK8=vW^XP%`xAv+#E^3HK zg>>@rCql0>C7ApUs`7B|Ac2J&y22400Hev?&{e!4i;DOV!B4dDXZ8^5o~r@oyp;OV z>wk|NzTxf{g{dkEYPGYfXLi9k8u8~%H+PnI!8LvB)2#VFZpS8ObLNLA@NFt+8K9}K zOx)C@%|vJG9v&){W`>7L1DA6a8~?idOGC5roA4K1nw}qlPECc+YPD7c?AN+);R|u{ zmGOW5g~XO%XL!<5-jGdgf)-lAEhaDNEq(1xU!EH{MBbewqF)j6_NEAqm=Di1M^Twl z|K;Ic+-1Z5`O{G3ZqkK&@`vh==l8hca;c}8sH}{r6&wi8l!hkfhl;Vhyx9HaytjT5 zPujz?@R>b0J={^+FeQI3zmK&YSDX3+;m*YVD_t!TS~zvc7c-N42mHq~L(R(K;1X;B z3mBPHYr!OcrhaSwjN$R2hSXE6!*vrQ9EFF9_u_rjhWQqgx$_RUI`*d?@!%PnNKP4=*eUi+VDOldr zGWn;e#$HOV%|C6_es7~8(?%X^mB-V;fzrU_Jfh&W>h-~{-r;|E=DUYj^-FSWf5R-} z3oh5`pOQb6-x%(xKb|;=2kE-RQ-Sgq)VmA`BHd5?LoQIi?NzX?;p5nPX4?wpzv@nnIvJu1Bs*c zqlsOC>Qfh#*c;wh>Yo{I3O6H1>R{`zIbv= zSpTf>j2OSfCw26O{785fo@p>f4$s%`3(q9>-~uq2I3$t=rzah+IsV>YD}L{WxaeqL zCdJcUm*;oDl*cu7RwiXN9Ni?HKT+?x!#i87_}09Rn$-s4{^QI`+3N|xuL>pAShqMe)SnMeB+l0FO&o?!i1c76kbtWd!_2g@Dfxtiy-MCp*mA5&8|V=6RoMuRF@;FwC~~k@nBQ2HQhVB3|)@FsZgL++Xl)|3YM`~I+*esPbT`d2# zZ%^KxFXKdFXiA=9pnh#VNfH~b?9OEqn}bte*1+D+`S7T|nW>bQlX5q;OVX@jum<0> z^NhChC_fW5tuBD8G_5k2oIi%MdZm87LpTzwa_DHw%Hq z#W0DLy2aQzYnhO?A-@O0nhb1DZGrI1kT-O?;DiaIB#!#JSu8@z&I(^D4NcE)5zZ9w z#9jHEf~O!>SLJf`=M!hIM0Qxi!mO~e8a8QO-)qMk*Eg$p<&4OZ-&%j%XnjYAmERJa z%x?{z3U*H#{Cx68@yM$Q6Agjs`mN!~#CG~`j{bXuq}==#F%lJt!^pv4ezRI5f4cq{ zc++t@jk=uBr9n33PlMz!p;Qj{sbyy&u{b`^^MNOB&p+jAwF@vq z&(t4H9HC-K3PZSG__zJ5DQq8AOb1(p@yuYeYI-@GC_jT~)nOx?M++E1H9&o6aq6kO zf@%YeEG#O!W;|*oQ_XK(`m?XQN^(AcycgG>2#+R4uVl&CBoY!T*nmjj!e@1pln|eq zFO`nyQpJ_5NDWLY_0ND%63A-pEHv(x0GokIGc-+k&xFk%b>|YaUrD!yRLJH=vS25H zRLVkWbXt!sShR=hofzGeWpJk`|!8F!}k%F$or%Ho(%`BB>&?|a! zOY+*^mtUz?7rhB=!*j4I-Y02j@O9G-^{wfk6kVQv8eVLuFB|n2CkA>Z{pYA`b}BTk1Lf^^ypI@Fi5AGp}VB zgRYk65=tZwBP+**t=LXiitGg8$qeJA8c*wuE3J%H$`CskD(q`DJn5S(E z3S;Y-g46kt`qQRk0`Z>`2-0;Ws$_mxOfWSJQXwOE6gK9Jv0zc0Uo%p^_^ zV?;%lnH82aL~j+DCg*h-;4nylLN`M6P&jCu7f(D@jQzo+p}#Gq>|WkFdLgYL!qC^$ zLarArrOZ~tLP8;xFO^Ncv^kM#9AimcbRa%T6kJGK#~>iYwLB8VFpUKvuB{=xohP~v}(Kvs8B0{&a$%1 zID#JRdY-sG93g$Seq&-2!${7iJxM|qSq`PrG@ADwGYLo6yqcRdQNAB{Y}_W&%y50Q zRbpX=^-)@O2%>h1m1c-Tlm)k$R_8Yc?DATFSgLM#f@0cmliOt@p5zy4r2Q@;usM*l zT3I?&eYGnd3atvT$T3OON@H4#>O;&5Vmd6Q&Bs{(qu(%GU;U`>-#wOQk@b3^mZIyc zQa4=I?Xig zz2!&YlQ?>sdV7*qI8==`FWDhkG!F$(d_u7FG-+RP8)NvWgW-n1#A&RdK)X+#;dF$u z7Bf_zh9x06qmS5J>1L_y>5SjY8xQ?HvX~(02)p>8HkySXToM<8EquW!D#2kp!?NI6 zB4L}-9A>8IGF5qBp5JZQcBnox6gMq@P7Sv=z}S&~MMX-#oC4u`=-kI`Fr~0|b6hFI zCyf_%NULK=E2Mj{&s-g*U2mlSO%Dep33ed~hE$7sJVGXRF$~rwMuP*z*z8H)Uej|e zG3ZisL5n#$4tM7OCh52gUB$&B!bVJplh)5{Nu@_T|FwmObO^Tl8b z%}Zp^Y=oBGhc=whMe9eb@6`pz;gwC)2jde-S0w3l&1-)4kB=;&Ji?}ECPNnK`s3kV zo6jU|KBIyEthspP&Q>SMb|S?o(NE$$7(H^QC5xcB5ds zke2S(XkAWfN3B}Y4PH{Pg}9n+7L8GwUd&w8JMius-u^Y$mZI%(h+n5^|CLM)5?gS| zuBqjSiTMV)Ib*~STXh7Y)kBajwft0xom75HewflU{3C-P^fd5?b8UfQGV=-U_%#Mz zA_hKB(s}kek0LY^sbw(R4f=E#qwPrsDs1M3EEBEiZW1t%-x-SI;*5J|6NeF>b%}xC zL@_pF(kF)U4~cbxL7Hrbm}RCINF3W}Bbevd5i*{qJZC7+Y2>JBc1ALhJ>U4d)sIjrVWO?(p$+wC z!j}>kpl;l#tGU)Lqi)W05z|Ac#XJp}Q?TZG-=SZHde+ueq zaB4_!!agWZ8veq2f6N#0VA%Qtc7`G^pNqULFC%Yvu1Bj>5wc_nmRvMv1a@NKxW0nK zOHDM)8z=E1Bk>|wLJr9@8k&v7X(RDd)|M6i4fgg9oP5o}p^5BEtx#@6;H(jN2{LfI z5x7|-g(Ya~2JjX+r;41Z{8qSb6{9a0R#@V!SeNU?o$9g)=3Qon)vLt3>PKz%+6Jat zu0eS)W)T0KL@|{rU10^4g5+a-I7;%y`r+`9&CYX)Gr{p|wB-bPH7$%SHniXb8t{IvW4FscWOHbVVG_!1Oe9F)mvk(itQLgp)t94o6&6q$)ADFgQ`qD%5FlpLNv4ZcATVf=7ArbJv$>Qh48iMl@q=@ zP48`#Ov64%IHmGK2)6t#VS$ze+SJdXO=mkMLTkF&ih9*yIz^lGVy&=tb1MgQAu`MK zbPp5!Q{gE6O`;d6J4?+uoi26Pl<)m6!jT}&7EVB)G;2i?ytRp)C=5`W8L6t76f2pI zpx(ApW5d*lDe~KC{ciQf8Nyl!o_2JVT~@QYAyN%)Xg7tv2jLHGr7JJB`Y(knjbxhB zOd=A#qU|Zr!46QujCP!^8N4|7>2Sa3$gsA@I5^Gv(wSoH_a?Q}zwV9HxHckdgCpxM z)T3by6Wu~2l^>SQr&XJ18XJ-Hq>aLK>&f}kp0M2zc8L+TRfN@)eVKLRWqhs$u|`K+ zAWg|Op>y>xT#OU=^rYW>qVZi53A_qz=WHZTB(%0WuG!=wE|{o@4Wo$ZAT+H#LyRnf3ODIK zj-cltL?=4UJZqX|P7&*frWze$KQc&Hh*}#F)yB_PBdU}zN7Sq*>JO)U?9Gg%|5 zji8RGEFX)gi&>JNNYoDXz(~P;B~cec)Kx}B)*KvB+wHZTtdbB!>r{@Y=?YQZ(u~@F zda*TCffpbE52?!$iA~kHl`gWH? z*)1dp%i|i|Co>N3MgeQ%F4zuMuaL2)L2iX9ODiC4M(8r)mKoQaN@7FQs}WY}Z6oUK znZzN+u5_X#K`?95pZwX(hp1a!L|8X#WdbYVsl5{l=+a7LBnqVGt#Dimeo`3`<`M-* zor=qx0@C)_>Bl9WYv&nh=aH3$uS`Y4Vi_Ds*oi~f=}9XJe==|}X=|e)tkFmd`mBvR z35x{PR?kzQ3dP`AVVXY$d(9ISBE@USu!Dwa)djLbJ1sP{+FZ2D@vM5Arqc55CpA$^ zs7@1it2dh^lO_yad%cX^O=)o!d-f#GvEW>r7!0;^lyuSqH*^mZ(}+0Gnv+dBoH%H7 zd^=BV47#G{RQ4k@VTl%sBQC5^Ivq?2uXZ zc{E%`(^u!-4u-LfiKiJ4vWekfmv}dK>Hj62C~kXxnz2O8pason7;BlxyI>(L5T=ND z*9~KaFtlrdbC(4>q~JKtRma;-0h;YfFYvNfTLBUXbr%VQyWTwQR};x(9ah^@3 zhJ>a@XasaK?KGw(x@NNDH|nN3izJ_ncbPOqYB<{|AYjV4BdJDslqHa*5C4sPE2G)xh#hD%i}HveJo&=sWz zXHYC6M-$(@e3h=>#QyJ7wgJ5z_MuPMDm-g=j(4|0;C#u=W8h+2SD+zm#dn6NKF#Tn zyO`;s&cgJpOY?V;)CVTSbh!?jlF8>R(pQSOBu_WZ10J*7CY1QOLE<65n{hR1nsD6a zmT=mX`~@~GyJ3A+rs{`nOEaA~&l|@}*ZK|3)Ldw)beGHXC-b|In@hCp%Dg0+ zn6YX@XXpE6ZXHyDh#Zpnf%>zy`Q8w0B!7udgl0rDPMu!bJMi7dA8FQ*h!X=XWVwwPUTG@3Qq<5)83MA|~R-W7`cSZB{N* zVJTH%rUchiTO7(C&yOJaRuBhz16l_Xw`hqM$1heXX~r53)0N?{4yh}_LSGQoXK89U zJ%1t??j64N+qzz2!qy|N?RnC&Jx}V$62R7?&-9kA-}H_5BUzJl3x)-j1X+v( zSD0v5ViN;2J6Pl*)=4ttsUVF=i=`!|G;G+O{ZtW&vS|soaLVGX3?JNb0}Z3w8r#8w zzwD90q|p!owP4N?hHaW7fq*kn$d`(-w@*5`{Ef@hbQ*TFrN0$2(!J_Si2>VD-(+Wy zG+Z_yfrVO~sG)2oP^-mL%lernib}ae^NGvzPk~ET#zb^Wv0^3|!BRy#8(5QxV%qbs zbBKvzv{EM6(_4D!&%e?$fnr!XX_LR!sKwmfWHvf61xclEcPI$~)nzKgh@*~cBL;fe z9;jQ3jjKp)K=_qpvGZ;!n9WPIkF#mF1F280<0#3}Y4)V$AO44x;t;o^V4I29HEGQ= zoqz$!qShoFlWwS}`d>^X?GG7GMO2EkQOQ!rQ*rDeq$g&B9W2z_CcDf%)WU8y#e#Nl zsJE0^xp7T?*x6Z~w+2hHhPBh0tPWH(IoDpj{%&H%pzdB`qsOFC{%MdfftWwdC@KpW|*d9FcZY$c1gcz(EkG~6HT%nt__imiDh?j^(bgfB@Xi`i#s`f!nz6}(peRALJn zQ8KX~J1-g*J1UzTX)+&NV48sfDMV7*_?XIO3MAQWZV>CVPjM7(X|}0KGmIdEyW0F< z{r0?_9zz)J7E{fVwa)bXKK1akV^7>Gw6%S7isYI44OnIjnq|fj+u2Q;8kJ--lS%A2 zAu#o_swXA#4hxObl-*)ww?Kh9S|SZT^p5&ro>;grwUtIztFg-&S7B5IWi@7)g*WwZ7mxNN4h&7gx$3|)@X61k6~;gtP`SDae#IU=dXvsrQ%`B$*0j^rT73lTNJs*QIGM{8TK$r_@b4STX2XR#GK_OWj!f|Er85Q@nyQ_3Am_=j z^V>*VwexWuzBh?M;lm2Rr7sT{43shEG=s%Ya;!{aOpY97a!Fj0xb=V>K;y{S6K#N; zyL0E~-;w&#Df|#cZ&f|NjUC@ZBnV2Fg^syfes8{^T*9sycS1xQxwLovPk6qH!K$+# z)}3;jL7=U0N%dsN(GUh)s;QH3?~4_iYdIpv`Ln|9agJc#$yxLPTRPzWwNj1EV8ZzX zYMZmIutMi3@6_4d)upi-8DPZ18+k3U`@Mo|P^<6c@OQuBPBKEq!w>LE&KZ5B!<>py zp6PJDj*fGBt;81h?YI@GzEfvE-IpJzWt?V|$Ds-d_;#UAG;7FJyd*ehRCR)}8o8LR zAL%=-GmH|fePf(sEX7Nyb;tAD`tW3YKPuMfR_rtt9qS!)=NS9LO&mBINN{Alcg&q* zWW$!Djk^;YIYo|;=)K_1F%E_$KHrnzY+UaJcaCw;KHkguM4dO!`E!ip89eFFF_y@& z#HZURyPM$c`gb(T9>U7R`%Gn5c zWW%?H*T=$}8t-T9e)}Z%$ z?LDXWCcUq=cSS90(fbN}Z`6C6-n;BwNtdV=mg7)WNg{FDTcyUNh^l@9_3eGUoVqZ!T(@n_nYa#$&p9?P#$JZ9sXop;{0*s2fSI&5h^ z*Q#-}KMnF4ppdKjV_6X6+x_g)I+;zf0*L*M=l}8&;Er5wTgYy}Gl(^TBtSn@_wy`Z z4R*~Yz{7FdUyLcsHN*gDEWH5o87F^PuDKJ}P_m5#N$K;1@k$A<`dDERq(hD|?Dt8a zEY}jF^aGFmKsiTV5YaDp_Q)Nd8!#_7JV@vtBI{jr3@BSI%;Cry%+XlL4fuYGAg13> zEzccwY7o&+<@U_AF3Md}*kDAEssL6T+guxmMkE=sX5=Bj2TAN`514_uJ}ZbB6n-pV z$JWFM@mQWDSc*$cC=31g1Lkh0v4VbR_!s7CRtM%fjir|%Q z&+EQ)w|Z^txuF;m8F^WwN$qs>+bQ!3w zc$zw;xx)gp)AW3#+?*w9;2o#2H_GazE&73O??N_UN!?gMu3}eGSFwfYQXiBr86o`; z_$#HZ?~wzT%^B&cdhBjR9<%I${s~C3{1Vw_uI8&T`X?uo)BiT)z2?d`|5@aFfHubV zUw#9Z!i zWADb^SLCryQaf^tj4<9HZJjG4`*;T*(z>=YF}|UVsg`9y7~ntf11FEQyjc`99=d`1kO} z<|c)vLRRTVJ!W`zP{4b2Z3( zQd;^V^6gUBBgp+MZFbHr!1WJ{%C6+=aS*K!k_|Zsc^@dxwazWOaWL}`F!4voT~Ry; zc{qwVE=k>+)4Dg8C3SBuOX}X7t#6aMv(mb=(z>(Ky0bc~du>|x+O+PqY29l(t2;BT zJ2S02Gp#!_tE+X}uWb-mo@lHF^Ye1HR*55`d!YG%gHl_)03;{cYm_|0I-KDh8~#Jt z7r;cUuZSrFRH-St{*CKBP@b!6D~NmuDsrvg=GqFPp8!r6$%eLq)PF#q%+uUfkmC!` zKXul(735nC26XV#klf#Z>LrUB+X^cA9<11DX-iu{g?YAPXr}?KJ=+Q@tpvlnj3A8y zdVvvL2DSEWD=4BLSaqpUq*G88s99=Y>xj03qN>5_%Zwzg0#^j1mKoeSw5_1X;b2U+ zqDimdRlwM8RcNhlD=2z3uy(g=(2Odq0mgN^QfpOPK{eI{>n&F;np355pmw<`wvK8m zsMdI4xogs_Doz9&E_dbDbIRHZs=682=>Jxo4yblL*!cgJq4g|!q54f=a+;&9z-i05 zsgp}*g$`pKZ#p2fr!;i74VFUHe+VXKDcX82Pkq(h8%)TtP0TyXS6emrx7MlM)^~Xt zZk^5msP3g;e6Fo(xht#Um0*LC%51~ZN6Z>lz2AfNv${;L-K(lsGLi z*KF(Ay#`g~Eig9MHllkq6#Xe!BiB~bjlodpVlb*hI73o;u-VWl@>{Ta63sQJ^I!$) ziPdVQ!JQ^nTmg(M#&Qmjx6@FC4Fs#Shqm?Xq_2uu5v)v{A77n@DP$xVmTMbDtDVNE zd^<2W*H+s}ODdWQ1}#y{z^GskFd!{#vN4nUM_`3w5nJp9a_$HEw-;Ci`3?g8@Uuxa zLNp=QA)vRr+j`=YJ`+^r+BQYTg@{htZ1u8Kr-o0FtWw6VJ~q4O{u0*=TM=cqwsLL4 zJz06~xb}PV(}+18bg2FZTv}Hq3#tc@T4yCLExGUtLWe5vbutUZR@;Ctd5cfN))}qiAKyuHa(w|sqz09GYJa=?i5cwI%7BxP&8@at*6-OAYTT2( z^&0XGbJfSbuE<9V6M-$rMRo=nVA-jF{UWn>(R~~CHBhpER}#hJEDK3Q`_XwGr8k14 zGY=sjF;~`^H<0hSOQwmZ^Y{16m!pO@8Vo2S^ul@!n*69XEufGK$Q0=;ub<*L3f z8&*{|EJ*(huu(GC7;TVw(rCTROGfMB2=%7vDqyz~B123t7l;fq!39}lWfM$lqao{< zVAiOGjE`bt$hIa(5S!S77WV@-s3PZE7wTp1Fj^<`s?i3SPmR{gOeI_L+%@L0iDspVX62Jav+_xzS@|Tn zVU%Q-N<9dAyQlR<+|rMLeuX0>WIjKr92cSy-2Dnk|B7(zD0YirC!oHLsu4RhZWLa@+s$vdWR-7)M#9RuvqwJz{ zt>?2|B~npWg4H^Y^p$xrR&kGY5zEGw#47Gdz|H3pJ+PI2Nwgxr>?~Sob!$-)t;p}e z=#IH^I_&ARIc{{^I_(0{g8M$KL*T)r3F-y|1-dYwbHWIPpPSrF8~kLIw_^P3KxTw zIt}21P9EJ+{4L<2StmIxghYz?9x!8e71g?!Y>Fx8ydJrXI8rLCQd7V(LhV_l0(%1v z!lkxv!6aAg$((gOHd}VQo_{EKCg^Shik-DQ4Ji0Yu*NcaMCa8Xg+8}D`4zl)>G?HP zealW#euZ+w+Wi4i@F>uE|CL(%Kg+Msam$lm!F8SGS85%orTG=Q`|{*h@W~zWE49v} zPVy`CtmVnC;92eYm0BlvSNRn>cX{$F_$kY;r!$&omYQFonkc({0>sI(+ZE!3sZ;F( zT4RwtDTw@TRV~7sWo|LrDD$X$WuAAh%t!8(si;x4Mwyk3Hp{H*UYYIOE7R;=nIqgQ zbCP>y+T1HM+r2W6xL4*G_sYEIUYY;8SEm0++X|WCMjK_uyH{o>_sZ<=UYVoaEAvbD z%3S7NnOof}bDw)m-n}yYxbQJLGHV!Zmf6&3oi5S3lG-kam(=7F*lKps zAy!^BGKgI4q9%yk0`j@3LH5tacMY;{8s8gX z-!RAy;#AA$CIs0D#>WTQX5$+K**!pcjy;eo{%N=PnS)cLAL}wAYJ$jUpxq+7h4Ed3 z>|Vxq39_df-#N$z<2wb}`;G4yWM48qCCGkfe1{-Af^#mP+djxnHojeuZ8rXcAbXPW zZG)`NXYCeQoyGaw)P?DNu`d->@+jaLK~mbvGkhyn(E`9Tf)2$>pie_o z`UGHA+##Zs%c_N__-VkZxRVf`HrS^ziWt3?)=^zVaj!*t3fTe->okl2!c_i4uw<_( zw+NL^1Eqta(w@{;$pxT&oK@175_xX`eXVtQtMJP6An2Ksry7rxjzym14@Jhq;u*H_ zc~Gv8?nGV$92H~R3SzGSjtUgT60ZY}3LN_ULh7G@FBlX(gvs$Xphrb#YfW20p7#Ow zM~RnkIX?nyT2i1-oaFrs3|gXuYARR+7_Sc1^f{+W76WdbIw_^P3cmsDkWK>hF{w(w z13YT#B7!su(8zM*)O8Sd&5C(pS#j(t#e4?3Zj>Me^kG+azHtPoa1F5Jz)`4zEkNmx zpg_(ag7%$>Q;uoC4+0z#KBpn#QKVszGkFXikeap<*R#k`>lUZOaggy*#5_sF{9F>z zKItV9^U{cUF-7hLT6ticTH$*+B5IOeDBUjBApRKr7Qz1poE6pVCee36PnUIV1*tDV zpUlHvmxHfHaD-be!Zbz7Qw{h~O}XsjcHDBU3iu4J+CF~Q$ME>&TLbWUUX{Z2$$YU$ z?g?NZMK<*$W%6$e_y|!Sm3J&w(H_NOPVaMSKTV*38m%m_i1uv#ex_7z~z?Od%@*KOMVnR58OXole^>H$fqjI)o{y zt{KTLQAj=TRyi#+BAvu3rYTEDoPS8$F`Yv8>_$4pOiRF1xO}!JWLVhhbo3N*TgNc9>ks|oIiZk8v#{c>T{27|e*s+C zX>^G&9nGA3ig+6MG}~De+pmCyz%LP<1*!CJT||(8##H)uu#DqYAuoev9k+^k8~8p- zy43L)Qc#Y`uCrnAp4p5=L~k%WIYo;@+8(5U0bnHs`H=d~X%A8HNHEw!^sNE*U3;;L zGzkw%i*0y_i8HY#+RuSa+amp$7`P>t8DX?xeazPGl{wtKGFKR_lexjYY1*%2T9Fnj zZ;?66XtT_0_sZy!!5Us>fzj*})BhqDd#TI-#+XkdWi|wSxLhNv(}Oz*86Dc(r^`G7 z6d|jFBDqWGi(CQN5==xHD|0Nv`A>XZD@2H_Z-Rjn(acks<2d6#@tv&@Au`njdqSih z#GK+sSRpw@jyAz=6VZGTbBh1c3dt#Qz6o-Q=md{B#b;U}Ipg4efy1x9*+=1%IS#f1 z$@agC{2JJv7pYlK<#jR}8g1MabAWqgE_JWW!$#|6{_5V?xYCy4va}*6S$T`hEThdb z&$?IU1EUQxpBc@1-J_Nh1+Yxe#{#1L0LuhPwpgkPuuLd=*h6v*16=vros6=4s{j@X zMZcX^a@7F7eIvJh`$l>c=#yj2qf?HxKujGEiF4O69(FiI(Jf2(Wxk(%J27+gQB` zpuz=!8@e>0iusSd>M<&R4lu!%#Mnn{S(GAvzP`=tOGeqlbkC-ka{(WgbQPyN+qMzv zo&qlfe3sEwunx&AUa?m$J-K}YtVYQd7{J)2C$|HrZK!G}`nsj3*L|u7EAU3pb>DT7 z(H*bHEA|o4b$419au_5v6#W$FdMLfdDD_=|&vzsJP@QN!RYTD)b*F~TJFB7S*8yLp z?qYX&hwSDctEC$M1bl0I>9yF?StV6?ryEUGX;DSRw!YdV)%c(rP3id0DyhQ9V4Y?3 zuW#!-_K$XImD*C3{u}7U)}?QjS8J>vgY=o+0@gJ*qSq@U8Ntj$yH}zO9?a znyR%TSbsTcGCQlcs`mbJR%LipRn@)#oo*=U{WwW`Tdb%`eEqreL(H!mozzl|k${hc zmK+}LRkh>VY*32LD0m#;Gs4a)=<<|?D|8Cr>oA>!kJ4xt6D#Umz_PZpND>zV6*LcY zI_tKLEk-F~KHvdhC+Ws%sQ*gw4I3^i(I-Uop4dfHHp$0pPf{0cEGhDpQ{bBe*~-^|Bd;y=#I_ahyIrpH$_+FBtBLEe0FwLeyzz&Sir=Fkd30) z60%JcJ3)4hB2BcHCz_rY`7xj$GHQUuea|HS^n8+kdOpcNJ)h*Co=@`^JNj)|lIYvA zB+<8JNuqDdl0@H@b&_atnrLyFXmOfoahhmxXNeZ2i58`a7Nv<6rHK}Gmgv(o(Whym zPt!!7rinhy67^%8eIM`$Poy~Tg~pBeU<QDZM0G55%;FKK8(3U`go|!a1UJ@v!#1w4tB51B}SWMt}~hq*zs)W zwICUaPF&AY=><@(Pd!9l228*_s}uXgide#kd~Sj(hRA;baaC;vu|70p-wzX6!30Yz zk%53Oi|Gr2qH9|j2}Ra5!OB%+TN7NkM7B4<5>lka1a;zwy@=y|z#i)xeH(1S+zgVt zeSzx8ep5n242bp>#e-6a9do?LjhbEyy31y3R*_Xs&vhv$j^|*7>=uwq;fX zbVH^Ylzv%V6@OzD>tuq_hS(uV<=T>y#8)`~SF0??)A|;SQRx#-cAy@6>Juh=R>?!Z z)^VT~Ot7VK>qb!48n&KMl3#<(mp2jh(>%)Y3D|6jJOnPKKONF2#ec#7^L8o8m*D?( zyOiT=@c+17@d)U{e)FS=xmaWbxjD3+G_oUtxk*L?VSW*HAepnqA$24sC&Ok)9gTMU zi|h}2>y43lyiUt6!5oQJsvbpOh&@ux?Eoi4Y^vlWI`Iema>8~hZ;VyW#dQI&=W`;n zKz!~cKHD_sH)pl@W2QOz`A__D(@Y^~@qd^mnE&2~e+0_)yicSTjaTaJZvGSRYuYP| zuVUIO#~%I+-^SaQj8HRjpHkP)kz;qXab8q59x^eCI!I#_F=-P1X&U}%SrXoUZN7x; zy`~g*iHJ8fpe(4Vqb)lJfyhNJ+E={4E%r=nDa^pvx$ zFV&@w&#G_= zxEjg-9^jqA(lSk%D)8y~-D*F_y*jc&eTNN$>y!5zab_I|`x2p?)!hm-qWHbR+TE?ACqSxjU`a#FIUF@zT})L+@rQslvxb&gMd62m;(*z6 z?WHxL*xv$P;T^Gz-Y87-jJ?9!#S%chjx&bN(z~crI>ra3MF0+TsaqmfgKB&WaY1< zH`N`>Sc&k%B9!z8gW5~&@@s`Es1k~W_S*(lB5$>o&@DX;(r+eMiM+!=KV8)QYZ_`t zu9bm4mWiR#H5S_Lqr-BI0#!*UZpKR9F+g7%iAgBYqEqg*LG_YFR8+~jVDOTqnp;)0 z0pOb<9rLP~1S;JS@Xe6UA~f5pcrxIdAzg)#ND-R?Ua0RXO7nw4wgfdx4*%mNN0 z#p~26{sM#@am6E`%Q`frDwl!vmZK@|0ow|yG!v{_T9Grf%jT?}>Rb!Pc|Fb$db!M6 zs&O;Wm5dS5dA00HsxSu>2i`soT6*Uc{TkqsKVq4EQsA4#V9w~JXI9`xfWx+C>5+>1 z46v42B2qh4JKIK5L0E$De}t}MgWxbMA4&Tw8&;r zYzx_j2lf^&a%!xrM4v<qJm?=l1mYJe`X~emm>0>20AQ7 zMdY3VI$w&Yqz!bj6j9NyLDx$Wm0kgsvJ_GA zRbc5$5k*`Lma!C3$aP@ZOA$rQ0^L}ODC}m?y`_jE=YVc5MHG5FC|(hlwMbxnpy)fn z@+?IZuTyI|mm;e24Os4_h$>a=w){&G)#(M6Zz-Z01Hf`EMO2|0bbl$L=xso^mLdw= zt{A+`rHBF>z_OPjifRVST#6{@M_^e?5yk8Wma!C3$f02AOA$pJ0hYQHQNYQd>!pZF zPX}EtMO1hm=zJ-nlH0%%OA$Hm0UeeiayG$mx3)g~+dfp0nJIRb7jU zxqIUr3-}(c%#natK8^Ih@q2M63+S}W*;FSomi_?O4!|BOi|hm9^M3LDOtV(y1Qb8s zH0wBeAKU=#m@<3ptB62XG7LQ-W)Gb~xLNTZkM*x0v!ySx>^wEH~4>KQIC|4`s)v?sg zD9L*~;0>q_C5)O1P69(ZE97oKWv2qZAi88_eMqdrGXP%@?L2@aDnA?Wib3Zw`czs0 zzXW{mzw029Ddv2@7o@t5)58J<%>b({E0Cm$YXhqev7dMyQ0|k>@u~z`T zT(<0ZJ-kxzRe)~>cCP}BDE?}|mn6GaN6%4I;X1JH@>HTR)tLqOc3$@z(_OeK-3&HZ z-ikD;dUL?|<*lnvt5xxKz|XoaUyoIp##MJdnDl?CuTL^mc|nH`*euCOn7y&WQLAId zJ~h{4ENd652aNOR21i3&93@>%<-`FfVkoVb%M)HB8;?CuzIU zs6HT4#h&}5zwO$cZBJN(R;$mm%d-fbqUoGe`NUEqxLqPEn9Tk~0yHQVdRsqHJ zJN3F%O;tvM;;n-J2JKRIg}SKtCcyoR{Q&JU!WFtdu-|-LMy%p~3b^O0Nk>W_9wkSU zdZDl*fvt#(X}OSe5~-+Zz*fZVkxQmj(DA@l!~`;kWLz>%F=qo?#CjaBK6L1x0?q|| zp4$FfvmIhoehFY1J4$#y0lDV`ZuGNitXn9NcLC7K zR|(lZFOc&|z#A^Hz$(bM5NJhQR~!%W$n`AXse|11NucycfaP!c`?5L%+ZP&fY03aTnve5+tkGTleKlVIXnk_G7gJ64%PeRZCraArCWGv&=N34Kj15bzIs0 z7_Wl(Ldyapr&=^m-~4aW{aIaux6GBL z|1Yh5?JdfjOew3mYT3mW$(@4#y-V?j9x3xvkL)X}=wt!+JjE|tWSz`wM(btv@Jd5v zRWYgbXNpykg{RC^N*R)cMiice-cI>l9x5}+N?T;M@j#hHMtP3vfAX%z1Rp_soXjo81BBY_(*&wg5<&Jfyl#3U3((;D|Ky#+`ZJbK5~+|8e}#uEggeg z*GpsL)yR<^B{QnDv=?%CsY?TRy}9aSZt_wYZI|u6m^+7afR$%Q-kt~Y$vxnXw|#8o zm!{(fs=E_usENEX0b(Wl;@^ zIv+5n$Xsr;VK!zC=w-j$TT-`^v}$FYpD21-Z0TC$^&puzlE%?8a^2P9P65XG413)FU6+a3-#PsqaBxBnjRy&L`tjgM zru+w}@T67BCX>gJ|1npy%wo_hcU;^Taj(CC`wfe#{}`jlWdBNjW2ISIMHLQK_p+(J zlk{rsV4{-a>~!RrRxvx_%8<%c$v=Xpy*~&(#Pm`0bXcf?ubz}|0N>E`aTdQVe0$SJ zk%8ZlhVNtgSSvpiet4pP2EPm>AEm5-RFjEo1X8UgTevP#4JT1sBGq;h)qqs<$%SEe z^8CaEDqqb(1sR7EWxw2Kt zXH;GclBjTEiiv*BI1dR>Xq+4Kcm8y3rZP+i+zNvYyjf@^pb zud``9T-z4Q<91duqbq(Z%C@y~*LCp2K{9ZgAU88tvy7sX$^Tg7$>wU2xyCQiZ{$UE z{3i2TpCfqT?Z}ea-yNRg-;k9nTM)jE>sx@Uk_wLiuK6?bBEPrV**;#lM!S{K+mod|bVRo*Pz1yla$f%m!@pw3k(BFEkyD^6lLdO;v z+1xso?fwHPKf^;W$NbnszcsS4g=SOnR+MjNq4hHR8*Mrbvpco4ij%z=uuEi$-Rc{= zHJH%VtX7?j@-cKWs}oHRKQ*$RXONj}H0yy94E0i(RlQW^?|=j|@**#rzgea@pfj=o z9hNnm4M7>3sW|3|Pupj@=p}1SHhDZo=xufoG|Sv!v`(hj(89Q_xtnp$0m89KaEhb z!1|u;97YkRL?=>4l}t`gApZmG8z3S*TkZ6#mhA&Lsbp3zx?8cg1B;KHQWC}62SG_h`)dYgQTlU` zu3eG8DRn)I{Q5ZM;Wx=PU#2<8_a zNS4ET2&TA`lIRUMD~iu6rTPP%U)+rO&7B+r04t#QSd+Ulc?JW1o-Xl{Rn8HB4||dV zJzABw2Jm4|hZ3r(V0FNPtwW*i{#7y>@KH}Er953z;hKPtdO8o_DXYqF1pLrdmoYqk zP{<>I*U~$LQAkr{Qt_*xv^x~X02O`-+Ba2&`n?Qlt6%^}t`D6G^urqz$hjuyW8X*C z??bBBICPxzNwj_+5>GrN#*wEM*uEAS57^fm@lO%JCIR*}is6;m7_hH#=%KyT=74=& z^bjV;R)Bq7bn0oWJU;+*IPnrL=MI2< zlTxayuo>`!U!4T#$+AlK0DP#|MFeRSptFY`Dd-|dpLZxiyMT}MmJ-E7Qw43a%s}?G zg7yYoca9(h91l7l1Oile5m<77DOAC1P`bk?kn>T{zSD8a@jCE>1&4%Bt%!KE^!*))o6A=^h0b1Ts%o@jbrWD7t;GHQTrDkS-*r}?Mnll;^3 zN&e~C3NY#Dw`ED9Z_AR7ep{9#`nD`d)c(@}NutGRqQz;V#c86&X`=R@4oDI$N)s(g z6D>*;ElLx$|8zi-=+iXOr)i>3(?p-9iP~RJ{3zQ8yo9KIP#pN&Hb3JY0I(Bs8oT{$ z?b0BeJClt`H(kAbwv+e0M9P0g*jT@bFw@9}shj|I7-L3Ar$x z=eZy`PPRa912_kI1(97`^avu&E-HeEjt9aDVFu)4Q2eHJc#_(%k*)IGJ!QS)xj_Mw7Y<%)l!IF3hyWUD43H!5}QfZVav zbrkXub2Z5P{j8Fme=@Ffth8C?Vx#pkSDvjde4hN%epAn2tN?d2G8chfETuc#ZvFuG z&K?!}z6o;cQrG&(jY?f(kn5JZRz{90bqzueD|LNMZ+n@mL8hv-bP=UJN?q^Z@(rn% z`K^^U#NK{L>6ak6+f`Hm92oiRtcuQLkBnh(XV|#$US`zT#xIJ2B&^Kh+MTUc zne*SBri@-L=k1|0Y54=drCFx>=c3IrPyfOuyiu|FdnkUyBAaE_vdBi6%YkNV*@fnA zmigLfoy=LDtFP?O0h=##q0wfUE8H6!dyp0uSYvfEPa18IxruZ%RxSIiwb1xH=BHM_ zNoG1wgzS^%Zj5Q4Bf$%nt4?Ms&t-OJ&-E(i4WlhG6FisMBP>__F&K58CTs)Lb8*?L zL9%N%Cc`!$d3y8?@&mwJDpO2Ur6Evd5>?60DoylnI_rC>MW&9LL>6TCvSf|_!T5l; z$f&Q1I1XEEqo6jFSAN+!An9xa)eg2~EoMBjXBk$TOowGui3B}m?=*MzIOIoEKE@I> z$n^He5whwAhn0*fkzj=EBj(N$^r6;tOHeN}$RlfHPw+??Z4R@EjJAkeHL_2+JMQV@ zNN|SbYLXddrS&pizaiG=z*qIBEg(CeZ(@{h1)R?^-xzI@Ig4x>0NFNcpjl>h>f;_N zd$Q$fl+hN-E$dBWTYDSH?zg;ke<6V%%SpGgzO+)R&0$}ij8VhTb1~OCjoZACM(WP7 zPRrb5v}Hb~_XYB{%>NZXy#kU8`76|U7qE9^TC7gJjH>%wt_-SHI00S&@iP3DMPC%aKrLn@{$ktNV50HnHx;8>?ZmtHItx8MRK~C_} zn6?@@+M{IFEG_MatSNPU$L7v9SDnll+s1mC;x@jKZDTp*RTi49OaDXMap&2v$P}y0 z%c?v_`D>n1=1rs7usn`j=%um$e?mT5>be1WZ>j4F6}Dk@G8Y=nHv2$IkFg4w>n|L1I^tN9B%erJGonA_6KsyUTp40nFU6h(p-JX$LTCH#b~q4A%Oa|vY(r~ zMP|@N?v@<_IN@ZrD7t00Hg~q?hEVHqS}o+NruWP?BJs{RaS3mwuY*eb6TK6=VOosV z9gjKD>2EMsJG}>UztitztT%NdF{7ML#_ZrU4ug90|Br2Nq?x@yA3i`YuI$bRzEnPbc;P$kIuy#zD-XS4<~04rJ*hHU#k~6R%|sqRKqq0a6n{j1Zp$ ztOGxU>}i7DiyQ_ji(efVztS|PMIAqq4Zk*)qs4EEntdaF3*eh&+Et?W0ee6oqPfvp zjg!%FoJgktzH3-$oyEx|u^lG@XV!0!=9AtH_?e|BsXahEW5xG1O+Pt5#m@nZfwJH^ z4|O3>&yb>b0=^Pw2Y4%I&?&%rDsm>UU({k$#LqR2ptAU%K>K{~5b9A-%r5#duEdC`R`vQ80=WEn=K-rO^V>zcRJ4eM+@E3sfUF08D z$oSJ;@m1~gLF?leiPb^;xiIm`SpbLU7KmwpBa-kzzvkl|V97;Bf;ceZr-B~(?Jvzm z5@*B!x+?ygEP&)!A)WywCwv;`-l@RGMdS<+$3^@z&_lcQl8Nljxns%bocLZ*(=qWAfG6+SR*<;V9NH8djaM>Z0!t^dFNl2;zr!@q>^AWy zfDZ(FT;e-(P^yV*2503Zz|x7#0hW&5h|e>P;ItBd68MBx!)p$lHv{e5A)Uyo!2YcY zj(73NrV%{O65qr$snFtEM@@glPcltwXz^2l&6e@R)Wv8sU}vkyRVD}*(Wzrw62s#u zT5|D^XK7a#|9IAxlqXkqoy9tDx%l7T#l>I6JJEM8{v{#u)q_5KA1Pam#Lnt!x+$=2 z6Zt#v!(B{gt{v_%K28pO+P?(JL`9S)h9RjlX)I0}CFRM+X%f-2!N$$%V&hbNwr^ZX zhqp{B#r3#8I+wac(LZsW?XsNrx}#e4MjN%CiT0K8I=6V&i_3 zZd?+g;y?Pvm4wK5k8NDCjEs9iD~93QY&*bxhRl_m zQ{0|TFB7>QBu_rH>X;8~+(hp5X^MG9Op{j05wDr-8bE3pWh3dRB$o69Mlb&hC(F&|*B9}8yu}7Iz#Qp$EdZwxDWI$#aWh3)Y*&(Hw zwfJ}ySZ0y8n6k*sHj8NjD>+s)tNj(Q%`(bH=4x53F_J!O5i%KAW|8@T%%gax2Byi) zisFuXk?L<-iWZqZS1DVA%v5fS^vt0lyFq$6i)~hHrN!3E#Mt&%sq3iq+Vx6SFEj22 zA7$AofJaC&Gm386`_0`V^P$nE*hl61A)sS2tIiZ{k@<+g(muXRz{j9uK9pk-D4Fk) zn<15b*|9u1WmL8r&2d&O=1W)Eyq1KhxSHNDAC`p3Hw=`V<+rw|;h%VGPBn}34z2nRkKP(N9I1boxEb>3V;lg<> z*7xe-;UY5B1Q#Na5x`a>ob=+40lx@SRbrtzXj8c)o(HyV^iBLt(+K_(|98~1Ab#F8 z%BT%tQ6O=tIVhDw;&Nbp;PNXT(g2CsfYBjbkeXv5QY4nx{r6c&4RaZ4KhQ&SnZ7e2 zaS(`?eDTAw044&769CPi1gVoPM2co4R=ze1scI`ojRDz>jzlf613_eS;4_WbyTI?8 z*m{W%fprNj{uQwKSES-PtIIJV)(iL{L#)Jgpm@lzXQbv>NO4z5+zqTNB98(;BE%jC zq@yNVCUF91H|cQbMoH=nkZqa7c_7{biTB`qi0eb~9|KbSiyqTQsRJy69-+m50<1$n zhn!=A9VBu&h&xC8QPUg{R2F|amZQa=i<->hFM#4rljvK(W?m7^F4k(U_*cd$Q333x z=?x7q;!MCzlinw4l~4LS;5SY3NL>WtnJs>)Y5GY&#IFO{E}n(B85BDv`V5Ho9TPY^ zHU_rGMYaYu2<#K_?SP*;%mETV2E1BeeZ*D4f!`0Ly{yC~7sfo;tMz7PlB0g#?xeV^-U)NEksMdpBP z$qxSm@a-GbR*<+e2C$dKpUeVCDe(oM0m9YDUYsQd0c$|yP!JmszW`(nNL&;HIPAo4 z$O0G+iMv3t0X*Y5F*XG@z#>}$8(=ypzAeb^StNFh0Zi=TCzwX?-)Hb|fMpZ;-U>N# z7-8{&I;redkPVa=0^;l}J~j(rN|M+U6uXP(Nz_7M>m-qX0sC<>Hdp)$(+IjRUdEZ> zbL6Ic(+;tt=p zZ2#qoe`n&*nO1V;kEdQ&SN?b^mXv32T=}V~vym(RqV&q2gsAugddQW(Bt*VbL8p&F zbv^A5Y3bvH;F2H(+yS~yqf$+uyuZyEm*kI|rxm~pzy?6%Ses8c#9~C8q)Kl7G+7M* zB{z4;GE8Nfz)H$ntFi%zliSer=CQRZ>7Zu2f6#LV;KPyuNP`sc1{j(?T`x(a(rf_I zs&VtQKGC#iCv|jcE*t|`-pV}3sisf$jQm6AU9K*MYT>aMl-zb{s#^%CFQY2dpJ(Ka z()wCuOaQh6MD7EAofmuFia4QTdz$2C15(S3W&3nQ5H6G_*!`uG*F)FNL2 zQuBaJOw*bb#f_ei)9*3TkChT{^089%cKldL{{LUy3DwTxvtYnomCVQ+)%)}dKilFx z#R9Usr%A~FnX6f51a+t$w{TNjM_Fk@bnT2h+gyz@7aMJox!h>o?=iEDw%mbvz-Z&2 zF;5$Lu8?JLpDY3 z?7f%S!)SxdW`FSA)qY34C0+$_CiRqU0?E#~8@T}Rougb3dB#Oq5P8`}K8Osx$->Hm z$XFM-AhN!TvLLdti+m6{!9{rxImbmVh+O2NEQmbmA|FIva*+!nZ@DN7A|JTO2a!cC z%7e)NToi&xY_&w8R?>D5LwGbuOKqsMeiVTpo>01`dbI~t|{KrNAAo7ii6@p0Nmf}!}^m8#FhzxNtFo>+` zVo(qn>!Lb{tnXrQ5ZTzpkRY;+ixq>&&Mt-qktP=_1(6@Q7#2i+;$nCZIm*R|Ao4R8 zD+iG?T&xmA&U3M95V^!fO%VB=i;+R(dKaq&kvT3_42qF)=s0boYxTp*w&$;LkL|%2# zGl;zHqE`_4#6|BQve-qRAW}BR`qnpy^mfrNhzxSkKZuNQu|g18!$nmPS=YsYATr6t zz#y`vi$OtTii_$X(%@on5ZTkkkRWn^ixq>&;Vy;-k>gyf6huyQF)WCj<6?LaxyZ$c zAaaF^m4nFdU91vBZg#P15V^xeO%VB$i;+R(&n{LAA`4xt9z@_~!d zL1dAOF+t>iF2)9t%DFc1YX*@OT&xvDhPqfgi0t8FTo5_bMJ|X;b5RyVPIi$GA`iJJ z4t~dIymSF8TzK&0O>iBHOv>7euDI=pRIOcd#lRqPvWr1M zVk>^|#g2=yIR0NTa zT;zhte_fOXk?&pPgUCQuP0SSKL1eg#To4)MqAZALaYb1Bm%X>dF$J)mlDWfZi_9~( z+lp(H?52NIL|t6s^~W^|@RGC41Aw(zmF&hA*%%{#Pokl?S)|JR5fE7;>p2@@GS_(IP}#{A*%EV}P2>fDuFHG`)KA$XY6jpF7n#ohm3zu60iWK)j!dKC@qkE~R{@a)+4s!d zB6GSYD9D~|2^wVnRdmZLcarx2Y8_$;>SPW#+90#5SL!KylvQe!Io@c!%!x)DWL^dI z$E;dOTG*3ZYK5N5Y*mbu{i#JZ%RFVYPDZ(s`a4sp&g;wEVzg0a7=bieExV3al6kD? zmi0rVK8|7|wf40Hb^B9#1W0ZJ`XY5;($i{;(n4!6lbyyiTe4%%yu<3s%re?6Gasl+ zvekE5{j`$Yq>QDdAE}Kaeq*cCEc0WpE_2O89dBsX#p|(6GJ9HVy-bX4|Agx z7lk0Ql8cHUvYLy^AhNcL9zkS+i=IJbGZ(#r$aXGz2a%~R`UH{PUGxni`?}~CL=JV) zKZs0ou|g0z*+o?lIorj6AabFLfkEWgE(QgWnJ%h>$c-)r2a$JN3<)A%y2u5Q+`Tp+ zyp0Fxzm%A7kM6Pi$D2U8UJT#O7NYr0r1h-~0u^&ql|i%~&jTNi5tkzHJj4kFDi#sralT#OAO2fJ7^ zh#c)=tsruui?xHu11`n|k@+riLF6USn{V>O`yuI9K)-gM?uW+S&q@H;v?j8Zi?SfH zql?H@MD}vQPq{-5bWssRj&M;KM2>gSBZy3Q(KCqr(nYTzau|g18;G!ysJmX?O5P8|fz##HZ7lVSxhc2pv$QLdK2a)ew z3<)AV9 zT&xvD?sKtr5Xt??24q|isdAAEA}hHl3nHtz$On-FU6corV_fjy404hS9-KkWa>0W$ z$OSHVa0a=|1rN?3!37V_AhTTX;0$t`3m%+7?sdU~Gsq(@cyI=J(ghFBAkVwt!5QQ= z7d$wFyyJogXOK@_@Zb#cl?xu6LGlmUfbif9(#Hi4&LGt;cyI<;*#!^IAfsLI;0&^! z3m%+7HgYi}i0tHI#UQeqi(C-d+eKLrImksmh#cvnJcyj&q7Xz*cTo{UwAx_`Xn(u( zMVzkyJ~$u6N1>v(62k}Qqx5|X@!Nrl`7kwC{OgZvAYcJ0voc`iH$nD(!0%;D$Ug3p zL(TST|GHtW_^0@_0BK}AYKh<4Qqj5=)hsg^&{&o1JV0aZpMB+ue=6Jzu;7&00Z?az z?0i6-C4Ui1g)M+O`(PG$+^B3ra>YLt9s!6u9`ht1U(FJ6D!k0%nq*!C$&1mF+F+_y zFHu$TR{(CkWUdEvzgG4+K%LsGjvPL6*|*Jd#lPz*(%$3#QRZ$ynsKtP0n&`i(#YXy zvX44*#XlVsuLII($KMJ_Q!T4hbW%o@lTTAr;a#tkEB?j9gKvrG@L1SmOwhrho!CPM zha4Sa>0{}kr0C>Ol6=ct**8kxLB0o)Tkde*Tr z!G|*IK_$|0+i4u&>U8^s(@ zhnenFrnqH&e+&14tyf*|X0|Y|$Mcxkbx!Q0S_FqN5%Acw2ATVT?OE)6bJxkdMYIfJWjA>{oz{GOI1Hz7$4d*8;d@b}PDf$L{5Bne&S7Utupd zUK{Sk{s~Z1<{fjl_Wc0+iMwTnKW^>xT@|}JAX;XfqFZ*l@!BAJHX!5|nDdM_$lL`O zxSsc6A2fHJ%;QD3>}SSnL;t_=>+m6c? z86Dij%INs!>E@3x)7&d_x_f2LG}<6@gV83LJB+r-+-0;uM#nqdkj`rqKo&9romv(Sc819sBRQSEj!mmd!H5jkd_FY_vgU3!{xP zQ;oLBoakPebBs32{K{yPjLrx~N9G2j&9`Cx=2Yelqm43e8Eud$aLBTcWd<5;kr`sN zL8f?;6k6avHFt~5&x|(8oMf~?W~R|5nOlvv$o#=*gG}*k>8mrPU`K9?%xI&HG82t9 z%jm>lla9vx+-Qr;CGM5^jnM{~;^|SVQ{y9ZH_8-GiJm$IegfDZXJUR~wBdYAo6$O% zJAr1YuFjLIIr=#Thsxe&Cq$!+pBr^DFPXRH70ggSoMrqpsgs#x-WHh_qs=mh8f}!B zVYErcPm?;C+s)f7^Eac7GK-8h$@H{ixKU;;qfIh?#?;B|V%|oX!;H4boMyC1W~R|* zncIyv%DiB-Nybl;I+?G{+bpw^9odaCn;319nd)Ad!`v%#ntNq_?_L={P3mMGGjFrZ zzl}D^^su9~NoFOZjWQd#S7sNZ%`%6&SLO_(EiykhS|_7Zg?+fG>~-dDl6k^ti_B~8 zmHD61W|=BGh8tycMsUi=Y+|%oW(%W@GCKg;m>_$AxtnEd7J^Rm%KnSTNjZzTJ@xtnEHwd1`>W`fZc89#fPWcD_1v&;cN$FS^a?v}aOXp@Z2 zBxW#~KN)S7dDv)^%oBhV<7EG3?q(UCYSfb%VzfzSn9)X=)dBTtWp!C%Q;)~!eB=VA z6L7ZE^!z*1&ZwqGFpn9n8_VIowjKF(*I=%5x+%xv7Is+Hy@&bG>0Az<+wDloJ}1+H zEm_&kwxlgGy~srWYGnI*R+%%3ZrQWlEi;@J6fL`ow$O1Q^Fdt_y&DJyAsE_U(DTeJieucJaIFv5vyzX0W46t5{8S ztj=bZrOs*_{(6~f03EBA^}UjP;xmWpKKo^TZFjZAd<%)vG|26&%n%#6lG5j_G`lhQ z5c!2ykjYtvtj{Xde&IlgEhwc=vYoiHmc|oRZxyq(y<8gujTB$)j`=pk<8Z_i-!asskOG*a??k9J4Js z7?)opvwU(LQLLPN)BDgYGV9+-xcsu3?RL4eK2^)f0e4Cknf39vxcow#bw;jhij|XL zy(){$`Zx!dU%IoF< zcgZ5NmJi0|ivV9_#ZW=o5lT)(DtmUh5`9dk%C+)6m zOCBcbZy=cjoE>z!idWD@vi7Mb<0oGX?u&a#n_s~70d zazz%IwLBP?FXyt6kxMs29Y$uwEHZ0(0xn+wW-ZILaj|l;PbOxO*#=I*&o^fM73(Q zSCwc|TsM6hxTFUPyBQ=$#_y4jnkyT1xpb?TTw4E(^c8V7LUKI?)I>5uk7tot_g}{4 zYv`;Axpd#zVaL9bMP_696)s(`)83^ zx3!$#1|(Muxz+>4VHMR%Kfb;yt{TPSxUUrUV~{M|CL#AUSGM1ytK_AP$;32RT(aHr7vYGb zsW5rDFBlqqE%=TF$>b4TCBykcVh*>sY@<#>o@TCWqvSdrbl9jctl9A; zmmUhKa(=%$kc^02e*nc15!GFwUNWY)Xwn?tHL5FR6D~rswN!?flB=>o8RRUG!22oUZU-r%FY?Ns(@{ih|1%e^5VL|?=V^l+Y2Paz8kXRAr*b42jAgD{>&<8 zgCmz7AjFr`#TC+FuoPB&#t^shDqL!oCZ25n;mD`)ya{xC%YF{HeT|i#FBWs#yr@j& zdp)W0`qMF2IE|tE{*`BM&uMf9l!Xr=CqHi@7cPX%eXA&9xEiVVxBLSkGx`VKrCr!Z|DRi_|Ib^6|HsWAMn!EkhpzHWe9CAn zRh}KKv_YlUIgOBsnL-RRcu9W%GXoJi& zuT(9oibHHL{9MBA=vqp+(lqtZ$_)GJAQT%n8={y4a;>34F)uWUjc= z_ zm`F)fpUHb}d6-G8>bR=<2Y1X=aMiH}Gk0xP!99^`}OYLI!jv~)J|4_+F# z>JsGD9wl>aY3aGhD@$D`AUCz%*2(F=q1fY)PN zWODyhwR)Kt+y1gdHQv#HWtqP0Hy8SfOZ_|ZvGvPwsVF(leu2EW)O8B-tWwuBC@tLrxt*8B{)|IT_9&T6OG`&0$CtXanKzj$yK=0AT+>|H?ij&P z)&kZ{GMgK1kU8m-j)Oc3uY%Y~)v}WT!*d9MM}cIdD*ny)3V^NDL{@ZB7DQ@X=c9OI%qh@9l25Jb*$Q4vHga8VgVE_2Z% zhy)isgUBowy@JSXE_w%%dtLMiB9FM}8$@1r(JzR+>mnCKK66nPM80;B4@Ta$p(+pM zkiISoL1eItiXgIzi^?D}#zl`HQtP5;5Si?vR}k6SMeiW8lZ!qL7BRi@`zURu@Bp$Xza03?lPf z3=JZWyI3iR{LRI%Ao8(`;X&j}7rb`@$-NUVQIK9Pc<%%<&;{?EK!&^Ey%WeN7rb`@ zS;qzMoj@kK;Jp*b7A|=21hRt*-aCQRyWqVO$Q~|u?*y{H3*I|{9Oi=eP9Vp+;Jp*b zsV;c$1o8_Pymtbb;ez*0AeXz~y%WeaE_m+*GTR03ok0HRg7;1!54hmH6UbvOc<%)A zR~Ni@0(sE|@0~#2bisQkkoR5i-U;M$7rb`@`PK#Roj@wywSnio6G(p-ymtaw(FO0F zKx$l!3?gf~;Jp*b1}=E-1hR<>-aCP8>w@=AAiKEWy%R{Y3*I|{?Bjy>P9O)n;Jp*b z(JpxJ1ahJa-aCPu>0(?EIp4)PLF7^w>jsglT&x#FZg5c>MCQ6!KZxApVuK*^u#53Q zK*n$eAv3LF9ZF{0nW6 zOI_rH$aOBtgUGEeazW%S7yPqfka;fhLF924Qx4vW|=LATrTKA&6|}q9TY)b&(4qySpe0BKx|? z2a!Wvln0UHToi)HX)ba>mnCKCcEHU;E=6d!K`(+~Xo2L>_ig z9z>pSQ3xW>xu^&tuezuVB5%9s5kx+5(KCqTKe7?+6-4^D$OVyV7iB?YWf%D%GTKFX z5LwSfA&6|^q9TZF>w-6zA-lNX&1Fcl3*KCY?Bjwrmmvqc;LT;o(Jpv%8FIRd${=#C zi(C+Cb5RyVe(NG1M6PqeJPNtPMIng%$p!C~LH_KbEQl<0kq;s-xhM}JZ@DN0kuO|S z1d;DtO_l2!@ zxBooI`Gn2-{}?+H_^7J${ol!CNFX7EkU$_2hE0O9gb-yBWKkAZW+r4}-L)>QE3T+@ z!QCn-h*h*|aBbD9*t$^bf=U$?EAHab(&B>F1r-$)_5Xd|bMMU!x&3|qd^qzw=Q;1$ z-m~0wCIl|j1%EP{6Wq301)Th*k-rd$-1)tZ^y|$uBlx?~=I4QT92Hb-v|_7(9UT=+ zFq#n@YqVt!u+Y(~fwhi)4s3E%;C*3*jRj61a2Z=FoNIDMaE;OCR-pV#88`O;MmX94 z>|iv1Ch)MMPXRl9Wu=W3?n2-$n&4MP^K*bDMq8EwuQ>H};AcmRH*uGQK!e5#_jkNb zcrXFKUJ0ymbS=>IwOQ8*k9WLUcoKmtdBJa;Tqk_k$&Ul?8_jylD}PBxs0)6P+xWWHcvm6Ec4$)SqN^UonO1 zY$7xZrV%KkRHzw6<<|n57tphTd)!1Q7W$K7(6Nlr83e{KGMvw#Y%(>kaodI5>)PWI0Yw3-2UE zZcY6aOKmdD-ypN3uT2W)%p*i!H>oACS`|uprEG4Ws_CGq5KM^=EIA|i+2oVUg-M$T zO@cuLyk1`i4l_9;(9F?H(CpdQczvtzKmxm`;3kt#u6+!A!gzga5i_O4CQg$;(~DAS zHJ3Dz)GX~^nn>cB6q*s@niV?{#5MdHdvT5b5F7aV);y?*K$&SxfX{rrhM_))fL^%- zbc?;d)t0dhLVas={c6!_E~xy#v2uM4-C(q%lJ@+_Aj#jIOlm0ywAPrMK?bEXy3{~Y z)EzT29i?zoGgzH!8NAksHwT5M97 zQBe&l9TNP(Xj4$r>qOU^l!;2!3~QuV9r8XjtFUh$6LrVDjG&KY$OmO8zYc|w)&^3$ z7ekcI?Nnjb!AR3BYv{Bch#qQE*eh9F*4|3eJd?t%$l|(=()A|g1V0)LE5DqmOARIE zzul}df_Df^$g#qYO%7f10MVyS$_YwrIhN{W>7B+?56oUHPXZl9_m_cSRNlqYGJNuh^cMN(JTBb74Vr3#KS8g|Yj zI-tFzsLK#qslvm}Dy$)p+Kqb#n^Ot&tXO!usJ|3t0FCu>7NN(wP-$)DjyR zkNA?MhrW{Zl}X{)KT7l&lUii_uF;&pFYwi{K$&f{^w2Ac{%BIzQb|WyH$y8`+1I47 zT4m~HQbyp{wI-~q7E#C9$e>74DK;fVlpdUiia$iy>O53tR}h$gf|{?*N2`q-MkM0S z;iT_irg?!{#A>b%TBPhZTXIWZGP*Ou(6OreBTH>3{llcN(+?9}X;O<)##;lzRHc05 zQiDoWWLL8a-7D$81oMK3(u0L5u0C$HFl8n=(p#&@q?QDriy(Si7gStGyuu|5)Z@s) z)QQj5{*l&9us^TDd#B>M$_oD;j3UYu7z9Jdv08?ct>CnklpN*Znr375<}vM?!Zh%$ZSG79{vCInT;6i6j$reNKL;bOi)=UH5EN0Sz#u40hJ8tkOt_bk>P-s0 zE$I_N#GPvMdXw_X?_bXa#VTcrm5~pmor&tIK2nAxT?|H6lQQYDAhJ5Mq13FD!`r7` zMpV}ikzys?OkjDG3vYAD0$pTE7OpY5C1~H}L?1CJ?6z_g;IzmhlEoIY3ddK{3W7~6 z5#5+@e|w7`h*BhUJn^798TzAG8E77LRat#u;gZw@D_lhBw!`s~zPN6bX@`rvvoABr zk!E)$I>e-GP?<81Fex(zm}s;mNUbO8u7AU(=;p`+1Wse$X?xXp1@QR|BdOx)ap}RUZmJ zhJdqf0RBc$(f+-CC0^`n2{x{aWm zuYh0qyy|D}4H2a80%i!z1i`+(9Ly-Wqt5!QTR^+MSKMO;AoQ3-Hw1N(EMONM5e~^C?`2pbM;(DF9tMe@bPlsai=~5X!@{N z-vTsyIKHj4DWvIx^&p_pXtTggqL%Za7n+*C4A8{Eb~W%Cfz}(oVRGgJ;76m)npJxe zFm3{_a#XOyX#N)9502geJZZG)-+(3|?G$`#wB<+OXQNF5%}#j*7~yCm;O1yX^K*Zv z22*q$Q}hEuMNbkiAuCd7+9wNWN&TXI> zfxj`;204C0>ts2?Z90(J{SmeTY`PP0dTEfiiuiEL8*YPv)b4~xJM;`^C-9pP7Ney) zi(sb_<@{wi_&J2|?-VMcOo2gAe_+UX1=4}ODa|a7Y6qipjN#9Nis>-HofP-SLKRWz zE;+~~v%?7tbs%Y@RZ}9>N%FfBSlM12*@OM$@*rKurQ58OjKEJ08>=1a&jkN6OH?}) zt>rk+ayW*MHVYukN|5IGO~uFWhwV+k}0jGWtarjgxki_8f8mIc*$+OTT~ zHb;gnE)HGO$3vpW5JC?r($PaQ+uB1rp-m)2PCq62 zX5lQ*k>psnhgAw6avN9Bp1CAn>Pivl_#K&uN?l-5xb76a+DU?~tJ4waMuPgs_w__S zB+x$`gP@4tzlf(~=9e@qXxW`;_YnN~DXMcPN@}$Esfb?^LXb;leo5hMcoa>iL=jI( z^3BpgRvj^YEgY_I(Yn}yDkso6O~gG)?P^l!9z}aPN#K_^D5#?kT3>?i9?>HSbjp3< zQxWB1Mn=ByDKo#M>Y$|U(MA${_lW8o(m9&ttB7Ax#L+VIO9~x55lv@_5%);)%|b8g zY{1t-m(4}H)MXXuJTKxNr7kcjbdRF$G&dvY!U3AqQ7fEI-~c4J&6kBb6QoRmUwduf z0-a~vNC@T{^jiWhsI$4Ii1Oe}gdmr4_$7t+NbW+rm*6{7^uGi*EI3mUzof{p$jmP( z9G1t>bebJ;rX=4i^tsN9-ryKd=NpAx>`)%M>1&cpt>Yb}cE>yQP^U_feXbMHeN74v zC%uT)5bSRbuVP^;q89NthgTEjhGv_4g0yz`1$1UMf)MO^;wpeWZ*2QLFG!(dV*`)t zoNlXDN}5fG9N_}VAA=zCB)=*O43Fb8(R2~PnT}xVF$j{)Re?eK6_p{IP9Z5ZoETRT zzm5=bW+1iuW06;5v&`(mlL4KH`lp~lyYE4I&#b~Bl;oy!c#ZxKq*u)El z=;UTeu~4U&cudfV2}9$HHE|~ST=*wK#HpWBg3f{?=Y(xic(Nypubq{^_h-0iB{^ht zX@A%Vq;@9DhMl5{d|!y__)U}vZt5XEKRZko$zt3q@kcordY z%BoZOJqb3=S1_d&Ih{~!f7e)wV(MLJ60|cgjg0+%*d9o*IbXlHP~4yMS~Dm?<{%~7 zZ(WtDwn%}Jjwe`Gd9WtFfY7e1GLje>u&pj?{n4opYS*>O9|_h@_BnA~w6HeSP87v- z>EiC{ASj|@f-FH%K~{An$P{UaP96S6@K>nldP2BMDxzZBFEyF@Z4P(I=i0RJWGv9g z9XT2MuFW#styiP{gAh5?d`)zsTPb6OlWnDB1Yf$<5%kduOsR*xOU5$^?FQj&1lQ!Y zdm`P@4j`!Wk)PbC3QgOdFQm~1`KFxmi0(tcPfQvFMSMR+W|7Q%KZRpE8f^?Aax{_T zn}x2^Rj99p-F%r$uM?6UQ%&S8i%|VK$d?w$EH2yvDPYXZtQb;m^MVxq2Zha|{F%7X z=1ckFLUCP(`o4Gy`V7H*DDol!_wr}K#olnSV&)xet&7zzE);v4V0*~N5RH_z<2%St z7Kt?CU>fmTLS#i9OY{Vjng#a~n7Vbs`xWO}4CO|*)r3fdUnBIr=oU#zT*z_mLoc*m)N4~%97{jIW$K;=eWMT-=BPOHj# zz;a~-UmI;wu0fV7oC%9)?eDC&%tDbR1ZE)@e_{_1I(dANmH*<)EzWjFT>K@Av!C!^ z{8fu{Zcki%gT;9c!GG}-4YA+%6e+d{+rCIC!H(hN6dz!TL_`K#ggQlr66{xAC{ug~ zOC%yP&LZ?>cgUU=A)CnTASD>ocW93rsQPqkAZl#oF_!cXfam)daGnnx7crDkOsWQv zNmSk%q`Qb;Q(Jx;Avf?%fobIY;0lWQleH*3znwsZS!-E~V6D-d;OC;Pr}H#aXPXzC zX0};DVB7Xx=DU1V8+PE3GYb>m`Gm;sbt%yWCWU98vRGtNi$F!w+qQ40uk*!d$)BX0 zVN`pxQ^H$Gh}5<%WvRTVSy^$yt0hp!J4Ws$LZ080B)oG7ri)xei1^aOOj6P-Pq&IJ zA@FzM)8*;fu*cv49i-IdFKQL(P}pf$IFX;62xf}PD94(;u2v|6i0_sB9D(FY;Wm~W9ycZsz1XDe z3gBs@8Nu(zZ0&W~&NPD-LC$DSa5TYf=PK&~OK1`NKwws^N{H-RW_}P{ML@qlAu@@Y z%t%DlM$RTwkxD0hT|(q!0^7deI;YP|d`cnZu8?_&1(5rK$TN@^f=J-87V=$V#bjix z8l$s8U3kQj^8zJP`@HaHALOSeEj=TUuW)X?@L4AdUhrk%8Yc@j`?63z!Ht4idZ0pt z{Rk`q!319xPBJ+w$oR6b$>bKn5xy+^waHn*xxOsCz~r3ZabFfbX>yBTMmN_I;qC;+ zLh!0D3*Rs~D`+Wq*1~-WD1z0#EPT=AtYDAs&RV!Pft4V5#+QZ9ncOUBtZ>%CF$6|k z@CRQO-f41HknZ8Eg#!tAP_WdOg}0d8EJ#&4Yhf{gmIzMrW#OqNw+O!QW#J|#3m&R+ zg$N%eP>7(9&8L&=g|!66OEAQjh1)q$O2eGkk5nU)e6AmEY2EmiQEL>%BvtZ2j&RY0K z0&e(m7?W?f6)jj!pdrJA51ZWlE%1ZUtl-2EW-&;(guo0C>^joP!kGm6D>$j%$--3x zY81RV%E`j_2sB$TuffT}^9Z>3S>OeuIl;iuW>G7gPQW9AH+)(6uF1`UEsf4vICTfJ z78J2m>11tiJkfUlP??gO1rxj3dR&?i*@Zx(1=GrXUF5DF(wn{o`rArr68za{v!Ie? zK_!*KlL-_ec;9GVaI#x8mBKS@(c}aZdb^Cmoe4Oh6Dy^QEt)35;RK2<6<%y|PO!aO zOQph5ww7{&+gUBL7CvMPC@1J)tD{A5L_cRCJcdAxf^^!+!T|)_b0Bc2(VXC20!0rK zdi`aQ7u-mYEWFj^jNmZ0mWB;vc{JKe$qD8gZ4$ii7R@l>e{Ip^1WVka8791rKttXD z-Zq*QWZe3x6rM=H*@80G5DlpmR@$=42+n8WNESY1Ybh_-XtYHzV>@Rd+>5|86MXN> z!Yw9ecVZb$vZd4{SWckmI^jDe=LPdvWs-##5b&_zE7p@_;i0ycS_C(abh7Yv0=*IJ z#KMuaa3XQchS9+=XQx_fai@i2`+FOMz!#dwqfK17rI@dT6mf55>0}y-7Zlr?Buos!GT8ef(O|W zXh^m25!)s5f;n!Ns1}~+c8U9d2aM(gb!p2uNH~qas0w}}P~IRz+YVX^fMeWtFi3co z9a^)3w~e+4M!W4`kZ_!B2YJEgzAXI0D!jo;6 zXcDY-yF^+z+4g{(;2L)fO$%?ZV`x^8b$dWs*kpS^?h0VB(Y&D0?Ez_Ff7=6^1aJAW z@Si4U1iP^I)mGtb0<%@{XQM5Gfg_!T@Kyr#ehB>6XhyJ0yY>15%j1d0~qShTVh?n6KkeC^A^ zZ=F1i#rsEF#~H!xZXKtEciKA63Z}UQn->0=KzV|0Zk48mRkliVf)&0jeA486f~A?X zRhkpD8f_L#Nn2CX!Wjf+w_rJ|Q&Unn)GbHBB^;q83oo~Wc1|$SEyuKQk}b#l*}!>5 zvx4skWULd`*mBGZ{z{N6eB9)Wpw2DFI^pjKOwUhPj$gW!DY(h4%sSyMwlbU60q+^j z3ie|eQgpHKEVnWR+qflIEF5S{utl)M9i5AXcetaofm?zJ;J^{CJmFyk93>dZ+EX>c zQ3T{ufMugao4)|QGMW=iYP7xxjxd@Nd_tgzLBfqDX9YDoI$5|sf#L+mjd8N@6asT0 zSTg;}SlI+-q2P7`OJ-%lNH;T00v8deuU0tU$%0$Uoh-bMKu-iu8*LUm&SFwV;hVO; z@`5RDA=L_Zv4zxfA#kzLX2CCesJIqEw$e3U_&$N=3+}FRvhXhi3P!k;|_v@gv;$9m=k>H%fdoiQ+dI@9Q{;?u$L{K<|d%U zts}v61T5-=ADY}E_&tkBvhXHbUoC<%w~*?Da|!Irg8nQfS-$};w1w2X8dzgAFPPz0 zOsViN0vQFp-HIs{ZeuH^MKI4D*Gh#S+Hox>n7~q@no{9ZTRnNfH@+;~Y;vxVB{SAm zPhM~bfsEC{r%i4V{KhS+YT-GysG0;HyG2zkY_ZjoyN4xnzpb9E;8!DDdBURzjPE@_ zw~^K{!E~d|f|m$XUMYOT2Gg})+@QE<)utF9&!SMvi!c$Dn2#)XJ%i!q*nkTs4XkPH^N@pQFp1>RsZ1H8`PbTNaS22n` z%|bB3Xp`VlRyCE^3NI(%UBP2+N!JRWwc}xnz+<7xTG+|fZceb=mxT|Toc#{?(P)!k zj$7Te!UY7nE|}z&bggg~ThdK}yWNtm74}J6vjr!)C0#2#-IjD#Fw!mQTHz=Hj+z6U zY&0YIlt8n~g^?+%&e!W-<6 znR^%bx6zCs;}(6n@K{^)ErPUL>E*&fw$hsfm${W*F1+4WdRDN>Xp^AH9Wu*>zi@|4 zK@qE6y%Bb{4InoI*u!YEU5nRQ7AX#`F0sjfsk94xIXT8aS9gMaJ@}r!E zaDM`WDp=>s!vC1uGNOTVL;@CqO9`q`c(;=UGe^s!MR0PXvk*Q)pfbV3tZ-!%t|Ty9 z1&eodvT)!St0p)!HO4~ zNOv|Z0%Zs;HJTTA6;?)C*onX-5Pav$!dhF$Il+|#dX*OTthDk3^9YiK=Q;T$psvc= zBpAj5#-dJGPoSxSQEu_p2`3Qny5LHqO@ck$F}O~+4}l&Cy0B7Jp0LywZ}V=zUPfC4 zPZF@G6n_G&c#JO}j#bFA|t=g0oo5DqDCCftmgY zu)=6oFwU*xYT)3#Z!Z z&IvyCW#Q*0HxFY;*W2pO3T`9N>RRFRCbtNF?G}Bl@OWGF8NoYl(boz;wMCy7?BQ0o z;8u4?uNB@&VDJP7xJ6$pJjfP()Ahhoqb-8&ZgtlRcd*r+7p(PV;lE7I2#y`;nk~GO zzycF2uXnO=C4n&z96ZX&!b1r(>i0ma(X8ML0&b`l_GvH+!F>eD!Us&w2tFF^WZ~FG zt6i`&YgyL9T?s53!75)CK4)_Cz#ZwNt@QAnrGr`ChuTWd3v}*H>$f@u*E1iw8te{7 zV|11o<^(f2^07NypAd1Uy?MbbmJIp|BL~$U%&-wO8a&Lgeg7{eOT!Qv>hlN#|uI6sFSV=%` z29_CZ5)7)cUcYH%J0iG7(8yMaH~4KnhIo#RYO`R38`U?BjI~kC3TCrIn!QNgcFm?% z;1;8KL515M%Y`Ftd&~&d`?ByOlkc+67)=4=gNh(1nL#MLZHv( z!q*6Ryn^kqr|pz^!G#1Y8ihBT+$`AFZJ>?9gKYzC7OZ0G$y%7Q+0`r>rrXWI6dy8yVvXp7)$0!0rJR=Dj^@C-q+@CB3ef_k?-4if&}w#R0{ zM)pNn3%{|gGAp>pZIy$B%iLD^8Stgiyx>UoMKYEO&vRR)V3gYvONC=>Pizs~KEhcG zA0{xB1f%MmEF42%m;@_)S@@*M*|Je|l7NNaC<3(?3m2H274&RyvapuG=m}&&ov5tfW&+i`XXI~0=&WE8 zlgD(CGi*Y&bRLPX2^22)oPfzEMoP@V89`S9`a4F-O%HFxtf#L#cC%W7O{|<~y-DG& zzb8@m?Fm@`CT^I3{b1+-4qV7F4kpm@YEV z_J^EcTcg>vc);B~&kM5785@ioV9v-2J`Hq{O->iou$Cx&gONHSH0-jG!42w+?o*%d zob;ZN#pa}p;CD`6XJm=#q4SQ#7b^%%mcV(}5WUuh85Aiz%%a3AS=i@XRJ2zsX3!ru+eBnP{VZqrSOAQkUDp5useNsC)O>39XTGDt3`5l zjK~RQ6WDMYg)JtBCu@DWv(FJC?y4o)*QBgKm#Y!aWr(`_R9V6Icu9M?FkueL3YHKg z3zwRl5!_-lcQZb7H+=Gf-nc}~6Am`_!F9iR$JagA>fn)kNKUV9kQ@I7qG#?q$wu7W~$ig;$!K+ncT*VcpLOUMA4M zbw=KIy5ML|2Td2b*-jCg>*=C$+#)#NXeLQ--6Mgl;4Fd~BK$3Zas}PpO~YZrK6bMqFWAMGg|nP2$QjM9 z!#(asd|t3W9-$%YjQq;nlND?ZbdjH(F4&f{P_q{qZD*#ruNs2;-Z|a={+58rJ4TA^ z1TH7&OrRGNgrz2j?mQTmxQ965VdE?$J=@_9PcY&BMASV#%?kFxSJbo8$Pwnatl&;u zW4efYDwz`u!~v#@j5lwz2%ZXbk%F|UY`ToDx`%x^L9y%gMk6;_ubTz88qEt{BvATB zBk!1=S%N3r;07Z< z5#h{A@P<2e*kELxoup;{g{KoZ*a~hZ$XfVk0hQaJ_H&hxCi%07CvaM$_oB!G}nb5y0_7C zg7XM;VUv-A+*Rg#bj`hloMR$ zdcV@h?d^O2Af5Tq`W5#6-$cJPDLg0bQW@MG$m%A+=WeQOGBVw|-y}G|XkKtRUAE4N zTy6c&2(C4ndz8MrOYgj3M|zL-t44M;SF{NJ5$Gasn4T9DaMf-0B4u_Zo)>gCnq7j6 z+!bwJ&*JA zOb*X3>T%lsgvhkpi>U6jM9ySSBkJx{=LK2ZNGCTM*~eU)6&!&JO&2-Q{FxD)Vl;as z{&Dwz^MZ8*tXCLWVE$wAmf4WrG1{kYIK&x;&v7yo&| zfU_a-o-t^Wz^2!UA5SS+ugtrqI8o?xYduM`hI)THq z;AmeKo@R3HYaBGk`rafs-DtC*GdDtP6htZrY7fUD(Xq+a$8c#j5Y@xT z$eF?;MBSV1Il*7uRrjk#o^e;*g5}ObuNryOc}URcJoKuODb6j=(`om{cvdir&e8VG zMh>-}W(EHYbdg%SIguCiGn%=XZoBue^MV@J(@jP;Sx=h{Myfku4`1s^o2=QPA2uLW zn-uOxtwfiZ6lT1MsNS)NtfxY@DcyU<*TGSLIMK*^OYU`xu-N6KzF--`Vjm`|?JiR6 zD|pFWLWfQK7)ftBN32dI>R#Ij%UX=2JD!pDjN`Ol&xj%eI)&&glfsOz5-qfI+3<|! z3nV=xj?{P!7W%3|q^z5XE;A`CtDch=o%%(NZF>;a%Oa6>eW9ow$-^`B?~qa^g=Nhr z`uFx$cM#RPm65V$rFj}ah}4)TdYDOJS)UWFX0M7^bs?%7vyrm?L{v|;*d2o*y`Sil zCWU3~!K^)%5Gm_dMDaCYZyN+Yd>(#MH zS*H@cz%7NKsa?2(GMW%+#9*R&1vFCDGeq^0c%-ZsiN0%6*sepkTE3JJDeFw4x_=y* z0JU8C>4{sUtU*K@ObW|dPISFV;Zk^ws2;>eil56FzP`f|DeD}f3rq^j>dqPNctRxO zFrs=-C(_3?MD^lZq^viIeqd5q)-jv{{f-bR>tdpMX*E*T_8j8%E_-Atj3zq8q_C{# ziRx@A;+zkVbjLeV)_g4VU@&5J715hb3d(8@Me& zKoV?6;P6{2oMCd<?FC{cYECz5&G=-?qixQ%3x z^rBV7>N%p{nG`nUeWH3fGGf)#$f_emIyQ%>UN4SVy+E{L2T9=;z8R^DN#Wt?V4_#H zxB3lHJ(`G2h9oCXMRo#}5%ed}^AwUTBUmz4v{`WPILnk4t|LU+rc57Mrkr4n zWoi+u$FTj6HhhJ_w*>pK6p`-;{EPuV%abBQF~NRqsy}3~Mfha_kval)rHczE!FI7E zemy{Bx=Z2*I`)GdWJ&zWfXJaPi637%1$Me6QJ~0~E~%VfQ-G<9_In2pKvr0U(gUBa zMtGYL{ml)<`MC)kkr!-dG$)vCG%Gm7XgCj5@J9suUbsjPXDXQJOa+G<%?VC3nic%c zsX?1mmi)^!NC(>a#Q%?hQu19^N_fDCk#4}Em0;r_a*IXybq0|?SOnjQs4yEzk%ugT zNM~DvR8JsTrbK>+rbi-KR#M_3MO`hUB4bG_?vV&mIwuk;p-X=&p+qnSi_$@4 z*tw(x+EuiqWM^nuRbohQ{*pt=jLW;x)b88zQQ_L9;%gCmM4FjWGb^j8L^-S445jyM zi}Flu1U;_kG`aeksl8n%l%qQ374&jZwX-+T>b7W~#&*$~Z4#q;sE~b1eo@jwgKK3z zihSFoyxMLeeU(F`AEcK^S~ZCD--dfe(cA-mdtSl{^t^$Wp2sYzUNn_f590Xc4KA_P z@^>&Bz1psAEgG_QFH-77UD(kSUk(kslv0a0DIe zs@9KGN^>uIZhE~s(-s{yg4v+)8PYpVu7(t2s;C+;I?`m7)JV6@6a0k?KO3Fct%ox1 z=x4OXjA<)WlTztp)zP5fac#MkHr`LOygQZP#0im_gXXCueyA(#wl#6*uyZ!7lkmBX z=HwI&^}H!zXDxYZv|Xxs7xifI)avfkxocaZYx1<1MyLtXx7N)G{CM!zIzE*fXKt;V zy-M1xB+=Z9-;s{YFB_vh#@IUAGhC@mj=jQ_n$k+$+tN~al(boqG@=<>tdOkcfcei{ z>%H7VhXMU7q{I5Hrd35k{)Rc29`Emo*HZo%#MEA?nci0^W1(Uo0%zU!a7)IyAZDxk!w z;=;miMR%6*Yxqco3km_UAXch?<0JiKz+%<#gmf*ihfC%Ymt%zy`p*a#Q31J zmwFHJDVkj{yf|I3ebJX}HeVwZ@S~Y*Wc-OK6<6$~N`aAG>G_mYFX+XzD>1b6L2?!q zcD)Oi6&IyA^W(>6*eC}TFYQ!WR6tXIfz+wLSCqz0bHoP}7JW}K^Th|U4;~1yc3VZ0 z?X%oV{RVj~c17Ka(?wm2epTg~RYaFl*N}D|eMoLod}gxRy0#iA+1qu^c%QnW=h#?` z*JO%*>d7C`kWKArUg`}c_aM@};u0qC zKCqH)y}|=PbLcX9)@4M+Cj76o(q8lCrF--Ge!+Y9YK)Q)Z%E-(2sv~(d}D^4U|h8Ifcu`R=56+BJ_S5ZOLyEIj^HZ>!a zTy+7$Lo}>}%2GR~lJnFAP0gwzR-dUmrIME@Umt$IssXdE#i?W?6SDKJMB0sMp=M{* z(h7cgjHI&3vSU>pq_U6VqkxK%6~(iYWo<*+Ei$C#b#24gJ>yjz&X}~Sq!~qp@<7iA zDEeN6Zo>;T?p0G+Ul#928>y;SW@3T&A}&bGo=q>yU#u#^2hY*)@|RM{Wmr^Q&ybt& zaw>TrLiK@MAzwwq%3oZ=7Es+l^cW_4`HS*&@8qI|$r&|@Y8?9{7cEOHP|0haD&QX0 z34AP~%FpO``J1WQLXuncyH2&qMeleQK(%@> z#4dd!)thCa&GHs3ndDyi+fmDvzGeD8h%;7apTPJl8Ncfr|6iSb&+lx1b#@&&^-Gg< z);d3PQh_&I@t98DPnvb|pOGeQ)k(GH1?;Rf|M~xD&E{xpJ|SncHM1xG@7Am!&04em zf44?1UxS^w{Jn@>x|EwHTf6){EZMre^7kW_Oqux!S-NReG^N1%R5l+*`nJ_<>POj{ zP3GWj$q?<*WyJrNgEx_8UD^%X6GhN)gB5#USb5&u~d=~~vg_?O=3p7JQIjn1?ueP;7 zWowpnY}YKtAS|J+U=4OChXreBI~Ji~jJ9=)vq~|JZJkgHG?rxV*t?5d!q&ah@N{fM z;nb}gp|ZPft$Llc`P;s%mvw)^UiOhTz-v;;KeOLOk|%q;(&S#khMJgtAbUXhr)~S? z=c(kE+8!4&$83B2)V9abnsQ_)|MUrJsXm(MmD&$K)%G}eI>qr{`{Yu$Pks^ZlY5cS ziTcaG?94v7G~6fOjN2z4@n^Pe6-SVBwA(t`?UQTK)6#7Vp~T2O*|dv4!@u%t`ycz{ zFR`;lyD4IqUPJZKMXSx`JS=TNeiLc`Rtr)$O~VCw6B(ilveT~71=+s2$CG9Y^4mx= z+V6PY;43iFp}x(#Tjbqs)7NuYEdNnQNIN3Q?i2atr$|d{lc%OzV~$AQMm>EKIpaKC z%4x>`^7L;=v!?(2zngCR!>bHeIIEM3F7P)KjZ`RyD^BAgwQVVDizM9Ec*0rGSAeO!VCXx)<}cKeiv9>EWkZ({ztP37;V`lti>*__ z<$Hqk?URevr5gB+-Lmomoh1=pm}q2qx5byGE@zdt#pk7Vh}ah_O7E^U3^&nXnt~>UCOr~_S!N0 zMX|R0!+v`Lmvri0MS-UHuxTfAjl|i$A0K|$bglw$;4l))b}J}ncUhQdJqESk7Cbdq zq}x$kP>2kGED+fNvP5Ji$6xjvx7R0maYi{I8 zE0MB23d;LEN0L?g5yUFp0 zG+<4lwGP#l&O`GSgm*B#4WTSw@3H{>{xS0Ja0bUTjvL}o&+ z5P2SQoybR!+eEfNmWgybo*z9I831`&WCzGgA~PZHi0lXX5aNwgSC*;?P1e*E$)K}q z3SDQdk;`S#Qc#gTi7B&>N?1q<*4kSj*4k$w*4pnO)}*d;{AN#wShJsnSR>zoSR+4& zSR)H4*&0~|u}0QGtdC6)Yi+$+`=;7*P(f%n739z%ztk~%%h({%*Tn7d`I?!m?LLGY|!?D*o3+Y zVk0wzwQoKiF5g^#J6|tW^G+;C`Cb{RiG7-yc9J!DV=|c3u*jsgFGF!;!Lu?^m4Y7s%1jH8dcMx01BRLJWg}g7s7V?DM!Ko zA-0fhVvjAO=F^xRCn0MQrw@SG8n*O|($DZ)<}Y%F!Yy+3_q{uGw;rS4U{t(ll@5k= zuHWj6bvx|6bj6XOKaZR8@us7i1ZD|jO2Avt$IRLj0e0hV( zI+L-)I%mAuHK`kF%5gtyrfFi*0f2c@VX8=Y)5 z(!Pz9qQbw6%68@=^#T^YGON{;w3MP%#*HTD3Kx~z1y1tRHC+2CVKp;Q_G+RU%6*j*x2V zn%)I`PbD?(O7ecBaQkT*FLWR!W3=eohhf7to|ihZ zvp41_tW&e(7y8b5TWXdr8peKv8&Vm`-nbi)OQ$6KI;SKGdZ8v&-KfjSUD7+zpw^W1 zuCau{@RB&mffEkZ90(Z0QZHb7+0jVgca`%Hz>)`PGe`@XU}I*54bQZsl`ox4fpk6lWQr8gTrNW*%I z(MRO=Th)x6#;&b^Z!mc@ZS?5@D&nJ?sF{}Dr;qF5h4aah)aAgaz3@ia?!F^-{~%~> z+3sp>gIZ9wyRuvPWqX9>m+dL)CDr_Kr^`u47y3>*y09z99OtB?3$5NrjE@pKHQ{T*GaQ1b*v@}(f2yp z#6MOOf8t+hfaX`~I8CpKtBKlLn4`R7H49V6Yp(6Ag|C09ld96c2W|b&g@o&W+SG(6 zBdz~yDBIS*SMv$lyEKd$Bz=pe-Z8m4s*iN#2DWsrDwd@Zua)_lM42M=>0kGmynv<`Ph2`@3c~F z=>s~+DsR09P1hX-t$&53%duSvp_rwK7kyIj7R0OhFP{@8@@AB>KiYZnrcm8}XWn;} zy27axxS790tvOXw!Dqioyp*lF`6Z#=i0T5do*g9vksb8 z;5Th^%9=KK*U7y4O4HT*)bW_B{hiK$)EqzsO2)%p=_j47(?_69K9P^%qx{rssJQG# zJH0D!9k1l+e7N+t$-PABt)!>84OfnBque!66x&9&lET{TqFe%)bz`{V@ ztfC7Rjr9gRI>Zg0Rke!mJY30bu|bTR2}?Ok(J2PH3^kt0c#2<*#?K5k+S$yh$n%G@ zY@F=hACjumma*;Bprw2GYWrRtY--l}>esK%p5%;^i&j~EYX43<^Ovy0GF&(R3C&|6R99*ArUbThf+ zwgY(9Ms%b1Gc}a_;kp^@%mb<>no)ZSO?R6VT(6(B} zUY9yy&{kVr%}0;%H!Crjro4B#ykDYOAwNNe>$<7uV(y-*kj~mmPgw2w*NS41Yelc- zhXGj(->+Xy7B)(%I~t%#1@3+s0lWj`$Pd&u7*R-kh2NfAB&UKc6Q8}N6I!xz(h zH&xxrW4?XOncYh!2Qzjq>W^&aZ?#i3V{IkUUd=z7vFeJOoU?q{EkzZfiF|mhdP1yv zwyD|Vshd>3z%}lscGhaf-iLDwHL7ajVtl7_867NKRH*A1RzL0YhAjLWKQF^6T4MJ8 zM9UfyLswns-+66F*qzrqiQ9Q+L&CrFI6VLp>} zS(Zt3PA4yRSMBM~NN>AvU-O8+lxA}l;oqQAz8}$b%rDE^=?b&cF8PyfIrn>%A9s<( zFR;*Qff+=KSd2ll4ED1kmL#GUc8_d{8h0S6iM(ZYHx%sN$ucD!oJggI(Qdo9(i7tD zt!N8)Q|Sj;R=fF`$lJm%w7Vs?NnHIHU)NFfhgkI+gH3{=jcyXwkc}$sP->eUcxe*E z`f9By*4+3d>E|F@Ykm!ByOA^Vaeg{WbsfG{U3A*oRp8oXcXqKICfg$dTPw#Fltx4I zdhQynV|SUZRjJX?s`Q_xu3$Mx&fsBN1}n^*o;h7ZBXf7y(E&!*8V{-dL*XU<(*DNe zt&c{#(8{)=3r^+8KV;5YzLw5@l9;`o<4MK%!lB1q@75Vy>uBi1#OmrM9;NT&$%T1p5naK0EdfxXU>mZ$8f-Ja=>>~F< z`ifkBJI_xE%Ix~r6OlTt`@li za6T%B6kfa9yL>@2bhvb)Gvki1AS*IkE-G(e6MITUh+$b85}B9B0>6!`#hBZO0!6-=`c zOs2%_#!mElUiDQM`%asu2{rLCqE&3|73U`K>cs6Y@ob;=qvsLTHtk2hAgXQJkBe-RzRG1HHxFQxybVe}ZHkEvc~d>2u@d+A5ZF5~J*BX^M% zHHN4jd{tbis5fNe6YQzQ>eQ6ZlzK~I=v7$QEs$H>@#tXUc09TzJRYU&N#HGsC+Id) z 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%0AYoY0EIuLzl$tLY8Oh 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�UQ%;_1k<~lQK>Q9O!O4n4@HCE1= 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 + +/* These rules specify the order of arguments in API calls: + * + * 1. Context pointers go first, followed by output arguments, combined + * output/input arguments, and finally input-only arguments. + * 2. Array lengths always immediately the follow the argument whose length + * they describe, even if this violates rule 1. + * 3. Within the OUT/OUTIN/IN groups, pointers to data that is typically generated + * later go first. This means: signatures, public nonces, private nonces, + * messages, public keys, secret keys, tweaks. + * 4. Arguments that are not data pointers go last, from more complex to less + * complex: function pointers, algorithm names, messages, void pointers, + * counts, flags, booleans. + * 5. Opaque data pointers follow the function pointer they are to be passed to. + */ + +/** Opaque data structure that holds context information (precomputed tables etc.). + * + * The purpose of context structures is to cache large precomputed data tables + * that are expensive to construct, and also to maintain the randomization data + * for blinding. + * + * Do not create a new context object for each operation, as construction is + * far slower than all other API calls (~100 times slower than an ECDSA + * verification). + * + * A constructed context can safely be used from multiple threads + * simultaneously, but API calls that take a non-const pointer to a context + * need exclusive access to it. In particular this is the case for + * secp256k1_context_destroy, secp256k1_context_preallocated_destroy, + * and secp256k1_context_randomize. + * + * Regarding randomization, either do it once at creation time (in which case + * you do not need any locking for the other calls), or use a read-write lock. + */ +typedef struct secp256k1_context_struct secp256k1_context; + +/** Opaque data structure that holds rewriteable "scratch space" + * + * The purpose of this structure is to replace dynamic memory allocations, + * because we target architectures where this may not be available. It is + * essentially a resizable (within specified parameters) block of bytes, + * which is initially created either by memory allocation or TODO as a pointer + * into some fixed rewritable space. + * + * Unlike the context object, this cannot safely be shared between threads + * without additional synchronization logic. + */ +typedef struct secp256k1_scratch_space_struct secp256k1_scratch_space; + +/** Opaque data structure that holds a parsed and valid public key. + * + * The exact representation of data inside is implementation defined and not + * guaranteed to be portable between different platforms or versions. It is + * however guaranteed to be 64 bytes in size, and can be safely copied/moved. + * If you need to convert to a format suitable for storage, transmission, or + * comparison, use secp256k1_ec_pubkey_serialize and secp256k1_ec_pubkey_parse. + */ +typedef struct { + unsigned char data[64]; +} secp256k1_pubkey; + +/** Opaque data structured that holds a parsed ECDSA signature. + * + * The exact representation of data inside is implementation defined and not + * guaranteed to be portable between different platforms or versions. It is + * however guaranteed to be 64 bytes in size, and can be safely copied/moved. + * If you need to convert to a format suitable for storage, transmission, or + * comparison, use the secp256k1_ecdsa_signature_serialize_* and + * secp256k1_ecdsa_signature_parse_* functions. + */ +typedef struct { + unsigned char data[64]; +} secp256k1_ecdsa_signature; + +/** A pointer to a function to deterministically generate a nonce. + * + * Returns: 1 if a nonce was successfully generated. 0 will cause signing to fail. + * Out: nonce32: pointer to a 32-byte array to be filled by the function. + * In: msg32: the 32-byte message hash being verified (will not be NULL) + * key32: pointer to a 32-byte secret key (will not be NULL) + * algo16: pointer to a 16-byte array describing the signature + * algorithm (will be NULL for ECDSA for compatibility). + * data: Arbitrary data pointer that is passed through. + * attempt: how many iterations we have tried to find a nonce. + * This will almost always be 0, but different attempt values + * are required to result in a different nonce. + * + * Except for test cases, this function should compute some cryptographic hash of + * the message, the algorithm, the key and the attempt. + */ +typedef int (*secp256k1_nonce_function)( + unsigned char *nonce32, + const unsigned char *msg32, + const unsigned char *key32, + const unsigned char *algo16, + void *data, + unsigned int attempt +); + +# if !defined(SECP256K1_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define SECP256K1_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define SECP256K1_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +# if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if SECP256K1_GNUC_PREREQ(2,7) +# define SECP256K1_INLINE __inline__ +# elif (defined(_MSC_VER)) +# define SECP256K1_INLINE __inline +# else +# define SECP256K1_INLINE +# endif +# else +# define SECP256K1_INLINE inline +# endif + +#ifndef SECP256K1_API +# if defined(_WIN32) +# ifdef SECP256K1_BUILD +# define SECP256K1_API __declspec(dllexport) +# else +# define SECP256K1_API +# endif +# elif defined(__GNUC__) && defined(SECP256K1_BUILD) +# define SECP256K1_API __attribute__ ((visibility ("default"))) +# else +# define SECP256K1_API +# endif +#endif + +/**Warning attributes + * NONNULL is not used if SECP256K1_BUILD is set to avoid the compiler optimizing out + * some paranoid null checks. */ +# if defined(__GNUC__) && SECP256K1_GNUC_PREREQ(3, 4) +# define SECP256K1_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) +# else +# define SECP256K1_WARN_UNUSED_RESULT +# endif +# if !defined(SECP256K1_BUILD) && defined(__GNUC__) && SECP256K1_GNUC_PREREQ(3, 4) +# define SECP256K1_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x))) +# else +# define SECP256K1_ARG_NONNULL(_x) +# endif + +/** All flags' lower 8 bits indicate what they're for. Do not use directly. */ +#define SECP256K1_FLAGS_TYPE_MASK ((1 << 8) - 1) +#define SECP256K1_FLAGS_TYPE_CONTEXT (1 << 0) +#define SECP256K1_FLAGS_TYPE_COMPRESSION (1 << 1) +/** The higher bits contain the actual data. Do not use directly. */ +#define SECP256K1_FLAGS_BIT_CONTEXT_VERIFY (1 << 8) +#define SECP256K1_FLAGS_BIT_CONTEXT_SIGN (1 << 9) +#define SECP256K1_FLAGS_BIT_COMPRESSION (1 << 8) + +/** Flags to pass to secp256k1_context_create, secp256k1_context_preallocated_size, and + * secp256k1_context_preallocated_create. */ +#define SECP256K1_CONTEXT_VERIFY (SECP256K1_FLAGS_TYPE_CONTEXT | SECP256K1_FLAGS_BIT_CONTEXT_VERIFY) +#define SECP256K1_CONTEXT_SIGN (SECP256K1_FLAGS_TYPE_CONTEXT | SECP256K1_FLAGS_BIT_CONTEXT_SIGN) +#define SECP256K1_CONTEXT_NONE (SECP256K1_FLAGS_TYPE_CONTEXT) + +/** Flag to pass to secp256k1_ec_pubkey_serialize. */ +#define SECP256K1_EC_COMPRESSED (SECP256K1_FLAGS_TYPE_COMPRESSION | SECP256K1_FLAGS_BIT_COMPRESSION) +#define SECP256K1_EC_UNCOMPRESSED (SECP256K1_FLAGS_TYPE_COMPRESSION) + +/** Prefix byte used to tag various encoded curvepoints for specific purposes */ +#define SECP256K1_TAG_PUBKEY_EVEN 0x02 +#define SECP256K1_TAG_PUBKEY_ODD 0x03 +#define SECP256K1_TAG_PUBKEY_UNCOMPRESSED 0x04 +#define SECP256K1_TAG_PUBKEY_HYBRID_EVEN 0x06 +#define SECP256K1_TAG_PUBKEY_HYBRID_ODD 0x07 + +/** A simple secp256k1 context object with no precomputed tables. These are useful for + * type serialization/parsing functions which require a context object to maintain + * API consistency, but currently do not require expensive precomputations or dynamic + * allocations. + */ +SECP256K1_API extern const secp256k1_context *secp256k1_context_no_precomp; + +/** Create a secp256k1 context object (in dynamically allocated memory). + * + * This function uses malloc to allocate memory. It is guaranteed that malloc is + * called at most once for every call of this function. If you need to avoid dynamic + * memory allocation entirely, see the functions in secp256k1_preallocated.h. + * + * Returns: a newly created context object. + * In: flags: which parts of the context to initialize. + * + * See also secp256k1_context_randomize. + */ +SECP256K1_API secp256k1_context* secp256k1_context_create( + unsigned int flags +) SECP256K1_WARN_UNUSED_RESULT; + +/** Copy a secp256k1 context object (into dynamically allocated memory). + * + * This function uses malloc to allocate memory. It is guaranteed that malloc is + * called at most once for every call of this function. If you need to avoid dynamic + * memory allocation entirely, see the functions in secp256k1_preallocated.h. + * + * Returns: a newly created context object. + * Args: ctx: an existing context to copy (cannot be NULL) + */ +SECP256K1_API secp256k1_context* secp256k1_context_clone( + const secp256k1_context* ctx +) SECP256K1_ARG_NONNULL(1) SECP256K1_WARN_UNUSED_RESULT; + +/** Destroy a secp256k1 context object (created in dynamically allocated memory). + * + * The context pointer may not be used afterwards. + * + * The context to destroy must have been created using secp256k1_context_create + * or secp256k1_context_clone. If the context has instead been created using + * secp256k1_context_preallocated_create or secp256k1_context_preallocated_clone, the + * behaviour is undefined. In that case, secp256k1_context_preallocated_destroy must + * be used instead. + * + * Args: ctx: an existing context to destroy, constructed using + * secp256k1_context_create or secp256k1_context_clone + */ +SECP256K1_API void secp256k1_context_destroy( + secp256k1_context* ctx +); + +/** Set a callback function to be called when an illegal argument is passed to + * an API call. It will only trigger for violations that are mentioned + * explicitly in the header. + * + * The philosophy is that these shouldn't be dealt with through a + * specific return value, as calling code should not have branches to deal with + * the case that this code itself is broken. + * + * On the other hand, during debug stage, one would want to be informed about + * such mistakes, and the default (crashing) may be inadvisable. + * When this callback is triggered, the API function called is guaranteed not + * to cause a crash, though its return value and output arguments are + * undefined. + * + * When this function has not been called (or called with fn==NULL), then the + * default handler will be used. The library provides a default handler which + * writes the message to stderr and calls abort. This default handler can be + * replaced at link time if the preprocessor macro + * USE_EXTERNAL_DEFAULT_CALLBACKS is defined, which is the case if the build + * has been configured with --enable-external-default-callbacks. Then the + * following two symbols must be provided to link against: + * - void secp256k1_default_illegal_callback_fn(const char* message, void* data); + * - void secp256k1_default_error_callback_fn(const char* message, void* data); + * The library can call these default handlers even before a proper callback data + * pointer could have been set using secp256k1_context_set_illegal_callback or + * secp256k1_context_set_error_callback, e.g., when the creation of a context + * fails. In this case, the corresponding default handler will be called with + * the data pointer argument set to NULL. + * + * Args: ctx: an existing context object (cannot be NULL) + * In: fun: a pointer to a function to call when an illegal argument is + * passed to the API, taking a message and an opaque pointer. + * (NULL restores the default handler.) + * data: the opaque pointer to pass to fun above. + * + * See also secp256k1_context_set_error_callback. + */ +SECP256K1_API void secp256k1_context_set_illegal_callback( + secp256k1_context* ctx, + void (*fun)(const char* message, void* data), + const void* data +) SECP256K1_ARG_NONNULL(1); + +/** Set a callback function to be called when an internal consistency check + * fails. The default is crashing. + * + * This can only trigger in case of a hardware failure, miscompilation, + * memory corruption, serious bug in the library, or other error would can + * otherwise result in undefined behaviour. It will not trigger due to mere + * incorrect usage of the API (see secp256k1_context_set_illegal_callback + * for that). After this callback returns, anything may happen, including + * crashing. + * + * Args: ctx: an existing context object (cannot be NULL) + * In: fun: a pointer to a function to call when an internal error occurs, + * taking a message and an opaque pointer (NULL restores the + * default handler, see secp256k1_context_set_illegal_callback + * for details). + * data: the opaque pointer to pass to fun above. + * + * See also secp256k1_context_set_illegal_callback. + */ +SECP256K1_API void secp256k1_context_set_error_callback( + secp256k1_context* ctx, + void (*fun)(const char* message, void* data), + const void* data +) SECP256K1_ARG_NONNULL(1); + +/** Create a secp256k1 scratch space object. + * + * Returns: a newly created scratch space. + * Args: ctx: an existing context object (cannot be NULL) + * In: size: amount of memory to be available as scratch space. Some extra + * (<100 bytes) will be allocated for extra accounting. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT secp256k1_scratch_space* secp256k1_scratch_space_create( + const secp256k1_context* ctx, + size_t size +) SECP256K1_ARG_NONNULL(1); + +/** Destroy a secp256k1 scratch space. + * + * The pointer may not be used afterwards. + * Args: ctx: a secp256k1 context object. + * scratch: space to destroy + */ +SECP256K1_API void secp256k1_scratch_space_destroy( + const secp256k1_context* ctx, + secp256k1_scratch_space* scratch +) SECP256K1_ARG_NONNULL(1); + +/** Parse a variable-length public key into the pubkey object. + * + * Returns: 1 if the public key was fully valid. + * 0 if the public key could not be parsed or is invalid. + * Args: ctx: a secp256k1 context object. + * Out: pubkey: pointer to a pubkey object. If 1 is returned, it is set to a + * parsed version of input. If not, its value is undefined. + * In: input: pointer to a serialized public key + * inputlen: length of the array pointed to by input + * + * This function supports parsing compressed (33 bytes, header byte 0x02 or + * 0x03), uncompressed (65 bytes, header byte 0x04), or hybrid (65 bytes, header + * byte 0x06 or 0x07) format public keys. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_parse( + const secp256k1_context* ctx, + secp256k1_pubkey* pubkey, + const unsigned char *input, + size_t inputlen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Serialize a pubkey object into a serialized byte sequence. + * + * Returns: 1 always. + * Args: ctx: a secp256k1 context object. + * Out: output: a pointer to a 65-byte (if compressed==0) or 33-byte (if + * compressed==1) byte array to place the serialized key + * in. + * In/Out: outputlen: a pointer to an integer which is initially set to the + * size of output, and is overwritten with the written + * size. + * In: pubkey: a pointer to a secp256k1_pubkey containing an + * initialized public key. + * flags: SECP256K1_EC_COMPRESSED if serialization should be in + * compressed format, otherwise SECP256K1_EC_UNCOMPRESSED. + */ +SECP256K1_API int secp256k1_ec_pubkey_serialize( + const secp256k1_context* ctx, + unsigned char *output, + size_t *outputlen, + const secp256k1_pubkey* pubkey, + unsigned int flags +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Parse an ECDSA signature in compact (64 bytes) format. + * + * Returns: 1 when the signature could be parsed, 0 otherwise. + * Args: ctx: a secp256k1 context object + * Out: sig: a pointer to a signature object + * In: input64: a pointer to the 64-byte array to parse + * + * The signature must consist of a 32-byte big endian R value, followed by a + * 32-byte big endian S value. If R or S fall outside of [0..order-1], the + * encoding is invalid. R and S with value 0 are allowed in the encoding. + * + * After the call, sig will always be initialized. If parsing failed or R or + * S are zero, the resulting sig value is guaranteed to fail validation for any + * message and public key. + */ +SECP256K1_API int secp256k1_ecdsa_signature_parse_compact( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature* sig, + const unsigned char *input64 +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Parse a DER ECDSA signature. + * + * Returns: 1 when the signature could be parsed, 0 otherwise. + * Args: ctx: a secp256k1 context object + * Out: sig: a pointer to a signature object + * In: input: a pointer to the signature to be parsed + * inputlen: the length of the array pointed to be input + * + * This function will accept any valid DER encoded signature, even if the + * encoded numbers are out of range. + * + * After the call, sig will always be initialized. If parsing failed or the + * encoded numbers are out of range, signature validation with it is + * guaranteed to fail for every message and public key. + */ +SECP256K1_API int secp256k1_ecdsa_signature_parse_der( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature* sig, + const unsigned char *input, + size_t inputlen +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Serialize an ECDSA signature in DER format. + * + * Returns: 1 if enough space was available to serialize, 0 otherwise + * Args: ctx: a secp256k1 context object + * Out: output: a pointer to an array to store the DER serialization + * In/Out: outputlen: a pointer to a length integer. Initially, this integer + * should be set to the length of output. After the call + * it will be set to the length of the serialization (even + * if 0 was returned). + * In: sig: a pointer to an initialized signature object + */ +SECP256K1_API int secp256k1_ecdsa_signature_serialize_der( + const secp256k1_context* ctx, + unsigned char *output, + size_t *outputlen, + const secp256k1_ecdsa_signature* sig +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Serialize an ECDSA signature in compact (64 byte) format. + * + * Returns: 1 + * Args: ctx: a secp256k1 context object + * Out: output64: a pointer to a 64-byte array to store the compact serialization + * In: sig: a pointer to an initialized signature object + * + * See secp256k1_ecdsa_signature_parse_compact for details about the encoding. + */ +SECP256K1_API int secp256k1_ecdsa_signature_serialize_compact( + const secp256k1_context* ctx, + unsigned char *output64, + const secp256k1_ecdsa_signature* sig +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Verify an ECDSA signature. + * + * Returns: 1: correct signature + * 0: incorrect or unparseable signature + * Args: ctx: a secp256k1 context object, initialized for verification. + * In: sig: the signature being verified (cannot be NULL) + * msg32: the 32-byte message hash being verified (cannot be NULL) + * pubkey: pointer to an initialized public key to verify with (cannot be NULL) + * + * To avoid accepting malleable signatures, only ECDSA signatures in lower-S + * form are accepted. + * + * If you need to accept ECDSA signatures from sources that do not obey this + * rule, apply secp256k1_ecdsa_signature_normalize to the signature prior to + * validation, but be aware that doing so results in malleable signatures. + * + * For details, see the comments for that function. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_verify( + const secp256k1_context* ctx, + const secp256k1_ecdsa_signature *sig, + const unsigned char *msg32, + const secp256k1_pubkey *pubkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Convert a signature to a normalized lower-S form. + * + * Returns: 1 if sigin was not normalized, 0 if it already was. + * Args: ctx: a secp256k1 context object + * Out: sigout: a pointer to a signature to fill with the normalized form, + * or copy if the input was already normalized. (can be NULL if + * you're only interested in whether the input was already + * normalized). + * In: sigin: a pointer to a signature to check/normalize (cannot be NULL, + * can be identical to sigout) + * + * With ECDSA a third-party can forge a second distinct signature of the same + * message, given a single initial signature, but without knowing the key. This + * is done by negating the S value modulo the order of the curve, 'flipping' + * the sign of the random point R which is not included in the signature. + * + * Forgery of the same message isn't universally problematic, but in systems + * where message malleability or uniqueness of signatures is important this can + * cause issues. This forgery can be blocked by all verifiers forcing signers + * to use a normalized form. + * + * The lower-S form reduces the size of signatures slightly on average when + * variable length encodings (such as DER) are used and is cheap to verify, + * making it a good choice. Security of always using lower-S is assured because + * anyone can trivially modify a signature after the fact to enforce this + * property anyway. + * + * The lower S value is always between 0x1 and + * 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, + * inclusive. + * + * No other forms of ECDSA malleability are known and none seem likely, but + * there is no formal proof that ECDSA, even with this additional restriction, + * is free of other malleability. Commonly used serialization schemes will also + * accept various non-unique encodings, so care should be taken when this + * property is required for an application. + * + * The secp256k1_ecdsa_sign function will by default create signatures in the + * lower-S form, and secp256k1_ecdsa_verify will not accept others. In case + * signatures come from a system that cannot enforce this property, + * secp256k1_ecdsa_signature_normalize must be called before verification. + */ +SECP256K1_API int secp256k1_ecdsa_signature_normalize( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature *sigout, + const secp256k1_ecdsa_signature *sigin +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(3); + +/** An implementation of RFC6979 (using HMAC-SHA256) as nonce generation function. + * If a data pointer is passed, it is assumed to be a pointer to 32 bytes of + * extra entropy. + */ +SECP256K1_API extern const secp256k1_nonce_function secp256k1_nonce_function_rfc6979; + +/** A default safe nonce generation function (currently equal to secp256k1_nonce_function_rfc6979). */ +SECP256K1_API extern const secp256k1_nonce_function secp256k1_nonce_function_default; + +/** Create an ECDSA signature. + * + * Returns: 1: signature created + * 0: the nonce generation function failed, or the private key was invalid. + * Args: ctx: pointer to a context object, initialized for signing (cannot be NULL) + * Out: sig: pointer to an array where the signature will be placed (cannot be NULL) + * In: msg32: the 32-byte message hash being signed (cannot be NULL) + * seckey: pointer to a 32-byte secret key (cannot be NULL) + * noncefp:pointer to a nonce generation function. If NULL, secp256k1_nonce_function_default is used + * ndata: pointer to arbitrary data used by the nonce generation function (can be NULL) + * + * The created signature is always in lower-S form. See + * secp256k1_ecdsa_signature_normalize for more details. + */ +SECP256K1_API int secp256k1_ecdsa_sign( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature *sig, + const unsigned char *msg32, + const unsigned char *seckey, + secp256k1_nonce_function noncefp, + const void *ndata +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Verify an ECDSA secret key. + * + * Returns: 1: secret key is valid + * 0: secret key is invalid + * Args: ctx: pointer to a context object (cannot be NULL) + * In: seckey: pointer to a 32-byte secret key (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_seckey_verify( + const secp256k1_context* ctx, + const unsigned char *seckey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Compute the public key for a secret key. + * + * Returns: 1: secret was valid, public key stores + * 0: secret was invalid, try again + * Args: ctx: pointer to a context object, initialized for signing (cannot be NULL) + * Out: pubkey: pointer to the created public key (cannot be NULL) + * In: seckey: pointer to a 32-byte private key (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_create( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey, + const unsigned char *seckey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Negates a private key in place. + * + * Returns: 1 always + * Args: ctx: pointer to a context object + * In/Out: seckey: pointer to the 32-byte private key to be negated (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_negate( + const secp256k1_context* ctx, + unsigned char *seckey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Negates a public key in place. + * + * Returns: 1 always + * Args: ctx: pointer to a context object + * In/Out: pubkey: pointer to the public key to be negated (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_negate( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2); + +/** Tweak a private key by adding tweak to it. + * Returns: 0 if the tweak was out of range (chance of around 1 in 2^128 for + * uniformly random 32-byte arrays, or if the resulting private key + * would be invalid (only when the tweak is the complement of the + * private key). 1 otherwise. + * Args: ctx: pointer to a context object (cannot be NULL). + * In/Out: seckey: pointer to a 32-byte private key. + * In: tweak: pointer to a 32-byte tweak. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_tweak_add( + const secp256k1_context* ctx, + unsigned char *seckey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a public key by adding tweak times the generator to it. + * Returns: 0 if the tweak was out of range (chance of around 1 in 2^128 for + * uniformly random 32-byte arrays, or if the resulting public key + * would be invalid (only when the tweak is the complement of the + * corresponding private key). 1 otherwise. + * Args: ctx: pointer to a context object initialized for validation + * (cannot be NULL). + * In/Out: pubkey: pointer to a public key object. + * In: tweak: pointer to a 32-byte tweak. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_tweak_add( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a private key by multiplying it by a tweak. + * Returns: 0 if the tweak was out of range (chance of around 1 in 2^128 for + * uniformly random 32-byte arrays, or equal to zero. 1 otherwise. + * Args: ctx: pointer to a context object (cannot be NULL). + * In/Out: seckey: pointer to a 32-byte private key. + * In: tweak: pointer to a 32-byte tweak. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_privkey_tweak_mul( + const secp256k1_context* ctx, + unsigned char *seckey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Tweak a public key by multiplying it by a tweak value. + * Returns: 0 if the tweak was out of range (chance of around 1 in 2^128 for + * uniformly random 32-byte arrays, or equal to zero. 1 otherwise. + * Args: ctx: pointer to a context object initialized for validation + * (cannot be NULL). + * In/Out: pubkey: pointer to a public key object. + * In: tweak: pointer to a 32-byte tweak. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_tweak_mul( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey, + const unsigned char *tweak +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Updates the context randomization to protect against side-channel leakage. + * Returns: 1: randomization successfully updated or nothing to randomize + * 0: error + * Args: ctx: pointer to a context object (cannot be NULL) + * In: seed32: pointer to a 32-byte random seed (NULL resets to initial state) + * + * While secp256k1 code is written to be constant-time no matter what secret + * values are, it's possible that a future compiler may output code which isn't, + * and also that the CPU may not emit the same radio frequencies or draw the same + * amount power for all values. + * + * This function provides a seed which is combined into the blinding value: that + * blinding value is added before each multiplication (and removed afterwards) so + * that it does not affect function results, but shields against attacks which + * rely on any input-dependent behaviour. + * + * This function has currently an effect only on contexts initialized for signing + * because randomization is currently used only for signing. However, this is not + * guaranteed and may change in the future. It is safe to call this function on + * contexts not initialized for signing; then it will have no effect and return 1. + * + * You should call this after secp256k1_context_create or + * secp256k1_context_clone (and secp256k1_context_preallocated_create or + * secp256k1_context_clone, resp.), and you may call this repeatedly afterwards. + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_context_randomize( + secp256k1_context* ctx, + const unsigned char *seed32 +) SECP256K1_ARG_NONNULL(1); + +/** Add a number of public keys together. + * Returns: 1: the sum of the public keys is valid. + * 0: the sum of the public keys is not valid. + * Args: ctx: pointer to a context object + * Out: out: pointer to a public key object for placing the resulting public key + * (cannot be NULL) + * In: ins: pointer to array of pointers to public keys (cannot be NULL) + * n: the number of public keys to add together (must be at least 1) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ec_pubkey_combine( + const secp256k1_context* ctx, + secp256k1_pubkey *out, + const secp256k1_pubkey * const * ins, + size_t n +) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_H */ diff --git a/example/android/third_party/secp256k1/include/secp256k1_ecdh.h b/example/android/third_party/secp256k1/include/secp256k1_ecdh.h new file mode 100644 index 00000000..df5fde23 --- /dev/null +++ b/example/android/third_party/secp256k1/include/secp256k1_ecdh.h @@ -0,0 +1,55 @@ +#ifndef SECP256K1_ECDH_H +#define SECP256K1_ECDH_H + +#include "secp256k1.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** A pointer to a function that applies hash function to a point + * + * Returns: 1 if a point was successfully hashed. 0 will cause ecdh to fail + * Out: output: pointer to an array to be filled by the function + * In: x: pointer to a 32-byte x coordinate + * y: pointer to a 32-byte y coordinate + * data: Arbitrary data pointer that is passed through + */ +typedef int (*secp256k1_ecdh_hash_function)( + unsigned char *output, + const unsigned char *x, + const unsigned char *y, + void *data +); + +/** An implementation of SHA256 hash function that applies to compressed public key. */ +SECP256K1_API extern const secp256k1_ecdh_hash_function secp256k1_ecdh_hash_function_sha256; + +/** A default ecdh hash function (currently equal to secp256k1_ecdh_hash_function_sha256). */ +SECP256K1_API extern const secp256k1_ecdh_hash_function secp256k1_ecdh_hash_function_default; + +/** Compute an EC Diffie-Hellman secret in constant time + * Returns: 1: exponentiation was successful + * 0: scalar was invalid (zero or overflow) + * Args: ctx: pointer to a context object (cannot be NULL) + * Out: output: pointer to an array to be filled by the function + * In: pubkey: a pointer to a secp256k1_pubkey containing an + * initialized public key + * privkey: a 32-byte scalar with which to multiply the point + * hashfp: pointer to a hash function. If NULL, secp256k1_ecdh_hash_function_sha256 is used + * data: Arbitrary data pointer that is passed through + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdh( + const secp256k1_context* ctx, + unsigned char *output, + const secp256k1_pubkey *pubkey, + const unsigned char *privkey, + secp256k1_ecdh_hash_function hashfp, + void *data +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_ECDH_H */ diff --git a/example/android/third_party/secp256k1/include/secp256k1_preallocated.h b/example/android/third_party/secp256k1/include/secp256k1_preallocated.h new file mode 100644 index 00000000..a9ae15d5 --- /dev/null +++ b/example/android/third_party/secp256k1/include/secp256k1_preallocated.h @@ -0,0 +1,128 @@ +#ifndef SECP256K1_PREALLOCATED_H +#define SECP256K1_PREALLOCATED_H + +#include "secp256k1.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* The module provided by this header file is intended for settings in which it + * is not possible or desirable to rely on dynamic memory allocation. It provides + * functions for creating, cloning, and destroying secp256k1 context objects in a + * contiguous fixed-size block of memory provided by the caller. + * + * Context objects created by functions in this module can be used like contexts + * objects created by functions in secp256k1.h, i.e., they can be passed to any + * API function that expects a context object (see secp256k1.h for details). The + * only exception is that context objects created by functions in this module + * must be destroyed using secp256k1_context_preallocated_destroy (in this + * module) instead of secp256k1_context_destroy (in secp256k1.h). + * + * It is guaranteed that functions in this module will not call malloc or its + * friends realloc, calloc, and free. + */ + +/** Determine the memory size of a secp256k1 context object to be created in + * caller-provided memory. + * + * The purpose of this function is to determine how much memory must be provided + * to secp256k1_context_preallocated_create. + * + * Returns: the required size of the caller-provided memory block + * In: flags: which parts of the context to initialize. + */ +SECP256K1_API size_t secp256k1_context_preallocated_size( + unsigned int flags +) SECP256K1_WARN_UNUSED_RESULT; + +/** Create a secp256k1 context object in caller-provided memory. + * + * The caller must provide a pointer to a rewritable contiguous block of memory + * of size at least secp256k1_context_preallocated_size(flags) bytes, suitably + * aligned to hold an object of any type. + * + * The block of memory is exclusively owned by the created context object during + * the lifetime of this context object, which begins with the call to this + * function and ends when a call to secp256k1_context_preallocated_destroy + * (which destroys the context object again) returns. During the lifetime of the + * context object, the caller is obligated not to access this block of memory, + * i.e., the caller may not read or write the memory, e.g., by copying the memory + * contents to a different location or trying to create a second context object + * in the memory. In simpler words, the prealloc pointer (or any pointer derived + * from it) should not be used during the lifetime of the context object. + * + * Returns: a newly created context object. + * In: prealloc: a pointer to a rewritable contiguous block of memory of + * size at least secp256k1_context_preallocated_size(flags) + * bytes, as detailed above (cannot be NULL) + * flags: which parts of the context to initialize. + * + * See also secp256k1_context_randomize (in secp256k1.h) + * and secp256k1_context_preallocated_destroy. + */ +SECP256K1_API secp256k1_context* secp256k1_context_preallocated_create( + void* prealloc, + unsigned int flags +) SECP256K1_ARG_NONNULL(1) SECP256K1_WARN_UNUSED_RESULT; + +/** Determine the memory size of a secp256k1 context object to be copied into + * caller-provided memory. + * + * Returns: the required size of the caller-provided memory block. + * In: ctx: an existing context to copy (cannot be NULL) + */ +SECP256K1_API size_t secp256k1_context_preallocated_clone_size( + const secp256k1_context* ctx +) SECP256K1_ARG_NONNULL(1) SECP256K1_WARN_UNUSED_RESULT; + +/** Copy a secp256k1 context object into caller-provided memory. + * + * The caller must provide a pointer to a rewritable contiguous block of memory + * of size at least secp256k1_context_preallocated_size(flags) bytes, suitably + * aligned to hold an object of any type. + * + * The block of memory is exclusively owned by the created context object during + * the lifetime of this context object, see the description of + * secp256k1_context_preallocated_create for details. + * + * Returns: a newly created context object. + * Args: ctx: an existing context to copy (cannot be NULL) + * In: prealloc: a pointer to a rewritable contiguous block of memory of + * size at least secp256k1_context_preallocated_size(flags) + * bytes, as detailed above (cannot be NULL) + */ +SECP256K1_API secp256k1_context* secp256k1_context_preallocated_clone( + const secp256k1_context* ctx, + void* prealloc +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_WARN_UNUSED_RESULT; + +/** Destroy a secp256k1 context object that has been created in + * caller-provided memory. + * + * The context pointer may not be used afterwards. + * + * The context to destroy must have been created using + * secp256k1_context_preallocated_create or secp256k1_context_preallocated_clone. + * If the context has instead been created using secp256k1_context_create or + * secp256k1_context_clone, the behaviour is undefined. In that case, + * secp256k1_context_destroy must be used instead. + * + * If required, it is the responsibility of the caller to deallocate the block + * of memory properly after this function returns, e.g., by calling free on the + * preallocated pointer given to secp256k1_context_preallocated_create or + * secp256k1_context_preallocated_clone. + * + * Args: ctx: an existing context to destroy, constructed using + * secp256k1_context_preallocated_create or + * secp256k1_context_preallocated_clone (cannot be NULL) + */ +SECP256K1_API void secp256k1_context_preallocated_destroy( + secp256k1_context* ctx +); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_PREALLOCATED_H */ diff --git a/example/android/third_party/secp256k1/include/secp256k1_recovery.h b/example/android/third_party/secp256k1/include/secp256k1_recovery.h new file mode 100644 index 00000000..cf6c5ed7 --- /dev/null +++ b/example/android/third_party/secp256k1/include/secp256k1_recovery.h @@ -0,0 +1,110 @@ +#ifndef SECP256K1_RECOVERY_H +#define SECP256K1_RECOVERY_H + +#include "secp256k1.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Opaque data structured that holds a parsed ECDSA signature, + * supporting pubkey recovery. + * + * The exact representation of data inside is implementation defined and not + * guaranteed to be portable between different platforms or versions. It is + * however guaranteed to be 65 bytes in size, and can be safely copied/moved. + * If you need to convert to a format suitable for storage or transmission, use + * the secp256k1_ecdsa_signature_serialize_* and + * secp256k1_ecdsa_signature_parse_* functions. + * + * Furthermore, it is guaranteed that identical signatures (including their + * recoverability) will have identical representation, so they can be + * memcmp'ed. + */ +typedef struct { + unsigned char data[65]; +} secp256k1_ecdsa_recoverable_signature; + +/** Parse a compact ECDSA signature (64 bytes + recovery id). + * + * Returns: 1 when the signature could be parsed, 0 otherwise + * Args: ctx: a secp256k1 context object + * Out: sig: a pointer to a signature object + * In: input64: a pointer to a 64-byte compact signature + * recid: the recovery id (0, 1, 2 or 3) + */ +SECP256K1_API int secp256k1_ecdsa_recoverable_signature_parse_compact( + const secp256k1_context* ctx, + secp256k1_ecdsa_recoverable_signature* sig, + const unsigned char *input64, + int recid +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Convert a recoverable signature into a normal signature. + * + * Returns: 1 + * Out: sig: a pointer to a normal signature (cannot be NULL). + * In: sigin: a pointer to a recoverable signature (cannot be NULL). + */ +SECP256K1_API int secp256k1_ecdsa_recoverable_signature_convert( + const secp256k1_context* ctx, + secp256k1_ecdsa_signature* sig, + const secp256k1_ecdsa_recoverable_signature* sigin +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3); + +/** Serialize an ECDSA signature in compact format (64 bytes + recovery id). + * + * Returns: 1 + * Args: ctx: a secp256k1 context object + * Out: output64: a pointer to a 64-byte array of the compact signature (cannot be NULL) + * recid: a pointer to an integer to hold the recovery id (can be NULL). + * In: sig: a pointer to an initialized signature object (cannot be NULL) + */ +SECP256K1_API int secp256k1_ecdsa_recoverable_signature_serialize_compact( + const secp256k1_context* ctx, + unsigned char *output64, + int *recid, + const secp256k1_ecdsa_recoverable_signature* sig +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Create a recoverable ECDSA signature. + * + * Returns: 1: signature created + * 0: the nonce generation function failed, or the private key was invalid. + * Args: ctx: pointer to a context object, initialized for signing (cannot be NULL) + * Out: sig: pointer to an array where the signature will be placed (cannot be NULL) + * In: msg32: the 32-byte message hash being signed (cannot be NULL) + * seckey: pointer to a 32-byte secret key (cannot be NULL) + * noncefp:pointer to a nonce generation function. If NULL, secp256k1_nonce_function_default is used + * ndata: pointer to arbitrary data used by the nonce generation function (can be NULL) + */ +SECP256K1_API int secp256k1_ecdsa_sign_recoverable( + const secp256k1_context* ctx, + secp256k1_ecdsa_recoverable_signature *sig, + const unsigned char *msg32, + const unsigned char *seckey, + secp256k1_nonce_function noncefp, + const void *ndata +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +/** Recover an ECDSA public key from a signature. + * + * Returns: 1: public key successfully recovered (which guarantees a correct signature). + * 0: otherwise. + * Args: ctx: pointer to a context object, initialized for verification (cannot be NULL) + * Out: pubkey: pointer to the recovered public key (cannot be NULL) + * In: sig: pointer to initialized signature that supports pubkey recovery (cannot be NULL) + * msg32: the 32-byte message hash assumed to be signed (cannot be NULL) + */ +SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_recover( + const secp256k1_context* ctx, + secp256k1_pubkey *pubkey, + const secp256k1_ecdsa_recoverable_signature *sig, + const unsigned char *msg32 +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); + +#ifdef __cplusplus +} +#endif + +#endif /* SECP256K1_RECOVERY_H */ diff --git a/example/android/third_party/secp256k1/libsecp256k1.a b/example/android/third_party/secp256k1/libsecp256k1.a new file mode 100644 index 0000000000000000000000000000000000000000..0b3daaab76d1ed1d64a95f9ad42489a32ccde1df GIT binary patch literal 698458 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 z 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�ya_pqJ?mzw{_Me9o}uhnK1+>Z&xToQ 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 z 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̧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%0A)!aPDDdkAVKYtK%N@Jij#X~3ZN_>-f^#5T# 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 Ta``C#MH5{A_(2YXs=ogRf>?mB literal 0 HcmV?d00001 diff --git a/example/android/third_party/secp256k1/x86-64/libsecp256k1.a b/example/android/third_party/secp256k1/x86-64/libsecp256k1.a new file mode 100644 index 0000000000000000000000000000000000000000..9f1a28d817d9db8347714261b1bc5f83a5d1501b GIT binary patch literal 763762 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%0D9RAIr7x5V2Ax~m-*Kh!RpAU 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�)uhTEm3TnrX4wque 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`sXe0+f<2W8) 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 literal 0 HcmV?d00001 diff --git a/example/android/third_party/secp256k1/x86-64/libsecp256k1.so b/example/android/third_party/secp256k1/x86-64/libsecp256k1.so new file mode 100644 index 0000000000000000000000000000000000000000..077f47acc40b59c1cc5ac77bc49092bb476310b1 GIT binary patch literal 657040 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

    AXSca&o?&i?~_+%SbU-o*Bc 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�)uhTEm3TnrX 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�ojdV+2>0(i|Rxzs;nXBlCC?)+di>sg=okfKv+Y5 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�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 literal 0 HcmV?d00001 diff --git a/flake.nix b/flake.nix index 36849ddf..cb70b5bb 100644 --- a/flake.nix +++ b/flake.nix @@ -31,13 +31,16 @@ openssl_1_1 zlib libmicrohttpd - ] else [ + libsodium + secp256k1 + ] else + [ (openssl_1_1.override { static = true; }).dev (zlib.override { shared = false; }).dev ] - ++ optionals (!stdenv.isDarwin) [ pkgsStatic.libmicrohttpd.dev ] + ++ optionals (!stdenv.isDarwin) [ pkgsStatic.libmicrohttpd.dev pkgsStatic.libsodium.dev secp256k1 ] ++ optionals stdenv.isDarwin [ (libiconv.override { enableStatic = true; enableShared = false; }) ] - ++ optionals stdenv.isDarwin (forEach [ libmicrohttpd.dev gmp.dev nettle.dev (gnutls.override { withP11-kit = false; }).dev libtasn1.dev libidn2.dev libunistring.dev gettext ] (x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" ]; dontDisableStatic = true; }))) + ++ optionals stdenv.isDarwin (forEach [ libmicrohttpd.dev libsodium.dev secp256k1 gmp.dev nettle.dev (gnutls.override { withP11-kit = false; }).dev libtasn1.dev libidn2.dev libunistring.dev gettext ] (x: x.overrideAttrs(oldAttrs: rec { configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" "--disable-shared" ]; dontDisableStatic = true; }))) ++ optionals staticGlibc [ glibc.static ]; dontAddStaticConfigureFlags = stdenv.isDarwin; diff --git a/test/regression-tests.ans b/test/regression-tests.ans index 61191ea4..e2057210 100644 --- a/test/regression-tests.ans +++ b/test/regression-tests.ans @@ -6,16 +6,23 @@ Test_Fift_bug_div_default 1ac42861ce96b2896001c587f65e9afe1617db48859f19c2f4e306 Test_Fift_bug_newlize_default e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 Test_Fift_bug_ufits_default 51bf5a9f1ed7633a193f6fdd17a7a3af8e032dfe72a9669c85e8639aa8a7c195 Test_Fift_contfrac_default 09ebce5c91bcb70696c6fb6981d82dc3b9e3444dab608a7a1b044c0ddd778a96 +Test_Fift_test_adddiv_default 8516934b6fe143062864a90c76271c1d6b9b83bcb07cd09c43ac5d3e41997e6b Test_Fift_test_asm_nested_program_default 2a19decac67adb719c444ab42879a5d894447d450d1998848c469605531076ad +Test_Fift_test_bls_default 362b67d27e3081f75a59d3d2ca5891fd000cbc061d741764924362aae4235737 +Test_Fift_test_bls_ops_default fb0a81d4f247ab806318b051d12158f7f1aacc5513db5f8cb0fdca21dbb4f9f4 +Test_Fift_test_deep_stack_ops_default df812efbadfffa8a3f553416f68c8c4435bac07266f84562cf98fe5f0dd62a52 Test_Fift_test_default 4e44b3382963ec89f7b5c8f2ebd85da3bc8aebad5b49f5b11b14075061477b4d Test_Fift_test_dict_default a9c8cbcfdece5573185022cea07f59f1bc404e5d879e5157a5745757f8ee0525 Test_Fift_test_disasm_default dacaa555f5f217b2373e01e3bcd59634e480f5759dcc43edbdef35273ae38492 Test_Fift_test_fiftext_default 2b0db5d4d4bfbc705b959cc787540d7b3a21a71469eac54756e76953f0d9afca Test_Fift_test_fixed_default 278a19d56b773102caf5c1fe2997ea6c8d0d9e720eff8503feede6398a197eec +Test_Fift_test_hash_ext_default 686fc5680feca5b3bb207768215b27f6872a95128762dee0d7f2c88bc492d62d Test_Fift_test_hmap_default c269246882039824bb5822e896c3e6e82ef8e1251b6b251f5af8ea9fb8d05067 Test_Fift_test_namespaces_default e6419619c51332fb5e8bf22043ef415db686c47fe24f03061e5ad831014e7c6c +Test_Fift_test_rist255_default f4d7558f200a656934f986145c19b1dedbe2ad029292a5a975576d6891e25fc4 Test_Fift_test_sort2_default 9b57d47e6a10e7d1bbb565db35400debf2f963031f434742a702ec76555a5d3a Test_Fift_test_sort_default 9b57d47e6a10e7d1bbb565db35400debf2f963031f434742a702ec76555a5d3a +Test_Fift_test_tvm_runvm_default ff3d2a4031b543c18d6b555f0a1f1a891c7825e6d1e2e9beb4bf13b37441450b Test_Fift_testvm2_default 8a6e35fc0224398be9d2de39d31c86ea96965ef1eca2aa9e0af2303150ed4a7b Test_Fift_testvm3_default 3c1b77471c5fd914ed8b5f528b9faed618e278693f5030b953ff150e543864ae Test_Fift_testvm4_default 8a6e35fc0224398be9d2de39d31c86ea96965ef1eca2aa9e0af2303150ed4a7b diff --git a/third-party/blst b/third-party/blst new file mode 160000 index 00000000..e9dfc5ee --- /dev/null +++ b/third-party/blst @@ -0,0 +1 @@ +Subproject commit e9dfc5ee724b5b25d50a3b6226bee8c2c9d5e65d diff --git a/tonlib/CMakeLists.txt b/tonlib/CMakeLists.txt index ae5bbe86..72c59c4d 100644 --- a/tonlib/CMakeLists.txt +++ b/tonlib/CMakeLists.txt @@ -62,7 +62,7 @@ target_include_directories(tonlib PUBLIC $/.. $ ) -target_link_libraries(tonlib PRIVATE tdactor adnllite tl_lite_api tl-lite-utils ton_crypto ton_block lite-client-common smc-envelope emulator_static) +target_link_libraries(tonlib PRIVATE tdactor adnllite tl_lite_api tl-lite-utils ton_crypto ton_crypto_core ton_block lite-client-common smc-envelope emulator_static) target_link_libraries(tonlib PUBLIC tdutils tl_tonlib_api) if (TONLIB_ENABLE_JNI AND NOT ANDROID) # jni is available by default on Android @@ -133,7 +133,7 @@ if (NOT TON_USE_ABSEIL) if (WIN32) set(WINGETOPT_TARGET wingetopt) endif() -install(TARGETS tdnet keys crc32c tdactor adnllite tl_api tl-utils tl_lite_api tl-lite-utils ton_crypto ton_block smc-envelope ${WINGETOPT_TARGET} +install(TARGETS tdnet keys crc32c tdactor adnllite tl_api tl-utils tl_lite_api tl-lite-utils ton_crypto ton_crypto_core ton_block smc-envelope ${WINGETOPT_TARGET} tdutils tl_tonlib_api tonlib lite-client-common tddb_utils emulator_static Tonlib EXPORT Tonlib LIBRARY DESTINATION lib ARCHIVE DESTINATION lib diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index e29d0b08..cd1ad938 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -847,8 +847,9 @@ class Query { return td::Status::Error("estimate_fee: action_set_code unsupported"); case block::gen::OutAction::action_send_msg: { block::gen::OutAction::Record_action_send_msg act_rec; - // mode: +128 = attach all remaining balance, +64 = attach all remaining balance of the inbound message, +1 = pay message fees, +2 = skip if message cannot be sent - if (!tlb::unpack_exact(cs, act_rec) || (act_rec.mode & ~0xe3) || (act_rec.mode & 0xc0) == 0xc0) { + // mode: +128 = attach all remaining balance, +64 = attach all remaining balance of the inbound message, + // +1 = pay message fees, +2 = skip if message cannot be sent, +16 = bounce if action fails + if (!tlb::unpack_exact(cs, act_rec) || (act_rec.mode & ~0xf3) || (act_rec.mode & 0xc0) == 0xc0) { return td::Status::Error("estimate_fee: can't parse send_msg"); } block::gen::MessageRelaxed::Record msg; @@ -1874,12 +1875,12 @@ class RunEmulator : public td::actor::Actor { return; } - auto r_config = block::Config::extract_from_state(mc_state_root_, 0b11'11111111); + auto r_config = block::ConfigInfo::extract_config(mc_state_root_, 0b11'11111111); if (r_config.is_error()) { check(r_config.move_as_error()); return; } - std::unique_ptr config = r_config.move_as_ok(); + std::unique_ptr config = r_config.move_as_ok(); block::gen::ShardStateUnsplit::Record shard_state; if (!tlb::unpack_cell(mc_state_root_, shard_state)) { @@ -1904,7 +1905,13 @@ class RunEmulator : public td::actor::Actor { return; } + auto prev_blocks_info = config->get_prev_blocks_info(); + if (prev_blocks_info.is_error()) { + check(prev_blocks_info.move_as_error()); + return; + } emulator::TransactionEmulator trans_emulator(std::move(*config)); + trans_emulator.set_prev_blocks_info(prev_blocks_info.move_as_ok()); trans_emulator.set_libs(std::move(libraries)); trans_emulator.set_rand_seed(block_id_.rand_seed); td::Result emulation_result = trans_emulator.emulate_transactions_chain(std::move(account), std::move(transactions_)); diff --git a/utils/opcode-timing.cpp b/utils/opcode-timing.cpp index dc6ac75f..f50d7041 100644 --- a/utils/opcode-timing.cpp +++ b/utils/opcode-timing.cpp @@ -8,16 +8,22 @@ #include "common/bigint.hpp" #include "td/utils/base64.h" -#include "td/utils/tests.h" #include "td/utils/ScopeGuard.h" #include "td/utils/StringBuilder.h" +#include "td/utils/Timer.h" -td::Ref to_cell(const unsigned char *buff, int bits) { +td::Ref to_cell(td::Slice s) { + if (s.size() >= 4 && s.substr(0, 4) == "boc:") { + s.remove_prefix(4); + auto boc = td::base64_decode(s).move_as_ok(); + return vm::std_boc_deserialize(boc).move_as_ok(); + } + unsigned char buff[128]; + const int bits = (int)td::bitstring::parse_bitstring_hex_literal(buff, sizeof(buff), s.begin(), s.end()); + CHECK(bits >= 0); return vm::CellBuilder().store_bits(buff, bits, 0).finalize(); } -long double timingBaseline; - typedef struct { long double mean; long double stddev; @@ -56,56 +62,60 @@ typedef struct { bool errored; } runtimeStats; -runInfo time_run_vm(td::Slice command) { - unsigned char buff[128]; - const int bits = (int)td::bitstring::parse_bitstring_hex_literal(buff, sizeof(buff), command.begin(), command.end()); - CHECK(bits >= 0); - - const auto cell = to_cell(buff, bits); - +vm::Stack prepare_stack(td::Slice command) { + const auto cell = to_cell(command); vm::init_op_cp0(); vm::DictionaryBase::get_empty_dictionary(); - - class Logger : public td::LogInterface { - public: - void append(td::CSlice slice) override { - res.append(slice.data(), slice.size()); - } - std::string res; - }; - static Logger logger; - logger.res = ""; - td::set_log_fatal_error_callback([](td::CSlice message) { td::default_log_interface->append(logger.res); }); - vm::VmLog log{&logger, td::LogOptions::plain()}; - log.log_options.level = 4; - log.log_options.fix_newlines = true; - log.log_mask |= vm::VmLog::DumpStack; - vm::Stack stack; try { - vm::GasLimits gas_limit(10000, 10000); - - std::clock_t cStart = std::clock(); + vm::GasLimits gas_limit; int ret = vm::run_vm_code(vm::load_cell_slice_ref(cell), stack, 0 /*flags*/, nullptr /*data*/, - std::move(log) /*VmLog*/, nullptr, &gas_limit); + vm::VmLog{}, nullptr, &gas_limit, {}, {}, nullptr, 4); + CHECK(ret == 0); + } catch (...) { + LOG(FATAL) << "catch unhandled exception"; + } + return stack; +} + +runInfo time_run_vm(td::Slice command, td::Ref stack) { + const auto cell = to_cell(command); + vm::init_op_cp0(); + vm::DictionaryBase::get_empty_dictionary(); + CHECK(stack.is_unique()); + try { + vm::GasLimits gas_limit; + vm::VmState vm{vm::load_cell_slice_ref(cell), std::move(stack), gas_limit, 0, {}, vm::VmLog{}, {}, {}}; + vm.set_global_version(4); + std::clock_t cStart = std::clock(); + int ret = ~vm.run(); std::clock_t cEnd = std::clock(); - const auto time = (1000.0 * static_cast(cEnd - cStart) / CLOCKS_PER_SEC) - timingBaseline; - return {time >= 0 ? time : 0, gas_limit.gas_consumed(), ret}; + const auto time = (1000.0 * static_cast(cEnd - cStart) / CLOCKS_PER_SEC); + return {time >= 0 ? time : 0, vm.gas_consumed(), ret}; } catch (...) { LOG(FATAL) << "catch unhandled exception"; return {-1, -1, 1}; } } -runtimeStats averageRuntime(td::Slice command) { - const size_t samples = 5000; +runtimeStats averageRuntime(td::Slice command, const vm::Stack& stack) { + size_t samples = 100000; runInfo total; std::vector values; values.reserve(samples); - for(size_t i=0; i(true, stack)); + const auto value_code = time_run_vm(command, td::Ref(true, stack)); + runInfo value{value_code.runtime - value_empty.runtime, value_code.gasUsage - value_empty.gasUsage, + value_code.vmReturnCode}; values.push_back(value); total += value; + if (t0.elapsed() > 2.0 && i + 1 >= 20) { + samples = i + 1; + values.resize(samples); + break; + } } const auto runtimeMean = total.runtime / static_cast(samples); const auto gasMean = static_cast(total.gasUsage) / static_cast(samples); @@ -120,42 +130,39 @@ runtimeStats averageRuntime(td::Slice command) { errored = errored || value.errored(); } return { - {runtimeMean, sqrt(runtimeDiffSum / static_cast(samples))}, - {gasMean, sqrt(gasDiffSum / static_cast(samples))}, + {runtimeMean, sqrtl(runtimeDiffSum / static_cast(samples))}, + {gasMean, sqrtl(gasDiffSum / static_cast(samples))}, errored }; } runtimeStats timeInstruction(const std::string& setupCode, const std::string& toMeasure) { - const auto setupCodeTime = averageRuntime(setupCode); - const auto totalCodeTime = averageRuntime(setupCode + toMeasure); - return { - {totalCodeTime.runtime.mean - setupCodeTime.runtime.mean, totalCodeTime.runtime.stddev}, - {totalCodeTime.gasUsage.mean - setupCodeTime.gasUsage.mean, totalCodeTime.gasUsage.stddev}, - false - }; + vm::Stack stack = prepare_stack(setupCode); + return averageRuntime(toMeasure, stack); } int main(int argc, char** argv) { + SET_VERBOSITY_LEVEL(verbosity_ERROR); if(argc != 2 && argc != 3) { std::cerr << "This utility compares the timing of VM execution against the gas used.\n" "It can be used to discover opcodes or opcode sequences that consume an " "inordinate amount of computational resources relative to their gas cost.\n" "\n" - "The utility expects two command line arguments, each a hex string: \n" + "The utility expects two command line arguments: \n" "The TVM code used to set up the stack and VM state followed by the TVM code to measure.\n" "For example, to test the DIVMODC opcode:\n" "\t$ " << argv[0] << " 80FF801C A90E 2>/dev/null\n" "\tOPCODE,runtime mean,runtime stddev,gas mean,gas stddev\n" "\tA90E,0.0066416,0.00233496,26,0\n" "\n" - "Usage: " << argv[0] << - " [TVM_SETUP_BYTECODE_HEX] TVM_BYTECODE_HEX" << std::endl << std::endl; + "Usage: " << argv[0] << " [TVM_SETUP_BYTECODE] TVM_BYTECODE\n" + "\tBYTECODE is either:\n" + "\t1. hex-encoded string (e.g. A90E for DIVMODC)\n" + "\t2. boc: (e.g. boc:te6ccgEBAgEABwABAogBAAJ7)" << std::endl << std::endl; return 1; } - std::cout << "OPCODE,runtime mean,runtime stddev,gas mean,gas stddev" << std::endl; - timingBaseline = averageRuntime("").runtime.mean; + std::cout << "OPCODE,runtime mean,runtime stddev,gas mean,gas stddev,error" << std::endl; std::string setup, code; if(argc == 2) { setup = ""; @@ -165,7 +172,7 @@ int main(int argc, char** argv) { code = argv[2]; } const auto time = timeInstruction(setup, code); - std::cout << code << "," << time.runtime.mean << "," << time.runtime.stddev << "," << - time.gasUsage.mean << "," << time.gasUsage.stddev << std::endl; + std::cout << std::fixed << std::setprecision(9) << code << "," << time.runtime.mean << "," << time.runtime.stddev + << "," << time.gasUsage.mean << "," << time.gasUsage.stddev << "," << (int)time.errored << std::endl; return 0; } diff --git a/validator/impl/collator-impl.h b/validator/impl/collator-impl.h index 7b136953..93cab81a 100644 --- a/validator/impl/collator-impl.h +++ b/validator/impl/collator-impl.h @@ -32,6 +32,7 @@ #include "vm/cells/MerkleUpdate.h" #include #include +#include "common/global-version.h" namespace ton { @@ -40,7 +41,7 @@ using td::Ref; class Collator final : public td::actor::Actor { static constexpr int supported_version() { - return 3; + return SUPPORTED_VERSION; } static constexpr long long supported_capabilities() { return ton::capCreateStatsEnabled | ton::capBounceMsgBody | ton::capReportVersion | ton::capShortDequeue; diff --git a/validator/impl/collator.cpp b/validator/impl/collator.cpp index db86cef1..54941f21 100644 --- a/validator/impl/collator.cpp +++ b/validator/impl/collator.cpp @@ -530,6 +530,7 @@ bool Collator::unpack_last_mc_state() { mc_state_root, block::ConfigInfo::needShardHashes | block::ConfigInfo::needLibraries | block::ConfigInfo::needValidatorSet | block::ConfigInfo::needWorkchainInfo | block::ConfigInfo::needCapabilities | + block::ConfigInfo::needPrevBlocks | (is_masterchain() ? block::ConfigInfo::needAccountsRoot | block::ConfigInfo::needSpecialSmc : 0)); if (res.is_error()) { td::Status err = res.move_as_error(); @@ -2288,7 +2289,8 @@ td::Result> Collator::impl_crea return td::Status::Error( -669, "cannot create action phase of a new transaction for smart contract "s + acc->addr.to_hex()); } - if (trans->bounce_enabled && (!trans->compute_phase->success || trans->action_phase->state_exceeds_limits) && + if (trans->bounce_enabled && + (!trans->compute_phase->success || trans->action_phase->state_exceeds_limits || trans->action_phase->bounce) && !trans->prepare_bounce_phase(*action_phase_cfg)) { return td::Status::Error( -669, "cannot create bounce phase of a new transaction for smart contract "s + acc->addr.to_hex()); diff --git a/validator/impl/liteserver.cpp b/validator/impl/liteserver.cpp index 69861ba3..1a4f8085 100644 --- a/validator/impl/liteserver.cpp +++ b/validator/impl/liteserver.cpp @@ -1192,6 +1192,7 @@ void LiteQuery::finish_getAccountState(td::BufferSlice shard_proof) { return; } auto rconfig = config.move_as_ok(); + rconfig->set_block_id_ext(mc_state_->get_block_id()); acc_state_promise_.set_value(std::make_tuple( std::move(acc_csr), sstate.gen_utime, sstate.gen_lt, std::move(rconfig) )); diff --git a/validator/impl/validate-query.cpp b/validator/impl/validate-query.cpp index 7a5934b4..41955897 100644 --- a/validator/impl/validate-query.cpp +++ b/validator/impl/validate-query.cpp @@ -679,7 +679,7 @@ bool ValidateQuery::try_unpack_mc_state() { mc_state_root_, block::ConfigInfo::needShardHashes | block::ConfigInfo::needLibraries | block::ConfigInfo::needValidatorSet | block::ConfigInfo::needWorkchainInfo | block::ConfigInfo::needStateExtraRoot | - block::ConfigInfo::needCapabilities | + block::ConfigInfo::needCapabilities | block::ConfigInfo::needPrevBlocks | (is_masterchain() ? block::ConfigInfo::needAccountsRoot | block::ConfigInfo::needSpecialSmc : 0)); if (res.is_error()) { return fatal_error(-666, "cannot extract configuration from reference masterchain state "s + mc_blkid_.to_str() + @@ -782,10 +782,20 @@ bool ValidateQuery::fetch_config_params() { storage_phase_cfg_.delete_due_limit)) { return fatal_error("cannot unpack current gas prices and limits from masterchain configuration"); } + storage_phase_cfg_.enable_due_payment = config_->get_global_version() >= 4; compute_phase_cfg_.block_rand_seed = rand_seed_; compute_phase_cfg_.libraries = std::make_unique(config_->get_libraries_root(), 256); compute_phase_cfg_.max_vm_data_depth = size_limits.max_vm_data_depth; compute_phase_cfg_.global_config = config_->get_root_cell(); + compute_phase_cfg_.global_version = config_->get_global_version(); + if (compute_phase_cfg_.global_version >= 4) { + auto prev_blocks_info = config_->get_prev_blocks_info(); + if (prev_blocks_info.is_error()) { + return fatal_error(prev_blocks_info.move_as_error_prefix( + "cannot fetch prev blocks info from masterchain configuration: ")); + } + compute_phase_cfg_.prev_blocks_info = prev_blocks_info.move_as_ok(); + } compute_phase_cfg_.suspended_addresses = config_->get_suspended_addresses(now_); } { @@ -808,6 +818,8 @@ bool ValidateQuery::fetch_config_params() { action_phase_cfg_.workchains = &config_->get_workchain_list(); action_phase_cfg_.bounce_msg_body = (config_->has_capability(ton::capBounceMsgBody) ? 256 : 0); action_phase_cfg_.size_limits = size_limits; + action_phase_cfg_.action_fine_enabled = config_->get_global_version() >= 4; + action_phase_cfg_.bounce_on_fail_enabled = config_->get_global_version() >= 4; action_phase_cfg_.mc_blackhole_addr = config_->get_burning_config().blackhole_addr; } { @@ -4507,7 +4519,8 @@ bool ValidateQuery::check_one_transaction(block::Account& account, ton::LogicalT return reject_query(PSTRING() << "cannot re-create action phase of transaction " << lt << " for smart contract " << addr.to_hex()); } - if (trs->bounce_enabled && (!trs->compute_phase->success || trs->action_phase->state_exceeds_limits) && + if (trs->bounce_enabled && + (!trs->compute_phase->success || trs->action_phase->state_exceeds_limits || trs->action_phase->bounce) && !trs->prepare_bounce_phase(action_phase_cfg_)) { return reject_query(PSTRING() << "cannot re-create bounce phase of transaction " << lt << " for smart contract " << addr.to_hex()); diff --git a/validator/impl/validate-query.hpp b/validator/impl/validate-query.hpp index 13a05ec4..7d15dcfe 100644 --- a/validator/impl/validate-query.hpp +++ b/validator/impl/validate-query.hpp @@ -28,6 +28,7 @@ #include #include #include +#include "common/global-version.h" namespace ton { @@ -108,7 +109,7 @@ inline ErrorCtxSet ErrorCtx::set_guard(std::vector str_list) { class ValidateQuery : public td::actor::Actor { static constexpr int supported_version() { - return 3; + return SUPPORTED_VERSION; } static constexpr long long supported_capabilities() { return ton::capCreateStatsEnabled | ton::capBounceMsgBody | ton::capReportVersion | ton::capShortDequeue; From 049ed0c73735d014572a6016f45afc1625b88524 Mon Sep 17 00:00:00 2001 From: neodiX42 Date: Thu, 25 May 2023 01:16:02 -0500 Subject: [PATCH 40/42] Update win-2019-compile.yml (#708) --- .github/workflows/win-2019-compile.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/win-2019-compile.yml b/.github/workflows/win-2019-compile.yml index 190c03e1..11ba7565 100644 --- a/.github/workflows/win-2019-compile.yml +++ b/.github/workflows/win-2019-compile.yml @@ -51,8 +51,8 @@ jobs: - name: Install pre-compiled OpenSSL Win64 run: | - curl -Lo openssl-1.1.1o.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-1.1.1o.zip - jar xf openssl-1.1.1o.zip + curl -Lo openssl-1.1.1j.zip https://github.com/neodiX42/precompiled-openssl-win64/raw/main/openssl-1.1.1j.zip + jar xf openssl-1.1.1j.zip - name: Install pre-compiled libmicrohttpd Win64 run: | @@ -72,7 +72,7 @@ jobs: echo %SODIUM_DIR% mkdir build cd build - cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1/x64/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1/x64/lib/libcrypto.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. + cmake -DCMAKE_BUILD_TYPE=Release -DSODIUM_USE_STATIC_LIBS=1 -DSECP256K1_INCLUDE_DIR=%root%\secp256k1\include -DSECP256K1_LIBRARY=%root%\secp256k1\bin\x64\Release\v142\static\secp256k1.lib -DREADLINE_INCLUDE_DIR=%root%\readline-5.0-1-lib\include\readline -DREADLINE_LIBRARY=%root%\readline-5.0-1-lib\lib\readline.lib -DPORTABLE=1 -DZLIB_FOUND=1 -DMHD_FOUND=1 -DMHD_LIBRARY=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static\libmicrohttpd.lib -DMHD_INCLUDE_DIR=%root%\libmicrohttpd-0.9.75-w32-bin\x86_64\VS2019\Release-static -DZLIB_INCLUDE_DIR=%root%\zlib -DZLIB_LIBRARY=%root%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=%root%/openssl-1.1.1j/include -DOPENSSL_CRYPTO_LIBRARY=%root%/openssl-1.1.1j/lib/libcrypto_static.lib -DCMAKE_CXX_FLAGS="/DTD_WINDOWS=1 /EHsc /bigobj /W0" .. cmake --build . --target storage-daemon storage-daemon-cli blockchain-explorer fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator --config Release - name: Show executables From 6b941dcceb287f12100215095e3f7cfcc3ddebb8 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Sat, 27 May 2023 21:22:31 +0300 Subject: [PATCH 41/42] Fix returning config from LS, add extra c7 elements in getmethods (#713) Co-authored-by: SpyCheese --- crypto/smc-envelope/SmartContract.cpp | 49 ++++++++++++++++----------- crypto/smc-envelope/SmartContract.h | 11 +++++- emulator/emulator-extern.cpp | 27 +++++++++++++++ emulator/emulator-extern.h | 8 +++++ emulator/emulator_export_list | 1 + emulator/tvm-emulator.hpp | 4 +++ tonlib/tonlib/LastConfig.cpp | 6 ++-- tonlib/tonlib/LastConfig.h | 1 + tonlib/tonlib/TonlibClient.cpp | 11 ++++-- validator/impl/liteserver.cpp | 25 ++++++++++---- 10 files changed, 111 insertions(+), 32 deletions(-) diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 4103096c..8e95670a 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -120,7 +120,7 @@ td::Ref prepare_vm_stack(td::RefInt256 amount, td::Ref return stack_ref; } -td::Ref prepare_vm_c7(SmartContract::Args args) { +td::Ref prepare_vm_c7(SmartContract::Args args, td::Ref code) { td::BitArray<256> rand_seed; if (args.rand_seed) { rand_seed = args.rand_seed.unwrap(); @@ -139,10 +139,7 @@ td::Ref prepare_vm_c7(SmartContract::Args args) { if (args.address) { td::BigInt256 dest_addr; dest_addr.import_bits((*args.address).addr.as_bitslice()); - cb.store_ones(1) - .store_zeroes(2) - .store_long((*args.address).workchain, 8) - .store_int256(dest_addr, 256); + cb.store_ones(1).store_zeroes(2).store_long((*args.address).workchain, 8).store_int256(dest_addr, 256); } auto address = cb.finalize(); auto config = td::Ref(); @@ -151,20 +148,32 @@ td::Ref prepare_vm_c7(SmartContract::Args args) { config = (*args.config)->get_root_cell(); } - auto tuple = vm::make_tuple_ref( - td::make_refint(0x076ef1ea), // [ magic:0x076ef1ea - td::make_refint(0), // actions:Integer - td::make_refint(0), // msgs_sent:Integer - td::make_refint(now), // unixtime:Integer - td::make_refint(0), //TODO: // block_lt:Integer - td::make_refint(0), //TODO: // trans_lt:Integer - std::move(rand_seed_int), // rand_seed:Integer - block::CurrencyCollection(args.balance).as_vm_tuple(), // balance_remaining:[Integer (Maybe Cell)] - vm::load_cell_slice_ref(address), // myself:MsgAddressInt - vm::StackEntry::maybe(config) //vm::StackEntry::maybe(td::Ref()) - ); // global_config:(Maybe Cell) ] = SmartContractInfo; + std::vector tuple = { + td::make_refint(0x076ef1ea), // [ magic:0x076ef1ea + td::make_refint(0), // actions:Integer + td::make_refint(0), // msgs_sent:Integer + td::make_refint(now), // unixtime:Integer + td::make_refint(0), //TODO: // block_lt:Integer + td::make_refint(0), //TODO: // trans_lt:Integer + std::move(rand_seed_int), // rand_seed:Integer + block::CurrencyCollection(args.balance).as_vm_tuple(), // balance_remaining:[Integer (Maybe Cell)] + vm::load_cell_slice_ref(address), // myself:MsgAddressInt + vm::StackEntry::maybe(config) //vm::StackEntry::maybe(td::Ref()) + }; + if (args.config && args.config.value()->get_global_version() >= 4) { + tuple.push_back(code.not_null() ? code : vm::StackEntry{}); // code:Cell + tuple.push_back(block::CurrencyCollection::zero().as_vm_tuple()); // in_msg_value:[Integer (Maybe Cell)] + tuple.push_back(td::zero_refint()); // storage_fees:Integer + + // See crypto/block/mc-config.cpp#2115 (get_prev_blocks_info) + // [ wc:Integer shard:Integer seqno:Integer root_hash:Integer file_hash:Integer] = BlockId; + // [ last_mc_blocks:[BlockId...] + // prev_key_block:BlockId ] : PrevBlocksInfo + tuple.push_back(args.prev_blocks_info ? args.prev_blocks_info.value() : vm::StackEntry{}); // prev_block_info + } + auto tuple_ref = td::make_cnt_ref>(std::move(tuple)); //LOG(DEBUG) << "SmartContractInfo initialized with " << vm::StackEntry(tuple).to_string(); - return vm::make_tuple_ref(std::move(tuple)); + return vm::make_tuple_ref(std::move(tuple_ref)); } SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref stack, td::Ref c7, @@ -282,7 +291,7 @@ td::Ref SmartContract::get_init_state() const { SmartContract::Answer SmartContract::run_method(Args args) { if (!args.c7) { - args.c7 = prepare_vm_c7(args); + args.c7 = prepare_vm_c7(args, state_.code); } if (!args.limits) { bool is_internal = args.get_method_id().ok() == 0; @@ -302,7 +311,7 @@ SmartContract::Answer SmartContract::run_method(Args args) { SmartContract::Answer SmartContract::run_get_method(Args args) const { if (!args.c7) { - args.c7 = prepare_vm_c7(args); + args.c7 = prepare_vm_c7(args, state_.code); } if (!args.limits) { args.limits = vm::GasLimits{1000000, 1000000}; diff --git a/crypto/smc-envelope/SmartContract.h b/crypto/smc-envelope/SmartContract.h index ce349de3..dd299220 100644 --- a/crypto/smc-envelope/SmartContract.h +++ b/crypto/smc-envelope/SmartContract.h @@ -70,6 +70,7 @@ class SmartContract : public td::CntObject { td::optional address; td::optional> config; td::optional libraries; + td::optional> prev_blocks_info; Args() { } @@ -124,7 +125,7 @@ class SmartContract : public td::CntObject { this->address = address; return std::move(*this); } - Args&& set_config(std::shared_ptr& config) { + Args&& set_config(const std::shared_ptr& config) { this->config = config; return std::move(*this); } @@ -132,6 +133,14 @@ class SmartContract : public td::CntObject { this->libraries = libraries; return std::move(*this); } + Args&& set_prev_blocks_info(td::Ref tuple) { + if (tuple.is_null()) { + this->prev_blocks_info = {}; + } else { + this->prev_blocks_info = std::move(tuple); + } + return std::move(*this); + } Args&& set_vm_verbosity_level(int vm_log_verbosity_level) { this->vm_log_verbosity_level = vm_log_verbosity_level; return std::move(*this); diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 0ffc316a..971cdcdb 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -448,6 +448,33 @@ bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixt return true; } +bool tvm_emulator_set_prev_blocks_info(void *tvm_emulator, const char* info_boc) { + auto emulator = static_cast(tvm_emulator); + + if (info_boc != nullptr) { + auto info_cell = boc_b64_to_cell(info_boc); + if (info_cell.is_error()) { + LOG(ERROR) << "Can't deserialize previous blocks boc: " << info_cell.move_as_error(); + return false; + } + vm::StackEntry info_value; + if (!info_value.deserialize(info_cell.move_as_ok())) { + LOG(ERROR) << "Can't deserialize previous blocks tuple"; + return false; + } + if (info_value.is_null()) { + emulator->set_prev_blocks_info({}); + } else if (info_value.is_tuple()) { + emulator->set_prev_blocks_info(info_value.as_tuple()); + } else { + LOG(ERROR) << "Can't set previous blocks tuple: not a tuple"; + return false; + } + } + + return true; +} + bool tvm_emulator_set_gas_limit(void *tvm_emulator, int64_t gas_limit) { auto emulator = static_cast(tvm_emulator); emulator->set_gas_limit(gas_limit); diff --git a/emulator/emulator-extern.h b/emulator/emulator-extern.h index 4409608f..ce920f98 100644 --- a/emulator/emulator-extern.h +++ b/emulator/emulator-extern.h @@ -167,6 +167,14 @@ EMULATOR_EXPORT bool tvm_emulator_set_libraries(void *tvm_emulator, const char * */ EMULATOR_EXPORT bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixtime, uint64_t balance, const char *rand_seed_hex, const char *config); +/** + * @brief Set tuple of previous blocks (13th element of c7) + * @param tvm_emulator Pointer to TVM emulator + * @param info_boc Base64 encoded BoC serialized TVM tuple (VmStackValue). + * @return true in case of success, false in case of error + */ +EMULATOR_EXPORT bool tvm_emulator_set_prev_blocks_info(void *tvm_emulator, const char* info_boc); + /** * @brief Set TVM gas limit * @param tvm_emulator Pointer to TVM emulator diff --git a/emulator/emulator_export_list b/emulator/emulator_export_list index acd79df8..e70166e7 100644 --- a/emulator/emulator_export_list +++ b/emulator/emulator_export_list @@ -14,6 +14,7 @@ _emulator_set_verbosity_level _tvm_emulator_create _tvm_emulator_set_libraries _tvm_emulator_set_c7 +_tvm_emulator_set_prev_blocks_info _tvm_emulator_set_gas_limit _tvm_emulator_set_debug_enabled _tvm_emulator_run_get_method diff --git a/emulator/tvm-emulator.hpp b/emulator/tvm-emulator.hpp index 46e2538d..dafa2a5f 100644 --- a/emulator/tvm-emulator.hpp +++ b/emulator/tvm-emulator.hpp @@ -33,6 +33,10 @@ public: } } + void set_prev_blocks_info(td::Ref tuple) { + args_.set_prev_blocks_info(std::move(tuple)); + } + void set_debug_enabled(bool debug_enabled) { args_.set_debug_enabled(debug_enabled); } diff --git a/tonlib/tonlib/LastConfig.cpp b/tonlib/tonlib/LastConfig.cpp index 960d5994..bcc3c081 100644 --- a/tonlib/tonlib/LastConfig.cpp +++ b/tonlib/tonlib/LastConfig.cpp @@ -62,7 +62,8 @@ void LastConfig::with_last_block(td::Result r_last_block) { } auto last_block = r_last_block.move_as_ok(); - client_.send_query(ton::lite_api::liteServer_getConfigAll(0, create_tl_lite_block_id(last_block.last_block_id)), + client_.send_query(ton::lite_api::liteServer_getConfigAll(block::ConfigInfo::needPrevBlocks, + create_tl_lite_block_id(last_block.last_block_id)), [this](auto r_config) { this->on_config(std::move(r_config)); }); } @@ -92,7 +93,7 @@ td::Status LastConfig::process_config_proof(ton::ton_api::object_ptrstate_proof_.as_slice(), raw_config->config_proof_.as_slice())); - TRY_RESULT(config, block::Config::extract_from_state(std::move(state), 0)); + TRY_RESULT(config, block::ConfigInfo::extract_config(std::move(state), block::ConfigInfo::needPrevBlocks)); for (auto i : params_) { VLOG(last_config) << "ConfigParam(" << i << ") = "; @@ -109,6 +110,7 @@ td::Status LastConfig::process_config_proof(ton::ton_api::object_ptrget_prev_blocks_info()); state_.config.reset(config.release()); return td::Status::OK(); } diff --git a/tonlib/tonlib/LastConfig.h b/tonlib/tonlib/LastConfig.h index 514b4a59..901733dc 100644 --- a/tonlib/tonlib/LastConfig.h +++ b/tonlib/tonlib/LastConfig.h @@ -30,6 +30,7 @@ namespace tonlib { struct LastConfigState { std::shared_ptr config; + td::Ref prev_blocks_info; }; td::StringBuilder& operator<<(td::StringBuilder& sb, const LastConfigState& state); diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index cd1ad938..b49587c5 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -890,8 +890,10 @@ class Query { } return res; } - td::Result>> estimate_fees(bool ignore_chksig, std::shared_ptr& cfg, vm::Dictionary& libraries) { + td::Result>> estimate_fees(bool ignore_chksig, const LastConfigState& state, + vm::Dictionary& libraries) { // gas fees + const auto& cfg = state.config; bool is_masterchain = raw_.source->get_address().workchain == ton::masterchainId; TRY_RESULT(gas_limits_prices, cfg->get_gas_limits_prices(is_masterchain)); TRY_RESULT(storage_prices, cfg->get_storage_prices()); @@ -919,7 +921,9 @@ class Query { .set_now(raw_.source->get_sync_time()) .set_ignore_chksig(ignore_chksig) .set_address(raw_.source->get_address()) - .set_config(cfg).set_libraries(libraries)); + .set_config(cfg) + .set_prev_blocks_info(state.prev_blocks_info) + .set_libraries(libraries)); td::int64 fwd_fee = 0; if (res.success) { LOG(DEBUG) << "output actions:\n" @@ -4109,7 +4113,7 @@ void TonlibClient::query_estimate_fees(td::int64 id, bool ignore_chksig, td::Res return; } TRY_RESULT_PROMISE(promise, state, std::move(r_state)); - TRY_RESULT_PROMISE_PREFIX(promise, fees, TRY_VM(it->second->estimate_fees(ignore_chksig, state.config, libraries)), + TRY_RESULT_PROMISE_PREFIX(promise, fees, TRY_VM(it->second->estimate_fees(ignore_chksig, state, libraries)), TonlibError::Internal()); promise.set_value(tonlib_api::make_object( fees.first.to_tonlib_api(), td::transform(fees.second, [](auto& x) { return x.to_tonlib_api(); }))); @@ -4474,6 +4478,7 @@ td::Status TonlibClient::do_request(const tonlib_api::smc_runGetMethod& request, ](td::Result r_state) mutable { TRY_RESULT_PROMISE(promise, state, std::move(r_state)); args.set_config(state.config); + args.set_prev_blocks_info(state.prev_blocks_info); auto code = smc->get_state().code; if (code.not_null()) { diff --git a/validator/impl/liteserver.cpp b/validator/impl/liteserver.cpp index 1a4f8085..9c7a0456 100644 --- a/validator/impl/liteserver.cpp +++ b/validator/impl/liteserver.cpp @@ -1688,13 +1688,23 @@ void LiteQuery::continue_getConfigParams(int mode, std::vector param_list) } } - auto res = keyblk ? block::Config::extract_from_key_block(mpb.root(), mode) - : block::Config::extract_from_state(mpb.root(), mode); - if (res.is_error()) { - fatal_error(res.move_as_error()); - return; + std::unique_ptr cfg; + if (keyblk || !(mode & block::ConfigInfo::needPrevBlocks)) { + auto res = keyblk ? block::Config::extract_from_key_block(mpb.root(), mode) + : block::Config::extract_from_state(mpb.root(), mode); + if (res.is_error()) { + fatal_error(res.move_as_error()); + return; + } + cfg = res.move_as_ok(); + } else { + auto res = block::ConfigInfo::extract_config(mpb.root(), mode); + if (res.is_error()) { + fatal_error(res.move_as_error()); + return; + } + cfg = res.move_as_ok(); } - auto cfg = res.move_as_ok(); if (!cfg) { fatal_error("cannot extract configuration from last mc state"); return; @@ -1707,6 +1717,9 @@ void LiteQuery::continue_getConfigParams(int mode, std::vector param_list) visit(cfg->get_config_param(i)); } } + if (!keyblk && mode & block::ConfigInfo::needPrevBlocks) { + ((block::ConfigInfo*)cfg.get())->get_prev_blocks_info(); + } } catch (vm::VmError& err) { fatal_error("error while traversing required configuration parameters: "s + err.get_msg()); return; From 961d870ece87aa4e7df328080dd54811a826fcc8 Mon Sep 17 00:00:00 2001 From: EmelyanenkoK Date: Mon, 29 May 2023 11:27:54 +0300 Subject: [PATCH 42/42] Patch getmethod for tvm upgrade (#714) * Fix TVM version in emulator * Add prev_blocks_info to emulator-emscripten.cpp --------- Co-authored-by: SpyCheese --- crypto/smc-envelope/SmartContract.cpp | 17 ++++++++++++++--- emulator/emulator-emscripten.cpp | 16 ++++++++++++---- emulator/emulator-extern.cpp | 4 +++- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/crypto/smc-envelope/SmartContract.cpp b/crypto/smc-envelope/SmartContract.cpp index 8e95670a..7dbb65e7 100644 --- a/crypto/smc-envelope/SmartContract.cpp +++ b/crypto/smc-envelope/SmartContract.cpp @@ -177,7 +177,9 @@ td::Ref prepare_vm_c7(SmartContract::Args args, td::Ref cod } SmartContract::Answer run_smartcont(SmartContract::State state, td::Ref stack, td::Ref c7, - vm::GasLimits gas, bool ignore_chksig, td::Ref libraries, int vm_log_verbosity, bool debug_enabled) { + vm::GasLimits gas, bool ignore_chksig, td::Ref libraries, + int vm_log_verbosity, bool debug_enabled, + std::shared_ptr config) { auto gas_credit = gas.gas_credit; vm::init_op_cp0(debug_enabled); vm::DictionaryBase::get_empty_dictionary(); @@ -216,6 +218,13 @@ SmartContract::Answer run_smartcont(SmartContract::State state, td::Refget_global_version()); + auto r_limits = config->get_size_limits_config(); + if (r_limits.is_ok()) { + vm.set_max_data_depth(r_limits.ok().max_vm_data_depth); + } + } try { res.code = ~vm.run(); } catch (...) { @@ -304,7 +313,8 @@ SmartContract::Answer SmartContract::run_method(Args args) { args.stack.value().write().push_smallint(args.method_id.unwrap()); auto res = run_smartcont(get_state(), args.stack.unwrap(), args.c7.unwrap(), args.limits.unwrap(), args.ignore_chksig, - args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, args.vm_log_verbosity_level, args.debug_enabled); + args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, + args.vm_log_verbosity_level, args.debug_enabled, args.config ? args.config.value() : nullptr); state_ = res.new_state; return res; } @@ -322,7 +332,8 @@ SmartContract::Answer SmartContract::run_get_method(Args args) const { CHECK(args.method_id); args.stack.value().write().push_smallint(args.method_id.unwrap()); return run_smartcont(get_state(), args.stack.unwrap(), args.c7.unwrap(), args.limits.unwrap(), args.ignore_chksig, - args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, args.vm_log_verbosity_level, args.debug_enabled); + args.libraries ? args.libraries.unwrap().get_root_cell() : td::Ref{}, + args.vm_log_verbosity_level, args.debug_enabled, args.config ? args.config.value() : nullptr); } SmartContract::Answer SmartContract::run_get_method(td::Slice method, Args args) const { diff --git a/emulator/emulator-emscripten.cpp b/emulator/emulator-emscripten.cpp index 66e97f35..dbd1c0d5 100644 --- a/emulator/emulator-emscripten.cpp +++ b/emulator/emulator-emscripten.cpp @@ -61,6 +61,7 @@ struct GetMethodParams { std::string data; int verbosity; td::optional libs; + td::optional prev_blocks_info; std::string address; uint32_t unixtime; uint64_t balance; @@ -91,6 +92,11 @@ td::Result decode_get_method_params(const char* json) { params.libs = libs; } + TRY_RESULT(prev_blocks_info, td::get_json_object_string_field(obj, "prev_blocks_info", true)); + if (prev_blocks_info.size() > 0) { + params.prev_blocks_info = prev_blocks_info; + } + TRY_RESULT(address, td::get_json_object_string_field(obj, "address", false)); params.address = address; @@ -187,12 +193,14 @@ const char *run_get_method(const char *params, const char* stack, const char* co auto tvm = tvm_emulator_create(decoded_params.code.c_str(), decoded_params.data.c_str(), decoded_params.verbosity); if ((decoded_params.libs && !tvm_emulator_set_libraries(tvm, decoded_params.libs.value().c_str())) || - !tvm_emulator_set_c7(tvm, decoded_params.address.c_str(), decoded_params.unixtime, - decoded_params.balance, decoded_params.rand_seed_hex.c_str(), config) || + !tvm_emulator_set_c7(tvm, decoded_params.address.c_str(), decoded_params.unixtime, decoded_params.balance, + decoded_params.rand_seed_hex.c_str(), config) || + (decoded_params.prev_blocks_info && + !tvm_emulator_set_prev_blocks_info(tvm, decoded_params.prev_blocks_info.value().c_str())) || (decoded_params.gas_limit > 0 && !tvm_emulator_set_gas_limit(tvm, decoded_params.gas_limit)) || !tvm_emulator_set_debug_enabled(tvm, decoded_params.debug_enabled)) { - tvm_emulator_destroy(tvm); - return strdup(R"({"fail":true,"message":"Can't set params"})"); + tvm_emulator_destroy(tvm); + return strdup(R"({"fail":true,"message":"Can't set params"})"); } auto res = tvm_emulator_run_get_method(tvm, decoded_params.method_id, stack); diff --git a/emulator/emulator-extern.cpp b/emulator/emulator-extern.cpp index 971cdcdb..885286d5 100644 --- a/emulator/emulator-extern.cpp +++ b/emulator/emulator-extern.cpp @@ -422,7 +422,9 @@ bool tvm_emulator_set_c7(void *tvm_emulator, const char *address, uint32_t unixt LOG(ERROR) << "Can't deserialize config params boc: " << config_params_cell.move_as_error(); return false; } - global_config = std::make_shared(config_params_cell.move_as_ok(), td::Bits256::zero(), block::Config::needWorkchainInfo | block::Config::needSpecialSmc); + global_config = std::make_shared( + config_params_cell.move_as_ok(), td::Bits256::zero(), + block::Config::needWorkchainInfo | block::Config::needSpecialSmc | block::Config::needCapabilities); auto unpack_res = global_config->unpack(); if (unpack_res.is_error()) { LOG(ERROR) << "Can't unpack config params";

    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�l$Be!B+!LA>WTLmxOvvJ2T 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 T7+T1-icz>o%k*}Q$A0}U6fX+) literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.la b/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.la new file mode 100644 index 00000000..1a9c26bf --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.la @@ -0,0 +1,41 @@ +# libsodium.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libsodium.so' + +# Names of this library. +library_names='libsodium.so' + +# The name of the static archive. +old_library='libsodium.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' -pthread' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libsodium. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-i686/lib' diff --git a/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.so b/example/android/third_party/libsodium/libsodium-android-i686/lib/libsodium.so new file mode 100644 index 0000000000000000000000000000000000000000..1bb074974862187dd8b4f0f482fb82fc84023898 GIT binary patch literal 454172 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ℓ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 E2WY3?i2wiq literal 0 HcmV?d00001 diff --git a/example/android/third_party/libsodium/libsodium-android-i686/lib/pkgconfig/libsodium.pc b/example/android/third_party/libsodium/libsodium-android-i686/lib/pkgconfig/libsodium.pc new file mode 100644 index 00000000..0bed9f77 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-i686/lib/pkgconfig/libsodium.pc @@ -0,0 +1,12 @@ +prefix=/home/alex/magnet/example/android/third_party/libsodium/libsodium-1.0.18/libsodium-android-i686 +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libsodium +Version: 1.0.18 +Description: A modern and easy-to-use crypto library + +Libs: -L${libdir} -lsodium +Libs.private: -pthread +Cflags: -I${includedir} diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium.h new file mode 100644 index 00000000..295f911c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium.h @@ -0,0 +1,69 @@ + +#ifndef sodium_H +#define sodium_H + +#include "sodium/version.h" + +#include "sodium/core.h" +#include "sodium/crypto_aead_aes256gcm.h" +#include "sodium/crypto_aead_chacha20poly1305.h" +#include "sodium/crypto_aead_xchacha20poly1305.h" +#include "sodium/crypto_auth.h" +#include "sodium/crypto_auth_hmacsha256.h" +#include "sodium/crypto_auth_hmacsha512.h" +#include "sodium/crypto_auth_hmacsha512256.h" +#include "sodium/crypto_box.h" +#include "sodium/crypto_box_curve25519xsalsa20poly1305.h" +#include "sodium/crypto_core_hsalsa20.h" +#include "sodium/crypto_core_hchacha20.h" +#include "sodium/crypto_core_salsa20.h" +#include "sodium/crypto_core_salsa2012.h" +#include "sodium/crypto_core_salsa208.h" +#include "sodium/crypto_generichash.h" +#include "sodium/crypto_generichash_blake2b.h" +#include "sodium/crypto_hash.h" +#include "sodium/crypto_hash_sha256.h" +#include "sodium/crypto_hash_sha512.h" +#include "sodium/crypto_kdf.h" +#include "sodium/crypto_kdf_blake2b.h" +#include "sodium/crypto_kx.h" +#include "sodium/crypto_onetimeauth.h" +#include "sodium/crypto_onetimeauth_poly1305.h" +#include "sodium/crypto_pwhash.h" +#include "sodium/crypto_pwhash_argon2i.h" +#include "sodium/crypto_scalarmult.h" +#include "sodium/crypto_scalarmult_curve25519.h" +#include "sodium/crypto_secretbox.h" +#include "sodium/crypto_secretbox_xsalsa20poly1305.h" +#include "sodium/crypto_secretstream_xchacha20poly1305.h" +#include "sodium/crypto_shorthash.h" +#include "sodium/crypto_shorthash_siphash24.h" +#include "sodium/crypto_sign.h" +#include "sodium/crypto_sign_ed25519.h" +#include "sodium/crypto_stream.h" +#include "sodium/crypto_stream_chacha20.h" +#include "sodium/crypto_stream_salsa20.h" +#include "sodium/crypto_stream_xsalsa20.h" +#include "sodium/crypto_verify_16.h" +#include "sodium/crypto_verify_32.h" +#include "sodium/crypto_verify_64.h" +#include "sodium/randombytes.h" +#include "sodium/randombytes_internal_random.h" +#include "sodium/randombytes_sysrandom.h" +#include "sodium/runtime.h" +#include "sodium/utils.h" + +#ifndef SODIUM_LIBRARY_MINIMAL +# include "sodium/crypto_box_curve25519xchacha20poly1305.h" +# include "sodium/crypto_core_ed25519.h" +# include "sodium/crypto_core_ristretto255.h" +# include "sodium/crypto_scalarmult_ed25519.h" +# include "sodium/crypto_scalarmult_ristretto255.h" +# include "sodium/crypto_secretbox_xchacha20poly1305.h" +# include "sodium/crypto_pwhash_scryptsalsa208sha256.h" +# include "sodium/crypto_stream_salsa2012.h" +# include "sodium/crypto_stream_salsa208.h" +# include "sodium/crypto_stream_xchacha20.h" +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/core.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/core.h new file mode 100644 index 00000000..dd088d2c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/core.h @@ -0,0 +1,28 @@ + +#ifndef sodium_core_H +#define sodium_core_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int sodium_init(void) + __attribute__ ((warn_unused_result)); + +/* ---- */ + +SODIUM_EXPORT +int sodium_set_misuse_handler(void (*handler)(void)); + +SODIUM_EXPORT +void sodium_misuse(void) + __attribute__ ((noreturn)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_aes256gcm.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_aes256gcm.h new file mode 100644 index 00000000..9baeb3f1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_aes256gcm.h @@ -0,0 +1,179 @@ +#ifndef crypto_aead_aes256gcm_H +#define crypto_aead_aes256gcm_H + +/* + * WARNING: Despite being the most popular AEAD construction due to its + * use in TLS, safely using AES-GCM in a different context is tricky. + * + * No more than ~ 350 GB of input data should be encrypted with a given key. + * This is for ~ 16 KB messages -- Actual figures vary according to + * message sizes. + * + * In addition, nonces are short and repeated nonces would totally destroy + * the security of this scheme. + * + * Nonces should thus come from atomic counters, which can be difficult to + * set up in a distributed environment. + * + * Unless you absolutely need AES-GCM, use crypto_aead_xchacha20poly1305_ietf_*() + * instead. It doesn't have any of these limitations. + * Or, if you don't need to authenticate additional data, just stick to + * crypto_secretbox(). + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_aead_aes256gcm_is_available(void); + +#define crypto_aead_aes256gcm_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_keybytes(void); + +#define crypto_aead_aes256gcm_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_nsecbytes(void); + +#define crypto_aead_aes256gcm_NPUBBYTES 12U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_npubbytes(void); + +#define crypto_aead_aes256gcm_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_abytes(void); + +#define crypto_aead_aes256gcm_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_aes256gcm_ABYTES, \ + (16ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_messagebytes_max(void); + +typedef struct CRYPTO_ALIGN(16) crypto_aead_aes256gcm_state_ { + unsigned char opaque[512]; +} crypto_aead_aes256gcm_state; + +SODIUM_EXPORT +size_t crypto_aead_aes256gcm_statebytes(void); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_aead_aes256gcm_beforenm(crypto_aead_aes256gcm_state *ctx_, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_afternm(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_afternm(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const crypto_aead_aes256gcm_state *ctx_) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_aes256gcm_keygen(unsigned char k[crypto_aead_aes256gcm_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_chacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_chacha20poly1305.h new file mode 100644 index 00000000..5d671df1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_chacha20poly1305.h @@ -0,0 +1,180 @@ +#ifndef crypto_aead_chacha20poly1305_H +#define crypto_aead_chacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U + +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_abytes(void); + +#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ + (64ULL * ((1ULL << 32) - 1ULL))) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ + +#define crypto_aead_chacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_keybytes(void); + +#define crypto_aead_chacha20poly1305_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_nsecbytes(void); + +#define crypto_aead_chacha20poly1305_NPUBBYTES 8U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_npubbytes(void); + +#define crypto_aead_chacha20poly1305_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_abytes(void); + +#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_chacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES +#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES +#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES +#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_xchacha20poly1305.h new file mode 100644 index 00000000..6643b0cb --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_aead_xchacha20poly1305.h @@ -0,0 +1,100 @@ +#ifndef crypto_aead_xchacha20poly1305_H +#define crypto_aead_xchacha20poly1305_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_aead_xchacha20poly1305_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_keybytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NSECBYTES 0U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_nsecbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_NPUBBYTES 24U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_npubbytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_ABYTES 16U +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_abytes(void); + +#define crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX \ + (SODIUM_SIZE_MAX - crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_aead_xchacha20poly1305_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c, + unsigned long long *clen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt(unsigned char *m, + unsigned long long *mlen_p, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(4, 8, 9))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_encrypt_detached(unsigned char *c, + unsigned char *mac, + unsigned long long *maclen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *nsec, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 9, 10))); + +SODIUM_EXPORT +int crypto_aead_xchacha20poly1305_ietf_decrypt_detached(unsigned char *m, + unsigned char *nsec, + const unsigned char *c, + unsigned long long clen, + const unsigned char *mac, + const unsigned char *ad, + unsigned long long adlen, + const unsigned char *npub, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5, 8, 9))); + +SODIUM_EXPORT +void crypto_aead_xchacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_xchacha20poly1305_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_aead_xchacha20poly1305_IETF_KEYBYTES crypto_aead_xchacha20poly1305_ietf_KEYBYTES +#define crypto_aead_xchacha20poly1305_IETF_NSECBYTES crypto_aead_xchacha20poly1305_ietf_NSECBYTES +#define crypto_aead_xchacha20poly1305_IETF_NPUBBYTES crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +#define crypto_aead_xchacha20poly1305_IETF_ABYTES crypto_aead_xchacha20poly1305_ietf_ABYTES +#define crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth.h new file mode 100644 index 00000000..540aee0e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth.h @@ -0,0 +1,46 @@ +#ifndef crypto_auth_H +#define crypto_auth_H + +#include + +#include "crypto_auth_hmacsha512256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_BYTES crypto_auth_hmacsha512256_BYTES +SODIUM_EXPORT +size_t crypto_auth_bytes(void); + +#define crypto_auth_KEYBYTES crypto_auth_hmacsha512256_KEYBYTES +SODIUM_EXPORT +size_t crypto_auth_keybytes(void); + +#define crypto_auth_PRIMITIVE "hmacsha512256" +SODIUM_EXPORT +const char *crypto_auth_primitive(void); + +SODIUM_EXPORT +int crypto_auth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_auth_keygen(unsigned char k[crypto_auth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha256.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha256.h new file mode 100644 index 00000000..3da864c7 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha256.h @@ -0,0 +1,70 @@ +#ifndef crypto_auth_hmacsha256_H +#define crypto_auth_hmacsha256_H + +#include +#include "crypto_hash_sha256.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_bytes(void); + +#define crypto_auth_hmacsha256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha256_state { + crypto_hash_sha256_state ictx; + crypto_hash_sha256_state octx; +} crypto_auth_hmacsha256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_init(crypto_auth_hmacsha256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_update(crypto_auth_hmacsha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha256_final(crypto_auth_hmacsha256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + + +SODIUM_EXPORT +void crypto_auth_hmacsha256_keygen(unsigned char k[crypto_auth_hmacsha256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512.h new file mode 100644 index 00000000..d992cb81 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512.h @@ -0,0 +1,68 @@ +#ifndef crypto_auth_hmacsha512_H +#define crypto_auth_hmacsha512_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_bytes(void); + +#define crypto_auth_hmacsha512_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef struct crypto_auth_hmacsha512_state { + crypto_hash_sha512_state ictx; + crypto_hash_sha512_state octx; +} crypto_auth_hmacsha512_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_init(crypto_auth_hmacsha512_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_update(crypto_auth_hmacsha512_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512_final(crypto_auth_hmacsha512_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512_keygen(unsigned char k[crypto_auth_hmacsha512_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512256.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512256.h new file mode 100644 index 00000000..3fb52638 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_auth_hmacsha512256.h @@ -0,0 +1,65 @@ +#ifndef crypto_auth_hmacsha512256_H +#define crypto_auth_hmacsha512256_H + +#include +#include "crypto_auth_hmacsha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_auth_hmacsha512256_BYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_bytes(void); + +#define crypto_auth_hmacsha512256_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_keybytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +/* ------------------------------------------------------------------------- */ + +typedef crypto_auth_hmacsha512_state crypto_auth_hmacsha512256_state; + +SODIUM_EXPORT +size_t crypto_auth_hmacsha512256_statebytes(void); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_init(crypto_auth_hmacsha512256_state *state, + const unsigned char *key, + size_t keylen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_update(crypto_auth_hmacsha512256_state *state, + const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_auth_hmacsha512256_final(crypto_auth_hmacsha512256_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_auth_hmacsha512256_keygen(unsigned char k[crypto_auth_hmacsha512256_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box.h new file mode 100644 index 00000000..e060dd29 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box.h @@ -0,0 +1,177 @@ +#ifndef crypto_box_H +#define crypto_box_H + +/* + * THREAD SAFETY: crypto_box_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions are always thread-safe. + */ + +#include + +#include "crypto_box_curve25519xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_SEEDBYTES crypto_box_curve25519xsalsa20poly1305_SEEDBYTES +SODIUM_EXPORT +size_t crypto_box_seedbytes(void); + +#define crypto_box_PUBLICKEYBYTES crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_box_publickeybytes(void); + +#define crypto_box_SECRETKEYBYTES crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_box_secretkeybytes(void); + +#define crypto_box_NONCEBYTES crypto_box_curve25519xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_box_noncebytes(void); + +#define crypto_box_MACBYTES crypto_box_curve25519xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_box_macbytes(void); + +#define crypto_box_MESSAGEBYTES_MAX crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_box_messagebytes_max(void); + +#define crypto_box_PRIMITIVE "curve25519xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_box_primitive(void); + +SODIUM_EXPORT +int crypto_box_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_open_detached(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +#define crypto_box_BEFORENMBYTES crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES +SODIUM_EXPORT +size_t crypto_box_beforenmbytes(void); + +SODIUM_EXPORT +int crypto_box_beforenm(unsigned char *k, const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_easy_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_easy_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_detached_afternm(unsigned char *c, unsigned char *mac, + const unsigned char *m, unsigned long long mlen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open_detached_afternm(unsigned char *m, const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_SEALBYTES (crypto_box_PUBLICKEYBYTES + crypto_box_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_seal(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_seal_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_ZEROBYTES crypto_box_curve25519xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_box_zerobytes(void); + +#define crypto_box_BOXZEROBYTES crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_box_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_box(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *pk, const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_afternm(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_open_afternm(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xchacha20poly1305.h new file mode 100644 index 00000000..26a3d31e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xchacha20poly1305.h @@ -0,0 +1,164 @@ + +#ifndef crypto_box_curve25519xchacha20poly1305_H +#define crypto_box_curve25519xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xchacha20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_seedbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_noncebytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_macbytes(void); + +#define crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_box_curve25519xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 2, 5, 6, 7))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6, 7))); + +/* -- Precomputation interface -- */ + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_easy_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_detached_afternm(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_open_detached_afternm(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +/* -- Ephemeral SK interface -- */ + +#define crypto_box_curve25519xchacha20poly1305_SEALBYTES \ + (crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES + \ + crypto_box_curve25519xchacha20poly1305_MACBYTES) + +SODIUM_EXPORT +size_t crypto_box_curve25519xchacha20poly1305_sealbytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_box_curve25519xchacha20poly1305_seal_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xsalsa20poly1305.h new file mode 100644 index 00000000..e733f499 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_box_curve25519xsalsa20poly1305.h @@ -0,0 +1,112 @@ +#ifndef crypto_box_curve25519xsalsa20poly1305_H +#define crypto_box_curve25519xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk, + unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void); + +#define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \ + (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \ + crypto_box_curve25519xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *pk, + const unsigned char *sk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ed25519.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ed25519.h new file mode 100644 index 00000000..3eae00c4 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ed25519.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ed25519_H +#define crypto_core_ed25519_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ed25519_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_bytes(void); + +#define crypto_core_ed25519_UNIFORMBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_uniformbytes(void); + +#define crypto_core_ed25519_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_hashbytes(void); + +#define crypto_core_ed25519_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ed25519_scalarbytes(void); + +#define crypto_core_ed25519_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ed25519_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ed25519_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_uniform(unsigned char *p, const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_from_hash(unsigned char *p, const unsigned char *h) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ed25519_scalar_invert(unsigned char *recip, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_negate(unsigned char *neg, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_complement(unsigned char *comp, const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_sub(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ed25519_scalar_mul(unsigned char *z, const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ed25519_scalar_reduce(unsigned char *r, const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hchacha20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hchacha20.h new file mode 100644 index 00000000..ece141b0 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hchacha20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hchacha20_H +#define crypto_core_hchacha20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hchacha20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_outputbytes(void); + +#define crypto_core_hchacha20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_inputbytes(void); + +#define crypto_core_hchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hchacha20_keybytes(void); + +#define crypto_core_hchacha20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hchacha20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hchacha20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hsalsa20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hsalsa20.h new file mode 100644 index 00000000..4bf7a487 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_hsalsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_hsalsa20_H +#define crypto_core_hsalsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_hsalsa20_OUTPUTBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_outputbytes(void); + +#define crypto_core_hsalsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_inputbytes(void); + +#define crypto_core_hsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_keybytes(void); + +#define crypto_core_hsalsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_hsalsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_hsalsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ristretto255.h new file mode 100644 index 00000000..f2820e55 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_ristretto255.h @@ -0,0 +1,100 @@ +#ifndef crypto_core_ristretto255_H +#define crypto_core_ristretto255_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_ristretto255_BYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_bytes(void); + +#define crypto_core_ristretto255_HASHBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_hashbytes(void); + +#define crypto_core_ristretto255_SCALARBYTES 32 +SODIUM_EXPORT +size_t crypto_core_ristretto255_scalarbytes(void); + +#define crypto_core_ristretto255_NONREDUCEDSCALARBYTES 64 +SODIUM_EXPORT +size_t crypto_core_ristretto255_nonreducedscalarbytes(void); + +SODIUM_EXPORT +int crypto_core_ristretto255_is_valid_point(const unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_add(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_sub(unsigned char *r, + const unsigned char *p, const unsigned char *q) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_from_hash(unsigned char *p, + const unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_random(unsigned char *p) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_random(unsigned char *r) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_core_ristretto255_scalar_invert(unsigned char *recip, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_negate(unsigned char *neg, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_complement(unsigned char *comp, + const unsigned char *s) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_add(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_sub(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_mul(unsigned char *z, + const unsigned char *x, + const unsigned char *y) + __attribute__ ((nonnull)); + +/* + * The interval `s` is sampled from should be at least 317 bits to ensure almost + * uniformity of `r` over `L`. + */ +SODIUM_EXPORT +void crypto_core_ristretto255_scalar_reduce(unsigned char *r, + const unsigned char *s) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa20.h new file mode 100644 index 00000000..bd79fd9f --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa20.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa20_H +#define crypto_core_salsa20_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa20_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa20_outputbytes(void); + +#define crypto_core_salsa20_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_inputbytes(void); + +#define crypto_core_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa20_keybytes(void); + +#define crypto_core_salsa20_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa20_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa20(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa2012.h new file mode 100644 index 00000000..05957591 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa2012.h @@ -0,0 +1,36 @@ +#ifndef crypto_core_salsa2012_H +#define crypto_core_salsa2012_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa2012_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa2012_outputbytes(void); + +#define crypto_core_salsa2012_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_inputbytes(void); + +#define crypto_core_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa2012_keybytes(void); + +#define crypto_core_salsa2012_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa2012_constbytes(void); + +SODIUM_EXPORT +int crypto_core_salsa2012(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa208.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa208.h new file mode 100644 index 00000000..d2f216af --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_core_salsa208.h @@ -0,0 +1,40 @@ +#ifndef crypto_core_salsa208_H +#define crypto_core_salsa208_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_core_salsa208_OUTPUTBYTES 64U +SODIUM_EXPORT +size_t crypto_core_salsa208_outputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_INPUTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_inputbytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_core_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_core_salsa208_CONSTBYTES 16U +SODIUM_EXPORT +size_t crypto_core_salsa208_constbytes(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_core_salsa208(unsigned char *out, const unsigned char *in, + const unsigned char *k, const unsigned char *c) + __attribute__ ((nonnull(1, 2, 3))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash.h new file mode 100644 index 00000000..d897e5d2 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash.h @@ -0,0 +1,84 @@ +#ifndef crypto_generichash_H +#define crypto_generichash_H + +#include + +#include "crypto_generichash_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_generichash_BYTES_MIN crypto_generichash_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_bytes_min(void); + +#define crypto_generichash_BYTES_MAX crypto_generichash_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_bytes_max(void); + +#define crypto_generichash_BYTES crypto_generichash_blake2b_BYTES +SODIUM_EXPORT +size_t crypto_generichash_bytes(void); + +#define crypto_generichash_KEYBYTES_MIN crypto_generichash_blake2b_KEYBYTES_MIN +SODIUM_EXPORT +size_t crypto_generichash_keybytes_min(void); + +#define crypto_generichash_KEYBYTES_MAX crypto_generichash_blake2b_KEYBYTES_MAX +SODIUM_EXPORT +size_t crypto_generichash_keybytes_max(void); + +#define crypto_generichash_KEYBYTES crypto_generichash_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_generichash_keybytes(void); + +#define crypto_generichash_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_generichash_primitive(void); + +/* + * Important when writing bindings for other programming languages: + * the state address should be 64-bytes aligned. + */ +typedef crypto_generichash_blake2b_state crypto_generichash_state; + +SODIUM_EXPORT +size_t crypto_generichash_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash(unsigned char *out, size_t outlen, + const unsigned char *in, unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_init(crypto_generichash_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_update(crypto_generichash_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_final(crypto_generichash_state *state, + unsigned char *out, const size_t outlen) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_keygen(unsigned char k[crypto_generichash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash_blake2b.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash_blake2b.h new file mode 100644 index 00000000..fee9d8ad --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_generichash_blake2b.h @@ -0,0 +1,118 @@ +#ifndef crypto_generichash_blake2b_H +#define crypto_generichash_blake2b_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack(1) +#else +# pragma pack(push, 1) +#endif + +typedef struct CRYPTO_ALIGN(64) crypto_generichash_blake2b_state { + unsigned char opaque[384]; +} crypto_generichash_blake2b_state; + +#if defined(__IBMC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) +# pragma pack() +#else +# pragma pack(pop) +#endif + +#define crypto_generichash_blake2b_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_min(void); + +#define crypto_generichash_blake2b_BYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes_max(void); + +#define crypto_generichash_blake2b_BYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_bytes(void); + +#define crypto_generichash_blake2b_KEYBYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_min(void); + +#define crypto_generichash_blake2b_KEYBYTES_MAX 64U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes_max(void); + +#define crypto_generichash_blake2b_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_keybytes(void); + +#define crypto_generichash_blake2b_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_saltbytes(void); + +#define crypto_generichash_blake2b_PERSONALBYTES 16U +SODIUM_EXPORT +size_t crypto_generichash_blake2b_personalbytes(void); + +SODIUM_EXPORT +size_t crypto_generichash_blake2b_statebytes(void); + +SODIUM_EXPORT +int crypto_generichash_blake2b(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, size_t keylen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_salt_personal(unsigned char *out, size_t outlen, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *key, + size_t keylen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_init_salt_personal(crypto_generichash_blake2b_state *state, + const unsigned char *key, + const size_t keylen, const size_t outlen, + const unsigned char *salt, + const unsigned char *personal) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_update(crypto_generichash_blake2b_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_generichash_blake2b_final(crypto_generichash_blake2b_state *state, + unsigned char *out, + const size_t outlen) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_generichash_blake2b_keygen(unsigned char k[crypto_generichash_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash.h new file mode 100644 index 00000000..8752f9ca --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash.h @@ -0,0 +1,40 @@ +#ifndef crypto_hash_H +#define crypto_hash_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include + +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_hash_BYTES crypto_hash_sha512_BYTES +SODIUM_EXPORT +size_t crypto_hash_bytes(void); + +SODIUM_EXPORT +int crypto_hash(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +#define crypto_hash_PRIMITIVE "sha512" +SODIUM_EXPORT +const char *crypto_hash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha256.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha256.h new file mode 100644 index 00000000..b18217e1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha256.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha256_H +#define crypto_hash_sha256_H + +/* + * WARNING: Unless you absolutely need to use SHA256 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA256, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha256_state { + uint32_t state[8]; + uint64_t count; + uint8_t buf[64]; +} crypto_hash_sha256_state; + +SODIUM_EXPORT +size_t crypto_hash_sha256_statebytes(void); + +#define crypto_hash_sha256_BYTES 32U +SODIUM_EXPORT +size_t crypto_hash_sha256_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha256(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_init(crypto_hash_sha256_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha256_update(crypto_hash_sha256_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha256_final(crypto_hash_sha256_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha512.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha512.h new file mode 100644 index 00000000..8efa7193 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_hash_sha512.h @@ -0,0 +1,60 @@ +#ifndef crypto_hash_sha512_H +#define crypto_hash_sha512_H + +/* + * WARNING: Unless you absolutely need to use SHA512 for interoperatibility, + * purposes, you might want to consider crypto_generichash() instead. + * Unlike SHA512, crypto_generichash() is not vulnerable to length + * extension attacks. + */ + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_hash_sha512_state { + uint64_t state[8]; + uint64_t count[2]; + uint8_t buf[128]; +} crypto_hash_sha512_state; + +SODIUM_EXPORT +size_t crypto_hash_sha512_statebytes(void); + +#define crypto_hash_sha512_BYTES 64U +SODIUM_EXPORT +size_t crypto_hash_sha512_bytes(void); + +SODIUM_EXPORT +int crypto_hash_sha512(unsigned char *out, const unsigned char *in, + unsigned long long inlen) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_init(crypto_hash_sha512_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_hash_sha512_update(crypto_hash_sha512_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_hash_sha512_final(crypto_hash_sha512_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf.h new file mode 100644 index 00000000..ac2fc618 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf.h @@ -0,0 +1,53 @@ +#ifndef crypto_kdf_H +#define crypto_kdf_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_BYTES_MIN crypto_kdf_blake2b_BYTES_MIN +SODIUM_EXPORT +size_t crypto_kdf_bytes_min(void); + +#define crypto_kdf_BYTES_MAX crypto_kdf_blake2b_BYTES_MAX +SODIUM_EXPORT +size_t crypto_kdf_bytes_max(void); + +#define crypto_kdf_CONTEXTBYTES crypto_kdf_blake2b_CONTEXTBYTES +SODIUM_EXPORT +size_t crypto_kdf_contextbytes(void); + +#define crypto_kdf_KEYBYTES crypto_kdf_blake2b_KEYBYTES +SODIUM_EXPORT +size_t crypto_kdf_keybytes(void); + +#define crypto_kdf_PRIMITIVE "blake2b" +SODIUM_EXPORT +const char *crypto_kdf_primitive(void) + __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int crypto_kdf_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_CONTEXTBYTES], + const unsigned char key[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_kdf_keygen(unsigned char k[crypto_kdf_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf_blake2b.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf_blake2b.h new file mode 100644 index 00000000..3ae47dd3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kdf_blake2b.h @@ -0,0 +1,44 @@ +#ifndef crypto_kdf_blake2b_H +#define crypto_kdf_blake2b_H + +#include +#include + +#include "crypto_kdf_blake2b.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kdf_blake2b_BYTES_MIN 16 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_min(void); + +#define crypto_kdf_blake2b_BYTES_MAX 64 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_bytes_max(void); + +#define crypto_kdf_blake2b_CONTEXTBYTES 8 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_contextbytes(void); + +#define crypto_kdf_blake2b_KEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kdf_blake2b_keybytes(void); + +SODIUM_EXPORT +int crypto_kdf_blake2b_derive_from_key(unsigned char *subkey, size_t subkey_len, + uint64_t subkey_id, + const char ctx[crypto_kdf_blake2b_CONTEXTBYTES], + const unsigned char key[crypto_kdf_blake2b_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kx.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kx.h new file mode 100644 index 00000000..347132c3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_kx.h @@ -0,0 +1,66 @@ +#ifndef crypto_kx_H +#define crypto_kx_H + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_kx_PUBLICKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_publickeybytes(void); + +#define crypto_kx_SECRETKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_secretkeybytes(void); + +#define crypto_kx_SEEDBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_seedbytes(void); + +#define crypto_kx_SESSIONKEYBYTES 32 +SODIUM_EXPORT +size_t crypto_kx_sessionkeybytes(void); + +#define crypto_kx_PRIMITIVE "x25519blake2b" +SODIUM_EXPORT +const char *crypto_kx_primitive(void); + +SODIUM_EXPORT +int crypto_kx_seed_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES], + const unsigned char seed[crypto_kx_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_keypair(unsigned char pk[crypto_kx_PUBLICKEYBYTES], + unsigned char sk[crypto_kx_SECRETKEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char client_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +SODIUM_EXPORT +int crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES], + unsigned char tx[crypto_kx_SESSIONKEYBYTES], + const unsigned char server_pk[crypto_kx_PUBLICKEYBYTES], + const unsigned char server_sk[crypto_kx_SECRETKEYBYTES], + const unsigned char client_pk[crypto_kx_PUBLICKEYBYTES]) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth.h new file mode 100644 index 00000000..7cd7b070 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth.h @@ -0,0 +1,65 @@ +#ifndef crypto_onetimeauth_H +#define crypto_onetimeauth_H + +#include + +#include "crypto_onetimeauth_poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_onetimeauth_poly1305_state crypto_onetimeauth_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_statebytes(void); + +#define crypto_onetimeauth_BYTES crypto_onetimeauth_poly1305_BYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_bytes(void); + +#define crypto_onetimeauth_KEYBYTES crypto_onetimeauth_poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_onetimeauth_keybytes(void); + +#define crypto_onetimeauth_PRIMITIVE "poly1305" +SODIUM_EXPORT +const char *crypto_onetimeauth_primitive(void); + +SODIUM_EXPORT +int crypto_onetimeauth(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_verify(const unsigned char *h, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_init(crypto_onetimeauth_state *state, + const unsigned char *key) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_update(crypto_onetimeauth_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_final(crypto_onetimeauth_state *state, + unsigned char *out) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_keygen(unsigned char k[crypto_onetimeauth_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth_poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth_poly1305.h new file mode 100644 index 00000000..f3e34d86 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_onetimeauth_poly1305.h @@ -0,0 +1,72 @@ +#ifndef crypto_onetimeauth_poly1305_H +#define crypto_onetimeauth_poly1305_H + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#include +#include +#include + +#include + +#include "export.h" + +typedef struct CRYPTO_ALIGN(16) crypto_onetimeauth_poly1305_state { + unsigned char opaque[256]; +} crypto_onetimeauth_poly1305_state; + +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_statebytes(void); + +#define crypto_onetimeauth_poly1305_BYTES 16U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_bytes(void); + +#define crypto_onetimeauth_poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_onetimeauth_poly1305_keybytes(void); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305(unsigned char *out, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_verify(const unsigned char *h, + const unsigned char *in, + unsigned long long inlen, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_init(crypto_onetimeauth_poly1305_state *state, + const unsigned char *key) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_update(crypto_onetimeauth_poly1305_state *state, + const unsigned char *in, + unsigned long long inlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_onetimeauth_poly1305_final(crypto_onetimeauth_poly1305_state *state, + unsigned char *out) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_onetimeauth_poly1305_keygen(unsigned char k[crypto_onetimeauth_poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash.h new file mode 100644 index 00000000..585a993e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash.h @@ -0,0 +1,147 @@ +#ifndef crypto_pwhash_H +#define crypto_pwhash_H + +#include + +#include "crypto_pwhash_argon2i.h" +#include "crypto_pwhash_argon2id.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2i13(void); + +#define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_argon2id13(void); + +#define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13 +SODIUM_EXPORT +int crypto_pwhash_alg_default(void); + +#define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN +SODIUM_EXPORT +size_t crypto_pwhash_bytes_min(void); + +#define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX +SODIUM_EXPORT +size_t crypto_pwhash_bytes_max(void); + +#define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN +SODIUM_EXPORT +size_t crypto_pwhash_passwd_min(void); + +#define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX +SODIUM_EXPORT +size_t crypto_pwhash_passwd_max(void); + +#define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES +SODIUM_EXPORT +size_t crypto_pwhash_saltbytes(void); + +#define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES +SODIUM_EXPORT +size_t crypto_pwhash_strbytes(void); + +#define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX +SODIUM_EXPORT +const char *crypto_pwhash_strprefix(void); + +#define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_min(void); + +#define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_max(void); + +#define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_min(void); + +#define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_max(void); + +#define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_interactive(void); + +#define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_interactive(void); + +#define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_moderate(void); + +#define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_moderate(void); + +#define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_opslimit_sensitive(void); + +#define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE +SODIUM_EXPORT +size_t crypto_pwhash_memlimit_sensitive(void); + +/* + * With this function, do not forget to store all parameters, including the + * algorithm identifier in order to produce deterministic output. + * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT, + * may change. + */ +SODIUM_EXPORT +int crypto_pwhash(unsigned char * const out, unsigned long long outlen, + const char * const passwd, unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +/* + * The output string already includes all the required parameters, including + * the algorithm identifier. The string is all that has to be stored in + * order to verify a password. + */ +SODIUM_EXPORT +int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES], + const char * const passwd, unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit, int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_verify(const char str[crypto_pwhash_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_str_needs_rehash(const char str[crypto_pwhash_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#define crypto_pwhash_PRIMITIVE "argon2i" +SODIUM_EXPORT +const char *crypto_pwhash_primitive(void) + __attribute__ ((warn_unused_result)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2i.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2i.h new file mode 100644 index 00000000..88ff6221 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2i.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2i_H +#define crypto_pwhash_argon2i_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2i_ALG_ARGON2I13 1 +SODIUM_EXPORT +int crypto_pwhash_argon2i_alg_argon2i13(void); + +#define crypto_pwhash_argon2i_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_min(void); + +#define crypto_pwhash_argon2i_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_bytes_max(void); + +#define crypto_pwhash_argon2i_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_min(void); + +#define crypto_pwhash_argon2i_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_passwd_max(void); + +#define crypto_pwhash_argon2i_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_saltbytes(void); + +#define crypto_pwhash_argon2i_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_strbytes(void); + +#define crypto_pwhash_argon2i_STRPREFIX "$argon2i$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2i_strprefix(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MIN 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_min(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_max(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_min(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_max(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_interactive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_interactive(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_MODERATE 6U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_moderate(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_MODERATE 134217728U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_moderate(void); + +#define crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE 8U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_opslimit_sensitive(void); + +#define crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE 536870912U +SODIUM_EXPORT +size_t crypto_pwhash_argon2i_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2i(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str(char out[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_verify(const char str[crypto_pwhash_argon2i_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2i_str_needs_rehash(const char str[crypto_pwhash_argon2i_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2id.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2id.h new file mode 100644 index 00000000..7183abd1 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_argon2id.h @@ -0,0 +1,122 @@ +#ifndef crypto_pwhash_argon2id_H +#define crypto_pwhash_argon2id_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_argon2id_ALG_ARGON2ID13 2 +SODIUM_EXPORT +int crypto_pwhash_argon2id_alg_argon2id13(void); + +#define crypto_pwhash_argon2id_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_min(void); + +#define crypto_pwhash_argon2id_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 4294967295U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_bytes_max(void); + +#define crypto_pwhash_argon2id_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_min(void); + +#define crypto_pwhash_argon2id_PASSWD_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_passwd_max(void); + +#define crypto_pwhash_argon2id_SALTBYTES 16U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_saltbytes(void); + +#define crypto_pwhash_argon2id_STRBYTES 128U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_strbytes(void); + +#define crypto_pwhash_argon2id_STRPREFIX "$argon2id$" +SODIUM_EXPORT +const char *crypto_pwhash_argon2id_strprefix(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MIN 1U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_min(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_max(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MIN 8192U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_min(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MAX \ + ((SIZE_MAX >= 4398046510080U) ? 4398046510080U : (SIZE_MAX >= 2147483648U) ? 2147483648U : 32768U) +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_max(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE 2U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_interactive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE 67108864U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_interactive(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_MODERATE 3U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_moderate(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_MODERATE 268435456U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_moderate(void); + +#define crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE 4U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_opslimit_sensitive(void); + +#define crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_argon2id_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_argon2id(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, size_t memlimit, + int alg) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str(char out[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_verify(const char str[crypto_pwhash_argon2id_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_argon2id_str_needs_rehash(const char str[crypto_pwhash_argon2id_STRBYTES], + unsigned long long opslimit, size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_scryptsalsa208sha256.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_scryptsalsa208sha256.h new file mode 100644 index 00000000..5c0bf7d3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_pwhash_scryptsalsa208sha256.h @@ -0,0 +1,120 @@ +#ifndef crypto_pwhash_scryptsalsa208sha256_H +#define crypto_pwhash_scryptsalsa208sha256_H + +#include +#include +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MIN 16U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); + +#define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" +SODIUM_EXPORT +const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ + SODIUM_MIN(SIZE_MAX, 68719476736ULL) +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); + +#define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); + +#define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U +SODIUM_EXPORT +size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, + unsigned long long outlen, + const char * const passwd, + unsigned long long passwdlen, + const unsigned char * const salt, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen, + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + const char * const passwd, + unsigned long long passwdlen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, + const uint8_t * salt, size_t saltlen, + uint64_t N, uint32_t r, uint32_t p, + uint8_t * buf, size_t buflen) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], + unsigned long long opslimit, + size_t memlimit) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult.h new file mode 100644 index 00000000..1c685853 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult.h @@ -0,0 +1,46 @@ +#ifndef crypto_scalarmult_H +#define crypto_scalarmult_H + +#include + +#include "crypto_scalarmult_curve25519.h" +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_BYTES crypto_scalarmult_curve25519_BYTES +SODIUM_EXPORT +size_t crypto_scalarmult_bytes(void); + +#define crypto_scalarmult_SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES +SODIUM_EXPORT +size_t crypto_scalarmult_scalarbytes(void); + +#define crypto_scalarmult_PRIMITIVE "curve25519" +SODIUM_EXPORT +const char *crypto_scalarmult_primitive(void); + +SODIUM_EXPORT +int crypto_scalarmult_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_curve25519.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_curve25519.h new file mode 100644 index 00000000..60e9d0c5 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_curve25519.h @@ -0,0 +1,42 @@ +#ifndef crypto_scalarmult_curve25519_H +#define crypto_scalarmult_curve25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_curve25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_bytes(void); + +#define crypto_scalarmult_curve25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_curve25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_curve25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_curve25519_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ed25519.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ed25519.h new file mode 100644 index 00000000..2dfa4d70 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ed25519.h @@ -0,0 +1,51 @@ + +#ifndef crypto_scalarmult_ed25519_H +#define crypto_scalarmult_ed25519_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ed25519_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_bytes(void); + +#define crypto_scalarmult_ed25519_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ed25519_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ed25519(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_noclamp(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ristretto255.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ristretto255.h new file mode 100644 index 00000000..40a45cce --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_scalarmult_ristretto255.h @@ -0,0 +1,43 @@ + +#ifndef crypto_scalarmult_ristretto255_H +#define crypto_scalarmult_ristretto255_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_scalarmult_ristretto255_BYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_bytes(void); + +#define crypto_scalarmult_ristretto255_SCALARBYTES 32U +SODIUM_EXPORT +size_t crypto_scalarmult_ristretto255_scalarbytes(void); + +/* + * NOTE: Do not use the result of this function directly for key exchange. + * + * Hash the result with the public keys in order to compute a shared + * secret key: H(q || client_pk || server_pk) + * + * Or unless this is not an option, use the crypto_kx() API instead. + */ +SODIUM_EXPORT +int crypto_scalarmult_ristretto255(unsigned char *q, const unsigned char *n, + const unsigned char *p) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_scalarmult_ristretto255_base(unsigned char *q, + const unsigned char *n) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox.h new file mode 100644 index 00000000..1d3709db --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox.h @@ -0,0 +1,93 @@ +#ifndef crypto_secretbox_H +#define crypto_secretbox_H + +#include + +#include "crypto_secretbox_xsalsa20poly1305.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretbox_keybytes(void); + +#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES +SODIUM_EXPORT +size_t crypto_secretbox_noncebytes(void); + +#define crypto_secretbox_MACBYTES crypto_secretbox_xsalsa20poly1305_MACBYTES +SODIUM_EXPORT +size_t crypto_secretbox_macbytes(void); + +#define crypto_secretbox_PRIMITIVE "xsalsa20poly1305" +SODIUM_EXPORT +const char *crypto_secretbox_primitive(void); + +#define crypto_secretbox_MESSAGEBYTES_MAX crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_secretbox_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_easy(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open_easy(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_detached(unsigned char *c, unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +SODIUM_EXPORT +void crypto_secretbox_keygen(unsigned char k[crypto_secretbox_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_zerobytes(void); + +#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES +SODIUM_EXPORT +size_t crypto_secretbox_boxzerobytes(void); + +SODIUM_EXPORT +int crypto_secretbox(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_open(unsigned char *m, const unsigned char *c, + unsigned long long clen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xchacha20poly1305.h new file mode 100644 index 00000000..6ec674e3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xchacha20poly1305.h @@ -0,0 +1,70 @@ +#ifndef crypto_secretbox_xchacha20poly1305_H +#define crypto_secretbox_xchacha20poly1305_H + +#include +#include "crypto_stream_xchacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xchacha20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_keybytes(void); + +#define crypto_secretbox_xchacha20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_noncebytes(void); + +#define crypto_secretbox_xchacha20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_macbytes(void); + +#define crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xchacha20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_easy(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_easy(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_detached(unsigned char *c, + unsigned char *mac, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 2, 5, 6))); + +SODIUM_EXPORT +int crypto_secretbox_xchacha20poly1305_open_detached(unsigned char *m, + const unsigned char *c, + const unsigned char *mac, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 3, 5, 6))); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xsalsa20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xsalsa20poly1305.h new file mode 100644 index 00000000..be0874cb --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretbox_xsalsa20poly1305.h @@ -0,0 +1,69 @@ +#ifndef crypto_secretbox_xsalsa20poly1305_H +#define crypto_secretbox_xsalsa20poly1305_H + +#include +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretbox_xsalsa20poly1305_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_keybytes(void); + +#define crypto_secretbox_xsalsa20poly1305_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_noncebytes(void); + +#define crypto_secretbox_xsalsa20poly1305_MACBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_macbytes(void); + +/* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */ +#define crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX \ + (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305(unsigned char *c, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull(1, 4, 5))); + +SODIUM_EXPORT +int crypto_secretbox_xsalsa20poly1305_open(unsigned char *m, + const unsigned char *c, + unsigned long long clen, + const unsigned char *n, + const unsigned char *k) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5))); + +SODIUM_EXPORT +void crypto_secretbox_xsalsa20poly1305_keygen(unsigned char k[crypto_secretbox_xsalsa20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +/* -- NaCl compatibility interface ; Requires padding -- */ + +#define crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES 16U +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_boxzerobytes(void); + +#define crypto_secretbox_xsalsa20poly1305_ZEROBYTES \ + (crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES + \ + crypto_secretbox_xsalsa20poly1305_MACBYTES) +SODIUM_EXPORT +size_t crypto_secretbox_xsalsa20poly1305_zerobytes(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretstream_xchacha20poly1305.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretstream_xchacha20poly1305.h new file mode 100644 index 00000000..b22e4e93 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_secretstream_xchacha20poly1305.h @@ -0,0 +1,108 @@ +#ifndef crypto_secretstream_xchacha20poly1305_H +#define crypto_secretstream_xchacha20poly1305_H + +#include + +#include "crypto_aead_xchacha20poly1305.h" +#include "crypto_stream_chacha20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_secretstream_xchacha20poly1305_ABYTES \ + (1U + crypto_aead_xchacha20poly1305_ietf_ABYTES) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_abytes(void); + +#define crypto_secretstream_xchacha20poly1305_HEADERBYTES \ + crypto_aead_xchacha20poly1305_ietf_NPUBBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_headerbytes(void); + +#define crypto_secretstream_xchacha20poly1305_KEYBYTES \ + crypto_aead_xchacha20poly1305_ietf_KEYBYTES +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_keybytes(void); + +#define crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX - crypto_secretstream_xchacha20poly1305_ABYTES, \ + (64ULL * ((1ULL << 32) - 2ULL))) +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_messagebytes_max(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_MESSAGE 0x00 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_message(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_PUSH 0x01 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_push(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_REKEY 0x02 +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_rekey(void); + +#define crypto_secretstream_xchacha20poly1305_TAG_FINAL \ + (crypto_secretstream_xchacha20poly1305_TAG_PUSH | \ + crypto_secretstream_xchacha20poly1305_TAG_REKEY) +SODIUM_EXPORT +unsigned char crypto_secretstream_xchacha20poly1305_tag_final(void); + +typedef struct crypto_secretstream_xchacha20poly1305_state { + unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]; + unsigned char nonce[crypto_stream_chacha20_ietf_NONCEBYTES]; + unsigned char _pad[8]; +} crypto_secretstream_xchacha20poly1305_state; + +SODIUM_EXPORT +size_t crypto_secretstream_xchacha20poly1305_statebytes(void); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_keygen + (unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_push + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *c, unsigned long long *clen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *ad, unsigned long long adlen, unsigned char tag) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_init_pull + (crypto_secretstream_xchacha20poly1305_state *state, + const unsigned char header[crypto_secretstream_xchacha20poly1305_HEADERBYTES], + const unsigned char k[crypto_secretstream_xchacha20poly1305_KEYBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_secretstream_xchacha20poly1305_pull + (crypto_secretstream_xchacha20poly1305_state *state, + unsigned char *m, unsigned long long *mlen_p, unsigned char *tag_p, + const unsigned char *c, unsigned long long clen, + const unsigned char *ad, unsigned long long adlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +void crypto_secretstream_xchacha20poly1305_rekey + (crypto_secretstream_xchacha20poly1305_state *state); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash.h new file mode 100644 index 00000000..fecaa88b --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash.h @@ -0,0 +1,41 @@ +#ifndef crypto_shorthash_H +#define crypto_shorthash_H + +#include + +#include "crypto_shorthash_siphash24.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_shorthash_BYTES crypto_shorthash_siphash24_BYTES +SODIUM_EXPORT +size_t crypto_shorthash_bytes(void); + +#define crypto_shorthash_KEYBYTES crypto_shorthash_siphash24_KEYBYTES +SODIUM_EXPORT +size_t crypto_shorthash_keybytes(void); + +#define crypto_shorthash_PRIMITIVE "siphash24" +SODIUM_EXPORT +const char *crypto_shorthash_primitive(void); + +SODIUM_EXPORT +int crypto_shorthash(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +void crypto_shorthash_keygen(unsigned char k[crypto_shorthash_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash_siphash24.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash_siphash24.h new file mode 100644 index 00000000..1e6f72a6 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_shorthash_siphash24.h @@ -0,0 +1,50 @@ +#ifndef crypto_shorthash_siphash24_H +#define crypto_shorthash_siphash24_H + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +/* -- 64-bit output -- */ + +#define crypto_shorthash_siphash24_BYTES 8U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_bytes(void); + +#define crypto_shorthash_siphash24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphash24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphash24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); + +#ifndef SODIUM_LIBRARY_MINIMAL +/* -- 128-bit output -- */ + +#define crypto_shorthash_siphashx24_BYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_bytes(void); + +#define crypto_shorthash_siphashx24_KEYBYTES 16U +SODIUM_EXPORT +size_t crypto_shorthash_siphashx24_keybytes(void); + +SODIUM_EXPORT +int crypto_shorthash_siphashx24(unsigned char *out, const unsigned char *in, + unsigned long long inlen, const unsigned char *k) + __attribute__ ((nonnull(1, 4))); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign.h new file mode 100644 index 00000000..f5fafb12 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign.h @@ -0,0 +1,107 @@ +#ifndef crypto_sign_H +#define crypto_sign_H + +/* + * THREAD SAFETY: crypto_sign_keypair() is thread-safe, + * provided that sodium_init() was called before. + * + * Other functions, including crypto_sign_seed_keypair() are always thread-safe. + */ + +#include + +#include "crypto_sign_ed25519.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef crypto_sign_ed25519ph_state crypto_sign_state; + +SODIUM_EXPORT +size_t crypto_sign_statebytes(void); + +#define crypto_sign_BYTES crypto_sign_ed25519_BYTES +SODIUM_EXPORT +size_t crypto_sign_bytes(void); + +#define crypto_sign_SEEDBYTES crypto_sign_ed25519_SEEDBYTES +SODIUM_EXPORT +size_t crypto_sign_seedbytes(void); + +#define crypto_sign_PUBLICKEYBYTES crypto_sign_ed25519_PUBLICKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_publickeybytes(void); + +#define crypto_sign_SECRETKEYBYTES crypto_sign_ed25519_SECRETKEYBYTES +SODIUM_EXPORT +size_t crypto_sign_secretkeybytes(void); + +#define crypto_sign_MESSAGEBYTES_MAX crypto_sign_ed25519_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_sign_messagebytes_max(void); + +#define crypto_sign_PRIMITIVE "ed25519" +SODIUM_EXPORT +const char *crypto_sign_primitive(void); + +SODIUM_EXPORT +int crypto_sign_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_detached(unsigned char *sig, unsigned long long *siglen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_init(crypto_sign_state *state); + +SODIUM_EXPORT +int crypto_sign_update(crypto_sign_state *state, + const unsigned char *m, unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_final_create(crypto_sign_state *state, unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_final_verify(crypto_sign_state *state, const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_ed25519.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_ed25519.h new file mode 100644 index 00000000..0fdac42d --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_ed25519.h @@ -0,0 +1,124 @@ +#ifndef crypto_sign_ed25519_H +#define crypto_sign_ed25519_H + +#include +#include "crypto_hash_sha512.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct crypto_sign_ed25519ph_state { + crypto_hash_sha512_state hs; +} crypto_sign_ed25519ph_state; + +SODIUM_EXPORT +size_t crypto_sign_ed25519ph_statebytes(void); + +#define crypto_sign_ed25519_BYTES 64U +SODIUM_EXPORT +size_t crypto_sign_ed25519_bytes(void); + +#define crypto_sign_ed25519_SEEDBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_seedbytes(void); + +#define crypto_sign_ed25519_PUBLICKEYBYTES 32U +SODIUM_EXPORT +size_t crypto_sign_ed25519_publickeybytes(void); + +#define crypto_sign_ed25519_SECRETKEYBYTES (32U + 32U) +SODIUM_EXPORT +size_t crypto_sign_ed25519_secretkeybytes(void); + +#define crypto_sign_ed25519_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_ed25519_BYTES) +SODIUM_EXPORT +size_t crypto_sign_ed25519_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_sign_ed25519(unsigned char *sm, unsigned long long *smlen_p, + const unsigned char *m, unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_open(unsigned char *m, unsigned long long *mlen_p, + const unsigned char *sm, unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_detached(unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_ed25519_verify_detached(const unsigned char *sig, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519_keypair(unsigned char *pk, unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_seed_keypair(unsigned char *pk, unsigned char *sk, + const unsigned char *seed) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_pk_to_curve25519(unsigned char *curve25519_pk, + const unsigned char *ed25519_pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_curve25519(unsigned char *curve25519_sk, + const unsigned char *ed25519_sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_seed(unsigned char *seed, + const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519_sk_to_pk(unsigned char *pk, const unsigned char *sk) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_init(crypto_sign_ed25519ph_state *state) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_update(crypto_sign_ed25519ph_state *state, + const unsigned char *m, + unsigned long long mlen) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_create(crypto_sign_ed25519ph_state *state, + unsigned char *sig, + unsigned long long *siglen_p, + const unsigned char *sk) + __attribute__ ((nonnull(1, 2, 4))); + +SODIUM_EXPORT +int crypto_sign_ed25519ph_final_verify(crypto_sign_ed25519ph_state *state, + const unsigned char *sig, + const unsigned char *pk) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_edwards25519sha512batch.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_edwards25519sha512batch.h new file mode 100644 index 00000000..eed158aa --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_sign_edwards25519sha512batch.h @@ -0,0 +1,55 @@ +#ifndef crypto_sign_edwards25519sha512batch_H +#define crypto_sign_edwards25519sha512batch_H + +/* + * WARNING: This construction was a prototype, which should not be used + * any more in new projects. + * + * crypto_sign_edwards25519sha512batch is provided for applications + * initially built with NaCl, but as recommended by the author of this + * construction, new applications should use ed25519 instead. + * + * In Sodium, you should use the high-level crypto_sign_*() functions instead. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_sign_edwards25519sha512batch_BYTES 64U +#define crypto_sign_edwards25519sha512batch_PUBLICKEYBYTES 32U +#define crypto_sign_edwards25519sha512batch_SECRETKEYBYTES (32U + 32U) +#define crypto_sign_edwards25519sha512batch_MESSAGEBYTES_MAX (SODIUM_SIZE_MAX - crypto_sign_edwards25519sha512batch_BYTES) + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch(unsigned char *sm, + unsigned long long *smlen_p, + const unsigned char *m, + unsigned long long mlen, + const unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(1, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_open(unsigned char *m, + unsigned long long *mlen_p, + const unsigned char *sm, + unsigned long long smlen, + const unsigned char *pk) + __attribute__ ((deprecated)) __attribute__ ((nonnull(3, 5))); + +SODIUM_EXPORT +int crypto_sign_edwards25519sha512batch_keypair(unsigned char *pk, + unsigned char *sk) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream.h new file mode 100644 index 00000000..88dab5f6 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream.h @@ -0,0 +1,59 @@ +#ifndef crypto_stream_H +#define crypto_stream_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include + +#include "crypto_stream_xsalsa20.h" +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES +SODIUM_EXPORT +size_t crypto_stream_keybytes(void); + +#define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES +SODIUM_EXPORT +size_t crypto_stream_noncebytes(void); + +#define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX +SODIUM_EXPORT +size_t crypto_stream_messagebytes_max(void); + +#define crypto_stream_PRIMITIVE "xsalsa20" +SODIUM_EXPORT +const char *crypto_stream_primitive(void); + +SODIUM_EXPORT +int crypto_stream(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_chacha20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_chacha20.h new file mode 100644 index 00000000..40889755 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_chacha20.h @@ -0,0 +1,106 @@ +#ifndef crypto_stream_chacha20_H +#define crypto_stream_chacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_chacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_keybytes(void); + +#define crypto_stream_chacha20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_chacha20_noncebytes(void); + +#define crypto_stream_chacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_chacha20_messagebytes_max(void); + +/* ChaCha20 with a 64-bit nonce and a 64-bit counter, as originally designed */ + +SODIUM_EXPORT +int crypto_stream_chacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_keygen(unsigned char k[crypto_stream_chacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +/* ChaCha20 with a 96-bit nonce and a 32-bit counter (IETF) */ + +#define crypto_stream_chacha20_ietf_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_keybytes(void); + +#define crypto_stream_chacha20_ietf_NONCEBYTES 12U +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_noncebytes(void); + +#define crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX \ + SODIUM_MIN(SODIUM_SIZE_MAX, 64ULL * (1ULL << 32)) +SODIUM_EXPORT +size_t crypto_stream_chacha20_ietf_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint32_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_chacha20_ietf_keygen(unsigned char k[crypto_stream_chacha20_ietf_KEYBYTES]) + __attribute__ ((nonnull)); + +/* Aliases */ + +#define crypto_stream_chacha20_IETF_KEYBYTES crypto_stream_chacha20_ietf_KEYBYTES +#define crypto_stream_chacha20_IETF_NONCEBYTES crypto_stream_chacha20_ietf_NONCEBYTES +#define crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa20.h new file mode 100644 index 00000000..45b3b3e3 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa20_keybytes(void); + +#define crypto_stream_salsa20_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa20_noncebytes(void); + +#define crypto_stream_salsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa20_keygen(unsigned char k[crypto_stream_salsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa2012.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa2012.h new file mode 100644 index 00000000..6c5d303c --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa2012.h @@ -0,0 +1,53 @@ +#ifndef crypto_stream_salsa2012_H +#define crypto_stream_salsa2012_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa2012_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_keybytes(void); + +#define crypto_stream_salsa2012_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa2012_noncebytes(void); + +#define crypto_stream_salsa2012_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_salsa2012_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_salsa2012(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa2012_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa2012_keygen(unsigned char k[crypto_stream_salsa2012_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa208.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa208.h new file mode 100644 index 00000000..d574f304 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_salsa208.h @@ -0,0 +1,56 @@ +#ifndef crypto_stream_salsa208_H +#define crypto_stream_salsa208_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_salsa208_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_salsa208_keybytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_NONCEBYTES 8U +SODIUM_EXPORT +size_t crypto_stream_salsa208_noncebytes(void) + __attribute__ ((deprecated)); + +#define crypto_stream_salsa208_MESSAGEBYTES_MAX SODIUM_SIZE_MAX + SODIUM_EXPORT +size_t crypto_stream_salsa208_messagebytes_max(void) + __attribute__ ((deprecated)); + +SODIUM_EXPORT +int crypto_stream_salsa208(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_salsa208_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_salsa208_keygen(unsigned char k[crypto_stream_salsa208_KEYBYTES]) + __attribute__ ((deprecated)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xchacha20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xchacha20.h new file mode 100644 index 00000000..c4002db0 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xchacha20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xchacha20_H +#define crypto_stream_xchacha20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xchacha20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_keybytes(void); + +#define crypto_stream_xchacha20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xchacha20_noncebytes(void); + +#define crypto_stream_xchacha20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xchacha20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xchacha20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xchacha20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xchacha20_keygen(unsigned char k[crypto_stream_xchacha20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xsalsa20.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xsalsa20.h new file mode 100644 index 00000000..20034e34 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_stream_xsalsa20.h @@ -0,0 +1,61 @@ +#ifndef crypto_stream_xsalsa20_H +#define crypto_stream_xsalsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include +#include +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +#define crypto_stream_xsalsa20_KEYBYTES 32U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_keybytes(void); + +#define crypto_stream_xsalsa20_NONCEBYTES 24U +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_noncebytes(void); + +#define crypto_stream_xsalsa20_MESSAGEBYTES_MAX SODIUM_SIZE_MAX +SODIUM_EXPORT +size_t crypto_stream_xsalsa20_messagebytes_max(void); + +SODIUM_EXPORT +int crypto_stream_xsalsa20(unsigned char *c, unsigned long long clen, + const unsigned char *n, const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor(unsigned char *c, const unsigned char *m, + unsigned long long mlen, const unsigned char *n, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int crypto_stream_xsalsa20_xor_ic(unsigned char *c, const unsigned char *m, + unsigned long long mlen, + const unsigned char *n, uint64_t ic, + const unsigned char *k) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void crypto_stream_xsalsa20_keygen(unsigned char k[crypto_stream_xsalsa20_KEYBYTES]) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_16.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_16.h new file mode 100644 index 00000000..7b9c8077 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_16.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_16_H +#define crypto_verify_16_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_16_BYTES 16U +SODIUM_EXPORT +size_t crypto_verify_16_bytes(void); + +SODIUM_EXPORT +int crypto_verify_16(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_32.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_32.h new file mode 100644 index 00000000..9b0f4529 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_32.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_32_H +#define crypto_verify_32_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_32_BYTES 32U +SODIUM_EXPORT +size_t crypto_verify_32_bytes(void); + +SODIUM_EXPORT +int crypto_verify_32(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_64.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_64.h new file mode 100644 index 00000000..c83b7302 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/crypto_verify_64.h @@ -0,0 +1,23 @@ +#ifndef crypto_verify_64_H +#define crypto_verify_64_H + +#include +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define crypto_verify_64_BYTES 64U +SODIUM_EXPORT +size_t crypto_verify_64_bytes(void); + +SODIUM_EXPORT +int crypto_verify_64(const unsigned char *x, const unsigned char *y) + __attribute__ ((warn_unused_result)) __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/export.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/export.h new file mode 100644 index 00000000..a0074fc9 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/export.h @@ -0,0 +1,57 @@ + +#ifndef sodium_export_H +#define sodium_export_H + +#include +#include +#include + +#if !defined(__clang__) && !defined(__GNUC__) +# ifdef __attribute__ +# undef __attribute__ +# endif +# define __attribute__(a) +#endif + +#ifdef SODIUM_STATIC +# define SODIUM_EXPORT +# define SODIUM_EXPORT_WEAK +#else +# if defined(_MSC_VER) +# ifdef SODIUM_DLL_EXPORT +# define SODIUM_EXPORT __declspec(dllexport) +# else +# define SODIUM_EXPORT __declspec(dllimport) +# endif +# else +# if defined(__SUNPRO_C) +# ifndef __GNU_C__ +# define SODIUM_EXPORT __attribute__ (visibility(__global)) +# else +# define SODIUM_EXPORT __attribute__ __global +# endif +# elif defined(_MSG_VER) +# define SODIUM_EXPORT extern __declspec(dllexport) +# else +# define SODIUM_EXPORT __attribute__ ((visibility ("default"))) +# endif +# endif +# if defined(__ELF__) && !defined(SODIUM_DISABLE_WEAK_FUNCTIONS) +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT __attribute__((weak)) +# else +# define SODIUM_EXPORT_WEAK SODIUM_EXPORT +# endif +#endif + +#ifndef CRYPTO_ALIGN +# if defined(__INTEL_COMPILER) || defined(_MSC_VER) +# define CRYPTO_ALIGN(x) __declspec(align(x)) +# else +# define CRYPTO_ALIGN(x) __attribute__ ((aligned(x))) +# endif +#endif + +#define SODIUM_MIN(A, B) ((A) < (B) ? (A) : (B)) +#define SODIUM_SIZE_MAX SODIUM_MIN(UINT64_MAX, SIZE_MAX) + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes.h new file mode 100644 index 00000000..a03cc657 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes.h @@ -0,0 +1,72 @@ + +#ifndef randombytes_H +#define randombytes_H + +#include +#include + +#include + +#include "export.h" + +#ifdef __cplusplus +# ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wlong-long" +# endif +extern "C" { +#endif + +typedef struct randombytes_implementation { + const char *(*implementation_name)(void); /* required */ + uint32_t (*random)(void); /* required */ + void (*stir)(void); /* optional */ + uint32_t (*uniform)(const uint32_t upper_bound); /* optional, a default implementation will be used if NULL */ + void (*buf)(void * const buf, const size_t size); /* required */ + int (*close)(void); /* optional */ +} randombytes_implementation; + +#define randombytes_BYTES_MAX SODIUM_MIN(SODIUM_SIZE_MAX, 0xffffffffUL) + +#define randombytes_SEEDBYTES 32U +SODIUM_EXPORT +size_t randombytes_seedbytes(void); + +SODIUM_EXPORT +void randombytes_buf(void * const buf, const size_t size) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +void randombytes_buf_deterministic(void * const buf, const size_t size, + const unsigned char seed[randombytes_SEEDBYTES]) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +uint32_t randombytes_random(void); + +SODIUM_EXPORT +uint32_t randombytes_uniform(const uint32_t upper_bound); + +SODIUM_EXPORT +void randombytes_stir(void); + +SODIUM_EXPORT +int randombytes_close(void); + +SODIUM_EXPORT +int randombytes_set_implementation(randombytes_implementation *impl) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +const char *randombytes_implementation_name(void); + +/* -- NaCl compatibility interface -- */ + +SODIUM_EXPORT +void randombytes(unsigned char * const buf, const unsigned long long buf_len) + __attribute__ ((nonnull)); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_internal_random.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_internal_random.h new file mode 100644 index 00000000..2b2b7d6e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_internal_random.h @@ -0,0 +1,22 @@ + +#ifndef randombytes_internal_random_H +#define randombytes_internal_random_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_internal_implementation; + +/* Backwards compatibility with libsodium < 1.0.18 */ +#define randombytes_salsa20_implementation randombytes_internal_implementation + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_sysrandom.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_sysrandom.h new file mode 100644 index 00000000..9e27b674 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/randombytes_sysrandom.h @@ -0,0 +1,19 @@ + +#ifndef randombytes_sysrandom_H +#define randombytes_sysrandom_H + +#include "export.h" +#include "randombytes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +extern struct randombytes_implementation randombytes_sysrandom_implementation; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/runtime.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/runtime.h new file mode 100644 index 00000000..7f15d58e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/runtime.h @@ -0,0 +1,52 @@ + +#ifndef sodium_runtime_H +#define sodium_runtime_H + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_neon(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_ssse3(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_sse41(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx2(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_avx512f(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_pclmul(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_aesni(void); + +SODIUM_EXPORT_WEAK +int sodium_runtime_has_rdrand(void); + +/* ------------------------------------------------------------------------- */ + +int _sodium_runtime_get_cpu_features(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/utils.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/utils.h new file mode 100644 index 00000000..ac801512 --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/utils.h @@ -0,0 +1,179 @@ + +#ifndef sodium_utils_H +#define sodium_utils_H + +#include + +#include "export.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SODIUM_C99 +# if defined(__cplusplus) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L +# define SODIUM_C99(X) +# else +# define SODIUM_C99(X) X +# endif +#endif + +SODIUM_EXPORT +void sodium_memzero(void * const pnt, const size_t len); + +SODIUM_EXPORT +void sodium_stackzero(const size_t len); + +/* + * WARNING: sodium_memcmp() must be used to verify if two secret keys + * are equal, in constant time. + * It returns 0 if the keys are equal, and -1 if they differ. + * This function is not designed for lexicographical comparisons. + */ +SODIUM_EXPORT +int sodium_memcmp(const void * const b1_, const void * const b2_, size_t len) + __attribute__ ((warn_unused_result)); + +/* + * sodium_compare() returns -1 if b1_ < b2_, 1 if b1_ > b2_ and 0 if b1_ == b2_ + * It is suitable for lexicographical comparisons, or to compare nonces + * and counters stored in little-endian format. + * However, it is slower than sodium_memcmp(). + */ +SODIUM_EXPORT +int sodium_compare(const unsigned char *b1_, const unsigned char *b2_, + size_t len) __attribute__ ((warn_unused_result)); + +SODIUM_EXPORT +int sodium_is_zero(const unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_increment(unsigned char *n, const size_t nlen); + +SODIUM_EXPORT +void sodium_add(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +void sodium_sub(unsigned char *a, const unsigned char *b, const size_t len); + +SODIUM_EXPORT +char *sodium_bin2hex(char * const hex, const size_t hex_maxlen, + const unsigned char * const bin, const size_t bin_len) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_hex2bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const hex, const size_t hex_len, + const char * const ignore, size_t * const bin_len, + const char ** const hex_end) + __attribute__ ((nonnull(1))); + +#define sodium_base64_VARIANT_ORIGINAL 1 +#define sodium_base64_VARIANT_ORIGINAL_NO_PADDING 3 +#define sodium_base64_VARIANT_URLSAFE 5 +#define sodium_base64_VARIANT_URLSAFE_NO_PADDING 7 + +/* + * Computes the required length to encode BIN_LEN bytes as a base64 string + * using the given variant. The computed length includes a trailing \0. + */ +#define sodium_base64_ENCODED_LEN(BIN_LEN, VARIANT) \ + (((BIN_LEN) / 3U) * 4U + \ + ((((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) | (((BIN_LEN) - ((BIN_LEN) / 3U) * 3U) >> 1)) & 1U) * \ + (4U - (~((((VARIANT) & 2U) >> 1) - 1U) & (3U - ((BIN_LEN) - ((BIN_LEN) / 3U) * 3U)))) + 1U) + +SODIUM_EXPORT +size_t sodium_base64_encoded_len(const size_t bin_len, const int variant); + +SODIUM_EXPORT +char *sodium_bin2base64(char * const b64, const size_t b64_maxlen, + const unsigned char * const bin, const size_t bin_len, + const int variant) __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_base642bin(unsigned char * const bin, const size_t bin_maxlen, + const char * const b64, const size_t b64_len, + const char * const ignore, size_t * const bin_len, + const char ** const b64_end, const int variant) + __attribute__ ((nonnull(1))); + +SODIUM_EXPORT +int sodium_mlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_munlock(void * const addr, const size_t len) + __attribute__ ((nonnull)); + +/* WARNING: sodium_malloc() and sodium_allocarray() are not general-purpose + * allocation functions. + * + * They return a pointer to a region filled with 0xd0 bytes, immediately + * followed by a guard page. + * As a result, accessing a single byte after the requested allocation size + * will intentionally trigger a segmentation fault. + * + * A canary and an additional guard page placed before the beginning of the + * region may also kill the process if a buffer underflow is detected. + * + * The memory layout is: + * [unprotected region size (read only)][guard page (no access)][unprotected pages (read/write)][guard page (no access)] + * With the layout of the unprotected pages being: + * [optional padding][16-bytes canary][user region] + * + * However: + * - These functions are significantly slower than standard functions + * - Each allocation requires 3 or 4 additional pages + * - The returned address will not be aligned if the allocation size is not + * a multiple of the required alignment. For this reason, these functions + * are designed to store data, such as secret keys and messages. + * + * sodium_malloc() can be used to allocate any libsodium data structure. + * + * The crypto_generichash_state structure is packed and its length is + * either 357 or 361 bytes. For this reason, when using sodium_malloc() to + * allocate a crypto_generichash_state structure, padding must be added in + * order to ensure proper alignment. crypto_generichash_statebytes() + * returns the rounded up structure size, and should be prefered to sizeof(): + * state = sodium_malloc(crypto_generichash_statebytes()); + */ + +SODIUM_EXPORT +void *sodium_malloc(const size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void *sodium_allocarray(size_t count, size_t size) + __attribute__ ((malloc)); + +SODIUM_EXPORT +void sodium_free(void *ptr); + +SODIUM_EXPORT +int sodium_mprotect_noaccess(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readonly(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_mprotect_readwrite(void *ptr) __attribute__ ((nonnull)); + +SODIUM_EXPORT +int sodium_pad(size_t *padded_buflen_p, unsigned char *buf, + size_t unpadded_buflen, size_t blocksize, size_t max_buflen) + __attribute__ ((nonnull(2))); + +SODIUM_EXPORT +int sodium_unpad(size_t *unpadded_buflen_p, const unsigned char *buf, + size_t padded_buflen, size_t blocksize) + __attribute__ ((nonnull(2))); + +/* -------- */ + +int _sodium_alloc_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/version.h b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/version.h new file mode 100644 index 00000000..201a290e --- /dev/null +++ b/example/android/third_party/libsodium/libsodium-android-westmere/include/sodium/version.h @@ -0,0 +1,33 @@ + +#ifndef sodium_version_H +#define sodium_version_H + +#include "export.h" + +#define SODIUM_VERSION_STRING "1.0.18" + +#define SODIUM_LIBRARY_VERSION_MAJOR 10 +#define SODIUM_LIBRARY_VERSION_MINOR 3 + + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +const char *sodium_version_string(void); + +SODIUM_EXPORT +int sodium_library_version_major(void); + +SODIUM_EXPORT +int sodium_library_version_minor(void); + +SODIUM_EXPORT +int sodium_library_minimal(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a b/example/android/third_party/libsodium/libsodium-android-westmere/lib/libsodium.a new file mode 100644 index 0000000000000000000000000000000000000000..b46cb5dcd3fe18c95b05f667defd6eebddd15605 GIT binary patch literal 579332 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