Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a84ecce9b0 | ||
e1de2cbf77 | |||
5891da6fa5 | |||
83f97a8d65 | |||
33eba8fcfb | |||
|
2f0d08cf0a | ||
|
cbc84b434b | ||
|
5b5c0ca098 | ||
|
b6b70dde04 |
4
.gitignore
vendored
@ -1 +1,3 @@
|
||||
*.pgm
|
||||
*.pgm
|
||||
maps/
|
||||
__pycache__/
|
29
cert.pem
@ -1,29 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFCTCCAvGgAwIBAgIUSToN1sKvyyEHUX43N0x2pJ2tozYwDQYJKoZIhvcNAQEL
|
||||
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTIzMDgyMzE0NDgwMFoXDTI0MDgy
|
||||
MjE0NDgwMFowFDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAg8AMIICCgKCAgEAuz16ToP/oe0GlHELnOxXVMbQ4ygDhAoJRDW+h3AN01QP
|
||||
GD8hKByM5QKUd1bnUa40jKeENerJLVpwvYW+wksIw8OEoU+XKLQav59LkumMx94Y
|
||||
92vhfYPEdjJGfBSemf4GALw0GmeizeglGKQAomBN2fV0Wege77T6aE3GSafzmgWk
|
||||
WKIXLzYd0C+fzMUnf7TtbpacG71D1VAryedq2/srR6ZnrP92SyWB6vJt9kdFxhie
|
||||
V0zdrmiLhKbj4QBHn2ZfBzBe33eLHEJc7DlQ7fkQr58PVnF35h0lIYC2YdZjGSIe
|
||||
1r12HGCvjDlDX3ygznsnMIIOGPd78vzpiVUlIk1MLqS4FeAMqyTFuljZ7UjG2+Yf
|
||||
p+9gJ/3vfbCiWmtwJOuZvCeXvCwUGlvJH7aFan9UKG0OCuIOBY+8ZqkbgKQ8lCNv
|
||||
hk5HD8z49pa2u9Tzau68KMLOIhJ000sPW17RrWTrQK0izLeNmxlUvNFtg65pCpE7
|
||||
yUinlKVfBjPraK1htuZL/E0MZ1sq9YV/VbjFQnrhad1bZ+DvLRuX2Ehd8gsUt6UL
|
||||
hQW3vq7GmXo0u+xT1XIkCEYdNUGo4xXKr925MmcRVa6gR5dsAuAoQ5cN/5z4wnJt
|
||||
eNonakERtPomAC/ACTsbr3RjpG6h0jPHXta5XC+PKydV9riuk/LAIRIF0dKGfHUC
|
||||
AwEAAaNTMFEwHQYDVR0OBBYEFKL/qoyl0fc1f6VBhW5GJDpae5a7MB8GA1UdIwQY
|
||||
MBaAFKL/qoyl0fc1f6VBhW5GJDpae5a7MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
|
||||
hvcNAQELBQADggIBADoEzbUqOiTbTOppCRP3q+l8Z3mlymtZgz/BcyGms+8B2LMC
|
||||
xSJ88+lkg23XG8KQ+oIOHDaLBsVUePeSLLt3MAtDMbBEDUsUf2nWK+l3IbNlMxTn
|
||||
1beb/FM1QRwLfbqGvVi7afpZvLH7wJc2SCv+996eW/Hau5yDxntqupjAd1G7pDrJ
|
||||
PQMJhmWg1VQHxBC1MyMVdz8r4nqBSIKN5XMxdrZitXOa6c2b2/SvolGN6UEUD1at
|
||||
LAbS1nXloBNVuOrmTCxRxCKxec8+2qs4QOc/Ux7jF9Q65TkW1IkucnDaOluDcufY
|
||||
n4GQXaRFyQJInoGpWlOM3hJ2ZlhlQj+tjuvTyu7uWCINC4r0bYqpIpY4mWzXKRFT
|
||||
e5M4nVy8YukjsM82zZRvXdD8Mlfuxb8xkpQBdqVClO24TSjZOCAw4qsizpV/N7S9
|
||||
NmQ5+2CI4l3KvhH1gAjtXvNOOicn7laXDtz5wc1fZxmUptQQp5JXFtSguLpJpGli
|
||||
r7s8wRPnVJW3HhjNIzYIzOm3J4dtl1+ZqHGfeFes+8ty2HAJK1AmnRvt8UQK3VjR
|
||||
YrlzbM6+cjzmJQ3S3LTXOi0Zssf6SQspCaAMP8hUXhZyi8y7PMNHpp/LuUEFox03
|
||||
/L8X5DB9SXofdFp+1jVh6WZCV8wt39Fxo+l+5afpeIc138XOkgvsrBFNzTi9
|
||||
-----END CERTIFICATE-----
|
27
config/box_filter.yaml
Normal file
@ -0,0 +1,27 @@
|
||||
scan_to_scan_filter_chain:
|
||||
ros__parameters:
|
||||
filter1:
|
||||
name: box_filter
|
||||
type: laser_filters/LaserScanBoxFilter
|
||||
params:
|
||||
box_frame: laser_frame
|
||||
max_x: 0.80 #was 0.16
|
||||
max_y: 0.18 #was 0.17
|
||||
max_z: 0.1
|
||||
min_x: -0.41 #was -0.41
|
||||
min_y: -0.18 # was -0.17
|
||||
min_z: -0.2
|
||||
invert: false # activate to remove all points outside of the box
|
||||
name: shadows
|
||||
type: laser_filters/ScanShadowsFilter
|
||||
params:
|
||||
min_angle: 10
|
||||
max_angle: 170
|
||||
neighbors: 20
|
||||
window: 1
|
||||
name: dark_shadows
|
||||
type: laser_filters/LaserScanIntensityFilter
|
||||
params:
|
||||
lower_threshold: 100
|
||||
upper_threshold: 10000
|
||||
disp_histogram: 0
|
34
config/caddy/Caddyfile
Normal file
@ -0,0 +1,34 @@
|
||||
# {
|
||||
# debug
|
||||
# }
|
||||
|
||||
http://cps-seggy {
|
||||
root * /usr/share/caddy
|
||||
file_server browse
|
||||
|
||||
handle_path /config* {
|
||||
reverse_proxy http://olivetin:1337
|
||||
}
|
||||
|
||||
handle_path /viz* {
|
||||
reverse_proxy http://foxglove:8080
|
||||
}
|
||||
|
||||
# this is not working right now
|
||||
handle_path /joy* {
|
||||
reverse_proxy http://host.docker.internal:8000
|
||||
}
|
||||
}
|
||||
|
||||
http://cps-seggy.local {
|
||||
root * /usr/share/caddy
|
||||
file_server browse
|
||||
|
||||
handle_path /config {
|
||||
reverse_proxy http://olivetin:1337
|
||||
}
|
||||
|
||||
handle_path /viz* {
|
||||
reverse_proxy http://foxglove:8080
|
||||
}
|
||||
}
|
BIN
config/caddy/content/overview/CPS_Logo_White_square_TRANSP.png
Normal file
After Width: | Height: | Size: 14 KiB |
1
config/caddy/content/overview/blueprint.svg
Normal file
After Width: | Height: | Size: 5.8 KiB |
95
config/caddy/content/overview/index.html
Normal file
@ -0,0 +1,95 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<!-- ersetze die Links + QR Codes unter den Kommentaren -->
|
||||
|
||||
<head>
|
||||
<title>CPS Bot Overview</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
|
||||
<header>
|
||||
<h1 id="HEADLINE">CPS Seggy Overview<img src="CPS_Logo_White_square_TRANSP.png" id="LOGO"></h1>
|
||||
</header>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="box" id="RIGHT">
|
||||
<div id="BLOCK_ONE">
|
||||
<p class="mini-heads">Teleop:</p>
|
||||
<!-- again -->
|
||||
<!-- Replace link at href -->
|
||||
<!-- hier Link zu Joystick -->
|
||||
<a href="http://cps-seggy.local:8000/">
|
||||
<img src="joystick.png" class="qr qr_2"></a>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div id="BLOCK_ONE">
|
||||
<p class="mini-heads">Robot Configuration:</p>
|
||||
<!-- again -->
|
||||
<!-- Replace link at href -->
|
||||
<!-- hier Link zu WebGui -->
|
||||
<a href="/config/">
|
||||
<img src="wrench.svg" class="qr qr_2"></a>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<p id="SPACE"> </p>
|
||||
|
||||
<div id="BLOCK_TWO">
|
||||
<p class="mini-heads">Data View:</p>
|
||||
<!-- again -->
|
||||
<!-- hier Link zu Manual -->
|
||||
<a href="/viz/">
|
||||
<img src="safety-glasses.svg" class="qr qr_2">
|
||||
</a>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<p id="SPACE"> </p>
|
||||
|
||||
<div id="BLOCK_THREE">
|
||||
<p class="mini-heads">Manual:</p>
|
||||
<!-- again -->
|
||||
<!-- hier Link zu Manual -->
|
||||
<a href="https://cps.unileoben.ac.at">
|
||||
<img src="blueprint.svg" class="qr qr_2">
|
||||
</a>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="box" id="LEFT">
|
||||
<p class="mini-heads">Connect to Wi-Fi:</p>
|
||||
<!-- replace mit relativen Link!!!, bei mir spinnts und es wird das gebrochene Bild symbol angezeigt. Anders geht
|
||||
es allerdings, falls nicht bei dir sags mir -->
|
||||
<img src="qr-loki.wifi.svg" class="qr">
|
||||
<div id="NORM_SET">
|
||||
<table>
|
||||
<tr>
|
||||
<td>SSID:</td>
|
||||
<td>cps-loki</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Password: </td>
|
||||
<td>cps-loki</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="info">
|
||||
<!-- Link zum Lehrstuhl, einfach den ganzen Div Block rausnehmen falls du das nicht willst -->
|
||||
<a href="https://cps.unileoben.ac.at/">Check us out!</a>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
|
||||
</html>
|
BIN
config/caddy/content/overview/joystick.png
Normal file
After Width: | Height: | Size: 21 KiB |
508
config/caddy/content/overview/qr-loki-config.svg
Normal file
@ -0,0 +1,508 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="1160px" height="1160px" viewBox="0 0 1160 1160" enable-background="new 0 0 1160 1160" xml:space="preserve">
|
||||
<rect x="0" y="0" width="1160" height="1160" fill="rgb(255,255,255)" /><g transform="translate(80,80)"><g transform="translate(320,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,40) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,40) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,40) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,40) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,280) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,280) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,280) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,280) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(120,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(120,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(200,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(200,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(120,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(200,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(120,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,0) scale(2.8, 2.8)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(720,0) scale(2.8, 2.8)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(0,720) scale(2.8, 2.8)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(80,80) scale(1.2, 1.2)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g><g transform="translate(800,80) scale(1.2, 1.2)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g><g transform="translate(80,800) scale(1.2, 1.2)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g></g></svg>
|
After Width: | Height: | Size: 34 KiB |
728
config/caddy/content/overview/qr-loki-overview.svg
Normal file
@ -0,0 +1,728 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="1155px" height="1155px" viewBox="0 0 1155 1155" enable-background="new 0 0 1155 1155" xml:space="preserve">
|
||||
<rect x="0" y="0" width="1155" height="1155" fill="rgb(255,255,255)" /><g transform="translate(70,70)"><g transform="translate(280,0) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,0) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,0) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,0) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,0) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,0) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,35) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,35) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,35) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,35) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,35) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,35) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,35) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,35) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,70) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,70) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,70) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,70) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,70) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,105) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,105) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,105) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,105) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,140) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,140) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,140) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,140) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,140) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,140) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,140) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,175) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,175) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,175) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,175) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,175) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,175) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,175) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,210) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,210) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,210) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,210) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,210) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,210) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,210) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,245) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,245) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,245) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,245) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(140,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(210,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(735,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,280) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(70,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,315) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(70,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(210,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,350) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(35,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(70,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(140,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,385) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(210,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,420) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(70,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(140,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,455) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(35,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(70,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(140,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(210,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,490) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(35,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(735,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,525) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(35,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(70,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(210,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,560) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(140,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(175,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,595) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(35,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(70,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(210,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(735,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,630) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(35,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(735,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,665) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(35,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(70,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(105,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(210,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(245,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(735,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,700) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,735) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,770) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,805) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(735,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,840) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(385,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(735,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,875) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(735,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(945,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,910) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(350,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(420,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(455,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(525,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(770,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(805,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(875,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(910,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(980,945) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,980) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(315,980) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(490,980) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,980) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(595,980) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(630,980) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(665,980) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(700,980) scale(0.35,0.35)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,0) scale(2.45, 2.45)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(770,0) scale(2.45, 2.45)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(0,770) scale(2.45, 2.45)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(70,70) scale(1.05, 1.05)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g><g transform="translate(840,70) scale(1.05, 1.05)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g><g transform="translate(70,840) scale(1.05, 1.05)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g></g></svg>
|
After Width: | Height: | Size: 50 KiB |
552
config/caddy/content/overview/qr-loki-viz.svg
Normal file
@ -0,0 +1,552 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="1160px" height="1160px" viewBox="0 0 1160 1160" enable-background="new 0 0 1160 1160" xml:space="preserve">
|
||||
<rect x="0" y="0" width="1160" height="1160" fill="rgb(255,255,255)" /><g transform="translate(80,80)"><g transform="translate(320,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,0) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,40) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,40) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,80) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,120) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,160) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,200) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,240) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,280) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,280) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,280) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(120,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(200,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,320) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(120,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,360) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,400) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(120,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(200,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,440) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(200,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,480) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,520) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(40,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,560) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(200,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,600) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(80,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(160,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(240,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(280,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,640) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,680) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,720) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,760) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(600,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,800) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(560,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(720,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,840) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,880) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(760,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(800,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(880,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(920,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,920) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(320,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(360,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(400,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(440,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(480,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(520,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(640,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(680,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(840,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(960,960) scale(0.4,0.4)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<rect width="100" height="100"/>
|
||||
</g></g><g transform="translate(0,0) scale(2.8, 2.8)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(720,0) scale(2.8, 2.8)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(0,720) scale(2.8, 2.8)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<path style="fill:none;" d="M65.859,15.008H34.141c-4.082,0-7.869,1.258-10.979,3.398c-2.419,1.665-4.428,3.864-5.848,6.421
|
||||
C15.838,27.484,15,30.526,15,33.758v32.471c0,10.344,8.586,18.76,19.145,18.76L50,84.992l15.855-0.004
|
||||
C76.414,84.988,85,76.572,85,66.229V33.758C85,23.419,76.414,15.008,65.859,15.008z"/>
|
||||
<path d="M65.859,0.008H34.141h0C18.683,0.008,5.587,10.221,1.4,24.18c-0.433,1.444-0.771,2.928-1.006,4.445
|
||||
C0.135,30.299,0,32.013,0,33.758v32.471c0,18.619,15.32,33.76,34.141,33.76L50,99.992l15.859-0.004
|
||||
c18.82,0,34.141-15.141,34.141-33.76V33.758C100,15.148,84.68,0.008,65.859,0.008z M85,66.229c0,10.344-8.586,18.76-19.145,18.76
|
||||
L50,84.992l-15.855-0.004C23.586,84.988,15,76.572,15,66.229V33.758c0-3.231,0.838-6.273,2.313-8.931
|
||||
c1.42-2.557,3.429-4.756,5.848-6.421c3.11-2.141,6.897-3.398,10.979-3.398h31.719C76.414,15.008,85,23.419,85,33.758V66.229z"/>
|
||||
</g>
|
||||
</g></g><g transform="translate(80,80) scale(1.2, 1.2)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g><g transform="translate(800,80) scale(1.2, 1.2)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g><g transform="translate(80,800) scale(1.2, 1.2)"><g transform="" style="fill: rgb(16, 64, 102);">
|
||||
<g>
|
||||
<g id="XMLID_1_">
|
||||
<g>
|
||||
<path d="M27.351,100c-15.09,0-27.365-12.032-27.365-26.808V26.794c0-4.616,1.2-8.96,3.301-12.761
|
||||
c2.029-3.658,4.901-6.802,8.36-9.174C16.09,1.801,21.506,0,27.336,0h45.327c15.076,0,27.351,12.018,27.351,26.793v46.398
|
||||
c0,14.775-12.274,26.808-27.351,26.808H50H27.351z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g></g></g></svg>
|
After Width: | Height: | Size: 37 KiB |
1043
config/caddy/content/overview/qr-loki.wifi.svg
Normal file
After Width: | Height: | Size: 80 KiB |
1
config/caddy/content/overview/safety-glasses.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg id="icons" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><defs><style>.cls-1{fill:#b7e29c;}.cls-2{fill:#97cc83;}.cls-3{fill:#f4d647;}.cls-4{fill:#f4a742;}.cls-5{fill:#5282ef;}.cls-6{fill:#a2bdf4;}.cls-7{fill:none;stroke:#000;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}</style></defs><title>safety-glasses</title><path class="cls-1" d="M48,37a33.319,33.319,0,0,1,8.56,1.083A27.63,27.63,0,0,0,64,39a27.643,27.643,0,0,0,7.44-.917A33.308,33.308,0,0,1,80,37h22.474a1,1,0,0,0,.85-1.536C96.759,24.828,84.651,18,64,18S31.241,24.828,24.675,35.464A1,1,0,0,0,25.526,37Z"/><path class="cls-1" d="M90,91c-15.884,0-19.965-7.631-22.665-12.681C65.561,75,64.656,75,64,75s-1.56,0-3.335,3.319C57.964,83.369,53.883,91,38,91c-5.978,0-10.526-1.4-13.985-3.723a1,1,0,0,0-1.487,1.229C28.428,101.418,40.846,110,64,110s35.572-8.582,41.473-21.495a1,1,0,0,0-1.487-1.229C100.526,89.6,95.978,91,90,91Z"/><path class="cls-2" d="M67.33,78.32a26.676,26.676,0,0,0,4.57,6.64,282.35,282.35,0,0,0-15.14,24.73C38.2,108.07,27.78,100,22.53,88.51a1,1,0,0,1,1.48-1.23C27.47,89.6,32.02,91,38,91c15.88,0,19.96-7.63,22.67-12.68C62.44,75,63.34,75,64,75S65.56,75,67.33,78.32Z"/><path class="cls-2" d="M102.47,37H80a33.7,33.7,0,0,0-8.56,1.08c-.89.21-1.73.41-2.67.57A170.727,170.727,0,0,1,91.95,24.34a32.506,32.506,0,0,1,11.37,11.12A1,1,0,0,1,102.47,37Z"/><g id="_Group_" data-name="<Group>"><path class="cls-3" d="M113,46v4a2.006,2.006,0,0,1-2,2h-4.33c-.23,0-.45-.01-.68-.02a11.881,11.881,0,0,1-2.59-.43l-7.39-2.1A12,12,0,0,0,92.74,49s-10.25,2.86-27.5,2.99h-.01c-.41.01-.82.01-1.23.01-5.4,0-10.14-.27-14.14-.65h-.01A91.913,91.913,0,0,1,35.26,49a12,12,0,0,0-3.27.45l-7.39,2.1a11.881,11.881,0,0,1-2.59.43c-.23.01-.45.02-.68.02H17a2.006,2.006,0,0,1-2-2V46a4,4,0,0,1,4-4H48c7,0,8,2,16,2s9-2,16-2h29A4,4,0,0,1,113,46Z"/><path class="cls-4" d="M106.67,52h3.32c0,17-1.04,34-19.99,34C68,86,75,70,64,70S60,86,38,86C19.05,86,18.01,69,18.01,52h3.32c.23,0,.45-.01.68-.02V52c0,7.02.29,12.77,1.22,17.29a21.68,21.68,0,0,0,2.42,6.75C28.03,80.04,31.88,82,38,82c10.49,0,12.45-3.67,14.73-7.92C54.55,70.67,57.05,66,64,66s9.45,4.67,11.27,8.08C77.55,78.33,79.51,82,90,82c13.6,0,15.99-9.67,15.99-30v-.02C106.22,51.99,106.44,52,106.67,52Z"/><path class="cls-5" d="M105.99,51.98V52c0,20.33-2.39,30-15.99,30-10.49,0-12.45-3.67-14.73-7.92C73.45,70.67,70.95,66,64,66s-9.45,4.67-11.27,8.08C50.45,78.33,48.49,82,38,82c-6.12,0-9.97-1.96-12.35-5.96,6.37-7.39,18.66-18.12,39.58-24.05h.01C82.49,51.86,92.74,49,92.74,49a12,12,0,0,1,3.27.45l7.39,2.1A11.881,11.881,0,0,0,105.99,51.98Z"/><path class="cls-6" d="M64,52c.41,0,.82,0,1.23-.01C44.31,57.92,32.02,68.65,25.65,76.04a21.68,21.68,0,0,1-2.42-6.75A60.754,60.754,0,0,1,49.85,51.35h.01C53.86,51.73,58.6,52,64,52Z"/><path class="cls-5" d="M35.26,49a91.913,91.913,0,0,0,14.59,2.35A60.754,60.754,0,0,0,23.23,69.29C22.3,64.77,22.01,59.02,22.01,52v-.02a11.881,11.881,0,0,0,2.59-.43l7.39-2.1A12,12,0,0,1,35.26,49Z"/><path class="cls-7" d="M18.01,52c0,17,1.04,34,19.99,34,22,0,15-16,26-16s4,16,26,16c18.95,0,19.99-17,19.99-34"/><path class="cls-7" d="M65.24,51.99C82.49,51.86,92.74,49,92.74,49a12,12,0,0,1,3.27.45l7.39,2.1a11.881,11.881,0,0,0,2.59.43c.23.01.45.02.68.02H111a2.006,2.006,0,0,0,2-2V46a4,4,0,0,0-4-4H80c-7,0-8,2-16,2s-9-2-16-2H19a4,4,0,0,0-4,4v4a2.006,2.006,0,0,0,2,2h4.33c.23,0,.45-.01.68-.02a11.881,11.881,0,0,0,2.59-.43l7.39-2.1A12,12,0,0,1,35.26,49a91.913,91.913,0,0,0,14.59,2.35"/><path class="cls-7" d="M49.86,51.35c4,.38,8.74.65,14.14.65.41,0,.82,0,1.23-.01"/><path class="cls-7" d="M105.99,51.98V52c0,20.33-2.39,30-15.99,30-10.49,0-12.45-3.67-14.73-7.92C73.45,70.67,70.95,66,64,66s-9.45,4.67-11.27,8.08C50.45,78.33,48.49,82,38,82c-6.12,0-9.97-1.96-12.35-5.96a21.68,21.68,0,0,1-2.42-6.75C22.3,64.77,22.01,59.02,22.01,52v-.02"/><path class="cls-7" d="M23.23,69.29A60.754,60.754,0,0,1,49.85,51.35h.01"/><path class="cls-7" d="M25.65,76.04c6.37-7.39,18.66-18.12,39.58-24.05h.01"/></g></svg>
|
After Width: | Height: | Size: 3.8 KiB |
247
config/caddy/content/overview/style.css
Normal file
@ -0,0 +1,247 @@
|
||||
html
|
||||
{
|
||||
background-color: rgb(51, 51, 51);
|
||||
font-family: sans-serif;
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
|
||||
#HEADLINE
|
||||
{
|
||||
font-family:'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
|
||||
text-align: center;
|
||||
color: white;
|
||||
background-color: rgb(1, 115, 126);
|
||||
box-shadow: 0px 15px 0px -5px rgb(1, 89, 97);
|
||||
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
#LOGO
|
||||
{
|
||||
height: 1em;
|
||||
width: auto;
|
||||
|
||||
float: right;
|
||||
margin-top: 2px;
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
.mini-heads
|
||||
{
|
||||
color: white;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
#LEFT
|
||||
{
|
||||
float: left;
|
||||
max-width: 49.5%;
|
||||
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#RIGHT
|
||||
{
|
||||
float: right;
|
||||
max-width: 49.5%;
|
||||
flex-direction: row;
|
||||
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.qr
|
||||
{
|
||||
max-width: 59.5%;
|
||||
height: auto;
|
||||
|
||||
object-fit: cover;
|
||||
|
||||
border-color: black;
|
||||
border: 3px solid;
|
||||
border-radius: 10%;
|
||||
|
||||
}
|
||||
|
||||
.qr_2
|
||||
{
|
||||
width: 35%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
table, td
|
||||
{
|
||||
color: white;
|
||||
|
||||
width: 70%;
|
||||
line-height: 190%;
|
||||
border: 1px solid rgb(76, 76, 76);
|
||||
background-color: rgb(34, 34, 34);
|
||||
border-collapse: collapse;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#SPACE
|
||||
{
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
#NORM_SET
|
||||
{
|
||||
padding-top: 6px;
|
||||
}
|
||||
|
||||
.link
|
||||
{
|
||||
color: white;
|
||||
background-color: rgb(1, 115, 126);
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
border-radius: 3px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.link:hover
|
||||
{
|
||||
color: rgb(206, 206, 206);
|
||||
}
|
||||
|
||||
.link:visited
|
||||
{
|
||||
color: rgb(75, 75, 75);
|
||||
background-color: rgb(1, 89, 97);
|
||||
}
|
||||
|
||||
.info
|
||||
{
|
||||
color: white;
|
||||
|
||||
background-color: rgb(34, 34, 34);
|
||||
|
||||
padding-top: 3px;
|
||||
padding-right: 6px;
|
||||
text-indent: 6px;
|
||||
|
||||
position: fixed;
|
||||
bottom: 0px;
|
||||
right: 6px;
|
||||
|
||||
border: 1px solid rgb(76, 76, 76);
|
||||
}
|
||||
|
||||
.info:hover
|
||||
{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.info:visited
|
||||
{
|
||||
color: rgb(206, 206, 206);
|
||||
}
|
||||
|
||||
a, a:visited, a:hover, a:active {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* Phone */ /* pract. ab 400% zoom (inludkiert) am pc */
|
||||
@media only screen and (max-width : 480px)
|
||||
{
|
||||
#LEFT
|
||||
{
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
clear: both;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#RIGHT
|
||||
{
|
||||
max-width: none;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.qr
|
||||
{
|
||||
max-width: 43.9%;
|
||||
}
|
||||
|
||||
.qr_2
|
||||
{
|
||||
width: 29%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Tablet / Ipad */ /* pract. ab 200% Zoom (nicht inkludiert) am pc */
|
||||
@media only screen and (max-width : 767px) and (min-width: 481px)
|
||||
{
|
||||
#LEFT
|
||||
{
|
||||
max-width: none;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.qr
|
||||
{
|
||||
max-width: 35%;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
font-size: large;
|
||||
}
|
||||
|
||||
.mini-heads
|
||||
{
|
||||
font-size: x-large;
|
||||
}
|
||||
|
||||
#RIGHT
|
||||
{
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
#SPACE
|
||||
{
|
||||
padding: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#BLOCK_ONE
|
||||
{
|
||||
max-width: 49.5%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#BLOCK_TWO
|
||||
{
|
||||
max-width: 49.5%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#BLOCK_THREE
|
||||
{
|
||||
max-width: 49.5%;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.qr_2
|
||||
{
|
||||
max-width: 80%;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.link
|
||||
{
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.info
|
||||
{
|
||||
font-size: larger;
|
||||
}
|
||||
}
|
1
config/caddy/content/overview/wrench.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg id="icons" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><defs><style>.cls-1{fill:#9addf7;}.cls-2{fill:#65c7e5;}.cls-3{fill:#cbccd3;}.cls-4{fill:#a5a7ad;}.cls-5{fill:none;stroke:#000;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}.cls-6{opacity:0.16;}</style></defs><title>wrench</title><path class="cls-1" d="M108.91,50.84a1,1,0,0,0-1.57-.62c-5.62,4.09-10.88,5.38-15.64,6.53-3.79.92-7.06,1.71-10.22,3.9a19.456,19.456,0,0,0-3.84,3.7C66.47,78.2,51.65,95.15,42.5,105.22a1,1,0,0,0,.42,1.62A63.082,63.082,0,0,0,64,110a78.244,78.244,0,0,0,8.64-.45,49.668,49.668,0,0,0,17.25-4.75C105.07,97.12,110,81.74,110,64A74.515,74.515,0,0,0,108.91,50.84ZM73.98,18.61A77.519,77.519,0,0,0,64,18c-9.06,0-16.47,1.31-22.5,3.69A33.934,33.934,0,0,0,26.95,32.2C20.39,40.47,18,51.67,18,64a65.914,65.914,0,0,0,2.58,19.37.993.993,0,0,0,1.63.42c4.55-4.21,10.43-9.52,16.74-15.09,2.68-2.37,5.44-4.78,8.21-7.18,5.14-4.45,10.32-8.84,15.12-12.78a19.294,19.294,0,0,0,3.03-3.05c3.47-4.53,3.86-8.9,4.24-13.12.34-3.79.68-7.71,3.6-10.65l1.46-1.66A1,1,0,0,0,73.98,18.61Z"/><path class="cls-2" d="M45.74,30.99l-4.01,7A2,2,0,0,1,39.99,39H32.01a2,2,0,0,1-1.74-1.01L26.95,32.2A33.934,33.934,0,0,1,41.5,21.69a1.858,1.858,0,0,1,.23.32l4.01,7A2,2,0,0,1,45.74,30.99Z"/><path class="cls-2" d="M94.993,70.5H91.007a2,2,0,0,0-1.735,1.006l-2.006,3.5a2,2,0,0,0,0,1.989l2.006,3.5A2,2,0,0,0,91.007,81.5h3.985a2,2,0,0,0,1.735-1.006l2.006-3.5a2,2,0,0,0,0-1.989l-2.006-3.5A2,2,0,0,0,94.993,70.5Z"/><path class="cls-2" d="M47.16,61.52c-2.77,2.4-5.53,4.81-8.21,7.18a1.934,1.934,0,0,1-.68-.71l-2.01-3.5a2,2,0,0,1,0-1.98l2.01-3.5A2,2,0,0,1,40.01,58h3.98a2,2,0,0,1,1.74,1.01Z"/><path class="cls-2" d="M89.89,104.8a49.668,49.668,0,0,1-17.25,4.75l-1.53-5.65a1.991,1.991,0,0,1,.51-1.94l5.65-5.65a2,2,0,0,1,1.94-.52L87,97.9a2.011,2.011,0,0,1,1.4,1.41Z"/><g id="_Group_" data-name="<Group>"><path class="cls-3" d="M92.89,42l-1.76,3.63c-.04.08-.08.16-.13.24a1.986,1.986,0,0,1-1.47.88,1.574,1.574,0,0,1-.53-.01,1.721,1.721,0,0,1-.54-.18l-.85-.42-.61-.3-1.18-.58-1.8-.88L83,43.88l-.78-.38-.97-.48a1.274,1.274,0,0,1-.25-.15,1.869,1.869,0,0,1-.47-.46,2.012,2.012,0,0,1-.2-2.09L81,38.93l1.09-2.25a1.98,1.98,0,0,1,.91-.92,2.107,2.107,0,0,1,.73-.21,1.9,1.9,0,0,1,1.03.2l.24.12.63.31,1.37.67.43.21,1.57.78.23.11,1.77.87.02.01.95.47a2.03,2.03,0,0,1,.92,2.7Z"/><path class="cls-3" d="M94.4,16.02a2,2,0,0,1,1.66,2.86L90.14,31.7,79.35,26.67a15.038,15.038,0,0,1,3.72-6.24A14.881,14.881,0,0,1,94.4,16.02Z"/><path class="cls-4" d="M111.47,22.16c1.8,5.55,3.17,14.29-2.91,20.43-11.01,11.11-20.5,7.4-29.93,13.96a23.949,23.949,0,0,0-4.88,4.66C58.54,80.07,37.58,103.5,32.09,109.04a9.941,9.941,0,0,1-14.16,0,10.171,10.171,0,0,1,0-14.29c5.5-5.55,28.81-26.79,47.52-42.15a24.047,24.047,0,0,0,3.82-3.86c7.55-9.83,3.53-19.36,7.43-23.3l2.65,1.23L90.14,31.7l4.02,1.87a4.013,4.013,0,0,0,1.99.36l5.43-.42a4.014,4.014,0,0,0,3.53-2.86l2.54-8.43A2,2,0,0,1,111.47,22.16ZM92.89,42a2.032,2.032,0,0,0-.92-2.7l-7.21-3.55a1.987,1.987,0,0,0-2.67.93l-1.76,3.64a2.035,2.035,0,0,0,.92,2.7l7.21,3.54a1.979,1.979,0,0,0,2.67-.93ZM25.02,106A3.952,3.952,0,0,0,29,102.02,4.046,4.046,0,0,0,24.98,98,3.952,3.952,0,0,0,21,101.98,4.046,4.046,0,0,0,25.02,106Z"/><path class="cls-5" d="M79.35,26.67,76.7,25.44c-3.9,3.94.12,13.47-7.43,23.3a24.047,24.047,0,0,1-3.82,3.86C46.74,67.96,23.43,89.2,17.93,94.75a10.171,10.171,0,0,0,0,14.29,9.941,9.941,0,0,0,14.16,0c5.49-5.54,26.45-28.97,41.66-47.83a23.949,23.949,0,0,1,4.88-4.66c9.43-6.56,18.92-2.85,29.93-13.96,6.08-6.14,4.71-14.88,2.91-20.43a2,2,0,0,0-3.82.06l-2.54,8.43a4.014,4.014,0,0,1-3.53,2.86l-5.43.42a4.013,4.013,0,0,1-1.99-.36L90.14,31.7Z"/><path class="cls-5" d="M21,101.98A3.952,3.952,0,0,1,24.98,98,4.046,4.046,0,0,1,29,102.02,3.952,3.952,0,0,1,25.02,106,4.046,4.046,0,0,1,21,101.98Z"/><path class="cls-5" d="M79.35,26.67a15.038,15.038,0,0,1,3.72-6.24A14.881,14.881,0,0,1,94.4,16.02a2,2,0,0,1,1.66,2.86L90.14,31.7"/><path class="cls-5" d="M80.33,40.32l1.76-3.64a1.987,1.987,0,0,1,2.67-.93l7.21,3.55a2.032,2.032,0,0,1,.92,2.7l-1.76,3.63a1.979,1.979,0,0,1-2.67.93l-7.21-3.54A2.035,2.035,0,0,1,80.33,40.32Z"/><line class="cls-5" x1="86.72" y1="36.71" x2="83.3" y2="44.03"/><line class="cls-5" x1="90.31" y1="38.48" x2="86.9" y2="45.79"/></g><g class="cls-6"><path d="M30.172,91.172,58.879,63.879a3,3,0,0,1,4.243,4.243L35.828,96.828a4,4,0,0,1-5.8-5.514C30.072,91.269,30.127,91.215,30.172,91.172Z"/></g></svg>
|
After Width: | Height: | Size: 4.3 KiB |
35
config/olivetin/config.yaml
Normal file
@ -0,0 +1,35 @@
|
||||
showNavigation: false
|
||||
logLevel: "INFO"
|
||||
showNewVersions: false
|
||||
showFooter: false
|
||||
|
||||
actions:
|
||||
- title: "Start Navigation Stack"
|
||||
shell: docker start ros2_rmp-navigation-1
|
||||
icon: '<img src = "customIcons/nav2_start.png" width = "48px"/>'
|
||||
- title: "Stop Navigation Stack"
|
||||
shell: docker stop ros2_rmp-navigation-1
|
||||
icon: '<img src = "customIcons/nav2_stop.png" width = "48px"/>'
|
||||
- title: "Start Mapping"
|
||||
shell: docker start ros2_rmp-mapping-1
|
||||
icon: '<img src = "customIcons/mapping_start.gif" width = "48px"/>'
|
||||
- title: "Stop Mapping"
|
||||
shell: docker stop ros2_rmp-mapping-1
|
||||
icon: '<img src = "customIcons/mapping_stop.gif" width = "48px"/>'
|
||||
- title: "Restart Teleop"
|
||||
icon: '<img src = "customIcons/gamepad.png" width = "48px"/>'
|
||||
shell: docker restart ros2_rmp-teleop-1
|
||||
- title: Restart or Shutdown System
|
||||
icon: restart
|
||||
shell: systemctl {{ choice }}
|
||||
arguments:
|
||||
- name: choice
|
||||
title: Pick one
|
||||
choices:
|
||||
- value: reboot
|
||||
- value: shutdown
|
||||
# This will SSH into a server an run the command 'service httpd restart'
|
||||
# - title: Restart httpd on Server 1
|
||||
# shell: ssh bjorn@loki.local 'echo "it works"'
|
||||
# icon: ping
|
||||
# timeout: 5
|
BIN
config/olivetin/icons/gamepad.png
Normal file
After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 14 MiB After Width: | Height: | Size: 13 MiB |
BIN
config/olivetin/icons/mapping_stop.gif
Normal file
After Width: | Height: | Size: 137 KiB |
BIN
config/olivetin/icons/nav2_start.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
config/olivetin/icons/nav2_stop.gif
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
config/olivetin/icons/nav2_stop.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
config/olivetin/icons/qr-code.png
Normal file
After Width: | Height: | Size: 78 KiB |
1
config/olivetin/installation-id.txt
Normal file
@ -0,0 +1 @@
|
||||
ba1fa920-2863-4600-994f-23559acfcab2
|
@ -1,28 +1,5 @@
|
||||
version: "3.9"
|
||||
|
||||
# First network configuration. Change this to the network interface you want to use primarily. (Better configuration for multiple Network interfaces needed).
|
||||
networks:
|
||||
# rmp:
|
||||
# driver: macvlan
|
||||
# driver_opts:
|
||||
# parent: eno1 # robot network interface
|
||||
# ipam:
|
||||
# config:
|
||||
# - subnet: 192.168.0.0/24
|
||||
# gateway: 192.168.0.1
|
||||
# ip_range: 192.168.0.200/25
|
||||
# aux_addresses:
|
||||
# net-address: 192.168.0.100 #? what is this for --> to exclude addresses from buing used.
|
||||
# make new bridge network for ros
|
||||
rmp:
|
||||
driver: bridge
|
||||
# ipam:
|
||||
# config:
|
||||
# - subnet:
|
||||
|
||||
# add this mountpoint to all services: - ./customize/entrypoint.sh:/entrypoint.sh
|
||||
# Attention: child services will inherit settings from their parents. So if you set a network_mode: host in the base service, all child services will also use host networking. This is not always what you want. So be careful with this.
|
||||
|
||||
services:
|
||||
# Base image containing dependencies.
|
||||
base:
|
||||
@ -62,10 +39,6 @@ services:
|
||||
- ./config/entrypoint.sh:/entrypoint.sh
|
||||
- ./config/cyclonedds.xml:/cyclonedds.xml
|
||||
|
||||
# networks: # not using bridging anymore, instead try using all services on macvlan? let's see... shoudl word for now. Bridging does definitely not work because multicast is not supported here.
|
||||
# rmp:
|
||||
# #ipv4_address: 192.168.0.101 #actually don't need to set ips. they are set automatically by docker-compose. SHould be inherited by all child services.
|
||||
|
||||
# Overlay image containing the project specific source code.
|
||||
overlay:
|
||||
extends: base
|
||||
@ -95,10 +68,6 @@ services:
|
||||
tags:
|
||||
- ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
|
||||
target: guis
|
||||
x-bake:
|
||||
platforms:
|
||||
- linux/arm64
|
||||
- linux/amd64
|
||||
command: >
|
||||
/bin/bash
|
||||
devices:
|
||||
@ -141,8 +110,8 @@ services:
|
||||
ros2 launch cps_rmp220_support robot_lidar.launch.py serial_port:=/dev/rplidarA1
|
||||
devices:
|
||||
- /dev/rplidarA1:/dev/rplidarA1 #udevrules needed for this to work:
|
||||
# SUBSYSTEM=="tty", ATTRS{serial}=="0001", SYMLINK+="segway"
|
||||
# SUBSYSTEM=="tty", ATTRS{serial}=="3453995662b3af4f81f4a69eba5f3f29", SYMLINK+="rplidarA1"
|
||||
# SUBSYSTEM=="tty", ATTRS{serial}=="0001", SYMLINK+="segway"
|
||||
# SUBSYSTEM=="tty", ATTRS{serial}=="3453995662b3af4f81f4a69eba5f3f29", SYMLINK+="rplidarA1"
|
||||
|
||||
# Lidar filtering node.
|
||||
lidar_filter:
|
||||
@ -214,20 +183,7 @@ services:
|
||||
image: ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support rviz.launch.py
|
||||
# Needed to display graphical applications
|
||||
privileged: true # really necessary?
|
||||
environment:
|
||||
# Allows graphical programs in the container.
|
||||
- DISPLAY=${DISPLAY}
|
||||
- QT_X11_NO_MITSHM=1
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
volumes:
|
||||
# Allows graphical programs in the container.
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:rw
|
||||
- ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority
|
||||
|
||||
|
||||
# Foxglove Studio Bridge
|
||||
foxglove_bridge:
|
||||
extends: overlay
|
||||
@ -240,22 +196,14 @@ services:
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking
|
||||
network_mode: bridge
|
||||
networks:
|
||||
- caddy_network
|
||||
ports:
|
||||
- 8080:8080
|
||||
depends_on:
|
||||
- foxglove_bridge
|
||||
volumes:
|
||||
- ./foxglove/default.json:/foxglove/default-layout.json
|
||||
|
||||
# USB Camera Stream
|
||||
cam:
|
||||
extends: overlay
|
||||
command: >
|
||||
ros2 run ros2_cam_openCV cam_node
|
||||
devices:
|
||||
- /dev/video0:/dev/video0
|
||||
|
||||
- ./config/foxglove/default.json:/foxglove/default-layout.json
|
||||
|
||||
# ROS2 Frontier exploration
|
||||
explorer:
|
||||
@ -272,41 +220,41 @@ services:
|
||||
|
||||
### Images for ROS1 Interactions
|
||||
#ROS1 Bridge
|
||||
ros1bridge:
|
||||
image: ghcr.io/bjoernellens1/ros2_rmp/ros1bridge
|
||||
command: >
|
||||
ros2 run ros1_bridge dynamic_bridge --bridge-all-2to1-topics
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile
|
||||
tags:
|
||||
- ghcr.io/bjoernellens1/ros2_rmp/ros1bridge
|
||||
args:
|
||||
ROS_DISTRO: humble
|
||||
target: bridge
|
||||
x-bake:
|
||||
platforms:
|
||||
#- linux/arm64
|
||||
- linux/amd64
|
||||
# Networking and IPC for ROS 2
|
||||
network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
- ROS_MASTER_URI=http://localhost:11311 # is configured to run roscore on the robot but could change to local ros1 machine here
|
||||
# ros1bridge:
|
||||
# image: ghcr.io/bjoernellens1/ros2_rmp/ros1bridge
|
||||
# command: >
|
||||
# ros2 run ros1_bridge dynamic_bridge --bridge-all-2to1-topics
|
||||
# build:
|
||||
# context: .
|
||||
# dockerfile: docker/Dockerfile
|
||||
# tags:
|
||||
# - ghcr.io/bjoernellens1/ros2_rmp/ros1bridge
|
||||
# args:
|
||||
# ROS_DISTRO: humble
|
||||
# target: bridge
|
||||
# x-bake:
|
||||
# platforms:
|
||||
# #- linux/arm64
|
||||
# - linux/amd64
|
||||
# # Networking and IPC for ROS 2
|
||||
# network_mode: host
|
||||
# ipc: host
|
||||
# environment:
|
||||
# - ROS_DOMAIN_ID=5
|
||||
# - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
# - ROS_MASTER_URI=http://localhost:11311 # is configured to run roscore on the robot but could change to local ros1 machine here
|
||||
|
||||
#ROS1 roscore
|
||||
roscore:
|
||||
command: >
|
||||
roscore
|
||||
extends: ros1bridge
|
||||
network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
- ROS_MASTER_URI=http://localhost:11311 # is configured to run roscore on the robot but could change to local ros1 machine here
|
||||
# roscore:
|
||||
# command: >
|
||||
# roscore
|
||||
# extends: ros1bridge
|
||||
# network_mode: host
|
||||
# ipc: host
|
||||
# environment:
|
||||
# - ROS_DOMAIN_ID=5
|
||||
# - RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
# - ROS_MASTER_URI=http://localhost:11311 # is configured to run roscore on the robot but could change to local ros1 machine here
|
||||
|
||||
## Configure on ROS1 Hosts
|
||||
# seggy 192.168.0.100
|
||||
@ -338,7 +286,7 @@ services:
|
||||
ros2 launch depthai_examples stereo.launch.py
|
||||
#devices:
|
||||
#- /dev/oakd-lite:/dev/oakd-lite # need corresponding udevrules for this to work:
|
||||
# SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666", SYMLINK+="oakd-lite"
|
||||
# SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666", SYMLINK+="oakd-lite"
|
||||
#- /dev/:/dev/
|
||||
device_cgroup_rules:
|
||||
- 'c 189:* rmw'
|
||||
@ -360,25 +308,108 @@ services:
|
||||
- DISPLAY=${DISPLAY}
|
||||
- QT_X11_NO_MITSHM=1
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
|
||||
zerotier:
|
||||
image: "zyclonite/zerotier:router"
|
||||
container_name: zerotier-one
|
||||
devices:
|
||||
- /dev/net/tun
|
||||
network_mode: host
|
||||
|
||||
################################################################################################################################
|
||||
# Core Services for Web Management #
|
||||
################################################################################################################################
|
||||
caddy:
|
||||
image: caddy:latest
|
||||
networks:
|
||||
- caddy_network
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- '/var/lib/zerotier-one:/var/lib/zerotier-one'
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
- NET_RAW
|
||||
restart: unless-stopped
|
||||
- ./config/caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||
- ./config/caddy/content:/usr/share/caddy/
|
||||
restart: always
|
||||
depends_on:
|
||||
- foxglove
|
||||
- olivetin
|
||||
# roscore:
|
||||
# image: husarion/ros1-bridge:foxy-0.9.6-20230327-stable
|
||||
# command: |
|
||||
# bash -c "source /opt/ros/noetic/setup.bash && roscore"
|
||||
# network_mode: host
|
||||
# environment:
|
||||
# - ROS_DOMAIN_ID=5
|
||||
# restart: always
|
||||
|
||||
# Webui Stuff
|
||||
# need to properly setup ros1bridge initialization
|
||||
ros1bridge:
|
||||
image: husarion/ros1-bridge:foxy-0.9.6-20230327-stable
|
||||
command: |
|
||||
sh /opt/ros/noetic/setup.sh && ros2 run ros1_bridge dynamic_bridge
|
||||
network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- TZ=Europe/Amsterdam
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- ZEROTIER_ONE_LOCAL_PHYS=enp5s0 wlx00e04c5513fc # change for actual interfaces
|
||||
- ZEROTIER_ONE_USE_IPTABLES_NFT=false
|
||||
- ZEROTIER_ONE_GATEWAY_MODE=inbound # might change to both ways
|
||||
#- ZEROTIER_ONE_NETWORK_IDS= # does not really do much?
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
restart: always
|
||||
webui-joystick:
|
||||
image: husarion/webui-ros-joystick:noetic-0.0.1-20230510-stable
|
||||
network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
restart: always
|
||||
depends_on:
|
||||
- ros1bridge
|
||||
command: roslaunch webui-ros-joystick webui.launch
|
||||
olivetin:
|
||||
container_name: olivetin
|
||||
image: jamesread/olivetin
|
||||
#image: ghcr.io/bjoernellens1/cps_bot_mini_ws/olivetin
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile
|
||||
tags:
|
||||
- ghcr.io/bjoernellens1/cps_bot_mini_ws/olivetin
|
||||
target: olivetin
|
||||
x-bake:
|
||||
platforms:
|
||||
#- linux/arm64
|
||||
- linux/amd64
|
||||
user: root
|
||||
privileged: true
|
||||
volumes:
|
||||
- ./config/olivetin/:/config/ # here is config.yaml and icons located
|
||||
- ./config/olivetin/icons:/var/www/olivetin/customIcons
|
||||
- .:/repo
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
# - /var/lib/docker:/var/lib/docker
|
||||
- ~/.ssh/id_rsa:/root/.ssh/id_rsa
|
||||
networks:
|
||||
- caddy_network
|
||||
ports:
|
||||
- "1337:1337"
|
||||
restart: always
|
||||
|
||||
# Webcam stream with ffmpeg x264 compression
|
||||
# need to add ros-humble-v4l2-camera
|
||||
webcam:
|
||||
#extends: overlay
|
||||
build: https://github.com/bjoernellens1/image-transport-docker/raw/main/demo/webcam/Dockerfile.webcam
|
||||
image: husarion/image-transport:humble-4.2.0
|
||||
devices:
|
||||
- /dev/video1:/dev/video0
|
||||
- /dev/dri:/dev/dri
|
||||
volumes:
|
||||
- ./:/repo
|
||||
command: >
|
||||
ros2 launch /repo/webcam.launch.py
|
||||
ffmpeg_encoding:=libx264
|
||||
ffmpeg_preset:=ultrafast
|
||||
ffmpeg_tune:=zerolatency
|
||||
|
||||
|
||||
################################################################################################################################
|
||||
# Docker related extra stuff #
|
||||
################################################################################################################################
|
||||
networks:
|
||||
caddy_network:
|
||||
driver: bridge
|
@ -1,460 +0,0 @@
|
||||
version: "3.9"
|
||||
|
||||
# First network configuration. Change this to the network interface you want to use primarily. (Better configuration for multiple Network interfaces needed).
|
||||
networks:
|
||||
rmp:
|
||||
driver: macvlan
|
||||
driver_opts:
|
||||
parent: eno1 # robot network interface
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.0.0/24
|
||||
gateway: 192.168.0.1
|
||||
ip_range: 192.168.0.200/25
|
||||
aux_addresses:
|
||||
net-address: 192.168.0.100 #? what is this for --> to exclude addresses from buing used.
|
||||
|
||||
services:
|
||||
# Base image containing dependencies.
|
||||
base:
|
||||
image: ghcr.io/bjoernellens1/ros2_rmp/rmp:base
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile
|
||||
tags:
|
||||
- ghcr.io/bjoernellens1/ros2_rmp/rmp:base
|
||||
args:
|
||||
ROS_DISTRO: humble
|
||||
target: base
|
||||
x-bake:
|
||||
platforms:
|
||||
- linux/arm64
|
||||
- linux/amd64
|
||||
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
# Needed to display graphical applications
|
||||
#privileged: true
|
||||
environment:
|
||||
# Allows graphical programs in the container.
|
||||
- DISPLAY=${DISPLAY}
|
||||
- QT_X11_NO_MITSHM=1
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
volumes:
|
||||
# Allows graphical programs in the container.
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:rw
|
||||
- ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority
|
||||
|
||||
networks: # not using bridging anymore, instead try using all services on macvlan? let's see... shoudl word for now. Bridging does definitely not work because multicast is not supported here.
|
||||
rmp:
|
||||
#ipv4_address: 192.168.0.101 #actually don't need to set ips. they are set automatically by docker-compose. SHould be inherited by all child services.
|
||||
|
||||
# Overlay image containing the project specific source code.
|
||||
overlay:
|
||||
extends: base
|
||||
image: ghcr.io/bjoernellens1/ros2_rmp/rmp:overlay
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile
|
||||
tags:
|
||||
- ghcr.io/bjoernellens1/ros2_rmp/rmp:overlay
|
||||
target: overlay
|
||||
x-bake:
|
||||
platforms:
|
||||
- linux/arm64
|
||||
- linux/amd64
|
||||
volumes:
|
||||
- .:/repo
|
||||
command: >
|
||||
/bin/bash
|
||||
|
||||
# Additional dependencies for GUI applications
|
||||
guis:
|
||||
extends: overlay
|
||||
image: ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile
|
||||
tags:
|
||||
- ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
|
||||
target: guis
|
||||
x-bake:
|
||||
platforms:
|
||||
- linux/arm64
|
||||
- linux/amd64
|
||||
#entrypoint: /bin/bash
|
||||
command: >
|
||||
/bin/bash
|
||||
|
||||
# Robot State Publisher
|
||||
rsp:
|
||||
extends: overlay
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support rsp.launch.py
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# Controller
|
||||
controller:
|
||||
extends: base
|
||||
command: >
|
||||
ros2 run segwayrmp SmartCar --ros-args -r cmd_vel:=cmd_vel_out -p serial_full_name:=/dev/segway
|
||||
devices:
|
||||
- /dev/segway:/dev/segway
|
||||
- /dev/ttyUSB0:/dev/ttyUSB0
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
# Needed to display graphical applications
|
||||
privileged: false
|
||||
# depends_on:
|
||||
# - robot_state_publisher
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# teleop
|
||||
teleop:
|
||||
extends: base
|
||||
depends_on:
|
||||
- controller
|
||||
command: >
|
||||
ros2 launch rmp220_teleop robot_joystick.launch.py
|
||||
devices:
|
||||
- /dev/input/js0:/dev/input/js0
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
# Needed to display graphical applications
|
||||
privileged: true
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# lidar
|
||||
lidar:
|
||||
extends: overlay
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support robot_lidar.launch.py serial_port:=/dev/rplidarA1
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
# depends_on:
|
||||
# - robot_state_publisher
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
devices:
|
||||
- /dev/rplidarA1:/dev/rplidarA1 #udevrules needed for this to work:
|
||||
# SUBSYSTEM=="tty", ATTRS{serial}=="0001", SYMLINK+="segway"
|
||||
# SUBSYSTEM=="tty", ATTRS{serial}=="3453995662b3af4f81f4a69eba5f3f29", SYMLINK+="rplidarA1"
|
||||
|
||||
|
||||
# localiaztion by ekf node
|
||||
ekf:
|
||||
extends: overlay
|
||||
depends_on:
|
||||
- controller
|
||||
- rsp
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support robot_localization.launch.py
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# mapping
|
||||
mapping:
|
||||
extends: overlay
|
||||
depends_on:
|
||||
- ekf
|
||||
- rsp
|
||||
- lidar
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support robot_mapping.launch.py
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# slam-toolbox-localization
|
||||
localization:
|
||||
extends: overlay
|
||||
depends_on:
|
||||
- ekf
|
||||
- rsp
|
||||
- lidar
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support robot_mapping_localization.launch.py map_file_name:=/repo/maps/map.yaml
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# amcl_localization
|
||||
amcl:
|
||||
extends: overlay
|
||||
depends_on:
|
||||
- ekf
|
||||
- rsp
|
||||
- lidar
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support robot_amcl.launch.py map:=/repo/maps/map.yaml
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# navigation
|
||||
navigation:
|
||||
extends: overlay
|
||||
depends_on:
|
||||
- controller
|
||||
- teleop
|
||||
- rsp
|
||||
- lidar
|
||||
- ekf
|
||||
- oakd
|
||||
# command: >
|
||||
# ros2 launch cps_rmp220_support robot_navigation.launch.py
|
||||
# map_subscribe_transient_local:=true
|
||||
command: >
|
||||
ros2 launch nav2_bringup bringup_launch.py slam:=True map:=/repo/maps/map_current.sav.yaml use_sim_time:=False use_composition:=True params_file:=/overlay_ws/src/cps_rmp220_support/config/nav2_params.yaml
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# bash
|
||||
bash:
|
||||
extends: overlay
|
||||
command: >
|
||||
/bin/bash
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
# rviz2
|
||||
rviz2:
|
||||
#extends: guis
|
||||
image: ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
|
||||
# command: >
|
||||
# ros2 launch cps_rmp220_support robot_rviz2.launch.py
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support rviz.launch.py
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
network_mode: host
|
||||
ipc: host
|
||||
# Needed to display graphical applications
|
||||
privileged: true
|
||||
environment:
|
||||
# Allows graphical programs in the container.
|
||||
- DISPLAY=${DISPLAY}
|
||||
- QT_X11_NO_MITSHM=1
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
volumes:
|
||||
# Allows graphical programs in the container.
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:rw
|
||||
- ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority
|
||||
|
||||
# Foxglove Studio Bridge
|
||||
foxglove_bridge:
|
||||
extends: overlay
|
||||
command: >
|
||||
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
networks: # not using bridging anymore, instead try using all services on macvlan? let's see... shoudl word for now. Bridging does definitely not work because multicast is not supported here.
|
||||
rmp:
|
||||
ipv4_address: 192.168.0.201 #actually don't need to set ips. they are set automatically by docker-compose. SHould be inherited by all child services.
|
||||
|
||||
|
||||
# Foxglove Studio Webserver
|
||||
foxglove_webserver:
|
||||
image: ghcr.io/foxglove/studio:latest
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking
|
||||
network_mode: bridge
|
||||
ports:
|
||||
- 8080:8080
|
||||
depends_on:
|
||||
- foxglove_bridge
|
||||
volumes:
|
||||
- ./foxglove/default.json:/foxglove/default-layout.json
|
||||
|
||||
# USB Camera Stream
|
||||
cam:
|
||||
extends: overlay
|
||||
command: >
|
||||
ros2 run ros2_cam_openCV cam_node
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
devices:
|
||||
- /dev/video0:/dev/video0
|
||||
|
||||
|
||||
# ROS2 Frontier exploration
|
||||
explorer:
|
||||
extends: overlay
|
||||
depends_on:
|
||||
- controller
|
||||
- teleop
|
||||
- rsp
|
||||
- lidar
|
||||
- ekf
|
||||
- navigation
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support robot_exploration.launch.py
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
|
||||
### Images for ROS1 Interactions
|
||||
#ROS1 Bridge
|
||||
ros1bridge:
|
||||
image: ghcr.io/bjoernellens1/ros2_rmp/ros1bridge
|
||||
command: >
|
||||
ros2 run ros1_bridge dynamic_bridge --bridge-all-2to1-topics
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/Dockerfile
|
||||
tags:
|
||||
- ghcr.io/bjoernellens1/ros2_rmp/ros1bridge
|
||||
args:
|
||||
ROS_DISTRO: humble
|
||||
target: bridge
|
||||
x-bake:
|
||||
platforms:
|
||||
#- linux/arm64
|
||||
- linux/amd64
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
- ROS_MASTER_URI=http://localhost:11311 # is configured to run roscore on the robot but could change to local ros1 machine here
|
||||
|
||||
#ROS1 roscore
|
||||
roscore:
|
||||
command: >
|
||||
roscore
|
||||
extends: ros1bridge
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
- ROS_MASTER_URI=http://localhost:11311 # is configured to run roscore on the robot but could change to local ros1 machine here
|
||||
|
||||
|
||||
# ROS2 oak-d-lite camera
|
||||
oakd:
|
||||
extends: overlay
|
||||
command: >
|
||||
ros2 launch depthai_examples stereo.launch.py
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
#network_mode: host
|
||||
ipc: host
|
||||
environment:
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
#privileged: true
|
||||
#devices:
|
||||
#- /dev/oakd-lite:/dev/oakd-lite # need corresponding udevrules for this to work:
|
||||
# SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666", SYMLINK+="oakd-lite"
|
||||
#- /dev/:/dev/
|
||||
device_cgroup_rules:
|
||||
- 'c 189:* rmw'
|
||||
volumes:
|
||||
- /dev/bus/usb:/dev/bus/usb
|
||||
|
||||
|
||||
# for testing the oak-d-lite camera -> works now with cgroup rules
|
||||
depthai:
|
||||
image: luxonis/depthai:latest
|
||||
command: >
|
||||
python3 /depthai/depthai_demo.py
|
||||
stdin_open: true
|
||||
tty: true
|
||||
device_cgroup_rules:
|
||||
- 'c 189:* rmw'
|
||||
volumes:
|
||||
- /dev/bus/usb:/dev/bus/usb
|
||||
environment:
|
||||
- DISPLAY=${DISPLAY}
|
||||
- QT_X11_NO_MITSHM=1
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
|
BIN
docs/loki_overview.odg
Normal file
@ -1,62 +0,0 @@
|
||||
services:
|
||||
### Husarnet VPN Container for remote access
|
||||
husarnet:
|
||||
image: husarnet/husarnet
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/lib/husarnet # This will persist your Husarnet Client keys, thus IP of the container will be stable/the same between (re)boots
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=0 # Husarnet is using IPv6 for the internal connections
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun
|
||||
env_file:
|
||||
- ./husarnet/.env # create .env file in the same folder as Dockerfile and specify HOSTNAME and JOINCODE there
|
||||
|
||||
color_controller:
|
||||
build:
|
||||
dockerfile: husarnet/Dockerfile
|
||||
volumes:
|
||||
- ./husarnet/cyclonedds.xml:/cyclonedds.xml
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
export CYCLONEDDS_URI=file:///cyclonedds.xml
|
||||
ros2 run my_demo_pkg color_controller
|
||||
network_mode: service:husarnet
|
||||
|
||||
move_controller:
|
||||
build:
|
||||
dockerfile: husarnet/Dockerfile
|
||||
volumes:
|
||||
- ./husarnet/cyclonedds.xml:/cyclonedds.xml
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
export CYCLONEDDS_URI=file:///cyclonedds.xml
|
||||
ros2 run my_demo_pkg move_controller
|
||||
network_mode: service:husarnet
|
||||
|
||||
turtle_sim:
|
||||
image: osrf/ros:galactic-desktop
|
||||
privileged: true
|
||||
environment:
|
||||
# Allows graphical programs in the container.
|
||||
- DISPLAY=${DISPLAY}
|
||||
- QT_X11_NO_MITSHM=1
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
volumes:
|
||||
# Allows graphical programs in the container.
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:rw
|
||||
- ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority
|
||||
- ./husarnet/cyclonedds.xml:/cyclonedds.xml
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
export CYCLONEDDS_URI=file:///cyclonedds.xml
|
||||
ros2 run turtlesim turtlesim_node
|
||||
network_mode: service:husarnet # This is the most important line in this setup. This will put the Husarnet Client in the same network namespace as your app (in this example: turtle_sim)
|
27
init_repo.sh
@ -1,27 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Basic entrypoint for ROS / Colcon Docker containers
|
||||
|
||||
# Source ROS 2
|
||||
source /opt/ros/${ROS_DISTRO}/setup.bash
|
||||
echo "Sourced ROS 2 ${ROS_DISTRO}"
|
||||
|
||||
# Source the base workspace, if built
|
||||
if [ -f ${UNDERLAY_WS}/install/setup.bash ]
|
||||
then
|
||||
source ${UNDERLAY_WS}/install/setup.bash
|
||||
#export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:$(ros2 pkg prefix turtlebot3_gazebo)/share/turtlebot3_gazebo/models
|
||||
echo "Sourced Bot Mini base workspace"
|
||||
fi
|
||||
|
||||
# Source the overlay workspace, if built
|
||||
if [ -f /overlay_ws/install/setup.bash ]
|
||||
then
|
||||
source /overlay_ws/install/setup.bash
|
||||
#export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:$(ros2 pkg prefix tb3_worlds)/share/tb3_worlds/models
|
||||
echo "Sourced Bot Mini overlay workspace"
|
||||
fi
|
||||
|
||||
# Copy over files
|
||||
cp -r /overlay_ws/src/* /repo/src/
|
||||
|
||||
wait
|
19
install.sh
@ -1,19 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Specify the name of your Python script
|
||||
SCRIPT_NAME="robot_config.py"
|
||||
|
||||
# Check if the script exists in the current directory
|
||||
if [ -f "$SCRIPT_NAME" ]; then
|
||||
# Check if /usr/local/bin is writable
|
||||
if [ -w "/usr/local/bin" ]; then
|
||||
# Copy the script to /usr/local/bin
|
||||
sudo cp "$SCRIPT_NAME" "/usr/local/bin"
|
||||
sudo chmod +x "/usr/local/bin/$SCRIPT_NAME"
|
||||
echo "Script '$SCRIPT_NAME' has been installed in /usr/local/bin."
|
||||
else
|
||||
echo "Error: /usr/local/bin is not writable. You may need to use 'sudo' to install the script."
|
||||
fi
|
||||
else
|
||||
echo "Error: Script '$SCRIPT_NAME' not found in the current directory."
|
||||
fi
|
52
key.pem
@ -1,52 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQC7PXpOg/+h7QaU
|
||||
cQuc7FdUxtDjKAOECglENb6HcA3TVA8YPyEoHIzlApR3VudRrjSMp4Q16sktWnC9
|
||||
hb7CSwjDw4ShT5cotBq/n0uS6YzH3hj3a+F9g8R2MkZ8FJ6Z/gYAvDQaZ6LN6CUY
|
||||
pACiYE3Z9XRZ6B7vtPpoTcZJp/OaBaRYohcvNh3QL5/MxSd/tO1ulpwbvUPVUCvJ
|
||||
52rb+ytHpmes/3ZLJYHq8m32R0XGGJ5XTN2uaIuEpuPhAEefZl8HMF7fd4scQlzs
|
||||
OVDt+RCvnw9WcXfmHSUhgLZh1mMZIh7WvXYcYK+MOUNffKDOeycwgg4Y93vy/OmJ
|
||||
VSUiTUwupLgV4AyrJMW6WNntSMbb5h+n72An/e99sKJaa3Ak65m8J5e8LBQaW8kf
|
||||
toVqf1QobQ4K4g4Fj7xmqRuApDyUI2+GTkcPzPj2lra71PNq7rwows4iEnTTSw9b
|
||||
XtGtZOtArSLMt42bGVS80W2DrmkKkTvJSKeUpV8GM+torWG25kv8TQxnWyr1hX9V
|
||||
uMVCeuFp3Vtn4O8tG5fYSF3yCxS3pQuFBbe+rsaZejS77FPVciQIRh01QajjFcqv
|
||||
3bkyZxFVrqBHl2wC4ChDlw3/nPjCcm142idqQRG0+iYAL8AJOxuvdGOkbqHSM8de
|
||||
1rlcL48rJ1X2uK6T8sAhEgXR0oZ8dQIDAQABAoICABwvlX1DRpSQEzj+SXK+aykS
|
||||
YriHOfxC7IEtm/hUaGhjE4ChZDLfFWCWAlZyqRC1KijwQKlDJjSjFCybeQtTc0bQ
|
||||
5GLKEeWpMwuchapgaPZfWx/HyCJ2Vvk5+T1Nd1CUGkA7FJbS+gGIDCmI6qWG3MFO
|
||||
P00XcazA8B8Kcip9U2Dgr4w+HkJXoaZIvQP8u8TwLfvDRU2xsIfocScMJJxn02yO
|
||||
QrYaoKqQQ13kT6ROt1SqOQ/IPOi3ySTXYJ9qxN1ccjqpT+bQ3oqK/OT8fc/M+fON
|
||||
/KeVHijwQzonX40b0kAi0ESgMar07QgtSJSTtLtQc6ZMNaYRf0GlS9yGCjh/LVPo
|
||||
IFCKjpSDfp2J9Q7RSFKdb8tghcTfQNAg/6zen1JnE5iUBiaQZfIj7+iD5hQfn9a2
|
||||
I1Fs3m1or3n1Z+BUg7vkDPQCyRkVEBXkKsbpD3T2cnxY9sfF0+ClmdfBQyCcLG5p
|
||||
mf6XAWQEiJrQ9iWuQYWpHDqaatan6G5ym8Wy7nJYdjJgJTszzduUSt176W8R7bGW
|
||||
73y9de+kEODQsxehSpkTVEqsMEgpTAKi5u59RRhj4OT9Lbvk9Xs9OH23aUcVUu5H
|
||||
urMIAKdsjlAUhLSPupDr4bJPRM9N4t2v709VeH170Z/9X5j7LbF++Wh2t+UXprmb
|
||||
0nDk5fjfzJnjXJQgd+nRAoIBAQDpUc+3MuLadphfyM5b5xc9A/8TuwW5a2jcLi1h
|
||||
6NlZa63qPbGvEk3kUw71ELrh8NorRqvn895CJUG4K+zVUTl9dgsXqla7GWZFHIXW
|
||||
2641R4p8HQNwNFP7KIyvvv5l72A+wWf1jpZiXXYNinrHDtPgdVXEFMDhDLibu6AK
|
||||
jsfdNOXDE+mmxMTSwwgJ9blZkdp1pBEWYCZsqW/yED6pLdTh8ZRPGHOb24x6HksZ
|
||||
Z/Gc4SIOrj5jrt3/M9oEymP+fQnF/StlnVsRnai6hBQX9khlS3pjneLOCLJfhpt/
|
||||
qcIDL03KsIhf0miIkOpNTATL4SGsWDBAQp17eN4UToacARRpAoIBAQDNcPlDVBqt
|
||||
K+fy9BBR9HBzBQlx6XkrmZ9Cgje/FrpMT+2UZ5wqMMPyB7SdoXkxx0CpB3ajOost
|
||||
i92fk7Y03xHXS3COGLKhWqDNhH1Uotlp3wpeOWx3DlAFRcIvy86iDzTa/hGaq8Kp
|
||||
2HPw0YqcxQjwYQzILBfZx3DRuQ8bt3Wiqxer/K+NRDnass/ZUTqz6nZcadMj6NiS
|
||||
Zlwm7ErjhjdYRc6amTZMtxOenxP8cAtNW+RBZ7JbUEhAhE8zU42wZI+DxhvM0mTg
|
||||
/CrRaYVE6YyAnaYo0RuJCRldz6obbgABn0q8qoY1Rmxjm+Do27hsrQgAB9Z/gmAp
|
||||
hdU2+S270fYtAoIBAQCuEYlEhkRU9HHN1ESQsCHYNakSEU+9+/JpglH9X/j4C6ve
|
||||
vFRZ5vARzh20m9yxQD2kV79c98Xz11PmkW7J3yVjArRX3Y+DWvm/yf3YRGD+AvfA
|
||||
jOzJw2B8Ws5LN9UYO7S0XRqwSsbLcCrpA02CQP+10BRCi7EytYjtNte5yLg3woVA
|
||||
OxTwhJDLJRJUS+0SdAxmBBdzeBxyqR6Jm7EECttuDgu1zupBd1SgrwUcWT4a6qO8
|
||||
DCcju4yIHykitdRQQv0Np0m/L9yHkfYV4QAUuHtehycyNtLFIBvjxMsyPXYvZhVF
|
||||
iNrVkmbGrEcBkBtr9/RlXg3xg0F2osAcqlEnBm8xAoIBADGLZkGrfcd3iDeaTnlF
|
||||
Rv0mINH86UDvim3is4j89S7EM9qPZiTyn761xwQg1faARAK/jwfsbXYtfeQnHlD/
|
||||
3vCZ++n44NNy5MbLheIsZ9xVcs2ocZUAuaGb4iner9V7b1bE4P/5HjgRwFw6XIBU
|
||||
MESwUwHPSG034OhjBda8Vr1FH69VgAzEgGNSrjeNlGehSqwcxVOqqtgboWutnp3i
|
||||
V2SNaTb1bhfwKuYdHRfK+Z7NY222kVfeM56Digopw0jf55By7W9m6fcsOTNJjF9D
|
||||
J6Q44MKFM2vH6vspwq9cxtmdTcvUIAunESqwg/wESSTEUeKYAU285m39HZ9lVncu
|
||||
On0CggEAEk6pzS5OX7DSWqrTnYd9T83lr7RzFQpWpbeK7OOidMUYm/MHx7I2UyLN
|
||||
V0K/ChkYowm69VvHJW9mcSHo0RAZiokBegJP8fhU0RJJaWyED+wdw2vOHlwAI7WP
|
||||
hj3xCOT8D+qfx12wVqo6c0jRXnNUsd5V9DPtMkn7YFYuq56gSqwlLvIpuhfU8dJM
|
||||
dCznLvjQqRQhqMk3p0bbcy4+EICR19F8UzgUfqWITwrdIriWQEWzDXIZvsBjxpaE
|
||||
PenJGHMSac7xOU/hdljj6FSpwu03aA0HklCQhwpfNDd+KPR7ntNE1DBEn93/bScb
|
||||
O61K2Igm/AywqweBe9cWRgB7lOXwIA==
|
||||
-----END PRIVATE KEY-----
|
@ -1,7 +0,0 @@
|
||||
image: map_floor_save.pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-13.7, -5.57, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
@ -1,7 +0,0 @@
|
||||
image: map_floor_mainb_save_retouched.pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-66.2, -24.5, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
@ -1,7 +0,0 @@
|
||||
image: map_floor_mainb_save.pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-20.9, -7.03, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
@ -1,7 +0,0 @@
|
||||
image: map_floor_03-10-23.sav.pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-27.2, -0.0189, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
@ -1,7 +0,0 @@
|
||||
image: map_floor_mainb_save_retouched.pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-20.9, -7.03, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
@ -1,7 +0,0 @@
|
||||
image: map_floor_save.pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-13.7, -5.57, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
@ -1,7 +0,0 @@
|
||||
image: map_openlabday.pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-13.5, -20.9, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
@ -1,7 +0,0 @@
|
||||
image: map_save_16.10..pgm
|
||||
mode: trinary
|
||||
resolution: 0.05
|
||||
origin: [-25.7, -17, 0]
|
||||
negate: 0
|
||||
occupied_thresh: 0.65
|
||||
free_thresh: 0.25
|
@ -1,71 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
# Function to get the path to the docker-compose.yaml file
|
||||
def get_compose_file_path():
|
||||
path = input("Enter the path to the docker-compose.yaml file (press Enter for current directory): ").strip()
|
||||
return path if path else "docker-compose.yaml"
|
||||
|
||||
# Initialize the path to the docker-compose.yaml file
|
||||
compose_file_path = get_compose_file_path()
|
||||
|
||||
# Define a list to keep track of running services
|
||||
running_services = []
|
||||
|
||||
# Function to check if a service is already running
|
||||
def is_service_running(service_name):
|
||||
return service_name in running_services
|
||||
|
||||
# Function to start a service
|
||||
def start_service(service_name):
|
||||
if not is_service_running(service_name):
|
||||
print(f"Starting {service_name}...")
|
||||
subprocess.run(["docker", "compose", "-f", compose_file_path, "up", "-d", service_name])
|
||||
running_services.append(service_name)
|
||||
else:
|
||||
print(f"{service_name} is already running.")
|
||||
|
||||
# Function to stop a service
|
||||
def stop_service(service_name):
|
||||
if is_service_running(service_name):
|
||||
print(f"Stopping {service_name}...")
|
||||
subprocess.run(["docker", "compose", "-f", compose_file_path, "down", "-v", "--remove-orphans", service_name])
|
||||
running_services.remove(service_name)
|
||||
else:
|
||||
print(f"{service_name} is not running.")
|
||||
|
||||
# Main program
|
||||
if __name__ == "__main__":
|
||||
while True:
|
||||
print("Options:")
|
||||
print("1. Start Controller, Teleop, RSP, Lidar")
|
||||
print("2. Start AMCL and Navigation")
|
||||
print("3. Start Mapping and Navigation")
|
||||
print("4. Stop AMCL and Mapping")
|
||||
print("5. Change docker-compose.yaml file path")
|
||||
print("6. Quit")
|
||||
|
||||
choice = input("Enter your choice: ")
|
||||
|
||||
if choice == "1":
|
||||
start_service("controller")
|
||||
start_service("teleop")
|
||||
start_service("rsp")
|
||||
start_service("lidar")
|
||||
elif choice == "2":
|
||||
start_service("amcl")
|
||||
start_service("navigation")
|
||||
elif choice == "3":
|
||||
start_service("mapping")
|
||||
start_service("navigation")
|
||||
elif choice == "4":
|
||||
stop_service("amcl")
|
||||
stop_service("mapping")
|
||||
elif choice == "5":
|
||||
compose_file_path = get_compose_file_path()
|
||||
elif choice == "6":
|
||||
break
|
||||
else:
|
||||
print("Invalid choice. Please try again.")
|
70
rviz2.yaml
@ -1,70 +0,0 @@
|
||||
networks:
|
||||
pc: # config for this pc. Only required for running the containers locally on the pc. For instance rviz2 or guis with gazebo.
|
||||
driver: macvlan
|
||||
driver_opts:
|
||||
parent: wlx00e04c5513fc # pc network interface: here my wifi card. Can be found with ifconfig.
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.0.0/24
|
||||
gateway: 192.168.0.1
|
||||
ip_range: 192.168.0.200/25
|
||||
aux_addresses:
|
||||
net-address: 192.168.0.100 #? what is this for --> to exclude addresses from buing used.
|
||||
|
||||
services:
|
||||
# rviz2
|
||||
rviz2:
|
||||
image: ghcr.io/bjoernellens1/ros2_rmp/rmp:guis
|
||||
# command: >
|
||||
# ros2 launch cps_rmp220_support robot_rviz2.launch.py
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support rviz.launch.py
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
network_mode: host
|
||||
ipc: host
|
||||
# Needed to display graphical applications
|
||||
privileged: true
|
||||
environment:
|
||||
# Allows graphical programs in the container.
|
||||
- DISPLAY=${DISPLAY}
|
||||
- QT_X11_NO_MITSHM=1
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
volumes:
|
||||
# Allows graphical programs in the container.
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:rw
|
||||
- ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority
|
||||
# networks: # not using bridging anymore, instead try using all services on macvlan? let's see... shoudl word for now. Bridging does definitely not work because multicast is not supported here.
|
||||
# pc:
|
||||
# ipv4_address: 192.168.0.201 #here need to set fixed ip to avoid collissions with other containers on robot.
|
||||
|
||||
rviz2-depthai:
|
||||
image: luxonis/depthai-ros:humble-latest
|
||||
command: >
|
||||
ros2 launch cps_rmp220_support rviz.launch.py
|
||||
# Interactive shell
|
||||
stdin_open: true
|
||||
tty: true
|
||||
# Networking and IPC for ROS 2
|
||||
network_mode: host
|
||||
ipc: host
|
||||
# Needed to display graphical applications
|
||||
privileged: true
|
||||
environment:
|
||||
# Allows graphical programs in the container.
|
||||
- DISPLAY=${DISPLAY}
|
||||
- QT_X11_NO_MITSHM=1
|
||||
- NVIDIA_DRIVER_CAPABILITIES=all
|
||||
- ROS_DOMAIN_ID=5
|
||||
- RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
volumes:
|
||||
# Allows graphical programs in the container.
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:rw
|
||||
- ${XAUTHORITY:-$HOME/.Xauthority}:/root/.Xauthority
|
||||
# networks: # not using bridging anymore, instead try using all services on macvlan? let's see... shoudl word for now. Bridging does definitely not work because multicast is not supported here.
|
||||
# pc:
|
||||
# ipv4_address: 192.168.0.201 #here need to set fixed ip to avoid collissions with other containers on robot.
|
7
scripts/ps4_controller_script.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Change directory to where docker-compose.yml is located
|
||||
cd /home/bjorn/git/cps_loki
|
||||
|
||||
# Restart the teleop service using docker-compose
|
||||
docker compose restart teleop
|
16
scripts/setup.sh
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
# copy script to a system directory
|
||||
sudo cp ps4_controller_script.sh /etc/udev/rules.d
|
||||
|
||||
# Set execute permissions for the script
|
||||
sudo chmod +x /etc/udev/rules.d/ps4_controller_script.sh
|
||||
|
||||
# Create or append the udev rule
|
||||
echo 'ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="Wireless Controller", RUN+="/etc/udev/rules.d/ps4_controller_script.sh"' | sudo tee /etc/udev/rules.d/99-ps4-controller.rules
|
||||
|
||||
# Reload udev rules
|
||||
sudo udevadm control --reload-rules
|
||||
|
||||
# Provide user feedback
|
||||
echo "Setup completed. PS4 controller udev rule installed."
|
@ -1,47 +0,0 @@
|
||||
{
|
||||
"version": "1.1",
|
||||
"engine": "linux|Transformer|1.40.6|1.40.6|latest",
|
||||
"containerized": false,
|
||||
"host_distro": {
|
||||
"name": "NixOS",
|
||||
"version": "23.11",
|
||||
"display_name": "NixOS 23.11 (Tapir)"
|
||||
},
|
||||
"type": "build",
|
||||
"state": "error",
|
||||
"target_reference": "ubuntu",
|
||||
"system": {
|
||||
"type": "",
|
||||
"release": "",
|
||||
"distro": {
|
||||
"name": "",
|
||||
"version": "",
|
||||
"display_name": ""
|
||||
}
|
||||
},
|
||||
"source_image": {
|
||||
"identity": {
|
||||
"id": ""
|
||||
},
|
||||
"size": 0,
|
||||
"size_human": "",
|
||||
"create_time": "",
|
||||
"docker_version": "",
|
||||
"architecture": "",
|
||||
"container_entry": {
|
||||
"exe_path": ""
|
||||
}
|
||||
},
|
||||
"minified_image_size": 0,
|
||||
"minified_image_size_human": "",
|
||||
"minified_image": "",
|
||||
"minified_image_has_data": false,
|
||||
"minified_by": 0,
|
||||
"artifact_location": "",
|
||||
"container_report_name": "",
|
||||
"seccomp_profile_name": "",
|
||||
"apparmor_profile_name": "",
|
||||
"image_stack": null,
|
||||
"image_created": false,
|
||||
"image_build_engine": ""
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import subprocess
|
||||
|
||||
# Define the stacks
|
||||
stack1 = ["controller", "teleop", "rsp", "lidar"]
|
||||
stack2 = stack1 + ["mapping", "navigation"]
|
||||
stack3 = stack1 + ["amcl", "navigation"]
|
||||
|
||||
# Function to start a stack
|
||||
def start_stack(stack):
|
||||
print(f"Starting {', '.join(stack)}...")
|
||||
subprocess.run(["docker", "compose", "up", "-d"] + stack)
|
||||
|
||||
# Function to stop a stack
|
||||
def stop_stack(stack):
|
||||
print(f"Stopping {', '.join(stack)}...")
|
||||
subprocess.run(["docker", "compose", "down", "-v", "--remove-orphans"] + stack)
|
||||
|
||||
# Main program
|
||||
if __name__ == "__main__":
|
||||
while True:
|
||||
print("Options:")
|
||||
print("1. Start Stack 1")
|
||||
print("2. Start Stack 2")
|
||||
print("3. Start Stack 3")
|
||||
print("4. Stop Stack 1")
|
||||
print("5. Stop Stack 2")
|
||||
print("6. Stop Stack 3")
|
||||
print("7. Quit")
|
||||
|
||||
choice = input("Enter your choice: ")
|
||||
|
||||
if choice == "1":
|
||||
stop_stack(stack2 + stack3) # Stop stack2 and stack3 to avoid interference
|
||||
start_stack(stack1)
|
||||
elif choice == "2":
|
||||
stop_stack(stack1 + stack3) # Stop stack1 and stack3 to avoid interference
|
||||
start_stack(stack2)
|
||||
elif choice == "3":
|
||||
stop_stack(stack1 + stack2) # Stop stack1 and stack2 to avoid interference
|
||||
start_stack(stack3)
|
||||
elif choice == "4":
|
||||
stop_stack(stack1)
|
||||
elif choice == "5":
|
||||
stop_stack(stack2)
|
||||
elif choice == "6":
|
||||
stop_stack(stack3)
|
||||
elif choice == "7":
|
||||
break
|
||||
else:
|
||||
print("Invalid choice. Please try again.")
|
@ -1 +0,0 @@
|
||||
docker compose up -d controller teleop rsp lidar mapping navigation
|
@ -1 +0,0 @@
|
||||
docker compose up -d controller teleop rsp lidar amcl navigation
|
@ -1 +0,0 @@
|
||||
docker compose up -d controller teleop rsp lidar
|
133
test.rviz
@ -1,133 +0,0 @@
|
||||
Panels:
|
||||
- Class: rviz_common/Displays
|
||||
Help Height: 85
|
||||
Name: Displays
|
||||
Property Tree Widget:
|
||||
Expanded:
|
||||
- /Global Options1
|
||||
- /Status1
|
||||
Splitter Ratio: 0.5
|
||||
Tree Height: 528
|
||||
- Class: rviz_common/Selection
|
||||
Name: Selection
|
||||
- Class: rviz_common/Tool Properties
|
||||
Expanded:
|
||||
- /2D Goal Pose1
|
||||
- /Publish Point1
|
||||
Name: Tool Properties
|
||||
Splitter Ratio: 0.5886790156364441
|
||||
- Class: rviz_common/Views
|
||||
Expanded:
|
||||
- /Current View1
|
||||
Name: Views
|
||||
Splitter Ratio: 0.5
|
||||
- Class: rviz_common/Time
|
||||
Experimental: false
|
||||
Name: Time
|
||||
SyncMode: 0
|
||||
SyncSource: ""
|
||||
Visualization Manager:
|
||||
Class: ""
|
||||
Displays:
|
||||
- Alpha: 0.5
|
||||
Cell Size: 1
|
||||
Class: rviz_default_plugins/Grid
|
||||
Color: 160; 160; 164
|
||||
Enabled: true
|
||||
Line Style:
|
||||
Line Width: 0.029999999329447746
|
||||
Value: Lines
|
||||
Name: Grid
|
||||
Normal Cell Count: 0
|
||||
Offset:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
Plane: XY
|
||||
Plane Cell Count: 10
|
||||
Reference Frame: <Fixed Frame>
|
||||
Value: true
|
||||
Enabled: true
|
||||
Global Options:
|
||||
Background Color: 48; 48; 48
|
||||
Fixed Frame: map
|
||||
Frame Rate: 30
|
||||
Name: root
|
||||
Tools:
|
||||
- Class: rviz_default_plugins/Interact
|
||||
Hide Inactive Objects: true
|
||||
- Class: rviz_default_plugins/MoveCamera
|
||||
- Class: rviz_default_plugins/Select
|
||||
- Class: rviz_default_plugins/FocusCamera
|
||||
- Class: rviz_default_plugins/Measure
|
||||
Line color: 128; 128; 0
|
||||
- Class: rviz_default_plugins/SetInitialPose
|
||||
Covariance x: 0.25
|
||||
Covariance y: 0.25
|
||||
Covariance yaw: 0.06853891909122467
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /initialpose
|
||||
- Class: rviz_default_plugins/SetGoal
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /goal_pose
|
||||
- Class: rviz_default_plugins/PublishPoint
|
||||
Single click: true
|
||||
Topic:
|
||||
Depth: 5
|
||||
Durability Policy: Volatile
|
||||
History Policy: Keep Last
|
||||
Reliability Policy: Reliable
|
||||
Value: /clicked_point
|
||||
Transformation:
|
||||
Current:
|
||||
Class: rviz_default_plugins/TF
|
||||
Value: true
|
||||
Views:
|
||||
Current:
|
||||
Class: rviz_default_plugins/Orbit
|
||||
Distance: 10
|
||||
Enable Stereo Rendering:
|
||||
Stereo Eye Separation: 0.05999999865889549
|
||||
Stereo Focal Distance: 1
|
||||
Swap Stereo Eyes: false
|
||||
Value: false
|
||||
Focal Point:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
Focal Shape Fixed Size: true
|
||||
Focal Shape Size: 0.05000000074505806
|
||||
Invert Z Axis: false
|
||||
Name: Current View
|
||||
Near Clip Distance: 0.009999999776482582
|
||||
Pitch: 0.785398006439209
|
||||
Target Frame: <Fixed Frame>
|
||||
Value: Orbit (rviz)
|
||||
Yaw: 0.785398006439209
|
||||
Saved: ~
|
||||
Window Geometry:
|
||||
Displays:
|
||||
collapsed: false
|
||||
Height: 845
|
||||
Hide Left Dock: false
|
||||
Hide Right Dock: false
|
||||
QMainWindow State: 000000ff00000000fd00000004000000000000015a000002a6fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006b00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730100000044000002a6000000eb00fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002a6fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730100000044000002a6000000b900fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004af0000003efc0100000002fb0000000800540069006d00650100000000000004af000002d200fffffffb0000000800540069006d0065010000000000000450000000000000000000000238000002a600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
|
||||
Selection:
|
||||
collapsed: false
|
||||
Time:
|
||||
collapsed: false
|
||||
Tool Properties:
|
||||
collapsed: false
|
||||
Views:
|
||||
collapsed: false
|
||||
Width: 1199
|
||||
X: 199
|
||||
Y: 115
|