From 4ea9706c6f34bc29e527443a4de455ec2e8b83ed Mon Sep 17 00:00:00 2001 From: Guilherme Maciel Ferreira Date: Mon, 14 Feb 2011 09:09:40 +0100 Subject: [PATCH] Bring aboard first version of ping check project - cmake project files - UML diagram for Visual Paradigm - network management using boost::asio --- .gitignore | 8 +++ CMakeLists.txt | 11 ++++ src/CMakeLists.txt | 22 ++++++++ src/icmp_header.cpp | 77 +++++++++++++++++++++++++++++ src/icmp_header.hpp | 91 ++++++++++++++++++++++++++++++++++ src/ipv4_header.cpp | 99 +++++++++++++++++++++++++++++++++++++ src/ipv4_header.hpp | 68 +++++++++++++++++++++++++ src/main.cpp | 25 +++++++++ src/pinger.cpp | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/pinger.hpp | 41 +++++++++++++++ uml/libpingcheck.vpp | Bin 0 -> 134301 bytes 11 files changed, 575 insertions(+), 0 deletions(-) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 src/icmp_header.cpp create mode 100644 src/icmp_header.hpp create mode 100644 src/ipv4_header.cpp create mode 100644 src/ipv4_header.hpp create mode 100644 src/main.cpp create mode 100644 src/pinger.cpp create mode 100644 src/pinger.hpp create mode 100644 uml/libpingcheck.vpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f2ed52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# cmake out-of-source build directory +build + +# eclipse IDE project files and directories +Debug +.cproject +.project +.directory diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e08a828 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required( VERSION 2.6 ) + +project( pinger CXX ) + +# set the directory where the executable will be placed +set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) + +# set the directory where the make install places the executable +#set( CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR} ) + +add_subdirectory( src ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..9298f6b --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,22 @@ +set( SOURCES + icmp_header.cpp + ipv4_header.cpp + pinger.cpp + main.cpp +) + +set( TARGET pinger ) + +set( Boost_USE_STATIC_LIBS ON ) +set( Boost_USE_MULTITHREADED ON ) +set( Boost_USE_STATIC_RUNTIME OFF ) +find_package( Boost 1.36.0 REQUIRED COMPONENTS filesystem ) + +include_directories( ${Boost_INCLUDE_DIRS} ) +add_executable( ${TARGET} ${SOURCES} ) +target_link_libraries( ${TARGET} ${Boost_LIBRARIES} ) + +install( + TARGETS ${TARGET} + DESTINATION . +) \ No newline at end of file diff --git a/src/icmp_header.cpp b/src/icmp_header.cpp new file mode 100644 index 0000000..4908ba7 --- /dev/null +++ b/src/icmp_header.cpp @@ -0,0 +1,77 @@ +#include "icmp_header.hpp" + +IcmpHeader::IcmpHeader() +{ + std::fill( m_rep, m_rep + sizeof(m_rep), 0 ); +} + +unsigned char IcmpHeader::type() const +{ + return m_rep[ 0 ]; +} + +unsigned char IcmpHeader::code() const +{ + return m_rep[ 1 ]; +} + +unsigned short IcmpHeader::checksum() const +{ + return decode( 2, 3 ); +} + +unsigned short IcmpHeader::identifier() const +{ + return decode( 4, 5 ); +} + +unsigned short IcmpHeader::sequence_number() const +{ + return decode( 6, 7 ); +} + +void IcmpHeader::type( unsigned char n ) +{ + m_rep[ 0 ] = n; +} + +void IcmpHeader::code( unsigned char n ) +{ + m_rep[ 1 ] = n; +} + +void IcmpHeader::checksum( unsigned short n ) +{ + encode( 2, 3, n ); +} + +void IcmpHeader::identifier( unsigned short n ) +{ + encode( 4, 5, n ); +} + +void IcmpHeader::sequence_number( unsigned short n ) +{ + encode( 6, 7, n ); +} + +std::istream& operator>>( std::istream& is, IcmpHeader& header ) +{ + return is.read( reinterpret_cast ( header.m_rep ), 8 ); +} + +std::ostream& operator<<( std::ostream& os, const IcmpHeader& header ) +{ + return os.write( reinterpret_cast ( header.m_rep ), 8 ); +} + +unsigned short IcmpHeader::decode( int a, int b ) const +{ + return (m_rep[ a ] << 8) + m_rep[ b ]; +} + +void IcmpHeader::encode( int a, int b, unsigned short n ) +{ + m_rep[ a ] = static_cast ( n >> 8 ); + m_rep[ b ] = static_cast ( n & 0xFF ); +} diff --git a/src/icmp_header.hpp b/src/icmp_header.hpp new file mode 100644 index 0000000..06adc4a --- /dev/null +++ b/src/icmp_header.hpp @@ -0,0 +1,91 @@ +#ifndef ICMP_HEADER_HPP +#define ICMP_HEADER_HPP + +#include +#include +#include + +// ICMP header format: +// +// 0 8 16 31 +// +---------------+---------------+------------------------------+ --- +// | | | | ^ +// | type | code | checksum | | +// | | | | | +// +---------------+---------------+------------------------------+ 8 bytes +// | | | | +// | identifier | sequence number | | +// | | | v +// +-------------------------------+------------------------------+ --- + +class IcmpHeader +{ +public: + enum IcmpType + { + EchoReply = 0, + DestinationUnreachable = 3, + SourceQuench = 4, + Redirect = 5, + EchoRequest = 8, + TimeExceeded = 11, + ParameterProblem = 12, + TimestampRequest = 13, + TimestampReply = 14, + InfoRequest = 15, + InfoReply = 16, + AddressRequest = 17, + AddressReply = 18 + }; + + IcmpHeader(); + + unsigned char type() const; + unsigned char code() const; + unsigned short checksum() const; + unsigned short identifier() const; + unsigned short sequence_number() const; + + void type( const unsigned char n ); + void code( const unsigned char n ); + void checksum( const unsigned short n ); + void identifier( const unsigned short n ); + void sequence_number( const unsigned short n ); + + friend std::istream& operator>>( + std::istream& is, + IcmpHeader& header ); + friend std::ostream& operator<<( + std::ostream& os, + const IcmpHeader& header ); + +private: + unsigned short decode( int a, int b ) const; + void encode( int a, int b, unsigned short n ); + + unsigned char m_rep[ 8 ]; +}; + +template + void compute_checksum( + IcmpHeader& header, + Iterator body_begin, + Iterator body_end ) + { + unsigned int sum = (header.type() << 8) + header.code() + + header.identifier() + header.sequence_number(); + + Iterator body_iter = body_begin; + while ( body_iter != body_end ) + { + sum += (static_cast ( *body_iter++ ) << 8); + if (body_iter != body_end) + sum += static_cast ( *body_iter++ ); + } + + sum = (sum >> 16) + (sum & 0xFFFF); + sum += (sum >> 16); + header.checksum( static_cast ( ~sum ) ); + } + +#endif // ICMP_HEADER_HPP diff --git a/src/ipv4_header.cpp b/src/ipv4_header.cpp new file mode 100644 index 0000000..c426505 --- /dev/null +++ b/src/ipv4_header.cpp @@ -0,0 +1,99 @@ +#include "ipv4_header.hpp" + +Ipv4Header::Ipv4Header() +{ + std::fill( m_rep, m_rep + sizeof(m_rep), 0 ); +} + +unsigned char Ipv4Header::version() const +{ + return (m_rep[ 0 ] >> 4) & 0xF; +} + +unsigned short Ipv4Header::header_length() const +{ + return (m_rep[ 0 ] & 0xF) * 4; +} + +unsigned char Ipv4Header::type_of_service() const +{ + return m_rep[ 1 ]; +} + +unsigned short Ipv4Header::total_length() const +{ + return decode( 2, 3 ); +} + +unsigned short Ipv4Header::identification() const +{ + return decode( 4, 5 ); +} + +bool Ipv4Header::dont_fragment() const +{ + return (m_rep[ 6 ] & 0x40) != 0; +} + +bool Ipv4Header::more_fragments() const +{ + return (m_rep[ 6 ] & 0x20) != 0; +} + +unsigned short Ipv4Header::fragment_offset() const +{ + return decode( 6, 7 ) & 0x1FFF; +} + +unsigned int Ipv4Header::time_to_live() const +{ + return m_rep[ 8 ]; +} + +unsigned char Ipv4Header::protocol() const +{ + return m_rep[ 9 ]; +} + +unsigned short Ipv4Header::header_checksum() const +{ + return decode( 10, 11 ); +} + +boost::asio::ip::address_v4 Ipv4Header::source_address() const +{ + boost::asio::ip::address_v4::bytes_type bytes = { { + m_rep[ 12 ], + m_rep[ 13 ], + m_rep[ 14 ], + m_rep[ 15 ] } }; + return boost::asio::ip::address_v4( bytes ); +} + +boost::asio::ip::address_v4 Ipv4Header::destination_address() const +{ + boost::asio::ip::address_v4::bytes_type bytes = { { + m_rep[ 16 ], + m_rep[ 17 ], + m_rep[ 18 ], + m_rep[ 19 ] } }; + return boost::asio::ip::address_v4( bytes ); +} + +std::istream& operator>>( std::istream& is, Ipv4Header& header ) +{ + is.read( reinterpret_cast ( header.m_rep ), 20 ); + if (header.version() != 4) + is.setstate( std::ios::failbit ); + std::streamsize options_length = header.header_length() - 20; + if (options_length < 0 || options_length > 40) + is.setstate( std::ios::failbit ); + else + is.read( reinterpret_cast ( header.m_rep ) + 20, options_length ); + return is; +} + +unsigned short Ipv4Header::decode( int a, int b ) const +{ + return (m_rep[ a ] << 8) + m_rep[ b ]; +} diff --git a/src/ipv4_header.hpp b/src/ipv4_header.hpp new file mode 100644 index 0000000..dd9fc6d --- /dev/null +++ b/src/ipv4_header.hpp @@ -0,0 +1,68 @@ +#ifndef IPV4_HEADER_HPP +#define IPV4_HEADER_HPP + +#include +#include + +// IPv4 header format: +// +// 0 8 16 31 +// +-------+-------+---------------+------------------------------+ --- +// | | | | | ^ +// |version|header | type of | total length in bytes | | +// | (4) | length| service | | | +// +-------+-------+---------------+-+-+-+------------------------+ | +// | | | | | | | +// | identification |0|D|M| fragment offset | | +// | | |F|F| | | +// +---------------+---------------+-+-+-+------------------------+ | +// | | | | | +// | time to live | protocol | header checksum | 20 bytes +// | | | | | +// +---------------+---------------+------------------------------+ | +// | | | +// | source IPv4 address | | +// | | | +// +--------------------------------------------------------------+ | +// | | | +// | destination IPv4 address | | +// | | v +// +--------------------------------------------------------------+ --- +// | | ^ +// | | | +// / options (if any) / 0 - 40 +// / / bytes +// | | | +// | | v +// +--------------------------------------------------------------+ --- + +class Ipv4Header +{ +public: + Ipv4Header(); + + unsigned char version() const; + unsigned short header_length() const; + unsigned char type_of_service() const; + unsigned short total_length() const; + unsigned short identification() const; + + bool dont_fragment() const; + bool more_fragments() const; + unsigned short fragment_offset() const; + unsigned int time_to_live() const; + unsigned char protocol() const; + unsigned short header_checksum() const; + + boost::asio::ip::address_v4 source_address() const; + boost::asio::ip::address_v4 destination_address() const; + + friend std::istream& operator>>( std::istream& is, Ipv4Header& header ); + +private: + unsigned short decode( int a, int b ) const; + + unsigned char m_rep[ 60 ]; +}; + +#endif // IPV4_HEADER_HPP diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..a5bbcd0 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,25 @@ +#include + +#include "pinger.hpp" + +int main( int argc, char* argv[] ) +{ + try + { + if (argc != 2) + { + std::cerr << "Usage: ping " << std::endl; + std::cerr << "(You may need to run this program as root.)" + << std::endl; + return 1; + } + + boost::asio::io_service io_service; + Pinger p( io_service, argv[ 1 ] ); + io_service.run(); + } + catch (std::exception& e) + { + std::cerr << "Exception: " << e.what() << std::endl; + } +} diff --git a/src/pinger.cpp b/src/pinger.cpp new file mode 100644 index 0000000..242cbd7 --- /dev/null +++ b/src/pinger.cpp @@ -0,0 +1,133 @@ +#include +#include +#include +#include + +#include +#include +#include + +#include "icmp_header.hpp" +#include "ipv4_header.hpp" +#include "pinger.hpp" + +//----------------------------------------------------------------------------- +// Pinger +//----------------------------------------------------------------------------- + +Pinger::Pinger( boost::asio::io_service& io_service, const char* destination ) : + m_resolver( io_service ), m_timer( io_service ), m_sequence_number( 0 ), + m_num_replies( 0 ), m_socket( io_service, icmp::v4() ) +{ + try + { + std::string ip = "172.16.1.149"; + uint32_t port = 21; + icmp::endpoint ep( address::from_string( ip ), port ); + m_socket.bind( ep ); + } + catch (boost::system::system_error &e) + { + std::cerr << "exception" << std::endl; + } + + icmp::resolver::query query( icmp::v4(), destination, "" ); + m_destination = *m_resolver.resolve( query ); + + start_send(); + start_receive(); +} + +Pinger::~Pinger() +{ +} + +void Pinger::start_send() +{ + std::string body( "ping message" ); + + // Create an ICMP header for an echo request. + IcmpHeader echo_request; + echo_request.type( IcmpHeader::EchoRequest ); + echo_request.code( 0 ); + echo_request.identifier( get_identifier() ); + m_sequence_number++; + echo_request.sequence_number( m_sequence_number ); + compute_checksum( echo_request, body.begin(), body.end() ); + + // Encode the request packet. + boost::asio::streambuf request_buffer; + std::ostream os( &request_buffer ); + os << echo_request << body; + + // Send the request. + m_time_sent = posix_time::microsec_clock::universal_time(); + m_socket.send_to( request_buffer.data(), m_destination ); + + // Wait up to five seconds for a reply. + m_num_replies = 0; + m_timer.expires_at( m_time_sent + posix_time::seconds( 5 ) ); + m_timer.async_wait( boost::bind( &Pinger::handle_timeout, this ) ); +} + +void Pinger::handle_timeout() +{ + if (m_num_replies == 0) + std::cout << "Request timed out" << std::endl; + + // Requests must be sent no less than one second apart. + m_timer.expires_at( m_time_sent + posix_time::seconds( 1 ) ); + m_timer.async_wait( boost::bind( &Pinger::start_send, this ) ); +} + +void Pinger::start_receive() +{ + // Discard any data already in the buffer. + m_reply_buffer.consume( m_reply_buffer.size() ); + + // Wait for a reply. We prepare the buffer to receive up to 64KB. + m_socket.async_receive( + m_reply_buffer.prepare( 65536 ), + boost::bind( &Pinger::handle_receive, this, _2 ) ); +} + +void Pinger::handle_receive( std::size_t length ) +{ + // The actual number of bytes received is committed to the buffer so that we + // can extract it using a std::istream object. + m_reply_buffer.commit( length ); + + // Decode the reply packet. + std::istream is( &m_reply_buffer ); + Ipv4Header ipv4_hdr; + IcmpHeader icmp_hdr; + is >> ipv4_hdr >> icmp_hdr; + + // We can receive all ICMP packets received by the host, so we need to + // filter out only the echo replies that match the our identifier and + // expected sequence number. + if (is && icmp_hdr.type() == IcmpHeader::EchoReply + && icmp_hdr.identifier() == get_identifier() + && icmp_hdr.sequence_number() == m_sequence_number) + { + // If this is the first reply, interrupt the five second timeout. + if (m_num_replies++ == 0) + m_timer.cancel(); + + // Print out some information about the reply packet. + posix_time::ptime now = posix_time::microsec_clock::universal_time(); + std::cout << length - ipv4_hdr.header_length() << " bytes from " + << ipv4_hdr.source_address() << ": icmp_seq=" + << icmp_hdr.sequence_number() << ", ttl=" + << ipv4_hdr.time_to_live() << ", time=" + << (now - m_time_sent).total_milliseconds() << " ms" + << std::endl; + } + + start_receive(); +} + +uint16_t Pinger::get_identifier() +{ + return static_cast ( ::getpid() ); +} diff --git a/src/pinger.hpp b/src/pinger.hpp new file mode 100644 index 0000000..bf1d8a4 --- /dev/null +++ b/src/pinger.hpp @@ -0,0 +1,41 @@ +#ifndef PINGER_HPP +#define PINGER_HPP + +#include + +using boost::asio::ip::address; +using boost::asio::ip::icmp; +using boost::asio::deadline_timer; + +namespace posix_time = boost::posix_time; + +//----------------------------------------------------------------------------- +// Pinger +//----------------------------------------------------------------------------- + +class Pinger +{ +public: + Pinger( boost::asio::io_service& io_service, const char* destination ); + virtual ~Pinger(); + +private: + void start_send(); + + void handle_timeout(); + void start_receive(); + void handle_receive( std::size_t length ); + + static uint16_t get_identifier(); + + icmp::resolver m_resolver; + icmp::endpoint m_destination; + icmp::socket m_socket; + deadline_timer m_timer; + uint16_t m_sequence_number; + posix_time::ptime m_time_sent; + boost::asio::streambuf m_reply_buffer; + std::size_t m_num_replies; +}; + +#endif /* PINGER_HPP */ diff --git a/uml/libpingcheck.vpp b/uml/libpingcheck.vpp new file mode 100644 index 0000000000000000000000000000000000000000..1cb081dc116686e66dbee1761fd16519eae8ab02 GIT binary patch literal 134301 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

