<?php |
<?php |
|
|
/* |
/* |
* Copyright 2010,2011 Alexander Sadleir |
* Copyright 2010,2011 Alexander Sadleir |
|
|
Licensed under the Apache License, Version 2.0 (the "License"); |
Licensed under the Apache License, Version 2.0 (the "License"); |
you may not use this file except in compliance with the License. |
you may not use this file except in compliance with the License. |
You may obtain a copy of the License at |
You may obtain a copy of the License at |
|
|
http://www.apache.org/licenses/LICENSE-2.0 |
http://www.apache.org/licenses/LICENSE-2.0 |
|
|
Unless required by applicable law or agreed to in writing, software |
Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, |
distributed under the License is distributed on an "AS IS" BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and |
See the License for the specific language governing permissions and |
limitations under the License. |
limitations under the License. |
*/ |
*/ |
|
|
// Copyright 2009 Google Inc. All Rights Reserved. |
// Copyright 2009 Google Inc. All Rights Reserved. |
$GA_ACCOUNT = "MO-22173039-1"; |
$GA_ACCOUNT = "MO-22173039-1"; |
$GA_PIXEL = "/lib/ga.php"; |
$GA_PIXEL = "/lib/ga.php"; |
|
|
function googleAnalyticsGetImageUrl() { |
function googleAnalyticsGetImageUrl() { |
global $GA_ACCOUNT, $GA_PIXEL; |
global $GA_ACCOUNT, $GA_PIXEL; |
//if (stristr($_SERVER['HTTP_USER_AGENT'], 'Googlebot') return ""; |
//if (stristr($_SERVER['HTTP_USER_AGENT'], 'Googlebot') return ""; |
$url = ""; |
$url = ""; |
$url.= $GA_PIXEL . "?"; |
$url.= $GA_PIXEL . "?"; |
$url.= "utmac=" . $GA_ACCOUNT; |
$url.= "utmac=" . $GA_ACCOUNT; |
$url.= "&utmn=" . rand(0, 0x7fffffff); |
$url.= "&utmn=" . rand(0, 0x7fffffff); |
$referer = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : ""); |
$referer = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : ""); |
$query = $_SERVER["QUERY_STRING"]; |
$query = $_SERVER["QUERY_STRING"]; |
$path = $_SERVER["REQUEST_URI"]; |
$path = $_SERVER["REQUEST_URI"]; |
if (empty($referer)) { |
if (empty($referer)) { |
$referer = "-"; |
$referer = "-"; |
} |
} |
$url.= "&utmr=" . urlencode($referer); |
$url.= "&utmr=" . urlencode($referer); |
if (!empty($path)) { |
if (!empty($path)) { |
$url.= "&utmp=" . urlencode($path); |
$url.= "&utmp=" . urlencode($path); |
} |
} |
$url.= "&guid=ON"; |
$url.= "&guid=ON"; |
return str_replace("&", "&", $url); |
return str_replace("&", "&", $url); |
} |
} |
|
|
function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false) { |
function include_header($pageTitle, $pageType, $opendiv = true, $geolocate = false, $datepicker = false) { |
global $basePath, $GTFSREnabled; |
global $basePath, $GTFSREnabled, $stopid, $routeid; |
echo ' |
echo ' |
<!DOCTYPE html> |
<!DOCTYPE html> |
<html lang="en"> |
<html lang="en"> |
<head> |
<head> |
<meta charset="UTF-8"> |
<meta charset="UTF-8"> |
<meta name="viewport" content="width=device-width, initial-scale=1"> |
<meta name="viewport" content="width=device-width, initial-scale=1"> |
<title>' . $pageTitle . ' - Canberra Bus Timetable</title> |
<title>' . $pageTitle . ' - Canberra Bus Timetable</title> |
<meta name="google-site-verification" content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" /> |
<meta name="google-site-verification" content="-53T5Qn4TB_de1NyfR_ZZkEVdUNcNFSaYKSFkWKx-sY" /> |
<link rel="dns-prefetch" href="//code.jquery.com"> |
<link rel="dns-prefetch" href="//code.jquery.com"> |
<link rel="dns-prefetch" href="//ajax.googleapis.com"> |
<link rel="dns-prefetch" href="//ajax.googleapis.com"> |
<link rel="stylesheet" href="' . $basePath . 'css/jquery-ui-1.8.12.custom.css" />'; |
<link rel="stylesheet" href="' . $basePath . 'css/jquery-ui-1.8.12.custom.css" />'; |
$jqmVersion = "1.0.1"; |
$jqmVersion = "1.0.1"; |
if (isDebugServer()) { |
if (isDebugServer()) { |
$jqmcss = $basePath . "css/jquery.mobile-$jqmVersion.css"; |
$jqmcss = $basePath . "css/jquery.mobile-$jqmVersion.css"; |
$jqjs = $basePath . "js/jquery-1.6.4.min.js"; |
$jqjs = $basePath . "js/jquery-1.6.4.min.js"; |
$jqmjs = $basePath . "js/jquery.mobile-$jqmVersion.js"; |
$jqmjs = $basePath . "js/jquery.mobile-$jqmVersion.js"; |
|
|
$jqmcss = $basePath . "css/jquery.mobile-b90eab4935.css"; |
$jqmcss = $basePath . "css/jquery.mobile-b90eab4935.css"; |
$jqmjs = $basePath . "js/jquery.mobile-b90eab4935.js"; |
$jqmjs = $basePath . "js/jquery.mobile-b90eab4935.js"; |
} else { |
} else { |
$jqmcss = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.css"; |
$jqmcss = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.css"; |
$jqjs = "//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"; |
$jqjs = "//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"; |
$jqmjs = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.js"; |
$jqmjs = "//code.jquery.com/mobile/$jqmVersion/jquery.mobile-$jqmVersion.min.js"; |
|
|
} |
} |
echo '<link rel="stylesheet" href="' . $jqmcss . '" /> |
echo '<link rel="stylesheet" href="' . $jqmcss . '" /> |
<script src="' . $jqjs . '"></script> |
<script src="' . $jqjs . '"></script> |
<script>$(document).bind("mobileinit", function(){ |
<script>$(document).bind("mobileinit", function(){ |
$.mobile.ajaxEnabled = false; |
$.mobile.ajaxEnabled = false; |
}); |
}); |
</script> |
</script> |
<script src="' . $jqmjs . '"></script> |
<script src="' . $jqmjs . '"></script> |
|
|
<script src="' . $basePath . 'js/jquery.ui.core.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.core.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.position.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.position.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.widget.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.widget.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.autocomplete.min.js"></script> |
<script src="' . $basePath . 'js/jquery.ui.autocomplete.min.js"></script> |
<script> |
<script> |
$(function() { |
$(function() { |
$( "#geolocate" ).autocomplete({ |
$( "#geolocate" ).autocomplete({ |
source: "lib/autocomplete.php", |
source: "lib/autocomplete.php", |
minLength: 2 |
minLength: 2 |
}); |
}); |
$( "#from" ).autocomplete({ |
$( "#from" ).autocomplete({ |
source: "lib/autocomplete.php", |
source: "lib/autocomplete.php", |
minLength: 2 |
minLength: 2 |
}); |
}); |
$( "#to" ).autocomplete({ |
$( "#to" ).autocomplete({ |
source: "lib/autocomplete.php", |
source: "lib/autocomplete.php", |
minLength: 2 |
minLength: 2 |
}); |
}); |
}); |
}); |
</script>'; |
</script>'; |
echo '<style type="text/css">'; |
echo '<style type="text/css">'; |
if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android')) |
if (strstr($_SERVER['HTTP_USER_AGENT'], 'Android')) |
echo '.ui-shadow,.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,.ui-body-b,.ui-btn-up-b,.ui-btn-hover-b, |
echo '.ui-shadow,.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a,.ui-body-b,.ui-btn-up-b,.ui-btn-hover-b, |
.ui-btn-down-b,.ui-bar-c,.ui-body-c,.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c,.ui-bar-c,.ui-body-d, |
.ui-btn-down-b,.ui-bar-c,.ui-body-c,.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c,.ui-bar-c,.ui-body-d, |
.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d,.ui-bar-d,.ui-body-e,.ui-btn-up-e,.ui-btn-hover-e, |
.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d,.ui-bar-d,.ui-body-e,.ui-btn-up-e,.ui-btn-hover-e, |
.ui-btn-down-e,.ui-bar-e,.ui-overlay-shadow,.ui-shadow,.ui-btn-active,.ui-body-a,.ui-bar-a { |
.ui-btn-down-e,.ui-bar-e,.ui-overlay-shadow,.ui-shadow,.ui-btn-active,.ui-body-a,.ui-bar-a { |
text-shadow: none; |
text-shadow: none; |
box-shadow: none; |
box-shadow: none; |
-webkit-box-shadow: none; |
-webkit-box-shadow: none; |
}'; |
}'; |
echo '</style>'; |
echo '</style>'; |
echo '<link rel="stylesheet" href="' . $basePath . 'css/local.css.php" />'; |
echo '<link rel="stylesheet" href="' . $basePath . 'css/local.css.php" />'; |
if (isIOSDevice()){ |
if (isIOSDevice()) { |
echo '<meta name="apple-mobile-web-app-capable" content="yes" /> |
echo '<meta name="apple-mobile-web-app-capable" content="yes" /> |
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> |
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> |
<link rel="apple-touch-startup-image" href="startup.png" /> |
<link rel="apple-touch-startup-image" href="startup.png" /> |
<link rel="apple-touch-icon" href="apple-touch-icon.png" />'; |
<link rel="apple-touch-icon" href="apple-touch-icon.png" />'; |
} |
} |
if ($geolocate) { |
if ($geolocate) { |
echo "<script> |
echo "<script> |
|
|
function success(position) { |
function success(position) { |
$('#error').val('Location now detected. Please wait for data to load.'); |
$('#error').val('Location now detected. Please wait for data to load.'); |
$('#geolocate').val(position.coords.latitude+','+position.coords.longitude); |
$('#geolocate').val(position.coords.latitude+','+position.coords.longitude); |
$.ajax({ async: false, |
$.ajax({ async: false, |
success: function(){ |
success: function(){ |
location.reload(true); |
location.reload(true); |
}, |
}, |
url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude }); |
url: \"include/common.inc.php?geolocate=yes&lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude }); |
} |
} |
function error(msg) { |
function error(msg) { |
$('#error').val('Error: '+msg); |
$('#error').val('Error: '+msg); |
} |
} |
|
|
function geolocate() { |
function geolocate() { |
if (navigator.geolocation) { |
if (navigator.geolocation) { |
var options = { |
var options = { |
enableHighAccuracy: true, |
enableHighAccuracy: true, |
timeout: 60000, |
timeout: 60000, |
maximumAge: 10000 |
maximumAge: 10000 |
} |
} |
navigator.geolocation.getCurrentPosition(success, error, options); |
navigator.geolocation.getCurrentPosition(success, error, options); |
} |
} |
} |
} |
$(document).ready(function() { |
$(document).ready(function() { |
$('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;}); |
$('#here').click(function(event) { $('#geolocate').val(geolocate()); return false;}); |
$('#here').show(); |
$('#here').show(); |
}); |
}); |
"; |
"; |
if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") |
if (!isset($_SESSION['lat']) || $_SESSION['lat'] == "") |
echo "geolocate();"; |
echo "geolocate();"; |
echo "</script> "; |
echo "</script> "; |
} |
} |
if (isAnalyticsOn()) |
if (isAnalyticsOn()) |
echo ' |
echo ' |
<script type="text/javascript">' . " |
<script type="text/javascript">' . " |
|
|
var _gaq = _gaq || []; |
var _gaq = _gaq || []; |
_gaq.push(['_setAccount', 'UA-22173039-1']); |
_gaq.push(['_setAccount', 'UA-22173039-1']); |
_gaq.push(['_trackPageview']); |
_gaq.push(['_trackPageview']); |
_gaq.push(['_trackPageLoadTime']); |
_gaq.push(['_trackPageLoadTime']); |
</script>"; |
</script>"; |
echo '</head> |
echo '</head> |
<body> |
<body> |
<div id="skip"> |
<div id="skip"> |
<a href="#maincontent">Skip to content</a> |
<a href="#maincontent">Skip to content</a> |
</div> |
</div> |
'; |
'; |
if ($opendiv) { |
if ($opendiv) { |
echo '<div data-role="page"> |
echo '<div data-role="page"> |
<div data-role="header" data-position="inline"> |
<div data-role="header" data-position="inline"> |
<a href="' . (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "javascript:history.go(-1)") . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a> |
<a href="' . (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "javascript:history.go(-1)") . '" data-icon="arrow-l" data-rel="back" class="ui-btn-left">Back</a> |
<h1>' . $pageTitle . '</h1> |
<h1>' . $pageTitle . '</h1> |
<a href="' . $basePath . '/index.php" data-icon="home" class="ui-btn-right">Home</a> |
<a href="' . $basePath . '/index.php" data-icon="home" class="ui-btn-right">Home</a> |
</div><!-- /header --> |
</div><!-- /header --> |
<a name="maincontent" id="maincontent"></a> |
<a name="maincontent" id="maincontent"></a> |
<div data-role="content"> '; |
<div data-role="content"> '; |
if ($GTFSREnabled) { |
if ($GTFSREnabled) { |
$overrides = getServiceOverride(); |
$overrides = getServiceOverride(); |
if (isset($overrides['service_id'])) { |
if (isset($overrides['service_id'])) { |
if ($overrides['service_id'] == "noservice") { |
if ($overrides['service_id'] == "noservice") { |
echo '<div id="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a |
echo '<div id="servicewarning">Buses are <strong>not running today</strong> due to industrial action/public holiday. See <a |
href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>'; |
href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>'; |
} else { |
} else { |
echo '<div id="servicewarning">Buses are running on an altered timetable today due to industrial action/public holiday. See <a href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>'; |
echo '<div id="servicewarning">Buses are running on an altered timetable today due to industrial action/public holiday. See <a href="http://www.action.act.gov.au">http://www.action.act.gov.au</a> for details.</div>'; |
} |
} |
} |
} |
$serviceAlerts = getServiceAlertsAsArray("agency", "0"); |
$serviceAlerts = Array(); |
|
$globalAlerts = getServiceAlertsAsArray("agency", "0"); |
|
if ($globalAlerts != null) { |
|
// echo "getting alerts due to network wide"; |
|
$serviceAlerts = array_merge($serviceAlerts, $globalAlerts); |
|
} |
|
if (isset($stopid)) { |
|
$stopAlerts = getServiceAlertsAsArray("stop", $stopid); |
|
if ($stopAlerts != null) { |
|
// echo "getting alerts due to stop $stopid"; |
|
$serviceAlerts = array_merge($serviceAlerts, $stopAlerts); |
|
} |
|
} |
|
if (isset($routeid)) { |
|
$routeAlerts = getServiceAlertsAsArray("route", $routeid); |
|
if ($routeAlerts != null) { |
|
// echo "getting alerts due to route $routeid"; |
|
$serviceAlerts = array_merge($serviceAlerts, $routeAlerts); |
|
} |
|
} |
if (isset($serviceAlerts['entity']) && sizeof($serviceAlerts['entity']) > 0) { |
if (isset($serviceAlerts['entity']) && sizeof($serviceAlerts['entity']) > 0) { |
foreach ($serviceAlerts['entity'] as $entity) { |
foreach ($serviceAlerts['entity'] as $entity) { |
echo "<div id='servicewarning'>" . date("F j, g:i a", strtotime($entity['alert']['active_period'][0]['start'])) . " to " . date("F j, g:i a", strtotime($entity['alert']['active_period'][0]['end'])) . "{$entity['alert']['header_text']['translation'][0]['text']}<br>Warning: {$entity['alert']['description_text']['translation'][0]['text']} |
echo "<div id='servicewarning'><b>{$entity['alert']['header_text']['translation'][0]['text']}</b> <small>" |
|
. date("F jS Y, g:i a", $entity['alert']['active_period'][0]['start']) . " to " |
|
. date("F jS Y, g:i a", $entity['alert']['active_period'][0]['end']) . "</small> |
|
<br>Warning: {$entity['alert']['description_text']['translation'][0]['text']} |
<br><a href='{$entity['alert']['url']['translation'][0]['text']}'>Source</a> </div>"; |
<br><a href='{$entity['alert']['url']['translation'][0]['text']}'>Source</a> </div>"; |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
|
|
function include_footer() { |
function include_footer() { |
global $basePath; |
global $basePath; |
echo '<div id="footer"><a href="' . $basePath . 'about.php">About/Contact Us</a> <a href="' . $basePath . 'feedback.php">Feedback/Bug Report</a> <a href="' . $basePath . 'privacy.php">Privacy Policy</a>'; |
echo '<div id="footer"><a href="' . $basePath . 'about.php">About/Contact Us</a> <a href="' . $basePath . 'feedback.php">Feedback/Bug Report</a> <a href="' . $basePath . 'privacy.php">Privacy Policy</a>'; |
echo '</div>'; |
echo '</div>'; |
if (isAnalyticsOn()) { |
if (isAnalyticsOn()) { |
echo "<script> (function() { |
echo "<script> (function() { |
var ga = document.createElement('script'); ga.type = |
var ga = document.createElement('script'); ga.type = |
'text/javascript'; ga.async = true; |
'text/javascript'; ga.async = true; |
ga.src = ('https:' == document.location.protocol ? |
ga.src = ('https:' == document.location.protocol ? |
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
var s = document.getElementsByTagName('script')[0]; |
var s = document.getElementsByTagName('script')[0]; |
s.parentNode.insertBefore(ga, s); |
s.parentNode.insertBefore(ga, s); |
})();</script>"; |
})();</script>"; |
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl(); |
$googleAnalyticsImageUrl = googleAnalyticsGetImageUrl(); |
echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" /></noscript>'; |
echo '<noscript><img src="' . $googleAnalyticsImageUrl . '" alt=""/></noscript>'; |
} |
} |
echo "\n</div></div></body></html>"; |
echo "\n</div></div></body></html>"; |
} |
} |
|
|
function timeSettings() { |
function timeSettings() { |
global $service_periods; |
global $service_periods; |
echo '<div id="settings" data-role="collapsible" data-collapsed="true"> |
echo '<div id="settings" data-role="collapsible" data-collapsed="true"> |
<h3>Change Time (' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3> |
<h3>Change Time (' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : "Current Time,") . ' ' . ucwords(service_period()) . ')...</h3> |
<form action="' . basename($_SERVER['PHP_SELF']) . '" method="GET"> |
<form action="' . basename($_SERVER['PHP_SELF']) . '" method="GET"> |
<input type="hidden" name="suburb" id="suburb" value="' . (isset($_REQUEST['suburb']) ? $_REQUEST['suburb'] : "") . '"/> |
<input type="hidden" name="suburb" id="suburb" value="' . (isset($_REQUEST['suburb']) ? $_REQUEST['suburb'] : "") . '"/> |
|
|
<input type="hidden" name="stopid" id="stopid" value="' . (isset($_REQUEST['stopid']) ? $_REQUEST['stopid'] : "") . '"/> |
<input type="hidden" name="stopid" id="stopid" value="' . (isset($_REQUEST['stopid']) ? $_REQUEST['stopid'] : "") . '"/> |
<input type="hidden" name="stopcode" id="stopcode" value="' . (isset($_REQUEST['stopcode']) ? $_REQUEST['stopcode'] : "") . '"/> |
<input type="hidden" name="stopcode" id="stopcode" value="' . (isset($_REQUEST['stopcode']) ? $_REQUEST['stopcode'] : "") . '"/> |
<div class="ui-body"> |
<div class="ui-body"> |
<div data-role="fieldcontain"> |
<div data-role="fieldcontain"> |
<label for="time"> Time: </label> |
<label for="time"> Time: </label> |
<input type="time" name="time" id="time" value="' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : date("H:i")) . '"/> |
<input type="time" name="time" id="time" value="' . (isset($_REQUEST['time']) ? $_REQUEST['time'] : date("H:i")) . '"/> |
<a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();' . "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length == 1 ? '0'+ d.getMinutes(): d.getMinutes()));" . '">Current Time?</a> |
<a href="#" name="currentTime" id="currentTime" onClick="var d = new Date();' . "$('#time').val(d.getHours() +':'+ (d.getMinutes().toString().length == 1 ? '0'+ d.getMinutes(): d.getMinutes()));" . '">Current Time?</a> |
</div> |
</div> |
<div data-role="fieldcontain"> |
<div data-role="fieldcontain"> |
<label for="service_period"> Service Period: </label> |
<label for="service_period"> Service Period: </label> |
<select name="service_period" id="service_period">'; |
<select name="service_period" id="service_period">'; |
foreach ($service_periods as $service_period) { |
foreach ($service_periods as $service_period) { |
echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>'; |
echo "<option value=\"$service_period\"" . (service_period() === $service_period ? " SELECTED" : "") . '>' . ucwords($service_period) . '</option>'; |
} |
} |
|