added parsing of Attribution, KeywordList and MetadataURL to
WMSCapabilities. Thanks tschaub for the improvements to my original patch. r=tschaub (closes #2145) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9499 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -98,8 +98,11 @@ OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class(
|
|||||||
* Method: read_cap_Format
|
* Method: read_cap_Format
|
||||||
*/
|
*/
|
||||||
read_cap_Format: function(obj, node) {
|
read_cap_Format: function(obj, node) {
|
||||||
|
var format = this.getChildValue(node);
|
||||||
if(obj.formats) {
|
if(obj.formats) {
|
||||||
obj.formats.push(this.getChildValue(node));
|
obj.formats.push(format);
|
||||||
|
} else {
|
||||||
|
obj.format = format;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -131,6 +134,8 @@ OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class(
|
|||||||
var layer = {
|
var layer = {
|
||||||
formats: capability.request.getmap.formats || [],
|
formats: capability.request.getmap.formats || [],
|
||||||
styles: [],
|
styles: [],
|
||||||
|
metadataURLs: [],
|
||||||
|
keywords: [],
|
||||||
queryable: (node.getAttribute("queryable") === "1"
|
queryable: (node.getAttribute("queryable") === "1"
|
||||||
|| node.getAttribute("queryable") === "true")
|
|| node.getAttribute("queryable") === "true")
|
||||||
};
|
};
|
||||||
@@ -216,6 +221,53 @@ OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: read_cap_Attribution
|
||||||
|
*/
|
||||||
|
read_cap_Attribution: function(obj, node) {
|
||||||
|
var attribution = {};
|
||||||
|
this.runChildNodes(attribution, node);
|
||||||
|
obj.attribution = attribution;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: read_cap_LogoURL
|
||||||
|
*/
|
||||||
|
read_cap_LogoURL: function(obj, node) {
|
||||||
|
obj.logo = {
|
||||||
|
width: node.getAttribute("width"),
|
||||||
|
height: node.getAttribute("height")
|
||||||
|
};
|
||||||
|
this.runChildNodes(obj.logo, node);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: read_cap_MetadataURL
|
||||||
|
*/
|
||||||
|
read_cap_MetadataURL: function(layer, node) {
|
||||||
|
var metadataURL = {};
|
||||||
|
this.runChildNodes(metadataURL, node);
|
||||||
|
metadataURL.type = node.getAttribute("type");
|
||||||
|
layer.metadataURLs.push(metadataURL);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: read_cap_KeywordList
|
||||||
|
*/
|
||||||
|
read_cap_KeywordList: function(layer, node) {
|
||||||
|
var obj = layer;
|
||||||
|
this.runChildNodes(obj, node);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: read_cap_Keyword
|
||||||
|
*/
|
||||||
|
read_cap_Keyword: function(obj, node) {
|
||||||
|
if(obj.keywords) {
|
||||||
|
obj.keywords.push(this.getChildValue(node));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: read_cap_LatLonBoundingBox
|
* Method: read_cap_LatLonBoundingBox
|
||||||
*/
|
*/
|
||||||
@@ -227,7 +279,7 @@ OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class(
|
|||||||
parseFloat(node.getAttribute("maxy"))
|
parseFloat(node.getAttribute("maxy"))
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: read_cap_Style
|
* Method: read_cap_Style
|
||||||
*/
|
*/
|
||||||
@@ -241,15 +293,11 @@ OpenLayers.Format.WMSCapabilities.v1_1 = OpenLayers.Class(
|
|||||||
* Method: read_cap_LegendURL
|
* Method: read_cap_LegendURL
|
||||||
*/
|
*/
|
||||||
read_cap_LegendURL: function(style, node) {
|
read_cap_LegendURL: function(style, node) {
|
||||||
var legend = {
|
style.legend = {
|
||||||
width: node.getAttribute('width'),
|
width: node.getAttribute("width"),
|
||||||
height: node.getAttribute('height')
|
height: node.getAttribute("height")
|
||||||
};
|
};
|
||||||
var links = node.getElementsByTagName("OnlineResource");
|
this.runChildNodes(style.legend, node);
|
||||||
if(links.length > 0) {
|
|
||||||
this.read_cap_OnlineResource(legend, links[0]);
|
|
||||||
}
|
|
||||||
style.legend = legend;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
function test_read(t) {
|
function test_read(t) {
|
||||||
|
|
||||||
t.plan(13);
|
t.plan(14);
|
||||||
|
|
||||||
var format = new OpenLayers.Format.WMSCapabilities();
|
var format = new OpenLayers.Format.WMSCapabilities();
|
||||||
var obj = format.read(doc);
|
var obj = format.read(doc);
|
||||||
|
|
||||||
@@ -45,13 +45,329 @@
|
|||||||
"http://publicus.opengeo.org:80/geoserver/wms/GetLegendGraphic?VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=tiger:tiger_roads",
|
"http://publicus.opengeo.org:80/geoserver/wms/GetLegendGraphic?VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=tiger:tiger_roads",
|
||||||
"[2] correct legend url"
|
"[2] correct legend url"
|
||||||
);
|
);
|
||||||
|
t.eq(
|
||||||
|
layer.styles[0].legend.format, "image/png",
|
||||||
|
"[2] correct legend format"
|
||||||
|
);
|
||||||
t.eq(layer.queryable, true, "[2] correct queryable attribute");
|
t.eq(layer.queryable, true, "[2] correct queryable attribute");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_ogc(t) {
|
||||||
|
t.plan(12)
|
||||||
|
|
||||||
|
var xml = document.getElementById("ogcsample").firstChild.nodeValue;
|
||||||
|
var doc = new OpenLayers.Format.XML().read(xml);
|
||||||
|
|
||||||
|
var obj = new OpenLayers.Format.WMSCapabilities().read(doc);
|
||||||
|
var capability = obj.capability;
|
||||||
|
|
||||||
|
var attribution = capability.layers[2].attribution;
|
||||||
|
t.eq(attribution.title, "State College University", "attribution title parsed correctly.");
|
||||||
|
t.eq(attribution.href, "http://www.university.edu/", "attribution href parsed correctly.")
|
||||||
|
t.eq(attribution.logo.href, "http://www.university.edu/icons/logo.gif", "attribution logo url parsed correctly.");
|
||||||
|
t.eq(attribution.logo.format, "image/gif", "attribution logo format parsed correctly.");
|
||||||
|
t.eq(attribution.logo.width, "100", "attribution logo width parsed correctly.");
|
||||||
|
t.eq(attribution.logo.height, "100", "attribution logo height parsed correctly.");
|
||||||
|
|
||||||
|
var keywords = capability.layers[0].keywords;
|
||||||
|
t.eq(keywords.length, 3, "layer has 3 keywords.");
|
||||||
|
t.eq(keywords[0], "road", "1st keyword parsed correctly.");
|
||||||
|
|
||||||
|
var metadataURLs = capability.layers[0].metadataURLs;
|
||||||
|
t.eq(metadataURLs.length, 2, "layer has 2 metadata urls.");
|
||||||
|
t.eq(metadataURLs[0].type, "FGDC", "type parsed correctly.");
|
||||||
|
t.eq(metadataURLs[0].format, "text/plain", "format parsed correctly.");
|
||||||
|
t.eq(metadataURLs[0].href, "http://www.university.edu/metadata/roads.txt", "href parsed correctly.");
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
OGC example below taken from
|
||||||
|
http://schemas.opengis.net/wms/1.1.1/capabilities_1_1_1.xml
|
||||||
|
Copyright © 1994-2008 Open Geospatial Consortium, Inc. All Rights Reserved.
|
||||||
|
http://www.opengeospatial.org/ogc/document
|
||||||
|
Changes:
|
||||||
|
* fixed DTD URL
|
||||||
|
* removed comments
|
||||||
|
-->
|
||||||
|
<div id="ogcsample"><!--
|
||||||
|
<?xml version='1.0' encoding="UTF-8" standalone="no" ?>
|
||||||
|
<!DOCTYPE WMT_MS_Capabilities SYSTEM
|
||||||
|
"http://schemas.opengis.net/wms/1.1.1/capabilities_1_1_1.dtd"
|
||||||
|
[
|
||||||
|
<!ELEMENT VendorSpecificCapabilities EMPTY>
|
||||||
|
]>
|
||||||
|
|
||||||
|
<WMT_MS_Capabilities version="1.1.1" updateSequence="0">
|
||||||
|
<Service>
|
||||||
|
|
||||||
|
<Name>OGC:WMS</Name>
|
||||||
|
<Title>Acme Corp. Map Server</Title>
|
||||||
|
<Abstract>WMT Map Server maintained by Acme Corporation. Contact: webmaster@wmt.acme.com. High-quality maps showing roadrunner nests and possible ambush locations.</Abstract>
|
||||||
|
<KeywordList>
|
||||||
|
|
||||||
|
<Keyword>bird</Keyword>
|
||||||
|
<Keyword>roadrunner</Keyword>
|
||||||
|
<Keyword>ambush</Keyword>
|
||||||
|
</KeywordList>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
|
||||||
|
xlink:href="http://hostname/" />
|
||||||
|
|
||||||
|
<ContactInformation>
|
||||||
|
<ContactPersonPrimary>
|
||||||
|
<ContactPerson>Jeff deLaBeaujardiere</ContactPerson>
|
||||||
|
<ContactOrganization>NASA</ContactOrganization>
|
||||||
|
</ContactPersonPrimary>
|
||||||
|
<ContactPosition>Computer Scientist</ContactPosition>
|
||||||
|
<ContactAddress>
|
||||||
|
|
||||||
|
<AddressType>postal</AddressType>
|
||||||
|
<Address>NASA Goddard Space Flight Center, Code 933</Address>
|
||||||
|
<City>Greenbelt</City>
|
||||||
|
<StateOrProvince>MD</StateOrProvince>
|
||||||
|
<PostCode>20771</PostCode>
|
||||||
|
<Country>USA</Country>
|
||||||
|
|
||||||
|
</ContactAddress>
|
||||||
|
<ContactVoiceTelephone>+1 301 286-1569</ContactVoiceTelephone>
|
||||||
|
<ContactFacsimileTelephone>+1 301 286-1777</ContactFacsimileTelephone>
|
||||||
|
<ContactElectronicMailAddress>delabeau@iniki.gsfc.nasa.gov</ContactElectronicMailAddress>
|
||||||
|
</ContactInformation>
|
||||||
|
<Fees>none</Fees>
|
||||||
|
|
||||||
|
<AccessConstraints>none</AccessConstraints>
|
||||||
|
</Service>
|
||||||
|
<Capability>
|
||||||
|
<Request>
|
||||||
|
<GetCapabilities>
|
||||||
|
<Format>application/vnd.ogc.wms_xml</Format>
|
||||||
|
<DCPType>
|
||||||
|
<HTTP>
|
||||||
|
<Get>
|
||||||
|
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://hostname:port/path" />
|
||||||
|
</Get>
|
||||||
|
<Post>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://hostname:port/path" />
|
||||||
|
</Post>
|
||||||
|
</HTTP>
|
||||||
|
</DCPType>
|
||||||
|
|
||||||
|
</GetCapabilities>
|
||||||
|
<GetMap>
|
||||||
|
<Format>image/gif</Format>
|
||||||
|
<Format>image/png</Format>
|
||||||
|
<Format>image/jpeg</Format>
|
||||||
|
<DCPType>
|
||||||
|
<HTTP>
|
||||||
|
|
||||||
|
<Get>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://hostname:port/path" />
|
||||||
|
</Get>
|
||||||
|
</HTTP>
|
||||||
|
</DCPType>
|
||||||
|
</GetMap>
|
||||||
|
<GetFeatureInfo>
|
||||||
|
<Format>application/vnd.ogc.gml</Format>
|
||||||
|
|
||||||
|
<Format>text/plain</Format>
|
||||||
|
<Format>text/html</Format>
|
||||||
|
<DCPType>
|
||||||
|
<HTTP>
|
||||||
|
<Get>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://hostname:port/path" />
|
||||||
|
</Get>
|
||||||
|
</HTTP>
|
||||||
|
|
||||||
|
</DCPType>
|
||||||
|
</GetFeatureInfo>
|
||||||
|
<DescribeLayer>
|
||||||
|
<Format>application/vnd.ogc.gml</Format>
|
||||||
|
<DCPType>
|
||||||
|
<HTTP>
|
||||||
|
<Get>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://hostname:port/path" />
|
||||||
|
|
||||||
|
</Get>
|
||||||
|
</HTTP>
|
||||||
|
</DCPType>
|
||||||
|
</DescribeLayer>
|
||||||
|
</Request>
|
||||||
|
<Exception>
|
||||||
|
<Format>application/vnd.ogc.se_xml</Format>
|
||||||
|
<Format>application/vnd.ogc.se_inimage</Format>
|
||||||
|
|
||||||
|
<Format>application/vnd.ogc.se_blank</Format>
|
||||||
|
</Exception>
|
||||||
|
<VendorSpecificCapabilities />
|
||||||
|
<UserDefinedSymbolization SupportSLD="1" UserLayer="1" UserStyle="1"
|
||||||
|
RemoteWFS="1" />
|
||||||
|
<Layer>
|
||||||
|
|
||||||
|
<Title>Acme Corp. Map Server</Title>
|
||||||
|
<SRS>EPSG:4326</SRS>
|
||||||
|
<AuthorityURL name="DIF_ID">
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
|
||||||
|
xlink:href="http://gcmd.gsfc.nasa.gov/difguide/whatisadif.html" />
|
||||||
|
</AuthorityURL>
|
||||||
|
<Layer>
|
||||||
|
<Name>ROADS_RIVERS</Name>
|
||||||
|
<Title>Roads and Rivers</Title>
|
||||||
|
<SRS>EPSG:26986</SRS>
|
||||||
|
<LatLonBoundingBox minx="-71.63" miny="41.75" maxx="-70.78" maxy="42.90"/>
|
||||||
|
<BoundingBox SRS="EPSG:4326"
|
||||||
|
minx="-71.63" miny="41.75" maxx="-70.78" maxy="42.90" resx="0.01" resy="0.01"/>
|
||||||
|
|
||||||
|
<BoundingBox SRS="EPSG:26986"
|
||||||
|
minx="189000" miny="834000" maxx="285000" maxy="962000" resx="1" resy="1" />
|
||||||
|
<Attribution>
|
||||||
|
<Title>State College University</Title>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
|
||||||
|
xlink:href="http://www.university.edu/" />
|
||||||
|
<LogoURL width="100" height="100">
|
||||||
|
<Format>image/gif</Format>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://www.university.edu/icons/logo.gif" />
|
||||||
|
|
||||||
|
</LogoURL>
|
||||||
|
</Attribution>
|
||||||
|
<Identifier authority="DIF_ID">123456</Identifier>
|
||||||
|
<FeatureListURL>
|
||||||
|
<Format>application/vnd.ogc.se_xml"</Format>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
|
||||||
|
xlink:href="http://www.university.edu/data/roads_rivers.gml" />
|
||||||
|
</FeatureListURL>
|
||||||
|
|
||||||
|
<Style>
|
||||||
|
<Name>USGS</Name>
|
||||||
|
<Title>USGS Topo Map Style</Title>
|
||||||
|
<Abstract>Features are shown in a style like that used in USGS topographic maps.</Abstract>
|
||||||
|
<LegendURL width="72" height="72">
|
||||||
|
<Format>image/gif</Format>
|
||||||
|
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://www.university.edu/legends/usgs.gif" />
|
||||||
|
</LegendURL>
|
||||||
|
<StyleSheetURL>
|
||||||
|
<Format>text/xsl</Format>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://www.university.edu/stylesheets/usgs.xsl" />
|
||||||
|
</StyleSheetURL>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<ScaleHint min="4000" max="35000"></ScaleHint>
|
||||||
|
<Layer queryable="1">
|
||||||
|
<Name>ROADS_1M</Name>
|
||||||
|
<Title>Roads at 1:1M scale</Title>
|
||||||
|
<Abstract>Roads at a scale of 1 to 1 million.</Abstract>
|
||||||
|
<KeywordList>
|
||||||
|
<Keyword>road</Keyword>
|
||||||
|
|
||||||
|
<Keyword>transportation</Keyword>
|
||||||
|
<Keyword>atlas</Keyword>
|
||||||
|
</KeywordList>
|
||||||
|
<Identifier authority="DIF_ID">123456</Identifier>
|
||||||
|
<MetadataURL type="FGDC">
|
||||||
|
<Format>text/plain</Format>
|
||||||
|
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://www.university.edu/metadata/roads.txt" />
|
||||||
|
</MetadataURL>
|
||||||
|
<MetadataURL type="FGDC">
|
||||||
|
<Format>text/xml</Format>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://www.university.edu/metadata/roads.xml" />
|
||||||
|
</MetadataURL>
|
||||||
|
<Style>
|
||||||
|
|
||||||
|
<Name>ATLAS</Name>
|
||||||
|
<Title>Road atlas style</Title>
|
||||||
|
<Abstract>Roads are shown in a style like that used in a commercial road atlas.</Abstract>
|
||||||
|
<LegendURL width="72" height="72">
|
||||||
|
<Format>image/gif</Format>
|
||||||
|
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xlink:type="simple"
|
||||||
|
xlink:href="http://www.university.edu/legends/atlas.gif" />
|
||||||
|
</LegendURL>
|
||||||
|
|
||||||
|
</Style>
|
||||||
|
</Layer>
|
||||||
|
<Layer queryable="1">
|
||||||
|
<Name>RIVERS_1M</Name>
|
||||||
|
<Title>Rivers at 1:1M scale</Title>
|
||||||
|
<Abstract>Rivers at a scale of 1 to 1 million.</Abstract>
|
||||||
|
<KeywordList>
|
||||||
|
|
||||||
|
<Keyword>river</Keyword>
|
||||||
|
<Keyword>canal</Keyword>
|
||||||
|
<Keyword>waterway</Keyword>
|
||||||
|
</KeywordList>
|
||||||
|
</Layer>
|
||||||
|
</Layer>
|
||||||
|
<Layer queryable="1">
|
||||||
|
|
||||||
|
<Title>Weather Forecast Data</Title>
|
||||||
|
<SRS>EPSG:4326</SRS>
|
||||||
|
<LatLonBoundingBox minx="-180" miny="-90" maxx="180" maxy="90" />
|
||||||
|
<Dimension name="time" units="ISO8601" />
|
||||||
|
<Extent name="time" default="2000-08-22">1999-01-01/2000-08-22/P1D</Extent>
|
||||||
|
<Layer>
|
||||||
|
|
||||||
|
<Name>Clouds</Name>
|
||||||
|
<Title>Forecast cloud cover</Title>
|
||||||
|
</Layer>
|
||||||
|
<Layer>
|
||||||
|
<Name>Temperature</Name>
|
||||||
|
<Title>Forecast temperature</Title>
|
||||||
|
</Layer>
|
||||||
|
<Layer>
|
||||||
|
|
||||||
|
<Name>Pressure</Name>
|
||||||
|
<Title>Forecast barometric pressure</Title>
|
||||||
|
<Dimension name="time" units="ISO8601" />
|
||||||
|
<Dimension name="elevation" units="EPSG:5030" />
|
||||||
|
<Extent name="time" default="2000-08-22">1999-01-01/2000-08-22/P1D</Extent>
|
||||||
|
<Extent name="elevation" default="0" nearestValue="1">0,1000,3000,5000,10000</Extent>
|
||||||
|
|
||||||
|
</Layer>
|
||||||
|
</Layer>
|
||||||
|
<Layer opaque="1" noSubsets="1" fixedWidth="512" fixedHeight="256">
|
||||||
|
<Name>ozone_image</Name>
|
||||||
|
<Title>Global ozone distribution (1992)</Title>
|
||||||
|
<LatLonBoundingBox minx="-180" miny="-90" maxx="180" maxy="90" />
|
||||||
|
<Extent name="time" default="1992">1992</Extent>
|
||||||
|
|
||||||
|
</Layer>
|
||||||
|
<Layer cascaded="1">
|
||||||
|
<Name>population</Name>
|
||||||
|
<Title>World population, annual</Title>
|
||||||
|
<LatLonBoundingBox minx="-180" miny="-90" maxx="180" maxy="90" />
|
||||||
|
<Extent name="time" default="2000">1990/2000/P1Y</Extent>
|
||||||
|
|
||||||
|
</Layer>
|
||||||
|
</Layer>
|
||||||
|
</Capability>
|
||||||
|
</WMT_MS_Capabilities>
|
||||||
|
--></div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user