mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-26 08:57:26 +02:00
One more tweak to new identity format to rationalize it some more.
This commit is contained in:
parent
0aecf8ee22
commit
7c4ad3ecbc
1 changed files with 30 additions and 27 deletions
|
@ -34,12 +34,7 @@ use crate::vl1::Address;
|
|||
use crate::vl1::protocol::{ADDRESS_SIZE, ADDRESS_SIZE_STRING, IDENTITY_V0_POW_THRESHOLD, IDENTITY_V1_POW_THRESHOLD};
|
||||
|
||||
/// Curve25519 and Ed25519
|
||||
///
|
||||
/// This "flag" is zero for backward compatibility with old identity formats that expect
|
||||
/// a type byte of zero. It's always included anyway even if it is not used since it's
|
||||
/// the feedstock from which the address is computed. Even if we fully deprecate this
|
||||
/// scheme we would have to include it if we wanted address backward compatibility.
|
||||
pub const IDENTITY_ALGORITHM_X25519: u8 = 0x00;
|
||||
pub const IDENTITY_ALGORITHM_X25519: u8 = 0x01;
|
||||
|
||||
/// NIST P-521 ECDH and ECDSA
|
||||
pub const IDENTITY_ALGORITHM_EC_NIST_P521: u8 = 0x02;
|
||||
|
@ -139,10 +134,8 @@ impl Identity {
|
|||
|
||||
let mut self_sign_buf: Vec<u8> = Vec::with_capacity(ADDRESS_SIZE + 4 + C25519_PUBLIC_KEY_SIZE + ED25519_PUBLIC_KEY_SIZE + P521_PUBLIC_KEY_SIZE + P521_PUBLIC_KEY_SIZE);
|
||||
let _ = self_sign_buf.write_all(&address.to_bytes());
|
||||
self_sign_buf.push(IDENTITY_ALGORITHM_X25519);
|
||||
let _ = self_sign_buf.write_all(&c25519_pub);
|
||||
let _ = self_sign_buf.write_all(&ed25519_pub);
|
||||
self_sign_buf.push(IDENTITY_ALGORITHM_X25519);
|
||||
self_sign_buf.push(IDENTITY_ALGORITHM_EC_NIST_P521);
|
||||
let _ = self_sign_buf.write_all(&p521_ecdh_pub);
|
||||
let _ = self_sign_buf.write_all(&p521_ecdsa_pub);
|
||||
|
@ -191,7 +184,6 @@ impl Identity {
|
|||
pub fn hash(&self) -> [u8; SHA384_HASH_SIZE] {
|
||||
let mut sha = SHA384::new();
|
||||
sha.update(&self.address.to_bytes());
|
||||
// don't prefix x25519 with cipher suite for backward compatibility
|
||||
sha.update(&self.c25519);
|
||||
sha.update(&self.ed25519);
|
||||
let _ = self.p521.as_ref().map(|p521| {
|
||||
|
@ -199,6 +191,7 @@ impl Identity {
|
|||
sha.update(&p521.ecdh);
|
||||
sha.update(&p521.ecdsa);
|
||||
sha.update(&p521.ecdsa_self_signature);
|
||||
sha.update(&p521.ed25519_self_signature);
|
||||
sha.update(&[IDENTITY_ALGORITHM_EC_NIST_P521]);
|
||||
});
|
||||
sha.finish()
|
||||
|
@ -210,12 +203,11 @@ impl Identity {
|
|||
pub fn validate_identity(&self) -> bool {
|
||||
let pow_threshold = if self.p521.is_some() {
|
||||
let p521 = self.p521.as_ref().unwrap();
|
||||
|
||||
let mut self_sign_buf: Vec<u8> = Vec::with_capacity(ADDRESS_SIZE + 4 + C25519_PUBLIC_KEY_SIZE + ED25519_PUBLIC_KEY_SIZE + P521_PUBLIC_KEY_SIZE + P521_PUBLIC_KEY_SIZE);
|
||||
let _ = self_sign_buf.write_all(&self.address.to_bytes());
|
||||
self_sign_buf.push(IDENTITY_ALGORITHM_X25519);
|
||||
let _ = self_sign_buf.write_all(&self.c25519);
|
||||
let _ = self_sign_buf.write_all(&self.ed25519);
|
||||
self_sign_buf.push(IDENTITY_ALGORITHM_X25519);
|
||||
self_sign_buf.push(IDENTITY_ALGORITHM_EC_NIST_P521);
|
||||
let _ = self_sign_buf.write_all(&p521.ecdh);
|
||||
let _ = self_sign_buf.write_all(&p521.ecdsa);
|
||||
|
@ -308,7 +300,7 @@ impl Identity {
|
|||
let secret = self.secret.as_ref();
|
||||
|
||||
buf.append_bytes_fixed(&self.address.to_bytes())?;
|
||||
buf.append_u8(IDENTITY_ALGORITHM_X25519)?;
|
||||
buf.append_u8(0x00)?; // use 0x00 here for backward compatibility
|
||||
buf.append_bytes_fixed(&self.c25519)?;
|
||||
buf.append_bytes_fixed(&self.ed25519)?;
|
||||
if include_private && secret.is_some() {
|
||||
|
@ -385,7 +377,7 @@ impl Identity {
|
|||
break;
|
||||
}
|
||||
match algorithm.unwrap() {
|
||||
IDENTITY_ALGORITHM_X25519 => {
|
||||
0x00 | IDENTITY_ALGORITHM_X25519 => {
|
||||
let a = buf.read_bytes_fixed::<C25519_PUBLIC_KEY_SIZE>(cursor)?;
|
||||
let b = buf.read_bytes_fixed::<ED25519_PUBLIC_KEY_SIZE>(cursor)?;
|
||||
x25519_public = Some((a.clone(), b.clone()));
|
||||
|
@ -504,7 +496,14 @@ impl Identity {
|
|||
let p521 = self.p521.as_ref().unwrap();
|
||||
let p521_secret_joined: [u8; P521_SECRET_KEY_SIZE + P521_SECRET_KEY_SIZE] = concat_arrays_2(p521_secret.ecdh.secret_key_bytes().as_bytes(), p521_secret.ecdsa.secret_key_bytes().as_bytes());
|
||||
let p521_joined: [u8; P521_PUBLIC_KEY_SIZE + P521_PUBLIC_KEY_SIZE + P521_ECDSA_SIGNATURE_SIZE + ED25519_SIGNATURE_SIZE] = concat_arrays_4(&p521.ecdh, &p521.ecdsa, &p521.ecdsa_self_signature, &p521.ed25519_self_signature);
|
||||
format!("{}:0:{}{}:{}{}:1:{}:{}", self.address.to_string(), hex::to_string(&self.c25519), hex::to_string(&self.ed25519), hex::to_string(&secret.c25519.secret_bytes().0), hex::to_string(&secret.ed25519.secret_bytes().0), base64::encode_config(p521_joined, base64::URL_SAFE_NO_PAD), base64::encode_config(p521_secret_joined, base64::URL_SAFE_NO_PAD))
|
||||
format!("{}:0:{}{}:{}{}:2:{}:{}",
|
||||
self.address.to_string(),
|
||||
hex::to_string(&self.c25519),
|
||||
hex::to_string(&self.ed25519),
|
||||
hex::to_string(&secret.c25519.secret_bytes().0),
|
||||
hex::to_string(&secret.ed25519.secret_bytes().0),
|
||||
base64::encode_config(p521_joined, base64::URL_SAFE_NO_PAD),
|
||||
base64::encode_config(p521_secret_joined, base64::URL_SAFE_NO_PAD))
|
||||
} else {
|
||||
format!("{}:0:{}{}:{}{}", self.address.to_string(), hex::to_string(&self.c25519), hex::to_string(&self.ed25519), hex::to_string(&secret.c25519.secret_bytes().0), hex::to_string(&secret.ed25519.secret_bytes().0))
|
||||
}
|
||||
|
@ -513,7 +512,11 @@ impl Identity {
|
|||
format!("{}:0:{}{}", self.address.to_string(), hex::to_string(&self.c25519), hex::to_string(&self.ed25519))
|
||||
}, |p521| {
|
||||
let p521_joined: [u8; P521_PUBLIC_KEY_SIZE + P521_PUBLIC_KEY_SIZE + P521_ECDSA_SIGNATURE_SIZE + ED25519_SIGNATURE_SIZE] = concat_arrays_4(&p521.ecdh, &p521.ecdsa, &p521.ecdsa_self_signature, &p521.ed25519_self_signature);
|
||||
format!("{}:0:{}{}::1:{}", self.address.to_string(), hex::to_string(&self.c25519), hex::to_string(&self.ed25519), base64::encode_config(p521_joined, base64::URL_SAFE_NO_PAD))
|
||||
format!("{}:0:{}{}::2:{}",
|
||||
self.address.to_string(),
|
||||
hex::to_string(&self.c25519),
|
||||
hex::to_string(&self.ed25519),
|
||||
base64::encode_config(p521_joined, base64::URL_SAFE_NO_PAD))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -549,9 +552,9 @@ impl FromStr for Identity {
|
|||
while ptr < fields.len() {
|
||||
match state {
|
||||
0 => {
|
||||
if fields[ptr] == "0" {
|
||||
if fields[ptr] == "0" || fields[ptr] == "1" {
|
||||
key_ptr = 0;
|
||||
} else if fields[ptr] == "1" {
|
||||
} else if fields[ptr] == "2" {
|
||||
key_ptr = 2;
|
||||
} else {
|
||||
return Err(InvalidFormatError);
|
||||
|
@ -785,16 +788,16 @@ mod tests {
|
|||
"aec623e59d:0:d7b1a715d95490611b8d467bbee442e3c88949f677371d3692da92f5b23d9e01bb916596cc1ddd2d5e0e5ecd6c750bb71ad2ba594b614b771c6f07b39dbe4126:ae4e4759d67158dcc54ede8c8ddb08acac49baf8b816883fc0ac5b6e328d17ced5f05ee0b4cd20b03bc5005471795c29206b835081b873fef26d3941416bd626%"
|
||||
];
|
||||
const GOOD_V1_IDENTITIES: [&'static str; 10] = [
|
||||
"36a25ffc6f:0:60f00f28aab589a669be31fd5648c9202363eff2e5e631f48e4c00b8161a03284e7716d297d9a3dfcbe215b63335684ab23b4104aa6b4bc2dc6e9af6e680187c:086f386a41ba42b3216bd3d4faf9623c566bf30956bc2886630d424f909a067843f19b390bce158f8d428eba9d48ec1cb78e63ec0ba126e3709828d16dc3632b:1:ABf6opWWSc5l2ZaY7eiGWpfnHnZnp2pneZtA0LRTIfDbdmygI3kYpzoA_crqX-_8eoyjqAF00XokDcUTiH_rLoa5AL6wardGqRL-3HQNR8683-EslKLD5OvyRJpmyhkFkOQ53MSwyy55aSwGt66drbsfwaa65u2p-UZ4R3KB1Z547yQbAdMbSb5J0Igys6bg2IaR19Kg3ZUthiL0WQLgEPHfEkDMwANel8yqkmjN7ozPYBvSTSjNtMuJMgzLwLpY7ScZpLK6AGOt73CtwAHK5-AUFyS87JF_i8athmRGRryGnzg4mtescD_tkyV-Z75agwtjKiuyJtaoIpkoAE79w8tjmBx81qbbAN4Qdz6mXrKSpl7wblM4yLB-wjWMkr2LFraAIVH7iW52WyPWO2113Kzzko8-B2nXn-pOb_bQ8lxmhH36924Uk2cHAUzPis0M0Tz9imWmEm35zP7_pnQL7WaxzUe9qQ8EQkPsw-SixX1fNqoBuDXrMkHTXKuNXpqhDtkYoHFPuD8ohWKaan8gzcAldlEeJOQrnSPmJ94u6uKDty5rfDpfmMKCg2uht_wjpePdYhRpO_qtxIkTYMrSfGPSFpWUPpHJzCzeDg:AMrd6JuMSabnyOTF6poYgU6onv7i3pJm9Jr75dbt0TnMFryJPKYtwIZSLz4Luw37-Hb9Sq8GiikspNXCqKmwei25AakHubBpLg1UCrqmhZ_ssNArudqht5VqGXazkNPg336Gu6pu6vPD9m9JDWYUTUtfCdlYDw3n-NApnKktcwNM0J4n",
|
||||
"ca1142b59c:0:55340d183ec6bcad9d3d7d2ca602a1351ca1726cb02cc33b68308de801714d4d9227b705d22ed1c782bb788767b416dee98f60b48ef85ab7d6ef4c108863c98e:b05c5affee80dfd9828e3cada2be1406b0921cfe0f94a127ec47738fa7bc3d4ea918a1cc8de196ca0bd111b0ff150e2e53b68e08dc5e4a3dd0e1d7ea405c1c69:1:AF1rbcAdlfEGk_Cp30uHic9jdI6P6hc90jk_lyaMVK_tbqwyay3kq5NmLkIClSg8n0lgG6yg3bn7Z_H3YO2DvCAHAO3xmsqjGtRitrnzUYVBD7xE82196UHpp0UdS201aZItIUrIwRVtlO2bWvlPMuZvWfy6UNdQLnDbJsDc4p-_dP0AADvcwkeHGHwaHxHdTKY2VNVzwpLGHC9hf1EAhpR_otNMpz9Kv-czpqrokD0RPx0WhoW9-RMlT51hlJo9UiCIYLBmAHsmiInhF04Fb2gMmEoA92_0PzLfgXxgMCYoWMpEm4BvK_InUfyHM8V4rR3W8z8F73TY-jDxjI_AkNeo4d0UCnKEAUcLbukR_DvFLjGXSwnFLDGhUoYsroHB2AGmWh24wc8dwmIXBx8jTbSdzsW0sc55OBR1AT2KABfUGjfKAqjp29mOAVJjDgXYhXERvFTWMzemEUBRWZddK_kjVSBfLtlvZ3aybTmkoZ6-s-w3zc8G5tvC2DZjUhejRBeA6WNrT6oitN3g2OTBT_cB5-GwQO1yd781BrvhDX21wrkqz9VSY57quBSH9NGUTm1Zu99G-UQRDLY-R9iVCgGCwpQ7vqqIu8rqAg:AdMlVKSw3vRd63YcsdSzCTvmDCY_ltVgjrilHa0BinzzuaAHTqDORE8QzaykUwrxBnU9T8DftEO3cNd1X8mnHDI6AQvzNGR-0LcOHWLwUz8cswNM6unxDfrFNrtjcJToApZiCY_ghVtiC1Fun1Jv1crsJQEJ6enFgCz5snEab4b-jqo3",
|
||||
"c5c4eb1d61:0:0270c900ebc9049cccc408e5ffa7057141eba6b9a9bcccff90c662f6f3f76670c29f6a17a7f665406ab4e68d800cc9baba00e7f394ffb01580486202cc46264a:8097f8723d9584a7a35e24fb681ce27a9f2132c36b343a4eb4069f5292f72355a77702cd1e748a1d9085b414c43db3bb8655c64cf907a0e068224f2f58037598:1:AX1IluG8q4EMG2FKzOwJ7W0I-2H8gyUZR2qnO1PbxB6zM4T3Go2TN5h9xFZR3_ndoQUkVRKfPRjhCTz1L87Q9NjwAJwfTgvXcQLJlJy5I--_-E4OadVpCsZvIJlpe2oaWFVUoCr6tJ-se0sce6QIV8d1n8Zf7EAP3cf1MLlIjjTJwcG9ALEBcdR4OAR5HcBU4l0Z9HpyfL7Cs8IcvVia0RpM9JZ20zoEPxvr3RmwB3nN7IGaDFntOFSE1g2dTSb_k1Ix-6PDADC_R0prel6gHl6DaQvg5Gvj4QRF1Ts4gRRZMgZEKJXoXIpW9soY_Xxo6ZD0i82Rj0bfBvZ_-4fWW9BI_AGETlJ5AQZKz0rdu6tEk8Ag2RVhYmXJPv7ihK6il6nWoaTpvczSUKDRKUo69wMLL_IOe3LlkBy_uEfLBS2LoZFg7MO4EjPXAX54XoT2kOR5TRKB08MxlDrp6Q-kkCVwe91FgZ6GOgcHrJPQE89oUqJGkM70NibtuoLCPjod0tkH_IRCFiDfCX610_g3XEni4Q1JvyoHmwVqPhlmkzd3ZN6a6ixhHh9rE6krDyVVQfkfzwhaVZkbIkscb0IC_xbA38895WdTpu0TAw:AbufrsIlMmAs_GPBalRbDRgWwkXe3rWQrKlMKvGVGw7nNdrhzdZoiR_d9hWojRf3Fcwxm4DpMfQAgK78ML7Q1Sc6ACaFy3Qdpe_8Pm6HWQCyUw6XQdPwdOWa4YgH75ijd7d9hVYzZoBIMEE_MnEnQjFAlM_BkJFH400A0JKhoxYF_iQJ",
|
||||
"9527fead35:0:d97abd1ff324270bdfdbb54c1fe6f000a2291fa973d0de5dc49db6662a341d0536f9cf94706a7f93fc6302e0f127c688db5d9256e295ae4f6f470066187506cb:1876fdaca528ba1b8343358ff7b5adb85c00da8c9a9f3dda49d432c9edb38554f9120264cecd5c832ea734d3ad94e75b3c7ef1b0f3a0c1b85e3fedfb13101f4f:1:AaBhstq_p3F072IIEs5Ipq2-pykNM2RW3ptHR2F1DEPTsDEdyoNz-q5-y1XAT4PtS84d1eUn8eCC2VegNxFvqQTrAAO2N8Ql53IfWHYYrJttQHksXqynK_g6nKIemaN8D-yRiHJK7Z1Unejxrj0TvAkHkoDFzPP7ZxUEhFRdugQwn-zwAGraqP2tvm_y0lrBmP8SaHcAdrAF-ntyeazf_2InbvTTSVnKX3hub1RWqOyvfc5QtKiy-lL8AzCjAuwW-i1Me5nkAD7gDN9mY0W--1wRXJ8ohTy0g8-5eSMsjziFmVa0UyAfl4XPhGd3fHMlxvFK-4wsCSLylmyLY7gw2AGi7pALTKsgAVLImpDXwFYpUC6Xt5EHZQ0nTlfazPRckDvN1ffV0Ss6I4n-bcC_RpqPTXrogZOkRnsLRdH_WsLyBlXWhqtH7q7TAejLt4ODR4HU82arOPi61w6LQSMejOgHoqBuouGe3rnfceR7HSiRSRG3gJpmC_aYKmu3-bWD4QFynZEb7qWNo2lzqjt9-RPcpSmws82m1maD7V9vji0zAEL8nWPku8wCke8dvP3iacHc7BYE98aqAKvvbXzaXMpVVLpMSO5ybHTEBQ:AKwLNN0VOYQcF6YnSMzLQKEn5tFZbu7Kd2AzfPRhUe0OQK0OMFB_RHeHeQHy94oX5_n9tA_mhPlmouAPoLqK8RaSAAmEc79yM13NnlGthTdqDoAXHAeGq8Yv49q4514wf6vSJol0lBoPi6SKWqt2Vv4oyQU-k3eJcpglK2yZXzip6UWZ",
|
||||
"33ad7165da:0:b2f992c9580c2dc90eb1edd5a42fdf4ee3fa561e5ce3f357f9375ef8210e7760e749551094e1916781f84fb2820f96bf055833f70897bc0af98ed50e5ae8c593:e895125598f26e511ea3b27d8e4b520f285167fa83acf5dd34ac63054ced2467a38bf218b4d0770c677e8f274dd9630bca4c31abad2a4d194b4ac032590efeb0:1:ABO2kwfuQPVeWcw5ZHuU4k3UqkSrYU4nuSIsn-dNyoIyzzsufLL-D05irQo1Y5PY9Qr25WtyeEJ5YMtW1LGnNUL-ADLpGPd5aVW5PxrE-CzOl15JxwSSplebgRJzYRyhfPlkm5quq1BOrZubrcfAdbx3cYHol1n9Gw4_rjEMizQaVs-RAUpWMf1KDEh0p-r6mg57RpwlTc1A1r-U49ML7wCfwFuPrqARXsthuXUSKBBgCVpCh9WoWFKkIVhvwkquRonqR87CAF-w219Qe_PKpQCA8yyP3yo7Cmwky57O833K6TfE6t_qw85C2t2sNKEybRfxT_w-PJvWOs9C6GQ0njGjyUIkrBlBAF_Y7-BCTehWlzg_6YCnMCCOskzUq9zDJGl11ohILVD1tlnm5PFO-mO4LoHHdMBmpWy5_9U19FAi5KQ9x4XnrK2oAN6g8cdQzQjjbU6XGfsp2oEoLyjc65t39zv8B1cvzQWZmxd_MUHFDddDDa0G620ZKArwb8jySeS-iViDnZPgVmaRJhAH8354fIOqIX6e-owtXzWG_8Vc96RaNe-CU0j-mC8kVAj2Dt7_7texUw8OOEBXiwq1NdlpY_1k52dYIBQABQ:AaFHCsaZNHDG-Eqd5eR-on7Fsn9KlQQLDDU5OeLrbaTYn5VtqEr0p_a-_5tO1ZeFDEjTi6tCwalx7ivHO-O8HEOZAJIzR_JB_lA8fVYy5FSVwrLeEz1RoNwTESYLjRw-xeTiDVFjbC55fqvFZGnQIFxrf4uNRrFGNxLIHVbrsVgRed-v",
|
||||
"f5dcd74071:0:306845d6f24862ec7955d33e9bad44c0c4fcf63c49dd0113ed3857c779ad6372dcedd5d8e0beb96ee9b04a25d41c7a314db97f2e6f5f5a33ed01ddb38841dcdc:783ec289c4419c4aed75712695c4fd29b534d724a8aa99292c4f88471cf66e6d52aa01dba977a308b5b70a2b81c596e443abf302b8957c4d18e88b77bfd57d40:1:ASqV-crRLKQ_c595CW6vcmxtvglrwW8_EcnwNinO73yFKyiVKeJKTJIf2eXRWT2U7U1P01cdPLAp-2lY2MC3sYy2AHz_yeV1DRFLUK7WEXmBiS8SkJeVZ__WMqp-V6h2NAY-XYWwGNxp2AULb1OExTC2xsURAURs-6ce8vmWZriDgF7bAZicebp5ietT3Q4bK9lnrcedOoS-xyfwlpecLtMpmCRwh3E-GPNoViIVJxxaxhf2PYQvUuv3KRZNLF2ksQXr4kIAAIQh6LkFlhZPuvSzvdKf_u6ZQn1p3ibspwY5NH9sfdjYnvRAuefPyzJJVcFyUUpn9zm5P9-ELHdFisBtbc69LMHOALa1lr-9pUW-eHcpdkQYhAyRn-XuYuJ4wpEzHCV643TSTe4ZWbaIUodtkCkwQbJcemuwaFaymImqNlBLVndjzZd2AJcl3rdEZ29zGgDV65VzwaExfUSGGDixId3D1jDyfC-FKIexy9stELiqZD84p0ctvyoyJ0KMgMDeSaPl7PtbeFHlPSH6IVOFzzlYgWXb4WXcBMMmRfGfCAhCSUzDgwbl5SAGZ_sv-8mFEIlvu7h6nUzDqBQSI3TWIg5VE2oa5Cy9AQ:AEjdCO1fWvQg1gX9MK38vIlLjUu9oLRfKXGDQv5W30Q-bc94_p55F8osecwK-nr10gwHb8eO2YDgg0jzcXY6F4vyAaqK5Anp2Y6paC0pHc5cE_P1fNvEbNJ2MWTN2t0QR5-VhUvCv-sgN7wk2pQ96TARuAiDUvGpwtOcMKE3RdApeBiX",
|
||||
"5db8a63b4c:0:51215b9fb97db9ac0bfaf50f8c7650e7ab8fbf9ff600c2e0173e35df37560553bbf6c23d42d8e99f755c61e1814e1751403a6c5241012a3b37fcee9540a25b0b:e0de051dac79182d0f816d6550c5d8dfb768df7e6259fbe3654c6950661eac654f75098eda2d20af0b680902ed600393aec24a8347912e0f0e4b6c742616a728:1:Aax-lby-vmb6YPkvXwZPqdmnC72yyAXd-_o2n5yP7wr0dgxKefQB8vtP0UlPyPG9ugpAhOyNp6FRMZoQFeOaTp_8AJm3pexIWwHaJwdoddgSxlGp2hPTwQ78m9ZBGfQJ-veFcNd1ZK4z1F3-OFLBRx9HRjt5ZjHJm-vaxhPa_UqsOAHwAFdnugAYGsvCnXLlXW3WYFZhbRFS4vjtVvEYN09te3ug7TaFkONCzFHbCuDIu9puxyrW6zR8cFdzDAe0hJhKIyuHALth_MikQCoPUipiArHPLKZLk1DGHbT1GK8k_d2yhJxOuiYKGGgVGldt-U6qVlW_kmIMgrbpptRIH1_ffwifR-0XAdO2FH6Vf0SITn_sIy-nuIgIFrphPt1nGlhfuArfhmUszfstDts321XEl6SBq8GCd_YdbXtbEcM3RxyIXwo0KxbKAcQop9qDkseiWEcCVl3F7HK6m2xqRK9KoMlGcQAfzNaUToKcYFLky8TL7YykBLbuxgSVTxlaMmyRqRKm0njTE4c_679kmtijGFF0kwNk7li7f1zyojeKtWxD1d1S2ssrsuoeUd-g_mxG1Ai0P-gvCkyWBn9v-MwhfPE-ai_53ZGuBA:AG6Z5ylc_9j-fJtpepvBGrkMKwaPOl67KUFfhLRNZOnbj5ZMCunUuTcjHaX7vhqMsDA9GjlFtdpzOp49xOZUGqayAN3rzvdolSixF3U1ozeUjbZppoAW2TTyp5Cc63C8ukbM8WIWK-kHuLF7pugLUU34Y68-0XwBsiRQSiHfepDO4pYh",
|
||||
"44a9db2f0b:0:7f678a7cef792ae7986dc7b0138d3116052daa2d18eed4f5cdf7498279629676d200a3f0c233f40c3f7893036916251a1c539a8d39dd2ec99e46a99d75cbab49:90598d4d0562d82451b7cf01b7b9c4a99ca00e366dff437a63c9d84fd78cc164a6b2ebb9edfa62b6c654793046b81f93b3216368d1949265e80c05196e9e1e3e:1:AWEF-eBvlzDv0BwsFHfQuW0fm3WkvOOEAj3Yei9GFauHqrhPVY09s65Qz2enX7MK5OEAhK-IKE7rdqxiRhzS5WiYAA4GJnvTng__VgGGaeodk2RpxUYYpXglss8cJC3Lp9q3UhnQ2N2SYOCentrAmiFqYfxYvURhEOxWRIYQUPF6NE7mATAcfvmp_nJPex_4qAOVLi1za1MLFuq7z_ywOb2qUt3vqikmRO7SAsNrk1kAGeeizR22TQYwEoyoQyjPuDho5Js7AIy0TyIigonxIoSGzLDxfrI2S5_9s6aR_bfq2F7alA1f_uB8AXSwLKGWfn822B0PEPiHrL6ucv7aEEuYDXKrvx4tASmg0UusyunTPVH1_xs5YbUipET_nTcqmtxV_RWZAqpBW0J8Yrmyo8f-Gktzek-NbHsx9TXdJ_WjvkjCsgkxilIVAY3XwBL5aDafppv2ZQv1b-0dhUi53bRhon6BmMByoFRglzm6Qk-tuyPt6klntL8H_XcDmybnhl60NuvJCmPnUUCxCzJ-Lb_xR-onNjAY-5qr35cbrGC_FP5HGnt8YtGrO21UcFDBrGEnYv2KgUv7hie1d3wP7Gi0OQkZRx75Fm-rBg:ARzgLo5WQVIpVfW2JwkYQ0jBsFht0-GR8RfeV5zR3mzgg7SycFenA9j362E-U9JYstKjrYuBSHHB3ka1EzBZgI6TAIgarHok6NHXkr-kS7i0WBQjSNV6AeFf9hoYSYaWWertCT0W4QcrJ_7DD6zkRE4BHh2udYrsFnNEWal5SQQ-zRH1",
|
||||
"b81c8c5f43:0:bd35767e61047d68424a87c5f543f710a9f946115154e5424dbe44dd7703e84ea8a51b7380e6b77499fe11a8b1c258cd11b3343baec5b3bf1a32514baaa6f424:a850d4a6426e9e2dc5cbd0275192743ad10b9edb17e3529e4971f9598a42bb5577440bb0ef31ce541d9aaddbfa91b25c5fea032b55b36fa8923a557bef9f25d7:1:AIDKMnNB9o1kj1H75oNPVcqUW3lsNkH-vEFThnrfwU7pFd4fytOvmlFyMxexr-u24UgVJH_kcAbgvR_7OHSm-AUOAHmW8Y4KgVXIA4f7Ll9t4kwbtkCnqYp-MYN1sMzGWPeafao2WS5HYoG0fgWzILT61Gpmam11bRrzFYUft6_dBt0lAV8fb0CVoxx4-O8V4SGEwUWiE0WEuIOfVG6LKw3alqcHXEUHOPnrikifrMeNCTxhnAXvAaQZ_QMUH5fcHLLM-6ioAGsF_rQRKQxTjDoCF4GdALNzdT4Nkf1cKTFN5WGcpOBr3Oy2bkriO0X0oIyTCzsX34dqRQJwZ6x67kOuRimL6bqZAHJrq7pOrlAKvpjnoiZo561gToaKeY1ynPA2rJuKlVEZ7__hYRCopC2SiKGankzmdI5mvLcEwRLzPTiCMZggebDkAfrN4aD07buM-FlgXLDT01R28ndZ0qRb7cdRD-U6NJTaNCQfE2Jol4rCrOysXZLgRuu9p6FZFvJ3RqsEa4mkSWR6E8kbfeYIFkuMw5yrgWEU3MOzA5zssxdv27KWfHMyxIRoBi0eqwY95G-6GYKp5XEfV4KwiSE3wXyX-4RlOO6BCg:AY9wg5yHH5AvxBG5wN1CORN4S7zeBHUohMXcEGRTier-OMMLCfFH2mEj-Cbse8hKSnT0dQaqo4ukc1Eb37RYuhNQAX7LhTnAKwt3HqCS-hUSpgAhG0UwXVfG5EtPvfEpvBqLnf5FXfD7f6IsNDVepwElD3bvy8EKBSFL6aUQrid3Ogln",
|
||||
"935c76c5e7:0:a80ff0e47ed18978efee5b01f06c605a2762a05b0a539f93575453011a3d0766b38ed43777ce59cc577d33bfac00052040c33c24577f2ccb74e1393e1c9ee279:f0c3327bb9da5bce4488661ebe1120b62320c4c5a5bac4e981802c9f1bc65f7902d3b99c67f11dc8bcf788f9d8f291cbdc10aa826ae345d138b5a971ae3f0746:1:AW16A1MtEXyCisH0xmSobOojtjxAODKw1wYAOnCbW0DVXNgAfz7xyMB-d6YIeZ9VqsURLYPpQdRgxdDBXipeyNpJAJOvgyL6IdOnQtgXHYxRqUFsiwIfkVYquzGkRMEyqjcQyErmbNstvZr2foVbxKA0UyLhOnkmoOTfbo2wI00v3MXrAUW1-7B4qZLhmPcI4eT__M96t4AUyot4JC5dqw33K-CgGAuOffIGz0FLSOj68R0nCEYHyPF3eaFRfPdcjqFJyec7AELlofXMLqk-AcljygjFsNggGZYwYb0iFGIYcb3ZbBhnkymzSITHIn20xhG3B4E-a7CrBfSpx20xSObdlDgfzz5CAV0-thYInQClIvst1VxfmQArE0OEWiZsf8Fak5EiWy6mIpww5L5ZHLBdt_fqET5ULZUmI0JFp2NWYhzgFo5HE9NQAPFhm2Po1XmEyFVMDLWFgGVRhbOInrAtQQ7hSGgts8a8aZk7jWl1oUFLj7sXhvyIKos_opF1S6phL_SY8yF3RKgnkhRxi-FD4zAH4bwVf8OVqeSvN1qfZAn6EIJOH2Kfhv2stUlS9hCM4SfJIfSnjtsSMJ3Ph2Ep_e2THDH_rUFnCg:ADDuA2ZCjV-1N-1BCbYFtSgV5c5YfvLR6HvcBo3XIjOfYpndxJBNw63-WG9NQbgNSCpfDRPbBJtP53CqDlAAsjsHAbkiQ37sl0H8JxuSgqIxy3aoEcRlVLWy28PAcSke0Xl1IgaRsqWRObSy1bmFdsJBpxbW45xwxm6w4glNtM2ZHzKI"
|
||||
"a145374edd:0:552f4f3244d1cef146dfbf781e4a64d1b529b8a30b496100dbd4f2e60553280f4089f1a0eea27821991604d7bd8de93c1c24fd172558287c73c72a313865fe5f:c845de3ec427903e97feec496698b83d130a0fe03fe165f53f3c3dd1b86c1d4d808936369637e1d023f25b2081176d31ca1cc828c1b135da23eca5aa37476813:2:AItC2JQyFwA10ijnEmkPqNHKlH5L-nl7HiPA9bF6DlL6-qST7OALZhgDWTFjR3oqjTaxTwqeq4f9UUOZasMlSqw0ACV1H-JFhORbhzMu5Koj4Ufe6c7QZvpVrmPp6Ka2QsVQOkoca3E-hD94IJqA01FYA4tHtvW5X32tdg5YKFFNjXs5AFSm9MQeO21kIWTG-Xyu-BGGRvOTK3f0DXsjS3tiIWiECy0HIJaNBDaSg3qme7wvQ-v2xAiHt8OtI_vL6_-vpUbNAAknWgKeoP_ZTrtd4ReyKPWT_cP_lv6ba9x9FReNEnYNaAIXSqNFpZIeIBF3YMw33xabt4vKLFBaGW_2hGqzqWOhATyWjq077SLpCRFNqm_s6VODhowOsOHX6IUhYsLsE-f9t6jPykhEJsYEkqwh2yBVMAL4kTyfK_18o7s01_Ju8xsMADW7PJAGgypm4MTxNiODpHdnKqAxyXJblNPA2b9mv9YgOScDlYLg6gS2pk0od1CezPgLhEulOdaCfr8MddsW4_WH_I9wy2xuLAUQZdoZH5l5pdgOuForVSp2vgCYiXEmZfc1ybl81m5QnstUef6NQe9iwKJBd09A_tC11kGID-SaCQ:AdXjxecCo3AW9X-H4RIfvQiOItl4aESgTQem5RvWPlp5mNYi_AmPXdwl2ay5Ul1Ev55W3lLHuxK4kpzWH4pMdOktAAA-UD-xk-4cvGvE5VFo8XV9eGf0rsTXMYFx66GM5nqhMY7SqwNpi-CRPNzzwzOEeVj5J_monJlTd46pO0nkOz7j",
|
||||
"3fb14dca24:0:bf46edea78200f176766c6b9c96ec68bc513908b974db5f877a0c9789a26ea4dd4fe1326fba39fc1bf37de1053948a200770ee2d145fb7f074f83b243f26b30e:406d507510278d9d3a1b8bbe183a9cbc054d6eefb4e66ea38bb85203aed1a74502782fed8a3b12060fcf311f2b12dc006f3680e091b9a7ef8eecd0dfad91ad57:2:AJM7WjBgO24HVjoSQ2TXaKvH5krzZEeIekF_vV_A05-s30j0EJK0ZcVB-RJtt410JOmxA_wpdvp6m5CZdoDi_R6PAJ66ah7noFWdJ_BZ8tV4Q5AK15rA9AvmONZLoxvDAsmWFzHPOeAQ-nWCfFDqPNiI1kTRc3gOIzheOFZ4Esy-AjwuAEvqydx15Y38oC-B1TeS5Ey1fCFqo19R4f-c2hxIUM_6TjPYPFWuM26Q06SyAkedetjiSAkj95tSLqB9Xb4UXCS2AGZqnOLT2tq5pE9XlUAze3K8e9ubtThKOYLzUM1kxYDA8UqxeIf-JFIv-ukcpB2XL2J0vcoeaI0Ki-a205inXX78AJ6BQJut63ovH46OfGP0YkKnY7VdX5N6bZGLONHxtCd1JCVphqa60ze3Yh2nkCSPHGxK6LJ-kTO17ypGcy6C6ztbATj_yXeADyZAbfjiWLDDJXngYWMGu3-gp0gdQM6iv2vuLlrQ8BrBWR9W77xF6mHjPTCo58YBHtu86zdoY5ecBFMwbXrpwSYb_m_UvQXYbY1EcyTT5A5NPkjvE4wd6J48dj-0M5te58v2RBVDLZkDzT7e86vUeKrxABzk2YPr6jLUAQ:AABH1HPwGnfdyciVwch0PYH67utoUtk4XxqmPiNZx9b9oUepuv22rlBd0JdnCgPbvMjfj7MygtneVG48pDbeMe28AYOOjZGjHNZ5cKxQIoOzYuKPDuLY67BcQOOUBFKsmz9cRyCe8sQsc3HtnyYDcLcNCVS3c2Hi529xAvX3qhjuxh-d",
|
||||
"467ca2d39c:0:5836b22097530a21999b17dc1bade971e8c8d92f653da1428eaeeb1c7d25296506081a3660f968a81463d75b86fc8f01455c6d86ff13aac28a63d5aef159645f:d0d23ddad71bf39ccaea2bca7ab777100632b3904a077d6f5e5bbf580b32ef50ced7be0090ea6d8775e62bd11acadcacae6effc2e162bf9e694d2b3c498c9d26:2:AE2mcfDzyoksMh-uhinx5BYTTdLgbQCq9Tzfhb5-MdJKIZC0drgBJLAsQTlL1DEjWdSqJGC3c5J__Ydu3Q78qgU5AKUu-YpMKx8gK1EYYNnJLOiN5vxSdViOmUX91_4YxpbDXPWAXoGynKlW0XaHPk6jtrvlZcvOY08BbOc6-3XckKQwASx8yJ13H_wwnuAEhm_9Mv6tgFVroR2cWfn1AtZKoPdpfMg0u8nghu4ULfiyiusXcxc9I9c6wedr_gk1F2O1_y9bAA_pdFwN-JuHRO0QuU4UDC9cS4G3Gv8ZZHgNIswgjWWMvwrE6kcBtvoP5pgPYFTqaxQ5s_86qe7EIW6vF6InjLk_AfkaAfFjZ2tgbjh2u-tWwPmieYcRCyvifZ3pCyFpNtCy5ILhXgejUWg68aEqTgTLiL__2Jg3V4bTL7TpWWiWmNnnAeN9uGHULx3AJD-I-Uq1A2hNldlwe0pmRSc8VLQld5EClXM_RIh_WtkOwUB0yG1N6rfbtXf7wY-Pq21DzsDFezNukf97fACJfoIRiH73gHCyizM4_NkbbQL9W_7ehsVzvIJBqfyGd2BxuqxRxVPL_SkoACOo9BsWUXyMDCPWzFMTBA:AU3cy-juui20tWVrYndPqsmeJmQoSJtxvyr0RPjb6Zr5wg7q8gFWgdZiPVRh_oz3-k_upRUNaGFbpW6CW-d9P8NcAamCreeQ5m42hdzd5x5ao8ouE-aR9aBhBFOfusPAIgqm53857KwtWwoaRjkRo4RH-_oZXEKn6sG16XFFs-rBlG7p",
|
||||
"344397cd0e:0:3f847dfd3b747bc5f9da128945e9b36199dc742c7a51bb2590cbeeb0eb3ef07b5fa68a7a97b7d13fd6d4dc122f3fe71094cc177456c3d92e05c191e18ef78f01:c88e4895defd13ae763e68cff50e7406c6b601f18c1a24406ecfe9392a9f9c50206194a29bdfc1b256547407540ca14d91d3c2069515c754dcd5065fdda64032:2:ACXUR9j2GTh2jEyCDKj5qmAdI2XVMHeQMJYnpTVL3dVlODbrTPOc326YQ-vxNmIvIQa5KYPqhYIqbYfLeeKv1wWaAMmkPgmcLNKz2lZ3GqE-dvQ4--rUOWITIpSTcg1Kwo1o9twmU5ynCyah826-xhcJnfWg19AzPqR6Puwh2IGj9Q7oAGMVoTob4feGAj0G90nD4V-Uylqyb-bh83NWo61jsUm42UGptsq397LTR3oM3AzqNV_ntO1Aiq-exy6zBVizOMJfAFXJx6pc8CzeS-pPeg3h_e4MKU7_GZGayrIbEoN8SUoBrl7yonKkfm2geSNCDf3fy9VXYcKvdGlZKSvGpxQ8p9PBAQIc8gBz1iCfggx3XCMd4d3cRMdsbxmlp0vlb9DRKbxakAlzcz6g92wUJWsZ1b6p5F7b9glyL4BezlPyGxPFNHHNASpkkx1YsGdjm_KhllbAzeIBwLd4ghwsRXKzFQ2Gm2lf6CjVECDAY77pe4oX4RJTZPvBSC1sWMndBTqqpioxMYOHY9iVC6im7i44nUrW3q4OSe7PfC5LRN7fExpbq5czH9bQ9FS_uxY9v-gDiL9MdLNNs_o-iLsy3u6vq0mosn5nBQ:ACZPO033kuvXj-vtlimDWcdTj-aLRo3VlAUd2PduaakvxdVHoBN7wIvWFlZRbi7rx842vS49tZAQtIvPSnEUMms7AZc2iXkvAFvQiecTKN3Dsa-iOX0zf8f-cUHK2OJ0VVkp4XoXHvVeL_Me-l1MUZBUEQVx2uYVrU7uPxext8qqpeRc",
|
||||
"33c9267872:0:8a50ee533b2fe15a03ab351a26f0347cdaa087f66093b71005de4660202e7932a41dc38d8c47f38b1d0adb39446b1d58f8f5eb1f1d28ca2b6bb7f7ef0bb22fdd:00e1a9b356a1f5f28515df24015623fa09f5fb72e83de115a66dfe7222b8266fc37f0bc8fa948e80e40067246b315b275e31d045622d047b2a4de55161b089b2:2:AOO1k926VACCHyWxMkCRZheDch28mvwN6jW46yDGm7gPQwroB6Yy9VaftCWNKa3togYSLTfowEac-0v9dBns7HHcABbJUmsAJ4038GoIeXsFIBSYP_uvNFZN4Xn4ZtyHeRCZDmR2rKaGB9hjMEZ6XkdtV17UmFLjlO9VG1SosOZJQhvVAWSbEbDyo7kIynMJmo94pyp7ZDYzWiZ8ubfhXZNAxnTNpdz252s3__O3xUUQcHr-gmKLVXGnHfPrFrG0XhLyZH-oAHK2jZ-FhirXn7v7gyW3JA6s_S-zBYb-qdY6ZlTM0WpT0kys_AJ9fYY7TB3AS0q27Ag-swg-jGf5qedcXpYUg7GJAQ6Tq__uN4ILH4NryKq6RQArqdTxB6tmCSTkjnFbZ4YrDUX-_eHB-i9oisZoIRz3pjEYR3EcY52hn6EI1sRPxFQOAPPxSW0vGqr5JMM8sZp7S-jUmVTnu742e9m9dfpO7bEPnPaeEhJUFVzPvLKeIrkhbug20hd5CkClRgiUgJXQ3IpQoDes1t1aGL8uZudFknGsm3QJXpw6Tb5h8ZSuQj6bueWw7QdNcHV7fA0UTJpy41lgx4WZ7xv2-M0jkOhmliu9BQ:ABtZ0WVVe7SywNQ1oVeh4VIXkk0IT0ML8kUwy4GnCGCKLOit084F14eoDss0okk248jDJEjiRTmmSXQbC2I_SrVZAXL-Q-MhOUuHdiR_ES2YATalcWfDH534_g6D6MI1l-dJ7HyQu9Oz-xF1SMiP6-XhvS9vnmMBuyNkirbI7c1eGE5Q",
|
||||
"00ee1db06b:0:3d60bd6ef991ee621cc77573407d6be66bd60dbd82f2ada4a28afafcf8b00c6a626ed3d000a4bc2630a013fa4f25a8e60116bdda14bd1380e48a3360e9eff6f0:603314e715652db9b8e0b2de217051a9a017962e7349a94ad2f4f1787f3e1c66b881c47c73a8dcb7d020b13e4a5858b0cfc392ce348e83c1a2c4c76471346ea2:2:ALEHh95ZRAP1I5lahFTXRa_51YeG0l3t6vroG-q1YFpTnIYTN4JajBBXmQhmTf9hHDc-R9iQstPXRV4FPsFmCihwAOAenFhNDDRlr7otUP5o2T-Oc3yX3MEZZa3jY8GxSuL_2aVQEcYgPfWrierDiXi7QQTGyvmkt-wMy414nPcRTP2NAaEys8AKMRISLFh631kJ_b-_KdViUmAnAMcxG7zVu-tr2Zi00tZ2i8KY_9LCXofEtUdGTg29CqqkNlMX2y0cRz6pAHXWIUNqq7EVy6DzAUEnMZvcKW-Ig2zJW-yOOvPsIQZ_naOOquyFSyQoRGfvVajI6CIjmwgBaOL1hD1EG50AoVu3APwCbvUhRgU-48s0gqY9fQ5buC9Gy-cH78qmxKv5a0kZWSeXtu6J8CeH68tCd8yZhgqA4c4TBc1T6QE5NSJRbmM8AMF_O2TBwoMwWhs5KZ7ljEX5L4RwbBu79g3R_3ub8s8iQ9wHuSyZDlICDlbH__pYY0jBwNIwH6wOnyp9bZ9u610ltU-spahjDy4Kh1W_J3-N35dT6psg234-ctpEKoj264kG7WsXOOohRsdSEGqgFuFlKNclevdx4fQsKzsXQkmCDw:AXBt-nAitsr0E_kjc8DhvMVXLOXjKnz9cK9t--mm6_iUmYnAjjVzkvIjS9_2r3ba9UM2vWJ5et9EvOj6rZfZjhkJAZ6tGwq3TrANuzn88lQq845i18rI5VWjMYJLQIl-_uQC-5vt8VJrNYAwPay_o2LV73rMcWMroNFZy6U0sLB5qOs_",
|
||||
"50cd888fe0:0:577a71938a275240667d381b80fe4eb4a99a49d564f2bd32d6b4aa58fe2db832837c321d02f2c9f1ac5228572f6446c3706e09c7c81340450ebcc42c5cde50a8:d0f23d0a727636bdf9d8ff7a2ac4836972e0f1a754cdb6d70f070261f5f2f154d17fa6424f2cd2da9cdaca18eeab11181b40463c8070f4f5f22b286f2040cecd:2:AacV20WYy_3mvFze-EdowUu4w1K_tcvy6U1iU62k5UdvgdWdpPHY-vXDMffN-Hs8eYes9rxucBQTTL7oxIs3L6u8ANDr4kd6ErsTuK7ewI597clD51pi9B7QFPRf_KxktFGQvVGY2IYbZ8tS4vRX1MKPdwojwea02QT0N5aDqH-NXv-nARfC8hnCY8XSrkdrXMcIS_5tBsbKOXfz49yb1yWBaOwWXDtTQesPDfesdQYMQ8WNKuDo_Fj3-EaZTwWiYa619bn4ACdIoI0YtWge-IGbETyeEic8KXXsrKOxXCC8bTwmRUmACTZc5e8XX9zsSNLxjffbZJMyXUAFU1AS8tc6kPrknD6aAP6P-c84D-bfS5rC7-YVs-YyW8-LZ8YrjWDTqWkYM2PdNISfe1yGygzoapEfHK6Np-0Q5jYTkhvsPXgsBFwEmI2CASLjj3BqkotcfrL9dPv4FNQgmffVBM__LAX8kkPglXzBfCwJ70o8-NmMoYF-TNtEwUqHnpv5ypLd05N2U66Z1aZ7__TalVxWFK_fdr8UTHw35c6HgCMlaneuIfb2zKwt3_F-v_iSlvWE8C2SS8cAm5PBnC8vYaI4ysxYgxlwJaImDg:AD-Iwly2Yj-bbmMMerQWMVG37luX0Nfa1g49j0nAYMXqDRaENAtQ75ZyY0hwst1xtYG0xC3PtqDGQVhjQX23xVC4AIuTSqG5VuFd5PRAXqXAGj487EKt3GNdj8ChbmZeIxETcQH7d_Zj4By1KB26Qzt3qQRiSbKW2cxF62_YBry3SUza",
|
||||
"939576391c:0:487f993e2f270e840eaaa3d1fe82c5027ff8ee62c15c9e9867589693e8ae2f7747583863a81e8a886916d57989f6c0ab35219d605b45990d8d4682b86549f718:08a6139b7c55b402ad0ad0d8c8541581a506563f2d018636e613b7a7ba472355ea4ea13e08de962876d4b4fd5163b486dcc2be0c47a1fdecfbb54f217c1273f7:2:ATqdfUlPE7Tp9cXniiWiIZMPsjtlfWoijyfDzKGGu_OTk3btuKt6vHQMQeuswYiFaKmjqxB0hkUccdrsWTNQ-jaJAG_8aFsePJ0VjSaytfFjLNyCvNLweVfiGflJVMAWnN6otiSe0zozPMGZ-RpJJFaHV7uuNolhl_3jWPHRgcgWubLMAcxnki1xqixmzb3Ygp-9VvY6JlCEAo50sDCKX0ll3noz6RGrwe5SEyxwtsdvGJJnpLB0-2JlEjpkg2TIR-FUsP8QAMKS_zF1546vKwhTpz8FfjQOjVJ2wxIzeMxz96rLQxN5y0DIGQCSKc3E0U3u7TKtveid4qQ_2NfNhDy4bjNjdSb9AcTBzzkexWL0uu87_jy62y2AJG5xFFbsRItReM_NrLpk21lXH7xKC2pkvCavp2rX8nkl_Zprs4GjONnnrjQqUPBJABd64QpuON1P-Azv3FSAY419QXj2QmhfB-g2KxNGLXXc7gXSjWr58EY_BPP7fKuQxr-TDmkgq-QAdzAibEoJS0swK1yYDoHJeDHgG8-BrRRivHxAkGW0sYiW8ovNg92RPfMelU9SLpgw-mC85hkL5y2iUwR15EmiCkF_REkPpNUmAg:ACuwxcroXHk3FPGSQyOixwz_MFtzk1cy6TEqeT-2pQ9m5fd9AIf4xAEOKHo5hsuXNkaE42deXntrm6Kzde2uNTXYAfkXNAQL_j5oJu_9GROif3v_ZwzSTSMkEMhu-FwXGaUZR3gIST_2Sddt1Psakivczd6toHcBfFBSNIa7mcxzPj7m",
|
||||
"0d7224be02:0:31c616d4ba918e1a59a7efea6633a51ddbb94056ef5576fe61268ca0c0f3035a3a1bb4200c737c6e4a87bf979f9767f230066bb41e0641210d5676493845ddb5:1868a4cd394d0e5b0904dff18094333893ebeaf29561391ff442235fc6d0406f8ff119a8ce948b417a1fdf5067d8649e481fdfa67d85e865726a960d941dea5e:2:AcJ0WaHJyhDYold1aIwTqxJOwV-a_IJSqsQS-1x-YxOdBQFsQEEu23A1WlyqY3z0_KdEvJ8vG8NItpa53H4AuYIpAASlWlJG1KxCnWj4_5W3Xzj3eVu_gyoEgs46vQkCsSk6IqQzEs9orPwbUq3Wajwbd9O5D_CSdkYCa-chB1SZFIoPAGrzJc99-zdAQayev3j4WkSlr9jHvnYWdUeei6AE49VKXbg78BuioWkeH7FRCI2PoFH1WZnvFQoEzLJSotefchGGAG3RrxQJXbxzEKoFaLTAEuFYd5OkwUT3nKRrTuHgc4vaYEas5fmylqpmeozJMSzNfcmMKE-Kpr34xN-4Wn5kpTsdAdrCG0okMPhveRz0qdjLe7D_Rb10zAZoed3M5N99kIxDwUNVyFkMPAv4Y3gl0k_Kcg761GA5Sf8UxEFLLdKEJDD6AVMq9_18YBxe3fu96VvMpriK3sPKN2ICUZDauy9WvT35okNxp_RibID6FtipShYRHhz8tsqA2HUOUqbzcWEMqasyWritiqy8wpelBCg2nCHYWorR64Af0x9naZyNaqYuuEQ2Q6cjeoS1odAi--5QUbf8d1eQs83IDX1XUufb8qT3BQ:AGwwFjs3XifAex32HyTeSwzdjUYiCoQhM3GrRPStTI1Oxxq0nU4bPxCcvsM4xzzIIw0o9bcQkJDGBqaH_L_eWu7dAEFI_WCuaI7nS-5sLjtAQMeaQbeAy4omS5XuODVHBHadgHEQwZ2xroQgqH_3Wy7E2jphUqSWqro7cLdRbSZuxkL2",
|
||||
"8c3ba1296c:0:6137b816948f56158455356514eb396ae7fe14846af5b237003c394a38e1347bb159fffed778b958734eb3a3e43aef56c03a908af08f32d817fd8fd57be0b1b4:8048d42cedc04bc6e6fe0f358200239f4db1a5f16f4d156354ac55448fb6d5444131ec66ce53012765aefd98a45d12dbcf39e572ed83e370e0ba6595cb2252e5:2:AK0oHAiihtJ0d4YgirwblDtM9y4AFbUnMu6PcS9k6wBBCLnB5YlmbM3Ejx0MY-T1V99nmKydwmfvxdNZudDQ90qrABhXTfrDWBY1XVJmNHxQvvBRXyrlBn5ZM662JLI_qyBMo9VsdKKeSQHX4YFcu7n0mCCIDGH_jbVIyXqjLJDscoriAP8JKjOGN-XL7YizUxewM3nsaJCDED8vs0Y_iFh9owmf3KKJ2BPXlNv4hWExVoK4YAG0OjDERJoO_Y6LCnxO89xVAOyFR0PH_83mUN8I_DX8KVHiPM_Od7bgQnkB9Di3QvIzzqX8NKEEnJfOTuEUnptqmXeSih01e9KiJsLAdViU3VxxAcDoO6JOUkmGspZqPF2ms9FrKH1xRpx0EMPsFv1YJcAgBxxjvNaG-FBT8xWzpNRwBg13-XiDzRdOHNy4T60APXtnALW7J6zoXwhnQSM5XyBb54uO2IsZSeO2HEzFnEttGlKMEZTXSHfEmG4x8teYyIPC9glom-5FVWBxgu6p7xAkc6uktCKigNzHDiyxaF3m6b_oWRsSIe4FbeZv0IqidkbxU2fUFnDVfIuq5vp5knyzawnfv91pne6oWdQzQPIW1wD4Dw:AIBIHwGOEpJTwZVxMElofxxUlTOgNVnixX6mPE92OdIKOVGd87jiTBaRx66LjSIyRS5GiFk54F7XSXlQSx7eRfoDAR6whTQKxhFOh8XGfO_0bRqXyna2BAWTVFoKNcS8TmpPw2Ug-IOMl5USI92lF53P-yDPi_QouJu50uZ4SV4_bScC"
|
||||
];
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Add table
Reference in a new issue