-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsign_t_n_mt_test.cpp
More file actions
193 lines (175 loc) · 80 KB
/
sign_t_n_mt_test.cpp
File metadata and controls
193 lines (175 loc) · 80 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#include <thread>
#include <future>
#include <vector>
#include <google/protobuf/stubs/common.h>
#include <exception/located_exception.h>
#include "gtest/gtest.h"
#include "crypto-curve/curve.h"
#include "../../src/multi-party-ecdsa/cmp/cmp.h"
#include "../../src/multi-party-ecdsa/cmp/util.h"
#include "../thread_safe_queue.h"
#include "../message.h"
#include "../party_message_queue.h"
using std::string;
using std::vector;
using safeheron::bignum::BN;
using safeheron::curve::Curve;
using safeheron::curve::CurvePoint;
using safeheron::curve::CurveType;
using safeheron::multi_party_ecdsa::cmp::sign::Context;
using safeheron::mpc_flow::mpc_parallel_v2::ErrorInfo;
void print_context_stack_if_failed(Context *ctx) {
std::string err_info;
vector<ErrorInfo> error_stack;
ctx->get_error_stack(error_stack);
for(const auto &err: error_stack){
err_info += "error code ( " + std::to_string(err.code_) + " ) : " + err.info_ + "\n";
}
printf("%s", err_info.c_str());
}
void print_signature(Context *ctx) {
std::string sign_info;
sign_info += ctx->sign_key_.local_party_.party_id_ + ": \n";
std::string str;
ctx->m_.ToHexStr(str);
sign_info += " - digest: " + str + "\n";
ctx->r_.ToHexStr(str);
sign_info += " - r: " + str + "\n";
ctx->s_.ToHexStr(str);
sign_info += " - s: " + str + "\n";
sign_info += " - v: " + std::to_string(ctx->v_) + "\n";
printf("%s", sign_info.c_str());
}
std::map<std::string, PartyMessageQue<Msg>> map_id_message_queue;
#define ROUNDS 5
#define N_PARTIES 3
#define THRESHOLD 2
bool sign(std::string sign_key_base64, std::vector<std::string> participants, BN m, std::string ssid) {
//preprocess sign key to fit t-n threshold
std::string t_sign_key_base64;
bool ok = safeheron::multi_party_ecdsa::cmp::trim_sign_key(t_sign_key_base64, sign_key_base64, participants);
if (!ok) return false;
//create context (define in cmp/sign/context.h)
Context ctx(participants.size());
ok = Context::CreateContext(ctx, t_sign_key_base64, m, ssid);
if (!ok) return false;
std::string status = "<== Context of " + ctx.sign_key_.local_party_.party_id_ + " was created\n";
printf("%s", status.c_str());
//perform 4 rounds MPC
for (int round = 0; round < ROUNDS; ++round) {
if (round == 0) {
ok = ctx.PushMessage();
if (!ok) {
print_context_stack_if_failed(&ctx);
return false;
}
} else {
for(size_t k = 0; k < participants.size() - 1; k++) {
Msg m;
ThreadSafeQueue<Msg> &in_queue = map_id_message_queue.at(ctx.sign_key_.local_party_.party_id_).get(round - 1);
in_queue.Pop(m);
ok = ctx.PushMessage(m.p2p_msg_, m.bc_msg_, m.src_, round - 1);
if (!ok) {
print_context_stack_if_failed(&ctx);
return false;
}
}
}
ok = ctx.IsCurRoundFinished();
if (!ok) {
print_context_stack_if_failed(&ctx);
return false;
}
status = "<== Round " + std::to_string(round) + ", " + ctx.sign_key_.local_party_.party_id_ + "\n";
printf("%s", status.c_str());
std::string out_bc_message;
vector<string> out_p2p_message_arr;
vector<string> out_des_arr;
ok = ctx.PopMessages(out_p2p_message_arr, out_bc_message, out_des_arr);
if (!ok) {
print_context_stack_if_failed(&ctx);
return false;
}
for (size_t j = 0; j < out_des_arr.size(); ++j) {
Msg m = {ctx.sign_key_.local_party_.party_id_, out_bc_message, out_p2p_message_arr.empty() ? "": out_p2p_message_arr[j]};
ThreadSafeQueue<Msg> &out_queue = map_id_message_queue.at(out_des_arr[j]).get(round);
out_queue.Push(m);
}
}
ok = ctx.IsFinished();
if (!ok) {
print_context_stack_if_failed(&ctx);
return false;
}
print_signature(&ctx);
return true;
}
TEST(cmp, sign_t_n_mt) {
//The common parameters for different curves
string ssid("ssid");
std::string party_ids[N_PARTIES] = {
"co_signer1",
"co_signer2",
"co_signer3"
};
BN m = BN("1234567812345678123456781234567812345678123456781234567812345678", 16);
std::vector<std::string> participants = {"co_signer1", "co_signer2"};
std::vector<std::future<bool> >res;
res.resize(participants.size());
//SECP256K1 sample
printf("Test cmp sign with secp256k1 curve\n");
//SECP256K1 sign key
std::string sign_key_base64_arr[N_PARTIES] = {
"EAIYAyKFEwoKY29fc2lnbmVyMRICMDEaQDRDMzBBNjI2N0E2MkVDQzlBOUJCMzRDQjk3Q0Y5QTE4NTUwNDgyRDJDMUEyOEYxMjYzNUFDQzVGMUJFNTdGNEMijwEKQDUzMjAyM0U5MjU3NkFENTc5QTgxMzBCMDk4OUY5QTQyRjdBMjM4QjAwQTk1NTBFMkYwNTczRURENkJDNzJCOUUSQDJFRDk0RDk1NkJBODRENDMzMTg1NENGOTk5OUEwQjJDMURFQTE5RTc5OTYwMEFBMjIwQkQ1QUE1QkI5NTY2MTYaCXNlY3AyNTZrMSqPAQpAMThCQUEyMjZFMkU4RjFDRURBRUM0Njc2MjZDRjBFRkI1NkE0RUZFODY2RjU3NjdEQkQ4RThBODM1QkNBQUVBORJAQjgyNTE4OERCRUExNDY3QzRBREE0MjM0RTcwNkJCQzRBQkZENEQ2M0VFRENCREJGMzEzN0RGRTU2OEI4Njc0NhoJc2VjcDI1NmsxUoAEQTYyMjc1NkMxNDBDODNFQTBFQUMxRUJCOTIxQzQ5ODkxMDVBMDgxOUQ2OUY3M0VDNDRCMDAzMUNGNTA3M0IxRjdDQ0UyMzcwQ0NFNzY0REYyRTMwMjQ5Q0QyMDc1M0YyMUUzQTQzMkYxNDNFRjU1MjkzNEIyNTlGODQxNThDQTIxMkQ0Rjk5NzRENUU4ODc0NzJFOTcwMDFEMzg0Q0VEOUMyOEY5OTcwQzk1NjI4NjM0MTA0QzhEMjM0Q0IxMUQzRDNDOTlDOTAxNTI0NTQyQjNDRkRCMDE2NzQxMDcwMjQzMTA4NDY1QUU2NDFCRThGNUU4RkY0RDY1NzJDOEIwQjgxNDgyQ0RBQUVENEFGNkI0MUMxQjU3QjY2QzA2REVCRDk1RkMyNzhFMzMxOTAxQUVEQ0I3NjNDQTU5MjI5MTQwMzJGNzNENDhGMUNEN0FENTE5MzE4RTNCNURBMkVEMjQ2Q0Q3MTE4OTJGQzYzQzVCQ0FGMjgwMzhFQTlGQUJDMzA3Q0JGMTk4NDQwNEM1MzE1OTBGOUEzNDk2MzU5Mzg5OENFRjNGNDcwN0JGRTE0OUFEMkE1OTZCMUEyQkQzQUU2NTgwQzBCQTgxODM0RTI0NEEyOTU5ODk3OTdFRjUzRDNBMjVDRDY4NTY1QzM0N0Q5RTBBQTYzOTM2M0MyNTlagAQ2RDJBQzM4NjZERTY0Mzc0N0ZCMzRCRkYxRjYxMEVEQkRFQTY3RjE5OTYxNEVCNkQ4MDc1NjAzQUFENDNENkM2RUNFNDVDQTFFMUMyMEQyMUI4OTkyOEEwNzc1RDBBMzk3MkUwMjlFQTQ1Rjk4OEYzNDlCQzEwNzVBRTREMDQxRDYzMUVCMEYzNDc0NDFGOTZFRTQyRTgxMzM5RkRCNDRDRkIyMEY5NEY2MjExQkQ2QzZENTA3NTQzM0M2MkMyODgyODA4ODM1MEY2QkVGOUUzQ0I1MkJFQjE1RjkxNEU4ODMzNzgzRjhGMzA2OTlGRTY5MTYxRkFCMDcwN0I2RjYzOTBBMjZDNDI1MTY0NDY2RDk1QzFGQ0UzMDRBNjc1M0U2NEVFOTRGRTg5OEYzOEEyRTE5QjFEREVGMTY0MDI1Rjk5RUVBNTA4ODIyOTU3RkQ4MTA5NUQ3OTk2QjU5MDk3NTUzOTEzREE0RUMyNDE3NEUzNkE4QUZBQ0JGQjQ0MDgwN0MyMzM0NjQ1RjA0MTQ3OUFGOTVFMDkxQ0REQzM2MTY2MzMzOTA0ODM0Q0I4MDJGODU3QTY3QzhCODdDQkNGQUE3NDY1RjYxOTIxQUFEQjA4OThGQkUzOENFNTk0NjlFQTU5NTg4N0I2RjZEMzU0MTU1NEM1QjVCREU4QkMyOGKABDM5MjAxMzhBMDEyN0VEODQ3NTQ0MDkzQTJFMzIxMjdGNzJDODcyQ0YwM0IxN0JGM0UzMjJDRkM5Njg2QzU2OEJERDA2QTE2NERDRjlCMzBEM0UxNDk4MzdBRkYwQ0M3QkUxMTJBNDVDRjNBOTNCNjJFNTA5QjU2NjNFNDI3MjcyNDIzQTI2M0VBMTNFOUJGNDgwN0EwMkJBNjVFQTBCRjI3N0I1Rjc2NDE0MUNCOTFBMEM1Q0Y3MUNDNTgzQURBMzcxNzE1QjI4RkFGNzBBQTAxMjI1NEIyQkFGMzZGODI2RDFEQjlFNDIyRjU0MEJFRjg2REZDMDZERUVBOURDRURFQTI0OEJFQkVGQzQ1NDA3NjhDQThFNDJGRkMwMTYzNTYyMzhGMkU3NDQ3MTM5MEI1N0QxNTVGQjk1RDFDMDlCODI3NTgxQTI0NURCRjMwOEE5RDY4QzE4NzM1QzQxOTU4RkIxQ0Y2RjY4NjUwOEJGMkJENDYyMjFDRTdGNjAyMzg2MjQ5NjA4MDRDM0E2NDJGMjQwNUY1OTA2N0I3RkJERjZCNzA5NjNFRTRBMUQyNzgzRTI2RDBCRUIzNTg0NEU2NTE3NkU1M0EzQjgzQUM0RjI3MDU4M0Q1QzM5NzQxRDBEN0YyNENFOUU3QUEzMTRBRjQ5RDA2RkE4QUVBQzRGaoACRDFFMEVCMEZBOUIxNkZCNjUyQkU1M0Q0OEI2M0I5RDBBODM4NDA1QjgwN0JGQzY1M0VGQ0M5OUE0MjVCNjYxNDJGNzc1MzgxQTdBM0QwNzQwRjc2M0UwMTk3QkEyOTY2OUREQUM4OUY3NEI1REU3NUIzQ0E0NkFGQ0Y1MDgzRjc2MjI2MUVCRjEyNTk2MzE3QTIzQjcxRUNFMUE1MkVCRDUwQTM3NURGODAyQzg3OUY2MDMwQ0VFOTI4NTFGREMzQkQ3MkJFNkJFREU4OTM2MEZDODdFQzBCNTZENjc3MTZGQzZFMkFFNzE5MjI0NUE0RDkwRUI4NkIwOTNBMDVDQnKAAkNBQTRBNUI1RjIzQTY5N0Q5OTlBNzVDRDEyNEI0NjM1MjBCMDNFN0IyOTM3NDJFNkMzODE0N0YzQ0FBQTkxMzRDRDg4OTA2MjRDMTdBNjM2NUZERTgzMTFFRTI0QTJEODY5NTIwNjNFNEJEMERBRjM1RENFRUUwQzUzOTIzRkE5RUQ2REU5OUE1REI4M0MyNTM0QkZFN0ZCOTAxNzVBRjNBQzI0MzAxMjVCMkREN0I3NEIwMkVDQUE2ODYwMTA3NzVCNzEyRkUxRjcxMzlDRDg1OTNDNjA3NzYxRTU2ODI4Mzg1MTg1NzNFQjNFNjc3ODY3N0FDMDFDNUNDQjMzRUIqvQ4KCmNvX3NpZ25lcjISAjAyIo8BCkA5MEUyRTEwQjg0QkIxNDVFODNEQUVBQjU5MTlFQkM2QjlBOTU4RTNGRkVFNDc0NTc3RjA3RTNBMTA4MjZENjhGEkA1MDFBMkYzQTA4NzUwQUY5QjhDRUNCRUU4NkFCMkY3M0ExNjdDQUM4RDE0NEMxQUI4OEI1MUIyRDEwNUMxODlGGglzZWNwMjU2azEqjwEKQEZDQTI3OTY3QjdGNzEyQjA1MTE3RjMzMDEwQTU5REMzMDMxQzY2MjRBRDE1NjRDQkYyNjlEM0YzNzcwNEQ1MTYSQDlBNDIwNEI3OTNGM0QyQzY1QjIxNEZERTE2Q0U4MTA2MTk5NjM0N0YxNjdCRjFENzE0MEM0ODI4NkNEQUUxMjAaCXNlY3AyNTZrMVKABERFOUUzNjBBQjc4QzBERjE1NkRDQUM4NTU2NjZEM0Q3NzlGMDBDRTg2OUI3NkM4NTZGOEZDNjdGQTRBNDREN0ZCRDkzMzgwRjZGNjFBRTIwMUU1N0E0NUNBRDU2MjZFOTU0RURFM0MxRDI3NjRDRDRCMDI1MDAwRUNFRDI1NDg4MUM3NDEzNkY2NzhERDlEODQ1RkE1MDIyMDA2RjJDMUJCQ0EyNzgxREZCRjY3NTFDREI2RUREQ0JGNUM4N0RFOThFQkY5RkVFMjA3QjI1MzFFNTIxOTc1QzE2NDg5QUI2OTEzQzE2NDA4QkJFOEM5MTA4N0U1OERGQzBCOUUwMzREMTU0QzMxQ0MxNkQwMDdBOUMwOEVGRUI0QTg0NThBQ0Y5MzEzQ0ZCOEMxQjlBRTVEM0E4ODdGMUM5RjY4NkVEOUUyNkI5NzgzODE2OTU5OUZCRjQ0RTY2OUU5QkQ5NUFGNUZCMjhBRkJCODRFNjRGNDkwMkQ4MkU5MjNDQkJFNTI0NkVCMjY3MDlDRkQ5N0YwOERGQTI4ODk2Qzk0MjFEOEJCQTFGMDkwNzk4RjA4RDY2RDY2RjlFM0ZERjM3RDMzNzMwNjlCRDcwMDIzRUFGMEQwNzk1NjU3QUQwMEVBRkRFQUNGNzQ0NTRCNzIzOEJGNUIyMkRBRTgzMDYyNjFEWoAEOTlFMjU2QjY0NTBFNDkwMkUxREMyQTVCMUZBNDIyNEQyQjUzOTVCQTRCRDVBNURDQ0Q2QzExNzkyQjRDMDEyODhCMDAwMUNGNjkwRUQwM0E0RTRFMUFDMEM4MUQ3ODAxRUExQjQ4Qjk3MjE0NERCNDI3NkJFNEIyNUEzN0I4NUI4MDlFM0RCMzA5RjFEODBEQjU2QUM4RUU2QTUwRkRFMDNFNUI4ODE2QkY3RkFDMTZEMjkxM0EyQzMxOTc2RThCQzYyODUzNjkxNjY3NkNFRDFGRkZBRjI1NDVBNzhEMzgxMjkzMEQ1RUQ0ODk5OUQ0MkQ0QUQ3NUQ2NjI2ODcxOUY3QTE1ODMyQ0U3NDkzMkRGMDFDRjM3NTE1NkIyMTcwNzFFMUMwRkUwQjM3MEVEMkQzNEZEQjBGMjQwMzFBODhDNTAxMDE5Q0NGMjYyNTkxMkE1REIzNzgxQ0Y5MENDNDdFOTY3QTI1QUQyQkRDQzc3MTBBRjcyOTM4QjI0MDczMjUyNDRCOEUzQzUyMTNGNzBEQUY0NkRFMjkwRDA0MjVGRDk5REM4NTUxM0RGNjQxNzExM0NBQkZDRkM2OTdERkVDRTMzOTIyQkU4RkVGNkY1OEIyQUMzQ0Y1NkFGQzEwMjk3QzRDQzNDOTNFOTkzN0ZFNDQ3QjlDOEFBMzIwRTZigAQ2NjRCQzgyQzE2MUU0OEY5N0ExOTVDMDdGOEY3ODgwQUY4ODQ5OUE0MzRCMzlBODc3NzkxNjIzOEJBODk4QUI3MUMwMkZCMjAzODM2QkVGNDdDODFCMjY4NzRCQTdEQzU1NDNDQ0QwRUI3Q0Q2MjQ2QjgwQzk1OTlCRkYzODY3MEE3NkYwQjBCQTFGNjcxREU1Njc3RUU1QzBENzlGOUVERjEyQTBCMDgwOUZCQ0EwMkM4MDNCOTQ2RDAxNTlCNzYwMkNBMkYzRUJGNjM0NEVEMjQ1QUY0QzNGRkRDRjU1Q0QzM0MxNzZBQTg5QzcwQUEwMDJFNEM5QTgzMTFGNEIwQzhBODMwQTUzN0FGNjQ3NkVGOERBMTcwMDU3OEUzRTdDRDFBRjRBNEZFRUVFMUVGMUU2RTRDMTFBMDJDOEFBNDlBNkIzOENGREUyOTZDNjJENzc1MTg1ODhCREMwNTBDNDUwQkIzRThGMjA5MzQ2RkM4QTA1MjJGQUQwQUZBOEQzNDY1MDA5QUFGMDBCQUY3NUQ5Nzc5QjcwMDE5MTRCRTc3MzY0OEFEODE5M0YxQ0U4OTZENkMxQjc0M0ZGNUI5Rjk3MTExNUIzMjI0MjY1MEQyOEVGRjY0NDhBN0M2NDY1RERDRTVCMDQzM0MzOTQ3NTVCRjRDQkU1QzFDQkRFOSq9DgoKY29fc2lnbmVyMxICMDMijwEKQEY4RThCQTREQzE0NkU1NEU1NEMxNDVBNUJBNDQ1NkRCOEIxNDY3OTFDOTJGQjIxMjYzQzc5RTE3RDcxNTE2MTMSQDRBQzhCOUNCMDM1RDdCRTYxMjRDQzBBMDlBRDhCRDNGMERFN0ZEODQxODM2QjdDNjg3MTRDQ0ExNDM5RUY0REMaCXNlY3AyNTZrMSqPAQpARTVGMjYzQkVDMzMzNzY3MUNERTZFMzM2QjI2RDQ3MjY1RUNFRDNBOEM0QjM1MThFREJERDhDRDYxMDIyQTU3MhJAQjA3ODM2RjYxNTI2NThCRkJFQTQwMkQwRkI1OTc2MjQzQzdBMEM2NUQ5MkIxNUM1NUFGM0M5NEUyNzdEQUJGORoJc2VjcDI1NmsxUoAERjFGREUxMjA0QTUyQUU1NTVFNUE3NjNCM0YxREIyM0RENjk4QjIzRjg3QjEwRUM3NUVCQUNFQkRGOUY0NjVEREY1MDE3NTI3RTBGRDcyRkYwMjBFRjRBQTQyOTY3RUYyMTA3NjhFNjA5NTYwNUU5MTVCRDZGMjUwRDg5NUVCNDgyRDRFNzhENTc0QzI5QTJEMDhERUMwOEFFQTc2Q0Y3ODhBODEzQjYyODQxRDc2NDE1ODBDRjI5RDIzRkE3RTVCMzhDNzM1NjM1NTVCMUZCRTg3Mjk5MzE5NDMzRjc5NjdCRTRCQzgzRDU1RjgxOEE2RTUzMTE0OUZFQzg3Nzc4MzIxOENEQjdCQzgxRjY2QTEwNDM0QTk5Mjk1MkE2NjFBMDRBQjIyRUM3MTY0MDVEN0U1ODg4QUQyREY3MzIxMjhEMUM5NjYwNUI3ODdBNDZERTFGRTBCQzU3QTE3MDM4MzRBQzQ1MTU1REYyMDg0ODlDN0FFQUE4MzM4OTA0MzNFQ0ZCOUU3NzY2NDE1MzQwN0UyQ0E5NTBCREIyQ0ZGMDg1QTgxMTVCMUFGMzlEMTM5MDFBRDdGRDlFQTJGQ0I3NkJENUFCOUYxNDY0MjhBMTMzQjRFNkU0OTU0MkE0MkFCQjI4ODRGMjhCMENFMjVCRDRCRTZDRUMyRjEzMDlBOURagARENTcwQ0ZGN0MzNjRDRjUzOTg1NDQ3M0MxODg2QkFDMjBEQjcxNzk1NzRFNjU4NDdEMDcyRTY5MkExMjkzOEMyQjIyMTRBQURDMUYxREU1MTcyRkI2MjE4MkYwODYyODMxRUIyQUU3MUU5MzM0RUYyNzIyMEY4QTc2MUE2OEIwNDdGQzI1Rjg3RUUyOUNENTUwMUJENDRENkJFRTZCQTcxMDBDM0U1RDJCQTdCN0QyNkZFRjE5NzExRTlCNjZDMzQ2MjE2NDY4QzJFMjNGOTJBQUVDQzI1MzI0REE2QTJEQTE2OTU5NjMzRThENjBGNTFGQjYzRjU0QTg0RUQ4NzgwNjg3NjAxMThFQUYzMjFGQUQ0RTQ0NDNDNUJBOUYyRTMxMjVBMTU5ODcwRjcxNjk1NTVGNkNENzM0RDIwMjU2RjM3MkYxNUZCMkQzNUE1QjY4M0ZGMDlFMENGQkVEQzM5RTI4QkI3NUQ5NzlFNURENkJBRDVDNTRERDYwNTVFM0MyRkZGMzBFQThDRjI2NTg0QzgxQTVCQUJCODI5MEMxNzNBRDZCMjNGOUEzNkY2RjYyM0E1RkM2NUYwODJBOTFGMDQxMUQwOUMxNjMzQjVBMDIyNUUzOEI5NUE2REU0MUYyMEJCNTJDRjY5OTUxMzBDOUM0MUVDM0NEQUI1OEYyMmKABDQ1Qjg0QTBDRjM0MzMyODk5RTA5QUI5QTQ5OTFEMzc0OTQ4MEZEODFEN0ExNzAyNzdGMzNDNEQxNjU0NUREMEIzNTIzMzBFMEFBRDEwOTYwMTEyQjUyMjdFMDg4NjZBQ0Y4NDc3Njk5MURCOURFODlFQ0E1NjEzNDFEN0RCOENBNkIzRjJDODk3MDY5MzE5M0JCNjcwQUE3RjlDOUI3M0MyMDExRDFGMjU3MEQyMjlBMzc4Q0YwNTdFMzNCNkE5RDlGNjczMzAwNEU5OEQ1MjI2QjVFRDBBQjA0MUVGQzM3QkUxMTYxQUEyNjM4RDFFOUQxOTVBNjJDN0Q3Q0ZDMzJGREJCRkRBQjI2QkZFMEUzRjhEMjM1N0JGQjJFRDVBNzJBOTI3NzczNzQwQjI4NTA0QTQwOTI1MDZBMUE4RTIwMjAwNzFFNzE5ODk2ODE1QjA2MjFFNThGQzZCQ0VDQjY0MkQ2MjJCM0FDQjZGQTYwQkYxNjhFQzgzNUJENjA2MTBDRDk5ODIwNjAwOENEMTJBQzZBMjc1QzYxQzIxQzU0RkYzREQ0QTg1ODdFQjc4MEFEQTVFQTQyMDA5MzM5RjJCRkU3M0YwMjc3RDQxNjk4NzFFMEVCRjcxQ0YwMUVCN0RENkE4QjVBMkY0QjNCNTA0QkUxM0ZDREQ2RDI4NTVCMo8BCkBEMDNBREZGMjdGMERERkI0OTNGMjJGMkREODU3RDAzRkM0Q0YwRjU0NDlDODNEM0M3OTY0Qjk2RDY3RkI1NDE5EkA1QTU3NkNBQTIzRDAyREZGQjg0RkU2Q0YwMkQ1QjVEQTQyNUJBMkExRTU0RThDQUE4MDFCNUZDOUZFMTM0Q0JEGglzZWNwMjU2azE.",
"EAIYAyKFEwoKY29fc2lnbmVyMhICMDIaQEQ1REI1NkMyN0M5RDcwQjYwQzQ0OEQ0MjE4Mzg1NUMxMURDQUEwNTBBMEY5RjJGRTFDRTk0MTQyMzQzN0MwRkIijwEKQDkwRTJFMTBCODRCQjE0NUU4M0RBRUFCNTkxOUVCQzZCOUE5NThFM0ZGRUU0NzQ1NzdGMDdFM0ExMDgyNkQ2OEYSQDUwMUEyRjNBMDg3NTBBRjlCOENFQ0JFRTg2QUIyRjczQTE2N0NBQzhEMTQ0QzFBQjg4QjUxQjJEMTA1QzE4OUYaCXNlY3AyNTZrMSqPAQpARkNBMjc5NjdCN0Y3MTJCMDUxMTdGMzMwMTBBNTlEQzMwMzFDNjYyNEFEMTU2NENCRjI2OUQzRjM3NzA0RDUxNhJAOUE0MjA0Qjc5M0YzRDJDNjVCMjE0RkRFMTZDRTgxMDYxOTk2MzQ3RjE2N0JGMUQ3MTQwQzQ4Mjg2Q0RBRTEyMBoJc2VjcDI1NmsxUoAEREU5RTM2MEFCNzhDMERGMTU2RENBQzg1NTY2NkQzRDc3OUYwMENFODY5Qjc2Qzg1NkY4RkM2N0ZBNEE0NEQ3RkJEOTMzODBGNkY2MUFFMjAxRTU3QTQ1Q0FENTYyNkU5NTRFREUzQzFEMjc2NENENEIwMjUwMDBFQ0VEMjU0ODgxQzc0MTM2RjY3OEREOUQ4NDVGQTUwMjIwMDZGMkMxQkJDQTI3ODFERkJGNjc1MUNEQjZFRERDQkY1Qzg3REU5OEVCRjlGRUUyMDdCMjUzMUU1MjE5NzVDMTY0ODlBQjY5MTNDMTY0MDhCQkU4QzkxMDg3RTU4REZDMEI5RTAzNEQxNTRDMzFDQzE2RDAwN0E5QzA4RUZFQjRBODQ1OEFDRjkzMTNDRkI4QzFCOUFFNUQzQTg4N0YxQzlGNjg2RUQ5RTI2Qjk3ODM4MTY5NTk5RkJGNDRFNjY5RTlCRDk1QUY1RkIyOEFGQkI4NEU2NEY0OTAyRDgyRTkyM0NCQkU1MjQ2RUIyNjcwOUNGRDk3RjA4REZBMjg4OTZDOTQyMUQ4QkJBMUYwOTA3OThGMDhENjZENjZGOUUzRkRGMzdEMzM3MzA2OUJENzAwMjNFQUYwRDA3OTU2NTdBRDAwRUFGREVBQ0Y3NDQ1NEI3MjM4QkY1QjIyREFFODMwNjI2MURagAQ5OUUyNTZCNjQ1MEU0OTAyRTFEQzJBNUIxRkE0MjI0RDJCNTM5NUJBNEJENUE1RENDRDZDMTE3OTJCNEMwMTI4OEIwMDAxQ0Y2OTBFRDAzQTRFNEUxQUMwQzgxRDc4MDFFQTFCNDhCOTcyMTQ0REI0Mjc2QkU0QjI1QTM3Qjg1QjgwOUUzREIzMDlGMUQ4MERCNTZBQzhFRTZBNTBGREUwM0U1Qjg4MTZCRjdGQUMxNkQyOTEzQTJDMzE5NzZFOEJDNjI4NTM2OTE2Njc2Q0VEMUZGRkFGMjU0NUE3OEQzODEyOTMwRDVFRDQ4OTk5RDQyRDRBRDc1RDY2MjY4NzE5RjdBMTU4MzJDRTc0OTMyREYwMUNGMzc1MTU2QjIxNzA3MUUxQzBGRTBCMzcwRUQyRDM0RkRCMEYyNDAzMUE4OEM1MDEwMTlDQ0YyNjI1OTEyQTVEQjM3ODFDRjkwQ0M0N0U5NjdBMjVBRDJCRENDNzcxMEFGNzI5MzhCMjQwNzMyNTI0NEI4RTNDNTIxM0Y3MERBRjQ2REUyOTBEMDQyNUZEOTlEQzg1NTEzREY2NDE3MTEzQ0FCRkNGQzY5N0RGRUNFMzM5MjJCRThGRUY2RjU4QjJBQzNDRjU2QUZDMTAyOTdDNENDM0M5M0U5OTM3RkU0NDdCOUM4QUEzMjBFNmKABDY2NEJDODJDMTYxRTQ4Rjk3QTE5NUMwN0Y4Rjc4ODBBRjg4NDk5QTQzNEIzOUE4Nzc3OTE2MjM4QkE4OThBQjcxQzAyRkIyMDM4MzZCRUY0N0M4MUIyNjg3NEJBN0RDNTU0M0NDRDBFQjdDRDYyNDZCODBDOTU5OUJGRjM4NjcwQTc2RjBCMEJBMUY2NzFERTU2NzdFRTVDMEQ3OUY5RURGMTJBMEIwODA5RkJDQTAyQzgwM0I5NDZEMDE1OUI3NjAyQ0EyRjNFQkY2MzQ0RUQyNDVBRjRDM0ZGRENGNTVDRDMzQzE3NkFBODlDNzBBQTAwMkU0QzlBODMxMUY0QjBDOEE4MzBBNTM3QUY2NDc2RUY4REExNzAwNTc4RTNFN0NEMUFGNEE0RkVFRUUxRUYxRTZFNEMxMUEwMkM4QUE0OUE2QjM4Q0ZERTI5NkM2MkQ3NzUxODU4OEJEQzA1MEM0NTBCQjNFOEYyMDkzNDZGQzhBMDUyMkZBRDBBRkE4RDM0NjUwMDlBQUYwMEJBRjc1RDk3NzlCNzAwMTkxNEJFNzczNjQ4QUQ4MTkzRjFDRTg5NkQ2QzFCNzQzRkY1QjlGOTcxMTE1QjMyMjQyNjUwRDI4RUZGNjQ0OEE3QzY0NjVERENFNUIwNDMzQzM5NDc1NUJGNENCRTVDMUNCREU5aoACRjgxQ0NDODNGNUU4NUQzREYyQTIzNTcxRDg2ODMxNjAwRTc4RkVEOUI5MUVCNTc1NTI0MTc0NzNDRjFBRUQ3OTQwNDQwRjI5MzkzQ0I3MUYwOTQ1NjE1MjQ3MkM4RDAyQkE1RjQxODQ4RTY5MzIyNDZDOEREMzIxMzIyN0Y3MzE3NDJERUQwNzlEMEEwRTIzRDQyOTJGQUY4OUI0NzM1NEREMUNDNTQ4QzdDQkJDQ0VBNUVEQjkyNzhDRjdGRDhEQ0NFOEExMkYwRUZGMkQ2Q0Q0QTNCNkQ2OTAwQzZDQ0FBMTNDNEVCNURDNzlEMTgyMjU1OEVENzY2QTBBNUYyQnKAAkU1QjFFRTg4QjU3RTYwNTlDQ0E0RTk3NkNDREJDMjY0RDY1RTJCQ0YyRDRENzE0OTY3MTREMDE4NzBFQjREQzJENTlDOEY0MzU0RTI3RUYwRjMyQzlFNzY3MjZCRjNDMjQ0RDhBNUNFQ0ZCQ0UwNUZCMzk0QUM5OEQ4NUFDNDk1MEFCNDEwMThGMjY2REQzNzI4MkNFM0Q5REJCMDcwNzNEMDI5ODdGRDVCOUUzMDU0RjBBRjA2MTQ3QjRCMkI2MUU4QUY4RDg1RDRBRkZCNUExNDk0QkYwNTMzMzBERTkyMDREOERCQTY4NTNEQzM1MDQ0MEI2QkRFMThGQzJCRDcqvQ4KCmNvX3NpZ25lcjESAjAxIo8BCkA1MzIwMjNFOTI1NzZBRDU3OUE4MTMwQjA5ODlGOUE0MkY3QTIzOEIwMEE5NTUwRTJGMDU3M0VERDZCQzcyQjlFEkAyRUQ5NEQ5NTZCQTg0RDQzMzE4NTRDRjk5OTlBMEIyQzFERUExOUU3OTk2MDBBQTIyMEJENUFBNUJCOTU2NjE2GglzZWNwMjU2azEqjwEKQDE4QkFBMjI2RTJFOEYxQ0VEQUVDNDY3NjI2Q0YwRUZCNTZBNEVGRTg2NkY1NzY3REJEOEU4QTgzNUJDQUFFQTkSQEI4MjUxODhEQkVBMTQ2N0M0QURBNDIzNEU3MDZCQkM0QUJGRDRENjNFRURDQkRCRjMxMzdERkU1NjhCODY3NDYaCXNlY3AyNTZrMVKABEE2MjI3NTZDMTQwQzgzRUEwRUFDMUVCQjkyMUM0OTg5MTA1QTA4MTlENjlGNzNFQzQ0QjAwMzFDRjUwNzNCMUY3Q0NFMjM3MENDRTc2NERGMkUzMDI0OUNEMjA3NTNGMjFFM0E0MzJGMTQzRUY1NTI5MzRCMjU5Rjg0MTU4Q0EyMTJENEY5OTc0RDVFODg3NDcyRTk3MDAxRDM4NENFRDlDMjhGOTk3MEM5NTYyODYzNDEwNEM4RDIzNENCMTFEM0QzQzk5QzkwMTUyNDU0MkIzQ0ZEQjAxNjc0MTA3MDI0MzEwODQ2NUFFNjQxQkU4RjVFOEZGNEQ2NTcyQzhCMEI4MTQ4MkNEQUFFRDRBRjZCNDFDMUI1N0I2NkMwNkRFQkQ5NUZDMjc4RTMzMTkwMUFFRENCNzYzQ0E1OTIyOTE0MDMyRjczRDQ4RjFDRDdBRDUxOTMxOEUzQjVEQTJFRDI0NkNENzExODkyRkM2M0M1QkNBRjI4MDM4RUE5RkFCQzMwN0NCRjE5ODQ0MDRDNTMxNTkwRjlBMzQ5NjM1OTM4OThDRUYzRjQ3MDdCRkUxNDlBRDJBNTk2QjFBMkJEM0FFNjU4MEMwQkE4MTgzNEUyNDRBMjk1OTg5Nzk3RUY1M0QzQTI1Q0Q2ODU2NUMzNDdEOUUwQUE2MzkzNjNDMjU5WoAENkQyQUMzODY2REU2NDM3NDdGQjM0QkZGMUY2MTBFREJERUE2N0YxOTk2MTRFQjZEODA3NTYwM0FBRDQzRDZDNkVDRTQ1Q0ExRTFDMjBEMjFCODk5MjhBMDc3NUQwQTM5NzJFMDI5RUE0NUY5ODhGMzQ5QkMxMDc1QUU0RDA0MUQ2MzFFQjBGMzQ3NDQxRjk2RUU0MkU4MTMzOUZEQjQ0Q0ZCMjBGOTRGNjIxMUJENkM2RDUwNzU0MzNDNjJDMjg4MjgwODgzNTBGNkJFRjlFM0NCNTJCRUIxNUY5MTRFODgzMzc4M0Y4RjMwNjk5RkU2OTE2MUZBQjA3MDdCNkY2MzkwQTI2QzQyNTE2NDQ2NkQ5NUMxRkNFMzA0QTY3NTNFNjRFRTk0RkU4OThGMzhBMkUxOUIxRERFRjE2NDAyNUY5OUVFQTUwODgyMjk1N0ZEODEwOTVENzk5NkI1OTA5NzU1MzkxM0RBNEVDMjQxNzRFMzZBOEFGQUNCRkI0NDA4MDdDMjMzNDY0NUYwNDE0NzlBRjk1RTA5MUNEREMzNjE2NjMzMzkwNDgzNENCODAyRjg1N0E2N0M4Qjg3Q0JDRkFBNzQ2NUY2MTkyMUFBREIwODk4RkJFMzhDRTU5NDY5RUE1OTU4ODdCNkY2RDM1NDE1NTRDNUI1QkRFOEJDMjhigAQzOTIwMTM4QTAxMjdFRDg0NzU0NDA5M0EyRTMyMTI3RjcyQzg3MkNGMDNCMTdCRjNFMzIyQ0ZDOTY4NkM1NjhCREQwNkExNjREQ0Y5QjMwRDNFMTQ5ODM3QUZGMENDN0JFMTEyQTQ1Q0YzQTkzQjYyRTUwOUI1NjYzRTQyNzI3MjQyM0EyNjNFQTEzRTlCRjQ4MDdBMDJCQTY1RUEwQkYyNzdCNUY3NjQxNDFDQjkxQTBDNUNGNzFDQzU4M0FEQTM3MTcxNUIyOEZBRjcwQUEwMTIyNTRCMkJBRjM2RjgyNkQxREI5RTQyMkY1NDBCRUY4NkRGQzA2REVFQTlEQ0VERUEyNDhCRUJFRkM0NTQwNzY4Q0E4RTQyRkZDMDE2MzU2MjM4RjJFNzQ0NzEzOTBCNTdEMTU1RkI5NUQxQzA5QjgyNzU4MUEyNDVEQkYzMDhBOUQ2OEMxODczNUM0MTk1OEZCMUNGNkY2ODY1MDhCRjJCRDQ2MjIxQ0U3RjYwMjM4NjI0OTYwODA0QzNBNjQyRjI0MDVGNTkwNjdCN0ZCREY2QjcwOTYzRUU0QTFEMjc4M0UyNkQwQkVCMzU4NDRFNjUxNzZFNTNBM0I4M0FDNEYyNzA1ODNENUMzOTc0MUQwRDdGMjRDRTlFN0FBMzE0QUY0OUQwNkZBOEFFQUM0Riq9DgoKY29fc2lnbmVyMxICMDMijwEKQEY4RThCQTREQzE0NkU1NEU1NEMxNDVBNUJBNDQ1NkRCOEIxNDY3OTFDOTJGQjIxMjYzQzc5RTE3RDcxNTE2MTMSQDRBQzhCOUNCMDM1RDdCRTYxMjRDQzBBMDlBRDhCRDNGMERFN0ZEODQxODM2QjdDNjg3MTRDQ0ExNDM5RUY0REMaCXNlY3AyNTZrMSqPAQpARTVGMjYzQkVDMzMzNzY3MUNERTZFMzM2QjI2RDQ3MjY1RUNFRDNBOEM0QjM1MThFREJERDhDRDYxMDIyQTU3MhJAQjA3ODM2RjYxNTI2NThCRkJFQTQwMkQwRkI1OTc2MjQzQzdBMEM2NUQ5MkIxNUM1NUFGM0M5NEUyNzdEQUJGORoJc2VjcDI1NmsxUoAERjFGREUxMjA0QTUyQUU1NTVFNUE3NjNCM0YxREIyM0RENjk4QjIzRjg3QjEwRUM3NUVCQUNFQkRGOUY0NjVEREY1MDE3NTI3RTBGRDcyRkYwMjBFRjRBQTQyOTY3RUYyMTA3NjhFNjA5NTYwNUU5MTVCRDZGMjUwRDg5NUVCNDgyRDRFNzhENTc0QzI5QTJEMDhERUMwOEFFQTc2Q0Y3ODhBODEzQjYyODQxRDc2NDE1ODBDRjI5RDIzRkE3RTVCMzhDNzM1NjM1NTVCMUZCRTg3Mjk5MzE5NDMzRjc5NjdCRTRCQzgzRDU1RjgxOEE2RTUzMTE0OUZFQzg3Nzc4MzIxOENEQjdCQzgxRjY2QTEwNDM0QTk5Mjk1MkE2NjFBMDRBQjIyRUM3MTY0MDVEN0U1ODg4QUQyREY3MzIxMjhEMUM5NjYwNUI3ODdBNDZERTFGRTBCQzU3QTE3MDM4MzRBQzQ1MTU1REYyMDg0ODlDN0FFQUE4MzM4OTA0MzNFQ0ZCOUU3NzY2NDE1MzQwN0UyQ0E5NTBCREIyQ0ZGMDg1QTgxMTVCMUFGMzlEMTM5MDFBRDdGRDlFQTJGQ0I3NkJENUFCOUYxNDY0MjhBMTMzQjRFNkU0OTU0MkE0MkFCQjI4ODRGMjhCMENFMjVCRDRCRTZDRUMyRjEzMDlBOURagARENTcwQ0ZGN0MzNjRDRjUzOTg1NDQ3M0MxODg2QkFDMjBEQjcxNzk1NzRFNjU4NDdEMDcyRTY5MkExMjkzOEMyQjIyMTRBQURDMUYxREU1MTcyRkI2MjE4MkYwODYyODMxRUIyQUU3MUU5MzM0RUYyNzIyMEY4QTc2MUE2OEIwNDdGQzI1Rjg3RUUyOUNENTUwMUJENDRENkJFRTZCQTcxMDBDM0U1RDJCQTdCN0QyNkZFRjE5NzExRTlCNjZDMzQ2MjE2NDY4QzJFMjNGOTJBQUVDQzI1MzI0REE2QTJEQTE2OTU5NjMzRThENjBGNTFGQjYzRjU0QTg0RUQ4NzgwNjg3NjAxMThFQUYzMjFGQUQ0RTQ0NDNDNUJBOUYyRTMxMjVBMTU5ODcwRjcxNjk1NTVGNkNENzM0RDIwMjU2RjM3MkYxNUZCMkQzNUE1QjY4M0ZGMDlFMENGQkVEQzM5RTI4QkI3NUQ5NzlFNURENkJBRDVDNTRERDYwNTVFM0MyRkZGMzBFQThDRjI2NTg0QzgxQTVCQUJCODI5MEMxNzNBRDZCMjNGOUEzNkY2RjYyM0E1RkM2NUYwODJBOTFGMDQxMUQwOUMxNjMzQjVBMDIyNUUzOEI5NUE2REU0MUYyMEJCNTJDRjY5OTUxMzBDOUM0MUVDM0NEQUI1OEYyMmKABDQ1Qjg0QTBDRjM0MzMyODk5RTA5QUI5QTQ5OTFEMzc0OTQ4MEZEODFEN0ExNzAyNzdGMzNDNEQxNjU0NUREMEIzNTIzMzBFMEFBRDEwOTYwMTEyQjUyMjdFMDg4NjZBQ0Y4NDc3Njk5MURCOURFODlFQ0E1NjEzNDFEN0RCOENBNkIzRjJDODk3MDY5MzE5M0JCNjcwQUE3RjlDOUI3M0MyMDExRDFGMjU3MEQyMjlBMzc4Q0YwNTdFMzNCNkE5RDlGNjczMzAwNEU5OEQ1MjI2QjVFRDBBQjA0MUVGQzM3QkUxMTYxQUEyNjM4RDFFOUQxOTVBNjJDN0Q3Q0ZDMzJGREJCRkRBQjI2QkZFMEUzRjhEMjM1N0JGQjJFRDVBNzJBOTI3NzczNzQwQjI4NTA0QTQwOTI1MDZBMUE4RTIwMjAwNzFFNzE5ODk2ODE1QjA2MjFFNThGQzZCQ0VDQjY0MkQ2MjJCM0FDQjZGQTYwQkYxNjhFQzgzNUJENjA2MTBDRDk5ODIwNjAwOENEMTJBQzZBMjc1QzYxQzIxQzU0RkYzREQ0QTg1ODdFQjc4MEFEQTVFQTQyMDA5MzM5RjJCRkU3M0YwMjc3RDQxNjk4NzFFMEVCRjcxQ0YwMUVCN0RENkE4QjVBMkY0QjNCNTA0QkUxM0ZDREQ2RDI4NTVCMo8BCkBEMDNBREZGMjdGMERERkI0OTNGMjJGMkREODU3RDAzRkM0Q0YwRjU0NDlDODNEM0M3OTY0Qjk2RDY3RkI1NDE5EkA1QTU3NkNBQTIzRDAyREZGQjg0RkU2Q0YwMkQ1QjVEQTQyNUJBMkExRTU0RThDQUE4MDFCNUZDOUZFMTM0Q0JEGglzZWNwMjU2azE.",
"EAIYAyKFEwoKY29fc2lnbmVyMxICMDMaQDVGODYwNzVFN0VEN0Y0QTI2RUNERTVCODk4QTExMTZCMkJFMUUwRTdEMTA4QjZBRTE2QTU1Nzk4N0M1M0MxNjkijwEKQEY4RThCQTREQzE0NkU1NEU1NEMxNDVBNUJBNDQ1NkRCOEIxNDY3OTFDOTJGQjIxMjYzQzc5RTE3RDcxNTE2MTMSQDRBQzhCOUNCMDM1RDdCRTYxMjRDQzBBMDlBRDhCRDNGMERFN0ZEODQxODM2QjdDNjg3MTRDQ0ExNDM5RUY0REMaCXNlY3AyNTZrMSqPAQpARTVGMjYzQkVDMzMzNzY3MUNERTZFMzM2QjI2RDQ3MjY1RUNFRDNBOEM0QjM1MThFREJERDhDRDYxMDIyQTU3MhJAQjA3ODM2RjYxNTI2NThCRkJFQTQwMkQwRkI1OTc2MjQzQzdBMEM2NUQ5MkIxNUM1NUFGM0M5NEUyNzdEQUJGORoJc2VjcDI1NmsxUoAERjFGREUxMjA0QTUyQUU1NTVFNUE3NjNCM0YxREIyM0RENjk4QjIzRjg3QjEwRUM3NUVCQUNFQkRGOUY0NjVEREY1MDE3NTI3RTBGRDcyRkYwMjBFRjRBQTQyOTY3RUYyMTA3NjhFNjA5NTYwNUU5MTVCRDZGMjUwRDg5NUVCNDgyRDRFNzhENTc0QzI5QTJEMDhERUMwOEFFQTc2Q0Y3ODhBODEzQjYyODQxRDc2NDE1ODBDRjI5RDIzRkE3RTVCMzhDNzM1NjM1NTVCMUZCRTg3Mjk5MzE5NDMzRjc5NjdCRTRCQzgzRDU1RjgxOEE2RTUzMTE0OUZFQzg3Nzc4MzIxOENEQjdCQzgxRjY2QTEwNDM0QTk5Mjk1MkE2NjFBMDRBQjIyRUM3MTY0MDVEN0U1ODg4QUQyREY3MzIxMjhEMUM5NjYwNUI3ODdBNDZERTFGRTBCQzU3QTE3MDM4MzRBQzQ1MTU1REYyMDg0ODlDN0FFQUE4MzM4OTA0MzNFQ0ZCOUU3NzY2NDE1MzQwN0UyQ0E5NTBCREIyQ0ZGMDg1QTgxMTVCMUFGMzlEMTM5MDFBRDdGRDlFQTJGQ0I3NkJENUFCOUYxNDY0MjhBMTMzQjRFNkU0OTU0MkE0MkFCQjI4ODRGMjhCMENFMjVCRDRCRTZDRUMyRjEzMDlBOURagARENTcwQ0ZGN0MzNjRDRjUzOTg1NDQ3M0MxODg2QkFDMjBEQjcxNzk1NzRFNjU4NDdEMDcyRTY5MkExMjkzOEMyQjIyMTRBQURDMUYxREU1MTcyRkI2MjE4MkYwODYyODMxRUIyQUU3MUU5MzM0RUYyNzIyMEY4QTc2MUE2OEIwNDdGQzI1Rjg3RUUyOUNENTUwMUJENDRENkJFRTZCQTcxMDBDM0U1RDJCQTdCN0QyNkZFRjE5NzExRTlCNjZDMzQ2MjE2NDY4QzJFMjNGOTJBQUVDQzI1MzI0REE2QTJEQTE2OTU5NjMzRThENjBGNTFGQjYzRjU0QTg0RUQ4NzgwNjg3NjAxMThFQUYzMjFGQUQ0RTQ0NDNDNUJBOUYyRTMxMjVBMTU5ODcwRjcxNjk1NTVGNkNENzM0RDIwMjU2RjM3MkYxNUZCMkQzNUE1QjY4M0ZGMDlFMENGQkVEQzM5RTI4QkI3NUQ5NzlFNURENkJBRDVDNTRERDYwNTVFM0MyRkZGMzBFQThDRjI2NTg0QzgxQTVCQUJCODI5MEMxNzNBRDZCMjNGOUEzNkY2RjYyM0E1RkM2NUYwODJBOTFGMDQxMUQwOUMxNjMzQjVBMDIyNUUzOEI5NUE2REU0MUYyMEJCNTJDRjY5OTUxMzBDOUM0MUVDM0NEQUI1OEYyMmKABDQ1Qjg0QTBDRjM0MzMyODk5RTA5QUI5QTQ5OTFEMzc0OTQ4MEZEODFEN0ExNzAyNzdGMzNDNEQxNjU0NUREMEIzNTIzMzBFMEFBRDEwOTYwMTEyQjUyMjdFMDg4NjZBQ0Y4NDc3Njk5MURCOURFODlFQ0E1NjEzNDFEN0RCOENBNkIzRjJDODk3MDY5MzE5M0JCNjcwQUE3RjlDOUI3M0MyMDExRDFGMjU3MEQyMjlBMzc4Q0YwNTdFMzNCNkE5RDlGNjczMzAwNEU5OEQ1MjI2QjVFRDBBQjA0MUVGQzM3QkUxMTYxQUEyNjM4RDFFOUQxOTVBNjJDN0Q3Q0ZDMzJGREJCRkRBQjI2QkZFMEUzRjhEMjM1N0JGQjJFRDVBNzJBOTI3NzczNzQwQjI4NTA0QTQwOTI1MDZBMUE4RTIwMjAwNzFFNzE5ODk2ODE1QjA2MjFFNThGQzZCQ0VDQjY0MkQ2MjJCM0FDQjZGQTYwQkYxNjhFQzgzNUJENjA2MTBDRDk5ODIwNjAwOENEMTJBQzZBMjc1QzYxQzIxQzU0RkYzREQ0QTg1ODdFQjc4MEFEQTVFQTQyMDA5MzM5RjJCRkU3M0YwMjc3RDQxNjk4NzFFMEVCRjcxQ0YwMUVCN0RENkE4QjVBMkY0QjNCNTA0QkUxM0ZDREQ2RDI4NTVCaoACRjk2NzE3QkU1MUQzMkI0REZGOEQxNDVENTIyRDkyODJEMUJCRTc0QzIzNjQyNzlDRjkxQTc4RTVDNkRCOUJGOEYxNzkyNTJBNkI4NjA1NjY5NTUxM0Y4MTFGNDNFMjc0MTZFRUY0OEQzRkM2RDczQjY3M0U2NEU0MDY1NTcwNzg4RDU1OEY5OTJBRDRGQ0Y3ODk3RkJCRjBDQzMwODlFMkUwMEVEMDJFQTBCRDE2Q0M3Njk0QzBDNjE2QTdGRTRFMjFDNUNGOTI1QzIzRjdEREEzNDgwNjM4REY5OENGMUY1NUY4NTU3NTMyNzhCRENFREY5MDg2MzZDRkQ3QTdGN3KAAkY4NjQ5OUQxNkQyQjNDQzBBOUI4QTA4NUU3MDJENzYxOTIzNDBEOTAxRjk3Mjk0MjBEQjhBQTZDNUZCNjlCRUFEMDIzOEIyNjE4ODk3M0IzMzQxQzI4ODlENTg5OTM0RTcyOUY5MkNCMzgyOTk1NDMyNzU2QTU3NkJFNEJBQjdDRjY1RDYyQjc3Njk1QTA0RDNCRTQ0REQ2RTEyNEMyMEM5ODM2NDMwRjFCMzc1OTIzQkYwOEEyNTE2MjJBREEyNDY4NDNENDU3QzA5NEMxQ0ZBMzAzMjVGMzRFNDE1MzI3QUVFOEUxNDdCNzJDODhFMDNCNkQwNTdFOTBGQkY1MEIqvQ4KCmNvX3NpZ25lcjESAjAxIo8BCkA1MzIwMjNFOTI1NzZBRDU3OUE4MTMwQjA5ODlGOUE0MkY3QTIzOEIwMEE5NTUwRTJGMDU3M0VERDZCQzcyQjlFEkAyRUQ5NEQ5NTZCQTg0RDQzMzE4NTRDRjk5OTlBMEIyQzFERUExOUU3OTk2MDBBQTIyMEJENUFBNUJCOTU2NjE2GglzZWNwMjU2azEqjwEKQDE4QkFBMjI2RTJFOEYxQ0VEQUVDNDY3NjI2Q0YwRUZCNTZBNEVGRTg2NkY1NzY3REJEOEU4QTgzNUJDQUFFQTkSQEI4MjUxODhEQkVBMTQ2N0M0QURBNDIzNEU3MDZCQkM0QUJGRDRENjNFRURDQkRCRjMxMzdERkU1NjhCODY3NDYaCXNlY3AyNTZrMVKABEE2MjI3NTZDMTQwQzgzRUEwRUFDMUVCQjkyMUM0OTg5MTA1QTA4MTlENjlGNzNFQzQ0QjAwMzFDRjUwNzNCMUY3Q0NFMjM3MENDRTc2NERGMkUzMDI0OUNEMjA3NTNGMjFFM0E0MzJGMTQzRUY1NTI5MzRCMjU5Rjg0MTU4Q0EyMTJENEY5OTc0RDVFODg3NDcyRTk3MDAxRDM4NENFRDlDMjhGOTk3MEM5NTYyODYzNDEwNEM4RDIzNENCMTFEM0QzQzk5QzkwMTUyNDU0MkIzQ0ZEQjAxNjc0MTA3MDI0MzEwODQ2NUFFNjQxQkU4RjVFOEZGNEQ2NTcyQzhCMEI4MTQ4MkNEQUFFRDRBRjZCNDFDMUI1N0I2NkMwNkRFQkQ5NUZDMjc4RTMzMTkwMUFFRENCNzYzQ0E1OTIyOTE0MDMyRjczRDQ4RjFDRDdBRDUxOTMxOEUzQjVEQTJFRDI0NkNENzExODkyRkM2M0M1QkNBRjI4MDM4RUE5RkFCQzMwN0NCRjE5ODQ0MDRDNTMxNTkwRjlBMzQ5NjM1OTM4OThDRUYzRjQ3MDdCRkUxNDlBRDJBNTk2QjFBMkJEM0FFNjU4MEMwQkE4MTgzNEUyNDRBMjk1OTg5Nzk3RUY1M0QzQTI1Q0Q2ODU2NUMzNDdEOUUwQUE2MzkzNjNDMjU5WoAENkQyQUMzODY2REU2NDM3NDdGQjM0QkZGMUY2MTBFREJERUE2N0YxOTk2MTRFQjZEODA3NTYwM0FBRDQzRDZDNkVDRTQ1Q0ExRTFDMjBEMjFCODk5MjhBMDc3NUQwQTM5NzJFMDI5RUE0NUY5ODhGMzQ5QkMxMDc1QUU0RDA0MUQ2MzFFQjBGMzQ3NDQxRjk2RUU0MkU4MTMzOUZEQjQ0Q0ZCMjBGOTRGNjIxMUJENkM2RDUwNzU0MzNDNjJDMjg4MjgwODgzNTBGNkJFRjlFM0NCNTJCRUIxNUY5MTRFODgzMzc4M0Y4RjMwNjk5RkU2OTE2MUZBQjA3MDdCNkY2MzkwQTI2QzQyNTE2NDQ2NkQ5NUMxRkNFMzA0QTY3NTNFNjRFRTk0RkU4OThGMzhBMkUxOUIxRERFRjE2NDAyNUY5OUVFQTUwODgyMjk1N0ZEODEwOTVENzk5NkI1OTA5NzU1MzkxM0RBNEVDMjQxNzRFMzZBOEFGQUNCRkI0NDA4MDdDMjMzNDY0NUYwNDE0NzlBRjk1RTA5MUNEREMzNjE2NjMzMzkwNDgzNENCODAyRjg1N0E2N0M4Qjg3Q0JDRkFBNzQ2NUY2MTkyMUFBREIwODk4RkJFMzhDRTU5NDY5RUE1OTU4ODdCNkY2RDM1NDE1NTRDNUI1QkRFOEJDMjhigAQzOTIwMTM4QTAxMjdFRDg0NzU0NDA5M0EyRTMyMTI3RjcyQzg3MkNGMDNCMTdCRjNFMzIyQ0ZDOTY4NkM1NjhCREQwNkExNjREQ0Y5QjMwRDNFMTQ5ODM3QUZGMENDN0JFMTEyQTQ1Q0YzQTkzQjYyRTUwOUI1NjYzRTQyNzI3MjQyM0EyNjNFQTEzRTlCRjQ4MDdBMDJCQTY1RUEwQkYyNzdCNUY3NjQxNDFDQjkxQTBDNUNGNzFDQzU4M0FEQTM3MTcxNUIyOEZBRjcwQUEwMTIyNTRCMkJBRjM2RjgyNkQxREI5RTQyMkY1NDBCRUY4NkRGQzA2REVFQTlEQ0VERUEyNDhCRUJFRkM0NTQwNzY4Q0E4RTQyRkZDMDE2MzU2MjM4RjJFNzQ0NzEzOTBCNTdEMTU1RkI5NUQxQzA5QjgyNzU4MUEyNDVEQkYzMDhBOUQ2OEMxODczNUM0MTk1OEZCMUNGNkY2ODY1MDhCRjJCRDQ2MjIxQ0U3RjYwMjM4NjI0OTYwODA0QzNBNjQyRjI0MDVGNTkwNjdCN0ZCREY2QjcwOTYzRUU0QTFEMjc4M0UyNkQwQkVCMzU4NDRFNjUxNzZFNTNBM0I4M0FDNEYyNzA1ODNENUMzOTc0MUQwRDdGMjRDRTlFN0FBMzE0QUY0OUQwNkZBOEFFQUM0Riq9DgoKY29fc2lnbmVyMhICMDIijwEKQDkwRTJFMTBCODRCQjE0NUU4M0RBRUFCNTkxOUVCQzZCOUE5NThFM0ZGRUU0NzQ1NzdGMDdFM0ExMDgyNkQ2OEYSQDUwMUEyRjNBMDg3NTBBRjlCOENFQ0JFRTg2QUIyRjczQTE2N0NBQzhEMTQ0QzFBQjg4QjUxQjJEMTA1QzE4OUYaCXNlY3AyNTZrMSqPAQpARkNBMjc5NjdCN0Y3MTJCMDUxMTdGMzMwMTBBNTlEQzMwMzFDNjYyNEFEMTU2NENCRjI2OUQzRjM3NzA0RDUxNhJAOUE0MjA0Qjc5M0YzRDJDNjVCMjE0RkRFMTZDRTgxMDYxOTk2MzQ3RjE2N0JGMUQ3MTQwQzQ4Mjg2Q0RBRTEyMBoJc2VjcDI1NmsxUoAEREU5RTM2MEFCNzhDMERGMTU2RENBQzg1NTY2NkQzRDc3OUYwMENFODY5Qjc2Qzg1NkY4RkM2N0ZBNEE0NEQ3RkJEOTMzODBGNkY2MUFFMjAxRTU3QTQ1Q0FENTYyNkU5NTRFREUzQzFEMjc2NENENEIwMjUwMDBFQ0VEMjU0ODgxQzc0MTM2RjY3OEREOUQ4NDVGQTUwMjIwMDZGMkMxQkJDQTI3ODFERkJGNjc1MUNEQjZFRERDQkY1Qzg3REU5OEVCRjlGRUUyMDdCMjUzMUU1MjE5NzVDMTY0ODlBQjY5MTNDMTY0MDhCQkU4QzkxMDg3RTU4REZDMEI5RTAzNEQxNTRDMzFDQzE2RDAwN0E5QzA4RUZFQjRBODQ1OEFDRjkzMTNDRkI4QzFCOUFFNUQzQTg4N0YxQzlGNjg2RUQ5RTI2Qjk3ODM4MTY5NTk5RkJGNDRFNjY5RTlCRDk1QUY1RkIyOEFGQkI4NEU2NEY0OTAyRDgyRTkyM0NCQkU1MjQ2RUIyNjcwOUNGRDk3RjA4REZBMjg4OTZDOTQyMUQ4QkJBMUYwOTA3OThGMDhENjZENjZGOUUzRkRGMzdEMzM3MzA2OUJENzAwMjNFQUYwRDA3OTU2NTdBRDAwRUFGREVBQ0Y3NDQ1NEI3MjM4QkY1QjIyREFFODMwNjI2MURagAQ5OUUyNTZCNjQ1MEU0OTAyRTFEQzJBNUIxRkE0MjI0RDJCNTM5NUJBNEJENUE1RENDRDZDMTE3OTJCNEMwMTI4OEIwMDAxQ0Y2OTBFRDAzQTRFNEUxQUMwQzgxRDc4MDFFQTFCNDhCOTcyMTQ0REI0Mjc2QkU0QjI1QTM3Qjg1QjgwOUUzREIzMDlGMUQ4MERCNTZBQzhFRTZBNTBGREUwM0U1Qjg4MTZCRjdGQUMxNkQyOTEzQTJDMzE5NzZFOEJDNjI4NTM2OTE2Njc2Q0VEMUZGRkFGMjU0NUE3OEQzODEyOTMwRDVFRDQ4OTk5RDQyRDRBRDc1RDY2MjY4NzE5RjdBMTU4MzJDRTc0OTMyREYwMUNGMzc1MTU2QjIxNzA3MUUxQzBGRTBCMzcwRUQyRDM0RkRCMEYyNDAzMUE4OEM1MDEwMTlDQ0YyNjI1OTEyQTVEQjM3ODFDRjkwQ0M0N0U5NjdBMjVBRDJCRENDNzcxMEFGNzI5MzhCMjQwNzMyNTI0NEI4RTNDNTIxM0Y3MERBRjQ2REUyOTBEMDQyNUZEOTlEQzg1NTEzREY2NDE3MTEzQ0FCRkNGQzY5N0RGRUNFMzM5MjJCRThGRUY2RjU4QjJBQzNDRjU2QUZDMTAyOTdDNENDM0M5M0U5OTM3RkU0NDdCOUM4QUEzMjBFNmKABDY2NEJDODJDMTYxRTQ4Rjk3QTE5NUMwN0Y4Rjc4ODBBRjg4NDk5QTQzNEIzOUE4Nzc3OTE2MjM4QkE4OThBQjcxQzAyRkIyMDM4MzZCRUY0N0M4MUIyNjg3NEJBN0RDNTU0M0NDRDBFQjdDRDYyNDZCODBDOTU5OUJGRjM4NjcwQTc2RjBCMEJBMUY2NzFERTU2NzdFRTVDMEQ3OUY5RURGMTJBMEIwODA5RkJDQTAyQzgwM0I5NDZEMDE1OUI3NjAyQ0EyRjNFQkY2MzQ0RUQyNDVBRjRDM0ZGRENGNTVDRDMzQzE3NkFBODlDNzBBQTAwMkU0QzlBODMxMUY0QjBDOEE4MzBBNTM3QUY2NDc2RUY4REExNzAwNTc4RTNFN0NEMUFGNEE0RkVFRUUxRUYxRTZFNEMxMUEwMkM4QUE0OUE2QjM4Q0ZERTI5NkM2MkQ3NzUxODU4OEJEQzA1MEM0NTBCQjNFOEYyMDkzNDZGQzhBMDUyMkZBRDBBRkE4RDM0NjUwMDlBQUYwMEJBRjc1RDk3NzlCNzAwMTkxNEJFNzczNjQ4QUQ4MTkzRjFDRTg5NkQ2QzFCNzQzRkY1QjlGOTcxMTE1QjMyMjQyNjUwRDI4RUZGNjQ0OEE3QzY0NjVERENFNUIwNDMzQzM5NDc1NUJGNENCRTVDMUNCREU5Mo8BCkBEMDNBREZGMjdGMERERkI0OTNGMjJGMkREODU3RDAzRkM0Q0YwRjU0NDlDODNEM0M3OTY0Qjk2RDY3RkI1NDE5EkA1QTU3NkNBQTIzRDAyREZGQjg0RkU2Q0YwMkQ1QjVEQTQyNUJBMkExRTU0RThDQUE4MDFCNUZDOUZFMTM0Q0JEGglzZWNwMjU2azE."
};
//Initialize the message queue
for (int i = 0; i < N_PARTIES; ++i) {
map_id_message_queue[party_ids[i]] = PartyMessageQue<Msg>(ROUNDS);
}
for (size_t i = 0; i < participants.size(); ++i) {
res[i] = std::async(std::launch::async, sign, sign_key_base64_arr[i], participants, m, ssid);
}
for (size_t i = 0; i < participants.size(); ++i) {
EXPECT_TRUE(res[i].get());
}
//P256 sample
printf("Test cmp sign with p256 curve\n");
//P256 sign key
sign_key_base64_arr[0] = "EAIYAyL7EgoKY29fc2lnbmVyMRICMDEaQEFGQzdCMENENTAwODg1RjlFNUU1N0Q0RjUwRjAxRTEzM0JFRUI3MTVCRTc4MjQxQkY3ODAwMDc2ODA3NUZGRTQiigEKQDUzRTQzNEE1QzcwMTM2MUQwMzU1QkVDMEQ1MzAzRjUwNDY3N0YzMUY2QzYxQzM2RDVFMzFGQjNFQzM0NDc2N0QSQDMxNjI3NzRBMTBEMThCMjlCODM4RUY5RTExRUQ3MEIzNTQ5ODMyMjdGM0EzQTU1QTM0NTFEQjI1MTJFNEE2QjIaBHAyNTYqigEKQDUyNzc0ODQzMjY5RTk4OEFGODk3QTIxQzJDRTNGN0I1OEMxMUVBRDE2MERCNUJFMDMyRTVDRDlCRjM5QUIxOUESQDhDOUMzREVFNTY5QkZDQkI3NjcyNkQxNkI3N0ZBQzU2M0ZFNDc4QjVDQjBCNUQxRDNEMEMzRTYyODE5MzVCMjYaBHAyNTZSgARDMUEwNUIwOEI1Q0FBNUQwRkFEMURGQTRFMzZDNjRDNTI1OUYxODM1OUU4MEM5M0YwQzczQUIwMDAxMDQ5NjU0RDJCNDY2M0IyQ0I5MUEzMkJERDlDMkJFM0U3RENCNTU2QTA4MEU2MzYwN0Q0RjJDRkM2NEEzODE2NDVFMTlEMkVFMTU2Q0QxNkNBOEU4RTc2NUJEOTRCRjU3OTkyQTczOTZBQjA4OTI3MTI3NjAxQUE0RkNDNDBDRjAxQUM2NkQ4NEJCNUFEQzA4NUZFNzM5OEUxMzE3M0U3MTBDMjVERkI2OTc4RUU3NjYyMUI3RTgzRjRBN0JFOUQzMjM3M0FFRDdFNTNGNzU3NDIxODlCNzExRUQzNDIxRkU5RkFFQzk5OTY4MThFQkIwNDZFM0I2MzZDOEExQzA1OTc3MUFCMjgyN0NEQUFDRUExRTYyQkU2N0JCQTExMjdGRjkzQUE1M0EzQ0VFODRCMDJCOTE4NTVCMEE2QjdBNDVBQzA0NTVEOEYzNUEwRTM5RTYxNTg5NTA3RTlGOTQyRDMyM0YzNDY4RDVDQzU5NzVEQTE2QkI4Rjc1Q0RFQTU2NkRDM0NCQjMzNTk5QjBCNUUzNEM4NkFEQzlEOThFQTUzMjc5NUVDMkQwQjkwOUNENUJBQkY2M0EzOEY4ODc0MTIzRDhCOVqABDhFM0MyQkVDQTRBN0VCMEFBNjBBNDQwRTI4NEI1RTBDNTM1N0YxMjZBNTA2OUY2RkE3OTA0Q0U2REQxMzRFQ0YzNDI5N0EwMDU2MDk2NTEzOTJGOTBGRDk4MTlBQTVBREJDRkNFNTBCMjVGMkI3NzJEMDY3NzhBNEJCMkU4OEQwRjk5MjBDOEIzOTU2MjJFOTk1RkRFRTI2MzY0RkM3OTRBQzVFOTY3RkZFMjQ0QTRGRDQwNjg2MjM2M0RGN0REN0U4QjAxNTMxQkQxODRBQjdGNkQxOTA2NEM3RjVCMjU2MzNGQUIyQjEyNzY1QzJEQzRFQ0MyREUyRDQ0N0FEMDcyRTQyRDc0N0FFQjhFMEU1QTNFQ0E1QzJCNTMxNzM3RTlEQjAyMTBCQjM1QkQ5QTdDRjZBMjU3MTc2REI2QjQ4NUUzNkI4NDhCMDA3MkMxOENBRkVCMTU4QTVGRTAwQ0JBRDcwMTY5NTgzQTMyQzdFNkQwQjcyODQ1NEU5QUFCRDkyNzRBNkRBQjc2N0QyRjUzN0M3OUNDMTAyNzAyNUZBNDE4ODgwQzE0RUEwRjdEMDI5QTJFQTc3ODBBMThCRDZCRTlCODk2NjVBOUQzQkYxRkMzRjE3RUVBRDEyNTRBQjMyQjc1Mzk4NDFENkM2Q0NFODc1QjBEMjM5QzVERTM5YoAEQUY1NEM0NDJCRDBFQkJEMUY2MDRFQzk3M0I1MkVDRTdGRkRGNjFERDlGRDc3REZEMDhEMDU2MDAzQkE0RTQ2OTNDNkZDNUM4MjcwQTEyQTZGNDU5MzBCNjQyRTNGOUQ4MjIyRkEyMjY3QTFFNkUxN0M0QkQ1NDU4NTcxM0ExNzNERDc4NUQwNzY4NzJERTVDM0FCMDc1MEQxNDA2NkU2NjE3RTY1RjgyMDMxQzRBQTg2RjE1MDRDQTU2QzEzQTE5OUQyMjEwMEU0Q0I2MTExMkE5NjRBRDY3QjNFMEQxMzExN0Q2OUY5MEI3MTBEMjI5RUZEMUE3QkREMzZBRjJBNkU5QkNCRDlDOTA5MDZFQTMzNDcyRDFDMDJEMTlEQjEyNTAyNzQwNTlGQzQ4RUJFMUZGQjg1REM3M0I1NjQ5NjlEMjk3Q0Y2MzZGRUY2QjFBQkFCMjMzRjY2OEMwRkY0RDkyRkU2QTVCQTc5MUE2M0NBRDY3M0UxMUY4MzgzMkJDNTkzOUNFMjIyRDlDMTMyRjZGQ0Q2M0M5RTlDMjU5MTY5QUZEODIxOTc4N0Q5Q0EyMjRCMjAyMzZGQTU2MDU2NzUxOUE3REQ3MjBERTU3NEVFNTlGQjg1RDVEMjU4NjhCNTI5MTBFMkU5MDBEODBEMkEwOTFDMzVCRkQzODU1NTFqgAJFMTY3MzQwOTk3NEFGRjY4QkFFNjRDMjk5ODdBNEU2MEExNjQ0Q0FDM0U5N0U0Nzc4ODhCM0E3RjBFNEFDQzI0QkM0MUJBODY0OEEyOUExNjI2QTJBMDZCRUVFOTk3RTc1Qzc2NjdFOEUzODZBRDUyRDMxQjNBMDdFNjc3ODIxMDJCOTA3NUIzMTM5OUFCNzhEQThDRDcwMjg4MDg4Qjk0NzRGN0Y4MUMwMTZENTAwMEM0QjJENDQ5Qzc2M0U5MDMxNTA0MDlFQzI3NjE0OUNBMDhBOTU5RDdDMzU0Q0M2OUM0RTI0QjI3MDQxOUE3NTc2NjMxMjUyNzkxNzc2MTE3coACREJFOEU3QUUwNTMxMzk2OEQxNEE0RjJCREVGNzU1NEEwNkExMjA4MzAwOTc4RUZEQzRCNkQxMzY2RkYzM0RDNzNCQzdFNTY5NDhDQjAxQTFFOTdCRTFGMEVCOUYxMzlGODk5QjJEOUIyNzYxQzY5Q0ZFQzlGQTBCRjQxNUYxRkIwQ0Y1NDNGQjdGQ0UxMjkzOEQ5MzhFNUY3Q0Q3NEU1MUMwQjE0MTFCMkQ2RTA1M0MxRUFFRUYwMEJERTUxOEEzN0M4QjNDQTIyOTQ1NTUyNUE1MEFENTQ0MUE1RjAyOTY5MEE4RTRBMkE1MjhCMzBGNThERDk5RjNENEEzOTZBRiqzDgoKY29fc2lnbmVyMhICMDIiigEKQEU3MEE3RDVCNERFRDhDRDA4QzlFMDIyMDQxRTQ4NTAwNzYzN0Q4MDZEODFEM0ZGNTUwQjUwN0UwMDVCNkNBNkMSQDQ3MDZFMjYwQUFBQjE1OUNGMzhDNDc2M0I4QUUzMThDNkZGOTU1ODAwQjY5Rjk5MDZBQ0YxM0QyRTM5MTUxRjAaBHAyNTYqigEKQEM3REY5MjE5MzcyRjIzODNDMjdFMDI4MzU1OEFDMjcyMzI3QkRDMERCRTIyMzUyREI5Q0YxNDkxMTcwMjRCOTkSQDUwOEFFODI4OThBRkFENUI3MTZBQzBDREJGOUMwNEIzNTQyODc4RjU0NDNEQzk1RDA0MTVFMERDREVEMjAyMEUaBHAyNTZSgAREMkQxNTQxQzMxNTk2ODYyRjUwQTNDMzFGNThDRjNFQkVFQTQwODU3QTNCOTAzNjExMTJCNzBEQTE0Rjg2NTFFOEY1MDQxMDNCNDcxNUU0NjdGQ0QyREUxREE3ODA0MEZEOUEyRjJEOUFFNjVEQkIzRjEwNDg1QTcyMkU5RUIyRTA3RjE1OTkyRjZCQzgwRUNGQzc1NDY2M0M3REU2QkJDNTFEQTg5MTM0N0JFOTRFODQ1Q0E3OEM2NUY5RkZEMDUwN0E4MTgzNTBFNDBEQTIxRDY4NUZGQkQyNzcyODcyNjQ2RjlDRjVEQkJGRjVDRTgwQ0FERDNGMjkzODkxQzY4NDNBRkM1MEVCNDUxNkEwQjY3RTVGQzU2MjdEMTJBMTREQ0M4ODIxNEQ5NjU2QUI5ODA1QzM0MjREQkQxMUUzRkFENTJENEZEQTY5NjlDMzlGODNDOENBNkMxNTJFQTg0NTgxQ0MyMjY3NjRBMUNDRTZDQzcxNkJDNTdBRUM1NTYwNDdFQzg2RkFEMjk3Njc5MzMyMUE1MzdENTdCQjY2NEQzMDcwREZBREI2QUI1ODVBRUZDNzM2RjNCRDU4OEVFOUEwNzhEOTdEMzBCMkY4ODk0NEM5REI5QzJENDc3NTk2MTc3NjAxQTNFRjBFMkFGNjNEQjQzNThGMDM0OTc4NVqABDhFNjUwQkFGQkUxQTBBQTk0MTBDMjk2RTY3ODRGRDk5MTlEQzRBMEJGN0FBRkE2QzgyNzQ3QURDOEFDNjEzQ0VDQ0E4Rjg4NEU0QkM2RTNDQjdCMDY3NTU5NEZDNTM3QTdDQjQ4QkM4MzI5NTNGQ0E1NDhERDg4MkM1QzE1NjY3QTM5RkE0QTQ2RTE2MTgzMzQ1NUI0RDZFOERFQzNFQTE4OEExOEQyQ0IyQTUwMUJDMUIxODQ2NTZENzY0NUIwOUY4MjY1MUM4OUY4NzRBMDhGNjc0NTAzOTBGNTFBMEFGQjNFQzEwQjUyMjQ0NjVGOTUzQThGRTc5QzhDOUYyQjVGRTkzMkM5RDNEQ0Q3MzgzRUU4RDdENEI3MjMxMkYyOEY1OTU3RkJCREM3NTgzQzU3OEUzNDM0NUY4OEM3NzBCNTU1M0JEOThEQUFFODNGRkVCQ0E2NDk5OEJDRTg3OTcyNTQyNzM3NzY5ODZCOEJDRkJCMTAwRTNDMEU4NzNCQzlBMTlBREREQTVFNDk3RUI5MTc5NTNCOTk4RjMzNUEwMkE2MkMzMURDMjJCQjRFMzM0REYxMDc3OUVCN0ZGMUNDN0MxOEI5MzgxMDVFNTE3NTQ2MDY4OTNEQTkwOUNFQzBBQjc0NUZGQTcwMTUwNDI2NUNBOTAxRjBCOEZDNTZBYoAEOTg1RTRBRDk2MURDQTE4RTlCNkM3REMzM0Y2RjRBNDgzNjc3QTkyQ0Q0NDYxNjk1NzU5NEIzNkJERTJCNzFCRUJFNzIzMjE3MjQ4OEI4NDkxQTJGMjg4NDNCNzlEMjM0RDRDQjZBOTQ3Q0Q2QUIzNEZFMzJCNjgwNkJFN0I2QTRDMjc5OThEMTBCQUE1NDU4Q0QzODE2MzRGRThENEQwMUJDOEZFMTIwNkE4QjI5RDI0Q0IzRDVCMDJCMzQ2RjNCRjAyNEYzMTE0Nzg4MDhEQ0U4REE1OEY5MjRDNDFFRjgwMzZEOTM2QUVENjE2MzYwMDhCOEQ4NzhEMTg3QkZFMEM1OTEzMTBGODFFNzY5QjkwQzlFMkY3OTIxNDQ2MjMxN0UzM0IxMUU2QUNCRDE2ODdCN0NFRTVCMDYxODNCQ0MwNkM2RENDQzY1NjczMjg5RkRCQ0Q3MkFFMDREMkQwQjIwQjY4N0M1ODczMDA2Mzc4MDBBNEZCNzEwMTFDQjVFNjNBRTVGQ0Y3NjMwMDc0NEI5MjNBQkY0OTM3RUYxRjc4NDlDNENDOEYxMjk1NDU2NEY4MkQzM0ZDRjJEN0Q3QUJEMDc5ODkwQkVEMjcyMkJDMzJFQTUxOEM5RjIyNjE2MUIyMjJCNEMyRDNCODBENUZGRERGMkQ5M0IwMUExQzMqsw4KCmNvX3NpZ25lcjMSAjAzIooBCkBEMTFGOUZFN0MyREE5MjU0QjAxRjQxRjA1Rjk0MzlDOUFCRkU4ODZFNjlDNUYzQjJDRDBFMDQ1QzMxODUxMkRBEkBCM0UwMkVFNDBCQzNCOEUyNzk2NkQ1RTBBMzdCNDY0ODJCNzJGOEExQTdDRUM3NkNGRThGMDAyQ0E2ODVGQUNCGgRwMjU2KooBCkAxMUE5N0NBOEUwQjUxMjk1QjMyRjk2MDgyNDk1NzU4QkM0NzFBRENBOTg0MUVERTkzNUYwNTVGNzNFMjk3QzhDEkAzMTk0MDgyNTY2Q0RCQzhDQkI5MjE2QUNGNkNFN0VCMkRDRDA4MDUwMTdBNTMxNkIyRkQxN0E5NDgzNjNEMjJGGgRwMjU2UoAEQjkyNTMxMTg3RjEwMTM3QjhGMENGRjMxMEI3NDAwMkMzNzAzNjA4ODcwQkNEMzhDQjJBMkIyMDBCNEYwRDEyQkQwMUY3QkRDRTg4MDE2QUY1Q0YwOURDREM3RkNBM0Q1Q0UyMzkwN0Y1QUFEOTJDNzlEN0ZENzVDMzRFM0ZDMTZDREYxNTYzNDMyOTYzMDgwNTIyQ0MyQ0E3NUJCQTEyNUM4QTE5MjZENzhFMTM2NEExNjlGM0M3OUJERDYyQURFRUEwMTEzQjRGQzkyNkNCRTNENzBFRDU1NzM5N0E3MTM2QzUzNUY3NkE4MjI1MjA5RTk5QjI5MThDQUExRDk1MUIzNjM5MjY3Q0M3NUY1NDJEMEMyQzI2RkZBMEM4MjU4MTI4MDQwNjc2OTNBRUUzNTcyQjZGNjE2MjJCNEUyMUJFQ0I1QUUwMjBERTlDQzFCNDExMDI4MDZBM0VDRDIwQTQwM0Q5QTQzRTBBMTYxOEQwQkMwMzE5RUY5ODhBMjRFM0I5RTBGMDhDMjRENjIzRjYzNUQ4QzM1QzUxQzUyQ0NGNTkyNTcwNzU2RjYyNDlEODc4NDUzOUU4QjZFNkZCOUFBNDg4RUI5M0NCNkIwMTQyNDU5MDM4NjgzRUE1RDBBQzBENjhDRjNGQTIxQzE5REExOTY0N0U5QkQ2ODEzQTVagAQwODc3RjlBNEYzNUVCNkYyREZEREFCMDVBOERFQzQzNjlBN0UzM0UzQzEzRjk4NTgzNkZDMDlEQUJBRUMyRTk3QkMwRDI2NUJEQkNGMkM3MUU2MEFCQ0U1RDAwN0Q2MzRDQTIwM0Y3NjFDREJCNEQ2M0IwNEJEODZBNjZBMUNERjlFQzg1NTc2QjY1OTQxMDFCMjE2NUM0MDIyRDgyRjhCQUFFQkQ4ODU0MDcyNEUwRTVCOUYwMjZEQ0M2QUEzNThEMzEzRDQ0MEU5NjVGNTRGNjJBOUVENzFENjc2NkQ4RDk0QjE0MDM2QjUyMTk2ODY1QUZBQTlFOUVFRTI4ODQwNzNCRDU4OUYxNTM1MjQzMDVEMTYzOTFGRDA2QTNGQTlFQTNERjc5MDg3NUFCODk3NUQ4QTNBMjhCNTY2QUYyNDRGQ0RDQTE4NkZBRTFBQUNEMERBMUM1QURGNTg5OTIwRTc0RkNDNEQwQTE2NjUyOUQwODhGODZGMUUyOUI0QUIwN0Y5RkY0QThDNzJEQzRFQUM5RTYxRjFGQjg0QTRCNkM2MzlDNDBBQzU0N0VEM0UxRjE2OEMzOTUwRkQyNTI4NTBDRUJBRTEwQjE3N0ZFRjA0Njc3RkUxRTgwMDRENUZEQTE1OTVCNzg1NjU0NEI5OTNGNzIyMjdEQjgwODZFQ2KABDlENzAyOUNDOTgwRUQ5MTUzQjlBNjg3MjYxQ0VERjQ0RDk4NTI3QzhDMjZFMkNGNjM4NjVEMzBFMzI3QTVERDUyODc1MTcxOTBCQkQ5REI4RDQxNTFDNDI0RUExQTI0NjYyQjZBMEFENzA2MTgwMUFGQjRDRDMzMDc2REJGODIwQjRGMDY1QzA5RkNDQkI5M0MwQ0I0RDU2NDMzOTg3QkFBOTcxMTk1QjdGNzZDRTQ0RURDRDJERTREMjJCNkRBQUM5QzZCNDg1ODIxQUFENzkyRkFBMzg3MUMyRjkxMzUzOTkxNTlBQ0MzOTFFQzU0M0NCMjhCMEQ3RjI5QUNEMDYyMTdEQzI3RjA3MDM0NjEzOURCRTk3NEU5MjA5NzhGOTlDQ0E2REVFMTE0MjY1NkIwRjEzRkYzNTAzNUVFRjk1RkJCNjcwMzE5OEFBOENBMUY0ODU0NUEyQzYyRDc0QjFCQjUxQUZCQTRGNEE5RUU1Rjk4OUJBRUQ3MEI5NTNCODhGQjY4OEE0OUU3MjNFNUJBMUQwNkJDQTEwNjUzM0U3RDkwRjNDRTkxNEU1QUM0Q0Y1QTNEMkNBRjJGOTQ5MDAxOEM1MTJDMUQzOERFQUE4NkZDREFEOUYzM0NFOTgwMzI4RjJDNkFBM0NFOTQ4RDJDMjc1NjlDN0Q1QUM5NUY2MooBCkAyMjkzOTBCNDlBNDE3QjBBNDZGM0M2N0RCMzMxODYxRkNFRjI2M0EzNDY2MDBBNTI4NUMxNzlCNzIxMzhFMDQzEkBGNjYyMzUwOUE2MjBFRDcxM0ZDRTY2RDU0M0I0NjVCMzBCNERCQjVCMzg2QzBENzBBMjdGMzU1MkQxMzJEMTA1GgRwMjU2";
sign_key_base64_arr[1] = "EAIYAyL7EgoKY29fc2lnbmVyMhICMDIaQDgwMTU3OUM5Mjc5QUFBQTAyMjA0NTE2NDY0Q0YzQTBFNTNBMzdENEQxQzU2MDk2MUE0QzVGMzdGMzNCODhDNkIiigEKQEU3MEE3RDVCNERFRDhDRDA4QzlFMDIyMDQxRTQ4NTAwNzYzN0Q4MDZEODFEM0ZGNTUwQjUwN0UwMDVCNkNBNkMSQDQ3MDZFMjYwQUFBQjE1OUNGMzhDNDc2M0I4QUUzMThDNkZGOTU1ODAwQjY5Rjk5MDZBQ0YxM0QyRTM5MTUxRjAaBHAyNTYqigEKQEM3REY5MjE5MzcyRjIzODNDMjdFMDI4MzU1OEFDMjcyMzI3QkRDMERCRTIyMzUyREI5Q0YxNDkxMTcwMjRCOTkSQDUwOEFFODI4OThBRkFENUI3MTZBQzBDREJGOUMwNEIzNTQyODc4RjU0NDNEQzk1RDA0MTVFMERDREVEMjAyMEUaBHAyNTZSgAREMkQxNTQxQzMxNTk2ODYyRjUwQTNDMzFGNThDRjNFQkVFQTQwODU3QTNCOTAzNjExMTJCNzBEQTE0Rjg2NTFFOEY1MDQxMDNCNDcxNUU0NjdGQ0QyREUxREE3ODA0MEZEOUEyRjJEOUFFNjVEQkIzRjEwNDg1QTcyMkU5RUIyRTA3RjE1OTkyRjZCQzgwRUNGQzc1NDY2M0M3REU2QkJDNTFEQTg5MTM0N0JFOTRFODQ1Q0E3OEM2NUY5RkZEMDUwN0E4MTgzNTBFNDBEQTIxRDY4NUZGQkQyNzcyODcyNjQ2RjlDRjVEQkJGRjVDRTgwQ0FERDNGMjkzODkxQzY4NDNBRkM1MEVCNDUxNkEwQjY3RTVGQzU2MjdEMTJBMTREQ0M4ODIxNEQ5NjU2QUI5ODA1QzM0MjREQkQxMUUzRkFENTJENEZEQTY5NjlDMzlGODNDOENBNkMxNTJFQTg0NTgxQ0MyMjY3NjRBMUNDRTZDQzcxNkJDNTdBRUM1NTYwNDdFQzg2RkFEMjk3Njc5MzMyMUE1MzdENTdCQjY2NEQzMDcwREZBREI2QUI1ODVBRUZDNzM2RjNCRDU4OEVFOUEwNzhEOTdEMzBCMkY4ODk0NEM5REI5QzJENDc3NTk2MTc3NjAxQTNFRjBFMkFGNjNEQjQzNThGMDM0OTc4NVqABDhFNjUwQkFGQkUxQTBBQTk0MTBDMjk2RTY3ODRGRDk5MTlEQzRBMEJGN0FBRkE2QzgyNzQ3QURDOEFDNjEzQ0VDQ0E4Rjg4NEU0QkM2RTNDQjdCMDY3NTU5NEZDNTM3QTdDQjQ4QkM4MzI5NTNGQ0E1NDhERDg4MkM1QzE1NjY3QTM5RkE0QTQ2RTE2MTgzMzQ1NUI0RDZFOERFQzNFQTE4OEExOEQyQ0IyQTUwMUJDMUIxODQ2NTZENzY0NUIwOUY4MjY1MUM4OUY4NzRBMDhGNjc0NTAzOTBGNTFBMEFGQjNFQzEwQjUyMjQ0NjVGOTUzQThGRTc5QzhDOUYyQjVGRTkzMkM5RDNEQ0Q3MzgzRUU4RDdENEI3MjMxMkYyOEY1OTU3RkJCREM3NTgzQzU3OEUzNDM0NUY4OEM3NzBCNTU1M0JEOThEQUFFODNGRkVCQ0E2NDk5OEJDRTg3OTcyNTQyNzM3NzY5ODZCOEJDRkJCMTAwRTNDMEU4NzNCQzlBMTlBREREQTVFNDk3RUI5MTc5NTNCOTk4RjMzNUEwMkE2MkMzMURDMjJCQjRFMzM0REYxMDc3OUVCN0ZGMUNDN0MxOEI5MzgxMDVFNTE3NTQ2MDY4OTNEQTkwOUNFQzBBQjc0NUZGQTcwMTUwNDI2NUNBOTAxRjBCOEZDNTZBYoAEOTg1RTRBRDk2MURDQTE4RTlCNkM3REMzM0Y2RjRBNDgzNjc3QTkyQ0Q0NDYxNjk1NzU5NEIzNkJERTJCNzFCRUJFNzIzMjE3MjQ4OEI4NDkxQTJGMjg4NDNCNzlEMjM0RDRDQjZBOTQ3Q0Q2QUIzNEZFMzJCNjgwNkJFN0I2QTRDMjc5OThEMTBCQUE1NDU4Q0QzODE2MzRGRThENEQwMUJDOEZFMTIwNkE4QjI5RDI0Q0IzRDVCMDJCMzQ2RjNCRjAyNEYzMTE0Nzg4MDhEQ0U4REE1OEY5MjRDNDFFRjgwMzZEOTM2QUVENjE2MzYwMDhCOEQ4NzhEMTg3QkZFMEM1OTEzMTBGODFFNzY5QjkwQzlFMkY3OTIxNDQ2MjMxN0UzM0IxMUU2QUNCRDE2ODdCN0NFRTVCMDYxODNCQ0MwNkM2RENDQzY1NjczMjg5RkRCQ0Q3MkFFMDREMkQwQjIwQjY4N0M1ODczMDA2Mzc4MDBBNEZCNzEwMTFDQjVFNjNBRTVGQ0Y3NjMwMDc0NEI5MjNBQkY0OTM3RUYxRjc4NDlDNENDOEYxMjk1NDU2NEY4MkQzM0ZDRjJEN0Q3QUJEMDc5ODkwQkVEMjcyMkJDMzJFQTUxOEM5RjIyNjE2MUIyMjJCNEMyRDNCODBENUZGRERGMkQ5M0IwMUExQzNqgAJGNUJGODlDOTY5NEUxNjhBMjAzMTUyQTZENjMwNUVEMkQ4NjNFNkZBQTAyRDRGMkRBMDhDNTNFMTQ0RTVFQzQ3NTY1NzlEMDFCQUExNjQ2NDdEQTRFQkNCNzQzRkZFMEQ0ODVEQjJGMjlDMzZBNTBGODgwNjRFMTRBNUI4NDc2RkRGNUExNjlGRjc4M0M4OUQ2NkVEMjREMTQ0NDkxMDM3RDA0NzBDQjcyMjdDMTVGMThFM0NFRTVFQzQ2OUQwODc1RTQ0OEY1N0VBODZCNEM4QzYwNzc1MzJCRjgyRTM3M0JBQkVDRTcxMjk5MzNFQzJGMTY4NjFENEE0RDA1OEYzcoACREI5Q0MwMzc3RjIxMTQwNjdDMjk5OTIyM0MwRDgzRTExNEFBMEY1NkEwMTNDMTE5QjVFNTQ0NDRCRjBDNDg0NEMwOENGMTI1RUY2MUZFMzMyQzUwNTg2NjY0RkQ1NDQwMkVBRjZENzM4RTk2RkU0NjJCODBCOUMyNUJCNjU1QjlBRTY5ODE5RjI5RDQ4QUQ3RjY4NDQyQkM3QzhDNUY4Mzg4QUJCOTkzM0IwQjU0QzEzNDA5RDFCRkFGRDU5NUU0NTcxREE5NjIwRjEzQTJBMDg5NDAyQkREOTQwMTNFNzk1RDRCNTJFOTQ1NjcxMDYwMjJBNzdGNEE5M0FGNkJBNyqzDgoKY29fc2lnbmVyMRICMDEiigEKQDUzRTQzNEE1QzcwMTM2MUQwMzU1QkVDMEQ1MzAzRjUwNDY3N0YzMUY2QzYxQzM2RDVFMzFGQjNFQzM0NDc2N0QSQDMxNjI3NzRBMTBEMThCMjlCODM4RUY5RTExRUQ3MEIzNTQ5ODMyMjdGM0EzQTU1QTM0NTFEQjI1MTJFNEE2QjIaBHAyNTYqigEKQDUyNzc0ODQzMjY5RTk4OEFGODk3QTIxQzJDRTNGN0I1OEMxMUVBRDE2MERCNUJFMDMyRTVDRDlCRjM5QUIxOUESQDhDOUMzREVFNTY5QkZDQkI3NjcyNkQxNkI3N0ZBQzU2M0ZFNDc4QjVDQjBCNUQxRDNEMEMzRTYyODE5MzVCMjYaBHAyNTZSgARDMUEwNUIwOEI1Q0FBNUQwRkFEMURGQTRFMzZDNjRDNTI1OUYxODM1OUU4MEM5M0YwQzczQUIwMDAxMDQ5NjU0RDJCNDY2M0IyQ0I5MUEzMkJERDlDMkJFM0U3RENCNTU2QTA4MEU2MzYwN0Q0RjJDRkM2NEEzODE2NDVFMTlEMkVFMTU2Q0QxNkNBOEU4RTc2NUJEOTRCRjU3OTkyQTczOTZBQjA4OTI3MTI3NjAxQUE0RkNDNDBDRjAxQUM2NkQ4NEJCNUFEQzA4NUZFNzM5OEUxMzE3M0U3MTBDMjVERkI2OTc4RUU3NjYyMUI3RTgzRjRBN0JFOUQzMjM3M0FFRDdFNTNGNzU3NDIxODlCNzExRUQzNDIxRkU5RkFFQzk5OTY4MThFQkIwNDZFM0I2MzZDOEExQzA1OTc3MUFCMjgyN0NEQUFDRUExRTYyQkU2N0JCQTExMjdGRjkzQUE1M0EzQ0VFODRCMDJCOTE4NTVCMEE2QjdBNDVBQzA0NTVEOEYzNUEwRTM5RTYxNTg5NTA3RTlGOTQyRDMyM0YzNDY4RDVDQzU5NzVEQTE2QkI4Rjc1Q0RFQTU2NkRDM0NCQjMzNTk5QjBCNUUzNEM4NkFEQzlEOThFQTUzMjc5NUVDMkQwQjkwOUNENUJBQkY2M0EzOEY4ODc0MTIzRDhCOVqABDhFM0MyQkVDQTRBN0VCMEFBNjBBNDQwRTI4NEI1RTBDNTM1N0YxMjZBNTA2OUY2RkE3OTA0Q0U2REQxMzRFQ0YzNDI5N0EwMDU2MDk2NTEzOTJGOTBGRDk4MTlBQTVBREJDRkNFNTBCMjVGMkI3NzJEMDY3NzhBNEJCMkU4OEQwRjk5MjBDOEIzOTU2MjJFOTk1RkRFRTI2MzY0RkM3OTRBQzVFOTY3RkZFMjQ0QTRGRDQwNjg2MjM2M0RGN0REN0U4QjAxNTMxQkQxODRBQjdGNkQxOTA2NEM3RjVCMjU2MzNGQUIyQjEyNzY1QzJEQzRFQ0MyREUyRDQ0N0FEMDcyRTQyRDc0N0FFQjhFMEU1QTNFQ0E1QzJCNTMxNzM3RTlEQjAyMTBCQjM1QkQ5QTdDRjZBMjU3MTc2REI2QjQ4NUUzNkI4NDhCMDA3MkMxOENBRkVCMTU4QTVGRTAwQ0JBRDcwMTY5NTgzQTMyQzdFNkQwQjcyODQ1NEU5QUFCRDkyNzRBNkRBQjc2N0QyRjUzN0M3OUNDMTAyNzAyNUZBNDE4ODgwQzE0RUEwRjdEMDI5QTJFQTc3ODBBMThCRDZCRTlCODk2NjVBOUQzQkYxRkMzRjE3RUVBRDEyNTRBQjMyQjc1Mzk4NDFENkM2Q0NFODc1QjBEMjM5QzVERTM5YoAEQUY1NEM0NDJCRDBFQkJEMUY2MDRFQzk3M0I1MkVDRTdGRkRGNjFERDlGRDc3REZEMDhEMDU2MDAzQkE0RTQ2OTNDNkZDNUM4MjcwQTEyQTZGNDU5MzBCNjQyRTNGOUQ4MjIyRkEyMjY3QTFFNkUxN0M0QkQ1NDU4NTcxM0ExNzNERDc4NUQwNzY4NzJERTVDM0FCMDc1MEQxNDA2NkU2NjE3RTY1RjgyMDMxQzRBQTg2RjE1MDRDQTU2QzEzQTE5OUQyMjEwMEU0Q0I2MTExMkE5NjRBRDY3QjNFMEQxMzExN0Q2OUY5MEI3MTBEMjI5RUZEMUE3QkREMzZBRjJBNkU5QkNCRDlDOTA5MDZFQTMzNDcyRDFDMDJEMTlEQjEyNTAyNzQwNTlGQzQ4RUJFMUZGQjg1REM3M0I1NjQ5NjlEMjk3Q0Y2MzZGRUY2QjFBQkFCMjMzRjY2OEMwRkY0RDkyRkU2QTVCQTc5MUE2M0NBRDY3M0UxMUY4MzgzMkJDNTkzOUNFMjIyRDlDMTMyRjZGQ0Q2M0M5RTlDMjU5MTY5QUZEODIxOTc4N0Q5Q0EyMjRCMjAyMzZGQTU2MDU2NzUxOUE3REQ3MjBERTU3NEVFNTlGQjg1RDVEMjU4NjhCNTI5MTBFMkU5MDBEODBEMkEwOTFDMzVCRkQzODU1NTEqsw4KCmNvX3NpZ25lcjMSAjAzIooBCkBEMTFGOUZFN0MyREE5MjU0QjAxRjQxRjA1Rjk0MzlDOUFCRkU4ODZFNjlDNUYzQjJDRDBFMDQ1QzMxODUxMkRBEkBCM0UwMkVFNDBCQzNCOEUyNzk2NkQ1RTBBMzdCNDY0ODJCNzJGOEExQTdDRUM3NkNGRThGMDAyQ0E2ODVGQUNCGgRwMjU2KooBCkAxMUE5N0NBOEUwQjUxMjk1QjMyRjk2MDgyNDk1NzU4QkM0NzFBRENBOTg0MUVERTkzNUYwNTVGNzNFMjk3QzhDEkAzMTk0MDgyNTY2Q0RCQzhDQkI5MjE2QUNGNkNFN0VCMkRDRDA4MDUwMTdBNTMxNkIyRkQxN0E5NDgzNjNEMjJGGgRwMjU2UoAEQjkyNTMxMTg3RjEwMTM3QjhGMENGRjMxMEI3NDAwMkMzNzAzNjA4ODcwQkNEMzhDQjJBMkIyMDBCNEYwRDEyQkQwMUY3QkRDRTg4MDE2QUY1Q0YwOURDREM3RkNBM0Q1Q0UyMzkwN0Y1QUFEOTJDNzlEN0ZENzVDMzRFM0ZDMTZDREYxNTYzNDMyOTYzMDgwNTIyQ0MyQ0E3NUJCQTEyNUM4QTE5MjZENzhFMTM2NEExNjlGM0M3OUJERDYyQURFRUEwMTEzQjRGQzkyNkNCRTNENzBFRDU1NzM5N0E3MTM2QzUzNUY3NkE4MjI1MjA5RTk5QjI5MThDQUExRDk1MUIzNjM5MjY3Q0M3NUY1NDJEMEMyQzI2RkZBMEM4MjU4MTI4MDQwNjc2OTNBRUUzNTcyQjZGNjE2MjJCNEUyMUJFQ0I1QUUwMjBERTlDQzFCNDExMDI4MDZBM0VDRDIwQTQwM0Q5QTQzRTBBMTYxOEQwQkMwMzE5RUY5ODhBMjRFM0I5RTBGMDhDMjRENjIzRjYzNUQ4QzM1QzUxQzUyQ0NGNTkyNTcwNzU2RjYyNDlEODc4NDUzOUU4QjZFNkZCOUFBNDg4RUI5M0NCNkIwMTQyNDU5MDM4NjgzRUE1RDBBQzBENjhDRjNGQTIxQzE5REExOTY0N0U5QkQ2ODEzQTVagAQwODc3RjlBNEYzNUVCNkYyREZEREFCMDVBOERFQzQzNjlBN0UzM0UzQzEzRjk4NTgzNkZDMDlEQUJBRUMyRTk3QkMwRDI2NUJEQkNGMkM3MUU2MEFCQ0U1RDAwN0Q2MzRDQTIwM0Y3NjFDREJCNEQ2M0IwNEJEODZBNjZBMUNERjlFQzg1NTc2QjY1OTQxMDFCMjE2NUM0MDIyRDgyRjhCQUFFQkQ4ODU0MDcyNEUwRTVCOUYwMjZEQ0M2QUEzNThEMzEzRDQ0MEU5NjVGNTRGNjJBOUVENzFENjc2NkQ4RDk0QjE0MDM2QjUyMTk2ODY1QUZBQTlFOUVFRTI4ODQwNzNCRDU4OUYxNTM1MjQzMDVEMTYzOTFGRDA2QTNGQTlFQTNERjc5MDg3NUFCODk3NUQ4QTNBMjhCNTY2QUYyNDRGQ0RDQTE4NkZBRTFBQUNEMERBMUM1QURGNTg5OTIwRTc0RkNDNEQwQTE2NjUyOUQwODhGODZGMUUyOUI0QUIwN0Y5RkY0QThDNzJEQzRFQUM5RTYxRjFGQjg0QTRCNkM2MzlDNDBBQzU0N0VEM0UxRjE2OEMzOTUwRkQyNTI4NTBDRUJBRTEwQjE3N0ZFRjA0Njc3RkUxRTgwMDRENUZEQTE1OTVCNzg1NjU0NEI5OTNGNzIyMjdEQjgwODZFQ2KABDlENzAyOUNDOTgwRUQ5MTUzQjlBNjg3MjYxQ0VERjQ0RDk4NTI3QzhDMjZFMkNGNjM4NjVEMzBFMzI3QTVERDUyODc1MTcxOTBCQkQ5REI4RDQxNTFDNDI0RUExQTI0NjYyQjZBMEFENzA2MTgwMUFGQjRDRDMzMDc2REJGODIwQjRGMDY1QzA5RkNDQkI5M0MwQ0I0RDU2NDMzOTg3QkFBOTcxMTk1QjdGNzZDRTQ0RURDRDJERTREMjJCNkRBQUM5QzZCNDg1ODIxQUFENzkyRkFBMzg3MUMyRjkxMzUzOTkxNTlBQ0MzOTFFQzU0M0NCMjhCMEQ3RjI5QUNEMDYyMTdEQzI3RjA3MDM0NjEzOURCRTk3NEU5MjA5NzhGOTlDQ0E2REVFMTE0MjY1NkIwRjEzRkYzNTAzNUVFRjk1RkJCNjcwMzE5OEFBOENBMUY0ODU0NUEyQzYyRDc0QjFCQjUxQUZCQTRGNEE5RUU1Rjk4OUJBRUQ3MEI5NTNCODhGQjY4OEE0OUU3MjNFNUJBMUQwNkJDQTEwNjUzM0U3RDkwRjNDRTkxNEU1QUM0Q0Y1QTNEMkNBRjJGOTQ5MDAxOEM1MTJDMUQzOERFQUE4NkZDREFEOUYzM0NFOTgwMzI4RjJDNkFBM0NFOTQ4RDJDMjc1NjlDN0Q1QUM5NUY2MooBCkAyMjkzOTBCNDlBNDE3QjBBNDZGM0M2N0RCMzMxODYxRkNFRjI2M0EzNDY2MDBBNTI4NUMxNzlCNzIxMzhFMDQzEkBGNjYyMzUwOUE2MjBFRDcxM0ZDRTY2RDU0M0I0NjVCMzBCNERCQjVCMzg2QzBENzBBMjdGMzU1MkQxMzJEMTA1GgRwMjU2";
sign_key_base64_arr[2] = "EAIYAyL7EgoKY29fc2lnbmVyMxICMDMaQDUwNjM0MkM0RkYyQ0NGNDY1RTIzMjU3OTc4QUU1NjA5NkI1ODQzODQ3QTMzRUVBNzUyMEJFNjg3RTZGQjE4RjIiigEKQEQxMUY5RkU3QzJEQTkyNTRCMDFGNDFGMDVGOTQzOUM5QUJGRTg4NkU2OUM1RjNCMkNEMEUwNDVDMzE4NTEyREESQEIzRTAyRUU0MEJDM0I4RTI3OTY2RDVFMEEzN0I0NjQ4MkI3MkY4QTFBN0NFQzc2Q0ZFOEYwMDJDQTY4NUZBQ0IaBHAyNTYqigEKQDExQTk3Q0E4RTBCNTEyOTVCMzJGOTYwODI0OTU3NThCQzQ3MUFEQ0E5ODQxRURFOTM1RjA1NUY3M0UyOTdDOEMSQDMxOTQwODI1NjZDREJDOENCQjkyMTZBQ0Y2Q0U3RUIyRENEMDgwNTAxN0E1MzE2QjJGRDE3QTk0ODM2M0QyMkYaBHAyNTZSgARCOTI1MzExODdGMTAxMzdCOEYwQ0ZGMzEwQjc0MDAyQzM3MDM2MDg4NzBCQ0QzOENCMkEyQjIwMEI0RjBEMTJCRDAxRjdCRENFODgwMTZBRjVDRjA5RENEQzdGQ0EzRDVDRTIzOTA3RjVBQUQ5MkM3OUQ3RkQ3NUMzNEUzRkMxNkNERjE1NjM0MzI5NjMwODA1MjJDQzJDQTc1QkJBMTI1QzhBMTkyNkQ3OEUxMzY0QTE2OUYzQzc5QkRENjJBREVFQTAxMTNCNEZDOTI2Q0JFM0Q3MEVENTU3Mzk3QTcxMzZDNTM1Rjc2QTgyMjUyMDlFOTlCMjkxOENBQTFEOTUxQjM2MzkyNjdDQzc1RjU0MkQwQzJDMjZGRkEwQzgyNTgxMjgwNDA2NzY5M0FFRTM1NzJCNkY2MTYyMkI0RTIxQkVDQjVBRTAyMERFOUNDMUI0MTEwMjgwNkEzRUNEMjBBNDAzRDlBNDNFMEExNjE4RDBCQzAzMTlFRjk4OEEyNEUzQjlFMEYwOEMyNEQ2MjNGNjM1RDhDMzVDNTFDNTJDQ0Y1OTI1NzA3NTZGNjI0OUQ4Nzg0NTM5RThCNkU2RkI5QUE0ODhFQjkzQ0I2QjAxNDI0NTkwMzg2ODNFQTVEMEFDMEQ2OENGM0ZBMjFDMTlEQTE5NjQ3RTlCRDY4MTNBNVqABDA4NzdGOUE0RjM1RUI2RjJERkREQUIwNUE4REVDNDM2OUE3RTMzRTNDMTNGOTg1ODM2RkMwOURBQkFFQzJFOTdCQzBEMjY1QkRCQ0YyQzcxRTYwQUJDRTVEMDA3RDYzNENBMjAzRjc2MUNEQkI0RDYzQjA0QkQ4NkE2NkExQ0RGOUVDODU1NzZCNjU5NDEwMUIyMTY1QzQwMjJEODJGOEJBQUVCRDg4NTQwNzI0RTBFNUI5RjAyNkRDQzZBQTM1OEQzMTNENDQwRTk2NUY1NEY2MkE5RUQ3MUQ2NzY2RDhEOTRCMTQwMzZCNTIxOTY4NjVBRkFBOUU5RUVFMjg4NDA3M0JENTg5RjE1MzUyNDMwNUQxNjM5MUZEMDZBM0ZBOUVBM0RGNzkwODc1QUI4OTc1RDhBM0EyOEI1NjZBRjI0NEZDRENBMTg2RkFFMUFBQ0QwREExQzVBREY1ODk5MjBFNzRGQ0M0RDBBMTY2NTI5RDA4OEY4NkYxRTI5QjRBQjA3RjlGRjRBOEM3MkRDNEVBQzlFNjFGMUZCODRBNEI2QzYzOUM0MEFDNTQ3RUQzRTFGMTY4QzM5NTBGRDI1Mjg1MENFQkFFMTBCMTc3RkVGMDQ2NzdGRTFFODAwNEQ1RkRBMTU5NUI3ODU2NTQ0Qjk5M0Y3MjIyN0RCODA4NkVDYoAEOUQ3MDI5Q0M5ODBFRDkxNTNCOUE2ODcyNjFDRURGNDREOTg1MjdDOEMyNkUyQ0Y2Mzg2NUQzMEUzMjdBNURENTI4NzUxNzE5MEJCRDlEQjhENDE1MUM0MjRFQTFBMjQ2NjJCNkEwQUQ3MDYxODAxQUZCNENEMzMwNzZEQkY4MjBCNEYwNjVDMDlGQ0NCQjkzQzBDQjRENTY0MzM5ODdCQUE5NzExOTVCN0Y3NkNFNDRFRENEMkRFNEQyMkI2REFBQzlDNkI0ODU4MjFBQUQ3OTJGQUEzODcxQzJGOTEzNTM5OTE1OUFDQzM5MUVDNTQzQ0IyOEIwRDdGMjlBQ0QwNjIxN0RDMjdGMDcwMzQ2MTM5REJFOTc0RTkyMDk3OEY5OUNDQTZERUUxMTQyNjU2QjBGMTNGRjM1MDM1RUVGOTVGQkI2NzAzMTk4QUE4Q0ExRjQ4NTQ1QTJDNjJENzRCMUJCNTFBRkJBNEY0QTlFRTVGOTg5QkFFRDcwQjk1M0I4OEZCNjg4QTQ5RTcyM0U1QkExRDA2QkNBMTA2NTMzRTdEOTBGM0NFOTE0RTVBQzRDRjVBM0QyQ0FGMkY5NDkwMDE4QzUxMkMxRDM4REVBQTg2RkNEQUQ5RjMzQ0U5ODAzMjhGMkM2QUEzQ0U5NDhEMkMyNzU2OUM3RDVBQzk1RjZqgAJFNTlFMjc2OEIyMUY4NEZBRjRBQUI3N0VBMzE0OEQ4NjMwNUNBMTZCQTEyRTExMjk2M0M5OTU5NDUwQjdDRjJCRjlDRDM4MEQ0MUNGN0I1OUVFQUQ3RDgyREQyMDE1N0QyMzQxMjU4MTQyRTc5NTY3QkJFMzJERDg5QjdCMUM2MkQ4RDc3NjM1NjcyQkYzNDczMjUwOTUwQjQwQjhEMDM4QUVBOTVBRUFCMjUwNkY1MzI3Qzk3OTJEODIzMzkxNzNBRkUxNTM4QjNDQTA1M0RCMTNDREYyQkFBOURFMkNGNUI5N0M1RjcxODI1N0FFRURBOTAzMTdDREQ2RjAzRURCcoACQ0U2QUYyRUYxMDIyRThEMzFFMUZBRDIxMjJEQjM1NjEyREZFQ0VGRTZFREI2RThBMTkxQjExQjExMTk0Q0JGRTAwMTFFQjEzQzFDN0JFMEIxMzRERjQyNDVGNTU5QTZCOTVGQTdBMTBEQjE2MTJCNUI1QURFM0JDQTIwNkExMzM0RDA0NTE2NjI1RDM4RTIwRkVBMTU0ODU2QTUyNjZGMjk2RDE4NDQyNjI2ODQ4RkE0MUZBRTVERTA4MDVDMEY5RkUwNkY3NzEwNUUzRDBENTZBOTQ3QUZDQzk2NENCOTdEODJCRDFDQjg4RDcxMDMzMDVBNjQ1RTEzRjkzM0Y3RiqzDgoKY29fc2lnbmVyMRICMDEiigEKQDUzRTQzNEE1QzcwMTM2MUQwMzU1QkVDMEQ1MzAzRjUwNDY3N0YzMUY2QzYxQzM2RDVFMzFGQjNFQzM0NDc2N0QSQDMxNjI3NzRBMTBEMThCMjlCODM4RUY5RTExRUQ3MEIzNTQ5ODMyMjdGM0EzQTU1QTM0NTFEQjI1MTJFNEE2QjIaBHAyNTYqigEKQDUyNzc0ODQzMjY5RTk4OEFGODk3QTIxQzJDRTNGN0I1OEMxMUVBRDE2MERCNUJFMDMyRTVDRDlCRjM5QUIxOUESQDhDOUMzREVFNTY5QkZDQkI3NjcyNkQxNkI3N0ZBQzU2M0ZFNDc4QjVDQjBCNUQxRDNEMEMzRTYyODE5MzVCMjYaBHAyNTZSgARDMUEwNUIwOEI1Q0FBNUQwRkFEMURGQTRFMzZDNjRDNTI1OUYxODM1OUU4MEM5M0YwQzczQUIwMDAxMDQ5NjU0RDJCNDY2M0IyQ0I5MUEzMkJERDlDMkJFM0U3RENCNTU2QTA4MEU2MzYwN0Q0RjJDRkM2NEEzODE2NDVFMTlEMkVFMTU2Q0QxNkNBOEU4RTc2NUJEOTRCRjU3OTkyQTczOTZBQjA4OTI3MTI3NjAxQUE0RkNDNDBDRjAxQUM2NkQ4NEJCNUFEQzA4NUZFNzM5OEUxMzE3M0U3MTBDMjVERkI2OTc4RUU3NjYyMUI3RTgzRjRBN0JFOUQzMjM3M0FFRDdFNTNGNzU3NDIxODlCNzExRUQzNDIxRkU5RkFFQzk5OTY4MThFQkIwNDZFM0I2MzZDOEExQzA1OTc3MUFCMjgyN0NEQUFDRUExRTYyQkU2N0JCQTExMjdGRjkzQUE1M0EzQ0VFODRCMDJCOTE4NTVCMEE2QjdBNDVBQzA0NTVEOEYzNUEwRTM5RTYxNTg5NTA3RTlGOTQyRDMyM0YzNDY4RDVDQzU5NzVEQTE2QkI4Rjc1Q0RFQTU2NkRDM0NCQjMzNTk5QjBCNUUzNEM4NkFEQzlEOThFQTUzMjc5NUVDMkQwQjkwOUNENUJBQkY2M0EzOEY4ODc0MTIzRDhCOVqABDhFM0MyQkVDQTRBN0VCMEFBNjBBNDQwRTI4NEI1RTBDNTM1N0YxMjZBNTA2OUY2RkE3OTA0Q0U2REQxMzRFQ0YzNDI5N0EwMDU2MDk2NTEzOTJGOTBGRDk4MTlBQTVBREJDRkNFNTBCMjVGMkI3NzJEMDY3NzhBNEJCMkU4OEQwRjk5MjBDOEIzOTU2MjJFOTk1RkRFRTI2MzY0RkM3OTRBQzVFOTY3RkZFMjQ0QTRGRDQwNjg2MjM2M0RGN0REN0U4QjAxNTMxQkQxODRBQjdGNkQxOTA2NEM3RjVCMjU2MzNGQUIyQjEyNzY1QzJEQzRFQ0MyREUyRDQ0N0FEMDcyRTQyRDc0N0FFQjhFMEU1QTNFQ0E1QzJCNTMxNzM3RTlEQjAyMTBCQjM1QkQ5QTdDRjZBMjU3MTc2REI2QjQ4NUUzNkI4NDhCMDA3MkMxOENBRkVCMTU4QTVGRTAwQ0JBRDcwMTY5NTgzQTMyQzdFNkQwQjcyODQ1NEU5QUFCRDkyNzRBNkRBQjc2N0QyRjUzN0M3OUNDMTAyNzAyNUZBNDE4ODgwQzE0RUEwRjdEMDI5QTJFQTc3ODBBMThCRDZCRTlCODk2NjVBOUQzQkYxRkMzRjE3RUVBRDEyNTRBQjMyQjc1Mzk4NDFENkM2Q0NFODc1QjBEMjM5QzVERTM5YoAEQUY1NEM0NDJCRDBFQkJEMUY2MDRFQzk3M0I1MkVDRTdGRkRGNjFERDlGRDc3REZEMDhEMDU2MDAzQkE0RTQ2OTNDNkZDNUM4MjcwQTEyQTZGNDU5MzBCNjQyRTNGOUQ4MjIyRkEyMjY3QTFFNkUxN0M0QkQ1NDU4NTcxM0ExNzNERDc4NUQwNzY4NzJERTVDM0FCMDc1MEQxNDA2NkU2NjE3RTY1RjgyMDMxQzRBQTg2RjE1MDRDQTU2QzEzQTE5OUQyMjEwMEU0Q0I2MTExMkE5NjRBRDY3QjNFMEQxMzExN0Q2OUY5MEI3MTBEMjI5RUZEMUE3QkREMzZBRjJBNkU5QkNCRDlDOTA5MDZFQTMzNDcyRDFDMDJEMTlEQjEyNTAyNzQwNTlGQzQ4RUJFMUZGQjg1REM3M0I1NjQ5NjlEMjk3Q0Y2MzZGRUY2QjFBQkFCMjMzRjY2OEMwRkY0RDkyRkU2QTVCQTc5MUE2M0NBRDY3M0UxMUY4MzgzMkJDNTkzOUNFMjIyRDlDMTMyRjZGQ0Q2M0M5RTlDMjU5MTY5QUZEODIxOTc4N0Q5Q0EyMjRCMjAyMzZGQTU2MDU2NzUxOUE3REQ3MjBERTU3NEVFNTlGQjg1RDVEMjU4NjhCNTI5MTBFMkU5MDBEODBEMkEwOTFDMzVCRkQzODU1NTEqsw4KCmNvX3NpZ25lcjISAjAyIooBCkBFNzBBN0Q1QjRERUQ4Q0QwOEM5RTAyMjA0MUU0ODUwMDc2MzdEODA2RDgxRDNGRjU1MEI1MDdFMDA1QjZDQTZDEkA0NzA2RTI2MEFBQUIxNTlDRjM4QzQ3NjNCOEFFMzE4QzZGRjk1NTgwMEI2OUY5OTA2QUNGMTNEMkUzOTE1MUYwGgRwMjU2KooBCkBDN0RGOTIxOTM3MkYyMzgzQzI3RTAyODM1NThBQzI3MjMyN0JEQzBEQkUyMjM1MkRCOUNGMTQ5MTE3MDI0Qjk5EkA1MDhBRTgyODk4QUZBRDVCNzE2QUMwQ0RCRjlDMDRCMzU0Mjg3OEY1NDQzREM5NUQwNDE1RTBEQ0RFRDIwMjBFGgRwMjU2UoAERDJEMTU0MUMzMTU5Njg2MkY1MEEzQzMxRjU4Q0YzRUJFRUE0MDg1N0EzQjkwMzYxMTEyQjcwREExNEY4NjUxRThGNTA0MTAzQjQ3MTVFNDY3RkNEMkRFMURBNzgwNDBGRDlBMkYyRDlBRTY1REJCM0YxMDQ4NUE3MjJFOUVCMkUwN0YxNTk5MkY2QkM4MEVDRkM3NTQ2NjNDN0RFNkJCQzUxREE4OTEzNDdCRTk0RTg0NUNBNzhDNjVGOUZGRDA1MDdBODE4MzUwRTQwREEyMUQ2ODVGRkJEMjc3Mjg3MjY0NkY5Q0Y1REJCRkY1Q0U4MENBREQzRjI5Mzg5MUM2ODQzQUZDNTBFQjQ1MTZBMEI2N0U1RkM1NjI3RDEyQTE0RENDODgyMTREOTY1NkFCOTgwNUMzNDI0REJEMTFFM0ZBRDUyRDRGREE2OTY5QzM5RjgzQzhDQTZDMTUyRUE4NDU4MUNDMjI2NzY0QTFDQ0U2Q0M3MTZCQzU3QUVDNTU2MDQ3RUM4NkZBRDI5NzY3OTMzMjFBNTM3RDU3QkI2NjREMzA3MERGQURCNkFCNTg1QUVGQzczNkYzQkQ1ODhFRTlBMDc4RDk3RDMwQjJGODg5NDRDOURCOUMyRDQ3NzU5NjE3NzYwMUEzRUYwRTJBRjYzREI0MzU4RjAzNDk3ODVagAQ4RTY1MEJBRkJFMUEwQUE5NDEwQzI5NkU2Nzg0RkQ5OTE5REM0QTBCRjdBQUZBNkM4Mjc0N0FEQzhBQzYxM0NFQ0NBOEY4ODRFNEJDNkUzQ0I3QjA2NzU1OTRGQzUzN0E3Q0I0OEJDODMyOTUzRkNBNTQ4REQ4ODJDNUMxNTY2N0EzOUZBNEE0NkUxNjE4MzM0NTVCNEQ2RThERUMzRUExODhBMThEMkNCMkE1MDFCQzFCMTg0NjU2RDc2NDVCMDlGODI2NTFDODlGODc0QTA4RjY3NDUwMzkwRjUxQTBBRkIzRUMxMEI1MjI0NDY1Rjk1M0E4RkU3OUM4QzlGMkI1RkU5MzJDOUQzRENENzM4M0VFOEQ3RDRCNzIzMTJGMjhGNTk1N0ZCQkRDNzU4M0M1NzhFMzQzNDVGODhDNzcwQjU1NTNCRDk4REFBRTgzRkZFQkNBNjQ5OThCQ0U4Nzk3MjU0MjczNzc2OTg2QjhCQ0ZCQjEwMEUzQzBFODczQkM5QTE5QUREREE1RTQ5N0VCOTE3OTUzQjk5OEYzMzVBMDJBNjJDMzFEQzIyQkI0RTMzNERGMTA3NzlFQjdGRjFDQzdDMThCOTM4MTA1RTUxNzU0NjA2ODkzREE5MDlDRUMwQUI3NDVGRkE3MDE1MDQyNjVDQTkwMUYwQjhGQzU2QWKABDk4NUU0QUQ5NjFEQ0ExOEU5QjZDN0RDMzNGNkY0QTQ4MzY3N0E5MkNENDQ2MTY5NTc1OTRCMzZCREUyQjcxQkVCRTcyMzIxNzI0ODhCODQ5MUEyRjI4ODQzQjc5RDIzNEQ0Q0I2QTk0N0NENkFCMzRGRTMyQjY4MDZCRTdCNkE0QzI3OTk4RDEwQkFBNTQ1OENEMzgxNjM0RkU4RDREMDFCQzhGRTEyMDZBOEIyOUQyNENCM0Q1QjAyQjM0NkYzQkYwMjRGMzExNDc4ODA4RENFOERBNThGOTI0QzQxRUY4MDM2RDkzNkFFRDYxNjM2MDA4QjhEODc4RDE4N0JGRTBDNTkxMzEwRjgxRTc2OUI5MEM5RTJGNzkyMTQ0NjIzMTdFMzNCMTFFNkFDQkQxNjg3QjdDRUU1QjA2MTgzQkNDMDZDNkRDQ0M2NTY3MzI4OUZEQkNENzJBRTA0RDJEMEIyMEI2ODdDNTg3MzAwNjM3ODAwQTRGQjcxMDExQ0I1RTYzQUU1RkNGNzYzMDA3NDRCOTIzQUJGNDkzN0VGMUY3ODQ5QzRDQzhGMTI5NTQ1NjRGODJEMzNGQ0YyRDdEN0FCRDA3OTg5MEJFRDI3MjJCQzMyRUE1MThDOUYyMjYxNjFCMjIyQjRDMkQzQjgwRDVGRkRERjJEOTNCMDFBMUMzMooBCkAyMjkzOTBCNDlBNDE3QjBBNDZGM0M2N0RCMzMxODYxRkNFRjI2M0EzNDY2MDBBNTI4NUMxNzlCNzIxMzhFMDQzEkBGNjYyMzUwOUE2MjBFRDcxM0ZDRTY2RDU0M0I0NjVCMzBCNERCQjVCMzg2QzBENzBBMjdGMzU1MkQxMzJEMTA1GgRwMjU2";
//initialize the message queue
for (int i = 0; i < N_PARTIES; ++i) {
map_id_message_queue[party_ids[i]] = PartyMessageQue<Msg>(ROUNDS);
}
for (size_t i = 0; i < participants.size(); ++i) {
res[i] = std::async(std::launch::async, sign, sign_key_base64_arr[i], participants, m, ssid);
}
for (size_t i = 0; i < participants.size(); ++i) {
EXPECT_TRUE(res[i].get());
}
//STARK sample
printf("Test cmp sign with stark curve\n");
//STARK sign key
sign_key_base64_arr[0] = "EAIYAyL9EgoKY29fc2lnbmVyMRICMDEaQDAzODQ0MTM2OTM4NkQxMjM3Q0QxMDZGRDQyNzVFMDlBRkFBMjFCOUIwQjJDMjk2NzM2MzRFM0QxNkU3NDkzRDgiiwEKQDA3OUUyMkI1OTA5Q0YxREI5RkE2REExNDlCMThBMjFCMzhBQ0VBMTAzMTE3NTdFOUMxM0FCRDk5OTIzREVEMzcSQDA2NDk2QzYxMTEzMkM0Rjc4OThBQzY1NEEwMTdFOUNBMTNDRDVBRURDMzk1NkY1QURBNjYwMEI2ODM4NjFENDIaBXN0YXJrKosBCkAwNEY2MEY5OEExMUE1Qjk5NDUwRkU2QkJGOEY0RDU4REEzNUYxRDE3QUU0MzBFRDZFNDhEMjlDQUI1OTk3MzM2EkAwNUNCMkU1NjZDMTYxMjk5NUVBNUFFQ0I1QTJCQ0UxMUJBREU2RDNBRTVDQjBFNjJBNDg3RkY2NUE3NEJDRUY2GgVzdGFya1KABEVCOUJDNjExMjI0MzNGRTZDMUY5RUZEQzE5RDM1OTlDNTBFNEI1QTczMkY0OURFQkRBRkYzMEY5NjYzMjlBOUYxNTNCNUNEODA1RjExMDdFNDlBMUE4NUY3RjBDNUVEMURCQjQ2QUNGMzdBQzNGMEVDN0ExNjA0QTgxMzZFMzgyREMwNDYxRjZBRjkxMTQ2NTFBMUU0OUUxMjBDQ0VBNkI1QjRDNjc3MDBBQzY0Qzc5ODNEMDhDN0QwNjBFRjYzREE5NDNDMzcxMTRERDRBRTRCMUJCN0EwMzBBMkVEQ0I3OTlEQUM4RDBCNUE3NDJBQUY5MzE5OTAzQ0U0RTdFODY3MjQ2MkVEMjVGOTJERjUyQzA1QjYzODZCREI5QzI1QkUyNjhFRDJCMkNBNkU2OUM1OThDQzdFMDhEQkQyMUY5QkUyQjVFMDY2NkM0QTMwREY1RUUzMzMyMTU4NTc1ODU3QkQ3Rjc0MjVDODMzRTU0MDY2MkQyMTY3QTVBN0Q0MTc0MTdDRjc1RkM3NzkzNzkzREY3RUVDOTZBMDA5NkIxREI2RjRFNDJEMkUxQjRFQTk4NTk2OERFQjU2RTc2NzQzQzkyMDEwQjY2QUYxRjREOTM0OUNBOTVFQUIxQTBGQ0ZGODIzOTVEQjU1QUUxQkI0RTYzRUM3RDJCMkM4MkNEWoAERDRBNjkzNDQxODFCNkE2MzA1MTkzMTY3NjkyRjQ4MzlGNTgxQTY1REQyNkI1M0Q1NzQ3MjgwQ0I3RjkzMkE4MTlBQzU1NTE4NTAwMkYwNTNGQ0Q4OUM4RUM0NzdDMDE3M0U1RUNDQjk0MTBBMDMwQzE1QUJDQ0RBNTlGMUFCNjU5OUI0RkVGRjhEQUIwNjkwMEE3OEE1MjUyOEZGQ0YwNDdEQjJCRTNCRDdEMzU4QTQyMjQ3N0RFN0RFMDNENjZBRTNGQ0U1OTcwQzY3ODVFMjU0MDJFNkM2Q0I1RDQwODlDRUI4REM3OEJCRDFEM0FEMzVBNkQwNERCMDBCRTA4QjEyRDQ5MzkxRTVBQkY0N0E1MzkxOUU1NTZCRjVFQTRBMzNDNDNFREMzREYzMzVDMEVBRDlBNDNGNkEzMjBCMDg2RDg4NzYzMjZDOTFDQkU2NTFDRDU0NUUwOEIyOUQ3N0FERkJBODMzOUI3QzNGMDczQ0RGRkRCQURCMzUxNjNBQ0RDNjk4NUY4RUE0NjQ5RkM1OTdGNTlGRkYzRUYzQkE4MTk4RUJBMzYyQkFFNDJGODkwMzQ1QTFCNkJCNTU5QUE3MkE0QTIzRjEwNTg2MEQ2OEQ0QzgzODcwRDJBREQxMTcyRDJEQTlCRjIzQzNGRjQ2MzlGNzE3Q0EyN0REMzhigAQ0NEMzNzkwQzQyN0JGRDEwMjdBMjY5MzA4MjYwRjY3REU5RTMxRkJDNEE0QUIwRTdFOUQ3NjgwMUM4RjUyNjM2QUYzMzU0QkE1MzU4QkZBMDREQjhFREZENTMxNTUyNzM1MzNFNzIzNEJFNEI0RTU4MUJFMkY0MDYzNDg3MzMwQzJDRDkyRkU3QkE4RTFCODEwMTQ5QUQ0MTAwRDVEN0EzQTAyRjM2MTRBMzk4MjdBOUMxNEQ5MzBFRkE2QUY0NTVCNjYxMjc4MTQ3M0JDOEE5Q0MzODlEQ0EyMjQxODcwMURBRUJCODc2QTNCMjRBNEM4MjYyMEE5NkEzM0M3RTdCMDZGMDJFRTdCODYyNEM1M0QyNzBDNDM2NDk2RTY5NUZBMTRDMDg1RjcyMTlEQzM5QjQzMENBNDdGRTM2QkFBNkIyNUIzOTFDQzIxMDlEMDdFRDkzOEEzRUU1OUIyNzFCMDI2NjEzRjE3RDY1MkYxRUIxNDNDMkIxMkU0QkM3N0IzNDVBQ0YyNEI5Njg5MjM0MUI2NkFBQzMyMzFFRTlDQjE5RDAxQjhDMEZBREJBOTUzMThFNjgzNDcwNUY4NzVCMjY3Q0I2ODRGRUM2OTAyREM5REZCQjM3REJFNjRBNTM4OTU0NDA0MTQ3RTQ0QjhDRDYyNjgzRjgxQzg2MTJEMWqAAkVDQjk1QjQ1RThGQ0I5QTAyRUNCNEIxMDczOEM2MURDOUQwODdCMTBGQTc4QzY0N0QxNjJGODE3QzBENjg5MUFFMjRERjgxOENCQjczNDFCRDhDNzE3QkJGOTUzMUNCMkI5QUY4MDJBNjczQjE4RDFGMUE4NTYyMDc1N0NBMThENkQyNTZBNkI5RDQ0RkVCREQwNDBBODFBNDUxMTc2MjY4QjA5NUE4RjkwODMwMzE3MUY4QUYyRTFBM0I2RTZFNTJBMjdDQkQ3RTRBOEEzREEyRTNEMkU1NUY0NTk1QjE2MEY0OUFFRDBEQjlEQTMyMUIxNEU2MzQwNEM0OTRERkJygAJGRUNCMjlBOTc3QjA2QjBFQkM4MEEwMEE0RTJBRTE5NkY1MUNCOTFERUYyNTA2MUMxQjdGMTc1QzA1QTk0REY5MjEwM0YxRUY2QTUyNjM2MDgwN0IwOTZFMDdEQ0YwQTA0MTg0NkYyQjE4QzIxRTE0NzFEQkZBQzlEQzJGNjUxQjBDMzgzRkJEOUNEM0YwNkYzQzMzNDdGODlBMzMyOTNBQjIwOTdDMTUyQjk0RTNBODFCMzVCQkY2NEI2MzQxRjdCQ0MwODE3QjAzMjM3MkYzQTVGRkNCM0Y2MEVCNENBODAzMTM2RDk1RTBBM0VEQTY3RkQxRjc2ODI2OURGRkQ3KrMOCgpjb19zaWduZXIyEgIwMiKLAQpAMDM2RDZCMEFDOTVBNjcxQjRDOTlBQTE2NzY2NjJBMkYwQ0ZBNzc0OTUxMTM2ODU2NDg4NjkzNDRCNjgwMzM3NBJAMDYyRTVEM0I5MENBMEI5MERDOTY3MTZCOUVGREVCMEZCNUNGNTU3QzhCMDJGNzdCQUZBNTI1N0RBNkMyNDJCMRoFc3RhcmsqiQEKQDAxNEQzOUMwQTM0MjAxQjBBQTIzMzM0N0NFODM3QjJFN0U4MDhCNDAyQjVFQThDMjQyOUY0QTRCQjdCQjhCQjkSPjkzNDZFOEY5M0JFMUM1Q0JDQUE0RjI0QjJDODQzNTcyNjI1QUZGNThFQTZBQTU0RjQwOTdENDlGREQ5RDc1GgVzdGFya1KABEY2MkQwM0Q0Q0U0NjY2RTU3NkVGOUE2MDU2Njk0ODA3NzUyQjg0NTVBNTlFQzRCNzZERjU0MTZFRDZDQzdCODI5RTk5QzdBNkZDRTEyRjJFRUNGMjYzNDQwNDY5QzNCN0E3RDQzRTg4NzcxRENBNzc1MUM5QzFEQkY2Njg5RDQ4RDlBM0E0NkRERjI2Q0RDQkQ3RTNDNUZEMkRBMDAzQ0U4OEUxMUY2ODdDNkI0MEQ4MkVCODNERTEyMUI3QTI5NDAxODcyMTU0MzRENTQ0MjVBNUM3RkJFMzkxNTgwMTZGODczREVFOTMzRTUzMTg5RDA2MkI4NkNDQ0M2NTY3NUE5RTFEMERFMkVCREU0MEVGNDM5NjQ4M0ZEODAyQTQ0MjY2ODFBNjY4MkJFQTBCNUJCNDhCODc0MkZEQjREM0RGQTQ1RUJFMUQzRDBBQTcxNjI2RTg4QjAwNjBFQjM5QjJCMTBBN0EzRTQ3QkZBQkE2MjcxMUZGN0FBQjI3MkNGMTZCQzYwNDM1NTQyRkU1M0NDRUQ4NTkwQzcxQkNEMEQzMjE3ODE3NkU0Q0I1QjQ3MkQyNTZDMDA4RjNCQzUyQzJGNTgwMkREQkU1MjAyQUM0RTM5MDhBN0Y4N0Y3NDZCQ0UwQjZFRjJENDIxN0EyRTA2OTAxRENBMTI4MjEyNDJEWoAEODg4REU1MzZCMTE3MzdCMjA0Njk1OTEzMkVCRTc0QTJFNTgzMkE2MkFBQjNERjMxN0ZBODJGMTI4QkYwMjEyRUFFOTgyNTM5M0ZDRkZEQUI0MjFDNTQ0NUQ2MEU0QURDQzVBN0RDRDQ4QkNFQzUzNTQzRDdGOEFCNTQwQ0U0MEZDQTIwQjZFOUJCRjMxMkMyREE1NjIzQzg3OTZFNTZCMzUzRUQ3MjI4NDlGODM1NTcwNEUxOENCNDNGQTU5QjcyOTYxMTk2NzM1NUFFQUQxODdDQjkzODlCNjJFM0VGQ0YzOTREMThCQkYwRjAwMUE3MTlGQjJEQjJEM0QxOUY2RUY4QUZBQjVDMkNCNUYyOUFGNjgzMEMxRjc1M0JGMjhFQUQzNjFCODEzNjkwQjYwNUNBRDBBNDIwQTc0MTExQUU0MTI5QkI2NTQ0NzI2RTUyMzhDQzJGQ0JFRDFEQUQ5OTAyM0JDQkNDOUY0ODgxRTQwMjYxQkQxODJBRTQ3M0I4NjBBRTZGNjI0MTI4M0ExQTMxQTFDMTM0NUIxMjZBQzE4M0VFMzhBNjI4NDVGNTcwNDUxREQ1N0Q3MEQyRjRENzEwNzUxNzVDRDZGODFDNDAwOUI0MzJCQzExOTY3MzExNkM3RUM4Q0RFRjdCM0RBRTI4MDhGRTRFRkYzRDRCQzligARERTVCOTBGNzQ1M0RBRUE0QUVBRTUyREIzMzdEOUU2QTU5OTAwQjc4NDkyRjUyQTI5RDkxOTNGM0UyRDRGOUREOTUyREY2MTA3NTdDQzAyNUY4MUYwM0I2QzA1MDY5QjdEMzY0MzFGOTAwNThFNzk2NDM4RTJEQkVDOTM0OUNFNTczRkFBQ0NCQTZEMkNGRjNGNDU5MTAzQTY2RTc0QzVEMjg5NjRCM0JERUI5REEyREVFNjkxMEM3OTc2Qjk4NDBDMTkxMDM0NTJGNDc4MkQyNzQzMTQ0RDQ5MEQ2MkUzQTUxNUM1NDVGQjY5Qjk4MzhGQzFBREZDNDIyM0NBRkYxMDA3QkVGMDBBQTEwQzE1NkYxQjlCM0UwRkU1Qjc0ODk4MDRBQTI0NzQ5NDZGMUFGOUQ4OEEwNjlFMUYyRDY4NkVEQzVCQkU4NDgyNzhDMEQwRUZEREFENTRFMTY1RTU3MkI0RUE4MkZEOTY1NzZEOTkzQTQ2QUIwNDBDN0ZFOEY2ODgxQkU5MTc3RTJGODQ4RUM4Nzk5MzI3MUVEQjI5NDg0NzVFRjhDQUJFQjJDMjZFRkEzMjBERkZENTEzNjdEMEFGQUM4MTU4MDA2MDBBN0YyNEJCNzY2NURCQUI3QzI0MUU5REJFMjA5NDIxQTk4RjZERUZGNDY5RUQxNDg5NCqzDgoKY29fc2lnbmVyMxICMDMiiwEKQDAyMTI1MERCQzYzMzdFQjcxRjA3RkIyRjhDOTg1MzE3QTk4OEZDMjRDNzlCODNEQ0NFQUQ5Q0QyRUZBQjExMkESQDAyODI3QTIyNzA1MzMyOTg0RTQ3QzIxQkM4Mjg1MTA1NDgxQTExN0NFM0Y3NzNDRDZCQTdCOTMxQkJBREMyQTMaBXN0YXJrKokBCj41RjM5NjhCNTJEM0QzMDU2RTZDNEE5MTdFRTAwMEVEMkIzQ0VFOUY1Mjk4RTFDQ0NCQjEyRTkwQUZFRjkyNRJAMDJCMzc1RjE0ODI0NTU0NEIxNTNCNDlEMzc0QTU3NzYxQTY1RTlDNTNGQzUzOTIyNDc5RjlBMjQxMzdEREE3RBoFc3RhcmtSgARCOTlFNEU3QTk2RjhENzk2NTg0MkJGMDdCNkFENUJBODI2MTg0MzE5N0MzMzE4RkI1RDhENDc0OTlFNEE4MjQ1QkYxN0RGQTc5QkJBMDgwMjI1RkVDQUIxRDNDQkJFMjE5REQyNzZCQUM3QzFGMDc4QTMxOEVFQ0VBQkJBMDY5RDJCM0ZFRENEMjVCMzYyRjAyQ0IxOEQzNDIwOEYwQUMwMzIyMzJGQjcxRUNEMjg4QUMyMzczN0Y1MDZFRjI2NUQwOTI3NjY0MjkyMzBBOTk3NTE5MDEyREVCRkVFQTc4RjE2MEZCOTUxNDBBQjk1QTZERTc5QzdFRTc1NjE2RDU2RENCRjAxOTdCNUJCNzIzRjYyNUFGNzcxNDRGMjczMjA2NTUwRjU5NkUwNzYxRjQ0RDhDOTJENDVFREFFRTE2NDEzRkM5ODNBRDdGMDJDRkQ5NTAxRjRGMzc3M0UwREI5QUVFRUY4QTlEMjZCNUNENTRGMjhGNzI3OERDMDEyRTgyRTU3M0EwNzQ3ODc2OTM4MTc4QjE1NjhBOEFCQjIzNTEzNjQ0MzQyRTM4N0RBOTEwNzFGMEUzRkVDMkYyNTIwQkFDRDdGMTI0MUNCNjIwNkUwMjVDOEVBOUNCRTA2NjBEMkUwMTM2OUE5MjhEMzFBOEYzQTg2OUIwRkM3NUU0MVqABDlEQkRDNDlBQTIxOTc5Qzg4NzM0MzFCNUMzNUIwREI1QTdGMTRFRjkyMkIzQzg1ODFDRTRBM0Y4RDQ5MDZENEQ5M0NGNUMxNEREM0FCMTNGMkVFM0NEQUVBMDlCNjMzQjEzRThERUFEOUZGOTI4QTNFMjU1NjJGQTRFQUIwMTdBMjBCRkJBRjg5QjE5RDUyNDlCOTA1NjZDREQzOThGODA1OUJEMjI3RUVGRTgxNjA5NURGMjQyODhDQTE2MURGODQyMkMyMTZDN0VDODdCMDc1N0Q0QjFGQTY3RjgxRjUwQzNFNTcxRkIyQTA1NTY1M0QxMjkzMERERTU2MDJBODlDMUEzQ0FENEU1N0VDQjI0QjIyRjdGM0UyMEMyRjdBMDZEQzY3M0Q2REU3QkNCRkM0NzQ1RjNBMENCMEMzODEwNUJEODY1QzU3QTNFQTkxMDREMzZFNkQyN0M5RjkxOUUxMjI5MDNFNERFQUM5NjVDNEJCOURGMDEwQkQ2NEVBMzVERUFGQjlFMkNFODgyQkNDQjA0NDcwMEVCQ0RDNUQyOEVDNEVGMDYyOUZCRTQxODJBNUY5MzhDOTZBMUE3Q0U2NDFBRkNGN0UzOTZERkYxMkVBM0M2REMxOTVFRDM1NkNCQzdENkNCM0QwRkJEQjU3NEFDQUM1Rjk1NTIxM0JEYoAENDYwRDA0NzJGOTBCNzAyQUJGQUI0NkRFMDQ0Njc2NUU3NjFBNUYzODYwRUYzQjQyMDJCMTg4N0JEOUQwMzhGMkI0NEJDNDhCODc3RjU1OEIyOTRFRTNBMjY3NTFEQjQ1Rjc0NzlCNEI1RkU0MTE4MDExNTA0REE3QUY2MTAyREZEQkIyNEZGODZGRTE1MUJGNTJENjIxOTlENTQyNUVBQUI4OTA2OTU2OUE3OTFEOEQ3RUE5OUM2NUMyNDU3QjYwRDgwMzBENzJGN0I2MjA4NDZFNkEyMDEzQjExQzA5NUYxMkVDMjI1MzE5NDQ1MTlBQUEwNDlFREI3QkM2Q0Y2RjM0MkM0NUM5RDlGMkVGNkJGNjFGRjUzQzJFMzJFMEI2OENGQjRFNzc5RkM1OEM2MEQ0NjdFRjA5ODhCRTE2OEEyQUFGQzZGMjNFODdDMzI0NDQ5OUU3QzY5MjA5Q0Y5NjQwMDA5NDhENjFGMzFFMTAwMkFERDAxODAxOEZDNTU2RUNBOUY4MENBNjJEQzdBRjhDQzhBRjM3QzdERkQ1MTRFMjQ0RDY4NERENzkyNUEzQ0MzRUZDQzAzODQ0ODNFOTcyMDdEQ0NFQTk1OTRFMDQ3Q0E4Q0QwOUY0RjcwNTJEQjI5QTk0QkU0MEE4QUU2OTI5MTlDRTVDQzgwNTA1NUEyiQEKQDAyQzRDMDMwRjBFNTQ5Q0FENzU5MTVDOUNBODBBNTNFQTc1OTk5RjZGMjgyNTdBMDk0NzcyQUQ2RThENEVDMUYSPjE2NDRDRTNEMTREMkU5RjU2MDc1Nzg2OEVDMDY3MTQyMUI2NUQ5NTMyRkM4NzYwMjhDM0MwMDczNEY5Q0ZBGgVzdGFyaw..";
sign_key_base64_arr[1] = "EAIYAyL7EgoKY29fc2lnbmVyMhICMDIaQDA2QjE3OThGMUREOEJEQTMxQzUwMTMwMjgxRTNGMUJDODQ0RDI1ODdCMDE5QzE2QzNEQUU0NzQ3NTg0RUFFRDEiiwEKQDAzNkQ2QjBBQzk1QTY3MUI0Qzk5QUExNjc2NjYyQTJGMENGQTc3NDk1MTEzNjg1NjQ4ODY5MzQ0QjY4MDMzNzQSQDA2MkU1RDNCOTBDQTBCOTBEQzk2NzE2QjlFRkRFQjBGQjVDRjU1N0M4QjAyRjc3QkFGQTUyNTdEQTZDMjQyQjEaBXN0YXJrKokBCkAwMTREMzlDMEEzNDIwMUIwQUEyMzMzNDdDRTgzN0IyRTdFODA4QjQwMkI1RUE4QzI0MjlGNEE0QkI3QkI4QkI5Ej45MzQ2RThGOTNCRTFDNUNCQ0FBNEYyNEIyQzg0MzU3MjYyNUFGRjU4RUE2QUE1NEY0MDk3RDQ5RkREOUQ3NRoFc3RhcmtSgARGNjJEMDNENENFNDY2NkU1NzZFRjlBNjA1NjY5NDgwNzc1MkI4NDU1QTU5RUM0Qjc2REY1NDE2RUQ2Q0M3QjgyOUU5OUM3QTZGQ0UxMkYyRUVDRjI2MzQ0MDQ2OUMzQjdBN0Q0M0U4ODc3MURDQTc3NTFDOUMxREJGNjY4OUQ0OEQ5QTNBNDZEREYyNkNEQ0JEN0UzQzVGRDJEQTAwM0NFODhFMTFGNjg3QzZCNDBEODJFQjgzREUxMjFCN0EyOTQwMTg3MjE1NDM0RDU0NDI1QTVDN0ZCRTM5MTU4MDE2Rjg3M0RFRTkzM0U1MzE4OUQwNjJCODZDQ0NDNjU2NzVBOUUxRDBERTJFQkRFNDBFRjQzOTY0ODNGRDgwMkE0NDI2NjgxQTY2ODJCRUEwQjVCQjQ4Qjg3NDJGREI0RDNERkE0NUVCRTFEM0QwQUE3MTYyNkU4OEIwMDYwRUIzOUIyQjEwQTdBM0U0N0JGQUJBNjI3MTFGRjdBQUIyNzJDRjE2QkM2MDQzNTU0MkZFNTNDQ0VEODU5MEM3MUJDRDBEMzIxNzgxNzZFNENCNUI0NzJEMjU2QzAwOEYzQkM1MkMyRjU4MDJEREJFNTIwMkFDNEUzOTA4QTdGODdGNzQ2QkNFMEI2RUYyRDQyMTdBMkUwNjkwMURDQTEyODIxMjQyRFqABDg4OERFNTM2QjExNzM3QjIwNDY5NTkxMzJFQkU3NEEyRTU4MzJBNjJBQUIzREYzMTdGQTgyRjEyOEJGMDIxMkVBRTk4MjUzOTNGQ0ZGREFCNDIxQzU0NDVENjBFNEFEQ0M1QTdEQ0Q0OEJDRUM1MzU0M0Q3RjhBQjU0MENFNDBGQ0EyMEI2RTlCQkYzMTJDMkRBNTYyM0M4Nzk2RTU2QjM1M0VENzIyODQ5RjgzNTU3MDRFMThDQjQzRkE1OUI3Mjk2MTE5NjczNTVBRUFEMTg3Q0I5Mzg5QjYyRTNFRkNGMzk0RDE4QkJGMEYwMDFBNzE5RkIyREIyRDNEMTlGNkVGOEFGQUI1QzJDQjVGMjlBRjY4MzBDMUY3NTNCRjI4RUFEMzYxQjgxMzY5MEI2MDVDQUQwQTQyMEE3NDExMUFFNDEyOUJCNjU0NDcyNkU1MjM4Q0MyRkNCRUQxREFEOTkwMjNCQ0JDQzlGNDg4MUU0MDI2MUJEMTgyQUU0NzNCODYwQUU2RjYyNDEyODNBMUEzMUExQzEzNDVCMTI2QUMxODNFRTM4QTYyODQ1RjU3MDQ1MURENTdENzBEMkY0RDcxMDc1MTc1Q0Q2RjgxQzQwMDlCNDMyQkMxMTk2NzMxMTZDN0VDOENERUY3QjNEQUUyODA4RkU0RUZGM0Q0QkM5YoAEREU1QjkwRjc0NTNEQUVBNEFFQUU1MkRCMzM3RDlFNkE1OTkwMEI3ODQ5MkY1MkEyOUQ5MTkzRjNFMkQ0RjlERDk1MkRGNjEwNzU3Q0MwMjVGODFGMDNCNkMwNTA2OUI3RDM2NDMxRjkwMDU4RTc5NjQzOEUyREJFQzkzNDlDRTU3M0ZBQUNDQkE2RDJDRkYzRjQ1OTEwM0E2NkU3NEM1RDI4OTY0QjNCREVCOURBMkRFRTY5MTBDNzk3NkI5ODQwQzE5MTAzNDUyRjQ3ODJEMjc0MzE0NEQ0OTBENjJFM0E1MTVDNTQ1RkI2OUI5ODM4RkMxQURGQzQyMjNDQUZGMTAwN0JFRjAwQUExMEMxNTZGMUI5QjNFMEZFNUI3NDg5ODA0QUEyNDc0OTQ2RjFBRjlEODhBMDY5RTFGMkQ2ODZFREM1QkJFODQ4Mjc4QzBEMEVGRERBRDU0RTE2NUU1NzJCNEVBODJGRDk2NTc2RDk5M0E0NkFCMDQwQzdGRThGNjg4MUJFOTE3N0UyRjg0OEVDODc5OTMyNzFFREIyOTQ4NDc1RUY4Q0FCRUIyQzI2RUZBMzIwREZGRDUxMzY3RDBBRkFDODE1ODAwNjAwQTdGMjRCQjc2NjVEQkFCN0MyNDFFOURCRTIwOTQyMUE5OEY2REVGRjQ2OUVEMTQ4OTRqgAJGQTIwNzg0OTg2QUFGNzE0RDEwMjYxMzhFNDc2Nzg4RTg3MkVFNDM3MEE2MkRDRkRFRUU0QTMyQzZBNTFBNTI4NEZGQTc5Rjc5RjBDNEUxQjU2RTREMDdCQTcxMjUzQjY0QzExQjMzN0U5MzY5MzJEM0U0QUU4MDc1QUM5RDM4QzJDNTE4OTg2MDMwMDREQjgxNzg1RDQ0MDU3OEZCQUNBNDk3QjMwQzRDQkJCQkY0MEU4NDA4NzUxMzdFMzA3NDk4OTZENTdFMjRDQkM5OTBBMkEwQzU3OThDMUJCNzRGMjM2QTZBQjM5QTc4NEUzMjYxMEIwMzY4MjE3OUJFNURCcoACRkJGNENCOURGMTY2MUY1QTY0QTU1NTcyNTMxMDAyOUU5OTM3QkUwMEYxMjkyQzQwMUQzRjkzQjhGQkQ0Mzk4MTU5RUU4MDA4MTNEQTk3NjAzRDE3M0RFRUEyQzg3MUM5MTY4RTkxNTE3MTIwNThERDJFMzBENDhDRTQzRTdBN0M1QUU3Mzk2NEExMTg2M0Q3RkY3RDQyRjMyOUJFNjE0NzFGQzQ1OTM1NEY5NDg4M0U1MEVCNjRDNUE0NzQ3OThFQTFGQ0Y3NkY1NjBEMkFBMEE0OEU4QzlEMzFFMTIyNzBBRkVBNEFFOTIwMjhGNDIwRjA2NDk2RTc1NzUyQjA5Nyq1DgoKY29fc2lnbmVyMRICMDEiiwEKQDA3OUUyMkI1OTA5Q0YxREI5RkE2REExNDlCMThBMjFCMzhBQ0VBMTAzMTE3NTdFOUMxM0FCRDk5OTIzREVEMzcSQDA2NDk2QzYxMTEzMkM0Rjc4OThBQzY1NEEwMTdFOUNBMTNDRDVBRURDMzk1NkY1QURBNjYwMEI2ODM4NjFENDIaBXN0YXJrKosBCkAwNEY2MEY5OEExMUE1Qjk5NDUwRkU2QkJGOEY0RDU4REEzNUYxRDE3QUU0MzBFRDZFNDhEMjlDQUI1OTk3MzM2EkAwNUNCMkU1NjZDMTYxMjk5NUVBNUFFQ0I1QTJCQ0UxMUJBREU2RDNBRTVDQjBFNjJBNDg3RkY2NUE3NEJDRUY2GgVzdGFya1KABEVCOUJDNjExMjI0MzNGRTZDMUY5RUZEQzE5RDM1OTlDNTBFNEI1QTczMkY0OURFQkRBRkYzMEY5NjYzMjlBOUYxNTNCNUNEODA1RjExMDdFNDlBMUE4NUY3RjBDNUVEMURCQjQ2QUNGMzdBQzNGMEVDN0ExNjA0QTgxMzZFMzgyREMwNDYxRjZBRjkxMTQ2NTFBMUU0OUUxMjBDQ0VBNkI1QjRDNjc3MDBBQzY0Qzc5ODNEMDhDN0QwNjBFRjYzREE5NDNDMzcxMTRERDRBRTRCMUJCN0EwMzBBMkVEQ0I3OTlEQUM4RDBCNUE3NDJBQUY5MzE5OTAzQ0U0RTdFODY3MjQ2MkVEMjVGOTJERjUyQzA1QjYzODZCREI5QzI1QkUyNjhFRDJCMkNBNkU2OUM1OThDQzdFMDhEQkQyMUY5QkUyQjVFMDY2NkM0QTMwREY1RUUzMzMyMTU4NTc1ODU3QkQ3Rjc0MjVDODMzRTU0MDY2MkQyMTY3QTVBN0Q0MTc0MTdDRjc1RkM3NzkzNzkzREY3RUVDOTZBMDA5NkIxREI2RjRFNDJEMkUxQjRFQTk4NTk2OERFQjU2RTc2NzQzQzkyMDEwQjY2QUYxRjREOTM0OUNBOTVFQUIxQTBGQ0ZGODIzOTVEQjU1QUUxQkI0RTYzRUM3RDJCMkM4MkNEWoAERDRBNjkzNDQxODFCNkE2MzA1MTkzMTY3NjkyRjQ4MzlGNTgxQTY1REQyNkI1M0Q1NzQ3MjgwQ0I3RjkzMkE4MTlBQzU1NTE4NTAwMkYwNTNGQ0Q4OUM4RUM0NzdDMDE3M0U1RUNDQjk0MTBBMDMwQzE1QUJDQ0RBNTlGMUFCNjU5OUI0RkVGRjhEQUIwNjkwMEE3OEE1MjUyOEZGQ0YwNDdEQjJCRTNCRDdEMzU4QTQyMjQ3N0RFN0RFMDNENjZBRTNGQ0U1OTcwQzY3ODVFMjU0MDJFNkM2Q0I1RDQwODlDRUI4REM3OEJCRDFEM0FEMzVBNkQwNERCMDBCRTA4QjEyRDQ5MzkxRTVBQkY0N0E1MzkxOUU1NTZCRjVFQTRBMzNDNDNFREMzREYzMzVDMEVBRDlBNDNGNkEzMjBCMDg2RDg4NzYzMjZDOTFDQkU2NTFDRDU0NUUwOEIyOUQ3N0FERkJBODMzOUI3QzNGMDczQ0RGRkRCQURCMzUxNjNBQ0RDNjk4NUY4RUE0NjQ5RkM1OTdGNTlGRkYzRUYzQkE4MTk4RUJBMzYyQkFFNDJGODkwMzQ1QTFCNkJCNTU5QUE3MkE0QTIzRjEwNTg2MEQ2OEQ0QzgzODcwRDJBREQxMTcyRDJEQTlCRjIzQzNGRjQ2MzlGNzE3Q0EyN0REMzhigAQ0NEMzNzkwQzQyN0JGRDEwMjdBMjY5MzA4MjYwRjY3REU5RTMxRkJDNEE0QUIwRTdFOUQ3NjgwMUM4RjUyNjM2QUYzMzU0QkE1MzU4QkZBMDREQjhFREZENTMxNTUyNzM1MzNFNzIzNEJFNEI0RTU4MUJFMkY0MDYzNDg3MzMwQzJDRDkyRkU3QkE4RTFCODEwMTQ5QUQ0MTAwRDVEN0EzQTAyRjM2MTRBMzk4MjdBOUMxNEQ5MzBFRkE2QUY0NTVCNjYxMjc4MTQ3M0JDOEE5Q0MzODlEQ0EyMjQxODcwMURBRUJCODc2QTNCMjRBNEM4MjYyMEE5NkEzM0M3RTdCMDZGMDJFRTdCODYyNEM1M0QyNzBDNDM2NDk2RTY5NUZBMTRDMDg1RjcyMTlEQzM5QjQzMENBNDdGRTM2QkFBNkIyNUIzOTFDQzIxMDlEMDdFRDkzOEEzRUU1OUIyNzFCMDI2NjEzRjE3RDY1MkYxRUIxNDNDMkIxMkU0QkM3N0IzNDVBQ0YyNEI5Njg5MjM0MUI2NkFBQzMyMzFFRTlDQjE5RDAxQjhDMEZBREJBOTUzMThFNjgzNDcwNUY4NzVCMjY3Q0I2ODRGRUM2OTAyREM5REZCQjM3REJFNjRBNTM4OTU0NDA0MTQ3RTQ0QjhDRDYyNjgzRjgxQzg2MTJEMSqzDgoKY29fc2lnbmVyMxICMDMiiwEKQDAyMTI1MERCQzYzMzdFQjcxRjA3RkIyRjhDOTg1MzE3QTk4OEZDMjRDNzlCODNEQ0NFQUQ5Q0QyRUZBQjExMkESQDAyODI3QTIyNzA1MzMyOTg0RTQ3QzIxQkM4Mjg1MTA1NDgxQTExN0NFM0Y3NzNDRDZCQTdCOTMxQkJBREMyQTMaBXN0YXJrKokBCj41RjM5NjhCNTJEM0QzMDU2RTZDNEE5MTdFRTAwMEVEMkIzQ0VFOUY1Mjk4RTFDQ0NCQjEyRTkwQUZFRjkyNRJAMDJCMzc1RjE0ODI0NTU0NEIxNTNCNDlEMzc0QTU3NzYxQTY1RTlDNTNGQzUzOTIyNDc5RjlBMjQxMzdEREE3RBoFc3RhcmtSgARCOTlFNEU3QTk2RjhENzk2NTg0MkJGMDdCNkFENUJBODI2MTg0MzE5N0MzMzE4RkI1RDhENDc0OTlFNEE4MjQ1QkYxN0RGQTc5QkJBMDgwMjI1RkVDQUIxRDNDQkJFMjE5REQyNzZCQUM3QzFGMDc4QTMxOEVFQ0VBQkJBMDY5RDJCM0ZFRENEMjVCMzYyRjAyQ0IxOEQzNDIwOEYwQUMwMzIyMzJGQjcxRUNEMjg4QUMyMzczN0Y1MDZFRjI2NUQwOTI3NjY0MjkyMzBBOTk3NTE5MDEyREVCRkVFQTc4RjE2MEZCOTUxNDBBQjk1QTZERTc5QzdFRTc1NjE2RDU2RENCRjAxOTdCNUJCNzIzRjYyNUFGNzcxNDRGMjczMjA2NTUwRjU5NkUwNzYxRjQ0RDhDOTJENDVFREFFRTE2NDEzRkM5ODNBRDdGMDJDRkQ5NTAxRjRGMzc3M0UwREI5QUVFRUY4QTlEMjZCNUNENTRGMjhGNzI3OERDMDEyRTgyRTU3M0EwNzQ3ODc2OTM4MTc4QjE1NjhBOEFCQjIzNTEzNjQ0MzQyRTM4N0RBOTEwNzFGMEUzRkVDMkYyNTIwQkFDRDdGMTI0MUNCNjIwNkUwMjVDOEVBOUNCRTA2NjBEMkUwMTM2OUE5MjhEMzFBOEYzQTg2OUIwRkM3NUU0MVqABDlEQkRDNDlBQTIxOTc5Qzg4NzM0MzFCNUMzNUIwREI1QTdGMTRFRjkyMkIzQzg1ODFDRTRBM0Y4RDQ5MDZENEQ5M0NGNUMxNEREM0FCMTNGMkVFM0NEQUVBMDlCNjMzQjEzRThERUFEOUZGOTI4QTNFMjU1NjJGQTRFQUIwMTdBMjBCRkJBRjg5QjE5RDUyNDlCOTA1NjZDREQzOThGODA1OUJEMjI3RUVGRTgxNjA5NURGMjQyODhDQTE2MURGODQyMkMyMTZDN0VDODdCMDc1N0Q0QjFGQTY3RjgxRjUwQzNFNTcxRkIyQTA1NTY1M0QxMjkzMERERTU2MDJBODlDMUEzQ0FENEU1N0VDQjI0QjIyRjdGM0UyMEMyRjdBMDZEQzY3M0Q2REU3QkNCRkM0NzQ1RjNBMENCMEMzODEwNUJEODY1QzU3QTNFQTkxMDREMzZFNkQyN0M5RjkxOUUxMjI5MDNFNERFQUM5NjVDNEJCOURGMDEwQkQ2NEVBMzVERUFGQjlFMkNFODgyQkNDQjA0NDcwMEVCQ0RDNUQyOEVDNEVGMDYyOUZCRTQxODJBNUY5MzhDOTZBMUE3Q0U2NDFBRkNGN0UzOTZERkYxMkVBM0M2REMxOTVFRDM1NkNCQzdENkNCM0QwRkJEQjU3NEFDQUM1Rjk1NTIxM0JEYoAENDYwRDA0NzJGOTBCNzAyQUJGQUI0NkRFMDQ0Njc2NUU3NjFBNUYzODYwRUYzQjQyMDJCMTg4N0JEOUQwMzhGMkI0NEJDNDhCODc3RjU1OEIyOTRFRTNBMjY3NTFEQjQ1Rjc0NzlCNEI1RkU0MTE4MDExNTA0REE3QUY2MTAyREZEQkIyNEZGODZGRTE1MUJGNTJENjIxOTlENTQyNUVBQUI4OTA2OTU2OUE3OTFEOEQ3RUE5OUM2NUMyNDU3QjYwRDgwMzBENzJGN0I2MjA4NDZFNkEyMDEzQjExQzA5NUYxMkVDMjI1MzE5NDQ1MTlBQUEwNDlFREI3QkM2Q0Y2RjM0MkM0NUM5RDlGMkVGNkJGNjFGRjUzQzJFMzJFMEI2OENGQjRFNzc5RkM1OEM2MEQ0NjdFRjA5ODhCRTE2OEEyQUFGQzZGMjNFODdDMzI0NDQ5OUU3QzY5MjA5Q0Y5NjQwMDA5NDhENjFGMzFFMTAwMkFERDAxODAxOEZDNTU2RUNBOUY4MENBNjJEQzdBRjhDQzhBRjM3QzdERkQ1MTRFMjQ0RDY4NERENzkyNUEzQ0MzRUZDQzAzODQ0ODNFOTcyMDdEQ0NFQTk1OTRFMDQ3Q0E4Q0QwOUY0RjcwNTJEQjI5QTk0QkU0MEE4QUU2OTI5MTlDRTVDQzgwNTA1NUEyiQEKQDAyQzRDMDMwRjBFNTQ5Q0FENzU5MTVDOUNBODBBNTNFQTc1OTk5RjZGMjgyNTdBMDk0NzcyQUQ2RThENEVDMUYSPjE2NDRDRTNEMTREMkU5RjU2MDc1Nzg2OEVDMDY3MTQyMUI2NUQ5NTMyRkM4NzYwMjhDM0MwMDczNEY5Q0ZBGgVzdGFyaw..";
sign_key_base64_arr[2] = "EAIYAyL7EgoKY29fc2lnbmVyMxICMDMaQDAxREVCMUU3QTgyQUFBMTFCQkNGMUYwN0MxNTIwMkRFNTY3NzFEMDY4QTFGQTczRjI2QzEwODdCOTQ2MjdDOUIiiwEKQDAyMTI1MERCQzYzMzdFQjcxRjA3RkIyRjhDOTg1MzE3QTk4OEZDMjRDNzlCODNEQ0NFQUQ5Q0QyRUZBQjExMkESQDAyODI3QTIyNzA1MzMyOTg0RTQ3QzIxQkM4Mjg1MTA1NDgxQTExN0NFM0Y3NzNDRDZCQTdCOTMxQkJBREMyQTMaBXN0YXJrKokBCj41RjM5NjhCNTJEM0QzMDU2RTZDNEE5MTdFRTAwMEVEMkIzQ0VFOUY1Mjk4RTFDQ0NCQjEyRTkwQUZFRjkyNRJAMDJCMzc1RjE0ODI0NTU0NEIxNTNCNDlEMzc0QTU3NzYxQTY1RTlDNTNGQzUzOTIyNDc5RjlBMjQxMzdEREE3RBoFc3RhcmtSgARCOTlFNEU3QTk2RjhENzk2NTg0MkJGMDdCNkFENUJBODI2MTg0MzE5N0MzMzE4RkI1RDhENDc0OTlFNEE4MjQ1QkYxN0RGQTc5QkJBMDgwMjI1RkVDQUIxRDNDQkJFMjE5REQyNzZCQUM3QzFGMDc4QTMxOEVFQ0VBQkJBMDY5RDJCM0ZFRENEMjVCMzYyRjAyQ0IxOEQzNDIwOEYwQUMwMzIyMzJGQjcxRUNEMjg4QUMyMzczN0Y1MDZFRjI2NUQwOTI3NjY0MjkyMzBBOTk3NTE5MDEyREVCRkVFQTc4RjE2MEZCOTUxNDBBQjk1QTZERTc5QzdFRTc1NjE2RDU2RENCRjAxOTdCNUJCNzIzRjYyNUFGNzcxNDRGMjczMjA2NTUwRjU5NkUwNzYxRjQ0RDhDOTJENDVFREFFRTE2NDEzRkM5ODNBRDdGMDJDRkQ5NTAxRjRGMzc3M0UwREI5QUVFRUY4QTlEMjZCNUNENTRGMjhGNzI3OERDMDEyRTgyRTU3M0EwNzQ3ODc2OTM4MTc4QjE1NjhBOEFCQjIzNTEzNjQ0MzQyRTM4N0RBOTEwNzFGMEUzRkVDMkYyNTIwQkFDRDdGMTI0MUNCNjIwNkUwMjVDOEVBOUNCRTA2NjBEMkUwMTM2OUE5MjhEMzFBOEYzQTg2OUIwRkM3NUU0MVqABDlEQkRDNDlBQTIxOTc5Qzg4NzM0MzFCNUMzNUIwREI1QTdGMTRFRjkyMkIzQzg1ODFDRTRBM0Y4RDQ5MDZENEQ5M0NGNUMxNEREM0FCMTNGMkVFM0NEQUVBMDlCNjMzQjEzRThERUFEOUZGOTI4QTNFMjU1NjJGQTRFQUIwMTdBMjBCRkJBRjg5QjE5RDUyNDlCOTA1NjZDREQzOThGODA1OUJEMjI3RUVGRTgxNjA5NURGMjQyODhDQTE2MURGODQyMkMyMTZDN0VDODdCMDc1N0Q0QjFGQTY3RjgxRjUwQzNFNTcxRkIyQTA1NTY1M0QxMjkzMERERTU2MDJBODlDMUEzQ0FENEU1N0VDQjI0QjIyRjdGM0UyMEMyRjdBMDZEQzY3M0Q2REU3QkNCRkM0NzQ1RjNBMENCMEMzODEwNUJEODY1QzU3QTNFQTkxMDREMzZFNkQyN0M5RjkxOUUxMjI5MDNFNERFQUM5NjVDNEJCOURGMDEwQkQ2NEVBMzVERUFGQjlFMkNFODgyQkNDQjA0NDcwMEVCQ0RDNUQyOEVDNEVGMDYyOUZCRTQxODJBNUY5MzhDOTZBMUE3Q0U2NDFBRkNGN0UzOTZERkYxMkVBM0M2REMxOTVFRDM1NkNCQzdENkNCM0QwRkJEQjU3NEFDQUM1Rjk1NTIxM0JEYoAENDYwRDA0NzJGOTBCNzAyQUJGQUI0NkRFMDQ0Njc2NUU3NjFBNUYzODYwRUYzQjQyMDJCMTg4N0JEOUQwMzhGMkI0NEJDNDhCODc3RjU1OEIyOTRFRTNBMjY3NTFEQjQ1Rjc0NzlCNEI1RkU0MTE4MDExNTA0REE3QUY2MTAyREZEQkIyNEZGODZGRTE1MUJGNTJENjIxOTlENTQyNUVBQUI4OTA2OTU2OUE3OTFEOEQ3RUE5OUM2NUMyNDU3QjYwRDgwMzBENzJGN0I2MjA4NDZFNkEyMDEzQjExQzA5NUYxMkVDMjI1MzE5NDQ1MTlBQUEwNDlFREI3QkM2Q0Y2RjM0MkM0NUM5RDlGMkVGNkJGNjFGRjUzQzJFMzJFMEI2OENGQjRFNzc5RkM1OEM2MEQ0NjdFRjA5ODhCRTE2OEEyQUFGQzZGMjNFODdDMzI0NDQ5OUU3QzY5MjA5Q0Y5NjQwMDA5NDhENjFGMzFFMTAwMkFERDAxODAxOEZDNTU2RUNBOUY4MENBNjJEQzdBRjhDQzhBRjM3QzdERkQ1MTRFMjQ0RDY4NERENzkyNUEzQ0MzRUZDQzAzODQ0ODNFOTcyMDdEQ0NFQTk1OTRFMDQ3Q0E4Q0QwOUY0RjcwNTJEQjI5QTk0QkU0MEE4QUU2OTI5MTlDRTVDQzgwNTA1NUFqgAJFMjExMzk5NTIyN0NCODM3NjIxREI4RTRDMEQzOURGRDQ2NTJDOEU4MDlGN0ZERUNEMTAwN0RCMEU5RTc1MUFEMzkyOTg5NzdDRDEwNTgyMDVEMTA1MTExNzQzNkQ3MDE0RkVBRDMyQzMxOTRCMzY4RjhGRDk2QjRCQzYwRjRDQUU1QzAyNzUzNDFEODc0OTJGODFEMEY2RUJENEQwNjc3RkMwMDdBODkwNkJDOTIxMkM3QzQwODY3M0FBMzJERUI5Q0YwRjZCQzREMDg0OTUzQzMzMkFCOTA2NjNBOEFENDhBNDMxOUExNzNGN0E3MUNFNjdBRTRFOTdBNTRDNzRGcoACRDIzMjA2QTg0NzNBOTYxRDREREEwMkNDQjE1ODExRjI3OUU0MDQzNEU3RTRBQkI4NTNDQjBFRjQxMDRBMjFBRDc4RTE4QjZGNzc1QjU3MkZFNjI1ODgyMjg5M0YwMjc2RjQwQTU0N0IwREFCMEVBRkMwNEIyMTU2RURDOEM3OTYzNkNBQjU5QkIzRjE1ODI5NDJENDI0OTJGODU2RUE5RjM3RDFFMTFDNzdBNkM4Mjg1NzVENkMwRDg0QUU0M0I2NEY0M0NCRkRGNzFFQ0VDMzUxRTRBNzNFQTk1MjRFQUIwNkIzMkE3NDFBQTgyMjA0MTJFMzBFN0M0MjNGMUQ2Riq1DgoKY29fc2lnbmVyMRICMDEiiwEKQDA3OUUyMkI1OTA5Q0YxREI5RkE2REExNDlCMThBMjFCMzhBQ0VBMTAzMTE3NTdFOUMxM0FCRDk5OTIzREVEMzcSQDA2NDk2QzYxMTEzMkM0Rjc4OThBQzY1NEEwMTdFOUNBMTNDRDVBRURDMzk1NkY1QURBNjYwMEI2ODM4NjFENDIaBXN0YXJrKosBCkAwNEY2MEY5OEExMUE1Qjk5NDUwRkU2QkJGOEY0RDU4REEzNUYxRDE3QUU0MzBFRDZFNDhEMjlDQUI1OTk3MzM2EkAwNUNCMkU1NjZDMTYxMjk5NUVBNUFFQ0I1QTJCQ0UxMUJBREU2RDNBRTVDQjBFNjJBNDg3RkY2NUE3NEJDRUY2GgVzdGFya1KABEVCOUJDNjExMjI0MzNGRTZDMUY5RUZEQzE5RDM1OTlDNTBFNEI1QTczMkY0OURFQkRBRkYzMEY5NjYzMjlBOUYxNTNCNUNEODA1RjExMDdFNDlBMUE4NUY3RjBDNUVEMURCQjQ2QUNGMzdBQzNGMEVDN0ExNjA0QTgxMzZFMzgyREMwNDYxRjZBRjkxMTQ2NTFBMUU0OUUxMjBDQ0VBNkI1QjRDNjc3MDBBQzY0Qzc5ODNEMDhDN0QwNjBFRjYzREE5NDNDMzcxMTRERDRBRTRCMUJCN0EwMzBBMkVEQ0I3OTlEQUM4RDBCNUE3NDJBQUY5MzE5OTAzQ0U0RTdFODY3MjQ2MkVEMjVGOTJERjUyQzA1QjYzODZCREI5QzI1QkUyNjhFRDJCMkNBNkU2OUM1OThDQzdFMDhEQkQyMUY5QkUyQjVFMDY2NkM0QTMwREY1RUUzMzMyMTU4NTc1ODU3QkQ3Rjc0MjVDODMzRTU0MDY2MkQyMTY3QTVBN0Q0MTc0MTdDRjc1RkM3NzkzNzkzREY3RUVDOTZBMDA5NkIxREI2RjRFNDJEMkUxQjRFQTk4NTk2OERFQjU2RTc2NzQzQzkyMDEwQjY2QUYxRjREOTM0OUNBOTVFQUIxQTBGQ0ZGODIzOTVEQjU1QUUxQkI0RTYzRUM3RDJCMkM4MkNEWoAERDRBNjkzNDQxODFCNkE2MzA1MTkzMTY3NjkyRjQ4MzlGNTgxQTY1REQyNkI1M0Q1NzQ3MjgwQ0I3RjkzMkE4MTlBQzU1NTE4NTAwMkYwNTNGQ0Q4OUM4RUM0NzdDMDE3M0U1RUNDQjk0MTBBMDMwQzE1QUJDQ0RBNTlGMUFCNjU5OUI0RkVGRjhEQUIwNjkwMEE3OEE1MjUyOEZGQ0YwNDdEQjJCRTNCRDdEMzU4QTQyMjQ3N0RFN0RFMDNENjZBRTNGQ0U1OTcwQzY3ODVFMjU0MDJFNkM2Q0I1RDQwODlDRUI4REM3OEJCRDFEM0FEMzVBNkQwNERCMDBCRTA4QjEyRDQ5MzkxRTVBQkY0N0E1MzkxOUU1NTZCRjVFQTRBMzNDNDNFREMzREYzMzVDMEVBRDlBNDNGNkEzMjBCMDg2RDg4NzYzMjZDOTFDQkU2NTFDRDU0NUUwOEIyOUQ3N0FERkJBODMzOUI3QzNGMDczQ0RGRkRCQURCMzUxNjNBQ0RDNjk4NUY4RUE0NjQ5RkM1OTdGNTlGRkYzRUYzQkE4MTk4RUJBMzYyQkFFNDJGODkwMzQ1QTFCNkJCNTU5QUE3MkE0QTIzRjEwNTg2MEQ2OEQ0QzgzODcwRDJBREQxMTcyRDJEQTlCRjIzQzNGRjQ2MzlGNzE3Q0EyN0REMzhigAQ0NEMzNzkwQzQyN0JGRDEwMjdBMjY5MzA4MjYwRjY3REU5RTMxRkJDNEE0QUIwRTdFOUQ3NjgwMUM4RjUyNjM2QUYzMzU0QkE1MzU4QkZBMDREQjhFREZENTMxNTUyNzM1MzNFNzIzNEJFNEI0RTU4MUJFMkY0MDYzNDg3MzMwQzJDRDkyRkU3QkE4RTFCODEwMTQ5QUQ0MTAwRDVEN0EzQTAyRjM2MTRBMzk4MjdBOUMxNEQ5MzBFRkE2QUY0NTVCNjYxMjc4MTQ3M0JDOEE5Q0MzODlEQ0EyMjQxODcwMURBRUJCODc2QTNCMjRBNEM4MjYyMEE5NkEzM0M3RTdCMDZGMDJFRTdCODYyNEM1M0QyNzBDNDM2NDk2RTY5NUZBMTRDMDg1RjcyMTlEQzM5QjQzMENBNDdGRTM2QkFBNkIyNUIzOTFDQzIxMDlEMDdFRDkzOEEzRUU1OUIyNzFCMDI2NjEzRjE3RDY1MkYxRUIxNDNDMkIxMkU0QkM3N0IzNDVBQ0YyNEI5Njg5MjM0MUI2NkFBQzMyMzFFRTlDQjE5RDAxQjhDMEZBREJBOTUzMThFNjgzNDcwNUY4NzVCMjY3Q0I2ODRGRUM2OTAyREM5REZCQjM3REJFNjRBNTM4OTU0NDA0MTQ3RTQ0QjhDRDYyNjgzRjgxQzg2MTJEMSqzDgoKY29fc2lnbmVyMhICMDIiiwEKQDAzNkQ2QjBBQzk1QTY3MUI0Qzk5QUExNjc2NjYyQTJGMENGQTc3NDk1MTEzNjg1NjQ4ODY5MzQ0QjY4MDMzNzQSQDA2MkU1RDNCOTBDQTBCOTBEQzk2NzE2QjlFRkRFQjBGQjVDRjU1N0M4QjAyRjc3QkFGQTUyNTdEQTZDMjQyQjEaBXN0YXJrKokBCkAwMTREMzlDMEEzNDIwMUIwQUEyMzMzNDdDRTgzN0IyRTdFODA4QjQwMkI1RUE4QzI0MjlGNEE0QkI3QkI4QkI5Ej45MzQ2RThGOTNCRTFDNUNCQ0FBNEYyNEIyQzg0MzU3MjYyNUFGRjU4RUE2QUE1NEY0MDk3RDQ5RkREOUQ3NRoFc3RhcmtSgARGNjJEMDNENENFNDY2NkU1NzZFRjlBNjA1NjY5NDgwNzc1MkI4NDU1QTU5RUM0Qjc2REY1NDE2RUQ2Q0M3QjgyOUU5OUM3QTZGQ0UxMkYyRUVDRjI2MzQ0MDQ2OUMzQjdBN0Q0M0U4ODc3MURDQTc3NTFDOUMxREJGNjY4OUQ0OEQ5QTNBNDZEREYyNkNEQ0JEN0UzQzVGRDJEQTAwM0NFODhFMTFGNjg3QzZCNDBEODJFQjgzREUxMjFCN0EyOTQwMTg3MjE1NDM0RDU0NDI1QTVDN0ZCRTM5MTU4MDE2Rjg3M0RFRTkzM0U1MzE4OUQwNjJCODZDQ0NDNjU2NzVBOUUxRDBERTJFQkRFNDBFRjQzOTY0ODNGRDgwMkE0NDI2NjgxQTY2ODJCRUEwQjVCQjQ4Qjg3NDJGREI0RDNERkE0NUVCRTFEM0QwQUE3MTYyNkU4OEIwMDYwRUIzOUIyQjEwQTdBM0U0N0JGQUJBNjI3MTFGRjdBQUIyNzJDRjE2QkM2MDQzNTU0MkZFNTNDQ0VEODU5MEM3MUJDRDBEMzIxNzgxNzZFNENCNUI0NzJEMjU2QzAwOEYzQkM1MkMyRjU4MDJEREJFNTIwMkFDNEUzOTA4QTdGODdGNzQ2QkNFMEI2RUYyRDQyMTdBMkUwNjkwMURDQTEyODIxMjQyRFqABDg4OERFNTM2QjExNzM3QjIwNDY5NTkxMzJFQkU3NEEyRTU4MzJBNjJBQUIzREYzMTdGQTgyRjEyOEJGMDIxMkVBRTk4MjUzOTNGQ0ZGREFCNDIxQzU0NDVENjBFNEFEQ0M1QTdEQ0Q0OEJDRUM1MzU0M0Q3RjhBQjU0MENFNDBGQ0EyMEI2RTlCQkYzMTJDMkRBNTYyM0M4Nzk2RTU2QjM1M0VENzIyODQ5RjgzNTU3MDRFMThDQjQzRkE1OUI3Mjk2MTE5NjczNTVBRUFEMTg3Q0I5Mzg5QjYyRTNFRkNGMzk0RDE4QkJGMEYwMDFBNzE5RkIyREIyRDNEMTlGNkVGOEFGQUI1QzJDQjVGMjlBRjY4MzBDMUY3NTNCRjI4RUFEMzYxQjgxMzY5MEI2MDVDQUQwQTQyMEE3NDExMUFFNDEyOUJCNjU0NDcyNkU1MjM4Q0MyRkNCRUQxREFEOTkwMjNCQ0JDQzlGNDg4MUU0MDI2MUJEMTgyQUU0NzNCODYwQUU2RjYyNDEyODNBMUEzMUExQzEzNDVCMTI2QUMxODNFRTM4QTYyODQ1RjU3MDQ1MURENTdENzBEMkY0RDcxMDc1MTc1Q0Q2RjgxQzQwMDlCNDMyQkMxMTk2NzMxMTZDN0VDOENERUY3QjNEQUUyODA4RkU0RUZGM0Q0QkM5YoAEREU1QjkwRjc0NTNEQUVBNEFFQUU1MkRCMzM3RDlFNkE1OTkwMEI3ODQ5MkY1MkEyOUQ5MTkzRjNFMkQ0RjlERDk1MkRGNjEwNzU3Q0MwMjVGODFGMDNCNkMwNTA2OUI3RDM2NDMxRjkwMDU4RTc5NjQzOEUyREJFQzkzNDlDRTU3M0ZBQUNDQkE2RDJDRkYzRjQ1OTEwM0E2NkU3NEM1RDI4OTY0QjNCREVCOURBMkRFRTY5MTBDNzk3NkI5ODQwQzE5MTAzNDUyRjQ3ODJEMjc0MzE0NEQ0OTBENjJFM0E1MTVDNTQ1RkI2OUI5ODM4RkMxQURGQzQyMjNDQUZGMTAwN0JFRjAwQUExMEMxNTZGMUI5QjNFMEZFNUI3NDg5ODA0QUEyNDc0OTQ2RjFBRjlEODhBMDY5RTFGMkQ2ODZFREM1QkJFODQ4Mjc4QzBEMEVGRERBRDU0RTE2NUU1NzJCNEVBODJGRDk2NTc2RDk5M0E0NkFCMDQwQzdGRThGNjg4MUJFOTE3N0UyRjg0OEVDODc5OTMyNzFFREIyOTQ4NDc1RUY4Q0FCRUIyQzI2RUZBMzIwREZGRDUxMzY3RDBBRkFDODE1ODAwNjAwQTdGMjRCQjc2NjVEQkFCN0MyNDFFOURCRTIwOTQyMUE5OEY2REVGRjQ2OUVEMTQ4OTQyiQEKQDAyQzRDMDMwRjBFNTQ5Q0FENzU5MTVDOUNBODBBNTNFQTc1OTk5RjZGMjgyNTdBMDk0NzcyQUQ2RThENEVDMUYSPjE2NDRDRTNEMTREMkU5RjU2MDc1Nzg2OEVDMDY3MTQyMUI2NUQ5NTMyRkM4NzYwMjhDM0MwMDczNEY5Q0ZBGgVzdGFyaw..";
//Initialize the message queue
for (int i = 0; i < N_PARTIES; ++i) {
map_id_message_queue[party_ids[i]] = PartyMessageQue<Msg>(ROUNDS);
}
for (size_t i = 0; i < participants.size(); ++i) {
res[i] = std::async(std::launch::async, sign, sign_key_base64_arr[i], participants, m, ssid);
}
for (size_t i = 0; i < participants.size(); ++i) {
EXPECT_TRUE(res[i].get());
}
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
int ret = RUN_ALL_TESTS();
google::protobuf::ShutdownProtobufLibrary();
return ret;
}