# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: kinkie@squid-cache.org-20080708083926-xeqyqp6dcuw6vkmu # target_branch: ../repo/squid-trunk # testament_sha1: 764e1d67e2dca277e880dc6c6f972f3dea4e43da # timestamp: 2008-07-08 10:47:34 +0200 # source_branch: ../repo/squid-trunk # base_revision_id: henrik@henriknordstrom.net-20080707220412-\ # hemjfx73b0f3xznj # # Begin patch === renamed file 'include/List.h' => 'include/CbDataList.h' --- include/List.h 2008-03-20 23:20:58 +0000 +++ include/CbDataList.h 2008-07-08 08:39:26 +0000 @@ -1,6 +1,4 @@ /* - * $Id: List.h,v 1.8 2008/02/26 21:49:33 amosjeffries Exp $ - * * * SQUID Web Proxy Cache http://www.squid-cache.org/ * ---------------------------------------------------------- @@ -38,48 +36,48 @@ /// \ingroup POD template -class List +class CbDataList { public: void *operator new (size_t); void operator delete (void *); - List (C const &); - ~List(); + CbDataList (C const &); + ~CbDataList(); bool find(C const &)const; bool findAndTune(C const &); - List *next; + CbDataList *next; C element; bool empty() const { return this == NULL; } private: - CBDATA_CLASS(List); + CBDATA_CLASS(CbDataList); }; /// \ingroup POD template -class ListContainer +class CbDataListContainer { public: - ListContainer(); - ~ListContainer(); - List *push_back (C const &); + CbDataListContainer(); + ~CbDataListContainer(); + CbDataList *push_back (C const &); C pop_front(); bool empty() const; - List *head; + CbDataList *head; }; /// \ingroup POD template -class ListIterator +class CbDataListIterator { public: - ListIterator(ListContainer const &list) : next_entry(list.head) {} + CbDataListIterator(CbDataListContainer const &list) : next_entry(list.head) {} const C & next() { - List *entry = next_entry; + CbDataList *entry = next_entry; if (entry) next_entry = entry->next; return entry->element; @@ -89,40 +87,40 @@ } private: - List *next_entry; + CbDataList *next_entry; }; /* implementation follows */ /** \cond AUTODOCS-IGNORE */ template -cbdata_type List::CBDATA_List = CBDATA_UNKNOWN; +cbdata_type CbDataList::CBDATA_CbDataList = CBDATA_UNKNOWN; /** \endcond */ template void * -List::operator new (size_t byteCount) +CbDataList::operator new (size_t byteCount) { - CBDATA_INIT_TYPE(List); + CBDATA_INIT_TYPE(CbDataList); - List *result = cbdataAlloc(List); + CbDataList *result = cbdataAlloc(CbDataList); return result; } template void -List::operator delete (void *address) +CbDataList::operator delete (void *address) { cbdataFree(address); } template -List::List(C const &value) : next(NULL), element (value) +CbDataList::CbDataList(C const &value) : next(NULL), element (value) {} template -List::~List() +CbDataList::~CbDataList() { if (next) delete next; @@ -130,9 +128,9 @@ template bool -List::find (C const &toFind) const +CbDataList::find (C const &toFind) const { - List const *node = NULL; + CbDataList const *node = NULL; for (node = this; node; node = node->next) if (node->element == toFind) @@ -143,11 +141,11 @@ template bool -List::findAndTune(C const & toFind) +CbDataList::findAndTune(C const & toFind) { - List *prev = NULL; + CbDataList *prev = NULL; - for (List *node = this; node; node = node-> + for (CbDataList *node = this; node; node = node-> next) { if (node->element == toFind) { if (prev != NULL) { @@ -168,24 +166,24 @@ } template -ListContainer::ListContainer() : head (NULL) +CbDataListContainer::CbDataListContainer() : head (NULL) {} template -ListContainer::~ListContainer() +CbDataListContainer::~CbDataListContainer() { if (head) delete head; } template -List * -ListContainer::push_back (C const &element) +CbDataList * +CbDataListContainer::push_back (C const &element) { - List *node = new List (element); + CbDataList *node = new CbDataList (element); if (head) { - List *tempNode = NULL; + CbDataList *tempNode = NULL; for (tempNode = head; tempNode->next; tempNode = tempNode->next); tempNode->next = node; @@ -197,11 +195,11 @@ template C -ListContainer::pop_front() +CbDataListContainer::pop_front() { if (head) { C result = head->element; - List *node = head; + CbDataList *node = head; head = head->next; node->next = NULL; delete node; @@ -213,7 +211,7 @@ template bool -ListContainer::empty() const +CbDataListContainer::empty() const { return head == NULL; } === modified file 'src/ACLASN.h' --- src/ACLASN.h 2008-02-27 04:49:32 +0000 +++ src/ACLASN.h 2008-07-08 08:39:26 +0000 @@ -36,7 +36,7 @@ #define SQUID_ACLASN_H #include "ACLData.h" -#include "List.h" +#include "CbDataList.h" #include "ACLStrategised.h" #include "ACLChecklist.h" #include "IPAddress.h" @@ -45,7 +45,7 @@ class CacheManager; -SQUIDCEXTERN int asnMatchIp(List *, IPAddress &); +SQUIDCEXTERN int asnMatchIp(CbDataList *, IPAddress &); /// \ingroup ACLAPI SQUIDCEXTERN void asnInit(void); @@ -77,7 +77,7 @@ static ACLStrategised SourceRegistryEntry_; static ACL::Prototype DestinationRegistryProtoype; static ACLStrategised DestinationRegistryEntry_; - List *data; + CbDataList *data; }; MEMPROXY_CLASS_INLINE(ACLASN) /**DOCS_NOSEMI*/ === modified file 'src/ACLIntRange.cc' --- src/ACLIntRange.cc 2008-02-27 04:49:32 +0000 +++ src/ACLIntRange.cc 2008-07-08 08:39:26 +0000 @@ -40,7 +40,7 @@ #include "Parsing.h" /* explicit instantiation required for some systems */ -template cbdata_type List< Range >::CBDATA_List; +template cbdata_type CbDataList< Range >::CBDATA_CbDataList; void ACLIntRange::parse() @@ -83,7 +83,7 @@ ACLIntRange::match(int i) { RangeType const toFind (i, i+1); - ListIterator iter(ranges); + CbDataListIterator iter(ranges); while (!iter.end()) { const RangeType & element = iter.next(); @@ -113,7 +113,7 @@ { wordlist *W = NULL; char buf[32]; - ListIterator iter(ranges); + CbDataListIterator iter(ranges); while (!iter.end()) { const RangeType & element = iter.next(); === modified file 'src/ACLIntRange.h' --- src/ACLIntRange.h 2008-02-27 04:49:32 +0000 +++ src/ACLIntRange.h 2008-07-08 08:39:26 +0000 @@ -36,7 +36,7 @@ #define SQUID_ACLINTRANGE_H #include "ACLData.h" -#include "List.h" +#include "CbDataList.h" #include "Range.h" /// \ingroup ACLAPI @@ -55,7 +55,7 @@ private: typedef Range RangeType; - ListContainer ranges; + CbDataListContainer ranges; }; #endif /* SQUID_ACLINTRANGE_H */ === modified file 'src/ACLMethodData.cc' --- src/ACLMethodData.cc 2008-03-16 21:48:45 +0000 +++ src/ACLMethodData.cc 2008-07-08 08:39:26 +0000 @@ -64,15 +64,14 @@ /* explicit instantiation required for some systems */ /// \cond AUTODOCS-IGNORE -template cbdata_type List -::CBDATA_List; +template cbdata_type CbDataList::CBDATA_CbDataList; /// \endcond wordlist * ACLMethodData::dump() { wordlist *W = NULL; - List *data = values; + CbDataList *data = values; while (data != NULL) { wordlistAdd(&W, RequestMethodStr(data->element)); @@ -85,12 +84,12 @@ void ACLMethodData::parse() { - List **Tail; + CbDataList **Tail; char *t = NULL; for (Tail = &values; *Tail; Tail = &((*Tail)->next)); while ((t = strtokFile())) { - List *q = new List (HttpRequestMethod(t, NULL)); + CbDataList *q = new CbDataList (HttpRequestMethod(t, NULL)); *(Tail) = q; Tail = &q->next; } === modified file 'src/ACLMethodData.h' --- src/ACLMethodData.h 2008-02-27 04:49:32 +0000 +++ src/ACLMethodData.h 2008-07-08 08:39:26 +0000 @@ -37,7 +37,7 @@ #include "ACL.h" #include "ACLData.h" -#include "List.h" +#include "CbDataList.h" /// \ingroup ACLAPI class ACLMethodData : public ACLData @@ -56,7 +56,7 @@ bool empty() const; virtual ACLData *clone() const; - List *values; + CbDataList *values; }; MEMPROXY_CLASS_INLINE(ACLMethodData); === modified file 'src/ACLProtocolData.cc' --- src/ACLProtocolData.cc 2008-03-16 21:48:45 +0000 +++ src/ACLProtocolData.cc 2008-07-08 08:39:26 +0000 @@ -63,14 +63,14 @@ /* explicit instantiation required for some systems */ /// \cond AUTODOCS-IGNORE -template cbdata_type List::CBDATA_List; +template cbdata_type CbDataList::CBDATA_CbDataList; /// \endcond wordlist * ACLProtocolData::dump() { wordlist *W = NULL; - List *data = values; + CbDataList *data = values; while (data != NULL) { wordlistAdd(&W, ProtocolStr[data->element]); @@ -83,12 +83,12 @@ void ACLProtocolData::parse() { - List **Tail; + CbDataList **Tail; char *t = NULL; for (Tail = &values; *Tail; Tail = &((*Tail)->next)); while ((t = strtokFile())) { - List *q = new List (urlParseProtocol(t)); + CbDataList *q = new CbDataList (urlParseProtocol(t)); *(Tail) = q; Tail = &q->next; } === modified file 'src/ACLProtocolData.h' --- src/ACLProtocolData.h 2005-05-08 12:36:45 +0000 +++ src/ACLProtocolData.h 2008-07-08 08:39:26 +0000 @@ -37,7 +37,7 @@ #define SQUID_ACLPROTOCOLDATA_H #include "ACL.h" #include "ACLData.h" -#include "List.h" +#include "CbDataList.h" class ACLProtocolData : public ACLData { @@ -55,7 +55,7 @@ bool empty() const; virtual ACLData *clone() const; - List *values; + CbDataList *values; }; MEMPROXY_CLASS_INLINE(ACLProtocolData); === modified file 'src/ACLSslErrorData.cc' --- src/ACLSslErrorData.cc 2008-03-16 21:48:45 +0000 +++ src/ACLSslErrorData.cc 2008-07-08 08:39:26 +0000 @@ -29,13 +29,13 @@ /* explicit instantiation required for some systems */ -template cbdata_type List::CBDATA_List; +template cbdata_type CbDataList::CBDATA_CbDataList; wordlist * ACLSslErrorData::dump() { wordlist *W = NULL; - List *data = values; + CbDataList *data = values; while (data != NULL) { wordlistAdd(&W, sslFindErrorString(data->element)); @@ -48,12 +48,12 @@ void ACLSslErrorData::parse() { - List **Tail; + CbDataList **Tail; char *t = NULL; for (Tail = &values; *Tail; Tail = &((*Tail)->next)); while ((t = strtokFile())) { - List *q = new List(sslParseErrorString(t)); + CbDataList *q = new CbDataList(sslParseErrorString(t)); *(Tail) = q; Tail = &q->next; } === modified file 'src/ACLSslErrorData.h' --- src/ACLSslErrorData.h 2008-02-12 05:24:38 +0000 +++ src/ACLSslErrorData.h 2008-07-08 08:39:26 +0000 @@ -7,7 +7,7 @@ #define SQUID_ACLSSL_ERRORDATA_H #include "ACL.h" #include "ACLData.h" -#include "List.h" +#include "CbDataList.h" #include "ssl_support.h" class ACLSslErrorData : public ACLData @@ -26,7 +26,7 @@ bool empty() const; virtual ACLData *clone() const; - List *values; + CbDataList *values; }; MEMPROXY_CLASS_INLINE(ACLSslErrorData); === modified file 'src/CommRead.h' --- src/CommRead.h 2008-02-13 06:51:37 +0000 +++ src/CommRead.h 2008-07-08 08:39:26 +0000 @@ -43,7 +43,7 @@ #include "squid.h" #include "comm.h" #include "CommCalls.h" -#include "List.h" +#include "CbDataList.h" class CommRead { @@ -92,10 +92,10 @@ private: static PF CloseHandler; - static DeferredRead popHead(ListContainer &deferredReads); + static DeferredRead popHead(CbDataListContainer &deferredReads); void kickARead(DeferredRead const &); void flushReads(); - ListContainer deferredReads; + CbDataListContainer deferredReads; }; === modified file 'src/StoreSearch.h' --- src/StoreSearch.h 2005-01-03 23:08:24 +0000 +++ src/StoreSearch.h 2008-07-08 08:39:26 +0000 @@ -47,7 +47,7 @@ virtual ~StoreSearch() {} /* not ready yet - void asList(void (*) (List::CBDATA_List; +template cbdata_type CbDataList::CBDATA_CbDataList; /// \endcond /** @@ -82,7 +82,7 @@ */ struct as_info { - List *as_number; + CbDataList *as_number; time_t expires; /* NOTUSED */ }; @@ -128,13 +128,13 @@ /* PUBLIC */ int -asnMatchIp(List *data, IPAddress &addr) +asnMatchIp(CbDataList *data, IPAddress &addr) { struct squid_radix_node *rn; as_info *e; m_ADDR m_addr; - List *a = NULL; - List *b = NULL; + CbDataList *a = NULL; + CbDataList *b = NULL; debugs(53, 3, "asnMatchIp: Called for " << addr ); @@ -174,7 +174,7 @@ void ACLASN::prepareForUse() { - for (List *i = data; i; i = i-> + for (CbDataList *i = data; i; i = i-> next) asnCacheStart(i->element); } @@ -388,8 +388,8 @@ rtentry_t *e; struct squid_radix_node *rn; - List **Tail = NULL; - List *q = NULL; + CbDataList **Tail = NULL; + CbDataList *q = NULL; as_info *asinfo = NULL; IPAddress mask; @@ -439,14 +439,14 @@ debugs(53, 3, "asnAddNet: Warning: Found a network with multiple AS numbers!"); for (Tail = &asinfo->as_number; *Tail; Tail = &(*Tail)->next); - q = new List (as_number); + q = new CbDataList (as_number); *(Tail) = q; e->e_info = asinfo; } } else { - q = new List (as_number); + q = new CbDataList (as_number); asinfo = (as_info *)xmalloc(sizeof(as_info)); asinfo->as_number = q; rn = squid_rn_addroute(&e->e_addr, &e->e_mask, AS_tree_head, e->e_nodes); @@ -492,8 +492,8 @@ static void destroyRadixNodeInfo(as_info * e_info) { - List *prev = NULL; - List *data = e_info->as_number; + CbDataList *prev = NULL; + CbDataList *data = e_info->as_number; while (data) { prev = data; @@ -509,7 +509,7 @@ { StoreEntry *sentry = (StoreEntry *)_sentry; rtentry_t *e = (rtentry_t *) rn; - List *q; + CbDataList *q; as_info *asinfo; char buf[MAX_IPSTRLEN]; IPAddress addr; @@ -551,7 +551,7 @@ { wordlist *W = NULL; char buf[32]; - List *ldata = data; + CbDataList *ldata = data; while (ldata != NULL) { snprintf(buf, sizeof(buf), "%d", ldata->element); @@ -571,14 +571,14 @@ void ACLASN::parse() { - List **curlist = &data; - List **Tail; - List *q = NULL; + CbDataList **curlist = &data; + CbDataList **Tail; + CbDataList *q = NULL; char *t = NULL; for (Tail = curlist; *Tail; Tail = &((*Tail)->next)); while ((t = strtokFile())) { - q = new List (atoi(t)); + q = new CbDataList (atoi(t)); *(Tail) = q; Tail = &q->next; } === modified file 'src/comm.cc' --- src/comm.cc 2008-06-24 11:13:03 +0000 +++ src/comm.cc 2008-07-08 08:39:26 +0000 @@ -2509,13 +2509,13 @@ /* explicit instantiation required for some systems */ /// \cond AUTODOCS-IGNORE -template cbdata_type List::CBDATA_List; +template cbdata_type CbDataList::CBDATA_CbDataList; /// \endcond void DeferredReadManager::delayRead(DeferredRead const &aRead) { debugs(5, 3, "Adding deferred read on FD " << aRead.theRead.fd); - List *temp = deferredReads.push_back(aRead); + CbDataList *temp = deferredReads.push_back(aRead); comm_add_close_handler (aRead.theRead.fd, CloseHandler, temp); } @@ -2524,13 +2524,13 @@ if (!cbdataReferenceValid (thecbdata)) return; - List *temp = (List *)thecbdata; + CbDataList *temp = (CbDataList *)thecbdata; temp->element.markCancelled(); } DeferredRead -DeferredReadManager::popHead(ListContainer &deferredReads) { +DeferredReadManager::popHead(CbDataListContainer &deferredReads) { assert (!deferredReads.empty()); if (!deferredReads.head->element.cancelled) @@ -2543,7 +2543,7 @@ void DeferredReadManager::kickReads(int const count) { - /* if we had List::size() we could consolidate this and flushReads */ + /* if we had CbDataList::size() we could consolidate this and flushReads */ if (count < 1) { flushReads(); @@ -2563,9 +2563,9 @@ void DeferredReadManager::flushReads() { - ListContainer reads; + CbDataListContainer reads; reads = deferredReads; - deferredReads = ListContainer(); + deferredReads = CbDataListContainer(); while (!reads.empty()) { DeferredRead aRead = popHead(reads); # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWVPNTzYADWhfgERwWXf//39v /uC////7YBJ96d7GzRe3a74fbDgUUAAoUtZV33h8vY19u+gdLxlClUV6yktiTRCKUamIaJgEyZHq nimymUejUzQmaCY1DQ0aP1QSgmgTQEaTUxU03qan6p6h6R6gAeo0aBoAANMiZNUo0A9Q0NAMnqNA NADQAAbUASakETSjQ0xqZNARpkGjRoyAADQaADaSSEGR6mmNTQyAAAMgAAAAAKkkEZACRmgIYgJR 7KbSmj0ynlHqZAGjymCEmOx2eThwrhV+dzTi/d4uPpFZ+1FNyhilKxESag/MmBU02qUEMD1YP9hI 9LtVVsyd14nmxpV6y1TLDZkqsVawlUUBZIUJJ3+OVilVaIzld/g15g6ra9HFzVttA7ybP2vUkkwk JSgCKCoBdN1XZcLhm0pWTOTYKYnR4giI0Z5CkkyE5qMtkwMAingiX0G9EzL6ApszVDRpe2LOlqtf TanOLWwTnJIQ3kJPuJ2vWj4+wWLp2PVTXRnlrS6G/+q13VA2copC6sgdMk/Ek4SRCAsBUUSLFiki MFIKJ/f+iIgDqHbvn3F7ECZUl3GJzYqtX7uNSlFpEy5w6bZqXZA4NHD5cURBeJcbNqiSqSNmzUO9 HhMBlsPRk5ypI0GLQc0YyqLpCEpsRcbFynRddrF3VMpeqzisaZa0vdDLuVrakbMq3sJNh08KVgVb 4g2URWKfJBMAtNKcUXu4ds4SIiEjkzSCInMu1HByCJIcxlSRBqUNLadj9HlafprWsfZ+Cn02qc0G /iENzuftbG289FFYqt8Pc8xlvA89sXa6xjQl+v3s8p6Q4kdNWbNNdkLTs2Y5einhEb6vjVWQjbjD etrcIuRE9oW3UIM35IZm4dIcHj88Nx+TkiQ2rV2tzc1HVidcVO7pzkRnF/clX3iq2E9qoqCmEQyU s3wES7d86y91882U73nyCzUWTodgwgvYMyH+QG/oiNl2yUi1KAn9+H6yfgLTkYpoyGUDZY+HvtBZ V92vxvP+DzX63vakpuVZ0oa0Xb4uPk6fFltpQ4s7dT0WqBaDBQAddfDuPBPXxx8FreTsknKm8ftl Vai9KFU/hZZ9WJtjRU5g2RPLX11Vzqsq2xewWnW3cN+mBxPOeSj3Mg5Z+7hS0bQZJ6s7und9Lf/V Sy5cmcK+m+/ZewxUsvUwYLL9A4YwOrt/DvknyCrPUQSvidqi3EYABDEWWTNJyhJWZoAssCuGS0Jw vQToQlhkWTXOuS+6QgXPSfYTTGX5ua/Rrv1RVdi4KSWL72GHPHYhS9doi00UxtgqZFNL4Bg2KvzN dk01T6MzVew3sfr9+1pa2tnIL5pYa5CXAzzmINty7Q3smCTAqZZjzZtThvXnHUwa3d0vXg1SmKP7 faMd5b5I6AIdOGOEcZE6s3gzdd2paFoRZIFmi/S1+xhHJClBdlL53zOxWeSMyaCoVCiVQ5JZneg+ 1xqF76PzlrpptmVfZb2kVINi5phRdEYYA0cUVLsGhcnPEQiI2htaxQoI4MhkUHLLsck7d6Hc6WJ2 QUcMGoloqCpMXNUZTYVCh+mw8CiJwZHB8+ZCSsMUGBMn7CBptqXvLUapJk4NbY6HpcXI9KnI8mtw R0FN1Lcwdoaqs8O8uWl4a0pOtxapYLpWEBAZ+W4SpuVQmqbXQYWi0AGSuYQ8EEOaGxmkAFSgBM7a iOIlypQcIaWEmRIRyigEbJbVG1xYNhWLTGSS5ZLKjdk8dgNy+mM11WzAvCCOPe6ZAFTMpSaIGDgY oKCnIoxwkzMgKG5ydDy6jhBW++lV3RlTNSFHLLovAzMRKqy6Xe5K+GE6iPMAUAsodVGunOiOmope cKEzcKGgSkqXKgHY0Ydd2V5iOZEFMGepRI0YAqZtTRXmlxQYN0OgwhoAEimxyMTOidi5qYJkFxxy DApQUyMgoZGR8PBMU26j7bCoX0GSSt1HXerNZ6rYWkuEWwZmpYsdMiiIlDBaSXynA5kbhwedyCiY 2JGERSTgwYByQ6MaQHUtmWJgaFUqXLilS0xcyQBSoqKhyxmQKHQc5REwVNSwxcY13NjIz8bDnzep +Q+UA+QT0PAM+3VDZmZctWG6MzSpFG06eMql4nIZYXjyWtUKiXwlCAksj2BiZgVV6z0ockwCcmIQ UYr2L5ZAHsKEDG0yzkBdVuJjycYcYqVPI2Kh8tDji0WGFGGDNTdJZZm1uLXTu4u41L2Szk4NezNu 3dzU4NzDC9IgmZmx7j0KeoBlueyyHKdVM1HZY8aOvPV3WcMzeLk5vFFmRK/oJyAE8lmAZFxUIJDm 5OAwYSDI/6QQR5WGNDzNsBik81LicGRodirCpedyxqaE271HLlXwOeIBccsYMyA4HNjsBqbtZZm+ PUmntPwBp56XG5l0VWyXdO67bxN79aqXrMWYdDJEA6GcFfMUct2onQPiSha+KdxnShc7C0JB0TJT poMNBG5cp8krk0udDkwHYbGt6tLzM3u9XLpDFsN1pdcuZ9F1+6sejb0XzVFromM4w85JeZ0hsG6Q IXuVsWL2lHlDFm4rzAHQWmxtbTF1sNSqKVZa1FZEOHOiIzGxkPsK5UmQevmetZvs+Zdt8yTEjDVJ y3kUM4dlp0ybiv2SoBjgwGQ55eVr8lAb29p3N62CYLgXYJnnwZMHjqZODrbmpliA7FrjnGthYJbG xpK5wUEC2Z4DljBQUY1y9oejpKW8U1zkY0n3JOdPOnTDAwSt/SuUzankwpQBJYqSTJFKgCVZCVSF uF4bsVpW91FzhOBxj2NuKgTQRhHLhY6lzYLkT31NtLjrX6NNp6JZoJvYiCLGMZE7VWJGQLtB2qJQ kvADl580qQbjKjGQ0evAW1LRUTxEjAPD0+dSHJxUF9bGmk2n0LVRYClCMFSmVQ0U0ViJa1V1Wm0h nG2vkAnQDd9pIZz6KTifyZr1SZSIBgSIi8p7PWPpEcXqsWJr3v/6AJ5E/EoqcS0FoYK/Co+kUwzO MEvYsJdqzKlIKsKEs0lNR3bmsZilmCplzg3/OR/xy8/XVW+iSJn0Q2dVc+rXmr8TcYrY/flrPJzn eZQnzSBvhUDA9C7YbcAg5dxcWo+/y/3mr/vHXEIZMNBx5Tr0Xy9vwF3Q48nrmE0QnZhW5w6Iv3y7 q2WlOPRm8Ev3HjoBo45911CIyPK6Ry3QngulVCMgeELObwnSyTGnZVEUe3Jx4SaD6ECHueBL2l1X 4kK5wrKD2Fo9x3lR3BMfQUPoPifUoxYyPpKG4IInzqibmD+VRjYoVPtRADiOl+vxqqqqqvFzJIer oohxhzHdO5A8PXHpg/T7f5jBD8TD99OM/jZVKN9p27p6AXKql1XrFqh6ip5UJXzTDrGhjSGgEMK6 mRHLXwT8dmv0cXJ3rPN8HnLnsYrz1LmC5SmDQxXMHvfB4tDJkspg4tT+SSJ/NmwfSXNrSvZMrlXN CLnwfZ8naflocWv0eHgSJ79iZ5dkS5HdT7HyMZwdToWbO3m7WTk7HQvbHaua2tbqaFOtqWfrA0tT sU78+bnUf7odDhxbW7u3ufL5WnW7dmqBcVLqwU2zCwXSbe2J1+2sbWtI666+fAAPqDzA7656MMzs /qzy8FNZDH4CiADJoTc2tzdF/Y4O3m0qjV1sm9gswZO1ZvDvalza2hhgwb2ySSnGqlKorCltgXbl zl6RouBzzFGGJd4++zgY+YY1EA9Dk2DP8QvoI4xBjP0vF5okdiuDCElmAqSccG2YaFmHnyCxNb8+ fkKj6j2oBbFzFW3dusJG4g+tmXxzaonKIu7a7TSbiwgiwpKzUEjxZerNoR0ROrPqY1oBSt1DtpXL 4qxnYk9VoNXQ4O77v3WsyWWRyWtF1Yv01u9c7ma52ulZ1tW7p7sG0PeZs73lg6jZs5DqJedTCm0N O/8pa3K86Fd/mrtAGZkL6X8O1uQ0SfAHtTVPe2+XfcwkYPcqez2hrTkaMXApwrN7j4rUWcIwXSVb ZDQy+sMDCSMBkqNsSX+jP1vWuU9XPzcGD2ve6mUudp5vFlewe5kybGp8TJg+Svg0d0kuDjJKP4H5 o9ovAXKRoPMTOG4GzWU2D1M9uAAyYtBnHSFEnSqVBVVNZWXx9u77gUf7Ke8qkk5WQVfXy5eXOWjx p+w0l7vTFhUTl2EkZZ/PpWxonKpaLUZKQ6hA1KvVkECgKSrerOgaU0kRgw/ZPTf+7KC2iDlrz1f0 0QNXjEb9x9Ls8NSJQbTxIng24SIYhCGAVKD8aQCWfcfB4FzAxn2V647w8HxhpaUHVB/X+TvCknEG gbH4W4eiNrAP/PvMTBfO+ksmKfVPP3XmhEfOaCrtBp/s/Pfw9fm/LbkcaFsrrpMBvyDj1PIB6+YA 65JibwXEDGxi6c2AIqoaq3uCjIvVX9skqTF8AdrLR1xX37y0kuUZ5e6SLXpNQKiEOjs6WgHxAa6w O8jeakjzeeUg+zCY1TgNIeKapFtFtdy6I/oskvgnmYSA+cCG8J3ksycJtnMSNWuZHGjT4QOEKPfR OHz5y7IIB10gTPyhwImmZSUkCOt2EwdiZclRdCoKNG4XHRAwmm6eJz0xNOqxqOBQaiy7jADzDauk VrNYrv35AChWkSgY2E4ypjFLp3Fy4RA2BblVmt1jJ4/YmNJHXrLDEA9snqQVAzlU99i1P41HsTss kvVSJ+XWfa7MEzieGqaYntKdTR7Az+OzSDQ3To6mr1XReeGf4FSAYq9oePgAYNxS1bJIU1Xwxo+S UQydQA8sSHIMm/zFG+yseg5hl++0WofULFruKWukrC2hWUWxcTcwbLipJvkmmItZJ3bDSyD9VpGq TZ/jAy+sTYwK+6m1r5p8TNvqSlVISYj9NUHdr6Bhf898jKm5N9uS1JwaHrRKa3AUoTtlHtEsGWeT dQAGxumyjIjIiixsEiZiSISXCIWguc7nwM7SY/DynknpZ9v2nmSbv62a4nq2bl7vsWf3YRMOspOU HrU2zbJR677XipM4AMHgs55COmNC8nUAHd34MyvoQTHZgwB+0vKS8fL4mfGaH+ZgDzyxTvYt4Z93 s9FKb51GsyiNgNafQzafl4NI0jiDm+bQ6OlPc3YHQyYT9cAZ62CDQ/OeC9XVXmGiy+n5tpnXWxzg B3ZzT0b/GgeLO48g4B5Tj5dcR/4u5IpwoSCnmp5s