Cqt8RDI6) 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

T%GdL3iarr(d(1o2GAl$xl>^qCP?N<>GFemyT-% zuY@6m2=J@XI8Zp{i}iGkygRocs@+_7iIiTut}#K8RtR+E@qC(6MP=5t?FG)1wPQR& z!&|wD<*@=KWGeZV!6In|qswBUS`DUKU|dyhn# zo?Pc|Ebzs>Ymqr6Fp~b*xmF}ewKvTEhR{~%Z0#I_IGJdVVm)FbD#mi=wjftPb*kTl z%dr3o+godk-X15kS%r|CDJ~#Zqv@#nZkI%T#HsQ`5U3`zj~=s=PQ(m$x)4WFd%q== zF-)Fe;4PWZ1+>vD#T1@6w*pCHJIg!i%#)Ou-mi#6K+mo{9uK8f>ic-J=)*(C0;0rl zO}V+s*IJq?PtsLvkBFXTiPxl|zUv|zc`jCyhW{=Pow3&%&!uDHQLos$B5o|I)2cqs zvlcIQLSk0GBpGo*i*2q>8x-VQ!$n9Y)X)^URqEVa*D4{&{gq!1v^|42{ zQu0SXWnWO}K)oPe%!Zt`r}l(!XAp&6^a5T`TqLhxQ#`heD^0^2%szzSkUO(UK37V8l6+z1QhWJeVAbw}YKugSa}-Q=@! zIPVQPt5h!=5I7W#`YB#)6~E~f#I?SL#I9R;+n#17NUun9FJ}bT$@0a*)|+5TU6YL^ zM|$tX#nF}4TaQVdUtTI7(-W80!z9B?iz9d%#goEJQsqib)!i3;awDf0gqb2r=FqlV z%!A1?GerD=eyD3N;%%_vPW#N|h=xGCTEPvKEeVp5+DR(~{VPu9_Vea;oAfi-Y^bAG zX|QmN-h>Gm9VHM*63IL{$Qd-o!7M{$iS_8|84Aqw5Gl$h%&!tug(yLxMc1haV=qiT zRSJp@LN7;-Z^~(((|jRK!@~23=$e~Ggb1>qiS^XI*r)j0%$sK(zg3FeD2a)xd^~3) zkDe!RL*>!3AnGGV!W@KRcH#wPVNSw1>X3ENggFx%?9J?=aW+_R)x5$Qw#W(g+DJBf$qJjp;8LKzn_vP z=H=q!@JMs3$L0Qmvqw%$%x25F2so9!dSMcGGjh_|YcEJ3*yha&Tl8{s!fx9MU(;KB z_%EU&6N7!)W1V};Q3zegyx%mO>0|3qZsr2n-uJISd(UYcS=df+LWYP?k#6!jL*F3J zn##jf(5Mw^+of8x!u;NaYitDifzQYd?_bNGzz+>6<_o%=BgtaRd~cjZCjWDSb`e#_ zv3Hr4cV{lu6=yukY00V~-V1)6H$eq57Rr17TDsXTC(w;Il*l1?@ztj%5w?OCLeCY4 z%68p|f5B5%kY&_1b9LnN=2oD6o#hm9S*fFNp_*+FHf;c%+JH$RR>y*E!m$fyIga*o zn((_eE>Tde3{((xhrb=wS6n`UbaDEe4mH2kYT_xyGr9_C7fZxEz3?9gC>xJxL=Q|q zf1jwM={;eVp@e>w;E09GW%lZ|%`qA2`^KKno@r{1OzefNO1u`>^ ziII!pD15vS*lnD^9RDV;^rlrz%FIH`V~pK&>7W}`#Jn~nhD5&7u|xx2lw`_-EWSm; z-gqv}_g=V1HWY1%ZXn&+4N5PvOs#)@SN(PEW>_h`2i+n@=p`I>q)5}L%3S!vx!CpC0+TZoh~(jR6H|4 z1->_zS3X7N))RQwWL22V7nMzd$RB4i;RTJ*?hvmn+*qFTo|?6Gf2r|6)L#^|D~Gjr zrMlH8g|;&`d(G48b_GAW_0#SJjH~fW;;MG(7FRh%IhEtt*IL{0W%IJ^`UCt08i-sa zj6Zx>@Hy(lGk3&|eB#z!>d%iuU+w1Y&Znh5kagN*I#zDqI{Hv>m2(?1+2g^AgQ(|m z0DJ>J-zy}CU@S2IlCf~K8j7({cH;-e!eY;BrD}vJbisrR_!g>;bFlcWt-g%|FcWHD zMsPq$4qV3-=#$fa_txcwhpN$Y77BlB5&NMR7K44r?R4&Fjr}n+GJPM$^)pJ3Ust(k z#^LI5kJEBudlzHigTsCGagB)5)=H$5w}=M21=Imcpxf&6^0RI1*OXvwaU4Ogp3^bkMvKspMU1tB-Fm zb<5d{3=}V-m=4&teCll83J)JA7GBOOv-{|e%Rprz=I#0T zVpku+g%|m5Sgb?LmYgl7G6rTnTmz`-ro*e)Lz`wp?>9R`IFH^$eWmH|YX8u5S9Voh z&_YQ%zvJQbDTZT7o>$s=sq#ChG#Fm%ZIx@E+zoqzykn%bWoo8TYr476`ChJ2e^vO^ zqq>3+RBjL}$-?!X;Gm%4=?z0M7q%malFU=T15DrHq;xAQi2@IQ3~vFr+@1|?R!q*{0?_s-P5#A=PQKN8gbA3GCnQ}XHkH=POlwL;jgJ$Oly9+hE=ihveW!s@Cd9>9(Y z0=f{dK_mUP5J)_rpdiIJ{o4S>SRJiOaAyJ-L;mh;;8-S>{Z@V$88JtA*>_`#fDL%I zUpSwDF~96W{KoRC8}Z2k_rdraXvQJ>;)JUexOl5SIk(rnLt|1`%V-Cx?(0%rU2??1^UN6VC_rcDIR)C z8Q=D~1u@`Bz_h7<+bP_TjwzU$kQ}^3qi>w4AIP*GBerMFfMGcTbK>FCfB;H(WUC54jM4b@8Gs(6 zQJnXD(;2WM@IYIBNw^cT0=jk_0Ky&Q46ri&$R1f+FIBLir>1UWf{$>QQTG<~pAhc8 z4ETcPmIHc!aKBHz;>*AJ@kCeXFfea$eKNxa9TGQIyy{wD-%g^K6QECG=j z$a#ikpJpwPm+rGq={M4Ya$CQ%PbIqNcNdFuoi&xXYcrpfU-s_3gQ-x(6J7g2%}{Fi zwzuM^3?UXD3E`;dW{h}TuR{4}w|jWHudo{Rd6j)=@kJqixrva%AWfA*N0N7WN+$uq zcJRZ(Z~<*QnsvH&70HdWLHt_a5af;L-6in7cJSg5z?!7R3aMG&c@8~=d?7>Qe10ox zu~%EFGLdZ?qHH7y-t${b*N@?&7IDQzp>(}&d{E?QI6pg45M#-tnsjf^X{v$pE`H+G z#7c(~n)eJ=qu-!;D(bMg8jLdYVm%lte3pD<<08fzpRiT32e^1gFBwpX#b33TIraK8 zz6$oLe0A#U(m?FCF&S*aOHp){vN0HG`Fep}bhg3{H)BRyL+;w;ZfFEk;p#DOjUglL zh?&P~v@-{-W1oG8Ykqv?KBHUrHq~w2lcbc%ah`iFkO7`es(Uwj0DJiXV%hI~_|I=- zU+K{n<}QKwwXYY6?QgWHtVM_JhtS?LfM`>ZXA4%65oTtv6B-^y26~UdCes{v+#KNZ z`^P;Dw}Ktg`r~eAoZEhnJKq5^r*MOr=^-zCor~Cb@yg@qr;uz#i$nYiEH2(;VCX`HO>6^=-Aif z&)$-7R}sOCU z<|^{wy@vNE)-xgP%0Poly{J`oYl&4V4VnD-^qFXrgRit&HYA_F;qq8=-F&(16IwGk-F{p5 zEst=KsxH^0?ijsHmcK>$4ZURU-H&H{U)Q%+gW_MDCK@I8nBByxWwyV3I7Iih zWn9!9b-`DZQeksqGVYZ8Sv)Sz>!&)`2lKA0zGtxED2Y9Kl455pZaw7r!!Z?ifv#() zN*^_L9*wkN5#hHXv8>+~pq8Re`&dEIs7#hWRG2rYH)g3U zRr-c3or~JFMNtWN7Z$s3L#R->rElJs0l5*vv4i&Y&&O~-6QYCC1X#NRxg)+Q2>(ta zjz(lC!jBeLA94=)vIWnE&V~JjM%-krik>yFH~SAfieR1z)b;SQbPOayg6;YLF`4_D z{$)O(7Yu}Nix8+NrMTh^mdFGMPQOfhQee9OgUe1P|5>Bx5UvHp47vSaWHh?r&EvjB zvrrPh9#vuesl`oim4JBmD0Do_0EuT`JR9q1=zsP#pe@qelm`cZ{~XY=KzagTmkZud z9V~SMq;i4Kxlj21m}Zy-(hW@RvI0y1Gq!&3`+q(o`+}wI&_pc;$P@n{b!QL0t&a6x zLLX3%?;?)jrYR*+kB{dVp7|s!kJR?wj=*1DMJTOOQhg5d3R1SelA&N4j|eX?f8La_ z>o5c87vA!`2B+1sz$yRz(;sSkLE=K#?FH`&eA`}!*C}c*Ig9*fogy$Z`g>!yn5B)m zww*1Lq>GIFcaE9RCG&grvW?7`eoK6p-r8!*JU{J_W$%0gu8LP$4Ele!k4(s9- z$8N2&Po2p&h?<9vi=<|j^T(X4K<^g~^P{41KHH^68>N@n=3ww-bV2|ee#Si1el`od zmY9Ft11um&LI%^Bg8^?^`PXA~$s5v@{+ltn91vd#ixI&chK+%TACB9sv;$sW5<16O z{iRdsPpTgIbCPq2L>~mfBw?mFvcP+d0g_v+D?tjYeL;8_AlknewEnSM=G31Dt&;)M;y?K4|3V5Db@6l}guvX=+YB41nD6WNDsr7(1>c?@o)Py{}| z_kD+W$@|=4nBF=-ycE7v|C{TBA17iEHx&FcPIL&b&a$6k!klO+c%_g2Y6|Gy;|na{ zNDhoF{?qbsK@Ky_@-X~!-~&dm0|7BHAW-0e4it2M=5!~N=mP*KhDiOf|bfGRzSB?x}x|&rlW&SqEo6vN*2%x{UMN0J~V#H>DkI~ z6?hPE(d?hz`~Kd^ffk%%f&Vs$$M+-weRn@(-Hp_ePBQ6?aL;^wj38JtaLCu zljxM`q?3Sau87`f!4VnYua-aX;SS?JI3coDQqZF}HsRg_KMbD!`!dB_Jcj>h;^cmQ z+YW6N2E5_H-((wt3?VCj&NdFQGN3PlV=y{u|9ojdrGtMt@ul<0DkWHDH1=P&9f$>z zjKGM*<^5>fKb2xVcH-OCc7V|%{$kTR@jGX)Yv}6QA|i??mK%JB;lB=YcL^n50pDR@ zb%Ede)1OZ|=*LD<(0;80wvn{p$3{{h-1v(|QX0WIQm_M3I`FX$5&f`0kP?^>lLqc1 zj-bA(px(YO{PD|JIR>Z-2ZVm@0K zLi2xP2kWnrFe&)gV+>zPp&g$NNL^^5ui5>1xWL@K&~K}ubYvL^JO}{HJox=yKg?=y zLx6DD+AF+Pe2b~Q6)*x7f)oMn!56KEU)Hyw+VO5)Eqd+&*b{o7O@}xrtdN5O6A#(L zn~MQcr0FCTf>!Ws)mJ4!Qs80WB+y~#{_G&=!H64ynH4U8AwdTk^D|ntufcmK1R~tx z*S)CHB#U&MW`H@4T#BX;wJlANek10=upS9n>Ss-7)Vcmw)qH#(__NS9gNDzK+&(Jh zWyIg?6t7h0gk<_aDuXG8uVnEVZBVqzx&lUw1TMj7h!iph@rL=3b^hi_FVh55k>y!h zW$X+OPJ;?1uhLL`ncm5~3CjpKVV z*#Xbuga(!Mj!?=yb^+St>o^w^!O<2=4yR@bU^2sj5XWKG5F%IrvxY42<`O>)e*&_I zUsgY1Mn7SR%Q*iT82BaC0?;D(GTcuNs$dRGu>emQgokQzZWgCZ40x>vQ!NhhS~(y- ziw-(f*e@8sAzKCjM~WCyimPFYUoe+8Xvej$3=WI5PoB!K`SZ~@l<$HZbQs^&{bTg; zH?@OrzUv1(;4ekk#-?k9!FT|4Ue?c6|ABnG+5|8E7B%>{NVi z(f}6Is1^QHTz_81+CX`wN4e}(C56(sTi6Rt^V0tNY|4Hgm!zi8lc6Fexk)Wv+)T7B zkFURe>(d(1xZL(l<_*g?A?A*Lk~JcaT=Q?F_fTln7fB1Um7c_Vw~Fo-V-grAJ0x86 z$V7(A4E+-byK(XK>P1{*DuLvdK%lknr0{6HR$B0CiN23| z4DM!$2%9gsr1`eq@xIty@Wj<$Yfg#Qgh`4~;R^8%2Lh7xDHANp#Cq)!s;1?!i!=T< zK7$dlYAGkQ7;>^Q6j3(u9}lY^Aya-jzL;&@r0lTxc;rI#wWKFmii`t1j*6ev+k~Uu zu^1u+^V^EpaJpS7?0BDqiL5|mK2$D)YHj@_vBP7E;7srJ$tT+gV2|APN_;LTAVFsm+~A$u2oB-EY@y$u@x!>m{Ui(~OJ0RHp#D1O zVH`YVaK{53hB@S|AsiaKR5}Nn*sN#Ajbc_(^`D*O8Vb8Efxqc14~x^ z@!0%JhDT4P$+ z>t0e&yJcmVUt2ITsZm{a>(;B`VrNCNF67QNJFe^HNjpx{Lt7Q{_H2B4hPwu!3O>sW zZv)Wi>BOtmzU#~R79oT;%Q>#UkyuY7Rt99fbG9lf&OF)C?GE?uVxpTI3n<4C+GLsG zkJ*l{42syQ$YYwEc(v|&X2`xaD{fYxroHcN@^0N8$yj5uD}mizZwuC$Qm;jc9&?oO zzGT;vb^=J_tI4A*Wl@!cLS?7yn7l2RW;Bt;Z}#kx+BGKgqE`G3dO^%tlWL~UFi5_;LO~#oClySD1E-wp%MdP_HZ`q^_t50mceVH`z{4%c? zy%sHcO1vy+W@<1hU4_a>?aXbbv*wR!aL&}=R6b31C9_Q!NWP9yd9x=MWn8QW%S(1u zD}tx~Zg8rf``mnzQ{s>D3`#=AgaT+p&bIWNX zIn6B>iZo4^7YFLkDEdv5}dQ1@?FJD$iJ;_t9)+1obp^o;9^hCG1)vku4>7bYqZ3f zC@v9ov&smWDroVVR8~L#M`8HsnQvcTqk2^=*1XpgD737PX zk~jx^n_;2$_2+R}zx@Ay{RdBG!u&N~fA;FQY$Ij7-(@bWyZeiUrTDvbf?dFotOFJm z_Q$8we!2Ehm8CHI;gmWSjZIQX#l^YVq~Q5bOlGTO98pZtHBVLKv-;!;;D4Nbj48Tu z*w13^8GnDeC+rj|4yG%Q7Y5&I4Cl5!DZC!;s9$z|sm(%WB4RwY3iyHZFMqHn@Pz$! zO}QmGS_P8<#`L?$-jNR<-fLZ#9Pd(atQZZwTenl4yY^{qb)&1@di~X-vg#)#_ReXZ@=eZLH-@}}Vp!ulPygUSy#uFA!<724X z?;XKW5I3&#SPl>Yl>$iI_scfH4!Svs9oF+5+?-@#Z)Uci=?#PmS$YZL`gXVH8F7`A zSqSCMa8URc$eYGWo{}^0JCF~)a%leVq!R&kM)mRQchfh4wtErNW4*i8UMRO`$Jk;`R~q-E-%VCT9>OdG75MrG27 zapmJCuM~g=`9O@++ow+E3N~GdBs;1k%=9^f-mg}6#~%xyGw}IpGzxCk6ivkd?uhg4 zZ5b(*yOrz{^Y;yX+!Dpx@Nm<3?Pea$<&W-WhTxgm8t<}Gx3k%)ymvr6KYJDd)F~Af zJ}xh3CEO|F)zB1~ZdQNx{4MdK6yzby9h^=oGwhet_}LpJDWQQv@kB^cL%Bn{wgIzd zHlI&bJ=4y8dJS7GV~@M?tT?9^5uQXP$7tmMR=Cg=pCMfYw@a}v@djcj1Ba#R-{7AQ zGDYjI_4;5$gpP_4C=z)r4UlV5s%v`4c&a<&a_EE>sqqE|cp=kG9fu8oaJKHiaQ5dR zI)G-AqmjPF7ac@s-fDZ10&TZ==l@8ziQ;g&O?5Zo6T!%J#=nPy`xGtcqRA?};nQEv zpZU1d7GVpR;0tBOpDTdCbVevLD|q&o9#8>%4OIcu!bjd)>+OgS?oS=-->(Cvx3^(k;93n5}f|Q_OSqJc1@C^ilM^FxL zOjZP(mqM4nVQo6hvamytEtq9th1V#6p8iiwEi***kTf;@z(aHn`1YW@ft_i;iVmyC z53f}_-fllOHwHpukN97>ArGw)iX>7AuV%~b0?W0^e1cX;jUSMG!y30*1 zPA6x*EO-#uQFo1_I2)NBNpU_ZTQI!FW2fZcYUl*6z*IixwqZS@xOT%}Yzt!&n^c)> zBuqpKc~5;6nk#}=vU@M$EQ;Ks0Sm$8nyVl^?;yeLV!WGIlAmNIL~-DKc?qX#+P8xM zGG259XJJA0N2hf>WOx__xB`I7+8SD$u((=TmX{W{cB#^xRA-iJf>H=-GF|fB%0RpB zXPU@pcKwwqWzS~I*3mc6WIE+5XJ;yq7T?T)JN1RfvQEf= zUMT1z4+D#H0TKA0bl_<-_%G|}JE^e>&^g@1UY`q`lnGbY0oaT$dGfr^GSu)WT-%B>E+^G%~HiyhFC4Y;|!LZnxz;e6m^F8giW_EP$% z&B^3GjfR2=y6cQGf%MtEXyk+XiY0Up9I$Jd*r{UW@L(~NgQza5r^*LhnDSqeiKqAX zx9c_iI(1pO)(CMO-6@qi(SjRkH

    XN;PX$MIl}S2#6XYJR;O1w**Scwe>k)!WAd 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