Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [udig-devel] Filtering datas from a database

Hi,

this is easier than you think :-)

Forget the OracleDataStore and the Filter stuff in the following loop. Just do this:

List resourceList = instantiate...

for( IService service : serviceFactory.createService( params ) ){
     try {
         CatalogPlugin.getDefault().getLocalCatalog().add( service );

	    for (IResolve nextElt : service.members(new
                 if (nextElt instanceof IGeoResource) {
                    resourceList.add((IGeoResource) nextElt);
                 }
             }

     }catch (IOException couldNotConnect ){
       //log
     }
}


//add to the map
ApplicationGIS.addLayersToMap(ApplicationGIS.getActiveMap(),
resourceList, 1, null, true);

//now get the layers and apply the filter with the blacboard snippet
// from the previous email

Here you just plugin the code Jesse just sent.


Jacques LESCOT wrote:
Maybe that my problem is different :

Using the following code snippet, the "coll" variable contains indeed the only Feature with the given ID. The probem is that I do not know how to either enforce this filter to be applied to my IService or adapt teh Feature into an IGeoResource so that it could be displayed on a Layer ?

OracleDataStore database = service.resolve(OracleDataStore.class, new NullProgressMonitor()); FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = database.getFeatureSource("LOCATION_POINT"); // Filter only the LOCATION_POINT table from my database

FilterFactory ff = CommonFactoryFinder.getFilterFactory(GeoTools.getDefaultHints()); Filter franceFilter = ff.id(Collections.singleton(ff.featureId("LOCATION_POINT.681"))); FeatureCollection<SimpleFeatureType, SimpleFeature> coll = featureSource.getFeatures(franceFilter); // Filter only the record with ID="681"

                    List<IGeoResource> resourceList = new ArrayList<IGeoResource>();
for (IResolve nextElt : service.members(new NullProgressMonitor())) { // service.members(...) returns me the whole LOCATION_POINT table
                        if (nextElt instanceof IGeoResource) {
                            resourceList.add((IGeoResource) nextElt);
                        }
                    }
ApplicationGIS.addLayersToMap(ApplicationGIS.getActiveMap(), resourceList, 1, null, true);

I added some comments in order to help you understand what's happen with the above code.

Thus, I am here working with an OracleDataStore, and I am using uDig trunk source code.

Regards,
Jacques

Ugo Taddei a écrit :
Jesse Eichar wrote:

<a class="moz-txt-link-freetext" href="http://lists.refractions.net/mailman/listinfo/udig-devel";>http://lists.refractions.net/mailman/listinfo/udig-devel</a>
   <br>
   <br>
   <br>
   <br>
 </blockquote>
 <br>
 <br>
</blockquote>
<br>
<div class="moz-signature">-- <br>
<style type="text/css">
a:link{text-decoration:underline;color:#1768B0;}
a:visited{text-decoration:underline;color:#1768B0;}
a:hover{text-decoration:underline;color:#1768B0;}
</style>
<table style="border: 1px solid rgb(23, 104, 176);" border="0"
cellspacing="0">
 <tbody>
   <tr>
     <td align="center" width="140"> <a
href="http://www.anyware-tech.com";><img
src="cid:part1.01030007.03010600@anyware-tech.com"
alt="Anyware Technologies" border="0" height="98" width="100"></a> </td>
     <td align="center">
     <table border="0" cellspacing="10">
       <tbody>
         <tr>
           <td> <span
style="font-size: 10pt; font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; color: rgb(23, 104, 176);">
           <b>Jacques LESCOT</b><br>
           </span> <span
style="font-size: 8pt; font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; color: rgb(23, 104, 176);">
Project Manager<br>
Eclipse Technical Expert<br>
           <a href="mailto:jacques.lescot@xxxxxxxxxxxxxxxx";>jacques.lescot@xxxxxxxxxxxxxxxx</a><br>
Standard : +33(0)5 61 00 52 90<br>
Direct : +33(0)5 61 00 06 60<br>
Mobile : +33(0)6 74 49 23 34<br>
Fax : +33(0)5 61 00 51 46 </span> </td>
           <td> <span
style="font-size: 8pt; font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; color: rgb(23, 104, 176);"
lang="EN-US"> <b>Anyware Technologies<br>
           </b> Lake Park<br>
ZAC de l'Hers - All&eacute;e du Lac<br>
BP 87216<br>
31672 Lab&egrave;ge Cedex <br>
France<br>
           <a href="http://www.anyware-tech.com";>www.anyware-tech.com</a>
           </span> </td>
         </tr>
       </tbody>
     </table>
     </td>
   </tr>
 </tbody>
</table>
<span
style="font-size: 8pt; font-family: &quot;Trebuchet MS&quot;,&quot;sans-serif&quot;; color: rgb(149, 168, 170); font-style: italic;">
This message and any attachments (the "Message") are confidential and
intended solely for the addressees.<br>
Any unauthorized modification, edition, use or dissemination is
prohibited. <br>
Neither Anyware Technologies nor its headquarters Wavecom shall be
liable for the Message if altered, changed, falsified or edited,
diffused without authorization. </span>
</div>
</body>
</html>

--------------060108050600020506020003
Content-Type: image/jpeg;
name="Signature_AWT.jpg"
Content-Transfer-Encoding: base64
Content-ID: <part1.01030007.03010600@xxxxxxxxxxxxxxxx>
Content-Disposition: inline;
filename="Signature_AWT.jpg"

/9j/4AAQSkZJRgABAgIATgBOAAD/4hxtSUNDX1BST0ZJTEUAAQEAABxdTGlubwIQAABtbnRy
UkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA
9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAABFjcHJ0AAABUAAAADNkZXNjAAABgwAAAGx3dHB0AAAB7wAAABRia3B0AAACAwAA
ABRyWFlaAAACFwAAABRnWFlaAAACKwAAABRiWFlaAAACPwAAABRkbW5kAAACUwAAAHBkbWRk
AAACwwAAAIh2dWVkAAADSwAAAIZ2aWV3AAAD0QAAACRsdW1pAAAD9QAAABRtZWFzAAAECQAA
ACR0ZWNoAAAELQAAAAxyVFJDAAAEOQAACAxnVFJDAAAMRQAACAxiVFJDAAAUUQAACAx0ZXh0
AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQBkZXNjAAAA
AAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAA
AAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BY
WVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVD
IGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAA
LklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAA
AAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAA
AAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRp
b24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0
aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk
/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAA
AAABAAAAAAAAAo8AAAACAAAAAAAAAAAAAAAAc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAA
BQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYA
iwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMB
GQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB
2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC
1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYE
EwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYF
lgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08H
YQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJ
eQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL
4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8O
mw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwR
qhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAV
EhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y
1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc
9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUgh
dSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3Jicm
VyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2kr
nSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIx
SjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3
YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE9
4D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpE
zkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM
KkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT
9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+Vc
NVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk
6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbblu
Em5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3
s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuB
zYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yM
Y4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqX
dZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopaj
BqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGv
Fq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67
p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3I
vMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHW
VdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vk
c+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz
GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9jdXJ2AAAA
AAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIA
dwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsB
AQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEB
uQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqIC
rAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD
4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkF
WAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcH
GQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJ
JQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kL
gAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMO
Lg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMR
MRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoU
ixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsY
QBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCoc
Uhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJgg
xCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgl
lyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsq
zysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUw
bDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2
cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ8
4z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31D
wEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRL
DEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS
x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa
9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Nj
l2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFds
r20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2
Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WA
R4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSK
yoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+V
yZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNih
R6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCt
RK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5
wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbG
w8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bU
SdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4czi
U+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw
5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23/
/2N1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4A
YwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA
6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIB
mgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoC
hAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6ID
rgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0F
HAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG
0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I
0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsL
Igs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakN
ww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQ
uRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UU
BhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kX
rhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4ob
shvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+og
FSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk
2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAq
Aio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ov
kS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01
hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o7
6DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJC
tUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ
8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBR
m1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZ
uFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfVi
SWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdr
T2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0
zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+
wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6J
M4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aU
IJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2f
i5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKr
davprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i3
4LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHE
zsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7S
P9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/g
NuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7iju
tO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9
uv5L/tz/bf///8AAEQgAYgBkAwERAAIRAQMRAf/bAIQABgQFBgUEBgYFBgcHBggKEQsKCQkK
FQ8QDBEZFhoaGBYYFxsfKCEbHSUeFxgiLyMlKSosLSwbITE0MCs0KCssKwEHBwcKCQoUCwsU
KxwYHBwrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMB
AQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJB
UQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0
tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEA
PwD6poAKACgAoAKACgD5n+M/xnvn1S50Twjc/ZbS3Yxz3yfflYcEIeyjpnqa9XCYJNc9Q8/E
Ypp8sDwiS/mluDPJd3Dzk5MjSsWz65zmvR5KVrWOHmqb3PXPhV8Z9W0C/trHxJcyX+iOQhll
OZbb/aDfxKO4P4VxYnAxceamdVDFyT5Zn1jFIksSSRMHjcBlZTkEHoRXjHqDqACgAoAKACgA
oAKAI7q4htYHmupY4YUGWeRgqj6k04xcnZCbSV2cD4t+JfhuDQdVj0/WIZdQFrKIFiDNmTad
oBAx1x3rsp4Cu2m46HLPG0UmuY+MtYsZUv5YYGLwxhSZexJAJ/HOa9hxm1a1jzVKG97lbS7T
fdhJDxmsbOJqmmd/qvhyzt9AjuknRpH4KDqKqlVblysKlJKNz6h+CN3Ne/Cvw9LcEtIsBiye
pCOyj9FFeLiYqNWSXc9Og26abO4rA1CgAoAKACgAoAhvLmKztJ7q5cJBChkdj2UDJNOMXJpL
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
tuxIXJMYPfP86AHwWVqgfZbQLlyTiMDJoA//2Q==
--------------060108050600020506020003--

--------------070902080805040501030202--


Back to the top