Avoid deprecated ndn-cxx functions
Also, waf is updated to version 2.0.23 Change-Id: I053d7dce733455ec352931a1614082542ca00570
This commit is contained in:
1 parent
26a0326dc5
commit
5f5101adc3
10 files changed
+50
-74
No files matched your search
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2022 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -42,14 +42,12 @@ namespace mi = boost::multi_index;
|
||||
|
||||
struct SessionNameHash
|
||||
{
|
||||
static_assert(ndn::util::Sha256::DIGEST_SIZE >= sizeof(std::size_t), "");
|
||||
|
||||
std::size_t
|
||||
operator()(const Name& prefix) const
|
||||
{
|
||||
ConstBufferPtr buffer =
|
||||
ndn::util::Sha256::computeDigest(prefix.wireEncode().wire(), prefix.wireEncode().size());
|
||||
|
||||
BOOST_ASSERT(buffer->size() > sizeof(std::size_t));
|
||||
|
||||
auto buffer = ndn::util::Sha256::computeDigest(prefix.wireEncode());
|
||||
return *reinterpret_cast<const std::size_t*>(buffer->data());
|
||||
}
|
||||
};
|
||||
|
||||
+8
-13
@@ -273,10 +273,7 @@ Logic::updateSeqNo(const SeqNo& seqNo, const Name& updatePrefix)
|
||||
if (!m_isInReset) {
|
||||
CHRONO_LOG_DBG("updateSeqNo: not in Reset");
|
||||
ConstBufferPtr previousRoot = m_state.getRootDigest();
|
||||
{
|
||||
std::string hash = ndn::toHex(previousRoot->data(), previousRoot->size(), false);
|
||||
CHRONO_LOG_DBG("Hash: " << hash);
|
||||
}
|
||||
printDigest(previousRoot);
|
||||
|
||||
bool isInserted = false;
|
||||
bool isUpdated = false;
|
||||
@@ -398,7 +395,7 @@ Logic::onSyncDataValidationFailed(const Data&)
|
||||
void
|
||||
Logic::onSyncDataValidated(const Data& data)
|
||||
{
|
||||
Name name = data.getName();
|
||||
const auto& name = data.getName();
|
||||
ConstBufferPtr digest = make_shared<ndn::Buffer>(name.get(-1).value(), name.get(-1).value_size());
|
||||
|
||||
try {
|
||||
@@ -407,7 +404,7 @@ Logic::onSyncDataValidated(const Data& data)
|
||||
processSyncData(name, digest, Block(std::move(contentBuffer)));
|
||||
}
|
||||
catch (const std::ios_base::failure& error) {
|
||||
NDN_LOG_WARN("Error decompressing content of " << data.getName() << " (" << error.what() << ")");
|
||||
NDN_LOG_WARN("Error decompressing content of " << name << " (" << error.what() << ")");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -416,9 +413,8 @@ Logic::processSyncInterest(const Interest& interest, bool isTimedProcessing/*=fa
|
||||
{
|
||||
CHRONO_LOG_DBG(">> Logic::processSyncInterest");
|
||||
|
||||
Name name = interest.getName();
|
||||
const auto& name = interest.getName();
|
||||
ConstBufferPtr digest = make_shared<ndn::Buffer>(name.get(-1).value(), name.get(-1).value_size());
|
||||
|
||||
ConstBufferPtr rootDigest = m_state.getRootDigest();
|
||||
|
||||
// If the digest of the incoming interest is the same as root digest
|
||||
@@ -669,7 +665,7 @@ Logic::encodeSyncReply(const Name& nodePrefix, const Name& name, const State& st
|
||||
syncReply.setFreshnessPeriod(m_syncReplyFreshness);
|
||||
|
||||
auto finalizeReply = [this, &nodePrefix, &syncReply] (const State& state) {
|
||||
auto contentBuffer = bzip2::compress(reinterpret_cast<const char*>(state.wireEncode().wire()),
|
||||
auto contentBuffer = bzip2::compress(reinterpret_cast<const char*>(state.wireEncode().data()),
|
||||
state.wireEncode().size());
|
||||
syncReply.setContent(contentBuffer);
|
||||
|
||||
@@ -737,10 +733,9 @@ Logic::cancelReset()
|
||||
}
|
||||
|
||||
void
|
||||
Logic::printDigest(ConstBufferPtr digest)
|
||||
Logic::printDigest(const ConstBufferPtr& digest) const
|
||||
{
|
||||
std::string hash = ndn::toHex(digest->data(), digest->size(), false);
|
||||
CHRONO_LOG_DBG("Hash: " << hash);
|
||||
CHRONO_LOG_DBG("Hash: " << ndn::toHex(*digest, false));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -771,7 +766,7 @@ Logic::processRecoveryInterest(const Interest& interest)
|
||||
{
|
||||
CHRONO_LOG_DBG(">> Logic::processRecoveryInterest");
|
||||
|
||||
Name name = interest.getName();
|
||||
const auto& name = interest.getName();
|
||||
ConstBufferPtr digest = make_shared<ndn::Buffer>(name.get(-1).value(), name.get(-1).value_size());
|
||||
ConstBufferPtr rootDigest = m_state.getRootDigest();
|
||||
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2022 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -399,7 +399,7 @@ private:
|
||||
cancelReset();
|
||||
|
||||
void
|
||||
printDigest(ConstBufferPtr digest);
|
||||
printDigest(const ConstBufferPtr& digest) const;
|
||||
|
||||
/**
|
||||
* @brief Helper method to send Recovery Interest
|
||||
|
||||
+8
-9
@@ -55,8 +55,8 @@ Socket::Socket(const Name& syncPrefix,
|
||||
if (m_userPrefix != DEFAULT_NAME)
|
||||
m_registeredPrefixList[m_userPrefix] =
|
||||
m_face.setInterestFilter(m_userPrefix,
|
||||
bind(&Socket::onInterest, this, _1, _2),
|
||||
[] (const Name&, const std::string&) {});
|
||||
[this] (auto&&... args) { onInterest(std::forward<decltype(args)>(args)...); },
|
||||
[] (auto&&...) {});
|
||||
NDN_LOG_DEBUG("<< Socket::Socket");
|
||||
}
|
||||
|
||||
@@ -84,8 +84,8 @@ Socket::addSyncNode(const Name& prefix, const Name& signingId, const name::Compo
|
||||
m_logic.addUserNode(prefix, signingId, session);
|
||||
m_registeredPrefixList[prefix] =
|
||||
m_face.setInterestFilter(prefix,
|
||||
bind(&Socket::onInterest, this, _1, _2),
|
||||
[] (const Name&, const std::string&) {});
|
||||
[this] (auto&&... args) { onInterest(std::forward<decltype(args)>(args)...); },
|
||||
[] (auto&&...) {});
|
||||
|
||||
NDN_LOG_DEBUG("<< addSyncNode");
|
||||
}
|
||||
@@ -110,14 +110,14 @@ void
|
||||
Socket::publishData(const uint8_t* buf, size_t len, const ndn::time::milliseconds& freshness,
|
||||
const Name& prefix)
|
||||
{
|
||||
publishData(ndn::encoding::makeBinaryBlock(ndn::tlv::Content, buf, len), freshness, prefix);
|
||||
publishData(ndn::makeBinaryBlock(ndn::tlv::Content, {buf, len}), freshness, prefix);
|
||||
}
|
||||
|
||||
void
|
||||
Socket::publishData(const uint8_t* buf, size_t len, const ndn::time::milliseconds& freshness,
|
||||
const uint64_t& seqNo, const Name& prefix)
|
||||
{
|
||||
publishData(ndn::encoding::makeBinaryBlock(ndn::tlv::Content, buf, len), freshness, seqNo, prefix);
|
||||
publishData(ndn::makeBinaryBlock(ndn::tlv::Content, {buf, len}), freshness, seqNo, prefix);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -178,7 +178,7 @@ Socket::fetchData(const Name& sessionName, const SeqNo& seqNo,
|
||||
interest.setMustBeFresh(true);
|
||||
|
||||
DataValidationErrorCallback failureCallback =
|
||||
bind(&Socket::onDataValidationFailed, this, _1, _2);
|
||||
[this] (auto&&... args) { onDataValidationFailed(std::forward<decltype(args)>(args)...); };
|
||||
|
||||
m_face.expressInterest(interest,
|
||||
bind(&Socket::onData, this, _1, _2, dataCallback, failureCallback),
|
||||
@@ -254,8 +254,7 @@ Socket::onDataTimeout(const Interest& interest, int nRetries,
|
||||
}
|
||||
|
||||
void
|
||||
Socket::onDataValidationFailed(const Data& data,
|
||||
const ValidationError& error)
|
||||
Socket::onDataValidationFailed(const Data&, const ValidationError&)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2022 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -48,7 +48,7 @@ State::update(const Name& info, const SeqNo& seq)
|
||||
}
|
||||
|
||||
SeqNo old = (*leaf)->getSeq();
|
||||
m_leaves.modify(leaf, [=] (LeafPtr& leaf) { leaf->setSeq(seq); } );
|
||||
m_leaves.modify(leaf, [seq] (LeafPtr& leaf) { leaf->setSeq(seq); } );
|
||||
return std::make_tuple(false, true, old);
|
||||
}
|
||||
}
|
||||
@@ -60,7 +60,7 @@ State::getRootDigest() const
|
||||
|
||||
for (const auto& leaf : m_leaves.get<ordered>()) {
|
||||
BOOST_ASSERT(leaf != nullptr);
|
||||
m_digest.update(leaf->getDigest()->data(), leaf->getDigest()->size());
|
||||
m_digest.update(*leaf->getDigest());
|
||||
}
|
||||
|
||||
return m_digest.computeDigest();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2019 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2022 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -32,24 +32,24 @@ class InterestTableFixture : public ndn::tests::UnitTestTimeFixture
|
||||
public:
|
||||
InterestTableFixture()
|
||||
{
|
||||
uint8_t origin[4] = {0x01, 0x02, 0x03, 0x04};
|
||||
const uint8_t origin[] = {0x01, 0x02, 0x03, 0x04};
|
||||
Name prefix("/test/prefix");
|
||||
|
||||
Name interestName1;
|
||||
digest1 = ndn::util::Sha256::computeDigest(origin, 1);
|
||||
digest1 = ndn::util::Sha256::computeDigest({origin, 1});
|
||||
interestName1.append(prefix).append(name::Component(digest1));
|
||||
|
||||
interest1 = Interest(interestName1);
|
||||
interest1.setInterestLifetime(time::milliseconds(100));
|
||||
|
||||
Name interestName2;
|
||||
digest2 = ndn::util::Sha256::computeDigest(origin, 2);
|
||||
digest2 = ndn::util::Sha256::computeDigest({origin, 2});
|
||||
interestName2.append(prefix).append(name::Component(digest2));
|
||||
interest2 = Interest(interestName2);
|
||||
interest2.setInterestLifetime(time::milliseconds(100));
|
||||
|
||||
Name interestName3;
|
||||
digest3 = ndn::util::Sha256::computeDigest(origin, 3);
|
||||
digest3 = ndn::util::Sha256::computeDigest({origin, 3});
|
||||
interestName3.append(prefix).append(name::Component(digest3));
|
||||
interest3 = Interest(interestName3);
|
||||
interest3.setInterestLifetime(time::milliseconds(100));
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2019 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2022 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -54,10 +54,7 @@ BOOST_AUTO_TEST_CASE(LeafDigest)
|
||||
Name userPrefix("/test/name");
|
||||
Leaf leaf(userPrefix, 1, 10);
|
||||
|
||||
BOOST_CHECK_NO_THROW(leaf.getDigest());
|
||||
|
||||
ndn::ConstBufferPtr digest = leaf.getDigest();
|
||||
BOOST_CHECK_EQUAL(result, ndn::toHex(digest->data(), digest->size(), false));
|
||||
BOOST_CHECK_EQUAL(result, ndn::toHex(*leaf.getDigest(), false));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(Container)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2021 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2022 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -29,17 +29,11 @@
|
||||
namespace chronosync {
|
||||
namespace test {
|
||||
|
||||
using ndn::chronosync::DummyForwarder;
|
||||
|
||||
class Handler
|
||||
{
|
||||
public:
|
||||
Handler(ndn::Face& face,
|
||||
const Name& syncPrefix,
|
||||
const Name& userPrefix)
|
||||
: logic(face,
|
||||
syncPrefix,
|
||||
userPrefix,
|
||||
Handler(ndn::Face& face, const Name& syncPrefix, const Name& userPrefix)
|
||||
: logic(face, syncPrefix, userPrefix,
|
||||
bind(&Handler::onUpdate, this, _1))
|
||||
{
|
||||
}
|
||||
@@ -87,7 +81,7 @@ public:
|
||||
Name syncPrefix;
|
||||
Name userPrefix[4];
|
||||
|
||||
DummyForwarder fw;
|
||||
ndn::chronosync::DummyForwarder fw;
|
||||
// std::unique_ptr<DummyClientFace> faces[4];
|
||||
shared_ptr<Handler> handler[4];
|
||||
|
||||
@@ -98,7 +92,7 @@ public:
|
||||
BOOST_FIXTURE_TEST_SUITE(LogicTests, LogicFixture)
|
||||
|
||||
static void
|
||||
onUpdate(const std::vector<MissingDataInfo>& v)
|
||||
onUpdate(const std::vector<MissingDataInfo>&)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -407,7 +401,7 @@ BOOST_FIXTURE_TEST_CASE(VeryLargeState, ndn::tests::IdentityManagementTimeFixtur
|
||||
Logic logic(face, syncPrefix, userPrefix, bind(onUpdate, _1));
|
||||
|
||||
State state;
|
||||
for (size_t i = 0; i < 50000 && bzip2::compress(reinterpret_cast<const char*>(state.wireEncode().wire()),
|
||||
for (size_t i = 0; i < 50000 && bzip2::compress(reinterpret_cast<const char*>(state.wireEncode().data()),
|
||||
state.wireEncode().size())->size() < ndn::MAX_NDN_PACKET_SIZE;
|
||||
i += 10) {
|
||||
Name prefix("/to/trim");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2012-2019 University of California, Los Angeles
|
||||
* Copyright (c) 2012-2022 University of California, Los Angeles
|
||||
*
|
||||
* This file is part of ChronoSync, synchronization library for distributed realtime
|
||||
* applications for NDN.
|
||||
@@ -148,17 +148,16 @@ BOOST_AUTO_TEST_CASE(DecodeEncode)
|
||||
0x04
|
||||
};
|
||||
|
||||
Block block(wire, sizeof(wire));
|
||||
Block block(wire);
|
||||
State state;
|
||||
BOOST_REQUIRE_NO_THROW(state.wireDecode(block));
|
||||
|
||||
BOOST_CHECK_EQUAL(state.getLeaves().size(), 2);
|
||||
LeafContainer::index<ordered>::type::iterator it = state.getLeaves().get<ordered>().begin();
|
||||
auto it = state.getLeaves().get<ordered>().begin();
|
||||
BOOST_CHECK_EQUAL((*it)->getSeq(), 14);
|
||||
it++;
|
||||
BOOST_CHECK_EQUAL((*it)->getSeq(), 4);
|
||||
|
||||
|
||||
State state2;
|
||||
|
||||
Name info1("/test/name");
|
||||
@@ -169,15 +168,9 @@ BOOST_AUTO_TEST_CASE(DecodeEncode)
|
||||
info2.appendNumber(1);
|
||||
state2.update(info2, 4);
|
||||
|
||||
BOOST_REQUIRE_NO_THROW(state2.wireEncode());
|
||||
Block block2 = state2.wireEncode();
|
||||
|
||||
BOOST_CHECK_EQUAL_COLLECTIONS(block.wire(),
|
||||
block.wire() + block.size(),
|
||||
block2.wire(),
|
||||
block2.wire() + block2.size());
|
||||
|
||||
BOOST_CHECK(*state.getRootDigest() == *state2.getRootDigest());
|
||||
BOOST_TEST(block == block2, boost::test_tools::per_element());
|
||||
BOOST_TEST(*state.getRootDigest() == *state2.getRootDigest(), boost::test_tools::per_element());
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(Combine)
|
||||
@@ -208,7 +201,7 @@ BOOST_AUTO_TEST_CASE(Combine)
|
||||
BOOST_CHECK_EQUAL(state1.getLeaves().size(), 2);
|
||||
BOOST_CHECK_EQUAL(state2.getLeaves().size(), 3);
|
||||
|
||||
LeafContainer::index<ordered>::type::iterator it = state2.getLeaves().get<ordered>().begin();
|
||||
auto it = state2.getLeaves().get<ordered>().begin();
|
||||
BOOST_CHECK_EQUAL((*it)->getSeq(), 4);
|
||||
it++;
|
||||
BOOST_CHECK_EQUAL((*it)->getSeq(), 15);
|
||||
|
||||
@@ -32,12 +32,12 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import os, sys, inspect
|
||||
|
||||
VERSION="2.0.21"
|
||||
REVISION="16cd196b0fc7b4eebe195ce20396f3d1"
|
||||
GIT="86eea788e3210f6681a827cda931089da04e06c1"
|
||||
VERSION="2.0.23"
|
||||
REVISION="7dbdd0b348178777c338c9a31f6218a5"
|
||||
GIT="c0d5ac00f8315586cdcb227cef500329f00aaa44"
|
||||
INSTALL=''
|
||||
C1='#2'
|
||||
C2='#/'
|
||||
C2='#1'
|
||||
C3='#-'
|
||||
cwd = os.getcwd()
|
||||
join = os.path.join
|
||||
@@ -168,6 +168,6 @@ if __name__ == '__main__':
|
||||
Scripting.waf_entry_point(cwd, VERSION, wafdir)
|
||||
|
||||
#==>
|
||||
#BZh91AY&SYTÛ¶ñ^îÿÿÿ°dPÿÿÿÿÿÿÿÿÿÿÿm ¨Â,#-40�E0m b¼÷)#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-¥÷Ó\ÊV¾æ»Yc½Û½Úl¥Cf–ÎÜ´ºûwY¬Û¬w¶U:fÖÉÖ»zt¾{vÚÖ%Ñܬš�<Ÿ|ûäÂolÙÝ·G»dÅ!ª;nìó½p¼›×»^ƒïa»<zÞ÷C¤ô:íõÛÚN&Y®mïCs‡]××q‰îg°½ì÷½÷Ûï¾Wo|m¶4Þo¯£Àocš½Ý;øà#-#-#-#-A7¸#->4=hà÷f€yà#/›»y€=µnÒw;Ðtô{¾ööµ°i #-i“Ó»]—^Š:º#-íÐØl…z4Uö°Q€P()T¥È2ª‚ŠÐ#/uèzz€UèuÀé£Ï¾íz÷»‰Øí]ŸuEnñÛÍÕ©3#/RTm‹L’íÍÍôö�®_wÞ^·»ØûîŽö¼öí´�mìó¹çxúÉí¾ûzó{;vÏnºûìÉlÛy5<ûž“íñßYêmËÇxíïpò€ èó²´#2AUR�{6›Ù¤ë]µÝ›µ™v={¼nï9Ö:Ô�´<¯yÈöìÌÔˆ¤§o9L§#-Q‰DP=Øg¡Ð½ÁÑOGo;¼g¼Ôö·½�Jªû�w¼Ï™—³"Š#-õ¥¦)kk_]K§Û;ã�W{�ïiæ}öö;ÁèV÷·µào}nw²·�Ãèi[Üð}ã¦}×sÔöãÝ�#-ºÓïgÓÛv©�p2_föº»ËO¾ß[Ç]\]Ë´ÕÍÒï®=§»W×7�$ç—Ü÷/nv¾ïuìç¼;½>ó«ì¥#/vt¦œîm>Úõ]>Ì9|'s|šÞ,({k’î¹ÏmÛãà×»*Ïvêfùîîún½ŽÙ±÷�¾Î^Û;›C–ÕK}Ý%ë�÷d{»Ýdòœwpç+µÓy#-Ý9^ózï˜}Þ#/:ÎRŠ(#2ìÊB.…˜Ùr‚¶ZÖÛggCêÜ®—BAï¹›±:UÃcÛBW]²¼¼{e"ÝvöÔƒ»æuÝ�#-#-mìë´€‹Ðöósr;¼ívZªKW¶l¾Ýæiîkbn»ÜÙnQêæäTôévÁO³:ù8ön�½515ÇDBÞ²“¼^ìyîú}íïq¸ø +™Jó[ž�Aí›Ö�§:¤žG¤›{+¡Ï¶â>ë}‡r[ºu½Ã½î^Õçm¬Wۃã»��zvL§�ÙÎǦ–›j[[(z/wéÞÞL£>¼{àíºè5k ¢qòίCU™Â÷žûß}µ>sì@UïjáUG9J[×y�{º8îõ\î.0©Úfì*Í7׃٫6½·m�}µ—a½ï}ÏwŸU»�ÒTËJ½ÎtiwXÒîšô÷Zí‡4ð\º ƒt8éÇ{¼»¾µ¶¾o iè°ú+é˜=À#-9W“Wn¬û¬v{€:¢�¶¥Ú×{Þ»Û#-ì^Úqo+¶çwWLX½·ë{¤lغܻ¤¨¡Œm¦ÙÖ•Ùm— õÆ}Ï»ÇvÜ}¥½1{Xì÷zͪæ¾ûxø‡½ó¾ë\ÀžÇÏFôÇlC&NëîñÛÍÁ¡mqïsîï-½Þ÷¼ó¸ôÖ^ù÷;/²µ�ÝݸÖókíﯓàkSå_,ᦈ#-€#-&€#CA0 ¡¡0‰äBO#/¨ÈQ z@òGµ4Ÿª M@�#-š¥<&1&FÑOÒFÒPÈF™#-#-#-#-#-#- &A2a4§â‰?#2›ÒŸéSñ=Q=OQ£j=zž“@Ð4#-#-#-#-OT¤ˆA4ôÊ1)æ£ÑGêƒF'êž�P#-#/šƒÔ4M#-#-#-#-D#-M#-€&™4ÔÍ551‰¦ ¡3I�š@#-#-#-€$ÔD ˆ4h�4Õ3)õQè�({I¨ÓOSÔ#-h#- #->_ÿIþ�U¥sùñʵ;µÛöª´ó4™¨3ãU§bB˜“Td` ˆ*%@@|–"Qú/Óø¨ý?¨»ýTøØ xƒ50èµ+,S¾šSTboéêê`‰þ£_#ývos2ìÀkWdD$ AÔÔ] ÔDd‘ÊÞd¾*ꉗŽqs…OˆW4]Z¬aâí•FQ1‰Ãâ1wŒ(˜‹˜¸Ça†ñåøúˆVâ#2‘V#2F @¨€‘EF1E$E@A@n#-�TZŠ”å,¬‰"Asha@0Š�#ŒQBÀ$Dl@„×çUºm¯-kim©Wt[н¦ÔUUo}¶µµLÉ�²Q™¨išlˆ £ŠJ�´LÍB%Œ€MJQ¥ÛI°¢f�2M£%©¨Õ…´f’ɤˆÑ-†£‰´¦‚@#/£RƆ˜²¦Ñ¢)6KE¨Š–ZSKh�ˆYi#/š ƒ(ÌÌcRF£Qj“A¥6C¡51¤ L4Ye¤c)M£SM‘-¦ÛYjÚ4ÌIc3&d&ˆ“Y6Óm¦›@š’�”–šØËSm™²–“$ÌE@dY14Y( ¦E"FЈTY¤m˜#/X6)*a¥DAR˜Œ„($D– Z’FÔ‰��,DÛ3C$‰ŠP‘†d²²Á™‰4–F"–MdØØÑb‰…H²C%”„�Ji‚lII‘FQ&ŒšL˜�T”iˆÒH�ScD‘b(™”´‚)˜&ƲC6"LSC3`˜X�i6%•„"À‰%&Æ¢"KIE$IQ "Q ŠEP`&d”Â0™Be$¤ÔY›5„�&¤‰&!–”ÙB$‹%±&,³(¤lÉ(›)‘±6&DRŒÙ‚eSLI²”†ÍE€²A¦šˆÔ¬–HØ¢QHLŠi& š�†Í2�&! &¤–Q”Ôi3HÚ("šh¢kP,&YA¤²2‹%&DÐM2‘*4f6”)1¨6ÄÊA! "“1�F4,�Ë ŠÙ&TÌÕ˜£l¥±(‰™#/H¦!HŒØÐ¡YM$QF¤É&ÉØÆJšF¦h±b2’™˜²2³i„¬D`ˆ¢JM52i™!Œ¢)#/š"¦ÅjT¥%4R#&2dSi#2,‘ŠQ”�¤E*ŠI1$šShÒj4‰4ÆÀ˜Œh&Ti¦DÚ#/ƒ,„Òe‹DÈY‘¦ÉJb”D!f™ k6lmd°$4–Ld5EPZ XR$Ècc1 Â2ƒRXÔY¤J&ŒE©M(Z˜hI™IŠ$2ɲ#)‚E,Ñ¥1„5„²e"$4J5µ£ÊS4e214¢’fDEh5)¶,Ñf)4Œ¡,²¦Íjeal£Sb!J"i�!)µüV×D%MR"ÛE؊بÙ2”ÓQJ’hÐÒÒ£a$ÔmdF†™Œ£$l¦T‘lˆ33L¶Kh£’–£j)FM0ššÌX°±©2ÒÌ™2¤Ú#2�•i*l¡²e‘TªY*aM›ŒÍ[,ˆ“L¬‰S,¦ÖJ²ÙJSL‹l�’‘µ)¬±%¤2RÔZ ªŒHj5hÉPQU“Y(Ú¢±QR%Ñ4DÉbÄZ1bµ´mc`-&L(ÁU¦QH&�ÈZdšV–Ä[6˜šÆ-’,m¢Z©kYb¡�™LÔµ“D•#4ÚFÅ’+jU›c¦Ò©e*e–©¤DkiT²&RÔÔѱhIL¦²Å†Ë&²²ÈVË1BAC*4‘!cDX°Í&"Dˆm„Æ!KhÕ @„¨¡’ÔVI¦�“&’‹" ²Å"›)FÈŠË ‘Le3…%4ÍQh´É ‘›M¤Å�±²Â)¦@Ä…ÑIE†˜’2j‰#/�ƒ &j(Ñ%2)F‚Ë(¡*`�Li„¥LÙ!5Œ„FfÔe(Ù”’Q�4d)YKb"˜m&ˆÆ¤Ù,"‚ÉXBŒ–ІbM,ÊTÊJYJÌ2V0‚ÍH؆5"Ôj�šÑš"¡£R”›#/1RÆÙ”–£@‘�“ LdblIRT™BŠ”Ó$…&k Jj+Ù†Í%“c4š,lÄM4£%¦FÕ‘hTÍ2–H’l£0D2hªih�¬Òl”Ä,LDÒRBAh´[ Q¨ÔQŠÆ-–ÃI†’M#2L�ŒRˆ#b��-f›C2ˆ6*2FÉK)*dE´mƨÕh¡2ÍQAb‚ 5&¨Ô0Ä,#¥(mch4¦™d(£D‘TÉ-F¨±#)[dT¢¨Ö4˜",š"™”-J)ÉD•6%2DjÁ¢¦E‹%FÑ…1f”[&Jŵ¤Å%e6Ȗɱ´4J’S ÊTX@�lll”lš$Äb6ÉŠI˜ Õ™0h!Q¥6fÄÄSXÕ2²k24…4“QAQDÓjJŲ’XÙ1h �&’µ"4ZYhÚj$´Z¢¬e(ÚMlˆ!Tm�IEŠE4&E23#1¦¤F%#/LÙ&kDlU%‹hÔ•,«&´LÚ�1lj £cc$UE2©¥XÚ6��¶1mI˜ÊQ f²±-F+iQµ´©QJV”f*šB(4X"J�&ØÖ,Ê’+I[M²“+F�bbÑI�F¶[V)*Q¨`!£FÅ4“jaŒ“mbÛ™«hƵ–’¦†ZÙK&Úš›d-©4Õ‰£(¢#FFÒJ(6ÍI©™›,¨Š*$Ä’e$ÈŒŒFB6Éme¶EÿƒÄÿ} èš?ÁXf³ô#?Ï£¥†ØJ0åÛ•üÅò9ì¿“�wÅ[›û<½*#/MŸ4ç®Ûüï;Ó›ø?ƒ¯Kze7q˨ÿ]òeŇõÏôüK�Õ‡~…rÿ©Zà#2dAE‡G±.)$‘#/·¹‰ÃåÚÑ9þJ¤³ýAŸüÿZ?é$”)k•Ä^ÊpVP±ˆ¾§4ÃýkÜàóJ´›i×çˆã}�#2ç2¡‘úXwf¬ZvÄä�ò×õ0ÕJ"†É8¡·'%ˆƒüµ»fÍIÂD##1�$v—l‰³1¢#/�Í¢:>MvNóºBczåÞž•z—�rÎw,¿�ן�Ög5r 6#2…1š¼Y¢eS³\Ê*S I’$b„ÞíºP®‘€‰�h”…ãλPËâܲ3znhÐl‚ÁS‹&*�î\r¿ö,°þwp̦0Q`¤whR˜nÂÆnX_wµÊKb1ŠOËü=xö|íÜñzf´µÕ±S)´)NþY*Ì�Á&Ön|9���&ÄóU&xA(ñý›—(?àv¡brwBØ0¡ÂiX¯Ûþjí£-˜ðžË@æÌ’òÝÉA %kìQáyÜ–íÞw^QŽr車esn–CQW6éçqllGÀ£q„¶A`¢€«uP<hø!kë[‘L¯‹‘m�Ë�þëWçxë#Q¶~|("!ãã˜Añ´òeˆŒÑ0å�ÕAbÂz®¤4råÑ#-)i#/§!7Ž0mxNwDFÔ£¼W7º¹£Pq5×+¼îÆå+—2Q—]ÒHç2>kíòIa�?ìê’œ²–A¶›öB$ÆÑ�#2hg†ØË��ËV,öQJ>´š~ÆŒi[v—_'³2<PD¯õQIº4Áj°T?І�>¼J6:jÀ\$¥‘7£þRÁ½8&V¾Û%AÆgØ¢…2Ia;•ù²6 öWÄÈê/eÞË\’(3)¡øµ"¢…+ö¼~û,ò>ü)Äruj³oQ�ß#/wE¦m„e#/¿ÂdÔ‚™ç™×¶b²àþN ø2�S“QJ|:ý—èç¥ð0{S·v·NM|ª² âÕÊßDlònß}|—·»´Kn'¹™HÙäÕqÑ?l wÛe+Zie0):4¨ôRÄGçxûŽ*uW,MùqY„�¿µ21¤Úy"¾ÖP¯¼&ŸGXYc�Ô·ü¬=Y4Ø£ƒÇó�a™1Kèë¯Öë£f{ß›«Èæ¶Ä^ˆ�ŒJDѧF^(q…V å DÇ•J½´¬l|+ûÝ”euâ»EEE¼nY5ÆÕÌ�ÿ‡ì«X>#/¡^41Xý¾?ÉaÙš"‘ª L‚#2Å^›EÈa„EF1‰ME'ûr»ÝÕ[¦á¤”ŠwÝbhœ®²”™œ¥*�5ËEl^»íÞ½^D¥Y*×rÅ¢¿¥–ëÝØûzãE ¾~½þ·Š{÷tuÌlj6M¾gÝoÔK}n�,ø/»æÆ,žÝóL—Í‘dDiGÜD«ë�åÌ Â#™lÕŸrI„B>¶£éD•V"Â#"‡Z 6vº’W=ü¼ôë,±®h×Áão:¹9tÇ!8¶‘;jå<(šº<·J)”"’ê)Ù¥®úµ‘¿¦O#/#2]ü+)ÉË/N뼦5„Ô_5×Eñká+ÅðrÓ£áxLC%¡GîŠ4whŒ[bÓV¾ÖYz\(E;(©òB¸ñ°¶*ŠÄêÃÍ–±ä�¥ÑÒŠœ�£Â©æLine truncated
|
||||
#BZh91AY&SY1ÏÎêa&ÿÿÿ°#-Pÿÿÿÿÿÿÿÿÿÿÿe¨(Â,€0�M0í„b<÷{eЀ#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-é¼:æÛKVFv#2J6ÛgÛ»tÍ6›[6Æè×M¶m’Fú;�}ÛÝ]]ÛkZ¥ÛºÊîßO[{é÷Þ×îÙ³»n�{nϨhÝ·eîôðÞîR=8šöÃÞÆvÎë¥�»ç{¦2͹Ý÷ÁÜû¡×kCM±Ûï¾û|:[Åð6Þopé�Ⱦîõ–™ã#-€ÛÐÐOc@ôQÓ€#éè(óÁÑÝ�Û`m뽤ÙÐtß}¯5°i #-çuÝÝ»ÑG«®š¢½6À{`)�zÕ¶SJ‡#-¤@E*R€Ø9#2$Š#-P:4UZ[JzàºÔ{ßG¯zéö°÷«Ù½±Þ™^÷ŽÞnªÉ˜j¢£lZe³Jîk¯¦½›G¾÷O#-Û½íže[�Þ¸¼õ·g]w½qRI®íom¦îö÷{{çßOeweöñó½â__=ææÞ^öÙïÞ÷= Ðz:0µ %¤hYZ÷k'v{›½�[^{nÝåÇ`СéxѬ6ËZödTS½Ü#-( Ì—¬USÐx#1e…äÝ×S¢ö{kq©Q}À»ïkß>ï3ï»Ò‰#-#-Ö–˜£muÔº}ö{à;ØÛ¾]yÞèmÊà=}»�ì/zÜ¡¶é÷}|+Þ/´Í´uq×§ o®q»+QÁ§mŸl°¼[¾vúó»¶ì-Óºs]ËmÓ»Û̓ÉÏ/½ï{™Ë»ï{¯n^ðÜc¾öå}°ä¶j�uä:>“aOÓÑň”zi¦oqÞÛ·ÇÀSkÑÆ{´äß=Íõç}±ßfÜ÷·o¹åëÙq1÷·WÞî½l¶úÉ^ŽÏ펯0>Üž£O�˜#-}«—·—§]÷¼Ø}Ûã×¥x¨$ Žš#2’–�H›ºÐ\�LËk7k§CêÝ.§BAï1ÄîÕ:UÞ˜nW]š¼Þ=æ¡]ï-í#Bëf½™Þ#-#-ïwyD#-#-º/z¹r;¼ì½™ê#6î}ï{éîŒíïjwŸw¥ÌçFné;HÖ{Þz¯ŸgÓéñ}wRSÕi›tì0}3ÒoD—3Þ½¹÷{׺k|[D²ÚéÊf÷zQr½]´žº]³<ÛÙÕ}½ãÇÞ²÷w½îa›6ã{Üsîéï^÷»×u·qñØôÖÞàÆíÇYë¢ÄƒjVP{:we]×·”Ž^õìxàWÛeW�‹t½jÖÆã·›Ó¹z®æ÷T#-Š4Úö΢cÝí·¶mÞ÷{œ�w:8;¶ï\;�x§´õ·u©¾öyÍŒ««ġ}ï¶ß^åózÐê´Ðtg¸Ð§[v±©Ýµzó£»iÎ�‚íÕ¡ÇN{×yw|Úû·»Ð”#-9fÕµÀ#-Ž×•yí¯¾Ïq€7Ø•#2´Z÷HVöêÒ¨Ìáݜۜ©†ó{·¯4ŽÝm»L4€U;®Û�ÛNìê“¥Û×#1î3šXÛÓ½1{Z»o^ƒë;=ö÷WÞÞ¯ˆ{Ï»oºÌ îçÏF¢�7>~Ü^öÞÆ»užû¹÷Îêy7ß;¾í¶•”wwÛ�OŠ»¾•ã¼£M_-¼]ÃM&@#-@ÐÐ&F†„É£C@M?Ê4§¨ô�Ò€ƒOSAä™ˆÊ M@�#-� ˆL�C$d“�é�#-#-#-#-#- ˆ‚ÐÒbh2i15)ú›*yOÒžÔÚ)äÔõjŸ¤€Ú™#-#-#-#-#-#- =R’!šh&ÒbzŠ{CJzz ÐhÍCCÔ@#-ÐòG¨h#-#-#-#-#-"HBh#-Ó@Fši1ˆÓÓM=Õ4#1#-#-4#-21#-“Q@@#-�¡‘ŠzTü)šeO)ú“ôž¦PdÐ#-@#-#-Ëÿéþ…U®Ý/èÇ5µ+õê´ó1$Ø|jµÝ¦&FL›F™(¢T$GÁb#-Å�äçß÷Çåø¹wtö+±@ñå3S’µ+¾2g÷0Ô.o#ãcÉiwþÁÓä™/ŠOÌj»¢! �®ÃR™º† ˆÝ0Ð&d†Ç)Üæªd™x»¹Ê§Ä+š.V0ñvʱ5œ>#xÄJˆšÄ@ZxâXD‡æßF串p ©`¤`#2�Z+mb¶³6¶‹mlU±€Ià E¨¡:N’À’$F†$r€¨Xˆ�ˆ �‰íŠ”EKŠAP€U 2‚(HŠ ’ª‹S2d,”fjf›"hÁ"’£m3P‰c R”iE6Òl(™ L“A(Éjj5FÁ¡m¤²i"4KD!¨ÉH›Jh$#-Ú5,h`i‹*m"“d´Zˆ¡)e¦š[DBËHlÐLFfc’5‹Pdš#1)²E ©�%a¢Ë-#Jmšl‰m6ÚËVѦbK™3!4D˜2ɶ›m4ÚÔ”l¤´ÖÆZ›lÍ”´™&b(*"Íi‰¢ÉE2(Ù6„B¢Í#h¤Àh¨�BÁ±I³Í*"#2”Äb6!PH‰,@´2#$�©!Xˆ!¶f†I¡#È)eeƒ3 i,ŒE,šÉ±±¢Å²,�Ée!#FÒš`›RdQ”I£&†“&$%D¢4’dØÑ$XŠ&e- Šf Q¬�͈“ÐÌØ&#ZM€Iea°"II±¨ˆ’ÒX ¤‰*!$J4H¢`ŠÃ!Œ’˜F(L¤”š‹3cF°�RjH’b iM�$"H²[bË2ŠFÌ’‰²™3bdE(Í‘˜&U4Ä�‹)HlÔX$i¡±ˆ�JÉd�Š%„Ȧ’b ©lÓ XÒb’jIeA�F“4�¢€‚)¦Š&µÀbe”M‘�ŒY)2&‚i”‰Q£0™´¡I�A°F&R ™Œ‚1`‰d†XLPFÉ2¦f¬Åe-‰DLÈjE1#2DfÆ…#2ÊT‘E"“$›$cc*i™¢ÅˆÊHRf`RÈÊͦ؈ÁD”šjdÓ2#2CDR4EMŠ,Ô©JJh¤6FLdȦÒY#£)!HŠ,U’h’M)´i5DŠc`LF4*4Ó"m�ŒÁ–Bi2ŒE�"d,È‚Sd¥1J"³L„µ›66²X’K&2¢¨* XR$Ècc1 Â2ƒRXÔY¤J&ŒE©M(Z˜hI™IŠ$2ɲ#)‚E,Ñ¥1„5„²e"$4J5µ£ÊS4e214¢’fDEh5)¶,Ñf)4Œ¡,²¦ÍQi•…²ŒHQMˆ…(‰¤B4„¦×çmtBTÕ" Œ1´Q�ŠØŠ�“)M5©&�#1-!j6²MFÖDa¨i˜Ê2FÊ`%Iȃ134Ëd¶Š1))j6¢�´dÓ ©¬Å‹�S-,É�•&ÐTl«HÑSe“,Š¥RÉS#2lØÌfjØÑdElšedJ™e6²U–ÊR–d[dh”�¨±Me‰-!’–¢ÕTbCQ«FJ‚�VMd£jŠÅEH”kDÑ$m‹´bÅj6hÚÆÀZL˜Q‚ªL¢�M1�´É4-ˆ¶4m15Œ[$XÛDµRÖ²ÅC!2™©k&‰*F$"i´�‹$VÔ«6Æ)M¥RÊTË,+SHˆÖÒ©dL¥©©£bÐ’™Me‹#1–Mee�–b„‚†Ti"Bƈ±ašLD‰Ú#1 ŒB–Ѫ� QC&¨¬“M&M%DeŠE6R�‘–A"˜Êf%#2J6iš ¢Ñi’#6›IŠ#cd)„SL�‰#21¢’‹#11$dÔ#!4LÔQ¢JdR�–P5BTÀ4˜³ J™²Bj-"ŒÍ¨ÊQ³)$£ hÈR²–ÄE0ÚM�I²XE’,°…-4)Äš4Y”©””²•˜d¬a–,‘±jE¨Õ5£4ECF¥)6b¥�³)-F�#!&@˜È4ÄØ’¤©2…)¦6I‰šÂRšŠÁ¶a³IdØÍ&‹1M(Éi‘µdFš3D¥…$„(ʆM¦‘±FˆÍ&ÉLBÄÄM%$$‹E°•�E¬bÑ™l4˜i$СdÈØÅ(‚6(ØÐVi±d3(ƒb£$l”²’¦D[FЬj�Q&Š,Õ( “Rj�A“BÂ1ªR†Ö6ƒJi–BŠ4IL’Ñj‹b2•¶EJ*‹cI‚"É¢)™BÔ¢�Ì”ISbQ*ÔF¬*dlY5FÅšQl™+Ö“•”Û"[&ÆÐÑ*ILƒ)Qa`ØØÙ(Ù4IˆÄm’$5“0A«2`ÐB£Jl͉ˆ¦±ª*edÛ24…4“QAQD¡jJŲ’XÙ1h �&’µ"4ZYhÚj$´Z¢¬e(ÚMlˆ!j6Ƥ¢Å"š"™‘˜ÓR#†¦l“5¢6*’Å´jJ–U“Z&mH¶5Q±±’*¢™TÒ¬mFÆÛI˜ÊQ f²±-F+iQµ´©QJV”f*¦�‚Ê�’£I¶5‹2¤ŠÒVÅ“l¤ÊÑ£X†˜´RcFÑ«m–ÕŠDÊ…DÄ”F*HhѱM$Ú˜c$ÛFضŦjÚ1e¤©¡–¶Rɶ¦¦ÙjM5bhÊ(ˆÑ‘´’Š#1†³Rjo;vl³QTI‰$ÊI‘Œ„m’Ú,ËlÇñþ§ñ{õOD§ü&k7þ§)þ�*˜miEâƒüÌ´›»¿Ø÷_ÖãÝòVæþÏ/JƒF“gÂs×mü^v7§7ðÿ^–ôÊnã—uý>mæ1þ‡üýE”Î'VE7Ú³¸K9aÆ,K†#2I$mîAú??èù^¯ùdgý÷˯íÿ'…ãým¶šðÉŒò°ÏXHÄ_74Ñþ‹ÜàôJ°ÃÜuùâ8ßgB¹ÁŒ¨j?e‡vjŧlNIß-¤I±°å‹²rrXˆ?¾·lÙ©8QhZ!II„ #´»dM˜É�l~�ÑÆ47ÉÞwHLo\»ÓÒ¯Rñ®YÎå—ðºóñºÌæ®A&ÃáÚæHš¼Y¢eS³\ÊÅR˜JH¤‘#M‰±tµØ#-ïc38‚Œ#2ì»PËâܲ3znhÐl‘¤AL^,0˜ª·¹qÊÿزÃüw }Û™¢4Yòt\×ɯ&�°¾¾×)-ˆÆ)>ßãëdzéo¾ú_VkA;][E0›B‘dïå’¬Çö4DÚÍÏ—1°1¤Øžj¤Ï%?͹rûÃÔ,NNè[†"M+â{¿ÏžÍÍ—7ØíbåRSo×´1†#-Þß Öló¹6íÞw^ls—EÜS+›t²Š¹·^;llOÃuòšÞ6‹Pkíî§Ó×ì+Åö-ȦWÅȶÆåÈu«öžž.nmŸŸ¯…Bd<|s>6žL±›f=4ïv�hÖý_;kÝìö{¶Û”›Ft#ñÆ#1¯ ÎãÂHˆÃz”eaÛ®hÔMuÊï;±¹GJåÌ”e×t’9Ì�¢üž[oW®¯õ¯ïîòø®·Åt1iïuÛ#^¥s¤ðÛq¢rjÅ‚¾Ê)GÖ“OáhÆ•·iuõ=™�Ñâ‚%ºŠMÙOM,µX#2€Ž*ìC#-Èn�ŸÒš° )p3ƾì@ãš:?-6rÛfL�ÑuBØYô¤[ªdlì§‘‘Ó^Ë~+’(2)›ðiÅDÊ1pq-kÇñ²Ï#îœG'V«6ñ5Ýð×£6Òê&É/�zî¸3(fV9ã=¯;PW}|YH)ɨ¥>~ëôsÒø=ÉÛ»[§&¾ª…$EQ´�HNBÈØÊ�ɺgF ¤Ñ£B¼“R�Ym6GÆ‚¯J:[2Å”À¤èÒ wÑKg�ãî~x©Õ\²/]hÙ˜I‹ïËPã#M§’+îe#2ûÂiÝîÅ*¢�Q¥]ÿ•ÜTÔÐÅþƈ¬b1A9ÑG•,Œt>!¾klJÕêˆØÁ0T¡TMteâ‡hUbZLq©W¶•ƒÍ•¯…7e]iB¤TTQW<oMFñµsmÃ÷Uˆ,�Œ†P¯#2¬~ž?ÉaÙž±gunm(`ú¾?ÍókÓYÆ1)¨¤øwnW{º«tÝ9¥"�÷@Xš'+¬¥&D§)J¢#2s\´VÅë¿&õêò!¥Y*×rÅ¢¿z[¯wcòuÆ5E ¾ž½þ·Š{÷tuÌlj6M¾‡ÖÞ1¨4–û4Yð__žò>¬žíóL—Í‘dDiGÜD«ìˆïàPaŒLÖ¶jϽ$Â![Qô¢Jˆ+a‘CP;]I+žö^e–5Íø<mçW'.˜ånα3Ò!ø�¬Ï¢×ÏFB56+%Jvik¾doåV§†….þ”äå—§u–k ¨¾‹®‹â×ÂW‹à夔w…át†KB�ßhîѸbÓV¾Ô¥ép¡ì¢§Ô…qãalU‰Õ‡›-b#ÉLine truncated
|
||||
#<==
|
||||
#-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEECzlystnjLqtCPS4PIr4MYv+/pUgFAl+oTtQACgkQIr4MYv+/\npUhzmhAAqNeBRQuz2Z2EvWjxH/EARVKUe499ZPLsiJpl79NX3r0LWeLjf1kNAdxi\n7pR36XY8RdRwQaqNQiJ7UWzKRYXGCix71gaDyq/Qk6eZko6ts3DdicG8m12i7abi\navAtSgKzwE7o4rMqKG3iZe4AXxhCtijjIZY8Kli22XNCpY0YqUjXSNYPlhsZBWrK\nkKSmfcYxqHGrH6AKGwEJV/GbLIivYCQi6KWFfJwSOcid+479EXBuMiK8piVl6uhs\nvWGI/FcbR7cWA46Mkw7JGqJcdoyX9r8fHXrkbdIrojvQ1b4YdALZvgG6jzENCD8s\nk1KPQw+nLcC5Bax9aNO8QEn2O7vkQ5OAq19RV7ezaup2ptwe2XLuolkD3TAXr+jz\njDp0Ktc24IuVmArOyz6KZXQSIxKN3vZ8NJfdRD112/HBO/gxuZCdRQgD4c8WX9EV\nCbgrgxy02pKQdvTva/ffNgFBDOY7esRhrLLzH8lIo/556aAx6NIUy8ekAXTaFfKL\n+UenHhsYzuemapaTMhbBjqzAeiczB/fhWRr9NUajQ2x3+NDJ52/V40/fnZvYbkRx\nmvw28wCXslOh2kxQM7GgLfke8rmHN9Kek6SwHJx7RQ5OnCMKPHAo2Vb/VMx01qX4\nWeNIX9df34mD+Zy+iqJ5neXERGARPAIPeb3xYhCemgyRdWEUwvc=\n=/5DR\n-----END PGP SIGNATURE-----\n
|
||||
#-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEECzlystnjLqtCPS4PIr4MYv+/pUgFAmG5Pz0ACgkQIr4MYv+/\npUiZBA/+PH1uI+xWcT67oY7I5kcHxmriqgaV2vskG9AdNzPIRgJ24xYNR6KcZVDD\nrPiKjAfo2YgdLyglXxYttEg7t1QTXZDLnEf/19AoCwyQDqf+GstOtmEEYVRluavW\nwykb6FfR/ivth3UZ9Qb2ZREIQq3CpKfoz+IcHTECrGTbQEmUtR9pBTxhne2K0Bgo\nTz+aIIMePIVBn/8rRwja59D1P4PabvkaSGwyGtX2wdeDIhJnN3Ak8RoBw/xm+rpG\nCyZVLks6m2LFqN8MvJacytKlaNTgGN+QIjYlEDqQispyxi2TKOMl9hThQ8ZrYByl\nHaLnVGJgqJJpvnsymUORRRUtNYrKw+tIpizwjCltLBf1eFk2M62qCZaNr3aRvKKz\n9X1i4tQFKqSfZeKxeAo6C/AnnTQ5y4FWvkjDveZZmAe5x9LCoJ+5DjXQaEBC9X/x\nl7RhvMnrXF5Bhom67DaHaemc9Ul2qlPD8Q2LjgQbis74TCGtXtb2dWorGtsVtOMt\nSc/9hAizDp2Hw0O0d+dqFHJ45VrVYgk0tmIwOQMAeSGKtqggzajkfxUQIDGUMbRR\n43FYzxp8YcdVtQ0XVsj0/8VejiDct5YNSJLY2glxhBt6yHrNHdxBCgP5eOggErOL\nSs8mHWtqaglcLRchx6+6HgfemqCiERxmZAvTtzsWW/0eBYRbn6Q=\n=BMpA\n-----END PGP SIGNATURE-----\n
|
||||
Reference in new issue
Block a user