diff options
Diffstat (limited to '2017')
17 files changed, 44344 insertions, 3 deletions
diff --git a/2017/bts_hardware-osmocon2017/bts_hardware.html b/2017/bts_hardware-osmocon2017/bts_hardware.html new file mode 100644 index 0000000..5f0643f --- /dev/null +++ b/2017/bts_hardware-osmocon2017/bts_hardware.html @@ -0,0 +1,4270 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Osmocom BTS Hardware Support</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="copyright" content="Copyright © 2017 by Harald Welte (License: CC-BY-SA)" />
+<meta name="generator" content="AsciiDoc 8.6.9" />
+<style type="text/css">
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
+}
+
+body {
+ margin: 1em 5% 1em 5%;
+}
+
+a {
+ color: blue;
+ text-decoration: underline;
+}
+a:visited {
+ color: fuchsia;
+}
+
+em {
+ font-style: italic;
+ color: navy;
+}
+
+strong {
+ font-weight: bold;
+ color: #083194;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #527bbd;
+ margin-top: 1.2em;
+ margin-bottom: 0.5em;
+ line-height: 1.3;
+}
+
+h1, h2, h3 {
+ border-bottom: 2px solid silver;
+}
+h2 {
+ padding-top: 0.5em;
+}
+h3 {
+ float: left;
+}
+h3 + * {
+ clear: left;
+}
+h5 {
+ font-size: 1.0em;
+}
+
+div.sectionbody {
+ margin-left: 0;
+}
+
+hr {
+ border: 1px solid silver;
+}
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+ul, ol, li > p {
+ margin-top: 0;
+}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
+
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
+ padding: 0;
+ margin: 0;
+}
+pre {
+ white-space: pre-wrap;
+}
+
+#author {
+ color: #527bbd;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+#email {
+}
+#revnumber, #revdate, #revremark {
+}
+
+#footer {
+ font-size: small;
+ border-top: 2px solid silver;
+ padding-top: 0.5em;
+ margin-top: 4.0em;
+}
+#footer-text {
+ float: left;
+ padding-bottom: 0.5em;
+}
+#footer-badges {
+ float: right;
+ padding-bottom: 0.5em;
+}
+
+#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.admonitionblock {
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
+}
+
+div.content { /* Block element content. */
+ padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+ color: #527bbd;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 1.0em;
+ margin-bottom: 0.5em;
+}
+div.title + * {
+ margin-top: 0;
+}
+
+td div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content + div.title {
+ margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+ background: #ffffee;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
+ padding: 0.5em;
+}
+
+div.listingblock > div.content {
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
+ padding: 0.5em;
+}
+
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
+ margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
+}
+
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
+div.verseblock + div.attribution {
+ text-align: left;
+}
+
+div.admonitionblock .icon {
+ vertical-align: top;
+ font-size: 1.1em;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #527bbd;
+ padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+ padding-left: 0.5em;
+ border-left: 3px solid #dddddd;
+}
+
+div.exampleblock > div.content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+div.imageblock div.content { padding-left: 0; }
+span.image img { border-style: none; vertical-align: text-bottom; }
+a.image:visited { color: white; }
+
+dl {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+dt {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ font-style: normal;
+ color: navy;
+}
+dd > *:first-child {
+ margin-top: 0.1em;
+}
+
+ul, ol {
+ list-style-position: outside;
+}
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
+
+tfoot {
+ font-weight: bold;
+}
+td > div.verse {
+ white-space: pre;
+}
+
+div.hdlist {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+div.hdlist tr {
+ padding-bottom: 15px;
+}
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
+ vertical-align: top;
+ font-style: normal;
+ padding-right: 0.8em;
+ color: navy;
+}
+td.hdlist2 {
+ vertical-align: top;
+}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
+
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
+@media print {
+ #footer-badges { display: none; }
+}
+
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
+ color: #527bbd;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 1.0em;
+ margin-bottom: 0.1em;
+}
+
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.toclevel2 {
+ margin-left: 2em;
+ font-size: 0.9em;
+}
+div.toclevel3 {
+ margin-left: 4em;
+ font-size: 0.9em;
+}
+div.toclevel4 {
+ margin-left: 6em;
+ font-size: 0.9em;
+}
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
+
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+thead, p.tableblock.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
+}
+
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
+}
+
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
+ text-align: right;
+}
+
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
+}
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
+}
+
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
+}
+
+@media print {
+ body.manpage div#toc { display: none; }
+}
+/* slidy.css
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+/*
+ SJR: 2010-09-29: Modified for AsciiDoc slidy backend.
+ Mostly just commented out stuff that is handled by AsciiDoc's CSS files.
+*/
+
+body
+{
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ width: 100%;
+ height: 100%;
+ color: black;
+ background-color: white;
+/*
+ font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
+*/
+ font-size: 14pt;
+}
+
+div.toolbar {
+ position: fixed; z-index: 200;
+ top: auto; bottom: 0; left: 0; right: 0;
+ height: 1.2em; text-align: right;
+ padding-left: 1em;
+ padding-right: 1em;
+ font-size: 60%;
+ color: red;
+ background-color: rgb(240,240,240);
+ border-top: solid 1px rgb(180,180,180);
+}
+
+div.toolbar span.copyright {
+ color: black;
+ margin-left: 0.5em;
+}
+
+div.initial_prompt {
+ position: absolute;
+ z-index: 1000;
+ bottom: 1.2em;
+ width: 90%;
+ background-color: rgb(200,200,200);
+ opacity: 0.35;
+ background-color: rgb(200,200,200, 0.35);
+ cursor: pointer;
+}
+
+div.initial_prompt p.help {
+ text-align: center;
+}
+
+div.initial_prompt p.close {
+ text-align: right;
+ font-style: italic;
+}
+
+div.slidy_toc {
+ position: absolute;
+ z-index: 300;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ overflow: auto;
+ top: auto;
+ right: auto;
+ left: 4em;
+ bottom: 4em;
+ padding: 1em;
+ background: rgb(240,240,240);
+ border-style: solid;
+ border-width: 2px;
+ font-size: 60%;
+}
+
+div.slidy_toc .toc_heading {
+ text-align: center;
+ width: 100%;
+ margin: 0;
+ margin-bottom: 1em;
+ border-bottom-style: solid;
+ border-bottom-color: rgb(180,180,180);
+ border-bottom-width: 1px;
+}
+
+div.slide {
+ z-index: 20;
+ margin: 0 0 0 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ padding-left: 20px;
+ padding-right: 20px;
+ border-width: 0;
+ clear: both;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ line-height: 120%;
+ background-color: transparent;
+}
+
+div.background {
+ display: none;
+}
+
+div.handout {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+div.slide.titlepage {
+ text-align: center;
+}
+
+div.slide.titlepage.h1 {
+ padding-top: 10%;
+}
+
+div.slide h1 {
+ padding-left: 0;
+ padding-right: 20pt;
+ padding-top: 4pt;
+ padding-bottom: 4pt;
+ margin-top: 0;
+ margin-left: 0;
+ margin-right: 60pt;
+ margin-bottom: 0.5em;
+ display: block;
+ font-size: 160%;
+ line-height: 1.2em;
+ background: transparent;
+}
+
+div.toc {
+ position: absolute;
+ top: auto;
+ bottom: 4em;
+ left: 4em;
+ right: auto;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ border: solid thin black;
+ padding: 1em;
+ background: rgb(240,240,240);
+ color: black;
+ z-index: 300;
+ overflow: auto;
+ display: block;
+ visibility: visible;
+}
+
+div.toc-heading {
+ width: 100%;
+ border-bottom: solid 1px rgb(180,180,180);
+ margin-bottom: 1em;
+ text-align: center;
+}
+
+/*
+pre {
+ font-size: 80%;
+ font-weight: bold;
+ line-height: 120%;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ padding-left: 1em;
+ padding-right: 1em;
+ border-style: solid;
+ border-left-width: 1em;
+ border-top-width: thin;
+ border-right-width: thin;
+ border-bottom-width: thin;
+ border-color: #95ABD0;
+ color: #00428C;
+ background-color: #E4E5E7;
+}
+*/
+
+/*
+li pre { margin-left: 0; }
+
+blockquote { font-style: italic }
+
+img { background-color: transparent }
+
+p.copyright { font-size: smaller }
+*/
+
+.center { text-align: center }
+.footnote { font-size: smaller; margin-left: 2em; }
+
+/*
+a img { border-width: 0; border-style: none }
+*/
+
+a:visited { color: navy }
+a:link { color: navy }
+a:hover { color: red; text-decoration: underline }
+a:active { color: red; text-decoration: underline }
+
+a {text-decoration: none}
+.navbar a:link {color: white}
+.navbar a:visited {color: yellow}
+.navbar a:active {color: red}
+.navbar a:hover {color: red}
+
+/*
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+li { margin-left: 0.5em; margin-top: 0.5em; }
+li li { font-size: 85%; font-style: italic }
+li li li { font-size: 85%; font-style: normal }
+*/
+
+div dt
+{
+ margin-left: 0;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ font-weight: bold;
+}
+div dd
+{
+ margin-left: 2em;
+ margin-bottom: 0.5em;
+}
+
+
+/*
+p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
+ margin-left: 1em;
+ margin-right: 1em;
+}
+*/
+
+p.subhead { font-weight: bold; margin-top: 2em; }
+
+.smaller { font-size: smaller }
+.bigger { font-size: 130% }
+
+/*
+td,th { padding: 0.2em }
+*/
+
+ul {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ol {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+
+/*
+ul li {
+ list-style: square;
+ margin: 0.1em 0em 0.6em 0;
+ padding: 0 0 0 0;
+ line-height: 140%;
+}
+
+ol li {
+ margin: 0.1em 0em 0.6em 1.5em;
+ padding: 0 0 0 0px;
+ line-height: 140%;
+ list-style-type: decimal;
+}
+
+li ul li {
+ font-size: 85%;
+ font-style: italic;
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li ul li {
+ font-size: 85%;
+ font-style: normal;
+ list-style-type: circle;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li li ul li {
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+
+li ol li {
+ list-style-type: decimal;
+}
+
+
+li li ol li {
+ list-style-type: decimal;
+}
+*/
+
+/*
+ setting class="outline" on ol or ul makes it behave as an
+ ouline list where blocklevel content in li elements is
+ hidden by default and can be expanded or collapsed with
+ mouse click. Set class="expand" on li to override default
+*/
+
+ol.outline li:hover { cursor: pointer }
+ol.outline li.nofold:hover { cursor: default }
+
+ul.outline li:hover { cursor: pointer }
+ul.outline li.nofold:hover { cursor: default }
+
+ol.outline { list-style:decimal; }
+ol.outline ol { list-style-type:lower-alpha }
+
+ol.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+ul.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+/* for slides with class "title" in table of contents */
+a.titleslide { font-weight: bold; font-style: italic }
+
+/*
+ hide images for work around for save as bug
+ where browsers fail to save images used by CSS
+*/
+img.hidden { display: none; visibility: hidden }
+div.initial_prompt { display: none; visibility: hidden }
+
+ div.slide {
+ visibility: visible;
+ position: inherit;
+ }
+ div.handout {
+ border-top-style: solid;
+ border-top-width: thin;
+ border-top-color: black;
+ }
+
+@media screen {
+ .hidden { display: none; visibility: visible }
+
+ div.slide.hidden { display: block; visibility: visible }
+ div.handout.hidden { display: block; visibility: visible }
+ div.background { display: none; visibility: hidden }
+ body.single_slide div.initial_prompt { display: block; visibility: visible }
+ body.single_slide div.background { display: block; visibility: visible }
+ body.single_slide div.background.hidden { display: none; visibility: hidden }
+ body.single_slide .invisible { visibility: hidden }
+ body.single_slide .hidden { display: none; visibility: hidden }
+ body.single_slide div.slide { position: absolute }
+ body.single_slide div.handout { display: none; visibility: hidden }
+}
+
+@media print {
+ .hidden { display: block; visibility: visible }
+
+/*
+ div.slide pre { font-size: 60%; padding-left: 0.5em; }
+*/
+ div.toolbar { display: none; visibility: hidden; }
+ div.slidy_toc { display: none; visibility: hidden; }
+ div.background { display: none; visibility: hidden; }
+ div.slide { page-break-before: always }
+ /* :first-child isn't reliable for print media */
+ div.slide.first-slide { page-break-before: avoid }
+}
+
+
+/* SJR: AsciiDoc slidy backend tweaks */
+
+ol, ul {
+ margin: 0.8em 1.5em 0.8em 1.8em;
+}
+li > ul, li > ol {
+ margin-top: 0.5em;
+}
+
+.outline > li.folded,
+.outline > li.unfolded {
+ color: #527bbd;
+}
+ul > li{ color: #aaa; }
+ul > li > *, ol > li > * { color: black; }
+
+li {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+
+div.change_topic {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+div.change_topic h1 {
+ text-align: center;
+ border-bottom-width: 0px;
+}
+
+div.gimmick_right img {
+ float: right;
+}
+
+div.qanda ol {
+ list-style-type: none;
+}
+
+.monospaced, code, pre {
+ color: black;
+ font-weight: bold;
+}
+
+div.quoteblock, div.verseblock {
+ color: black;
+}
+
+em {
+ color: black;
+}
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+/* slidy.js
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+// the slidy object implementation
+var w3c_slidy = {
+ // classify which kind of browser we're running under
+ ns_pos: (typeof window.pageYOffset!='undefined'),
+ khtml: ((navigator.userAgent).indexOf("KHTML") >= 0 ? true : false),
+ opera: ((navigator.userAgent).indexOf("Opera") >= 0 ? true : false),
+ ipad: ((navigator.userAgent).indexOf("iPad") >= 0 ? true : false),
+ iphone: ((navigator.userAgent).indexOf("iPhone") >= 0 ? true : false),
+ ie: (typeof document.all != "undefined" && !this.opera),
+ ie6: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 6") != -1),
+ ie7: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 7") != -1),
+ ie8: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 8") != -1),
+ ie9: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 9") != -1),
+ keyboardless: (this.ipad || this.iphone),
+
+ // are we running as XHTML? (doesn't work on Opera)
+ is_xhtml: /xml/.test(document.contentType),
+
+ slide_number: 0, // integer slide count: 0, 1, 2, ...
+ slide_number_element: null, // element containing slide number
+ slides: [], // set to array of slide div's
+ notes: [], // set to array of handout div's
+ backgrounds: [], // set to array of background div's
+ toolbar: null, // element containing toolbar
+ title: null, // document title
+ last_shown: null, // last incrementally shown item
+ eos: null, // span element for end of slide indicator
+ toc: null, // table of contents
+ outline: null, // outline element with the focus
+ selected_text_len: 0, // length of drag selection on document
+ view_all: 0, // 1 to view all slides + handouts
+ want_toolbar: true, // user preference to show/hide toolbar
+ mouse_click_enabled: true, // enables left click for next slide
+ scroll_hack: 0, // IE work around for position: fixed
+ disable_slide_click: false, // used by clicked anchors
+
+ lang: "en", // updated to language specified by html file
+
+ help_anchor: null, // used for keyboard focus hack in showToolbar()
+ help_page: "http://www.w3.org/Talks/Tools/Slidy2/help/help.html",
+ help_text: "Navigate with mouse click, space bar, Cursor Left/Right, " +
+ "or Pg Up and Pg Dn. Use S and B to change font size.",
+
+ size_index: 0,
+ size_adjustment: 0,
+ sizes: new Array("10pt", "12pt", "14pt", "16pt", "18pt", "20pt",
+ "22pt", "24pt", "26pt", "28pt", "30pt", "32pt"),
+
+ // needed for efficient resizing
+ last_width: 0,
+ last_height: 0,
+
+
+ // Needed for cross browser support for relative width/height on
+ // object elements. The work around is to save width/height attributes
+ // and then to recompute absolute width/height dimensions on resizing
+ objects: [],
+
+ // attach initialiation event handlers
+ set_up: function () {
+ var init = function() { w3c_slidy.init(); };
+ if (typeof window.addEventListener != "undefined")
+ window.addEventListener("load", init, false);
+ else
+ window.attachEvent("onload", init);
+ },
+
+ hide_slides: function () {
+ if (document.body && !w3c_slidy.initialized)
+ document.body.style.visibility = "hidden";
+ else
+ setTimeout(w3c_slidy.hide_slides, 50);
+ },
+
+ // hack to persuade IE to compute correct document height
+ // as needed for simulating fixed positioning of toolbar
+ ie_hack: function () {
+ window.resizeBy(0,-1);
+ window.resizeBy(0, 1);
+ },
+
+ init: function () {
+ //alert("slidy starting test 10");
+ document.body.style.visibility = "visible";
+ w3c_slidy_i18n.init();
+ this.add_toolbar();
+ this.wrap_implicit_slides();
+ this.collect_slides();
+ this.collect_notes();
+ this.collect_backgrounds();
+ this.objects = document.body.getElementsByTagName("object");
+ this.patch_anchors();
+ this.slide_number = this.find_slide_number(location.href);
+ window.offscreenbuffering = true;
+ this.size_adjustment = this.find_size_adjust();
+ this.time_left = this.find_duration();
+ this.hide_image_toolbar(); // suppress IE image toolbar popup
+ this.init_outliner(); // activate fold/unfold support
+ this.title = document.title;
+
+ // work around for opera bug
+ this.is_xhtml = (document.body.tagName == "BODY" ? false : true);
+
+ if (this.slides.length > 0)
+ {
+ var slide = this.slides[this.slide_number];
+
+ if (this.slide_number > 0)
+ {
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ this.set_eos_status(true);
+ }
+ else
+ {
+ this.last_shown = null;
+ this.set_visibility_all_incremental("hidden");
+ this.set_eos_status(!this.next_incremental_item(this.last_shown));
+ }
+
+ this.set_location();
+ this.add_class(this.slides[0], "first-slide");
+ w3c_slidy.show_slide(slide);
+ }
+
+ this.toc = this.table_of_contents();
+
+ this.add_initial_prompt();
+
+ // bind event handlers without interfering with custom page scripts
+ // Tap events behave too weirdly to support clicks reliably on
+ // iPhone and iPad, so exclude these from click handler
+
+ if (!this.keyboardless)
+ this.add_listener(document.body, "click", this.mouse_button_click);
+
+ this.add_listener(document, "keydown", this.key_down);
+ this.add_listener(document, "keypress", this.key_press);
+ this.add_listener(window, "resize", this.resized);
+ this.add_listener(window, "scroll", this.scrolled);
+ this.add_listener(window, "unload", this.unloaded);
+
+ if (!document.body.onclick)
+ document.body.onclick = function () { };
+
+ this.single_slide_view();
+
+ //this.set_location();
+
+ this.resized();
+
+ if (this.ie7)
+ setTimeout(w3c_slidy.ie_hack, 100);
+
+ this.show_toolbar();
+
+ // for back button detection
+ setInterval(function () { w3c_slidy.check_location(); }, 200);
+ w3c_slidy.initialized = true;
+ },
+
+ // create div element with links to each slide
+ table_of_contents: function () {
+ var toc = this.create_element("div");
+ this.add_class(toc, "slidy_toc hidden");
+ //toc.setAttribute("tabindex", "0");
+
+ var heading = this.create_element("div");
+ this.add_class(heading, "toc-heading");
+ heading.innerHTML = "Table of Contents".localize();
+
+ toc.appendChild(heading);
+ var previous = null;
+
+ for (var i = 0; i < this.slides.length; ++i)
+ {
+ var title = this.has_class(this.slides[i], "title");
+ var num = document.createTextNode((i + 1) + ". ");
+
+ toc.appendChild(num);
+
+ var a = this.create_element("a");
+ a.setAttribute("href", "#(" + (i+1) + ")");
+
+ if (title)
+ this.add_class(a, "titleslide");
+
+ var name = document.createTextNode(this.slide_name(i));
+ a.appendChild(name);
+ a.onclick = w3c_slidy.toc_click;
+ a.onkeydown = w3c_slidy.toc_keydown;
+ a.previous = previous;
+
+ if (previous)
+ previous.next = a;
+
+ toc.appendChild(a);
+
+ if (i == 0)
+ toc.first = a;
+
+ if (i < this.slides.length - 1)
+ {
+ var br = this.create_element("br");
+ toc.appendChild(br);
+ }
+
+ previous = a;
+ }
+
+ toc.focus = function () {
+ if (this.first)
+ this.first.focus();
+ }
+
+ toc.onmouseup = w3c_slidy.mouse_button_up;
+
+ toc.onclick = function (e) {
+ e||(e=window.event);
+
+ if (w3c_slidy.selected_text_len <= 0)
+ w3c_slidy.hide_table_of_contents();
+
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ };
+
+ document.body.insertBefore(toc, document.body.firstChild);
+ return toc;
+ },
+
+ is_shown_toc: function () {
+ return !w3c_slidy.has_class(w3c_slidy.toc, "hidden");
+ },
+
+ show_table_of_contents: function () {
+ w3c_slidy.remove_class(w3c_slidy.toc, "hidden");
+ var toc = w3c_slidy.toc;
+ toc.focus();
+
+ if (w3c_slidy.ie7 && w3c_slidy.slide_number == 0)
+ setTimeout(w3c_slidy.ie_hack, 100);
+ },
+
+ hide_table_of_contents: function () {
+ w3c_slidy.add_class(w3c_slidy.toc, "hidden");
+
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ },
+
+ toggle_table_of_contents: function () {
+ if (w3c_slidy.is_shown_toc())
+ w3c_slidy.hide_table_of_contents();
+ else
+ w3c_slidy.show_table_of_contents();
+ },
+
+ // called on clicking toc entry
+ toc_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = w3c_slidy.get_target(e);
+
+ if (target && target.nodeType == 1)
+ {
+ var uri = target.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents(e);
+ if (w3c_slidy.ie7) w3c_slidy.ie_hack();
+ w3c_slidy.stop_propagation(e);
+ return w3c_slidy.cancel(e);
+ },
+
+ // called onkeydown for toc entry
+ toc_keydown: function (event) {
+ var key;
+
+ if (!event)
+ var event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey)
+ return true;
+
+ if (key == 13)
+ {
+ var uri = this.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents();
+
+ if (self.ie7)
+ w3c_slidy.ie_hack();
+
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 40 && this.next)
+ {
+ this.next.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 38 && this.previous)
+ {
+ this.previous.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ return true;
+ },
+
+
+ // ### OBSOLETE ###
+ before_print: function () {
+ this.show_all_slides();
+ this.hide_toolbar();
+ alert("before print");
+ },
+
+ // ### OBSOLETE ###
+ after_print: function () {
+ if (!this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ }
+ alert("after print");
+ },
+
+ // ### OBSOLETE ###
+ print_slides: function () {
+ this.before_print();
+ window.print();
+ this.after_print();
+ },
+
+ // ### OBSOLETE ?? ###
+ toggle_view: function () {
+ if (this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ this.view_all = 0;
+ }
+ else
+ {
+ this.show_all_slides();
+ this.hide_toolbar();
+ this.view_all = 1;
+ }
+ },
+
+ // prepare for printing ### OBSOLETE ###
+ show_all_slides: function () {
+ this.remove_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ },
+
+ // restore after printing ### OBSOLETE ###
+ single_slide_view: function () {
+ this.add_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ },
+
+ // suppress IE's image toolbar pop up
+ hide_image_toolbar: function () {
+ if (!this.ns_pos)
+ {
+ var images = document.getElementsByTagName("IMG");
+
+ for (var i = 0; i < images.length; ++i)
+ images[i].setAttribute("galleryimg", "no");
+ }
+ },
+
+ unloaded: function (e) {
+ //alert("unloaded");
+ },
+
+ // Safari and Konqueror don't yet support getComputedStyle()
+ // and they always reload page when location.href is updated
+ is_KHTML: function () {
+ var agent = navigator.userAgent;
+ return (agent.indexOf("KHTML") >= 0 ? true : false);
+ },
+
+ // find slide name from first h1 element
+ // default to document title + slide number
+ slide_name: function (index) {
+ var name = null;
+ var slide = this.slides[index];
+
+ var heading = this.find_heading(slide);
+
+ if (heading)
+ name = this.extract_text(heading);
+
+ if (!name)
+ name = this.title + "(" + (index + 1) + ")";
+
+ name.replace(/\&/g, "&");
+ name.replace(/\</g, "<");
+ name.replace(/\>/g, ">");
+
+ return name;
+ },
+
+ // find first h1 element in DOM tree
+ find_heading: function (node) {
+ if (!node || node.nodeType != 1)
+ return null;
+
+ if (node.nodeName == "H1" || node.nodeName == "h1")
+ return node;
+
+ var child = node.firstChild;
+
+ while (child)
+ {
+ node = this.find_heading(child);
+
+ if (node)
+ return node;
+
+ child = child.nextSibling;
+ }
+
+ return null;
+ },
+
+ // recursively extract text from DOM tree
+ extract_text: function (node) {
+ if (!node)
+ return "";
+
+ // text nodes
+ if (node.nodeType == 3)
+ return node.nodeValue;
+
+ // elements
+ if (node.nodeType == 1)
+ {
+ node = node.firstChild;
+ var text = "";
+
+ while (node)
+ {
+ text = text + this.extract_text(node);
+ node = node.nextSibling;
+ }
+
+ return text;
+ }
+
+ return "";
+ },
+
+ // find copyright text from meta element
+ find_copyright: function () {
+ var name, content;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "copyright")
+ return content;
+ }
+
+ return null;
+ },
+
+ find_size_adjust: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "font-size-adjustment")
+ return 1 * content;
+ }
+
+ return 1;
+ },
+
+ // <meta name="duration" content="20" /> for 20 minutes
+ find_duration: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "duration")
+ return 60000 * content;
+ }
+
+ return null;
+ },
+
+ replace_by_non_breaking_space: function (str) {
+ for (var i = 0; i < str.length; ++i)
+ str[i] = 160;
+ },
+
+ // ### CHECK ME ### is use of "li" okay for text/html?
+ // for XHTML do we also need to specify namespace?
+ init_outliner: function () {
+ var items = document.getElementsByTagName("li");
+
+ for (var i = 0; i < items.length; ++i)
+ {
+ var target = items[i];
+
+ if (!this.has_class(target.parentNode, "outline"))
+ continue;
+
+ target.onclick = this.outline_click;
+/* ### more work needed for IE6
+ if (!this.ns_pos)
+ {
+ target.onmouseover = this.hover_outline;
+ target.onmouseout = this.unhover_outline;
+ }
+*/
+ if (this.foldable(target))
+ {
+ target.foldable = true;
+ target.onfocus = function () {w3c_slidy.outline = this;};
+ target.onblur = function () {w3c_slidy.outline = null;};
+
+ if (!target.getAttribute("tabindex"))
+ target.setAttribute("tabindex", "0");
+
+ if (this.has_class(target, "expand"))
+ this.unfold(target);
+ else
+ this.fold(target);
+ }
+ else
+ {
+ this.add_class(target, "nofold");
+ target.visible = true;
+ target.foldable = false;
+ }
+ }
+ },
+
+ foldable: function (item) {
+ if (!item || item.nodeType != 1)
+ return false;
+
+ var node = item.firstChild;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node))
+ return true;
+
+ node = node.nextSibling;
+ }
+
+ return false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ fold: function (item) {
+ if (item)
+ {
+ this.remove_class(item, "unfolded");
+ this.add_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.add_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ unfold: function (item) {
+ if (item)
+ {
+ this.add_class(item, "unfolded");
+ this.remove_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.remove_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = true;
+ },
+
+ outline_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var rightclick = false;
+ var target = w3c_slidy.get_target(e);
+
+ while (target && target.visible == undefined)
+ target = target.parentNode;
+
+ if (!target)
+ return true;
+
+ if (e.which)
+ rightclick = (e.which == 3);
+ else if (e.button)
+ rightclick = (e.button == 2);
+
+ if (!rightclick && target.visible != undefined)
+ {
+ if (target.foldable)
+ {
+ if (target.visible)
+ w3c_slidy.fold(target);
+ else
+ w3c_slidy.unfold(target);
+ }
+
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ }
+
+ return false;
+ },
+
+ add_initial_prompt: function () {
+ var prompt = this.create_element("div");
+ prompt.setAttribute("class", "initial_prompt");
+
+ var p1 = this.create_element("p");
+ prompt.appendChild(p1);
+ p1.setAttribute("class", "help");
+
+ if (this.keyboardless)
+ p1.innerHTML = "Tap footer to move to next slide";
+ else
+ p1.innerHTML = "Space or Right Arrow to move to next " +
+ "slide, click help below for more details";
+
+ this.add_listener(prompt, "click", function (e) {
+ document.body.removeChild(prompt);
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ });
+
+ document.body.appendChild(prompt);
+ this.initial_prompt = prompt;
+ setTimeout(function() {document.body.removeChild(prompt);}, 5000);
+ },
+
+ add_toolbar: function () {
+ var counter, page;
+
+ this.toolbar = this.create_element("div");
+ this.toolbar.setAttribute("class", "toolbar");
+
+ // a reasonably behaved browser
+ if (this.ns_pos || !this.ie6)
+ {
+ var right = this.create_element("div");
+ right.setAttribute("style", "float: right; text-align: right");
+
+ counter = this.create_element("span")
+ counter.innerHTML = "slide".localize() + " n/m";
+ right.appendChild(counter);
+ this.toolbar.appendChild(right);
+
+ var left = this.create_element("div");
+ left.setAttribute("style", "text-align: left");
+
+ // global end of slide indicator
+ this.eos = this.create_element("span");
+ this.eos.innerHTML = "* ";
+ left.appendChild(this.eos);
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ left.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ left.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:w3c_slidy.toggle_table_of_contents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ left.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ left.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.className = "copyright";
+ span.innerHTML = copyright;
+ left.appendChild(span);
+ }
+
+ this.toolbar.setAttribute("tabindex", "0");
+ this.toolbar.appendChild(left);
+ }
+ else // IE6 so need to work around its poor CSS support
+ {
+ this.toolbar.style.position = (this.ie7 ? "fixed" : "absolute");
+ this.toolbar.style.zIndex = "200";
+ this.toolbar.style.width = "99.9%";
+ this.toolbar.style.height = "1.2em";
+ this.toolbar.style.top = "auto";
+ this.toolbar.style.bottom = "0";
+ this.toolbar.style.left = "0";
+ this.toolbar.style.right = "0";
+ this.toolbar.style.textAlign = "left";
+ this.toolbar.style.fontSize = "60%";
+ this.toolbar.style.color = "red";
+ this.toolbar.borderWidth = 0;
+ this.toolbar.className = "toolbar";
+ this.toolbar.style.background = "rgb(240,240,240)";
+
+ // would like to have help text left aligned
+ // and page counter right aligned, floating
+ // div's don't work, so instead use nested
+ // absolutely positioned div's.
+
+ var sp = this.create_element("span");
+ sp.innerHTML = " * ";
+ this.toolbar.appendChild(sp);
+ this.eos = sp; // end of slide indicator
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ this.toolbar.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:toggleTableOfContents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ this.toolbar.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.innerHTML = copyright;
+ span.style.color = "black";
+ span.style.marginLeft = "0.5em";
+ this.toolbar.appendChild(span);
+ }
+
+ counter = this.create_element("div")
+ counter.style.position = "absolute";
+ counter.style.width = "auto"; //"20%";
+ counter.style.height = "1.2em";
+ counter.style.top = "auto";
+ counter.style.bottom = 0;
+ counter.style.right = "0";
+ counter.style.textAlign = "right";
+ counter.style.color = "red";
+ counter.style.background = "rgb(240,240,240)";
+
+ counter.innerHTML = "slide".localize() + " n/m";
+ this.toolbar.appendChild(counter);
+ }
+
+ // ensure that click isn't passed through to the page
+ this.toolbar.onclick =
+ function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = e.target;
+
+ if (!target && e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target && target.nodeType == 3)
+ target = target.parentNode;
+
+ w3c_slidy.stop_propagation(e);
+
+ if (target && target.nodeName.toLowerCase() != "a")
+ w3c_slidy.mouse_button_click(e);
+ };
+
+ this.slide_number_element = counter;
+ this.set_eos_status(false);
+ document.body.appendChild(this.toolbar);
+ },
+
+ // wysiwyg editors make it hard to use div elements
+ // e.g. amaya loses the div when you copy and paste
+ // this function wraps div elements around implicit
+ // slides which start with an h1 element and continue
+ // up to the next heading or div element
+ wrap_implicit_slides: function () {
+ var i, heading, node, next, div;
+ var headings = document.getElementsByTagName("h1");
+
+ if (!headings)
+ return;
+
+ for (i = 0; i < headings.length; ++i)
+ {
+ heading = headings[i];
+
+ if (heading.parentNode != document.body)
+ continue;
+
+ node = heading.nextSibling;
+
+ div = document.createElement("div");
+ this.add_class(div, "slide");
+ document.body.replaceChild(div, heading);
+ div.appendChild(heading);
+
+ while (node)
+ {
+ if (node.nodeType == 1 && // an element
+ (node.nodeName == "H1" ||
+ node.nodeName == "h1" ||
+ node.nodeName == "DIV" ||
+ node.nodeName == "div"))
+ break;
+
+ next = node.nextSibling;
+ node = document.body.removeChild(node);
+ div.appendChild(node);
+ node = next;
+ }
+ }
+ },
+
+// return new array of all slides
+ collect_slides: function () {
+ var slides = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "slide"))
+ {
+ // add slide to collection
+ slides[slides.length] = div;
+
+ // hide each slide as it is found
+ this.add_class(div, "hidden");
+
+ // add dummy <br/> at end for scrolling hack
+ var node1 = document.createElement("br");
+ div.appendChild(node1);
+ var node2 = document.createElement("br");
+ div.appendChild(node2);
+ }
+ else if (this.has_class(div, "background"))
+ { // work around for Firefox SVG reload bug
+ // which otherwise replaces 1st SVG graphic with 2nd
+ div.style.display = "block";
+ }
+ }
+
+ this.slides = slides;
+ },
+
+ // return new array of all <div class="handout">
+ collect_notes: function () {
+ var notes = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "handout"))
+ {
+ // add note to collection
+ notes[notes.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.notes = notes;
+ },
+
+ // return new array of all <div class="background">
+ // including named backgrounds e.g. class="background titlepage"
+ collect_backgrounds: function () {
+ var backgrounds = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "background"))
+ {
+ // add background to collection
+ backgrounds[backgrounds.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.backgrounds = backgrounds;
+ },
+
+ // set click handlers on all anchors
+ patch_anchors: function () {
+ var self = w3c_slidy;
+ var handler = function (event) {
+ // compare this.href with location.href
+ // for link to another slide in this doc
+
+ if (self.page_address(this.href) == self.page_address(location.href))
+ {
+ // yes, so find new slide number
+ var newslidenum = self.find_slide_number(this.href);
+
+ if (newslidenum != self.slide_number)
+ {
+ var slide = self.slides[self.slide_number];
+ self.hide_slide(slide);
+ self.slide_number = newslidenum;
+ slide = self.slides[self.slide_number];
+ self.show_slide(slide);
+ self.set_location();
+ }
+ }
+ else if (this.target == null)
+ location.href = this.href;
+
+ this.blur();
+ self.disable_slide_click = true;
+ };
+
+ var anchors = document.body.getElementsByTagName("a");
+
+ for (var i = 0; i < anchors.length; ++i)
+ {
+ if (window.addEventListener)
+ anchors[i].addEventListener("click", handler, false);
+ else
+ anchors[i].attachEvent("onclick", handler);
+ }
+ },
+
+ // ### CHECK ME ### see which functions are invoked via setTimeout
+ // either directly or indirectly for use of w3c_slidy vs this
+ show_slide_number: function () {
+ var timer = w3c_slidy.get_timer();
+ w3c_slidy.slide_number_element.innerHTML = timer + "slide".localize() + " " +
+ (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length;
+ },
+
+ // every 200mS check if the location has been changed as a
+ // result of the user activating the Back button/menu item
+ // doesn't work for Opera < 9.5
+ check_location: function () {
+ var hash = location.hash;
+
+ if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#"))
+ w3c_slidy.goto_slide(0);
+ else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")")
+ {
+ var num = parseInt(location.hash.substr(2));
+
+ if (!isNaN(num))
+ w3c_slidy.goto_slide(num-1);
+ }
+
+ if (w3c_slidy.time_left && w3c_slidy.slide_number > 0)
+ {
+ w3c_slidy.show_slide_number();
+
+ if (w3c_slidy.time_left > 0)
+ w3c_slidy.time_left -= 200;
+ }
+ },
+
+ get_timer: function () {
+ var timer = "";
+ if (w3c_slidy.time_left)
+ {
+ var mins, secs;
+ secs = Math.floor(w3c_slidy.time_left/1000);
+ mins = Math.floor(secs / 60);
+ secs = secs % 60;
+ timer = (mins ? mins+"m" : "") + secs + "s ";
+ }
+
+ return timer;
+ },
+
+ // this doesn't push location onto history stack for IE
+ // for which a hidden iframe hack is needed: load page into
+ // the iframe with script that set's parent's location.hash
+ // but that won't work for standalone use unless we can
+ // create the page dynamically via a javascript: URL
+ set_location: function () {
+ var uri = w3c_slidy.page_address(location.href);
+ var hash = "#(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (w3c_slidy.slide_number >= 0)
+ uri = uri + hash;
+
+ if (w3c_slidy.ie && !w3c_slidy.ie8)
+ w3c_slidy.push_hash(hash);
+
+ if (uri != location.href) // && !khtml
+ location.href = uri;
+
+ if (this.khtml)
+ hash = "(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (!this.ie && location.hash != hash && location.hash != "")
+ location.hash = hash;
+
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide_number();
+ },
+
+ page_address: function (uri) {
+ var i = uri.indexOf("#");
+
+ if (i < 0)
+ i = uri.indexOf("%23");
+
+ // check if anchor is entire page
+
+ if (i < 0)
+ return uri; // yes
+
+ return uri.substr(0, i);
+ },
+
+ // only used for IE6 and IE7
+ on_frame_loaded: function (hash) {
+ location.hash = hash;
+ var uri = w3c_slidy.page_address(location.href);
+ location.href = uri + hash;
+ },
+
+ // history hack with thanks to Bertrand Le Roy
+ push_hash: function (hash) {
+ if (hash == "") hash = "#(1)";
+ window.location.hash = hash;
+
+ var doc = document.getElementById("historyFrame").contentWindow.document;
+ doc.open("javascript:'<html></html>'");
+ // PWL modified this string literal to break the close script tag
+ // which otherwise gets parsed when incorporated
+ doc.write("<html><head><script type=\"text/javascript\">window.parent.w3c_slidy.on_frame_loaded('"+
+ (hash) + "');</" + "script></head><body>hello mum</body></html>");
+ doc.close();
+ },
+
+ // find current slide based upon location
+ // first find target anchor and then look
+ // for associated div element enclosing it
+ // finally map that to slide number
+ find_slide_number: function (uri) {
+ // first get anchor from page location
+
+ var i = uri.indexOf("#");
+
+ // check if anchor is entire page
+ if (i < 0)
+ return 0; // yes
+
+ var anchor = unescape(uri.substr(i+1));
+
+ // now use anchor as XML ID to find target
+ var target = document.getElementById(anchor);
+
+ if (!target)
+ {
+ // does anchor look like "(2)" for slide 2 ??
+ // where first slide is (1)
+ var re = /\((\d)+\)/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // accept [2] for backwards compatibility
+ re = /\[(\d)+\]/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // oh dear unknown anchor
+ return 0;
+ }
+
+ // search for enclosing slide
+
+ while (true)
+ {
+ // browser coerces html elements to uppercase!
+ if (target.nodeName.toLowerCase() == "div" &&
+ this.has_class(target, "slide"))
+ {
+ // found the slide element
+ break;
+ }
+
+ // otherwise try parent element if any
+
+ target = target.parentNode;
+
+ if (!target)
+ {
+ return 0; // no luck!
+ }
+ };
+
+ for (i = 0; i < slides.length; ++i)
+ {
+ if (slides[i] == target)
+ return i; // success
+ }
+
+ // oh dear still no luck
+ return 0;
+ },
+
+ previous_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null)
+ {
+ w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown);
+ w3c_slidy.set_eos_status(false);
+ }
+ else if (w3c_slidy.slide_number > 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_location();
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ next_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide, last = w3c_slidy.last_shown;
+
+ if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1)
+ w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown);
+
+ if ((!incremental || w3c_slidy.last_shown == null) &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number + 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+ else if (!w3c_slidy.last_shown)
+ {
+ if (last && incremental)
+ w3c_slidy.last_shown = last;
+ }
+
+ w3c_slidy.set_location();
+
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ // to first slide with nothing revealed
+ // i.e. state at start of presentation
+ first_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if (w3c_slidy.slide_number != 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = 0;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_eos_status(
+ !w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.set_location();
+ }
+ },
+
+ // goto last slide with everything revealed
+ // i.e. state at end of presentation
+ last_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ w3c_slidy.last_shown = null; //revealNextItem(lastShown);
+
+ if (w3c_slidy.last_shown == null &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.slides.length - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+
+ w3c_slidy.show_slide(slide);
+ }
+ else
+ {
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ }
+
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.set_location();
+ }
+ },
+
+
+ // ### check this and consider add/remove class
+ set_eos_status: function (state) {
+ if (this.eos)
+ this.eos.style.color = (state ? "rgb(240,240,240)" : "red");
+ },
+
+ // first slide is 0
+ goto_slide: function (num) {
+ //alert("going to slide " + (num+1));
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = num;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide(slide);
+ w3c_slidy.show_slide_number();
+ },
+
+
+ show_slide: function (slide) {
+ this.sync_background(slide);
+ window.scrollTo(0,0);
+ this.remove_class(slide, "hidden");
+ },
+
+ hide_slide: function (slide) {
+ this.add_class(slide, "hidden");
+ },
+
+ // show just the backgrounds pertinent to this slide
+ // when slide background-color is transparent
+ // this should now work with rgba color values
+ sync_background: function (slide) {
+ var background;
+ var bgColor;
+
+ if (slide.currentStyle)
+ bgColor = slide.currentStyle["backgroundColor"];
+ else if (document.defaultView)
+ {
+ var styles = document.defaultView.getComputedStyle(slide,null);
+
+ if (styles)
+ bgColor = styles.getPropertyValue("background-color");
+ else // broken implementation probably due Safari or Konqueror
+ {
+ //alert("defective implementation of getComputedStyle()");
+ bgColor = "transparent";
+ }
+ }
+ else
+ bgColor == "transparent";
+
+ if (bgColor == "transparent" ||
+ bgColor.indexOf("rgba") >= 0 ||
+ bgColor.indexOf("opacity") >= 0)
+ {
+ var slideClass = this.get_class_list(slide);
+
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+
+ var bgClass = this.get_class_list(background);
+
+ if (this.matching_background(slideClass, bgClass))
+ this.remove_class(background, "hidden");
+ else
+ this.add_class(background, "hidden");
+ }
+ }
+ else // forcibly hide all backgrounds
+ this.hide_backgrounds();
+ },
+
+ hide_backgrounds: function () {
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+ this.add_class(background, "hidden");
+ }
+ },
+
+ // compare classes for slide and background
+ matching_background: function (slideClass, bgClass) {
+ var i, count, pattern, result;
+
+ // define pattern as regular expression
+ pattern = /\w+/g;
+
+ // check background class names
+ result = bgClass.match(pattern);
+
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (result[i] == "background")
+ continue;
+
+ ++count;
+ }
+
+ if (count == 0) // default match
+ return true;
+
+ // check for matches and place result in array
+ result = slideClass.match(pattern);
+
+ // now check if desired name is present for background
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (this.has_token(bgClass, result[i]))
+ return true;
+ }
+
+ return false;
+ },
+
+ resized: function () {
+ var width = 0;
+
+ if ( typeof( window.innerWidth ) == 'number' )
+ width = window.innerWidth; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientWidth)
+ width = document.documentElement.clientWidth; // IE6
+ else if (document.body && document.body.clientWidth)
+ width = document.body.clientWidth; // IE4
+
+ var height = 0;
+
+ if ( typeof( window.innerHeight ) == 'number' )
+ height = window.innerHeight; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientHeight)
+ height = document.documentElement.clientHeight; // IE6
+ else if (document.body && document.body.clientHeight)
+ height = document.body.clientHeight; // IE4
+
+ if (height && (width/height > 1.05*1024/768))
+ {
+ width = height * 1024.0/768;
+ }
+
+ // IE fires onresize even when only font size is changed!
+ // so we do a check to avoid blocking < and > actions
+ if (width != w3c_slidy.last_width || height != w3c_slidy.last_height)
+ {
+ if (width >= 1100)
+ w3c_slidy.size_index = 5; // 4
+ else if (width >= 1000)
+ w3c_slidy.size_index = 4; // 3
+ else if (width >= 800)
+ w3c_slidy.size_index = 3; // 2
+ else if (width >= 600)
+ w3c_slidy.size_index = 2; // 1
+ else if (width)
+ w3c_slidy.size_index = 0;
+
+ // add in font size adjustment from meta element e.g.
+ // <meta name="font-size-adjustment" content="-2" />
+ // useful when slides have too much content ;-)
+
+ if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment &&
+ w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length)
+ w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment;
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ w3c_slidy.adjust_object_dimensions(width, height);
+
+ if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index])
+ {
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ }
+
+ w3c_slidy.last_width = width;
+ w3c_slidy.last_height = height;
+
+ // force reflow to work around Mozilla bug
+ if (w3c_slidy.ns_pos)
+ {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ }
+
+ // force correct positioning of toolbar
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ scrolled: function () {
+ if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset();
+ // hide toolbar
+ w3c_slidy.toolbar.style.display = "none";
+
+ // make it reappear later
+ if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all)
+ {
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000);
+ w3c_slidy.scrollhack = 1;
+ }
+ }
+ },
+
+ hide_toolbar: function () {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden");
+ window.focus();
+ },
+
+ // used to ensure IE refreshes toolbar in correct position
+ refresh_toolbar: function (interval) {
+ if (!w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hide_toolbar();
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, interval);
+ }
+ },
+
+ // restores toolbar after short delay
+ show_toolbar: function () {
+ if (w3c_slidy.want_toolbar)
+ {
+ w3c_slidy.toolbar.style.display = "block";
+
+ if (!w3c_slidy.ns_pos)
+ {
+ // adjust position to allow for scrolling
+ var xoffset = w3c_slidy.scroll_x_offset();
+ w3c_slidy.toolbar.style.left = xoffset;
+ w3c_slidy.toolbar.style.right = xoffset;
+
+ // determine vertical scroll offset
+ //var yoffset = scrollYOffset();
+
+ // bottom is doc height - window height - scroll offset
+ //var bottom = documentHeight() - lastHeight - yoffset
+
+ //if (yoffset > 0 || documentHeight() > lastHeight)
+ // bottom += 16; // allow for height of scrollbar
+
+ w3c_slidy.toolbar.style.bottom = 0; //bottom;
+ }
+
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden");
+ }
+
+ w3c_slidy.scrollhack = 0;
+
+
+ // set the keyboard focus to the help link on the
+ // toolbar to ensure that document has the focus
+ // IE doesn't always work with window.focus()
+ // and this hack has benefit of Enter for help
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ },
+
+// invoked via F key
+ toggle_toolbar: function () {
+ if (!w3c_slidy.view_all)
+ {
+ if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden"))
+ {
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 1;
+ }
+ else
+ {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 0;
+ }
+ }
+ },
+
+ scroll_x_offset: function () {
+ if (window.pageXOffset)
+ return self.pageXOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollLeft)
+ return document.documentElement.scrollLeft;
+
+ if (document.body)
+ return document.body.scrollLeft;
+
+ return 0;
+ },
+
+ scroll_y_offset: function () {
+ if (window.pageYOffset)
+ return self.pageYOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollTop)
+ return document.documentElement.scrollTop;
+
+ if (document.body)
+ return document.body.scrollTop;
+
+ return 0;
+ },
+
+ // looking for a way to determine height of slide content
+ // the slide itself is set to the height of the window
+ optimize_font_size: function () {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ //var dh = documentHeight(); //getDocHeight(document);
+ var dh = slide.scrollHeight;
+ var wh = getWindowHeight();
+ var u = 100 * dh / wh;
+
+ alert("window utilization = " + u + "% (doc "
+ + dh + " win " + wh + ")");
+ },
+
+ // from document object
+ get_doc_height: function (doc) {
+ if (!doc)
+ doc = document;
+
+ if (doc && doc.body && doc.body.offsetHeight)
+ return doc.body.offsetHeight; // ns/gecko syntax
+
+ if (doc && doc.body && doc.body.scrollHeight)
+ return doc.body.scrollHeight;
+
+ alert("couldn't determine document height");
+ },
+
+ get_window_height: function () {
+ if ( typeof( window.innerHeight ) == 'number' )
+ return window.innerHeight; // Non IE browser
+
+ if (document.documentElement && document.documentElement.clientHeight)
+ return document.documentElement.clientHeight; // IE6
+
+ if (document.body && document.body.clientHeight)
+ return document.body.clientHeight; // IE4
+ },
+
+ document_height: function () {
+ var sh, oh;
+
+ sh = document.body.scrollHeight;
+ oh = document.body.offsetHeight;
+
+ if (sh && oh)
+ {
+ return (sh > oh ? sh : oh);
+ }
+
+ // no idea!
+ return 0;
+ },
+
+ smaller: function () {
+ if (w3c_slidy.size_index > 0)
+ {
+ --w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ bigger: function () {
+ if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1)
+ {
+ ++w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ // with thanks to Ivan Herman for the suggestion
+ adjust_object_dimensions: function (width, height) {
+ for( var i = 0; i < w3c_slidy.objects.length; i++ )
+ {
+ var obj = this.objects[i];
+ var mimeType = obj.getAttribute("type");
+
+ if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash")
+ {
+ if ( !obj.initialWidth )
+ obj.initialWidth = obj.getAttribute("width");
+
+ if ( !obj.initialHeight )
+ obj.initialHeight = obj.getAttribute("height");
+
+ if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" )
+ {
+ var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1));
+ var newW = width * (w/100.0);
+ obj.setAttribute("width",newW);
+ }
+
+ if ( obj.initialHeight &&
+ obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" )
+ {
+ var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1));
+ var newH = height * (h/100.0);
+ obj.setAttribute("height", newH);
+ }
+ }
+ }
+ },
+
+ // needed for Opera to inhibit default behavior
+ // since Opera delivers keyPress even if keyDown
+ // was cancelled
+ key_press: function (event) {
+ if (!event)
+ event = window.event;
+
+ if (!w3c_slidy.key_wanted)
+ return w3c_slidy.cancel(event);
+
+ return true;
+ },
+
+ // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
+ key_down: function (event) {
+ var key;
+
+ w3c_slidy.key_wanted = true;
+
+ if (!event)
+ event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey || event.metaKey)
+ return true;
+
+ // dismiss table of contents if visible
+ if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40)
+ {
+ w3c_slidy.hide_table_of_contents();
+
+ if (key == 27 || key == 84 || key == 67)
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 34) // Page Down
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.next_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 33) // Page Up
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.previous_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 32) // space bar
+ {
+ w3c_slidy.next_slide(true);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 37) // Left arrow
+ {
+ w3c_slidy.previous_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 36) // Home
+ {
+ w3c_slidy.first_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 35) // End
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 39) // Right arrow
+ {
+ w3c_slidy.next_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 13) // Enter
+ {
+ if (w3c_slidy.outline)
+ {
+ if (w3c_slidy.outline.visible)
+ w3c_slidy.fold(w3c_slidy.outline);
+ else
+ w3c_slidy.unfold(w3c_slidy.outline);
+
+ return w3c_slidy.cancel(event);
+ }
+ }
+ else if (key == 188) // < for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 190) // > for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 189 || key == 109) // - for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 187 || key == 191 || key == 107) // = + for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 83) // S for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 66) // B for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 90) // Z for last slide
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 70) // F for toggle toolbar
+ {
+ w3c_slidy.toggle_toolbar();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 65) // A for toggle view single/all slides
+ {
+ w3c_slidy.toggle_view();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 75) // toggle action of left click for next page
+ {
+ w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled;
+ var alert_msg = (w3c_slidy.mouse_click_enabled ?
+ "enabled" : "disabled") + " mouse click advance";
+
+ alert(alert_msg.localize());
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 84 || key == 67) // T or C for table of contents
+ {
+ if (w3c_slidy.toc)
+ w3c_slidy.toggle_table_of_contents();
+
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 72) // H for help
+ {
+ window.location = w3c_slidy.help_page;
+ return w3c_slidy.cancel(event);
+ }
+ //else alert("key code is "+ key);
+
+ return true;
+ },
+
+ // safe for both text/html and application/xhtml+xml
+ create_element: function (name) {
+ if (this.xhtml && (typeof document.createElementNS != 'undefined'))
+ return document.createElementNS("http://www.w3.org/1999/xhtml", name)
+
+ return document.createElement(name);
+ },
+
+ get_element_style: function (elem, IEStyleProp, CSSStyleProp) {
+ if (elem.currentStyle)
+ {
+ return elem.currentStyle[IEStyleProp];
+ }
+ else if (window.getComputedStyle)
+ {
+ var compStyle = window.getComputedStyle(elem, "");
+ return compStyle.getPropertyValue(CSSStyleProp);
+ }
+ return "";
+ },
+
+ // the string str is a whitespace separated list of tokens
+ // test if str contains a particular token, e.g. "slide"
+ has_token: function (str, token) {
+ if (str)
+ {
+ // define pattern as regular expression
+ var pattern = /\w+/g;
+
+ // check for matches
+ // place result in array
+ var result = str.match(pattern);
+
+ // now check if desired token is present
+ for (var i = 0; i < result.length; i++)
+ {
+ if (result[i] == token)
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ get_class_list: function (element) {
+ if (typeof element.className != 'undefined')
+ return element.className;
+
+ return element.getAttribute("class");
+ },
+
+ has_class: function (element, name) {
+ if (element.nodeType != 1)
+ return false;
+
+ var regexp = new RegExp("(^| )" + name + "\W*");
+
+ if (typeof element.className != 'undefined')
+ return regexp.test(element.className);
+
+ return regexp.test(element.getAttribute("class"));
+ },
+
+ remove_class: function (element, name) {
+ var regexp = new RegExp("(^| )" + name + "\W*");
+ var clsval = "";
+
+ if (typeof element.className != 'undefined')
+ {
+ clsval = element.className;
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.className = clsval;
+ }
+ }
+ else
+ {
+ clsval = element.getAttribute("class");
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ add_class: function (element, name) {
+ if (!this.has_class(element, name))
+ {
+ if (typeof element.className != 'undefined')
+ element.className += " " + name;
+ else
+ {
+ var clsval = element.getAttribute("class");
+ clsval = clsval ? clsval + " " + name : name;
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ // HTML elements that can be used with class="incremental"
+ // note that you can also put the class on containers like
+ // up, ol, dl, and div to make their contents appear
+ // incrementally. Upper case is used since this is what
+ // browsers report for HTML node names (text/html).
+ incremental_elements: null,
+ okay_for_incremental: function (name) {
+ if (!this.incremental_elements)
+ {
+ var inclist = new Array();
+ inclist["p"] = true;
+ inclist["pre"] = true;
+ inclist["li"] = true;
+ inclist["blockquote"] = true;
+ inclist["dt"] = true;
+ inclist["dd"] = true;
+ inclist["h2"] = true;
+ inclist["h3"] = true;
+ inclist["h4"] = true;
+ inclist["h5"] = true;
+ inclist["h6"] = true;
+ inclist["span"] = true;
+ inclist["address"] = true;
+ inclist["table"] = true;
+ inclist["tr"] = true;
+ inclist["th"] = true;
+ inclist["td"] = true;
+ inclist["img"] = true;
+ inclist["object"] = true;
+ this.incremental_elements = inclist;
+ }
+ return this.incremental_elements[name.toLowerCase()];
+ },
+
+ next_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.next_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1) // ELEMENT
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ previous_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.previous_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1)
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ // set visibility for all elements on current slide with
+ // a parent element with attribute class="incremental"
+ set_visibility_all_incremental: function (value) {
+ var node = this.next_incremental_item(null);
+
+ if (value == "hidden")
+ {
+ while (node)
+ {
+ w3c_slidy.add_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ else // value == "visible"
+ {
+ while (node)
+ {
+ w3c_slidy.remove_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ },
+
+ // reveal the next hidden item on the slide
+ // node is null or the node that was last revealed
+ reveal_next_item: function (node) {
+ node = w3c_slidy.next_incremental_item(node);
+
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.remove_class(node, "invisible");
+
+ return node;
+ },
+
+ // exact inverse of revealNextItem(node)
+ hide_previous_item: function (node) {
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.add_class(node, "invisible");
+
+ return this.previous_incremental_item(node);
+ },
+
+ // left to right traversal of root's content
+ next_node: function (root, node) {
+ if (node == null)
+ return root.firstChild;
+
+ if (node.firstChild)
+ return node.firstChild;
+
+ if (node.nextSibling)
+ return node.nextSibling;
+
+ for (;;)
+ {
+ node = node.parentNode;
+
+ if (!node || node == root)
+ break;
+
+ if (node && node.nextSibling)
+ return node.nextSibling;
+ }
+
+ return null;
+ },
+
+ // right to left traversal of root's content
+ previous_node: function (root, node) {
+ if (node == null)
+ {
+ node = root.lastChild;
+
+ if (node)
+ {
+ while (node.lastChild)
+ node = node.lastChild;
+ }
+
+ return node;
+ }
+
+ if (node.previousSibling)
+ {
+ node = node.previousSibling;
+
+ while (node.lastChild)
+ node = node.lastChild;
+
+ return node;
+ }
+
+ if (node.parentNode != root)
+ return node.parentNode;
+
+ return null;
+ },
+
+ previous_sibling_element: function (el) {
+ el = el.previousSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.previousSibling;
+
+ return el;
+ },
+
+ next_sibling_element: function (el) {
+ el = el.nextSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.nextSibling;
+
+ return el;
+ },
+
+ first_child_element: function (el) {
+ var node;
+
+ for (node = el.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1)
+ break;
+ }
+
+ return node;
+ },
+
+ first_tag: function (element, tag) {
+ var node;
+
+ if (!this.is_xhtml)
+ tag = tag.toUpperCase();
+
+ for (node = element.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1 && node.nodeName == tag)
+ break;
+ }
+
+ return node;
+ },
+
+ hide_selection: function () {
+ if (window.getSelection) // Firefox, Chromium, Safari, Opera
+ {
+ var selection = window.getSelection();
+
+ if (selection.rangeCount > 0)
+ {
+ var range = selection.getRangeAt(0);
+ range.collapse (false);
+ }
+ }
+ else // Internet Explorer
+ {
+ var textRange = document.selection.createRange ();
+ textRange.collapse (false);
+ }
+ },
+
+ get_selected_text: function () {
+ try
+ {
+ if (window.getSelection)
+ return window.getSelection().toString();
+
+ if (document.getSelection)
+ return document.getSelection().toString();
+
+ if (document.selection)
+ return document.selection.createRange().text;
+ }
+ catch (e)
+ {
+ }
+
+ return "";
+ },
+
+ // make note of length of selected text
+ // as this evaluates to zero in click event
+ mouse_button_up: function (e) {
+ w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length;
+ },
+
+ // right mouse button click is reserved for context menus
+ // it is more reliable to detect rightclick than leftclick
+ mouse_button_click: function (e) {
+ var rightclick = false;
+ var leftclick = false;
+ var middleclick = false;
+ var target;
+
+ if (!e)
+ var e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target.nodeType == 3)
+ target = target.parentNode;
+
+ if (e.which) // all browsers except IE
+ {
+ leftclick = (e.which == 1);
+ middleclick = (e.which == 2);
+ rightclick = (e.which == 3);
+ }
+ else if (e.button)
+ {
+ // Konqueror gives 1 for left, 4 for middle
+ // IE6 gives 0 for left and not 1 as I expected
+
+ if (e.button == 4)
+ middleclick = true;
+
+ // all browsers agree on 2 for right button
+ rightclick = (e.button == 2);
+ }
+ else leftclick = true;
+/*
+ alert("you clicked over a " + target.nodeName + " element\n" +
+ "w3c_slidy.mouse_click_enabled = " + w3c_slidy.mouse_click_enabled + "\n" +
+ "leftclick = " + leftclick + "\n" +
+ "selected text length = " + w3c_slidy.selected_text_len);
+ //alert("selected text length = " + w3c_slidy.selected_text_len);
+*/
+ if (w3c_slidy.selected_text_len > 0)
+ {
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+
+ // dismiss table of contents
+ w3c_slidy.hide_table_of_contents();
+
+ // check if target is something that probably want's clicks
+ // e.g. a, embed, object, input, textarea, select, option
+ var tag = target.nodeName.toLowerCase();
+
+ if (w3c_slidy.mouse_click_enabled && leftclick &&
+ tag != "a" &&
+ tag != "embed" &&
+ tag != "object" &&
+ tag != "video" &&
+ tag != "input" &&
+ tag != "textarea" &&
+ tag != "select" &&
+ tag != "option" &&
+ !target.onclick)
+ {
+ w3c_slidy.next_slide(true);
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+ },
+
+ get_key: function (e)
+ {
+ var key;
+
+ // kludge around NS/IE differences
+ if (typeof window.event != "undefined")
+ key = window.event.keyCode;
+ else if (e.which)
+ key = e.which;
+
+ return key;
+ },
+
+ get_target: function (e) {
+ var target;
+
+ if (!e)
+ e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ if (target.nodeType != 1)
+ target = target.parentNode;
+
+ return target;
+ },
+
+ // does display property provide correct defaults?
+ is_block: function (elem) {
+ var tag = elem.nodeName.toLowerCase();
+
+ return tag == "ol" || tag == "ul" || tag == "p" ||
+ tag == "li" || tag == "table" || tag == "pre" ||
+ tag == "h1" || tag == "h2" || tag == "h3" ||
+ tag == "h4" || tag == "h5" || tag == "h6" ||
+ tag == "blockquote" || tag == "address";
+ },
+
+ add_listener: function (element, event, handler) {
+ if (window.addEventListener)
+ element.addEventListener(event, handler, false);
+ else
+ element.attachEvent("on"+event, handler);
+ },
+
+ // used to prevent event propagation from field controls
+ stop_propagation: function (event) {
+ event = event ? event : window.event;
+ event.cancelBubble = true; // for IE
+
+ if (event.stopPropagation)
+ event.stopPropagation();
+
+ return true;
+ },
+
+ cancel: function (event) {
+ if (event)
+ {
+ event.cancel = true;
+ event.returnValue = false;
+
+ if (event.preventDefault)
+ event.preventDefault();
+ }
+
+ w3c_slidy.key_wanted = false;
+ return false;
+ }
+};
+
+// for each language define an associative array
+// and also the help text which is longer
+
+var w3c_slidy_i18n = {
+ strings_es: {
+ "slide":"pág.",
+ "help?":"Ayuda",
+ "contents?":"Índice",
+ "table of contents":"tabla de contenidos",
+ "Table of Contents":"Tabla de Contenidos",
+ "restart presentation":"Reiniciar presentación",
+ "restart?":"Inicio"
+ },
+ help_es:
+ "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
+ "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
+
+ strings_ca: {
+ "slide":"pàg..",
+ "help?":"Ajuda",
+ "contents?":"Índex",
+ "table of contents":"taula de continguts",
+ "Table of Contents":"Taula de Continguts",
+ "restart presentation":"Reiniciar presentació",
+ "restart?":"Inici"
+ },
+ help_ca:
+ "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " +
+ "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.",
+
+ strings_cs: {
+ "slide":"snímek",
+ "help?":"nápověda",
+ "contents?":"obsah",
+ "table of contents":"obsah prezentace",
+ "Table of Contents":"Obsah prezentace",
+ "restart presentation":"znovu spustit prezentaci",
+ "restart?":"restart"
+ },
+ help_cs:
+ "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " +
+ "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " +
+ "dá zvětšit a zmenšit pomocí kláves B a S.",
+
+ strings_nl: {
+ "slide":"pagina",
+ "help?":"Help?",
+ "contents?":"Inhoud?",
+ "table of contents":"inhoudsopgave",
+ "Table of Contents":"Inhoudsopgave",
+ "restart presentation":"herstart presentatie",
+ "restart?":"Herstart?"
+ },
+ help_nl:
+ "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " +
+ "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.",
+
+ strings_de: {
+ "slide":"Seite",
+ "help?":"Hilfe",
+ "contents?":"Übersicht",
+ "table of contents":"Inhaltsverzeichnis",
+ "Table of Contents":"Inhaltsverzeichnis",
+ "restart presentation":"Präsentation neu starten",
+ "restart?":"Neustart"
+ },
+ help_de:
+ "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " +
+ "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.",
+
+ strings_pl: {
+ "slide":"slajd",
+ "help?":"pomoc?",
+ "contents?":"spis treści?",
+ "table of contents":"spis treści",
+ "Table of Contents":"Spis Treści",
+ "restart presentation":"Restartuj prezentację",
+ "restart?":"restart?"
+ },
+ help_pl:
+ "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" +
+ "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.",
+
+ strings_fr: {
+ "slide":"page",
+ "help?":"Aide",
+ "contents?":"Index",
+ "table of contents":"table des matières",
+ "Table of Contents":"Table des matières",
+ "restart presentation":"Recommencer l'exposé",
+ "restart?":"Début"
+ },
+ help_fr:
+ "Naviguez avec la souris, la barre d'espace, les flèches " +
+ "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " +
+ "les touches S et B pour modifier la taille de la police.",
+
+ strings_hu: {
+ "slide":"oldal",
+ "help?":"segítség",
+ "contents?":"tartalom",
+ "table of contents":"tartalomjegyzék",
+ "Table of Contents":"Tartalomjegyzék",
+ "restart presentation":"bemutató újraindítása",
+ "restart?":"újraindítás"
+ },
+ help_hu:
+ "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " +
+ "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " +
+ "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " +
+ "a szöveg méretét.",
+
+ strings_it: {
+ "slide":"pag.",
+ "help?":"Aiuto",
+ "contents?":"Indice",
+ "table of contents":"indice",
+ "Table of Contents":"Indice",
+ "restart presentation":"Ricominciare la presentazione",
+ "restart?":"Inizio"
+ },
+ help_it:
+ "Navigare con mouse, barra spazio, frecce sinistra/destra o " +
+ "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.",
+
+ strings_el: {
+ "slide":"σελίδα",
+ "help?":"βοήθεια;",
+ "contents?":"περιεχόμενα;",
+ "table of contents":"πίνακας περιεχομένων",
+ "Table of Contents":"Πίνακας Περιεχομένων",
+ "restart presentation":"επανεκκίνηση παρουσίασης",
+ "restart?":"επανεκκίνηση;"
+ },
+ help_el:
+ "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " +
+ "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " +
+ "το μέγεθος της γραμματοσειράς.",
+
+ strings_ja: {
+ "slide":"スライド",
+ "help?":"ヘルプ",
+ "contents?":"目次",
+ "table of contents":"目次を表示",
+ "Table of Contents":"目次",
+ "restart presentation":"最初から再生",
+ "restart?":"最初から"
+ },
+ help_ja:
+ "マウス左クリック ・ スペース ・ 左右キー " +
+ "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更",
+
+ strings_zh: {
+ "slide":"幻灯片",
+ "help?":"帮助?",
+ "contents?":"内容?",
+ "table of contents":"目录",
+ "Table of Contents":"目录",
+ "restart presentation":"重新启动展示",
+ "restart?":"重新启动?"
+ },
+ help_zh:
+ "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " +
+ "用 S, B 改变字体大小.",
+
+ strings_ru: {
+ "slide":"слайд",
+ "help?":"помощь?",
+ "contents?":"содержание?",
+ "table of contents":"оглавление",
+ "Table of Contents":"Оглавление",
+ "restart presentation":"перезапустить презентацию",
+ "restart?":"перезапуск?"
+ },
+ help_ru:
+ "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" +
+ "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.",
+
+ strings_sv: {
+ "slide":"sida",
+ "help?":"hjälp",
+ "contents?":"innehåll",
+ "table of contents":"innehållsförteckning",
+ "Table of Contents":"Innehållsförteckning",
+ "restart presentation":"visa presentationen från början",
+ "restart?":"börja om"
+ },
+ help_sv:
+ "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " +
+ "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " +
+ "Använd tangenterna S och B för att ändra textens storlek.",
+
+// each such language array is declared in the localize array
+// which is set on string prototype and used as in "foo".localize();
+ localize: {
+ "es":this.strings_es,
+ "ca":this.strings_ca,
+ "cs":this.strings_cs,
+ "nl":this.strings_nl,
+ "de":this.strings_de,
+ "pl":this.strings_pl,
+ "fr":this.strings_fr,
+ "hu":this.strings_hu,
+ "it":this.strings_it,
+ "el":this.strings_el,
+ "jp":this.strings_ja,
+ "zh":this.strings_zh,
+ "ru":this.strings_ru,
+ "sv":this.strings_sv
+ },
+
+ init: function () {
+ var i18n = w3c_slidy_i18n;
+ var help_text = w3c_slidy.help_text;
+ i18n.strings_es[help_text] = i18n.help_es;
+ i18n.strings_ca[help_text] = i18n.help_ca;
+ i18n.strings_cs[help_text] = i18n.help_cs;
+ i18n.strings_nl[help_text] = i18n.help_nl;
+ i18n.strings_de[help_text] = i18n.help_de;
+ i18n.strings_pl[help_text] = i18n.help_pl;
+ i18n.strings_fr[help_text] = i18n.help_fr;
+ i18n.strings_hu[help_text] = i18n.help_hu;
+ i18n.strings_it[help_text] = i18n.help_it;
+ i18n.strings_el[help_text] = i18n.help_el;
+ i18n.strings_ja[help_text] = i18n.help_ja;
+ i18n.strings_zh[help_text] = i18n.help_zh;
+ i18n.strings_ru[help_text] = i18n.help_ru;
+ i18n.strings_sv[help_text] = i18n.help_sv;
+
+ w3c_slidy.lang = document.body.parentNode.getAttribute("lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = "en";
+
+ // add localize method to all strings
+ // for use as in "contents".localize()
+ String.prototype.localize = function() {
+ if (this == "")
+ return this;
+
+ // try full language code, e.g. en-US
+ var s, lookup = w3c_slidy_i18n.localize[w3c_slidy.lang];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+
+ // strip country code suffix, e.g.
+ // try en if undefined for en-US
+ var lg = w3c_slidy.lang.split("-");
+
+ if (lg.length > 1)
+ {
+ lookup = w3c_slidy_i18n.localize[lg[0]];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+ }
+
+ // otherwise string as is
+ return this;
+ };
+ }
+};
+
+// hack for back button behavior
+if (w3c_slidy.ie6 || w3c_slidy.ie7)
+{
+ document.write("<iframe id='historyFrame' " +
+ "src='javascript:\"<html"+"></"+"html>\"' " +
+ "height='1' width='1' " +
+ "style='position:absolute;left:-800px'></iframe>");
+}
+
+// attach event listeners for initialization
+w3c_slidy.set_up();
+
+// hide the slides as soon as body element is available
+// to reduce annoying screen mess before the onload event
+setTimeout(w3c_slidy.hide_slides, 50);
+
+/*]]>*/
+</script>
+</head>
+<body class="article" style="max-width:45em">
+<div id="header" class="slide">
+<h1>Osmocom BTS Hardware Support</h1>
+<span id="author">Harald Welte <hwelte@sysmocom.de></span><br />
+</div>
+<div class="sect1 slide">
+<h1 id="_overview">Overview</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock graphviz">
+<div class="content">
+<img src="bts_hardware__1.png" alt="bts_hardware__1.png" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_clasic_e1_t1_based_bts">Clasic E1/T1 based BTS</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Supported Vendors/Dialects</p></div>
+<ul class="">
+<li>
+<span>
+Siemens (only BS-11 tested)
+</span>
+</li>
+<li>
+<span>
+Ericsson RBS2xxx (RBS2307, 2308, 2111 tested)
+</span>
+</li>
+<li>
+<span>
+Nokia InSite, MetroSite
+</span>
+</li>
+</ul>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="50%" />
+<col width="50%" />
+<thead>
+<tr>
+<th align="left" valign="top">Pro</th>
+<th align="left" valign="top">Con</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">available inexpensively from decomissioned sites</p></td>
+<td align="left" valign="top"><p class="table">appears a bit antiquated</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">up to 12 TRX</p></td>
+<td align="left" valign="top"><p class="table">not many people familiar with E1/T1 anymore</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">high RF output power</p></td>
+<td align="left" valign="top"><p class="table">no convenient testing/debugging of E1/T1 issues</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">rugged mechanical build, high MTTF</p></td>
+<td align="left" valign="top"><p class="table">high power consumption</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table"></p></td>
+<td align="left" valign="top"><p class="table">older models no EGPRS, no AMR</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_classic_e1_t1_based_bts">Classic E1/T1 based BTS</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock">
+<div class="content">
+<img src="images/har2009-bs11_at_tree.jpg" alt="images/har2009-bs11_at_tree.jpg" width="90%" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_clasic_e1_t1_based_bts_2">Clasic E1/T1 based BTS</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock gimmick_right">
+<div class="content">
+<img src="images/har2009-bs11_antennas2.small.jpg" alt="images/har2009-bs11_antennas2.small.jpg" width="50%" />
+</div>
+</div>
+<ul class="">
+<li>
+<span>
+This is how it all started
+</span>
+</li>
+<li>
+<span>
+E1 based BTS (Siemens BS-11)
+</span>
+</li>
+<li>
+<span>
+HAR 2009 - Dutch Hacker Camp
+</span>
+</li>
+<li>
+<span>
+Antennas mounted with duct tape to tree
+</span>
+</li>
+<li>
+<span>
+E1 back-haul over CAT5 to OpenBSC running in tent
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_ericsson_rbs_2308">Ericsson RBS 2308</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock gimmick_right">
+<div class="content">
+<img src="images/rbs2308.jpg" alt="images/rbs2308.jpg" width="60%" />
+</div>
+</div>
+<ul class="">
+<li>
+<span>
+Many RBS2000 models
+</span>
+</li>
+<li>
+<span>
+All very similar on protocol
+</span>
+</li>
+<li>
+<span>
+Not all models tested
+</span>
+</li>
+<li>
+<span>
+Good results with RBS2308 + RBS2111
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_ip_access_nanobts">ip.access nanoBTS</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock gimmick_right">
+<div class="content">
+<img src="images/nanoBTS_small.png" alt="images/nanoBTS_small.png" width="40%" />
+</div>
+</div>
+<ul class="">
+<li>
+<span>
+PoE-enabled single-TRX 200mW indoor BTS
+</span>
+</li>
+<li>
+<span>
+GPRS/GSM only models and EGPRS-enabled models
+</span>
+</li>
+<li>
+<span>
+available in band-specific versions for all four bands
+</span>
+</li>
+<li>
+<span>
+proprietary BTS and PCU inside
+</span>
+<ul class="">
+<li>
+<span>
+lots of PCU crashes reported by users :(
+</span>
+</li>
+<li>
+<span>
+no way for us to fix it
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+No fully dynamic channels (TCH/F + TCH/H + PDCH)
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_sysmobts">sysmoBTS</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock gimmick_right">
+<div class="content">
+<img src="images/symoBTS_v2D_front_1024.jpg" alt="images/symoBTS_v2D_front_1024.jpg" width="35%" />
+</div>
+</div>
+<ul class="">
+<li>
+<span>
+sysmocom builds family of GSM BTS based on OsmoBTS + OsmoPCU
+</span>
+</li>
+<li>
+<span>
+revenue from this sales used to cross-subsidize OsmoBTS development
+</span>
+</li>
+<li>
+<span>
+<strong>osmo-bts-sysmo</strong> uses shared-memory /dev to talk to PHY
+</span>
+</li>
+<li>
+<span>
+<strong>osmo-pcu</strong> uses shared-memory /dev to talk to PHY
+</span>
+</li>
+</ul>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="28%" />
+<col width="14%" />
+<col width="14%" />
+<col width="14%" />
+<col width="14%" />
+<col width="14%" />
+<thead>
+<tr>
+<th align="left" valign="top">Model </th>
+<th align="left" valign="top"> RF Pwr </th>
+<th align="left" valign="top">TRX</th>
+<th align="left" valign="top">Outdoor</th>
+<th align="left" valign="top">PoE </th>
+<th align="left" valign="top"> Quad-Band</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">sysmoBTS 1002</p></td>
+<td align="left" valign="top"><p class="table">0.2 W</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">sysmoBTS 1002 OD</p></td>
+<td align="left" valign="top"><p class="table">0.2 W</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">sysmoBTS 1020</p></td>
+<td align="left" valign="top"><p class="table">2.0 W</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">sysmoBTS 1100</p></td>
+<td align="left" valign="top"><p class="table">10.0 W</p></td>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">sysmoBTS 2050</p></td>
+<td align="left" valign="top"><p class="table">2x 5 W</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">sysmoBTS 2100</p></td>
+<td align="left" valign="top"><p class="table">2x10 W</p></td>
+<td align="left" valign="top"><p class="table">2</p></td>
+<td align="left" valign="top"><p class="table">Yes</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+<td align="left" valign="top"><p class="table">No</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_nuran_litecell_1_5">Nuran LiteCell 1.5</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock gimmick_right">
+<div class="content">
+<img src="images/litecell15.jpg" alt="images/litecell15.jpg" width="40%" />
+</div>
+</div>
+<ul class="">
+<li>
+<span>
+10W 2-TRX Outdoor BTS
+</span>
+</li>
+<li>
+<span>
+<strong>osmo-bts-litecell15</strong> uses shared-memory /dev to talk to PHY
+</span>
+</li>
+<li>
+<span>
+<strong>osmo-pcu</strong> uses shared-memory /dev to talk to PHY
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_octasic_octbts_with_octphy_2g">Octasic OCTBTS with OCTPHY-2G</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock gimmick_right">
+<div class="content">
+<img src="images/octbts_3600_photo__large.png" alt="images/octbts_3600_photo__large.png" width="40%" />
+</div>
+</div>
+<ul class="">
+<li>
+<span>
+not a ready-to-deploy BTS product, more a BTS development board
+</span>
+<ul class="">
+<li>
+<span>
+no enclosure, no PA, no filters
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+proprietary PHY runs in Octasic DSP
+</span>
+<ul class="">
+<li>
+<span>
+raw Ethernet frames towards <strong>osmo-bts-octphy</strong>
+</span>
+</li>
+<li>
+<span>
+unix domain pcu-socket to <strong>osmo-pcu</strong>
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+series of different board models (3000, 3500, 3600) with different
+ number of DSPs, radio interfaces, ARM/x86 processor core
+</span>
+</li>
+<li>
+<span>
+two TRX per DSP possible
+</span>
+</li>
+<li>
+<span>
+not all voice codecs supported
+</span>
+</li>
+<li>
+<span>
+EGRPS integration with OsmoPCU not working yet
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_eof">EOF</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>End of File</p></div>
+</div>
+</div>
+</body>
+</html>
diff --git a/2017/open_source_mobilfunk-clt2017/running-foss-gsm.adoc b/2017/open_source_mobilfunk-clt2017/running-foss-gsm.adoc index 45ce701..47db6ae 100644 --- a/2017/open_source_mobilfunk-clt2017/running-foss-gsm.adoc +++ b/2017/open_source_mobilfunk-clt2017/running-foss-gsm.adoc @@ -698,4 +698,4 @@ LTE cells, similar to 3.5G strategy * the entire Osmocom team for what they have achieved ** notably Dieter Spaar, Holger Freyther, Andreas Eversberg, Sylvain Munaut * last but not least: CEPT for making the GSM specs English -** (who'd want to read French specs anyway?) +** (who'd want to read French specs here?) diff --git a/2017/path_loss_link_budget-osmocon2017/path_loss_link_budget.html b/2017/path_loss_link_budget-osmocon2017/path_loss_link_budget.html new file mode 100644 index 0000000..bce64b7 --- /dev/null +++ b/2017/path_loss_link_budget-osmocon2017/path_loss_link_budget.html @@ -0,0 +1,5039 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Path Loss and Link Budget</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="copyright" content="Copyright © 2017 by Harald Welte (License: CC-BY-SA)" />
+<meta name="generator" content="AsciiDoc 8.6.9" />
+<style type="text/css">
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
+}
+
+body {
+ margin: 1em 5% 1em 5%;
+}
+
+a {
+ color: blue;
+ text-decoration: underline;
+}
+a:visited {
+ color: fuchsia;
+}
+
+em {
+ font-style: italic;
+ color: navy;
+}
+
+strong {
+ font-weight: bold;
+ color: #083194;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #527bbd;
+ margin-top: 1.2em;
+ margin-bottom: 0.5em;
+ line-height: 1.3;
+}
+
+h1, h2, h3 {
+ border-bottom: 2px solid silver;
+}
+h2 {
+ padding-top: 0.5em;
+}
+h3 {
+ float: left;
+}
+h3 + * {
+ clear: left;
+}
+h5 {
+ font-size: 1.0em;
+}
+
+div.sectionbody {
+ margin-left: 0;
+}
+
+hr {
+ border: 1px solid silver;
+}
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+ul, ol, li > p {
+ margin-top: 0;
+}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
+
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
+ padding: 0;
+ margin: 0;
+}
+pre {
+ white-space: pre-wrap;
+}
+
+#author {
+ color: #527bbd;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+#email {
+}
+#revnumber, #revdate, #revremark {
+}
+
+#footer {
+ font-size: small;
+ border-top: 2px solid silver;
+ padding-top: 0.5em;
+ margin-top: 4.0em;
+}
+#footer-text {
+ float: left;
+ padding-bottom: 0.5em;
+}
+#footer-badges {
+ float: right;
+ padding-bottom: 0.5em;
+}
+
+#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.admonitionblock {
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
+}
+
+div.content { /* Block element content. */
+ padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+ color: #527bbd;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 1.0em;
+ margin-bottom: 0.5em;
+}
+div.title + * {
+ margin-top: 0;
+}
+
+td div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content + div.title {
+ margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+ background: #ffffee;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
+ padding: 0.5em;
+}
+
+div.listingblock > div.content {
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
+ padding: 0.5em;
+}
+
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
+ margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
+}
+
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
+div.verseblock + div.attribution {
+ text-align: left;
+}
+
+div.admonitionblock .icon {
+ vertical-align: top;
+ font-size: 1.1em;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #527bbd;
+ padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+ padding-left: 0.5em;
+ border-left: 3px solid #dddddd;
+}
+
+div.exampleblock > div.content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+div.imageblock div.content { padding-left: 0; }
+span.image img { border-style: none; vertical-align: text-bottom; }
+a.image:visited { color: white; }
+
+dl {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+dt {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ font-style: normal;
+ color: navy;
+}
+dd > *:first-child {
+ margin-top: 0.1em;
+}
+
+ul, ol {
+ list-style-position: outside;
+}
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
+
+tfoot {
+ font-weight: bold;
+}
+td > div.verse {
+ white-space: pre;
+}
+
+div.hdlist {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+div.hdlist tr {
+ padding-bottom: 15px;
+}
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
+ vertical-align: top;
+ font-style: normal;
+ padding-right: 0.8em;
+ color: navy;
+}
+td.hdlist2 {
+ vertical-align: top;
+}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
+
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
+@media print {
+ #footer-badges { display: none; }
+}
+
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
+ color: #527bbd;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 1.0em;
+ margin-bottom: 0.1em;
+}
+
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.toclevel2 {
+ margin-left: 2em;
+ font-size: 0.9em;
+}
+div.toclevel3 {
+ margin-left: 4em;
+ font-size: 0.9em;
+}
+div.toclevel4 {
+ margin-left: 6em;
+ font-size: 0.9em;
+}
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
+
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+thead, p.tableblock.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
+}
+
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
+}
+
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
+ text-align: right;
+}
+
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
+}
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
+}
+
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
+}
+
+@media print {
+ body.manpage div#toc { display: none; }
+}
+/* slidy.css
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+/*
+ SJR: 2010-09-29: Modified for AsciiDoc slidy backend.
+ Mostly just commented out stuff that is handled by AsciiDoc's CSS files.
+*/
+
+body
+{
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ width: 100%;
+ height: 100%;
+ color: black;
+ background-color: white;
+/*
+ font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
+*/
+ font-size: 14pt;
+}
+
+div.toolbar {
+ position: fixed; z-index: 200;
+ top: auto; bottom: 0; left: 0; right: 0;
+ height: 1.2em; text-align: right;
+ padding-left: 1em;
+ padding-right: 1em;
+ font-size: 60%;
+ color: red;
+ background-color: rgb(240,240,240);
+ border-top: solid 1px rgb(180,180,180);
+}
+
+div.toolbar span.copyright {
+ color: black;
+ margin-left: 0.5em;
+}
+
+div.initial_prompt {
+ position: absolute;
+ z-index: 1000;
+ bottom: 1.2em;
+ width: 90%;
+ background-color: rgb(200,200,200);
+ opacity: 0.35;
+ background-color: rgb(200,200,200, 0.35);
+ cursor: pointer;
+}
+
+div.initial_prompt p.help {
+ text-align: center;
+}
+
+div.initial_prompt p.close {
+ text-align: right;
+ font-style: italic;
+}
+
+div.slidy_toc {
+ position: absolute;
+ z-index: 300;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ overflow: auto;
+ top: auto;
+ right: auto;
+ left: 4em;
+ bottom: 4em;
+ padding: 1em;
+ background: rgb(240,240,240);
+ border-style: solid;
+ border-width: 2px;
+ font-size: 60%;
+}
+
+div.slidy_toc .toc_heading {
+ text-align: center;
+ width: 100%;
+ margin: 0;
+ margin-bottom: 1em;
+ border-bottom-style: solid;
+ border-bottom-color: rgb(180,180,180);
+ border-bottom-width: 1px;
+}
+
+div.slide {
+ z-index: 20;
+ margin: 0 0 0 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ padding-left: 20px;
+ padding-right: 20px;
+ border-width: 0;
+ clear: both;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ line-height: 120%;
+ background-color: transparent;
+}
+
+div.background {
+ display: none;
+}
+
+div.handout {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+div.slide.titlepage {
+ text-align: center;
+}
+
+div.slide.titlepage.h1 {
+ padding-top: 10%;
+}
+
+div.slide h1 {
+ padding-left: 0;
+ padding-right: 20pt;
+ padding-top: 4pt;
+ padding-bottom: 4pt;
+ margin-top: 0;
+ margin-left: 0;
+ margin-right: 60pt;
+ margin-bottom: 0.5em;
+ display: block;
+ font-size: 160%;
+ line-height: 1.2em;
+ background: transparent;
+}
+
+div.toc {
+ position: absolute;
+ top: auto;
+ bottom: 4em;
+ left: 4em;
+ right: auto;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ border: solid thin black;
+ padding: 1em;
+ background: rgb(240,240,240);
+ color: black;
+ z-index: 300;
+ overflow: auto;
+ display: block;
+ visibility: visible;
+}
+
+div.toc-heading {
+ width: 100%;
+ border-bottom: solid 1px rgb(180,180,180);
+ margin-bottom: 1em;
+ text-align: center;
+}
+
+/*
+pre {
+ font-size: 80%;
+ font-weight: bold;
+ line-height: 120%;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ padding-left: 1em;
+ padding-right: 1em;
+ border-style: solid;
+ border-left-width: 1em;
+ border-top-width: thin;
+ border-right-width: thin;
+ border-bottom-width: thin;
+ border-color: #95ABD0;
+ color: #00428C;
+ background-color: #E4E5E7;
+}
+*/
+
+/*
+li pre { margin-left: 0; }
+
+blockquote { font-style: italic }
+
+img { background-color: transparent }
+
+p.copyright { font-size: smaller }
+*/
+
+.center { text-align: center }
+.footnote { font-size: smaller; margin-left: 2em; }
+
+/*
+a img { border-width: 0; border-style: none }
+*/
+
+a:visited { color: navy }
+a:link { color: navy }
+a:hover { color: red; text-decoration: underline }
+a:active { color: red; text-decoration: underline }
+
+a {text-decoration: none}
+.navbar a:link {color: white}
+.navbar a:visited {color: yellow}
+.navbar a:active {color: red}
+.navbar a:hover {color: red}
+
+/*
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+li { margin-left: 0.5em; margin-top: 0.5em; }
+li li { font-size: 85%; font-style: italic }
+li li li { font-size: 85%; font-style: normal }
+*/
+
+div dt
+{
+ margin-left: 0;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ font-weight: bold;
+}
+div dd
+{
+ margin-left: 2em;
+ margin-bottom: 0.5em;
+}
+
+
+/*
+p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
+ margin-left: 1em;
+ margin-right: 1em;
+}
+*/
+
+p.subhead { font-weight: bold; margin-top: 2em; }
+
+.smaller { font-size: smaller }
+.bigger { font-size: 130% }
+
+/*
+td,th { padding: 0.2em }
+*/
+
+ul {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ol {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+
+/*
+ul li {
+ list-style: square;
+ margin: 0.1em 0em 0.6em 0;
+ padding: 0 0 0 0;
+ line-height: 140%;
+}
+
+ol li {
+ margin: 0.1em 0em 0.6em 1.5em;
+ padding: 0 0 0 0px;
+ line-height: 140%;
+ list-style-type: decimal;
+}
+
+li ul li {
+ font-size: 85%;
+ font-style: italic;
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li ul li {
+ font-size: 85%;
+ font-style: normal;
+ list-style-type: circle;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li li ul li {
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+
+li ol li {
+ list-style-type: decimal;
+}
+
+
+li li ol li {
+ list-style-type: decimal;
+}
+*/
+
+/*
+ setting class="outline" on ol or ul makes it behave as an
+ ouline list where blocklevel content in li elements is
+ hidden by default and can be expanded or collapsed with
+ mouse click. Set class="expand" on li to override default
+*/
+
+ol.outline li:hover { cursor: pointer }
+ol.outline li.nofold:hover { cursor: default }
+
+ul.outline li:hover { cursor: pointer }
+ul.outline li.nofold:hover { cursor: default }
+
+ol.outline { list-style:decimal; }
+ol.outline ol { list-style-type:lower-alpha }
+
+ol.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+ul.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+/* for slides with class "title" in table of contents */
+a.titleslide { font-weight: bold; font-style: italic }
+
+/*
+ hide images for work around for save as bug
+ where browsers fail to save images used by CSS
+*/
+img.hidden { display: none; visibility: hidden }
+div.initial_prompt { display: none; visibility: hidden }
+
+ div.slide {
+ visibility: visible;
+ position: inherit;
+ }
+ div.handout {
+ border-top-style: solid;
+ border-top-width: thin;
+ border-top-color: black;
+ }
+
+@media screen {
+ .hidden { display: none; visibility: visible }
+
+ div.slide.hidden { display: block; visibility: visible }
+ div.handout.hidden { display: block; visibility: visible }
+ div.background { display: none; visibility: hidden }
+ body.single_slide div.initial_prompt { display: block; visibility: visible }
+ body.single_slide div.background { display: block; visibility: visible }
+ body.single_slide div.background.hidden { display: none; visibility: hidden }
+ body.single_slide .invisible { visibility: hidden }
+ body.single_slide .hidden { display: none; visibility: hidden }
+ body.single_slide div.slide { position: absolute }
+ body.single_slide div.handout { display: none; visibility: hidden }
+}
+
+@media print {
+ .hidden { display: block; visibility: visible }
+
+/*
+ div.slide pre { font-size: 60%; padding-left: 0.5em; }
+*/
+ div.toolbar { display: none; visibility: hidden; }
+ div.slidy_toc { display: none; visibility: hidden; }
+ div.background { display: none; visibility: hidden; }
+ div.slide { page-break-before: always }
+ /* :first-child isn't reliable for print media */
+ div.slide.first-slide { page-break-before: avoid }
+}
+
+
+/* SJR: AsciiDoc slidy backend tweaks */
+
+ol, ul {
+ margin: 0.8em 1.5em 0.8em 1.8em;
+}
+li > ul, li > ol {
+ margin-top: 0.5em;
+}
+
+.outline > li.folded,
+.outline > li.unfolded {
+ color: #527bbd;
+}
+ul > li{ color: #aaa; }
+ul > li > *, ol > li > * { color: black; }
+
+li {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+/* slidy.js
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+// the slidy object implementation
+var w3c_slidy = {
+ // classify which kind of browser we're running under
+ ns_pos: (typeof window.pageYOffset!='undefined'),
+ khtml: ((navigator.userAgent).indexOf("KHTML") >= 0 ? true : false),
+ opera: ((navigator.userAgent).indexOf("Opera") >= 0 ? true : false),
+ ipad: ((navigator.userAgent).indexOf("iPad") >= 0 ? true : false),
+ iphone: ((navigator.userAgent).indexOf("iPhone") >= 0 ? true : false),
+ ie: (typeof document.all != "undefined" && !this.opera),
+ ie6: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 6") != -1),
+ ie7: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 7") != -1),
+ ie8: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 8") != -1),
+ ie9: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 9") != -1),
+ keyboardless: (this.ipad || this.iphone),
+
+ // are we running as XHTML? (doesn't work on Opera)
+ is_xhtml: /xml/.test(document.contentType),
+
+ slide_number: 0, // integer slide count: 0, 1, 2, ...
+ slide_number_element: null, // element containing slide number
+ slides: [], // set to array of slide div's
+ notes: [], // set to array of handout div's
+ backgrounds: [], // set to array of background div's
+ toolbar: null, // element containing toolbar
+ title: null, // document title
+ last_shown: null, // last incrementally shown item
+ eos: null, // span element for end of slide indicator
+ toc: null, // table of contents
+ outline: null, // outline element with the focus
+ selected_text_len: 0, // length of drag selection on document
+ view_all: 0, // 1 to view all slides + handouts
+ want_toolbar: true, // user preference to show/hide toolbar
+ mouse_click_enabled: true, // enables left click for next slide
+ scroll_hack: 0, // IE work around for position: fixed
+ disable_slide_click: false, // used by clicked anchors
+
+ lang: "en", // updated to language specified by html file
+
+ help_anchor: null, // used for keyboard focus hack in showToolbar()
+ help_page: "http://www.w3.org/Talks/Tools/Slidy2/help/help.html",
+ help_text: "Navigate with mouse click, space bar, Cursor Left/Right, " +
+ "or Pg Up and Pg Dn. Use S and B to change font size.",
+
+ size_index: 0,
+ size_adjustment: 0,
+ sizes: new Array("10pt", "12pt", "14pt", "16pt", "18pt", "20pt",
+ "22pt", "24pt", "26pt", "28pt", "30pt", "32pt"),
+
+ // needed for efficient resizing
+ last_width: 0,
+ last_height: 0,
+
+
+ // Needed for cross browser support for relative width/height on
+ // object elements. The work around is to save width/height attributes
+ // and then to recompute absolute width/height dimensions on resizing
+ objects: [],
+
+ // attach initialiation event handlers
+ set_up: function () {
+ var init = function() { w3c_slidy.init(); };
+ if (typeof window.addEventListener != "undefined")
+ window.addEventListener("load", init, false);
+ else
+ window.attachEvent("onload", init);
+ },
+
+ hide_slides: function () {
+ if (document.body && !w3c_slidy.initialized)
+ document.body.style.visibility = "hidden";
+ else
+ setTimeout(w3c_slidy.hide_slides, 50);
+ },
+
+ // hack to persuade IE to compute correct document height
+ // as needed for simulating fixed positioning of toolbar
+ ie_hack: function () {
+ window.resizeBy(0,-1);
+ window.resizeBy(0, 1);
+ },
+
+ init: function () {
+ //alert("slidy starting test 10");
+ document.body.style.visibility = "visible";
+ w3c_slidy_i18n.init();
+ this.add_toolbar();
+ this.wrap_implicit_slides();
+ this.collect_slides();
+ this.collect_notes();
+ this.collect_backgrounds();
+ this.objects = document.body.getElementsByTagName("object");
+ this.patch_anchors();
+ this.slide_number = this.find_slide_number(location.href);
+ window.offscreenbuffering = true;
+ this.size_adjustment = this.find_size_adjust();
+ this.time_left = this.find_duration();
+ this.hide_image_toolbar(); // suppress IE image toolbar popup
+ this.init_outliner(); // activate fold/unfold support
+ this.title = document.title;
+
+ // work around for opera bug
+ this.is_xhtml = (document.body.tagName == "BODY" ? false : true);
+
+ if (this.slides.length > 0)
+ {
+ var slide = this.slides[this.slide_number];
+
+ if (this.slide_number > 0)
+ {
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ this.set_eos_status(true);
+ }
+ else
+ {
+ this.last_shown = null;
+ this.set_visibility_all_incremental("hidden");
+ this.set_eos_status(!this.next_incremental_item(this.last_shown));
+ }
+
+ this.set_location();
+ this.add_class(this.slides[0], "first-slide");
+ w3c_slidy.show_slide(slide);
+ }
+
+ this.toc = this.table_of_contents();
+
+ this.add_initial_prompt();
+
+ // bind event handlers without interfering with custom page scripts
+ // Tap events behave too weirdly to support clicks reliably on
+ // iPhone and iPad, so exclude these from click handler
+
+ if (!this.keyboardless)
+ this.add_listener(document.body, "click", this.mouse_button_click);
+
+ this.add_listener(document, "keydown", this.key_down);
+ this.add_listener(document, "keypress", this.key_press);
+ this.add_listener(window, "resize", this.resized);
+ this.add_listener(window, "scroll", this.scrolled);
+ this.add_listener(window, "unload", this.unloaded);
+
+ if (!document.body.onclick)
+ document.body.onclick = function () { };
+
+ this.single_slide_view();
+
+ //this.set_location();
+
+ this.resized();
+
+ if (this.ie7)
+ setTimeout(w3c_slidy.ie_hack, 100);
+
+ this.show_toolbar();
+
+ // for back button detection
+ setInterval(function () { w3c_slidy.check_location(); }, 200);
+ w3c_slidy.initialized = true;
+ },
+
+ // create div element with links to each slide
+ table_of_contents: function () {
+ var toc = this.create_element("div");
+ this.add_class(toc, "slidy_toc hidden");
+ //toc.setAttribute("tabindex", "0");
+
+ var heading = this.create_element("div");
+ this.add_class(heading, "toc-heading");
+ heading.innerHTML = "Table of Contents".localize();
+
+ toc.appendChild(heading);
+ var previous = null;
+
+ for (var i = 0; i < this.slides.length; ++i)
+ {
+ var title = this.has_class(this.slides[i], "title");
+ var num = document.createTextNode((i + 1) + ". ");
+
+ toc.appendChild(num);
+
+ var a = this.create_element("a");
+ a.setAttribute("href", "#(" + (i+1) + ")");
+
+ if (title)
+ this.add_class(a, "titleslide");
+
+ var name = document.createTextNode(this.slide_name(i));
+ a.appendChild(name);
+ a.onclick = w3c_slidy.toc_click;
+ a.onkeydown = w3c_slidy.toc_keydown;
+ a.previous = previous;
+
+ if (previous)
+ previous.next = a;
+
+ toc.appendChild(a);
+
+ if (i == 0)
+ toc.first = a;
+
+ if (i < this.slides.length - 1)
+ {
+ var br = this.create_element("br");
+ toc.appendChild(br);
+ }
+
+ previous = a;
+ }
+
+ toc.focus = function () {
+ if (this.first)
+ this.first.focus();
+ }
+
+ toc.onmouseup = w3c_slidy.mouse_button_up;
+
+ toc.onclick = function (e) {
+ e||(e=window.event);
+
+ if (w3c_slidy.selected_text_len <= 0)
+ w3c_slidy.hide_table_of_contents();
+
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ };
+
+ document.body.insertBefore(toc, document.body.firstChild);
+ return toc;
+ },
+
+ is_shown_toc: function () {
+ return !w3c_slidy.has_class(w3c_slidy.toc, "hidden");
+ },
+
+ show_table_of_contents: function () {
+ w3c_slidy.remove_class(w3c_slidy.toc, "hidden");
+ var toc = w3c_slidy.toc;
+ toc.focus();
+
+ if (w3c_slidy.ie7 && w3c_slidy.slide_number == 0)
+ setTimeout(w3c_slidy.ie_hack, 100);
+ },
+
+ hide_table_of_contents: function () {
+ w3c_slidy.add_class(w3c_slidy.toc, "hidden");
+
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ },
+
+ toggle_table_of_contents: function () {
+ if (w3c_slidy.is_shown_toc())
+ w3c_slidy.hide_table_of_contents();
+ else
+ w3c_slidy.show_table_of_contents();
+ },
+
+ // called on clicking toc entry
+ toc_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = w3c_slidy.get_target(e);
+
+ if (target && target.nodeType == 1)
+ {
+ var uri = target.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents(e);
+ if (w3c_slidy.ie7) w3c_slidy.ie_hack();
+ w3c_slidy.stop_propagation(e);
+ return w3c_slidy.cancel(e);
+ },
+
+ // called onkeydown for toc entry
+ toc_keydown: function (event) {
+ var key;
+
+ if (!event)
+ var event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey)
+ return true;
+
+ if (key == 13)
+ {
+ var uri = this.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents();
+
+ if (self.ie7)
+ w3c_slidy.ie_hack();
+
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 40 && this.next)
+ {
+ this.next.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 38 && this.previous)
+ {
+ this.previous.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ return true;
+ },
+
+
+ // ### OBSOLETE ###
+ before_print: function () {
+ this.show_all_slides();
+ this.hide_toolbar();
+ alert("before print");
+ },
+
+ // ### OBSOLETE ###
+ after_print: function () {
+ if (!this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ }
+ alert("after print");
+ },
+
+ // ### OBSOLETE ###
+ print_slides: function () {
+ this.before_print();
+ window.print();
+ this.after_print();
+ },
+
+ // ### OBSOLETE ?? ###
+ toggle_view: function () {
+ if (this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ this.view_all = 0;
+ }
+ else
+ {
+ this.show_all_slides();
+ this.hide_toolbar();
+ this.view_all = 1;
+ }
+ },
+
+ // prepare for printing ### OBSOLETE ###
+ show_all_slides: function () {
+ this.remove_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ },
+
+ // restore after printing ### OBSOLETE ###
+ single_slide_view: function () {
+ this.add_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ },
+
+ // suppress IE's image toolbar pop up
+ hide_image_toolbar: function () {
+ if (!this.ns_pos)
+ {
+ var images = document.getElementsByTagName("IMG");
+
+ for (var i = 0; i < images.length; ++i)
+ images[i].setAttribute("galleryimg", "no");
+ }
+ },
+
+ unloaded: function (e) {
+ //alert("unloaded");
+ },
+
+ // Safari and Konqueror don't yet support getComputedStyle()
+ // and they always reload page when location.href is updated
+ is_KHTML: function () {
+ var agent = navigator.userAgent;
+ return (agent.indexOf("KHTML") >= 0 ? true : false);
+ },
+
+ // find slide name from first h1 element
+ // default to document title + slide number
+ slide_name: function (index) {
+ var name = null;
+ var slide = this.slides[index];
+
+ var heading = this.find_heading(slide);
+
+ if (heading)
+ name = this.extract_text(heading);
+
+ if (!name)
+ name = this.title + "(" + (index + 1) + ")";
+
+ name.replace(/\&/g, "&");
+ name.replace(/\</g, "<");
+ name.replace(/\>/g, ">");
+
+ return name;
+ },
+
+ // find first h1 element in DOM tree
+ find_heading: function (node) {
+ if (!node || node.nodeType != 1)
+ return null;
+
+ if (node.nodeName == "H1" || node.nodeName == "h1")
+ return node;
+
+ var child = node.firstChild;
+
+ while (child)
+ {
+ node = this.find_heading(child);
+
+ if (node)
+ return node;
+
+ child = child.nextSibling;
+ }
+
+ return null;
+ },
+
+ // recursively extract text from DOM tree
+ extract_text: function (node) {
+ if (!node)
+ return "";
+
+ // text nodes
+ if (node.nodeType == 3)
+ return node.nodeValue;
+
+ // elements
+ if (node.nodeType == 1)
+ {
+ node = node.firstChild;
+ var text = "";
+
+ while (node)
+ {
+ text = text + this.extract_text(node);
+ node = node.nextSibling;
+ }
+
+ return text;
+ }
+
+ return "";
+ },
+
+ // find copyright text from meta element
+ find_copyright: function () {
+ var name, content;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "copyright")
+ return content;
+ }
+
+ return null;
+ },
+
+ find_size_adjust: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "font-size-adjustment")
+ return 1 * content;
+ }
+
+ return 1;
+ },
+
+ // <meta name="duration" content="20" /> for 20 minutes
+ find_duration: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "duration")
+ return 60000 * content;
+ }
+
+ return null;
+ },
+
+ replace_by_non_breaking_space: function (str) {
+ for (var i = 0; i < str.length; ++i)
+ str[i] = 160;
+ },
+
+ // ### CHECK ME ### is use of "li" okay for text/html?
+ // for XHTML do we also need to specify namespace?
+ init_outliner: function () {
+ var items = document.getElementsByTagName("li");
+
+ for (var i = 0; i < items.length; ++i)
+ {
+ var target = items[i];
+
+ if (!this.has_class(target.parentNode, "outline"))
+ continue;
+
+ target.onclick = this.outline_click;
+/* ### more work needed for IE6
+ if (!this.ns_pos)
+ {
+ target.onmouseover = this.hover_outline;
+ target.onmouseout = this.unhover_outline;
+ }
+*/
+ if (this.foldable(target))
+ {
+ target.foldable = true;
+ target.onfocus = function () {w3c_slidy.outline = this;};
+ target.onblur = function () {w3c_slidy.outline = null;};
+
+ if (!target.getAttribute("tabindex"))
+ target.setAttribute("tabindex", "0");
+
+ if (this.has_class(target, "expand"))
+ this.unfold(target);
+ else
+ this.fold(target);
+ }
+ else
+ {
+ this.add_class(target, "nofold");
+ target.visible = true;
+ target.foldable = false;
+ }
+ }
+ },
+
+ foldable: function (item) {
+ if (!item || item.nodeType != 1)
+ return false;
+
+ var node = item.firstChild;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node))
+ return true;
+
+ node = node.nextSibling;
+ }
+
+ return false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ fold: function (item) {
+ if (item)
+ {
+ this.remove_class(item, "unfolded");
+ this.add_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.add_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ unfold: function (item) {
+ if (item)
+ {
+ this.add_class(item, "unfolded");
+ this.remove_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.remove_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = true;
+ },
+
+ outline_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var rightclick = false;
+ var target = w3c_slidy.get_target(e);
+
+ while (target && target.visible == undefined)
+ target = target.parentNode;
+
+ if (!target)
+ return true;
+
+ if (e.which)
+ rightclick = (e.which == 3);
+ else if (e.button)
+ rightclick = (e.button == 2);
+
+ if (!rightclick && target.visible != undefined)
+ {
+ if (target.foldable)
+ {
+ if (target.visible)
+ w3c_slidy.fold(target);
+ else
+ w3c_slidy.unfold(target);
+ }
+
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ }
+
+ return false;
+ },
+
+ add_initial_prompt: function () {
+ var prompt = this.create_element("div");
+ prompt.setAttribute("class", "initial_prompt");
+
+ var p1 = this.create_element("p");
+ prompt.appendChild(p1);
+ p1.setAttribute("class", "help");
+
+ if (this.keyboardless)
+ p1.innerHTML = "Tap footer to move to next slide";
+ else
+ p1.innerHTML = "Space or Right Arrow to move to next " +
+ "slide, click help below for more details";
+
+ this.add_listener(prompt, "click", function (e) {
+ document.body.removeChild(prompt);
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ });
+
+ document.body.appendChild(prompt);
+ this.initial_prompt = prompt;
+ setTimeout(function() {document.body.removeChild(prompt);}, 5000);
+ },
+
+ add_toolbar: function () {
+ var counter, page;
+
+ this.toolbar = this.create_element("div");
+ this.toolbar.setAttribute("class", "toolbar");
+
+ // a reasonably behaved browser
+ if (this.ns_pos || !this.ie6)
+ {
+ var right = this.create_element("div");
+ right.setAttribute("style", "float: right; text-align: right");
+
+ counter = this.create_element("span")
+ counter.innerHTML = "slide".localize() + " n/m";
+ right.appendChild(counter);
+ this.toolbar.appendChild(right);
+
+ var left = this.create_element("div");
+ left.setAttribute("style", "text-align: left");
+
+ // global end of slide indicator
+ this.eos = this.create_element("span");
+ this.eos.innerHTML = "* ";
+ left.appendChild(this.eos);
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ left.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ left.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:w3c_slidy.toggle_table_of_contents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ left.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ left.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.className = "copyright";
+ span.innerHTML = copyright;
+ left.appendChild(span);
+ }
+
+ this.toolbar.setAttribute("tabindex", "0");
+ this.toolbar.appendChild(left);
+ }
+ else // IE6 so need to work around its poor CSS support
+ {
+ this.toolbar.style.position = (this.ie7 ? "fixed" : "absolute");
+ this.toolbar.style.zIndex = "200";
+ this.toolbar.style.width = "99.9%";
+ this.toolbar.style.height = "1.2em";
+ this.toolbar.style.top = "auto";
+ this.toolbar.style.bottom = "0";
+ this.toolbar.style.left = "0";
+ this.toolbar.style.right = "0";
+ this.toolbar.style.textAlign = "left";
+ this.toolbar.style.fontSize = "60%";
+ this.toolbar.style.color = "red";
+ this.toolbar.borderWidth = 0;
+ this.toolbar.className = "toolbar";
+ this.toolbar.style.background = "rgb(240,240,240)";
+
+ // would like to have help text left aligned
+ // and page counter right aligned, floating
+ // div's don't work, so instead use nested
+ // absolutely positioned div's.
+
+ var sp = this.create_element("span");
+ sp.innerHTML = " * ";
+ this.toolbar.appendChild(sp);
+ this.eos = sp; // end of slide indicator
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ this.toolbar.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:toggleTableOfContents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ this.toolbar.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.innerHTML = copyright;
+ span.style.color = "black";
+ span.style.marginLeft = "0.5em";
+ this.toolbar.appendChild(span);
+ }
+
+ counter = this.create_element("div")
+ counter.style.position = "absolute";
+ counter.style.width = "auto"; //"20%";
+ counter.style.height = "1.2em";
+ counter.style.top = "auto";
+ counter.style.bottom = 0;
+ counter.style.right = "0";
+ counter.style.textAlign = "right";
+ counter.style.color = "red";
+ counter.style.background = "rgb(240,240,240)";
+
+ counter.innerHTML = "slide".localize() + " n/m";
+ this.toolbar.appendChild(counter);
+ }
+
+ // ensure that click isn't passed through to the page
+ this.toolbar.onclick =
+ function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = e.target;
+
+ if (!target && e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target && target.nodeType == 3)
+ target = target.parentNode;
+
+ w3c_slidy.stop_propagation(e);
+
+ if (target && target.nodeName.toLowerCase() != "a")
+ w3c_slidy.mouse_button_click(e);
+ };
+
+ this.slide_number_element = counter;
+ this.set_eos_status(false);
+ document.body.appendChild(this.toolbar);
+ },
+
+ // wysiwyg editors make it hard to use div elements
+ // e.g. amaya loses the div when you copy and paste
+ // this function wraps div elements around implicit
+ // slides which start with an h1 element and continue
+ // up to the next heading or div element
+ wrap_implicit_slides: function () {
+ var i, heading, node, next, div;
+ var headings = document.getElementsByTagName("h1");
+
+ if (!headings)
+ return;
+
+ for (i = 0; i < headings.length; ++i)
+ {
+ heading = headings[i];
+
+ if (heading.parentNode != document.body)
+ continue;
+
+ node = heading.nextSibling;
+
+ div = document.createElement("div");
+ this.add_class(div, "slide");
+ document.body.replaceChild(div, heading);
+ div.appendChild(heading);
+
+ while (node)
+ {
+ if (node.nodeType == 1 && // an element
+ (node.nodeName == "H1" ||
+ node.nodeName == "h1" ||
+ node.nodeName == "DIV" ||
+ node.nodeName == "div"))
+ break;
+
+ next = node.nextSibling;
+ node = document.body.removeChild(node);
+ div.appendChild(node);
+ node = next;
+ }
+ }
+ },
+
+// return new array of all slides
+ collect_slides: function () {
+ var slides = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "slide"))
+ {
+ // add slide to collection
+ slides[slides.length] = div;
+
+ // hide each slide as it is found
+ this.add_class(div, "hidden");
+
+ // add dummy <br/> at end for scrolling hack
+ var node1 = document.createElement("br");
+ div.appendChild(node1);
+ var node2 = document.createElement("br");
+ div.appendChild(node2);
+ }
+ else if (this.has_class(div, "background"))
+ { // work around for Firefox SVG reload bug
+ // which otherwise replaces 1st SVG graphic with 2nd
+ div.style.display = "block";
+ }
+ }
+
+ this.slides = slides;
+ },
+
+ // return new array of all <div class="handout">
+ collect_notes: function () {
+ var notes = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "handout"))
+ {
+ // add note to collection
+ notes[notes.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.notes = notes;
+ },
+
+ // return new array of all <div class="background">
+ // including named backgrounds e.g. class="background titlepage"
+ collect_backgrounds: function () {
+ var backgrounds = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "background"))
+ {
+ // add background to collection
+ backgrounds[backgrounds.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.backgrounds = backgrounds;
+ },
+
+ // set click handlers on all anchors
+ patch_anchors: function () {
+ var self = w3c_slidy;
+ var handler = function (event) {
+ // compare this.href with location.href
+ // for link to another slide in this doc
+
+ if (self.page_address(this.href) == self.page_address(location.href))
+ {
+ // yes, so find new slide number
+ var newslidenum = self.find_slide_number(this.href);
+
+ if (newslidenum != self.slide_number)
+ {
+ var slide = self.slides[self.slide_number];
+ self.hide_slide(slide);
+ self.slide_number = newslidenum;
+ slide = self.slides[self.slide_number];
+ self.show_slide(slide);
+ self.set_location();
+ }
+ }
+ else if (this.target == null)
+ location.href = this.href;
+
+ this.blur();
+ self.disable_slide_click = true;
+ };
+
+ var anchors = document.body.getElementsByTagName("a");
+
+ for (var i = 0; i < anchors.length; ++i)
+ {
+ if (window.addEventListener)
+ anchors[i].addEventListener("click", handler, false);
+ else
+ anchors[i].attachEvent("onclick", handler);
+ }
+ },
+
+ // ### CHECK ME ### see which functions are invoked via setTimeout
+ // either directly or indirectly for use of w3c_slidy vs this
+ show_slide_number: function () {
+ var timer = w3c_slidy.get_timer();
+ w3c_slidy.slide_number_element.innerHTML = timer + "slide".localize() + " " +
+ (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length;
+ },
+
+ // every 200mS check if the location has been changed as a
+ // result of the user activating the Back button/menu item
+ // doesn't work for Opera < 9.5
+ check_location: function () {
+ var hash = location.hash;
+
+ if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#"))
+ w3c_slidy.goto_slide(0);
+ else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")")
+ {
+ var num = parseInt(location.hash.substr(2));
+
+ if (!isNaN(num))
+ w3c_slidy.goto_slide(num-1);
+ }
+
+ if (w3c_slidy.time_left && w3c_slidy.slide_number > 0)
+ {
+ w3c_slidy.show_slide_number();
+
+ if (w3c_slidy.time_left > 0)
+ w3c_slidy.time_left -= 200;
+ }
+ },
+
+ get_timer: function () {
+ var timer = "";
+ if (w3c_slidy.time_left)
+ {
+ var mins, secs;
+ secs = Math.floor(w3c_slidy.time_left/1000);
+ mins = Math.floor(secs / 60);
+ secs = secs % 60;
+ timer = (mins ? mins+"m" : "") + secs + "s ";
+ }
+
+ return timer;
+ },
+
+ // this doesn't push location onto history stack for IE
+ // for which a hidden iframe hack is needed: load page into
+ // the iframe with script that set's parent's location.hash
+ // but that won't work for standalone use unless we can
+ // create the page dynamically via a javascript: URL
+ set_location: function () {
+ var uri = w3c_slidy.page_address(location.href);
+ var hash = "#(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (w3c_slidy.slide_number >= 0)
+ uri = uri + hash;
+
+ if (w3c_slidy.ie && !w3c_slidy.ie8)
+ w3c_slidy.push_hash(hash);
+
+ if (uri != location.href) // && !khtml
+ location.href = uri;
+
+ if (this.khtml)
+ hash = "(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (!this.ie && location.hash != hash && location.hash != "")
+ location.hash = hash;
+
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide_number();
+ },
+
+ page_address: function (uri) {
+ var i = uri.indexOf("#");
+
+ if (i < 0)
+ i = uri.indexOf("%23");
+
+ // check if anchor is entire page
+
+ if (i < 0)
+ return uri; // yes
+
+ return uri.substr(0, i);
+ },
+
+ // only used for IE6 and IE7
+ on_frame_loaded: function (hash) {
+ location.hash = hash;
+ var uri = w3c_slidy.page_address(location.href);
+ location.href = uri + hash;
+ },
+
+ // history hack with thanks to Bertrand Le Roy
+ push_hash: function (hash) {
+ if (hash == "") hash = "#(1)";
+ window.location.hash = hash;
+
+ var doc = document.getElementById("historyFrame").contentWindow.document;
+ doc.open("javascript:'<html></html>'");
+ // PWL modified this string literal to break the close script tag
+ // which otherwise gets parsed when incorporated
+ doc.write("<html><head><script type=\"text/javascript\">window.parent.w3c_slidy.on_frame_loaded('"+
+ (hash) + "');</" + "script></head><body>hello mum</body></html>");
+ doc.close();
+ },
+
+ // find current slide based upon location
+ // first find target anchor and then look
+ // for associated div element enclosing it
+ // finally map that to slide number
+ find_slide_number: function (uri) {
+ // first get anchor from page location
+
+ var i = uri.indexOf("#");
+
+ // check if anchor is entire page
+ if (i < 0)
+ return 0; // yes
+
+ var anchor = unescape(uri.substr(i+1));
+
+ // now use anchor as XML ID to find target
+ var target = document.getElementById(anchor);
+
+ if (!target)
+ {
+ // does anchor look like "(2)" for slide 2 ??
+ // where first slide is (1)
+ var re = /\((\d)+\)/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // accept [2] for backwards compatibility
+ re = /\[(\d)+\]/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // oh dear unknown anchor
+ return 0;
+ }
+
+ // search for enclosing slide
+
+ while (true)
+ {
+ // browser coerces html elements to uppercase!
+ if (target.nodeName.toLowerCase() == "div" &&
+ this.has_class(target, "slide"))
+ {
+ // found the slide element
+ break;
+ }
+
+ // otherwise try parent element if any
+
+ target = target.parentNode;
+
+ if (!target)
+ {
+ return 0; // no luck!
+ }
+ };
+
+ for (i = 0; i < slides.length; ++i)
+ {
+ if (slides[i] == target)
+ return i; // success
+ }
+
+ // oh dear still no luck
+ return 0;
+ },
+
+ previous_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null)
+ {
+ w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown);
+ w3c_slidy.set_eos_status(false);
+ }
+ else if (w3c_slidy.slide_number > 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_location();
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ next_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide, last = w3c_slidy.last_shown;
+
+ if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1)
+ w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown);
+
+ if ((!incremental || w3c_slidy.last_shown == null) &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number + 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+ else if (!w3c_slidy.last_shown)
+ {
+ if (last && incremental)
+ w3c_slidy.last_shown = last;
+ }
+
+ w3c_slidy.set_location();
+
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ // to first slide with nothing revealed
+ // i.e. state at start of presentation
+ first_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if (w3c_slidy.slide_number != 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = 0;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_eos_status(
+ !w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.set_location();
+ }
+ },
+
+ // goto last slide with everything revealed
+ // i.e. state at end of presentation
+ last_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ w3c_slidy.last_shown = null; //revealNextItem(lastShown);
+
+ if (w3c_slidy.last_shown == null &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.slides.length - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+
+ w3c_slidy.show_slide(slide);
+ }
+ else
+ {
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ }
+
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.set_location();
+ }
+ },
+
+
+ // ### check this and consider add/remove class
+ set_eos_status: function (state) {
+ if (this.eos)
+ this.eos.style.color = (state ? "rgb(240,240,240)" : "red");
+ },
+
+ // first slide is 0
+ goto_slide: function (num) {
+ //alert("going to slide " + (num+1));
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = num;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide(slide);
+ w3c_slidy.show_slide_number();
+ },
+
+
+ show_slide: function (slide) {
+ this.sync_background(slide);
+ window.scrollTo(0,0);
+ this.remove_class(slide, "hidden");
+ },
+
+ hide_slide: function (slide) {
+ this.add_class(slide, "hidden");
+ },
+
+ // show just the backgrounds pertinent to this slide
+ // when slide background-color is transparent
+ // this should now work with rgba color values
+ sync_background: function (slide) {
+ var background;
+ var bgColor;
+
+ if (slide.currentStyle)
+ bgColor = slide.currentStyle["backgroundColor"];
+ else if (document.defaultView)
+ {
+ var styles = document.defaultView.getComputedStyle(slide,null);
+
+ if (styles)
+ bgColor = styles.getPropertyValue("background-color");
+ else // broken implementation probably due Safari or Konqueror
+ {
+ //alert("defective implementation of getComputedStyle()");
+ bgColor = "transparent";
+ }
+ }
+ else
+ bgColor == "transparent";
+
+ if (bgColor == "transparent" ||
+ bgColor.indexOf("rgba") >= 0 ||
+ bgColor.indexOf("opacity") >= 0)
+ {
+ var slideClass = this.get_class_list(slide);
+
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+
+ var bgClass = this.get_class_list(background);
+
+ if (this.matching_background(slideClass, bgClass))
+ this.remove_class(background, "hidden");
+ else
+ this.add_class(background, "hidden");
+ }
+ }
+ else // forcibly hide all backgrounds
+ this.hide_backgrounds();
+ },
+
+ hide_backgrounds: function () {
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+ this.add_class(background, "hidden");
+ }
+ },
+
+ // compare classes for slide and background
+ matching_background: function (slideClass, bgClass) {
+ var i, count, pattern, result;
+
+ // define pattern as regular expression
+ pattern = /\w+/g;
+
+ // check background class names
+ result = bgClass.match(pattern);
+
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (result[i] == "background")
+ continue;
+
+ ++count;
+ }
+
+ if (count == 0) // default match
+ return true;
+
+ // check for matches and place result in array
+ result = slideClass.match(pattern);
+
+ // now check if desired name is present for background
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (this.has_token(bgClass, result[i]))
+ return true;
+ }
+
+ return false;
+ },
+
+ resized: function () {
+ var width = 0;
+
+ if ( typeof( window.innerWidth ) == 'number' )
+ width = window.innerWidth; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientWidth)
+ width = document.documentElement.clientWidth; // IE6
+ else if (document.body && document.body.clientWidth)
+ width = document.body.clientWidth; // IE4
+
+ var height = 0;
+
+ if ( typeof( window.innerHeight ) == 'number' )
+ height = window.innerHeight; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientHeight)
+ height = document.documentElement.clientHeight; // IE6
+ else if (document.body && document.body.clientHeight)
+ height = document.body.clientHeight; // IE4
+
+ if (height && (width/height > 1.05*1024/768))
+ {
+ width = height * 1024.0/768;
+ }
+
+ // IE fires onresize even when only font size is changed!
+ // so we do a check to avoid blocking < and > actions
+ if (width != w3c_slidy.last_width || height != w3c_slidy.last_height)
+ {
+ if (width >= 1100)
+ w3c_slidy.size_index = 5; // 4
+ else if (width >= 1000)
+ w3c_slidy.size_index = 4; // 3
+ else if (width >= 800)
+ w3c_slidy.size_index = 3; // 2
+ else if (width >= 600)
+ w3c_slidy.size_index = 2; // 1
+ else if (width)
+ w3c_slidy.size_index = 0;
+
+ // add in font size adjustment from meta element e.g.
+ // <meta name="font-size-adjustment" content="-2" />
+ // useful when slides have too much content ;-)
+
+ if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment &&
+ w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length)
+ w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment;
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ w3c_slidy.adjust_object_dimensions(width, height);
+
+ if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index])
+ {
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ }
+
+ w3c_slidy.last_width = width;
+ w3c_slidy.last_height = height;
+
+ // force reflow to work around Mozilla bug
+ if (w3c_slidy.ns_pos)
+ {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ }
+
+ // force correct positioning of toolbar
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ scrolled: function () {
+ if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset();
+ // hide toolbar
+ w3c_slidy.toolbar.style.display = "none";
+
+ // make it reappear later
+ if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all)
+ {
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000);
+ w3c_slidy.scrollhack = 1;
+ }
+ }
+ },
+
+ hide_toolbar: function () {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden");
+ window.focus();
+ },
+
+ // used to ensure IE refreshes toolbar in correct position
+ refresh_toolbar: function (interval) {
+ if (!w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hide_toolbar();
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, interval);
+ }
+ },
+
+ // restores toolbar after short delay
+ show_toolbar: function () {
+ if (w3c_slidy.want_toolbar)
+ {
+ w3c_slidy.toolbar.style.display = "block";
+
+ if (!w3c_slidy.ns_pos)
+ {
+ // adjust position to allow for scrolling
+ var xoffset = w3c_slidy.scroll_x_offset();
+ w3c_slidy.toolbar.style.left = xoffset;
+ w3c_slidy.toolbar.style.right = xoffset;
+
+ // determine vertical scroll offset
+ //var yoffset = scrollYOffset();
+
+ // bottom is doc height - window height - scroll offset
+ //var bottom = documentHeight() - lastHeight - yoffset
+
+ //if (yoffset > 0 || documentHeight() > lastHeight)
+ // bottom += 16; // allow for height of scrollbar
+
+ w3c_slidy.toolbar.style.bottom = 0; //bottom;
+ }
+
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden");
+ }
+
+ w3c_slidy.scrollhack = 0;
+
+
+ // set the keyboard focus to the help link on the
+ // toolbar to ensure that document has the focus
+ // IE doesn't always work with window.focus()
+ // and this hack has benefit of Enter for help
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ },
+
+// invoked via F key
+ toggle_toolbar: function () {
+ if (!w3c_slidy.view_all)
+ {
+ if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden"))
+ {
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 1;
+ }
+ else
+ {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 0;
+ }
+ }
+ },
+
+ scroll_x_offset: function () {
+ if (window.pageXOffset)
+ return self.pageXOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollLeft)
+ return document.documentElement.scrollLeft;
+
+ if (document.body)
+ return document.body.scrollLeft;
+
+ return 0;
+ },
+
+ scroll_y_offset: function () {
+ if (window.pageYOffset)
+ return self.pageYOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollTop)
+ return document.documentElement.scrollTop;
+
+ if (document.body)
+ return document.body.scrollTop;
+
+ return 0;
+ },
+
+ // looking for a way to determine height of slide content
+ // the slide itself is set to the height of the window
+ optimize_font_size: function () {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ //var dh = documentHeight(); //getDocHeight(document);
+ var dh = slide.scrollHeight;
+ var wh = getWindowHeight();
+ var u = 100 * dh / wh;
+
+ alert("window utilization = " + u + "% (doc "
+ + dh + " win " + wh + ")");
+ },
+
+ // from document object
+ get_doc_height: function (doc) {
+ if (!doc)
+ doc = document;
+
+ if (doc && doc.body && doc.body.offsetHeight)
+ return doc.body.offsetHeight; // ns/gecko syntax
+
+ if (doc && doc.body && doc.body.scrollHeight)
+ return doc.body.scrollHeight;
+
+ alert("couldn't determine document height");
+ },
+
+ get_window_height: function () {
+ if ( typeof( window.innerHeight ) == 'number' )
+ return window.innerHeight; // Non IE browser
+
+ if (document.documentElement && document.documentElement.clientHeight)
+ return document.documentElement.clientHeight; // IE6
+
+ if (document.body && document.body.clientHeight)
+ return document.body.clientHeight; // IE4
+ },
+
+ document_height: function () {
+ var sh, oh;
+
+ sh = document.body.scrollHeight;
+ oh = document.body.offsetHeight;
+
+ if (sh && oh)
+ {
+ return (sh > oh ? sh : oh);
+ }
+
+ // no idea!
+ return 0;
+ },
+
+ smaller: function () {
+ if (w3c_slidy.size_index > 0)
+ {
+ --w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ bigger: function () {
+ if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1)
+ {
+ ++w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ // with thanks to Ivan Herman for the suggestion
+ adjust_object_dimensions: function (width, height) {
+ for( var i = 0; i < w3c_slidy.objects.length; i++ )
+ {
+ var obj = this.objects[i];
+ var mimeType = obj.getAttribute("type");
+
+ if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash")
+ {
+ if ( !obj.initialWidth )
+ obj.initialWidth = obj.getAttribute("width");
+
+ if ( !obj.initialHeight )
+ obj.initialHeight = obj.getAttribute("height");
+
+ if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" )
+ {
+ var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1));
+ var newW = width * (w/100.0);
+ obj.setAttribute("width",newW);
+ }
+
+ if ( obj.initialHeight &&
+ obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" )
+ {
+ var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1));
+ var newH = height * (h/100.0);
+ obj.setAttribute("height", newH);
+ }
+ }
+ }
+ },
+
+ // needed for Opera to inhibit default behavior
+ // since Opera delivers keyPress even if keyDown
+ // was cancelled
+ key_press: function (event) {
+ if (!event)
+ event = window.event;
+
+ if (!w3c_slidy.key_wanted)
+ return w3c_slidy.cancel(event);
+
+ return true;
+ },
+
+ // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
+ key_down: function (event) {
+ var key;
+
+ w3c_slidy.key_wanted = true;
+
+ if (!event)
+ event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey || event.metaKey)
+ return true;
+
+ // dismiss table of contents if visible
+ if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40)
+ {
+ w3c_slidy.hide_table_of_contents();
+
+ if (key == 27 || key == 84 || key == 67)
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 34) // Page Down
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.next_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 33) // Page Up
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.previous_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 32) // space bar
+ {
+ w3c_slidy.next_slide(true);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 37) // Left arrow
+ {
+ w3c_slidy.previous_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 36) // Home
+ {
+ w3c_slidy.first_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 35) // End
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 39) // Right arrow
+ {
+ w3c_slidy.next_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 13) // Enter
+ {
+ if (w3c_slidy.outline)
+ {
+ if (w3c_slidy.outline.visible)
+ w3c_slidy.fold(w3c_slidy.outline);
+ else
+ w3c_slidy.unfold(w3c_slidy.outline);
+
+ return w3c_slidy.cancel(event);
+ }
+ }
+ else if (key == 188) // < for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 190) // > for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 189 || key == 109) // - for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 187 || key == 191 || key == 107) // = + for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 83) // S for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 66) // B for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 90) // Z for last slide
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 70) // F for toggle toolbar
+ {
+ w3c_slidy.toggle_toolbar();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 65) // A for toggle view single/all slides
+ {
+ w3c_slidy.toggle_view();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 75) // toggle action of left click for next page
+ {
+ w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled;
+ var alert_msg = (w3c_slidy.mouse_click_enabled ?
+ "enabled" : "disabled") + " mouse click advance";
+
+ alert(alert_msg.localize());
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 84 || key == 67) // T or C for table of contents
+ {
+ if (w3c_slidy.toc)
+ w3c_slidy.toggle_table_of_contents();
+
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 72) // H for help
+ {
+ window.location = w3c_slidy.help_page;
+ return w3c_slidy.cancel(event);
+ }
+ //else alert("key code is "+ key);
+
+ return true;
+ },
+
+ // safe for both text/html and application/xhtml+xml
+ create_element: function (name) {
+ if (this.xhtml && (typeof document.createElementNS != 'undefined'))
+ return document.createElementNS("http://www.w3.org/1999/xhtml", name)
+
+ return document.createElement(name);
+ },
+
+ get_element_style: function (elem, IEStyleProp, CSSStyleProp) {
+ if (elem.currentStyle)
+ {
+ return elem.currentStyle[IEStyleProp];
+ }
+ else if (window.getComputedStyle)
+ {
+ var compStyle = window.getComputedStyle(elem, "");
+ return compStyle.getPropertyValue(CSSStyleProp);
+ }
+ return "";
+ },
+
+ // the string str is a whitespace separated list of tokens
+ // test if str contains a particular token, e.g. "slide"
+ has_token: function (str, token) {
+ if (str)
+ {
+ // define pattern as regular expression
+ var pattern = /\w+/g;
+
+ // check for matches
+ // place result in array
+ var result = str.match(pattern);
+
+ // now check if desired token is present
+ for (var i = 0; i < result.length; i++)
+ {
+ if (result[i] == token)
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ get_class_list: function (element) {
+ if (typeof element.className != 'undefined')
+ return element.className;
+
+ return element.getAttribute("class");
+ },
+
+ has_class: function (element, name) {
+ if (element.nodeType != 1)
+ return false;
+
+ var regexp = new RegExp("(^| )" + name + "\W*");
+
+ if (typeof element.className != 'undefined')
+ return regexp.test(element.className);
+
+ return regexp.test(element.getAttribute("class"));
+ },
+
+ remove_class: function (element, name) {
+ var regexp = new RegExp("(^| )" + name + "\W*");
+ var clsval = "";
+
+ if (typeof element.className != 'undefined')
+ {
+ clsval = element.className;
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.className = clsval;
+ }
+ }
+ else
+ {
+ clsval = element.getAttribute("class");
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ add_class: function (element, name) {
+ if (!this.has_class(element, name))
+ {
+ if (typeof element.className != 'undefined')
+ element.className += " " + name;
+ else
+ {
+ var clsval = element.getAttribute("class");
+ clsval = clsval ? clsval + " " + name : name;
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ // HTML elements that can be used with class="incremental"
+ // note that you can also put the class on containers like
+ // up, ol, dl, and div to make their contents appear
+ // incrementally. Upper case is used since this is what
+ // browsers report for HTML node names (text/html).
+ incremental_elements: null,
+ okay_for_incremental: function (name) {
+ if (!this.incremental_elements)
+ {
+ var inclist = new Array();
+ inclist["p"] = true;
+ inclist["pre"] = true;
+ inclist["li"] = true;
+ inclist["blockquote"] = true;
+ inclist["dt"] = true;
+ inclist["dd"] = true;
+ inclist["h2"] = true;
+ inclist["h3"] = true;
+ inclist["h4"] = true;
+ inclist["h5"] = true;
+ inclist["h6"] = true;
+ inclist["span"] = true;
+ inclist["address"] = true;
+ inclist["table"] = true;
+ inclist["tr"] = true;
+ inclist["th"] = true;
+ inclist["td"] = true;
+ inclist["img"] = true;
+ inclist["object"] = true;
+ this.incremental_elements = inclist;
+ }
+ return this.incremental_elements[name.toLowerCase()];
+ },
+
+ next_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.next_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1) // ELEMENT
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ previous_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.previous_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1)
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ // set visibility for all elements on current slide with
+ // a parent element with attribute class="incremental"
+ set_visibility_all_incremental: function (value) {
+ var node = this.next_incremental_item(null);
+
+ if (value == "hidden")
+ {
+ while (node)
+ {
+ w3c_slidy.add_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ else // value == "visible"
+ {
+ while (node)
+ {
+ w3c_slidy.remove_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ },
+
+ // reveal the next hidden item on the slide
+ // node is null or the node that was last revealed
+ reveal_next_item: function (node) {
+ node = w3c_slidy.next_incremental_item(node);
+
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.remove_class(node, "invisible");
+
+ return node;
+ },
+
+ // exact inverse of revealNextItem(node)
+ hide_previous_item: function (node) {
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.add_class(node, "invisible");
+
+ return this.previous_incremental_item(node);
+ },
+
+ // left to right traversal of root's content
+ next_node: function (root, node) {
+ if (node == null)
+ return root.firstChild;
+
+ if (node.firstChild)
+ return node.firstChild;
+
+ if (node.nextSibling)
+ return node.nextSibling;
+
+ for (;;)
+ {
+ node = node.parentNode;
+
+ if (!node || node == root)
+ break;
+
+ if (node && node.nextSibling)
+ return node.nextSibling;
+ }
+
+ return null;
+ },
+
+ // right to left traversal of root's content
+ previous_node: function (root, node) {
+ if (node == null)
+ {
+ node = root.lastChild;
+
+ if (node)
+ {
+ while (node.lastChild)
+ node = node.lastChild;
+ }
+
+ return node;
+ }
+
+ if (node.previousSibling)
+ {
+ node = node.previousSibling;
+
+ while (node.lastChild)
+ node = node.lastChild;
+
+ return node;
+ }
+
+ if (node.parentNode != root)
+ return node.parentNode;
+
+ return null;
+ },
+
+ previous_sibling_element: function (el) {
+ el = el.previousSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.previousSibling;
+
+ return el;
+ },
+
+ next_sibling_element: function (el) {
+ el = el.nextSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.nextSibling;
+
+ return el;
+ },
+
+ first_child_element: function (el) {
+ var node;
+
+ for (node = el.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1)
+ break;
+ }
+
+ return node;
+ },
+
+ first_tag: function (element, tag) {
+ var node;
+
+ if (!this.is_xhtml)
+ tag = tag.toUpperCase();
+
+ for (node = element.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1 && node.nodeName == tag)
+ break;
+ }
+
+ return node;
+ },
+
+ hide_selection: function () {
+ if (window.getSelection) // Firefox, Chromium, Safari, Opera
+ {
+ var selection = window.getSelection();
+
+ if (selection.rangeCount > 0)
+ {
+ var range = selection.getRangeAt(0);
+ range.collapse (false);
+ }
+ }
+ else // Internet Explorer
+ {
+ var textRange = document.selection.createRange ();
+ textRange.collapse (false);
+ }
+ },
+
+ get_selected_text: function () {
+ try
+ {
+ if (window.getSelection)
+ return window.getSelection().toString();
+
+ if (document.getSelection)
+ return document.getSelection().toString();
+
+ if (document.selection)
+ return document.selection.createRange().text;
+ }
+ catch (e)
+ {
+ }
+
+ return "";
+ },
+
+ // make note of length of selected text
+ // as this evaluates to zero in click event
+ mouse_button_up: function (e) {
+ w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length;
+ },
+
+ // right mouse button click is reserved for context menus
+ // it is more reliable to detect rightclick than leftclick
+ mouse_button_click: function (e) {
+ var rightclick = false;
+ var leftclick = false;
+ var middleclick = false;
+ var target;
+
+ if (!e)
+ var e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target.nodeType == 3)
+ target = target.parentNode;
+
+ if (e.which) // all browsers except IE
+ {
+ leftclick = (e.which == 1);
+ middleclick = (e.which == 2);
+ rightclick = (e.which == 3);
+ }
+ else if (e.button)
+ {
+ // Konqueror gives 1 for left, 4 for middle
+ // IE6 gives 0 for left and not 1 as I expected
+
+ if (e.button == 4)
+ middleclick = true;
+
+ // all browsers agree on 2 for right button
+ rightclick = (e.button == 2);
+ }
+ else leftclick = true;
+/*
+ alert("you clicked over a " + target.nodeName + " element\n" +
+ "w3c_slidy.mouse_click_enabled = " + w3c_slidy.mouse_click_enabled + "\n" +
+ "leftclick = " + leftclick + "\n" +
+ "selected text length = " + w3c_slidy.selected_text_len);
+ //alert("selected text length = " + w3c_slidy.selected_text_len);
+*/
+ if (w3c_slidy.selected_text_len > 0)
+ {
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+
+ // dismiss table of contents
+ w3c_slidy.hide_table_of_contents();
+
+ // check if target is something that probably want's clicks
+ // e.g. a, embed, object, input, textarea, select, option
+ var tag = target.nodeName.toLowerCase();
+
+ if (w3c_slidy.mouse_click_enabled && leftclick &&
+ tag != "a" &&
+ tag != "embed" &&
+ tag != "object" &&
+ tag != "video" &&
+ tag != "input" &&
+ tag != "textarea" &&
+ tag != "select" &&
+ tag != "option" &&
+ !target.onclick)
+ {
+ w3c_slidy.next_slide(true);
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+ },
+
+ get_key: function (e)
+ {
+ var key;
+
+ // kludge around NS/IE differences
+ if (typeof window.event != "undefined")
+ key = window.event.keyCode;
+ else if (e.which)
+ key = e.which;
+
+ return key;
+ },
+
+ get_target: function (e) {
+ var target;
+
+ if (!e)
+ e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ if (target.nodeType != 1)
+ target = target.parentNode;
+
+ return target;
+ },
+
+ // does display property provide correct defaults?
+ is_block: function (elem) {
+ var tag = elem.nodeName.toLowerCase();
+
+ return tag == "ol" || tag == "ul" || tag == "p" ||
+ tag == "li" || tag == "table" || tag == "pre" ||
+ tag == "h1" || tag == "h2" || tag == "h3" ||
+ tag == "h4" || tag == "h5" || tag == "h6" ||
+ tag == "blockquote" || tag == "address";
+ },
+
+ add_listener: function (element, event, handler) {
+ if (window.addEventListener)
+ element.addEventListener(event, handler, false);
+ else
+ element.attachEvent("on"+event, handler);
+ },
+
+ // used to prevent event propagation from field controls
+ stop_propagation: function (event) {
+ event = event ? event : window.event;
+ event.cancelBubble = true; // for IE
+
+ if (event.stopPropagation)
+ event.stopPropagation();
+
+ return true;
+ },
+
+ cancel: function (event) {
+ if (event)
+ {
+ event.cancel = true;
+ event.returnValue = false;
+
+ if (event.preventDefault)
+ event.preventDefault();
+ }
+
+ w3c_slidy.key_wanted = false;
+ return false;
+ }
+};
+
+// for each language define an associative array
+// and also the help text which is longer
+
+var w3c_slidy_i18n = {
+ strings_es: {
+ "slide":"pág.",
+ "help?":"Ayuda",
+ "contents?":"Índice",
+ "table of contents":"tabla de contenidos",
+ "Table of Contents":"Tabla de Contenidos",
+ "restart presentation":"Reiniciar presentación",
+ "restart?":"Inicio"
+ },
+ help_es:
+ "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
+ "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
+
+ strings_ca: {
+ "slide":"pàg..",
+ "help?":"Ajuda",
+ "contents?":"Índex",
+ "table of contents":"taula de continguts",
+ "Table of Contents":"Taula de Continguts",
+ "restart presentation":"Reiniciar presentació",
+ "restart?":"Inici"
+ },
+ help_ca:
+ "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " +
+ "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.",
+
+ strings_cs: {
+ "slide":"snímek",
+ "help?":"nápověda",
+ "contents?":"obsah",
+ "table of contents":"obsah prezentace",
+ "Table of Contents":"Obsah prezentace",
+ "restart presentation":"znovu spustit prezentaci",
+ "restart?":"restart"
+ },
+ help_cs:
+ "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " +
+ "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " +
+ "dá zvětšit a zmenšit pomocí kláves B a S.",
+
+ strings_nl: {
+ "slide":"pagina",
+ "help?":"Help?",
+ "contents?":"Inhoud?",
+ "table of contents":"inhoudsopgave",
+ "Table of Contents":"Inhoudsopgave",
+ "restart presentation":"herstart presentatie",
+ "restart?":"Herstart?"
+ },
+ help_nl:
+ "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " +
+ "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.",
+
+ strings_de: {
+ "slide":"Seite",
+ "help?":"Hilfe",
+ "contents?":"Übersicht",
+ "table of contents":"Inhaltsverzeichnis",
+ "Table of Contents":"Inhaltsverzeichnis",
+ "restart presentation":"Präsentation neu starten",
+ "restart?":"Neustart"
+ },
+ help_de:
+ "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " +
+ "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.",
+
+ strings_pl: {
+ "slide":"slajd",
+ "help?":"pomoc?",
+ "contents?":"spis treści?",
+ "table of contents":"spis treści",
+ "Table of Contents":"Spis Treści",
+ "restart presentation":"Restartuj prezentację",
+ "restart?":"restart?"
+ },
+ help_pl:
+ "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" +
+ "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.",
+
+ strings_fr: {
+ "slide":"page",
+ "help?":"Aide",
+ "contents?":"Index",
+ "table of contents":"table des matières",
+ "Table of Contents":"Table des matières",
+ "restart presentation":"Recommencer l'exposé",
+ "restart?":"Début"
+ },
+ help_fr:
+ "Naviguez avec la souris, la barre d'espace, les flèches " +
+ "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " +
+ "les touches S et B pour modifier la taille de la police.",
+
+ strings_hu: {
+ "slide":"oldal",
+ "help?":"segítség",
+ "contents?":"tartalom",
+ "table of contents":"tartalomjegyzék",
+ "Table of Contents":"Tartalomjegyzék",
+ "restart presentation":"bemutató újraindítása",
+ "restart?":"újraindítás"
+ },
+ help_hu:
+ "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " +
+ "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " +
+ "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " +
+ "a szöveg méretét.",
+
+ strings_it: {
+ "slide":"pag.",
+ "help?":"Aiuto",
+ "contents?":"Indice",
+ "table of contents":"indice",
+ "Table of Contents":"Indice",
+ "restart presentation":"Ricominciare la presentazione",
+ "restart?":"Inizio"
+ },
+ help_it:
+ "Navigare con mouse, barra spazio, frecce sinistra/destra o " +
+ "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.",
+
+ strings_el: {
+ "slide":"σελίδα",
+ "help?":"βοήθεια;",
+ "contents?":"περιεχόμενα;",
+ "table of contents":"πίνακας περιεχομένων",
+ "Table of Contents":"Πίνακας Περιεχομένων",
+ "restart presentation":"επανεκκίνηση παρουσίασης",
+ "restart?":"επανεκκίνηση;"
+ },
+ help_el:
+ "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " +
+ "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " +
+ "το μέγεθος της γραμματοσειράς.",
+
+ strings_ja: {
+ "slide":"スライド",
+ "help?":"ヘルプ",
+ "contents?":"目次",
+ "table of contents":"目次を表示",
+ "Table of Contents":"目次",
+ "restart presentation":"最初から再生",
+ "restart?":"最初から"
+ },
+ help_ja:
+ "マウス左クリック ・ スペース ・ 左右キー " +
+ "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更",
+
+ strings_zh: {
+ "slide":"幻灯片",
+ "help?":"帮助?",
+ "contents?":"内容?",
+ "table of contents":"目录",
+ "Table of Contents":"目录",
+ "restart presentation":"重新启动展示",
+ "restart?":"重新启动?"
+ },
+ help_zh:
+ "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " +
+ "用 S, B 改变字体大小.",
+
+ strings_ru: {
+ "slide":"слайд",
+ "help?":"помощь?",
+ "contents?":"содержание?",
+ "table of contents":"оглавление",
+ "Table of Contents":"Оглавление",
+ "restart presentation":"перезапустить презентацию",
+ "restart?":"перезапуск?"
+ },
+ help_ru:
+ "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" +
+ "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.",
+
+ strings_sv: {
+ "slide":"sida",
+ "help?":"hjälp",
+ "contents?":"innehåll",
+ "table of contents":"innehållsförteckning",
+ "Table of Contents":"Innehållsförteckning",
+ "restart presentation":"visa presentationen från början",
+ "restart?":"börja om"
+ },
+ help_sv:
+ "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " +
+ "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " +
+ "Använd tangenterna S och B för att ändra textens storlek.",
+
+// each such language array is declared in the localize array
+// which is set on string prototype and used as in "foo".localize();
+ localize: {
+ "es":this.strings_es,
+ "ca":this.strings_ca,
+ "cs":this.strings_cs,
+ "nl":this.strings_nl,
+ "de":this.strings_de,
+ "pl":this.strings_pl,
+ "fr":this.strings_fr,
+ "hu":this.strings_hu,
+ "it":this.strings_it,
+ "el":this.strings_el,
+ "jp":this.strings_ja,
+ "zh":this.strings_zh,
+ "ru":this.strings_ru,
+ "sv":this.strings_sv
+ },
+
+ init: function () {
+ var i18n = w3c_slidy_i18n;
+ var help_text = w3c_slidy.help_text;
+ i18n.strings_es[help_text] = i18n.help_es;
+ i18n.strings_ca[help_text] = i18n.help_ca;
+ i18n.strings_cs[help_text] = i18n.help_cs;
+ i18n.strings_nl[help_text] = i18n.help_nl;
+ i18n.strings_de[help_text] = i18n.help_de;
+ i18n.strings_pl[help_text] = i18n.help_pl;
+ i18n.strings_fr[help_text] = i18n.help_fr;
+ i18n.strings_hu[help_text] = i18n.help_hu;
+ i18n.strings_it[help_text] = i18n.help_it;
+ i18n.strings_el[help_text] = i18n.help_el;
+ i18n.strings_ja[help_text] = i18n.help_ja;
+ i18n.strings_zh[help_text] = i18n.help_zh;
+ i18n.strings_ru[help_text] = i18n.help_ru;
+ i18n.strings_sv[help_text] = i18n.help_sv;
+
+ w3c_slidy.lang = document.body.parentNode.getAttribute("lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = "en";
+
+ // add localize method to all strings
+ // for use as in "contents".localize()
+ String.prototype.localize = function() {
+ if (this == "")
+ return this;
+
+ // try full language code, e.g. en-US
+ var s, lookup = w3c_slidy_i18n.localize[w3c_slidy.lang];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+
+ // strip country code suffix, e.g.
+ // try en if undefined for en-US
+ var lg = w3c_slidy.lang.split("-");
+
+ if (lg.length > 1)
+ {
+ lookup = w3c_slidy_i18n.localize[lg[0]];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+ }
+
+ // otherwise string as is
+ return this;
+ };
+ }
+};
+
+// hack for back button behavior
+if (w3c_slidy.ie6 || w3c_slidy.ie7)
+{
+ document.write("<iframe id='historyFrame' " +
+ "src='javascript:\"<html"+"></"+"html>\"' " +
+ "height='1' width='1' " +
+ "style='position:absolute;left:-800px'></iframe>");
+}
+
+// attach event listeners for initialization
+w3c_slidy.set_up();
+
+// hide the slides as soon as body element is available
+// to reduce annoying screen mess before the onload event
+setTimeout(w3c_slidy.hide_slides, 50);
+
+/*]]>*/
+</script>
+</head>
+<body class="article" style="max-width:45em">
+<div id="header" class="slide">
+<h1>Path Loss and Link Budget</h1>
+<span id="author">Harald Welte <hwelte@sysmocom.de></span><br />
+</div>
+<div class="sect1 slide">
+<h1 id="rf-path-loss">Path Loss</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>A fundamental concept in planning any type of radio communications link
+is the concept of <em>Path Loss</em>. Path Loss describes the amount of
+signal loss (attenuation) between a receive and a transmitter.</p></div>
+<div class="paragraph"><p>As GSM operates in frequency duplex on uplink and downlink, there is
+correspondingly an <em>Uplink Path Loss</em> from MS to BTS, and a <em>Downlink
+Path Loss</em> from BTS to MS. Both need to be considered.</p></div>
+<div class="paragraph"><p>It is possible to compute the path loss in a theoretical ideal
+situation, where transmitter and receiver are in empty space, with no
+surfaces anywhere nearby causing reflections, and with no objects or
+materials in between them. This is generally called the <em>Free Space
+Path Loss</em>.</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="rf-path-loss">Path Loss</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Estimating the path loss within a given real-world terrain/geography is
+a hard problem, and there are no easy solutions. It is impacted, among
+other things, by</p></div>
+<ul class="">
+<li>
+<span>
+the height of the transmitter and receiver antennas
+</span>
+</li>
+<li>
+<span>
+whether there is line-of-sight (LOS) or non-line-of-sight (NLOS)
+</span>
+</li>
+<li>
+<span>
+the geography/terrain in terms of hills, mountains, etc.
+</span>
+</li>
+<li>
+<span>
+the vegetation in terms of attenuation by foliage
+</span>
+</li>
+<li>
+<span>
+any type of construction, and if so, the type of materials used in
+ that construction, the height of the buildings, their distance, etc.
+</span>
+</li>
+<li>
+<span>
+the frequency (band) used. Lower frequencies generally expose better
+ NLOS characteristics than higher frequencies.
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>The above factors determine on the one hand side the actual attenuation
+of the radio wave between transmitter and receiver. On the other
+hand, they also determine how many reflections there are on this path,
+causing so-called <em>Multipath Fading</em> of the signal.</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_radio_propagation_models">Radio Propagation Models</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Over decades, many different radio propagation models have been designed
+by scientists and engineers. They might be based on empirical studies
+condensed down into relatively simple models, or they might be based on
+ray-tracing in a 3D model of the terrain.</p></div>
+<div class="paragraph"><p>Several companies have developed (expensive, proprietary) simulation
+software that can help with this process in detail. However, the
+results of such simulation also depend significantly on the availability
+of precise 3D models of the geography/terrain as well as the building
+structure in the coverage area.</p></div>
+<div class="paragraph"><p>In absence of such simulation software and/or precise models, there are
+several models that can help, depending on the general terrain:</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_common_path_loss_models">Common Path Loss Models</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="tableblock" id="path-loss-models">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<caption class="title">Table 1. List of common path loss models</caption>
+<col width="20%" />
+<col width="20%" />
+<col width="20%" />
+<col width="40%" />
+<thead>
+<tr>
+<th align="left" valign="top">Type</th>
+<th align="left" valign="top">Sub-Type</th>
+<th align="left" valign="top">Bands</th>
+<th align="left" valign="top">Name</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">Terrain</p></td>
+<td align="left" valign="top"><p class="table">-</p></td>
+<td align="left" valign="top"><p class="table">850, 900, 1800, 1900</p></td>
+<td align="left" valign="top"><p class="table">ITU terrain model</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Rural</p></td>
+<td align="left" valign="top"><p class="table">Foliage</p></td>
+<td align="left" valign="top"><p class="table">850, 900, 1800, 1900</p></td>
+<td align="left" valign="top"><p class="table">One woodland terminal model</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">City</p></td>
+<td align="left" valign="top"><p class="table">Urban</p></td>
+<td align="left" valign="top"><p class="table">850, 900</p></td>
+<td align="left" valign="top"><p class="table">Okumura-Hata Model for Urban Areas</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">City</p></td>
+<td align="left" valign="top"><p class="table">Suburban</p></td>
+<td align="left" valign="top"><p class="table">850, 900</p></td>
+<td align="left" valign="top"><p class="table">Okumura-Hata Model for Suburban Areas</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">City</p></td>
+<td align="left" valign="top"><p class="table">Open</p></td>
+<td align="left" valign="top"><p class="table">850, 900</p></td>
+<td align="left" valign="top"><p class="table">Okumura-Hata Model for Open Areas</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">City</p></td>
+<td align="left" valign="top"><p class="table">Urban</p></td>
+<td align="left" valign="top"><p class="table">1800, 1900</p></td>
+<td align="left" valign="top"><p class="table">COST-231 Hata Model</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">Indoor</p></td>
+<td align="left" valign="top"><p class="table">-</p></td>
+<td align="left" valign="top"><p class="table">900, 1800, 1900</p></td>
+<td align="left" valign="top"><p class="table">ITU model for indoor attenuation</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><p>In <a href="#path-loss-models">[path-loss-models]</a> you can see a list of commonly-used path loss
+models. They are typically quite simple equations which only require
+certain parameters like the distance of transmitter and receiver as well
+as the antenna height, etc. No detailed 3D models of the terrain are
+required.</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_rf_power_in_a_wireless_link">RF Power in a Wireless Link</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock">
+<div class="content">
+<img src="link_budget.png" alt="link_budget.png" width="90%" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="rf-link-budget">Link Budget</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>The link budget consists of the total budget of all elements in the
+telecommunication system between BTS and MS (and vice-versa).</p></div>
+<div class="paragraph"><p>This includes</p></div>
+<ul class="">
+<li>
+<span>
+antenna gains on both sides
+</span>
+</li>
+<li>
+<span>
+coaxial cabling between antenna and receiver/transmitter
+</span>
+</li>
+<li>
+<span>
+losses in duplexers, splitters, connectors, etc
+</span>
+</li>
+<li>
+<span>
+gain of any amplifiers (PA, LNA)
+</span>
+</li>
+<li>
+<span>
+path loss of the radio link between the two antennas
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_simplified_link_budget_equation">Simplified Link Budget Equation</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>The simplified link budget equations looks like this:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>Rx Power (dBm) = Tx Power (dBm) + Gains (dB) − Losses (dB)</code></pre>
+</div></div>
+<div class="paragraph"><p>Gains is the sum of all gains, including</p></div>
+<ul class="">
+<li>
+<span>
+Gain of the transmitter antenna
+</span>
+</li>
+<li>
+<span>
+Gain of the receiver antenna
+</span>
+</li>
+<li>
+<span>
+Gain of any PA (transmitter) or LNA (receiver)
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>Losses is the sum of all losses, including</p></div>
+<ul class="">
+<li>
+<span>
+Loss of any cabling and/or connectors on either side
+</span>
+</li>
+<li>
+<span>
+Loss of any passive components like duplexers/splitters on either side
+</span>
+</li>
+<li>
+<span>
+Path Loss of the radio link
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_link_budget_equation_vs_path_loss">Link Budget Equation vs. Path Loss</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Using the Link Budget equation and resolving it for the path loss will
+ give you an idea of how much path loss on the radio link you can afford
+ while still having a reliable radio link.
+</span>
+</li>
+<li>
+<span>
+Resolving the path loss into a physical distance based on your path
+ loss model will then give you an idea about the coverage area that
+ you can expect.
+</span>
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+NOTE
+</dt>
+<dd>
+<p>
+The Rx Power substituted in the Link budget equation is
+determined by the receiver sensitivity. It is customary to add some
+some safety margin to cover for fading.
+</p>
+</dd>
+</dl></div>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_rf_link">RF Link</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock">
+<div class="content">
+<img src="ap_to_client.png" alt="ap_to_client.png" width="90%" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_uplink_link_budget">Uplink Link Budget</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock graphviz">
+<div class="content">
+<img src="path_loss_link_budget__1.png" alt="path_loss_link_budget__1.png" />
+</div>
+</div>
+<div class="paragraph"><p>The transmit power of a MS depends on various factors, such as the MS
+Power Class, the frequency band and the modulation scheme used.</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<caption class="title">Table 2. Typical MS transmit power levels</caption>
+<col width="25%" />
+<col width="25%" />
+<col width="25%" />
+<col width="25%" />
+<thead>
+<tr>
+<th align="left" valign="top">Power Class</th>
+<th align="left" valign="top">Band</th>
+<th align="left" valign="top">Modulation</th>
+<th align="left" valign="top">Power</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">4</p></td>
+<td align="left" valign="top"><p class="table">850 / 900</p></td>
+<td align="left" valign="top"><p class="table">GMSK</p></td>
+<td align="left" valign="top"><p class="table">33 dBm (2 W)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">1800 / 1900</p></td>
+<td align="left" valign="top"><p class="table">GMSK</p></td>
+<td align="left" valign="top"><p class="table">30 dBm (1 W)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">E2</p></td>
+<td align="left" valign="top"><p class="table">850 / 900</p></td>
+<td align="left" valign="top"><p class="table">8PSK</p></td>
+<td align="left" valign="top"><p class="table">27 dBm (0.5 W)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">E2</p></td>
+<td align="left" valign="top"><p class="table">1800 / 1900</p></td>
+<td align="left" valign="top"><p class="table">8PSK</p></td>
+<td align="left" valign="top"><p class="table">26 dBm (0.4 W)</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><p>The minimum reference sensitivity level of a normal GSM BTS is specified
+in 3GPP TS 05.05 and required to be at least -104 dBm. Most modern BTSs
+outperform this significantly.</p></div>
+<div class="paragraph"><p>FIXME: Example calculation (spreadsheet screenshot?)</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_downlink_link_budget">Downlink Link Budget</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock graphviz">
+<div class="content">
+<img src="path_loss_link_budget__2.png" alt="path_loss_link_budget__2.png" />
+</div>
+</div>
+<div class="paragraph"><p>The transmit power of the BTS depends on your BTS model and any possible
+external power amplifiers used.</p></div>
+<div class="paragraph"><p>The minimum reference sensitivity level of a GSM MS is specified in 3GPP
+TS 05.05 and can typically be assumed to be about -102 dB.</p></div>
+<div class="paragraph"><p>FIXME: Example calculation (spreadsheet screenshot?)</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_optimization_of_the_link_budget">Optimization of the Link Budget</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>If the coverage area determined by the above procedure is insufficient,
+you can try to change some of the parameters, such as</p></div>
+<ul class="">
+<li>
+<span>
+increasing transmit power by adding a bigger PA
+</span>
+</li>
+<li>
+<span>
+increasing antenna gain by using a higher gain antenna
+</span>
+</li>
+<li>
+<span>
+reducing cable losses by using better / shorter coaxial cables
+</span>
+</li>
+<li>
+<span>
+increasing the height of your antenna
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_introduction_into_rf_electronics">Introduction into RF Electronics</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Setup and Operation of a GSM network is not only about the configuration
+and system administration on the network elements and protocol stack,
+but also includes the physical radio transmission part.</p></div>
+<div class="paragraph"><p>Basic understanding about RF (Radio Frequency) Electronics is key to
+achieving good performance of the GSM network.</p></div>
+<div class="sect2">
+<h3 id="rf-coaxial-cabling">Coaxial Cabling</h3>
+<div class="paragraph"><p>Coaxial cables come in many different shapes, diameters, physical
+construction, dielectric materials, and last but not least brands and
+types.</p></div>
+<div class="paragraph"><p>There are many parameters that might be relevant to your particular
+installation, starting from mechanical/environmental properties such as
+temperature range, UV resilience, water/weatherproofness, flammability,
+etc.</p></div>
+<div class="paragraph"><p>For the subject of this manual, we will not look at those mechanical
+properties, but look at the electrical properties instead.</p></div>
+<div class="paragraph"><p>The prime electrical parameters of a coaxial cable are:</p></div>
+<ul class="">
+<li>
+<span>
+its attenuation over frequency and length
+</span>
+</li>
+<li>
+<span>
+its maximum current/power handling capability
+</span>
+</li>
+<li>
+<span>
+its propagation velocity (ignored here)
+</span>
+</li>
+<li>
+<span>
+its screening efficiency (ignored here)
+</span>
+</li>
+</ul>
+<div class="sect3">
+<h4 id="_coaxial_cable_attenuation">Coaxial Cable Attenuation</h4>
+<div class="paragraph"><p>The attenuation of a coaxial cable is given in dB per length, commonly
+in <em>dB per 100m</em>. This value changes significantly depending on the
+frequency of the signal transmitted via the cable. Cable manufacturers
+typically either provide tables with discrete frequency values, or
+graphs plotting the attenuation per 100m (x axis) over the frequency (y
+axis).</p></div>
+<div class="paragraph"><p>FIXME: Example.</p></div>
+<div class="paragraph"><p>So in order to estimate the loss of a coaxial cable, you need to</p></div>
+<ol class="arabic">
+<li>
+<span>
+determine the frequency at which you will use the cable, as determined
+ by the GSM frequency band of your BTS. Make sure you use the highest
+ frequency that might occur, which is typically the upper end of the
+ transmit band, see <a href="#gsm-bands">[gsm-bands]</a>
+</span>
+</li>
+<li>
+<span>
+determine the attenuation of your cable per 100m at the given
+ frequency (check the cable data sheet)
+</span>
+</li>
+<li>
+<span>
+scale that value by the actual length of the cable
+</span>
+</li>
+</ol>
+<div class="paragraph"><p>A real cable always has connectors attached to it, please add some
+additional losses for the connectors that are attached. 0.05 dB per
+connector is a general rule of thumb for the frequencies used in GSM.</p></div>
+<div class="paragraph"><p>FIXME: Example computation</p></div>
+<div class="paragraph"><p>As you can see very easily, the losses incurred in coaxial cables
+between your antenna and the BTS can very quickly become significant
+factors in your overall link budget (and thus cell coverage). This is
+particularly relevant for the uplink power budget. Every dB you loose
+in the antenna cable between antenna and the BTS receiver translates
+into reduced uplink coverage.</p></div>
+<div class="paragraph"><p>Using the shortest possible coaxial cabling (e.g. by mounting the BTS
+high up on the antenna tower) and using the highest-quality cabling are
+the best strategies to optimize</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">If you plan to assemble the coaxial connectors yourself, please
+make sure you ensure to have the right skills for this. Properly
+assembling coaxial connectors (whether solder-type or crimp-type)
+requires precision tools and strict process as described by the
+manufacturer. Any mechanical imprecision of connector assembly will
+cause significant extra signal attenuation.</td>
+</tr></table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_checking_coaxial_cables">Checking coaxial cables</h4>
+<div class="paragraph"><p>If you would like to check the proper operation of a coaxial cable,
+there are several possible methods available:</p></div>
+<ul class="">
+<li>
+<span>
+The more expensive method would be to use a <em>RF Network Analyzer</em> to
+ measure the S11/S12 parameters or the VSWR of the cable.
+</span>
+</li>
+<li>
+<span>
+Another option is to use a TDR (time domain reflectometer) to
+ determine the VSWR. The TDR method has the added advantage that you
+ can localize any damage to the cable, as such damage would cause
+ reflections that can be converted into meters cable length from the
+ port at which you are testing the cable. Mobile, battery-powered TDR
+ for field-use in GSM Site installation are available from various
+ vendors. One commonly used series is the <em>Anritsu Site Master</em>.
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="rf-coaxial-connectors">Coaxial Connectors</h3>
+<div class="paragraph"><p>A coaxial connector is a connector specifically designed for mounting to
+coaxial cable. It facilitates the removable / detachable connection of
+a coaxial cable to a RF device.</p></div>
+<div class="paragraph"><p>There are many different types of coaxial connectors on the market.</p></div>
+<div class="paragraph"><p>The most important types of coaxial connectors in the context of GSM
+BTSs are:</p></div>
+<ul class="">
+<li>
+<span>
+The <em>N type</em> connector
+</span>
+</li>
+<li>
+<span>
+The <em>SMA type</em> connector.
+</span>
+</li>
+<li>
+<span>
+The <em>7/16</em> type connector
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>FIXME: Images</p></div>
+<div class="paragraph"><p>The above connectors are tightened by a screw-on shell. Each connector
+type has a specific designated nominal torque by which the connector
+shall be tightened. In case of uncertainty, please ask your connector
+supplier for the nominal torque.</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">Always ensure the proper mechanical condition of your RF
+connectors. Don’t use RF connectors that are contaminated by dust or
+dirt, or which show significant oxidization, bent contacts or the like.
+Using such connectors poses significant danger of unwanted signal loss,
+and can in some cases even lead to equipment damage (e.g. in case of RF
+power at PA output being reflected back into the PA).</td>
+</tr></table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="rf-duplexers">Duplexers</h3>
+<div class="paragraph"><p>A GSM BTS (or GSM TRX inside a BTS) typically exposes separate ports for
+Rx (Receive) and Tx (Transmit). This is intentionally the case, as
+this allows the users to add e.g. additional power amplifiers, filters
+or other external components into the signal path. Those components
+typically operate on either the receive or the transmit path.</p></div>
+<div class="paragraph"><p>You could now connect two separate antennas to the two ports (one for
+Rx, one for Tx). This is commonly done in indoor installations with
+small rubber-type antennas directly attached to the BTS connectors.</p></div>
+<div class="paragraph"><p>In outdoor installations, you typically (want to) use a single Antenna
+for Rx and Tx. This single antenna needs to be connected to the BTS
+via a device that is called <em>Duplexer</em>.</p></div>
+<div class="paragraph"><p>The <em>Duplexer</em> is actually a frequency splitter/combiner, which is
+specifically tuned to the uplink and downlink frequencies of the GSM
+band in which you operate the BTS. As such, it has one port that passes
+only uplink frequencies between the antenna and that port, as well as
+another port that passes only downlink frequencies between antenna and
+that port.</p></div>
+<div class="imageblock graphviz">
+<div class="content">
+<img src="path_loss_link_budget__3.png" alt="path_loss_link_budget__3.png" />
+</div>
+<div class="title">Figure 1. Illustration of the Duplexer functionality</div>
+</div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content"><strong>The ports of a duplexer are not interchangeable</strong>. Always make
+sure that you use the Rx port of the duplexer with the Rx port of the
+BTS, and vice-versa for Tx.</td>
+</tr></table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="rf-pa">RF Power Amplifiers</h3>
+<div class="paragraph"><p>A RF Power Amplifier (PA) is a device that boosts the transmit power of
+your RF signal, the BTS in your case.</p></div>
+<div class="paragraph"><p>RF power amplifiers come in many different characteristics. Some of the
+key characteristics are:</p></div>
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+Frequency range
+</dt>
+<dd>
+<p>
+ A PA is typically designed for a specific frequency range. Only
+ signals inside that range will be properly amplified
+</p>
+</dd>
+<dt class="hdlist1">
+Gain in dB
+</dt>
+<dd>
+<p>
+ This tells you how many dB the power amplifier will increase your
+ signal. <code>Pout = Pin + Gain</code>
+</p>
+</dd>
+<dt class="hdlist1">
+Maximum Output Power
+</dt>
+<dd>
+<p>
+ This indicates the maximum absolute output power. For example, if the
+ maximum output power is 40 dBm, and the gain is 10dBm, then an input
+ signal of 30dBm will render the maximum output power. An input signal
+ of 20dBm would subsequently generate only 30dBm of output power.
+</p>
+</dd>
+<dt class="hdlist1">
+Efficiency
+</dt>
+<dd>
+<p>
+ The efficiency determines how much electrical power is consumed for
+ the given output power. Often expressed as Power Added Efficiency
+ (PAE).
+</p>
+</dd>
+</dl></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">If you add external power amplifiers to a GSM BTS or any other
+transmitter, this will invalidate the regulatory approval of the BTS.
+It is your responsibility to ensure that the combination of BTS and PA
+still fulfills all regulatory requirements, for example in terms of
+out-of-band emissions, spectrum envelope, phase error, linearity, etc!</td>
+</tr></table>
+</div>
+<div class="imageblock graphviz">
+<div class="content">
+<img src="path_loss_link_budget__4.png" alt="path_loss_link_budget__4.png" />
+</div>
+<div class="title">Figure 2. Addition of a RF Power Amplifier to a GSM BTS Setup</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_antennas">Antennas</h3>
+<div class="paragraph"><p>The Antenna is responsible for converting the electromagnetic waves
+between the coaxial cable and the so-called <em>air interface</em> and
+vice-versa. The properties of an antenna are always symmetric for both
+transmission and reception.</p></div>
+<div class="paragraph"><p>Antennas come in many different types and shapes. Key characteristics
+distinguishing antennas are:</p></div>
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+Antenna Gain
+</dt>
+<dd>
+<p>
+ Expresses how much more efficient the antenna converts between cable
+ and air interface. Can be expressed in dB compared to a theoretical
+ isotropic radiator (dBi) or compared to a dipole antenna (dBd). Gain
+ usually implies directivity.
+</p>
+</dd>
+<dt class="hdlist1">
+Frequency Band(s)
+</dt>
+<dd>
+<p>
+ Antennas typically have only a relatively narrow band (or multiple
+ narrow bands at which they radiate efficiently. In general, the
+ higher the antenna gain, the lower the usable frequency band of the
+ antenna.
+</p>
+</dd>
+<dt class="hdlist1">
+Directivity
+</dt>
+<dd>
+<p>
+ Antennas radiate the energy in all three dimensions.
+</p>
+</dd>
+<dt class="hdlist1">
+Mechanical Size
+</dt>
+<dd>
+<p>
+ Mechanical Size is an important factor depending on how and where the
+ antenna is mounted. Size also relates to weight and wind-load.
+</p>
+</dd>
+<dt class="hdlist1">
+Wind Load
+</dt>
+<dd>
+<p>
+ Expresses how much mechanical load the antenna will put on its
+ support structure (antenna mast).
+</p>
+</dd>
+<dt class="hdlist1">
+Connector Type
+</dt>
+<dd>
+<p>
+ Your cabling will have to use a compatible connector for the antenna.
+ Outdoor antennas typically use the 7/16 type connector or an N type
+ connector. Indoor antennas either N type or SMA type.
+</p>
+</dd>
+<dt class="hdlist1">
+Environmental Rating
+</dt>
+<dd>
+<p>
+ Indoor antennas cannot be used outdoor, as they do not offer the level
+ of protection against dust and particularly water / humidity /
+ corrosion.
+</p>
+</dd>
+<dt class="hdlist1">
+Down-tilt Capability
+</dt>
+<dd>
+<p>
+ Particularly sector antennas are typically installed with a fixed or
+ (mechanically / electrically) variable down-tilt in order to limit the
+ radius/horizon of the antenna footprint and avoid excess interference
+ with surrounding cells.
+</p>
+</dd>
+<dt class="hdlist1">
+VSWR
+</dt>
+<dd>
+<p>
+ The Voltage Standing Wave Ratio indicates how well the antenna is
+ matched to the coaxial cable, and how much of the to-be-transmitted
+ radio signal is actually converted to radio waves versus reflected
+ back on the RF cable towards the transmitter. An ideal antenna has a
+ VSWR of 1 (sometimes written 1:1). Real antennas are typically in the
+ range of 1.2 to 2.
+</p>
+</dd>
+<dt class="hdlist1">
+Side Lobes
+</dt>
+<dd>
+<p>
+ A directional antenna never radiates only in one direction but always
+ has certain side lobes pointing outside of the main direction of the
+ antenna. The number and strength of side lobes differ from antenna
+ to antenna model.
+</p>
+</dd>
+</dl></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">Whenever installing antennas it is important to understand that
+any metallic or otherwise conductive object in their vicinity will
+inevitably alter the antenna performance. This can affect the radiation
+pattern, but also de-tune the antenna and shift its frequency band
+outside the nominal usable frequency band. It is thus best to mount
+antennas as far as practically possible from conductive elements within
+their radiation pattern</td>
+</tr></table>
+</div>
+<div class="sect3">
+<h4 id="_omni_directional_antennas">Omni-directional Antennas</h4>
+<div class="paragraph"><p>Omni-directional antennas are typically thin long dipole antennas covered
+with fiberglass. They radiate with equal strength in all directions and
+thus result in a more or less circular cell footprint (assuming flat
+terrain). The shape of the radiation pattern is a torus (donut) with
+the antenna located in the center of that torus.</p></div>
+<div class="paragraph"><p>Omni-directional antennas come with a variety of gains, typically from 0
+dBd to 3 dBd, 6 dBd and sometimes 9 dBd. This gain is achieved by
+compressing the radiation torus in the vertical plane.</p></div>
+<div class="paragraph"><p>Sometimes, Omni-directional antennas can be obtained with a fixed
+down-tilt to limit the cell radius.</p></div>
+</div>
+<div class="sect3">
+<h4 id="_sector_antennas">Sector Antennas</h4>
+<div class="paragraph"><p>Sector antennas are used in sectorized cell setups. Sector antennas can
+have significantly higher gain than omni-directional antennas.</p></div>
+<div class="paragraph"><p>Instead of mounting a single BTS with an omni-directional antenna to a
+given antenna pole, multiple BTSs with each one sector antenna are
+mounted to the same pole. This results in an overall larger radius due
+to the higher gain of the sector antennas, and also in an overall
+capacity increase, as each sector has the same capacity as a single
+omni-directional cell. And all that benefit still requires only a
+single physical site with antenna pole, power supply, back-haul cabling,
+etc.</p></div>
+<div class="paragraph"><p>Experimentation and simulation has shown that typically the use of three
+sectors with antennas of an opening angle of 65 degrees results in the
+most optimal combination for GSM networks. If more sectors are being
+deployed, there is a lot of overlap between the sectors, and the amount
+of hand-overs between the BTSs is increased.</p></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="rf-lna">RF Low Noise Amplifier (LNA)</h3>
+<div class="paragraph"><p>A RF Low Noise Amplifier (LNA) is a device that amplifies the weak
+received signal. In general, LNAs are combined with band filters, to
+ensure that only those frequencies within the receive band are
+amplified, and out-of-band interferers are filtered out. A duplexer
+can already be a sufficient band-filter, depending on its
+characteristics.</p></div>
+<div class="paragraph"><p>The use of a LNA typically only makes sense if you
+. have very long and/or lossy coaxial cables from your antenna to the
+ BTS, and
+. can mount the duplexer + LNA close to the antenna, so that the
+ amplification happens before the long/lossy coaxial line to the BTS</p></div>
+<div class="paragraph"><p>Key characteristics of a LNA are:</p></div>
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+Frequency range
+</dt>
+<dd>
+<p>
+ A LNA is typically designed for a specific frequency range. Only
+ signals inside that range will be properly amplified
+</p>
+</dd>
+<dt class="hdlist1">
+Gain in dB
+</dt>
+<dd>
+<p>
+ This tells you how many dB the low noise amplifier will increase your
+ signal. <code>Pout = Pin + Gain</code>
+</p>
+</dd>
+<dt class="hdlist1">
+Maximum Input Power
+</dt>
+<dd>
+<p>
+ This indicates the maximum RF power at the PA input before saturation.
+</p>
+</dd>
+<dt class="hdlist1">
+Noise Figure
+</dt>
+<dd>
+<p>
+ This indicates how much noise this LNA will add to the signal. This
+ noise will add to the interference as seen by the receiver.
+</p>
+</dd>
+</dl></div>
+<div class="imageblock graphviz">
+<div class="content">
+<img src="path_loss_link_budget__5.png" alt="path_loss_link_budget__5.png" />
+</div>
+<div class="title">Figure 3. Addition of a RF Low Noise Amplifier to the GSM BTS Setup</div>
+</div>
+<div class="imageblock graphviz">
+<div class="content">
+<img src="path_loss_link_budget__6.png" alt="path_loss_link_budget__6.png" />
+</div>
+<div class="title">Figure 4. Addition of a RF LNA + RF PA to the GSM BTS Setup</div>
+</div>
+<div class="paragraph"><p>As any LNA will add noise to the signal, it is generally discouraged to
+add them to the system. Instead, we recommend you to mount the entire
+BTS closer to the antenna, thereby removing the losses created by
+lengthy coaxial wire. The power supply lines and Ethernet connection to
+the BTS are far less critical when it comes to cable length.</p></div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_introduction_into_gsm_radio_planning">Introduction into GSM Radio Planning</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>The main focus of the manual you are reading is to document the
+specifics of the Osmocom GSM implementation in terms of configuration,
+system administration and monitoring. That’s basically all on the
+software part.</p></div>
+<div class="paragraph"><p>However, successful deployment and operation of GSM networks depends to
+a large extent on the proper design on the radio frequency (RF) side,
+including the right cabling, duplexers, antennas, etc.</p></div>
+<div class="paragraph"><p>Planning and implementing GSM deployment is a science (or art) in
+itself, and in most cases it is best to consult with somebody who has
+existing experience in the field.</p></div>
+<div class="paragraph"><p>There are three parts to this:</p></div>
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+GSM Radio Network Planning
+</dt>
+<dd>
+<p>
+ This includes an analysis of the coverage area, its terrain/geography,
+ the selection of the right sites for your BTSs, the antenna height, a
+ path loss estimate. As a result of that process, it will be clear
+ what amount of transmit power, antenna gain, cable length/type, etc.
+ you should use to obtain the intended coverage.
+</p>
+</dd>
+<dt class="hdlist1">
+GSM Site Installation
+</dt>
+<dd>
+<p>
+ This is the execution of what has been determined in the previous
+ step. The required skills are quite different, as this is about
+ properly assembling RF cables and connections, duplexers, power
+ amplifiers, antennas, etc.
+</p>
+</dd>
+<dt class="hdlist1">
+Coverage testing
+</dt>
+<dd>
+<p>
+ This is typically done by driving or walking in the newly-deployed GSM
+ site, and checking of the coverage is as it was expected.
+</p>
+</dd>
+</dl></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">This chapter can only give you the briefest overview about the
+process used, and cannot replace the experience and skill of somebody
+with GSM RF planning and site deployment.</td>
+</tr></table>
+</div>
+<div class="sect2">
+<h3 id="rf-radio-net-plan">GSM Radio Network Planning</h3>
+<div class="paragraph"><p>In GSM Radio Network Planning, the number and location of sites as well
+as type of required equipment is determined based on the coverage
+requirements.</p></div>
+<div class="paragraph"><p>For the coverage of a single BTS, this is a process that takes into
+consideration:</p></div>
+<ul class="">
+<li>
+<span>
+the terrain that needs to be covered
+</span>
+</li>
+<li>
+<span>
+the type of mobile stations to be supported, and particularly the
+ speed of their movement (residential, pedestrians, trains, highways)
+</span>
+</li>
+<li>
+<span>
+the possible locations for cell sites, where BTSs and Antennas can be
+ placed, as well as the possible antenna mounting height
+</span>
+</li>
+<li>
+<span>
+the equipment choices available, including
+</span>
+<ul class="">
+<li>
+<span>
+type and capabilities of BTS. The key criteria here is
+ the downlink transmit power in dBm, and the uplink receive
+ sensitivity.
+</span>
+</li>
+<li>
+<span>
+antenna models, including gain, radiation pattern, etc.
+</span>
+</li>
+<li>
+<span>
+RF cabling, including the key aspect of attenuation per length
+</span>
+</li>
+<li>
+<span>
+RF duplexers, splitting the transmit and receive path
+</span>
+</li>
+<li>
+<span>
+power amplifiers (PAs), increasing the transmit power
+</span>
+</li>
+<li>
+<span>
+low noise amplifiers (LNAs), amplifying the received signal
+</span>
+</li>
+</ul>
+</li>
+</ul>
+<div class="paragraph"><p>For coverage of an actual cellular network consisting of neighboring
+cells, this process also must take into consideration aspects of
+<em>frequency planning</em>, which is the allocation of frequencies (ARFCNs) to
+the individual cells within the network. As part of that, interference
+generated by frequency re-use of other (distant) cells must be taken
+into consideration. The details of this would go beyond this very
+introductory text. There is plenty of literature on this subject
+available.</p></div>
+</div>
+<div class="sect2">
+<h3 id="rf-db">The Decibel (dB) and Decibel-Milliwatt (dBm)</h3>
+<div class="paragraph"><p>RF engineering heavily depends on the Decibel (dB) as a unit to express
+attenuation (losses) or amplification (gain) impacted on radio signals.</p></div>
+<div class="paragraph"><p>The dB is a logarithmic unit, it is used to express the ratio of two
+values of physical quantity. You can thus not express an absolute value
+in dB, only relative.</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content"><strong>Relative loss</strong> (cable, connector, duplexer, splitter) <strong>or gain</strong>
+(amplifiers) are power <strong>is expressed in dB</strong>.</td>
+</tr></table>
+</div>
+<div class="paragraph"><p>In order to express an absolute value, you need to use a unit like
+<em>dBm</em>, which is referencing a power of 1 mW (milli-Watt).</p></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content"><strong>Absolute power</strong> like transmitter output power or receiver input
+power <strong>is expressed in dBm</strong>.</td>
+</tr></table>
+</div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<caption class="title">Table 3. Example table of dBm values and their corresponding RF Power</caption>
+<col width="15%" />
+<col width="15%" />
+<col width="70%" />
+<thead>
+<tr>
+<th align="left" valign="top">dBm</th>
+<th align="left" valign="top">RF Power</th>
+<th align="left" valign="top">Comment</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">0</p></td>
+<td align="left" valign="top"><p class="table">1 mW</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">1</p></td>
+<td align="left" valign="top"><p class="table">1.26 mW</p></td>
+<td align="left" valign="top"><p class="table">transmit power of sysmoBTS 1002 when used with <code>max_power_red 22</code></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">3</p></td>
+<td align="left" valign="top"><p class="table">2 mW</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">6</p></td>
+<td align="left" valign="top"><p class="table">4 mW</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">12</p></td>
+<td align="left" valign="top"><p class="table">16 mW</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">12</p></td>
+<td align="left" valign="top"><p class="table">16 mW</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">20</p></td>
+<td align="left" valign="top"><p class="table">100 mW</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">23</p></td>
+<td align="left" valign="top"><p class="table">199 mW</p></td>
+<td align="left" valign="top"><p class="table">Maximum transmit power of indoor sysmoBTS 1002</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">26</p></td>
+<td align="left" valign="top"><p class="table">398 mW</p></td>
+<td align="left" valign="top"><p class="table"></p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">30</p></td>
+<td align="left" valign="top"><p class="table">1 W</p></td>
+<td align="left" valign="top"><p class="table">Maximum transmit power of a MS in 1800/1900 MHz band</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">33</p></td>
+<td align="left" valign="top"><p class="table">2 W</p></td>
+<td align="left" valign="top"><p class="table">Maximum transmit power of a MS in 850/900 MHz band</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">37</p></td>
+<td align="left" valign="top"><p class="table">5 W</p></td>
+<td align="left" valign="top"><p class="table">Maximum transmit power of 1 TRX in sysmoBTS 2050</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">40</p></td>
+<td align="left" valign="top"><p class="table">10 W</p></td>
+<td align="left" valign="top"><p class="table">Maximum transmit power of sysmoBTS 1100</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="rf-gsm-bands">GSM Frequency Bands</h3>
+<div class="paragraph"><p>GSM can operate in a variety of frequency bands. However,
+internationally only the following four bands have been deployed in
+actual networks:</p></div>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<caption class="title">Table 4. Table of GSM Frequency Bands</caption>
+<col width="25%" />
+<col width="25%" />
+<col width="25%" />
+<col width="25%" />
+<thead>
+<tr>
+<th align="left" valign="top">Name</th>
+<th align="left" valign="top">Uplink Band</th>
+<th align="left" valign="top">Downlink Band</th>
+<th align="left" valign="top">ARFCN Range</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">GSM 850</p></td>
+<td align="left" valign="top"><p class="table">824 MHz .. 849 MHz</p></td>
+<td align="left" valign="top"><p class="table">869 MHz .. 894 MHz</p></td>
+<td align="left" valign="top"><p class="table">128 .. 251</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">E-GSM 900</p></td>
+<td align="left" valign="top"><p class="table">880 MHz .. 915 MHz</p></td>
+<td align="left" valign="top"><p class="table">925 MHz .. 960 MHz</p></td>
+<td align="left" valign="top"><p class="table">0 .. 124, 975 .. 1023</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">DCS 1800</p></td>
+<td align="left" valign="top"><p class="table">1710 MHz .. 1785 MHz</p></td>
+<td align="left" valign="top"><p class="table">1805 MHz .. 1880 MHz</p></td>
+<td align="left" valign="top"><p class="table">512 .. 885</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">PCS 1900</p></td>
+<td align="left" valign="top"><p class="table">1850 MHz .. 1910 MHz</p></td>
+<td align="left" valign="top"><p class="table">1930 MHz .. 1990 MHz</p></td>
+<td align="left" valign="top"><p class="table">512 .. 810</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_the_end">The End</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Questions?</p></div>
+</div>
+</div>
+</body>
+</html>
diff --git a/2017/roadmap-osmocon2017/roadmap.html b/2017/roadmap-osmocon2017/roadmap.html new file mode 100644 index 0000000..c1950f6 --- /dev/null +++ b/2017/roadmap-osmocon2017/roadmap.html @@ -0,0 +1,4448 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Osmocom Callular Infrastructure Roadmap</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="copyright" content="Copyright © Harald Welte (License: CC-BY-SA)" />
+<meta name="generator" content="AsciiDoc 8.6.9" />
+<style type="text/css">
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
+}
+
+body {
+ margin: 1em 5% 1em 5%;
+}
+
+a {
+ color: blue;
+ text-decoration: underline;
+}
+a:visited {
+ color: fuchsia;
+}
+
+em {
+ font-style: italic;
+ color: navy;
+}
+
+strong {
+ font-weight: bold;
+ color: #083194;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #527bbd;
+ margin-top: 1.2em;
+ margin-bottom: 0.5em;
+ line-height: 1.3;
+}
+
+h1, h2, h3 {
+ border-bottom: 2px solid silver;
+}
+h2 {
+ padding-top: 0.5em;
+}
+h3 {
+ float: left;
+}
+h3 + * {
+ clear: left;
+}
+h5 {
+ font-size: 1.0em;
+}
+
+div.sectionbody {
+ margin-left: 0;
+}
+
+hr {
+ border: 1px solid silver;
+}
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+ul, ol, li > p {
+ margin-top: 0;
+}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
+
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
+ padding: 0;
+ margin: 0;
+}
+pre {
+ white-space: pre-wrap;
+}
+
+#author {
+ color: #527bbd;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+#email {
+}
+#revnumber, #revdate, #revremark {
+}
+
+#footer {
+ font-size: small;
+ border-top: 2px solid silver;
+ padding-top: 0.5em;
+ margin-top: 4.0em;
+}
+#footer-text {
+ float: left;
+ padding-bottom: 0.5em;
+}
+#footer-badges {
+ float: right;
+ padding-bottom: 0.5em;
+}
+
+#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.admonitionblock {
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
+}
+
+div.content { /* Block element content. */
+ padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+ color: #527bbd;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 1.0em;
+ margin-bottom: 0.5em;
+}
+div.title + * {
+ margin-top: 0;
+}
+
+td div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content + div.title {
+ margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+ background: #ffffee;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
+ padding: 0.5em;
+}
+
+div.listingblock > div.content {
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
+ padding: 0.5em;
+}
+
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
+ margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
+}
+
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
+div.verseblock + div.attribution {
+ text-align: left;
+}
+
+div.admonitionblock .icon {
+ vertical-align: top;
+ font-size: 1.1em;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #527bbd;
+ padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+ padding-left: 0.5em;
+ border-left: 3px solid #dddddd;
+}
+
+div.exampleblock > div.content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+div.imageblock div.content { padding-left: 0; }
+span.image img { border-style: none; vertical-align: text-bottom; }
+a.image:visited { color: white; }
+
+dl {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+dt {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ font-style: normal;
+ color: navy;
+}
+dd > *:first-child {
+ margin-top: 0.1em;
+}
+
+ul, ol {
+ list-style-position: outside;
+}
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
+
+tfoot {
+ font-weight: bold;
+}
+td > div.verse {
+ white-space: pre;
+}
+
+div.hdlist {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+div.hdlist tr {
+ padding-bottom: 15px;
+}
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
+ vertical-align: top;
+ font-style: normal;
+ padding-right: 0.8em;
+ color: navy;
+}
+td.hdlist2 {
+ vertical-align: top;
+}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
+
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
+@media print {
+ #footer-badges { display: none; }
+}
+
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
+ color: #527bbd;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 1.0em;
+ margin-bottom: 0.1em;
+}
+
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.toclevel2 {
+ margin-left: 2em;
+ font-size: 0.9em;
+}
+div.toclevel3 {
+ margin-left: 4em;
+ font-size: 0.9em;
+}
+div.toclevel4 {
+ margin-left: 6em;
+ font-size: 0.9em;
+}
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
+
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+thead, p.tableblock.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
+}
+
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
+}
+
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
+ text-align: right;
+}
+
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
+}
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
+}
+
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
+}
+
+@media print {
+ body.manpage div#toc { display: none; }
+}
+/* slidy.css
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+/*
+ SJR: 2010-09-29: Modified for AsciiDoc slidy backend.
+ Mostly just commented out stuff that is handled by AsciiDoc's CSS files.
+*/
+
+body
+{
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ width: 100%;
+ height: 100%;
+ color: black;
+ background-color: white;
+/*
+ font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
+*/
+ font-size: 14pt;
+}
+
+div.toolbar {
+ position: fixed; z-index: 200;
+ top: auto; bottom: 0; left: 0; right: 0;
+ height: 1.2em; text-align: right;
+ padding-left: 1em;
+ padding-right: 1em;
+ font-size: 60%;
+ color: red;
+ background-color: rgb(240,240,240);
+ border-top: solid 1px rgb(180,180,180);
+}
+
+div.toolbar span.copyright {
+ color: black;
+ margin-left: 0.5em;
+}
+
+div.initial_prompt {
+ position: absolute;
+ z-index: 1000;
+ bottom: 1.2em;
+ width: 90%;
+ background-color: rgb(200,200,200);
+ opacity: 0.35;
+ background-color: rgb(200,200,200, 0.35);
+ cursor: pointer;
+}
+
+div.initial_prompt p.help {
+ text-align: center;
+}
+
+div.initial_prompt p.close {
+ text-align: right;
+ font-style: italic;
+}
+
+div.slidy_toc {
+ position: absolute;
+ z-index: 300;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ overflow: auto;
+ top: auto;
+ right: auto;
+ left: 4em;
+ bottom: 4em;
+ padding: 1em;
+ background: rgb(240,240,240);
+ border-style: solid;
+ border-width: 2px;
+ font-size: 60%;
+}
+
+div.slidy_toc .toc_heading {
+ text-align: center;
+ width: 100%;
+ margin: 0;
+ margin-bottom: 1em;
+ border-bottom-style: solid;
+ border-bottom-color: rgb(180,180,180);
+ border-bottom-width: 1px;
+}
+
+div.slide {
+ z-index: 20;
+ margin: 0 0 0 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ padding-left: 20px;
+ padding-right: 20px;
+ border-width: 0;
+ clear: both;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ line-height: 120%;
+ background-color: transparent;
+}
+
+div.background {
+ display: none;
+}
+
+div.handout {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+div.slide.titlepage {
+ text-align: center;
+}
+
+div.slide.titlepage.h1 {
+ padding-top: 10%;
+}
+
+div.slide h1 {
+ padding-left: 0;
+ padding-right: 20pt;
+ padding-top: 4pt;
+ padding-bottom: 4pt;
+ margin-top: 0;
+ margin-left: 0;
+ margin-right: 60pt;
+ margin-bottom: 0.5em;
+ display: block;
+ font-size: 160%;
+ line-height: 1.2em;
+ background: transparent;
+}
+
+div.toc {
+ position: absolute;
+ top: auto;
+ bottom: 4em;
+ left: 4em;
+ right: auto;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ border: solid thin black;
+ padding: 1em;
+ background: rgb(240,240,240);
+ color: black;
+ z-index: 300;
+ overflow: auto;
+ display: block;
+ visibility: visible;
+}
+
+div.toc-heading {
+ width: 100%;
+ border-bottom: solid 1px rgb(180,180,180);
+ margin-bottom: 1em;
+ text-align: center;
+}
+
+/*
+pre {
+ font-size: 80%;
+ font-weight: bold;
+ line-height: 120%;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ padding-left: 1em;
+ padding-right: 1em;
+ border-style: solid;
+ border-left-width: 1em;
+ border-top-width: thin;
+ border-right-width: thin;
+ border-bottom-width: thin;
+ border-color: #95ABD0;
+ color: #00428C;
+ background-color: #E4E5E7;
+}
+*/
+
+/*
+li pre { margin-left: 0; }
+
+blockquote { font-style: italic }
+
+img { background-color: transparent }
+
+p.copyright { font-size: smaller }
+*/
+
+.center { text-align: center }
+.footnote { font-size: smaller; margin-left: 2em; }
+
+/*
+a img { border-width: 0; border-style: none }
+*/
+
+a:visited { color: navy }
+a:link { color: navy }
+a:hover { color: red; text-decoration: underline }
+a:active { color: red; text-decoration: underline }
+
+a {text-decoration: none}
+.navbar a:link {color: white}
+.navbar a:visited {color: yellow}
+.navbar a:active {color: red}
+.navbar a:hover {color: red}
+
+/*
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+li { margin-left: 0.5em; margin-top: 0.5em; }
+li li { font-size: 85%; font-style: italic }
+li li li { font-size: 85%; font-style: normal }
+*/
+
+div dt
+{
+ margin-left: 0;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ font-weight: bold;
+}
+div dd
+{
+ margin-left: 2em;
+ margin-bottom: 0.5em;
+}
+
+
+/*
+p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
+ margin-left: 1em;
+ margin-right: 1em;
+}
+*/
+
+p.subhead { font-weight: bold; margin-top: 2em; }
+
+.smaller { font-size: smaller }
+.bigger { font-size: 130% }
+
+/*
+td,th { padding: 0.2em }
+*/
+
+ul {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ol {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+
+/*
+ul li {
+ list-style: square;
+ margin: 0.1em 0em 0.6em 0;
+ padding: 0 0 0 0;
+ line-height: 140%;
+}
+
+ol li {
+ margin: 0.1em 0em 0.6em 1.5em;
+ padding: 0 0 0 0px;
+ line-height: 140%;
+ list-style-type: decimal;
+}
+
+li ul li {
+ font-size: 85%;
+ font-style: italic;
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li ul li {
+ font-size: 85%;
+ font-style: normal;
+ list-style-type: circle;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li li ul li {
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+
+li ol li {
+ list-style-type: decimal;
+}
+
+
+li li ol li {
+ list-style-type: decimal;
+}
+*/
+
+/*
+ setting class="outline" on ol or ul makes it behave as an
+ ouline list where blocklevel content in li elements is
+ hidden by default and can be expanded or collapsed with
+ mouse click. Set class="expand" on li to override default
+*/
+
+ol.outline li:hover { cursor: pointer }
+ol.outline li.nofold:hover { cursor: default }
+
+ul.outline li:hover { cursor: pointer }
+ul.outline li.nofold:hover { cursor: default }
+
+ol.outline { list-style:decimal; }
+ol.outline ol { list-style-type:lower-alpha }
+
+ol.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+ul.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+/* for slides with class "title" in table of contents */
+a.titleslide { font-weight: bold; font-style: italic }
+
+/*
+ hide images for work around for save as bug
+ where browsers fail to save images used by CSS
+*/
+img.hidden { display: none; visibility: hidden }
+div.initial_prompt { display: none; visibility: hidden }
+
+ div.slide {
+ visibility: visible;
+ position: inherit;
+ }
+ div.handout {
+ border-top-style: solid;
+ border-top-width: thin;
+ border-top-color: black;
+ }
+
+@media screen {
+ .hidden { display: none; visibility: visible }
+
+ div.slide.hidden { display: block; visibility: visible }
+ div.handout.hidden { display: block; visibility: visible }
+ div.background { display: none; visibility: hidden }
+ body.single_slide div.initial_prompt { display: block; visibility: visible }
+ body.single_slide div.background { display: block; visibility: visible }
+ body.single_slide div.background.hidden { display: none; visibility: hidden }
+ body.single_slide .invisible { visibility: hidden }
+ body.single_slide .hidden { display: none; visibility: hidden }
+ body.single_slide div.slide { position: absolute }
+ body.single_slide div.handout { display: none; visibility: hidden }
+}
+
+@media print {
+ .hidden { display: block; visibility: visible }
+
+/*
+ div.slide pre { font-size: 60%; padding-left: 0.5em; }
+*/
+ div.toolbar { display: none; visibility: hidden; }
+ div.slidy_toc { display: none; visibility: hidden; }
+ div.background { display: none; visibility: hidden; }
+ div.slide { page-break-before: always }
+ /* :first-child isn't reliable for print media */
+ div.slide.first-slide { page-break-before: avoid }
+}
+
+
+/* SJR: AsciiDoc slidy backend tweaks */
+
+ol, ul {
+ margin: 0.8em 1.5em 0.8em 1.8em;
+}
+li > ul, li > ol {
+ margin-top: 0.5em;
+}
+
+.outline > li.folded,
+.outline > li.unfolded {
+ color: #527bbd;
+}
+ul > li{ color: #aaa; }
+ul > li > *, ol > li > * { color: black; }
+
+li {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+/* slidy.js
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+// the slidy object implementation
+var w3c_slidy = {
+ // classify which kind of browser we're running under
+ ns_pos: (typeof window.pageYOffset!='undefined'),
+ khtml: ((navigator.userAgent).indexOf("KHTML") >= 0 ? true : false),
+ opera: ((navigator.userAgent).indexOf("Opera") >= 0 ? true : false),
+ ipad: ((navigator.userAgent).indexOf("iPad") >= 0 ? true : false),
+ iphone: ((navigator.userAgent).indexOf("iPhone") >= 0 ? true : false),
+ ie: (typeof document.all != "undefined" && !this.opera),
+ ie6: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 6") != -1),
+ ie7: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 7") != -1),
+ ie8: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 8") != -1),
+ ie9: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 9") != -1),
+ keyboardless: (this.ipad || this.iphone),
+
+ // are we running as XHTML? (doesn't work on Opera)
+ is_xhtml: /xml/.test(document.contentType),
+
+ slide_number: 0, // integer slide count: 0, 1, 2, ...
+ slide_number_element: null, // element containing slide number
+ slides: [], // set to array of slide div's
+ notes: [], // set to array of handout div's
+ backgrounds: [], // set to array of background div's
+ toolbar: null, // element containing toolbar
+ title: null, // document title
+ last_shown: null, // last incrementally shown item
+ eos: null, // span element for end of slide indicator
+ toc: null, // table of contents
+ outline: null, // outline element with the focus
+ selected_text_len: 0, // length of drag selection on document
+ view_all: 0, // 1 to view all slides + handouts
+ want_toolbar: true, // user preference to show/hide toolbar
+ mouse_click_enabled: true, // enables left click for next slide
+ scroll_hack: 0, // IE work around for position: fixed
+ disable_slide_click: false, // used by clicked anchors
+
+ lang: "en", // updated to language specified by html file
+
+ help_anchor: null, // used for keyboard focus hack in showToolbar()
+ help_page: "http://www.w3.org/Talks/Tools/Slidy2/help/help.html",
+ help_text: "Navigate with mouse click, space bar, Cursor Left/Right, " +
+ "or Pg Up and Pg Dn. Use S and B to change font size.",
+
+ size_index: 0,
+ size_adjustment: 0,
+ sizes: new Array("10pt", "12pt", "14pt", "16pt", "18pt", "20pt",
+ "22pt", "24pt", "26pt", "28pt", "30pt", "32pt"),
+
+ // needed for efficient resizing
+ last_width: 0,
+ last_height: 0,
+
+
+ // Needed for cross browser support for relative width/height on
+ // object elements. The work around is to save width/height attributes
+ // and then to recompute absolute width/height dimensions on resizing
+ objects: [],
+
+ // attach initialiation event handlers
+ set_up: function () {
+ var init = function() { w3c_slidy.init(); };
+ if (typeof window.addEventListener != "undefined")
+ window.addEventListener("load", init, false);
+ else
+ window.attachEvent("onload", init);
+ },
+
+ hide_slides: function () {
+ if (document.body && !w3c_slidy.initialized)
+ document.body.style.visibility = "hidden";
+ else
+ setTimeout(w3c_slidy.hide_slides, 50);
+ },
+
+ // hack to persuade IE to compute correct document height
+ // as needed for simulating fixed positioning of toolbar
+ ie_hack: function () {
+ window.resizeBy(0,-1);
+ window.resizeBy(0, 1);
+ },
+
+ init: function () {
+ //alert("slidy starting test 10");
+ document.body.style.visibility = "visible";
+ w3c_slidy_i18n.init();
+ this.add_toolbar();
+ this.wrap_implicit_slides();
+ this.collect_slides();
+ this.collect_notes();
+ this.collect_backgrounds();
+ this.objects = document.body.getElementsByTagName("object");
+ this.patch_anchors();
+ this.slide_number = this.find_slide_number(location.href);
+ window.offscreenbuffering = true;
+ this.size_adjustment = this.find_size_adjust();
+ this.time_left = this.find_duration();
+ this.hide_image_toolbar(); // suppress IE image toolbar popup
+ this.init_outliner(); // activate fold/unfold support
+ this.title = document.title;
+
+ // work around for opera bug
+ this.is_xhtml = (document.body.tagName == "BODY" ? false : true);
+
+ if (this.slides.length > 0)
+ {
+ var slide = this.slides[this.slide_number];
+
+ if (this.slide_number > 0)
+ {
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ this.set_eos_status(true);
+ }
+ else
+ {
+ this.last_shown = null;
+ this.set_visibility_all_incremental("hidden");
+ this.set_eos_status(!this.next_incremental_item(this.last_shown));
+ }
+
+ this.set_location();
+ this.add_class(this.slides[0], "first-slide");
+ w3c_slidy.show_slide(slide);
+ }
+
+ this.toc = this.table_of_contents();
+
+ this.add_initial_prompt();
+
+ // bind event handlers without interfering with custom page scripts
+ // Tap events behave too weirdly to support clicks reliably on
+ // iPhone and iPad, so exclude these from click handler
+
+ if (!this.keyboardless)
+ this.add_listener(document.body, "click", this.mouse_button_click);
+
+ this.add_listener(document, "keydown", this.key_down);
+ this.add_listener(document, "keypress", this.key_press);
+ this.add_listener(window, "resize", this.resized);
+ this.add_listener(window, "scroll", this.scrolled);
+ this.add_listener(window, "unload", this.unloaded);
+
+ if (!document.body.onclick)
+ document.body.onclick = function () { };
+
+ this.single_slide_view();
+
+ //this.set_location();
+
+ this.resized();
+
+ if (this.ie7)
+ setTimeout(w3c_slidy.ie_hack, 100);
+
+ this.show_toolbar();
+
+ // for back button detection
+ setInterval(function () { w3c_slidy.check_location(); }, 200);
+ w3c_slidy.initialized = true;
+ },
+
+ // create div element with links to each slide
+ table_of_contents: function () {
+ var toc = this.create_element("div");
+ this.add_class(toc, "slidy_toc hidden");
+ //toc.setAttribute("tabindex", "0");
+
+ var heading = this.create_element("div");
+ this.add_class(heading, "toc-heading");
+ heading.innerHTML = "Table of Contents".localize();
+
+ toc.appendChild(heading);
+ var previous = null;
+
+ for (var i = 0; i < this.slides.length; ++i)
+ {
+ var title = this.has_class(this.slides[i], "title");
+ var num = document.createTextNode((i + 1) + ". ");
+
+ toc.appendChild(num);
+
+ var a = this.create_element("a");
+ a.setAttribute("href", "#(" + (i+1) + ")");
+
+ if (title)
+ this.add_class(a, "titleslide");
+
+ var name = document.createTextNode(this.slide_name(i));
+ a.appendChild(name);
+ a.onclick = w3c_slidy.toc_click;
+ a.onkeydown = w3c_slidy.toc_keydown;
+ a.previous = previous;
+
+ if (previous)
+ previous.next = a;
+
+ toc.appendChild(a);
+
+ if (i == 0)
+ toc.first = a;
+
+ if (i < this.slides.length - 1)
+ {
+ var br = this.create_element("br");
+ toc.appendChild(br);
+ }
+
+ previous = a;
+ }
+
+ toc.focus = function () {
+ if (this.first)
+ this.first.focus();
+ }
+
+ toc.onmouseup = w3c_slidy.mouse_button_up;
+
+ toc.onclick = function (e) {
+ e||(e=window.event);
+
+ if (w3c_slidy.selected_text_len <= 0)
+ w3c_slidy.hide_table_of_contents();
+
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ };
+
+ document.body.insertBefore(toc, document.body.firstChild);
+ return toc;
+ },
+
+ is_shown_toc: function () {
+ return !w3c_slidy.has_class(w3c_slidy.toc, "hidden");
+ },
+
+ show_table_of_contents: function () {
+ w3c_slidy.remove_class(w3c_slidy.toc, "hidden");
+ var toc = w3c_slidy.toc;
+ toc.focus();
+
+ if (w3c_slidy.ie7 && w3c_slidy.slide_number == 0)
+ setTimeout(w3c_slidy.ie_hack, 100);
+ },
+
+ hide_table_of_contents: function () {
+ w3c_slidy.add_class(w3c_slidy.toc, "hidden");
+
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ },
+
+ toggle_table_of_contents: function () {
+ if (w3c_slidy.is_shown_toc())
+ w3c_slidy.hide_table_of_contents();
+ else
+ w3c_slidy.show_table_of_contents();
+ },
+
+ // called on clicking toc entry
+ toc_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = w3c_slidy.get_target(e);
+
+ if (target && target.nodeType == 1)
+ {
+ var uri = target.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents(e);
+ if (w3c_slidy.ie7) w3c_slidy.ie_hack();
+ w3c_slidy.stop_propagation(e);
+ return w3c_slidy.cancel(e);
+ },
+
+ // called onkeydown for toc entry
+ toc_keydown: function (event) {
+ var key;
+
+ if (!event)
+ var event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey)
+ return true;
+
+ if (key == 13)
+ {
+ var uri = this.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents();
+
+ if (self.ie7)
+ w3c_slidy.ie_hack();
+
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 40 && this.next)
+ {
+ this.next.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 38 && this.previous)
+ {
+ this.previous.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ return true;
+ },
+
+
+ // ### OBSOLETE ###
+ before_print: function () {
+ this.show_all_slides();
+ this.hide_toolbar();
+ alert("before print");
+ },
+
+ // ### OBSOLETE ###
+ after_print: function () {
+ if (!this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ }
+ alert("after print");
+ },
+
+ // ### OBSOLETE ###
+ print_slides: function () {
+ this.before_print();
+ window.print();
+ this.after_print();
+ },
+
+ // ### OBSOLETE ?? ###
+ toggle_view: function () {
+ if (this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ this.view_all = 0;
+ }
+ else
+ {
+ this.show_all_slides();
+ this.hide_toolbar();
+ this.view_all = 1;
+ }
+ },
+
+ // prepare for printing ### OBSOLETE ###
+ show_all_slides: function () {
+ this.remove_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ },
+
+ // restore after printing ### OBSOLETE ###
+ single_slide_view: function () {
+ this.add_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ },
+
+ // suppress IE's image toolbar pop up
+ hide_image_toolbar: function () {
+ if (!this.ns_pos)
+ {
+ var images = document.getElementsByTagName("IMG");
+
+ for (var i = 0; i < images.length; ++i)
+ images[i].setAttribute("galleryimg", "no");
+ }
+ },
+
+ unloaded: function (e) {
+ //alert("unloaded");
+ },
+
+ // Safari and Konqueror don't yet support getComputedStyle()
+ // and they always reload page when location.href is updated
+ is_KHTML: function () {
+ var agent = navigator.userAgent;
+ return (agent.indexOf("KHTML") >= 0 ? true : false);
+ },
+
+ // find slide name from first h1 element
+ // default to document title + slide number
+ slide_name: function (index) {
+ var name = null;
+ var slide = this.slides[index];
+
+ var heading = this.find_heading(slide);
+
+ if (heading)
+ name = this.extract_text(heading);
+
+ if (!name)
+ name = this.title + "(" + (index + 1) + ")";
+
+ name.replace(/\&/g, "&");
+ name.replace(/\</g, "<");
+ name.replace(/\>/g, ">");
+
+ return name;
+ },
+
+ // find first h1 element in DOM tree
+ find_heading: function (node) {
+ if (!node || node.nodeType != 1)
+ return null;
+
+ if (node.nodeName == "H1" || node.nodeName == "h1")
+ return node;
+
+ var child = node.firstChild;
+
+ while (child)
+ {
+ node = this.find_heading(child);
+
+ if (node)
+ return node;
+
+ child = child.nextSibling;
+ }
+
+ return null;
+ },
+
+ // recursively extract text from DOM tree
+ extract_text: function (node) {
+ if (!node)
+ return "";
+
+ // text nodes
+ if (node.nodeType == 3)
+ return node.nodeValue;
+
+ // elements
+ if (node.nodeType == 1)
+ {
+ node = node.firstChild;
+ var text = "";
+
+ while (node)
+ {
+ text = text + this.extract_text(node);
+ node = node.nextSibling;
+ }
+
+ return text;
+ }
+
+ return "";
+ },
+
+ // find copyright text from meta element
+ find_copyright: function () {
+ var name, content;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "copyright")
+ return content;
+ }
+
+ return null;
+ },
+
+ find_size_adjust: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "font-size-adjustment")
+ return 1 * content;
+ }
+
+ return 1;
+ },
+
+ // <meta name="duration" content="20" /> for 20 minutes
+ find_duration: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "duration")
+ return 60000 * content;
+ }
+
+ return null;
+ },
+
+ replace_by_non_breaking_space: function (str) {
+ for (var i = 0; i < str.length; ++i)
+ str[i] = 160;
+ },
+
+ // ### CHECK ME ### is use of "li" okay for text/html?
+ // for XHTML do we also need to specify namespace?
+ init_outliner: function () {
+ var items = document.getElementsByTagName("li");
+
+ for (var i = 0; i < items.length; ++i)
+ {
+ var target = items[i];
+
+ if (!this.has_class(target.parentNode, "outline"))
+ continue;
+
+ target.onclick = this.outline_click;
+/* ### more work needed for IE6
+ if (!this.ns_pos)
+ {
+ target.onmouseover = this.hover_outline;
+ target.onmouseout = this.unhover_outline;
+ }
+*/
+ if (this.foldable(target))
+ {
+ target.foldable = true;
+ target.onfocus = function () {w3c_slidy.outline = this;};
+ target.onblur = function () {w3c_slidy.outline = null;};
+
+ if (!target.getAttribute("tabindex"))
+ target.setAttribute("tabindex", "0");
+
+ if (this.has_class(target, "expand"))
+ this.unfold(target);
+ else
+ this.fold(target);
+ }
+ else
+ {
+ this.add_class(target, "nofold");
+ target.visible = true;
+ target.foldable = false;
+ }
+ }
+ },
+
+ foldable: function (item) {
+ if (!item || item.nodeType != 1)
+ return false;
+
+ var node = item.firstChild;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node))
+ return true;
+
+ node = node.nextSibling;
+ }
+
+ return false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ fold: function (item) {
+ if (item)
+ {
+ this.remove_class(item, "unfolded");
+ this.add_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.add_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ unfold: function (item) {
+ if (item)
+ {
+ this.add_class(item, "unfolded");
+ this.remove_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.remove_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = true;
+ },
+
+ outline_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var rightclick = false;
+ var target = w3c_slidy.get_target(e);
+
+ while (target && target.visible == undefined)
+ target = target.parentNode;
+
+ if (!target)
+ return true;
+
+ if (e.which)
+ rightclick = (e.which == 3);
+ else if (e.button)
+ rightclick = (e.button == 2);
+
+ if (!rightclick && target.visible != undefined)
+ {
+ if (target.foldable)
+ {
+ if (target.visible)
+ w3c_slidy.fold(target);
+ else
+ w3c_slidy.unfold(target);
+ }
+
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ }
+
+ return false;
+ },
+
+ add_initial_prompt: function () {
+ var prompt = this.create_element("div");
+ prompt.setAttribute("class", "initial_prompt");
+
+ var p1 = this.create_element("p");
+ prompt.appendChild(p1);
+ p1.setAttribute("class", "help");
+
+ if (this.keyboardless)
+ p1.innerHTML = "Tap footer to move to next slide";
+ else
+ p1.innerHTML = "Space or Right Arrow to move to next " +
+ "slide, click help below for more details";
+
+ this.add_listener(prompt, "click", function (e) {
+ document.body.removeChild(prompt);
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ });
+
+ document.body.appendChild(prompt);
+ this.initial_prompt = prompt;
+ setTimeout(function() {document.body.removeChild(prompt);}, 5000);
+ },
+
+ add_toolbar: function () {
+ var counter, page;
+
+ this.toolbar = this.create_element("div");
+ this.toolbar.setAttribute("class", "toolbar");
+
+ // a reasonably behaved browser
+ if (this.ns_pos || !this.ie6)
+ {
+ var right = this.create_element("div");
+ right.setAttribute("style", "float: right; text-align: right");
+
+ counter = this.create_element("span")
+ counter.innerHTML = "slide".localize() + " n/m";
+ right.appendChild(counter);
+ this.toolbar.appendChild(right);
+
+ var left = this.create_element("div");
+ left.setAttribute("style", "text-align: left");
+
+ // global end of slide indicator
+ this.eos = this.create_element("span");
+ this.eos.innerHTML = "* ";
+ left.appendChild(this.eos);
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ left.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ left.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:w3c_slidy.toggle_table_of_contents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ left.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ left.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.className = "copyright";
+ span.innerHTML = copyright;
+ left.appendChild(span);
+ }
+
+ this.toolbar.setAttribute("tabindex", "0");
+ this.toolbar.appendChild(left);
+ }
+ else // IE6 so need to work around its poor CSS support
+ {
+ this.toolbar.style.position = (this.ie7 ? "fixed" : "absolute");
+ this.toolbar.style.zIndex = "200";
+ this.toolbar.style.width = "99.9%";
+ this.toolbar.style.height = "1.2em";
+ this.toolbar.style.top = "auto";
+ this.toolbar.style.bottom = "0";
+ this.toolbar.style.left = "0";
+ this.toolbar.style.right = "0";
+ this.toolbar.style.textAlign = "left";
+ this.toolbar.style.fontSize = "60%";
+ this.toolbar.style.color = "red";
+ this.toolbar.borderWidth = 0;
+ this.toolbar.className = "toolbar";
+ this.toolbar.style.background = "rgb(240,240,240)";
+
+ // would like to have help text left aligned
+ // and page counter right aligned, floating
+ // div's don't work, so instead use nested
+ // absolutely positioned div's.
+
+ var sp = this.create_element("span");
+ sp.innerHTML = " * ";
+ this.toolbar.appendChild(sp);
+ this.eos = sp; // end of slide indicator
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ this.toolbar.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:toggleTableOfContents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ this.toolbar.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.innerHTML = copyright;
+ span.style.color = "black";
+ span.style.marginLeft = "0.5em";
+ this.toolbar.appendChild(span);
+ }
+
+ counter = this.create_element("div")
+ counter.style.position = "absolute";
+ counter.style.width = "auto"; //"20%";
+ counter.style.height = "1.2em";
+ counter.style.top = "auto";
+ counter.style.bottom = 0;
+ counter.style.right = "0";
+ counter.style.textAlign = "right";
+ counter.style.color = "red";
+ counter.style.background = "rgb(240,240,240)";
+
+ counter.innerHTML = "slide".localize() + " n/m";
+ this.toolbar.appendChild(counter);
+ }
+
+ // ensure that click isn't passed through to the page
+ this.toolbar.onclick =
+ function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = e.target;
+
+ if (!target && e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target && target.nodeType == 3)
+ target = target.parentNode;
+
+ w3c_slidy.stop_propagation(e);
+
+ if (target && target.nodeName.toLowerCase() != "a")
+ w3c_slidy.mouse_button_click(e);
+ };
+
+ this.slide_number_element = counter;
+ this.set_eos_status(false);
+ document.body.appendChild(this.toolbar);
+ },
+
+ // wysiwyg editors make it hard to use div elements
+ // e.g. amaya loses the div when you copy and paste
+ // this function wraps div elements around implicit
+ // slides which start with an h1 element and continue
+ // up to the next heading or div element
+ wrap_implicit_slides: function () {
+ var i, heading, node, next, div;
+ var headings = document.getElementsByTagName("h1");
+
+ if (!headings)
+ return;
+
+ for (i = 0; i < headings.length; ++i)
+ {
+ heading = headings[i];
+
+ if (heading.parentNode != document.body)
+ continue;
+
+ node = heading.nextSibling;
+
+ div = document.createElement("div");
+ this.add_class(div, "slide");
+ document.body.replaceChild(div, heading);
+ div.appendChild(heading);
+
+ while (node)
+ {
+ if (node.nodeType == 1 && // an element
+ (node.nodeName == "H1" ||
+ node.nodeName == "h1" ||
+ node.nodeName == "DIV" ||
+ node.nodeName == "div"))
+ break;
+
+ next = node.nextSibling;
+ node = document.body.removeChild(node);
+ div.appendChild(node);
+ node = next;
+ }
+ }
+ },
+
+// return new array of all slides
+ collect_slides: function () {
+ var slides = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "slide"))
+ {
+ // add slide to collection
+ slides[slides.length] = div;
+
+ // hide each slide as it is found
+ this.add_class(div, "hidden");
+
+ // add dummy <br/> at end for scrolling hack
+ var node1 = document.createElement("br");
+ div.appendChild(node1);
+ var node2 = document.createElement("br");
+ div.appendChild(node2);
+ }
+ else if (this.has_class(div, "background"))
+ { // work around for Firefox SVG reload bug
+ // which otherwise replaces 1st SVG graphic with 2nd
+ div.style.display = "block";
+ }
+ }
+
+ this.slides = slides;
+ },
+
+ // return new array of all <div class="handout">
+ collect_notes: function () {
+ var notes = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "handout"))
+ {
+ // add note to collection
+ notes[notes.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.notes = notes;
+ },
+
+ // return new array of all <div class="background">
+ // including named backgrounds e.g. class="background titlepage"
+ collect_backgrounds: function () {
+ var backgrounds = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "background"))
+ {
+ // add background to collection
+ backgrounds[backgrounds.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.backgrounds = backgrounds;
+ },
+
+ // set click handlers on all anchors
+ patch_anchors: function () {
+ var self = w3c_slidy;
+ var handler = function (event) {
+ // compare this.href with location.href
+ // for link to another slide in this doc
+
+ if (self.page_address(this.href) == self.page_address(location.href))
+ {
+ // yes, so find new slide number
+ var newslidenum = self.find_slide_number(this.href);
+
+ if (newslidenum != self.slide_number)
+ {
+ var slide = self.slides[self.slide_number];
+ self.hide_slide(slide);
+ self.slide_number = newslidenum;
+ slide = self.slides[self.slide_number];
+ self.show_slide(slide);
+ self.set_location();
+ }
+ }
+ else if (this.target == null)
+ location.href = this.href;
+
+ this.blur();
+ self.disable_slide_click = true;
+ };
+
+ var anchors = document.body.getElementsByTagName("a");
+
+ for (var i = 0; i < anchors.length; ++i)
+ {
+ if (window.addEventListener)
+ anchors[i].addEventListener("click", handler, false);
+ else
+ anchors[i].attachEvent("onclick", handler);
+ }
+ },
+
+ // ### CHECK ME ### see which functions are invoked via setTimeout
+ // either directly or indirectly for use of w3c_slidy vs this
+ show_slide_number: function () {
+ var timer = w3c_slidy.get_timer();
+ w3c_slidy.slide_number_element.innerHTML = timer + "slide".localize() + " " +
+ (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length;
+ },
+
+ // every 200mS check if the location has been changed as a
+ // result of the user activating the Back button/menu item
+ // doesn't work for Opera < 9.5
+ check_location: function () {
+ var hash = location.hash;
+
+ if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#"))
+ w3c_slidy.goto_slide(0);
+ else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")")
+ {
+ var num = parseInt(location.hash.substr(2));
+
+ if (!isNaN(num))
+ w3c_slidy.goto_slide(num-1);
+ }
+
+ if (w3c_slidy.time_left && w3c_slidy.slide_number > 0)
+ {
+ w3c_slidy.show_slide_number();
+
+ if (w3c_slidy.time_left > 0)
+ w3c_slidy.time_left -= 200;
+ }
+ },
+
+ get_timer: function () {
+ var timer = "";
+ if (w3c_slidy.time_left)
+ {
+ var mins, secs;
+ secs = Math.floor(w3c_slidy.time_left/1000);
+ mins = Math.floor(secs / 60);
+ secs = secs % 60;
+ timer = (mins ? mins+"m" : "") + secs + "s ";
+ }
+
+ return timer;
+ },
+
+ // this doesn't push location onto history stack for IE
+ // for which a hidden iframe hack is needed: load page into
+ // the iframe with script that set's parent's location.hash
+ // but that won't work for standalone use unless we can
+ // create the page dynamically via a javascript: URL
+ set_location: function () {
+ var uri = w3c_slidy.page_address(location.href);
+ var hash = "#(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (w3c_slidy.slide_number >= 0)
+ uri = uri + hash;
+
+ if (w3c_slidy.ie && !w3c_slidy.ie8)
+ w3c_slidy.push_hash(hash);
+
+ if (uri != location.href) // && !khtml
+ location.href = uri;
+
+ if (this.khtml)
+ hash = "(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (!this.ie && location.hash != hash && location.hash != "")
+ location.hash = hash;
+
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide_number();
+ },
+
+ page_address: function (uri) {
+ var i = uri.indexOf("#");
+
+ if (i < 0)
+ i = uri.indexOf("%23");
+
+ // check if anchor is entire page
+
+ if (i < 0)
+ return uri; // yes
+
+ return uri.substr(0, i);
+ },
+
+ // only used for IE6 and IE7
+ on_frame_loaded: function (hash) {
+ location.hash = hash;
+ var uri = w3c_slidy.page_address(location.href);
+ location.href = uri + hash;
+ },
+
+ // history hack with thanks to Bertrand Le Roy
+ push_hash: function (hash) {
+ if (hash == "") hash = "#(1)";
+ window.location.hash = hash;
+
+ var doc = document.getElementById("historyFrame").contentWindow.document;
+ doc.open("javascript:'<html></html>'");
+ // PWL modified this string literal to break the close script tag
+ // which otherwise gets parsed when incorporated
+ doc.write("<html><head><script type=\"text/javascript\">window.parent.w3c_slidy.on_frame_loaded('"+
+ (hash) + "');</" + "script></head><body>hello mum</body></html>");
+ doc.close();
+ },
+
+ // find current slide based upon location
+ // first find target anchor and then look
+ // for associated div element enclosing it
+ // finally map that to slide number
+ find_slide_number: function (uri) {
+ // first get anchor from page location
+
+ var i = uri.indexOf("#");
+
+ // check if anchor is entire page
+ if (i < 0)
+ return 0; // yes
+
+ var anchor = unescape(uri.substr(i+1));
+
+ // now use anchor as XML ID to find target
+ var target = document.getElementById(anchor);
+
+ if (!target)
+ {
+ // does anchor look like "(2)" for slide 2 ??
+ // where first slide is (1)
+ var re = /\((\d)+\)/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // accept [2] for backwards compatibility
+ re = /\[(\d)+\]/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // oh dear unknown anchor
+ return 0;
+ }
+
+ // search for enclosing slide
+
+ while (true)
+ {
+ // browser coerces html elements to uppercase!
+ if (target.nodeName.toLowerCase() == "div" &&
+ this.has_class(target, "slide"))
+ {
+ // found the slide element
+ break;
+ }
+
+ // otherwise try parent element if any
+
+ target = target.parentNode;
+
+ if (!target)
+ {
+ return 0; // no luck!
+ }
+ };
+
+ for (i = 0; i < slides.length; ++i)
+ {
+ if (slides[i] == target)
+ return i; // success
+ }
+
+ // oh dear still no luck
+ return 0;
+ },
+
+ previous_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null)
+ {
+ w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown);
+ w3c_slidy.set_eos_status(false);
+ }
+ else if (w3c_slidy.slide_number > 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_location();
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ next_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide, last = w3c_slidy.last_shown;
+
+ if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1)
+ w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown);
+
+ if ((!incremental || w3c_slidy.last_shown == null) &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number + 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+ else if (!w3c_slidy.last_shown)
+ {
+ if (last && incremental)
+ w3c_slidy.last_shown = last;
+ }
+
+ w3c_slidy.set_location();
+
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ // to first slide with nothing revealed
+ // i.e. state at start of presentation
+ first_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if (w3c_slidy.slide_number != 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = 0;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_eos_status(
+ !w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.set_location();
+ }
+ },
+
+ // goto last slide with everything revealed
+ // i.e. state at end of presentation
+ last_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ w3c_slidy.last_shown = null; //revealNextItem(lastShown);
+
+ if (w3c_slidy.last_shown == null &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.slides.length - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+
+ w3c_slidy.show_slide(slide);
+ }
+ else
+ {
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ }
+
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.set_location();
+ }
+ },
+
+
+ // ### check this and consider add/remove class
+ set_eos_status: function (state) {
+ if (this.eos)
+ this.eos.style.color = (state ? "rgb(240,240,240)" : "red");
+ },
+
+ // first slide is 0
+ goto_slide: function (num) {
+ //alert("going to slide " + (num+1));
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = num;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide(slide);
+ w3c_slidy.show_slide_number();
+ },
+
+
+ show_slide: function (slide) {
+ this.sync_background(slide);
+ window.scrollTo(0,0);
+ this.remove_class(slide, "hidden");
+ },
+
+ hide_slide: function (slide) {
+ this.add_class(slide, "hidden");
+ },
+
+ // show just the backgrounds pertinent to this slide
+ // when slide background-color is transparent
+ // this should now work with rgba color values
+ sync_background: function (slide) {
+ var background;
+ var bgColor;
+
+ if (slide.currentStyle)
+ bgColor = slide.currentStyle["backgroundColor"];
+ else if (document.defaultView)
+ {
+ var styles = document.defaultView.getComputedStyle(slide,null);
+
+ if (styles)
+ bgColor = styles.getPropertyValue("background-color");
+ else // broken implementation probably due Safari or Konqueror
+ {
+ //alert("defective implementation of getComputedStyle()");
+ bgColor = "transparent";
+ }
+ }
+ else
+ bgColor == "transparent";
+
+ if (bgColor == "transparent" ||
+ bgColor.indexOf("rgba") >= 0 ||
+ bgColor.indexOf("opacity") >= 0)
+ {
+ var slideClass = this.get_class_list(slide);
+
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+
+ var bgClass = this.get_class_list(background);
+
+ if (this.matching_background(slideClass, bgClass))
+ this.remove_class(background, "hidden");
+ else
+ this.add_class(background, "hidden");
+ }
+ }
+ else // forcibly hide all backgrounds
+ this.hide_backgrounds();
+ },
+
+ hide_backgrounds: function () {
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+ this.add_class(background, "hidden");
+ }
+ },
+
+ // compare classes for slide and background
+ matching_background: function (slideClass, bgClass) {
+ var i, count, pattern, result;
+
+ // define pattern as regular expression
+ pattern = /\w+/g;
+
+ // check background class names
+ result = bgClass.match(pattern);
+
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (result[i] == "background")
+ continue;
+
+ ++count;
+ }
+
+ if (count == 0) // default match
+ return true;
+
+ // check for matches and place result in array
+ result = slideClass.match(pattern);
+
+ // now check if desired name is present for background
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (this.has_token(bgClass, result[i]))
+ return true;
+ }
+
+ return false;
+ },
+
+ resized: function () {
+ var width = 0;
+
+ if ( typeof( window.innerWidth ) == 'number' )
+ width = window.innerWidth; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientWidth)
+ width = document.documentElement.clientWidth; // IE6
+ else if (document.body && document.body.clientWidth)
+ width = document.body.clientWidth; // IE4
+
+ var height = 0;
+
+ if ( typeof( window.innerHeight ) == 'number' )
+ height = window.innerHeight; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientHeight)
+ height = document.documentElement.clientHeight; // IE6
+ else if (document.body && document.body.clientHeight)
+ height = document.body.clientHeight; // IE4
+
+ if (height && (width/height > 1.05*1024/768))
+ {
+ width = height * 1024.0/768;
+ }
+
+ // IE fires onresize even when only font size is changed!
+ // so we do a check to avoid blocking < and > actions
+ if (width != w3c_slidy.last_width || height != w3c_slidy.last_height)
+ {
+ if (width >= 1100)
+ w3c_slidy.size_index = 5; // 4
+ else if (width >= 1000)
+ w3c_slidy.size_index = 4; // 3
+ else if (width >= 800)
+ w3c_slidy.size_index = 3; // 2
+ else if (width >= 600)
+ w3c_slidy.size_index = 2; // 1
+ else if (width)
+ w3c_slidy.size_index = 0;
+
+ // add in font size adjustment from meta element e.g.
+ // <meta name="font-size-adjustment" content="-2" />
+ // useful when slides have too much content ;-)
+
+ if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment &&
+ w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length)
+ w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment;
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ w3c_slidy.adjust_object_dimensions(width, height);
+
+ if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index])
+ {
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ }
+
+ w3c_slidy.last_width = width;
+ w3c_slidy.last_height = height;
+
+ // force reflow to work around Mozilla bug
+ if (w3c_slidy.ns_pos)
+ {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ }
+
+ // force correct positioning of toolbar
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ scrolled: function () {
+ if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset();
+ // hide toolbar
+ w3c_slidy.toolbar.style.display = "none";
+
+ // make it reappear later
+ if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all)
+ {
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000);
+ w3c_slidy.scrollhack = 1;
+ }
+ }
+ },
+
+ hide_toolbar: function () {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden");
+ window.focus();
+ },
+
+ // used to ensure IE refreshes toolbar in correct position
+ refresh_toolbar: function (interval) {
+ if (!w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hide_toolbar();
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, interval);
+ }
+ },
+
+ // restores toolbar after short delay
+ show_toolbar: function () {
+ if (w3c_slidy.want_toolbar)
+ {
+ w3c_slidy.toolbar.style.display = "block";
+
+ if (!w3c_slidy.ns_pos)
+ {
+ // adjust position to allow for scrolling
+ var xoffset = w3c_slidy.scroll_x_offset();
+ w3c_slidy.toolbar.style.left = xoffset;
+ w3c_slidy.toolbar.style.right = xoffset;
+
+ // determine vertical scroll offset
+ //var yoffset = scrollYOffset();
+
+ // bottom is doc height - window height - scroll offset
+ //var bottom = documentHeight() - lastHeight - yoffset
+
+ //if (yoffset > 0 || documentHeight() > lastHeight)
+ // bottom += 16; // allow for height of scrollbar
+
+ w3c_slidy.toolbar.style.bottom = 0; //bottom;
+ }
+
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden");
+ }
+
+ w3c_slidy.scrollhack = 0;
+
+
+ // set the keyboard focus to the help link on the
+ // toolbar to ensure that document has the focus
+ // IE doesn't always work with window.focus()
+ // and this hack has benefit of Enter for help
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ },
+
+// invoked via F key
+ toggle_toolbar: function () {
+ if (!w3c_slidy.view_all)
+ {
+ if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden"))
+ {
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 1;
+ }
+ else
+ {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 0;
+ }
+ }
+ },
+
+ scroll_x_offset: function () {
+ if (window.pageXOffset)
+ return self.pageXOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollLeft)
+ return document.documentElement.scrollLeft;
+
+ if (document.body)
+ return document.body.scrollLeft;
+
+ return 0;
+ },
+
+ scroll_y_offset: function () {
+ if (window.pageYOffset)
+ return self.pageYOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollTop)
+ return document.documentElement.scrollTop;
+
+ if (document.body)
+ return document.body.scrollTop;
+
+ return 0;
+ },
+
+ // looking for a way to determine height of slide content
+ // the slide itself is set to the height of the window
+ optimize_font_size: function () {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ //var dh = documentHeight(); //getDocHeight(document);
+ var dh = slide.scrollHeight;
+ var wh = getWindowHeight();
+ var u = 100 * dh / wh;
+
+ alert("window utilization = " + u + "% (doc "
+ + dh + " win " + wh + ")");
+ },
+
+ // from document object
+ get_doc_height: function (doc) {
+ if (!doc)
+ doc = document;
+
+ if (doc && doc.body && doc.body.offsetHeight)
+ return doc.body.offsetHeight; // ns/gecko syntax
+
+ if (doc && doc.body && doc.body.scrollHeight)
+ return doc.body.scrollHeight;
+
+ alert("couldn't determine document height");
+ },
+
+ get_window_height: function () {
+ if ( typeof( window.innerHeight ) == 'number' )
+ return window.innerHeight; // Non IE browser
+
+ if (document.documentElement && document.documentElement.clientHeight)
+ return document.documentElement.clientHeight; // IE6
+
+ if (document.body && document.body.clientHeight)
+ return document.body.clientHeight; // IE4
+ },
+
+ document_height: function () {
+ var sh, oh;
+
+ sh = document.body.scrollHeight;
+ oh = document.body.offsetHeight;
+
+ if (sh && oh)
+ {
+ return (sh > oh ? sh : oh);
+ }
+
+ // no idea!
+ return 0;
+ },
+
+ smaller: function () {
+ if (w3c_slidy.size_index > 0)
+ {
+ --w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ bigger: function () {
+ if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1)
+ {
+ ++w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ // with thanks to Ivan Herman for the suggestion
+ adjust_object_dimensions: function (width, height) {
+ for( var i = 0; i < w3c_slidy.objects.length; i++ )
+ {
+ var obj = this.objects[i];
+ var mimeType = obj.getAttribute("type");
+
+ if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash")
+ {
+ if ( !obj.initialWidth )
+ obj.initialWidth = obj.getAttribute("width");
+
+ if ( !obj.initialHeight )
+ obj.initialHeight = obj.getAttribute("height");
+
+ if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" )
+ {
+ var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1));
+ var newW = width * (w/100.0);
+ obj.setAttribute("width",newW);
+ }
+
+ if ( obj.initialHeight &&
+ obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" )
+ {
+ var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1));
+ var newH = height * (h/100.0);
+ obj.setAttribute("height", newH);
+ }
+ }
+ }
+ },
+
+ // needed for Opera to inhibit default behavior
+ // since Opera delivers keyPress even if keyDown
+ // was cancelled
+ key_press: function (event) {
+ if (!event)
+ event = window.event;
+
+ if (!w3c_slidy.key_wanted)
+ return w3c_slidy.cancel(event);
+
+ return true;
+ },
+
+ // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
+ key_down: function (event) {
+ var key;
+
+ w3c_slidy.key_wanted = true;
+
+ if (!event)
+ event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey || event.metaKey)
+ return true;
+
+ // dismiss table of contents if visible
+ if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40)
+ {
+ w3c_slidy.hide_table_of_contents();
+
+ if (key == 27 || key == 84 || key == 67)
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 34) // Page Down
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.next_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 33) // Page Up
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.previous_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 32) // space bar
+ {
+ w3c_slidy.next_slide(true);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 37) // Left arrow
+ {
+ w3c_slidy.previous_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 36) // Home
+ {
+ w3c_slidy.first_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 35) // End
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 39) // Right arrow
+ {
+ w3c_slidy.next_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 13) // Enter
+ {
+ if (w3c_slidy.outline)
+ {
+ if (w3c_slidy.outline.visible)
+ w3c_slidy.fold(w3c_slidy.outline);
+ else
+ w3c_slidy.unfold(w3c_slidy.outline);
+
+ return w3c_slidy.cancel(event);
+ }
+ }
+ else if (key == 188) // < for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 190) // > for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 189 || key == 109) // - for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 187 || key == 191 || key == 107) // = + for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 83) // S for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 66) // B for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 90) // Z for last slide
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 70) // F for toggle toolbar
+ {
+ w3c_slidy.toggle_toolbar();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 65) // A for toggle view single/all slides
+ {
+ w3c_slidy.toggle_view();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 75) // toggle action of left click for next page
+ {
+ w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled;
+ var alert_msg = (w3c_slidy.mouse_click_enabled ?
+ "enabled" : "disabled") + " mouse click advance";
+
+ alert(alert_msg.localize());
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 84 || key == 67) // T or C for table of contents
+ {
+ if (w3c_slidy.toc)
+ w3c_slidy.toggle_table_of_contents();
+
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 72) // H for help
+ {
+ window.location = w3c_slidy.help_page;
+ return w3c_slidy.cancel(event);
+ }
+ //else alert("key code is "+ key);
+
+ return true;
+ },
+
+ // safe for both text/html and application/xhtml+xml
+ create_element: function (name) {
+ if (this.xhtml && (typeof document.createElementNS != 'undefined'))
+ return document.createElementNS("http://www.w3.org/1999/xhtml", name)
+
+ return document.createElement(name);
+ },
+
+ get_element_style: function (elem, IEStyleProp, CSSStyleProp) {
+ if (elem.currentStyle)
+ {
+ return elem.currentStyle[IEStyleProp];
+ }
+ else if (window.getComputedStyle)
+ {
+ var compStyle = window.getComputedStyle(elem, "");
+ return compStyle.getPropertyValue(CSSStyleProp);
+ }
+ return "";
+ },
+
+ // the string str is a whitespace separated list of tokens
+ // test if str contains a particular token, e.g. "slide"
+ has_token: function (str, token) {
+ if (str)
+ {
+ // define pattern as regular expression
+ var pattern = /\w+/g;
+
+ // check for matches
+ // place result in array
+ var result = str.match(pattern);
+
+ // now check if desired token is present
+ for (var i = 0; i < result.length; i++)
+ {
+ if (result[i] == token)
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ get_class_list: function (element) {
+ if (typeof element.className != 'undefined')
+ return element.className;
+
+ return element.getAttribute("class");
+ },
+
+ has_class: function (element, name) {
+ if (element.nodeType != 1)
+ return false;
+
+ var regexp = new RegExp("(^| )" + name + "\W*");
+
+ if (typeof element.className != 'undefined')
+ return regexp.test(element.className);
+
+ return regexp.test(element.getAttribute("class"));
+ },
+
+ remove_class: function (element, name) {
+ var regexp = new RegExp("(^| )" + name + "\W*");
+ var clsval = "";
+
+ if (typeof element.className != 'undefined')
+ {
+ clsval = element.className;
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.className = clsval;
+ }
+ }
+ else
+ {
+ clsval = element.getAttribute("class");
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ add_class: function (element, name) {
+ if (!this.has_class(element, name))
+ {
+ if (typeof element.className != 'undefined')
+ element.className += " " + name;
+ else
+ {
+ var clsval = element.getAttribute("class");
+ clsval = clsval ? clsval + " " + name : name;
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ // HTML elements that can be used with class="incremental"
+ // note that you can also put the class on containers like
+ // up, ol, dl, and div to make their contents appear
+ // incrementally. Upper case is used since this is what
+ // browsers report for HTML node names (text/html).
+ incremental_elements: null,
+ okay_for_incremental: function (name) {
+ if (!this.incremental_elements)
+ {
+ var inclist = new Array();
+ inclist["p"] = true;
+ inclist["pre"] = true;
+ inclist["li"] = true;
+ inclist["blockquote"] = true;
+ inclist["dt"] = true;
+ inclist["dd"] = true;
+ inclist["h2"] = true;
+ inclist["h3"] = true;
+ inclist["h4"] = true;
+ inclist["h5"] = true;
+ inclist["h6"] = true;
+ inclist["span"] = true;
+ inclist["address"] = true;
+ inclist["table"] = true;
+ inclist["tr"] = true;
+ inclist["th"] = true;
+ inclist["td"] = true;
+ inclist["img"] = true;
+ inclist["object"] = true;
+ this.incremental_elements = inclist;
+ }
+ return this.incremental_elements[name.toLowerCase()];
+ },
+
+ next_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.next_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1) // ELEMENT
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ previous_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.previous_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1)
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ // set visibility for all elements on current slide with
+ // a parent element with attribute class="incremental"
+ set_visibility_all_incremental: function (value) {
+ var node = this.next_incremental_item(null);
+
+ if (value == "hidden")
+ {
+ while (node)
+ {
+ w3c_slidy.add_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ else // value == "visible"
+ {
+ while (node)
+ {
+ w3c_slidy.remove_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ },
+
+ // reveal the next hidden item on the slide
+ // node is null or the node that was last revealed
+ reveal_next_item: function (node) {
+ node = w3c_slidy.next_incremental_item(node);
+
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.remove_class(node, "invisible");
+
+ return node;
+ },
+
+ // exact inverse of revealNextItem(node)
+ hide_previous_item: function (node) {
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.add_class(node, "invisible");
+
+ return this.previous_incremental_item(node);
+ },
+
+ // left to right traversal of root's content
+ next_node: function (root, node) {
+ if (node == null)
+ return root.firstChild;
+
+ if (node.firstChild)
+ return node.firstChild;
+
+ if (node.nextSibling)
+ return node.nextSibling;
+
+ for (;;)
+ {
+ node = node.parentNode;
+
+ if (!node || node == root)
+ break;
+
+ if (node && node.nextSibling)
+ return node.nextSibling;
+ }
+
+ return null;
+ },
+
+ // right to left traversal of root's content
+ previous_node: function (root, node) {
+ if (node == null)
+ {
+ node = root.lastChild;
+
+ if (node)
+ {
+ while (node.lastChild)
+ node = node.lastChild;
+ }
+
+ return node;
+ }
+
+ if (node.previousSibling)
+ {
+ node = node.previousSibling;
+
+ while (node.lastChild)
+ node = node.lastChild;
+
+ return node;
+ }
+
+ if (node.parentNode != root)
+ return node.parentNode;
+
+ return null;
+ },
+
+ previous_sibling_element: function (el) {
+ el = el.previousSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.previousSibling;
+
+ return el;
+ },
+
+ next_sibling_element: function (el) {
+ el = el.nextSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.nextSibling;
+
+ return el;
+ },
+
+ first_child_element: function (el) {
+ var node;
+
+ for (node = el.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1)
+ break;
+ }
+
+ return node;
+ },
+
+ first_tag: function (element, tag) {
+ var node;
+
+ if (!this.is_xhtml)
+ tag = tag.toUpperCase();
+
+ for (node = element.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1 && node.nodeName == tag)
+ break;
+ }
+
+ return node;
+ },
+
+ hide_selection: function () {
+ if (window.getSelection) // Firefox, Chromium, Safari, Opera
+ {
+ var selection = window.getSelection();
+
+ if (selection.rangeCount > 0)
+ {
+ var range = selection.getRangeAt(0);
+ range.collapse (false);
+ }
+ }
+ else // Internet Explorer
+ {
+ var textRange = document.selection.createRange ();
+ textRange.collapse (false);
+ }
+ },
+
+ get_selected_text: function () {
+ try
+ {
+ if (window.getSelection)
+ return window.getSelection().toString();
+
+ if (document.getSelection)
+ return document.getSelection().toString();
+
+ if (document.selection)
+ return document.selection.createRange().text;
+ }
+ catch (e)
+ {
+ }
+
+ return "";
+ },
+
+ // make note of length of selected text
+ // as this evaluates to zero in click event
+ mouse_button_up: function (e) {
+ w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length;
+ },
+
+ // right mouse button click is reserved for context menus
+ // it is more reliable to detect rightclick than leftclick
+ mouse_button_click: function (e) {
+ var rightclick = false;
+ var leftclick = false;
+ var middleclick = false;
+ var target;
+
+ if (!e)
+ var e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target.nodeType == 3)
+ target = target.parentNode;
+
+ if (e.which) // all browsers except IE
+ {
+ leftclick = (e.which == 1);
+ middleclick = (e.which == 2);
+ rightclick = (e.which == 3);
+ }
+ else if (e.button)
+ {
+ // Konqueror gives 1 for left, 4 for middle
+ // IE6 gives 0 for left and not 1 as I expected
+
+ if (e.button == 4)
+ middleclick = true;
+
+ // all browsers agree on 2 for right button
+ rightclick = (e.button == 2);
+ }
+ else leftclick = true;
+/*
+ alert("you clicked over a " + target.nodeName + " element\n" +
+ "w3c_slidy.mouse_click_enabled = " + w3c_slidy.mouse_click_enabled + "\n" +
+ "leftclick = " + leftclick + "\n" +
+ "selected text length = " + w3c_slidy.selected_text_len);
+ //alert("selected text length = " + w3c_slidy.selected_text_len);
+*/
+ if (w3c_slidy.selected_text_len > 0)
+ {
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+
+ // dismiss table of contents
+ w3c_slidy.hide_table_of_contents();
+
+ // check if target is something that probably want's clicks
+ // e.g. a, embed, object, input, textarea, select, option
+ var tag = target.nodeName.toLowerCase();
+
+ if (w3c_slidy.mouse_click_enabled && leftclick &&
+ tag != "a" &&
+ tag != "embed" &&
+ tag != "object" &&
+ tag != "video" &&
+ tag != "input" &&
+ tag != "textarea" &&
+ tag != "select" &&
+ tag != "option" &&
+ !target.onclick)
+ {
+ w3c_slidy.next_slide(true);
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+ },
+
+ get_key: function (e)
+ {
+ var key;
+
+ // kludge around NS/IE differences
+ if (typeof window.event != "undefined")
+ key = window.event.keyCode;
+ else if (e.which)
+ key = e.which;
+
+ return key;
+ },
+
+ get_target: function (e) {
+ var target;
+
+ if (!e)
+ e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ if (target.nodeType != 1)
+ target = target.parentNode;
+
+ return target;
+ },
+
+ // does display property provide correct defaults?
+ is_block: function (elem) {
+ var tag = elem.nodeName.toLowerCase();
+
+ return tag == "ol" || tag == "ul" || tag == "p" ||
+ tag == "li" || tag == "table" || tag == "pre" ||
+ tag == "h1" || tag == "h2" || tag == "h3" ||
+ tag == "h4" || tag == "h5" || tag == "h6" ||
+ tag == "blockquote" || tag == "address";
+ },
+
+ add_listener: function (element, event, handler) {
+ if (window.addEventListener)
+ element.addEventListener(event, handler, false);
+ else
+ element.attachEvent("on"+event, handler);
+ },
+
+ // used to prevent event propagation from field controls
+ stop_propagation: function (event) {
+ event = event ? event : window.event;
+ event.cancelBubble = true; // for IE
+
+ if (event.stopPropagation)
+ event.stopPropagation();
+
+ return true;
+ },
+
+ cancel: function (event) {
+ if (event)
+ {
+ event.cancel = true;
+ event.returnValue = false;
+
+ if (event.preventDefault)
+ event.preventDefault();
+ }
+
+ w3c_slidy.key_wanted = false;
+ return false;
+ }
+};
+
+// for each language define an associative array
+// and also the help text which is longer
+
+var w3c_slidy_i18n = {
+ strings_es: {
+ "slide":"pág.",
+ "help?":"Ayuda",
+ "contents?":"Índice",
+ "table of contents":"tabla de contenidos",
+ "Table of Contents":"Tabla de Contenidos",
+ "restart presentation":"Reiniciar presentación",
+ "restart?":"Inicio"
+ },
+ help_es:
+ "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
+ "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
+
+ strings_ca: {
+ "slide":"pàg..",
+ "help?":"Ajuda",
+ "contents?":"Índex",
+ "table of contents":"taula de continguts",
+ "Table of Contents":"Taula de Continguts",
+ "restart presentation":"Reiniciar presentació",
+ "restart?":"Inici"
+ },
+ help_ca:
+ "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " +
+ "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.",
+
+ strings_cs: {
+ "slide":"snímek",
+ "help?":"nápověda",
+ "contents?":"obsah",
+ "table of contents":"obsah prezentace",
+ "Table of Contents":"Obsah prezentace",
+ "restart presentation":"znovu spustit prezentaci",
+ "restart?":"restart"
+ },
+ help_cs:
+ "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " +
+ "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " +
+ "dá zvětšit a zmenšit pomocí kláves B a S.",
+
+ strings_nl: {
+ "slide":"pagina",
+ "help?":"Help?",
+ "contents?":"Inhoud?",
+ "table of contents":"inhoudsopgave",
+ "Table of Contents":"Inhoudsopgave",
+ "restart presentation":"herstart presentatie",
+ "restart?":"Herstart?"
+ },
+ help_nl:
+ "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " +
+ "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.",
+
+ strings_de: {
+ "slide":"Seite",
+ "help?":"Hilfe",
+ "contents?":"Übersicht",
+ "table of contents":"Inhaltsverzeichnis",
+ "Table of Contents":"Inhaltsverzeichnis",
+ "restart presentation":"Präsentation neu starten",
+ "restart?":"Neustart"
+ },
+ help_de:
+ "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " +
+ "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.",
+
+ strings_pl: {
+ "slide":"slajd",
+ "help?":"pomoc?",
+ "contents?":"spis treści?",
+ "table of contents":"spis treści",
+ "Table of Contents":"Spis Treści",
+ "restart presentation":"Restartuj prezentację",
+ "restart?":"restart?"
+ },
+ help_pl:
+ "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" +
+ "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.",
+
+ strings_fr: {
+ "slide":"page",
+ "help?":"Aide",
+ "contents?":"Index",
+ "table of contents":"table des matières",
+ "Table of Contents":"Table des matières",
+ "restart presentation":"Recommencer l'exposé",
+ "restart?":"Début"
+ },
+ help_fr:
+ "Naviguez avec la souris, la barre d'espace, les flèches " +
+ "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " +
+ "les touches S et B pour modifier la taille de la police.",
+
+ strings_hu: {
+ "slide":"oldal",
+ "help?":"segítség",
+ "contents?":"tartalom",
+ "table of contents":"tartalomjegyzék",
+ "Table of Contents":"Tartalomjegyzék",
+ "restart presentation":"bemutató újraindítása",
+ "restart?":"újraindítás"
+ },
+ help_hu:
+ "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " +
+ "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " +
+ "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " +
+ "a szöveg méretét.",
+
+ strings_it: {
+ "slide":"pag.",
+ "help?":"Aiuto",
+ "contents?":"Indice",
+ "table of contents":"indice",
+ "Table of Contents":"Indice",
+ "restart presentation":"Ricominciare la presentazione",
+ "restart?":"Inizio"
+ },
+ help_it:
+ "Navigare con mouse, barra spazio, frecce sinistra/destra o " +
+ "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.",
+
+ strings_el: {
+ "slide":"σελίδα",
+ "help?":"βοήθεια;",
+ "contents?":"περιεχόμενα;",
+ "table of contents":"πίνακας περιεχομένων",
+ "Table of Contents":"Πίνακας Περιεχομένων",
+ "restart presentation":"επανεκκίνηση παρουσίασης",
+ "restart?":"επανεκκίνηση;"
+ },
+ help_el:
+ "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " +
+ "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " +
+ "το μέγεθος της γραμματοσειράς.",
+
+ strings_ja: {
+ "slide":"スライド",
+ "help?":"ヘルプ",
+ "contents?":"目次",
+ "table of contents":"目次を表示",
+ "Table of Contents":"目次",
+ "restart presentation":"最初から再生",
+ "restart?":"最初から"
+ },
+ help_ja:
+ "マウス左クリック ・ スペース ・ 左右キー " +
+ "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更",
+
+ strings_zh: {
+ "slide":"幻灯片",
+ "help?":"帮助?",
+ "contents?":"内容?",
+ "table of contents":"目录",
+ "Table of Contents":"目录",
+ "restart presentation":"重新启动展示",
+ "restart?":"重新启动?"
+ },
+ help_zh:
+ "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " +
+ "用 S, B 改变字体大小.",
+
+ strings_ru: {
+ "slide":"слайд",
+ "help?":"помощь?",
+ "contents?":"содержание?",
+ "table of contents":"оглавление",
+ "Table of Contents":"Оглавление",
+ "restart presentation":"перезапустить презентацию",
+ "restart?":"перезапуск?"
+ },
+ help_ru:
+ "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" +
+ "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.",
+
+ strings_sv: {
+ "slide":"sida",
+ "help?":"hjälp",
+ "contents?":"innehåll",
+ "table of contents":"innehållsförteckning",
+ "Table of Contents":"Innehållsförteckning",
+ "restart presentation":"visa presentationen från början",
+ "restart?":"börja om"
+ },
+ help_sv:
+ "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " +
+ "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " +
+ "Använd tangenterna S och B för att ändra textens storlek.",
+
+// each such language array is declared in the localize array
+// which is set on string prototype and used as in "foo".localize();
+ localize: {
+ "es":this.strings_es,
+ "ca":this.strings_ca,
+ "cs":this.strings_cs,
+ "nl":this.strings_nl,
+ "de":this.strings_de,
+ "pl":this.strings_pl,
+ "fr":this.strings_fr,
+ "hu":this.strings_hu,
+ "it":this.strings_it,
+ "el":this.strings_el,
+ "jp":this.strings_ja,
+ "zh":this.strings_zh,
+ "ru":this.strings_ru,
+ "sv":this.strings_sv
+ },
+
+ init: function () {
+ var i18n = w3c_slidy_i18n;
+ var help_text = w3c_slidy.help_text;
+ i18n.strings_es[help_text] = i18n.help_es;
+ i18n.strings_ca[help_text] = i18n.help_ca;
+ i18n.strings_cs[help_text] = i18n.help_cs;
+ i18n.strings_nl[help_text] = i18n.help_nl;
+ i18n.strings_de[help_text] = i18n.help_de;
+ i18n.strings_pl[help_text] = i18n.help_pl;
+ i18n.strings_fr[help_text] = i18n.help_fr;
+ i18n.strings_hu[help_text] = i18n.help_hu;
+ i18n.strings_it[help_text] = i18n.help_it;
+ i18n.strings_el[help_text] = i18n.help_el;
+ i18n.strings_ja[help_text] = i18n.help_ja;
+ i18n.strings_zh[help_text] = i18n.help_zh;
+ i18n.strings_ru[help_text] = i18n.help_ru;
+ i18n.strings_sv[help_text] = i18n.help_sv;
+
+ w3c_slidy.lang = document.body.parentNode.getAttribute("lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = "en";
+
+ // add localize method to all strings
+ // for use as in "contents".localize()
+ String.prototype.localize = function() {
+ if (this == "")
+ return this;
+
+ // try full language code, e.g. en-US
+ var s, lookup = w3c_slidy_i18n.localize[w3c_slidy.lang];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+
+ // strip country code suffix, e.g.
+ // try en if undefined for en-US
+ var lg = w3c_slidy.lang.split("-");
+
+ if (lg.length > 1)
+ {
+ lookup = w3c_slidy_i18n.localize[lg[0]];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+ }
+
+ // otherwise string as is
+ return this;
+ };
+ }
+};
+
+// hack for back button behavior
+if (w3c_slidy.ie6 || w3c_slidy.ie7)
+{
+ document.write("<iframe id='historyFrame' " +
+ "src='javascript:\"<html"+"></"+"html>\"' " +
+ "height='1' width='1' " +
+ "style='position:absolute;left:-800px'></iframe>");
+}
+
+// attach event listeners for initialization
+w3c_slidy.set_up();
+
+// hide the slides as soon as body element is available
+// to reduce annoying screen mess before the onload event
+setTimeout(w3c_slidy.hide_slides, 50);
+
+/*]]>*/
+</script>
+</head>
+<body class="article" style="max-width:45em">
+<div id="header" class="slide">
+<h1>Osmocom Callular Infrastructure Roadmap</h1>
+<span id="author">Harald Welte</span><br />
+</div>
+<div class="sect1 slide">
+<h1 id="_disclaimer">Disclaimer</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>People like Dieter, Holger, Daniel and I have invested lots of our
+spare time in the early years. So funding for that came from other
+paid work, and Osmocom projects were a hobby. It was a lot of fun, but
+it’s not a sustainable basis for the scope of the projects at this
+time.</p></div>
+<div class="paragraph"><p>Today, our development is driven by</p></div>
+<ul class="">
+<li>
+<span>
+what people contribute patches for, and/or
+</span>
+</li>
+<li>
+<span>
+what companies and consultants in the project get development
+ contracts for (e.g. sysmocom customers)
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>This means in general that <strong>very little will happen, unless somebody
+commits to putting resources at it!</strong></p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_major_roadmap_areas">Major Roadmap Areas</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Splitting up the NITB
+</span>
+</li>
+<li>
+<span>
+Code Quality
+</span>
+</li>
+<li>
+<span>
+Testing
+</span>
+</li>
+<li>
+<span>
+Integration between 2G and 3G
+</span>
+</li>
+<li>
+<span>
+External Interfaces
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmonitb">OsmoNITB</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+has been at the heart of most Osmocom based cellular networks
+</span>
+</li>
+<li>
+<span>
+is generally doing a good job, but suffers from some issues
+</span>
+</li>
+<li>
+<span>
+NITB includes BSC, but BSC code also used to build OsmoBSC
+</span>
+<ul class="">
+<li>
+<span>
+No way to test OsmoBSC without a proprietary MSC :(
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+NITB includes sqlite3 based HLR
+</span>
+<ul class="">
+<li>
+<span>
+synchronous/blocking access from single-threaded OsmoNITB
+</span>
+</li>
+<li>
+<span>
+sqlite3 (particularly via DBI) scalability issues
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_rip_nitb_long_live_osmomsc">RIP NITB; Long Live OsmoMSC</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+New <strong>OsmoMSC = OsmoNITB - BSC - HLR</strong>
+</span>
+</li>
+<li>
+<span>
+New OsmoHLR (GSUP interface only)
+</span>
+</li>
+<li>
+<span>
+3GPP A-over-IP for OsmoBSC + OsmoMSC
+</span>
+<ul class="">
+<li>
+<span>
+New SCCP+M3UA stack, libosmo-sigtran
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+M3UA based IuCS/IuPS in HNB-GW, MSC, SGSN
+</span>
+<ul class="">
+<li>
+<span>
+used to be SUA, as it was simpler initially
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+Single code base/branch for 2G and 3G
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>→ typical 2G setup will become <strong>OsmoBSC + OsmoMSC + OsmoHLR</strong></p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmostp">OsmoSTP</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Signal Transfer Point, part of libosmo-sccp</p></div>
+<ul class="">
+<li>
+<span>
+M3UA + SUA support
+</span>
+</li>
+<li>
+<span>
+Connectionless and Conenction Oriented SCCP
+</span>
+</li>
+<li>
+<span>
+Used primarily for RAN-CN interface (A, Iu) so far
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmo_fsm_osmo_prim">osmo_fsm + osmo_prim</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+osmo_fsm
+</dt>
+<dd>
+<p>
+structured approach to state machines
+</p>
+</dd>
+<dt class="hdlist1">
+osmo_prim
+</dt>
+<dd>
+<p>
+structured approach towards primitives at SAP between layers
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmo_fsm">osmo_fsm</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Generalized finite state machine (FSM) abstraction</p></div>
+<ul class="">
+<li>
+<span>
+pure C language, no pre-processor / code-generator
+</span>
+</li>
+<li>
+<span>
+description of states, permitted events in a state, permitted
+ output states
+</span>
+</li>
+<li>
+<span>
+buit-in timer support. Default action on expiry: Destroy FSM
+</span>
+</li>
+<li>
+<span>
+parent/children relationship, allows hierarchy of FSMs
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>Much more maintainable and deterministic than the many implicit or
+non-existing state machines in older code</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmo_fsm_so_far">osmo_fsm so far</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Ericsson OM2000 managed objects
+</span>
+</li>
+<li>
+<span>
+Connection-Oriented SCCP
+</span>
+</li>
+<li>
+<span>
+M3UA/SUA ASP + AS state machine
+</span>
+</li>
+<li>
+<span>
+All VLR FSMs (LU, Auth, …) in OsmoMSC
+</span>
+</li>
+<li>
+<span>
+AMR DTX in OsmoBTS
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmo_fsm_candidates">osmo_fsm candidates</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+LAPD + LAPDm code
+</span>
+</li>
+<li>
+<span>
+A-bis OML managed objects
+</span>
+</li>
+<li>
+<span>
+GSM Call Control (maybe even CAMEL-like FSMs?)
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>More osmo_fsm Would greatly improve code quality, testability and
+maintainability</p></div>
+<ul class="">
+<li>
+<span>
+but who wants to invest in that? Any volunteers?
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_testing">Testing</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+unit test coverage of most code is poor, needs attention
+</span>
+<ul class="">
+<li>
+<span>
+coverage of new code much better than old code
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+osmo_fsm state introspection via CTRL enables better testing
+</span>
+</li>
+<li>
+<span>
+end-to-end system testing software: <strong>osmo-gsm-tester</strong>
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmo_gsm_tester">osmo-gsm-tester</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+python language for managing BTSs + Modems
+</span>
+<ul class="">
+<li>
+<span>
+supports different BTS models
+</span>
+</li>
+<li>
+<span>
+can execute suites of test cases on each software version for all BTS models
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+RF cabling between BTSs and Modems to avoid RF interference
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>→ GOAL: Daily functional testing on all supported platforms/configs</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmo_gsm_tester_2">osmo-gsm-tester</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+core python infrastructure working
+</span>
+</li>
+<li>
+<span>
+jenkins integration for testing new builds working
+</span>
+</li>
+<li>
+<span>
+modem hardware being replaced due to poor ofono support for SL8082
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>TODO:</p></div>
+<ul class="">
+<li>
+<span>
+modem integration using better supported hardware
+</span>
+</li>
+<li>
+<span>
+more actual test cases beyond SMS + LU
+</span>
+</li>
+<li>
+<span>
+3G support
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_external_interfaces">External Interfaces</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+<strong>VTY</strong> is a human interface, not intended for consumption by software
+</span>
+<ul class="">
+<li>
+<span>
+text output syntax not guaranteed stable
+</span>
+</li>
+<li>
+<span>
+inefficient
+</span>
+</li>
+<li>
+<span>
+commands get added during development to help developers
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+<strong>CTRL</strong> interface is the programmatic interface
+</span>
+<ul class="">
+<li>
+<span>
+but developers don’t need it during development
+</span>
+</li>
+<li>
+<span>
+all commands so far added due to user request/requirement
+</span>
+<ul class="">
+<li>
+<span>
+let us know what you need exposed!
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+only way to fundamentally change this is to automatically export things without extra effort
+</span>
+</li>
+</ul>
+</li>
+</ul>
+<div class="paragraph"><p>⇒ Roadmap is to put more effort into CTRL completeness</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_grand_unified_config_theory">Grand Unified Config Theory</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Big Wishlist item:</p></div>
+<ul class="">
+<li>
+<span>
+Unified configuration store / MIB with
+</span>
+<ul class="">
+<li>
+<span>
+automatic VTY printer/parser generation
+</span>
+</li>
+<li>
+<span>
+automatic CTRL interface exposure
+</span>
+</li>
+<li>
+<span>
+telnet/VTY process + MIB daemon outside actual applications
+</span>
+</li>
+</ul>
+</li>
+</ul>
+<div class="paragraph"><p>But who will fund this / put resources at it?</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_integration_between_2g_and_3g">Integration between 2G and 3G</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+so far, 2G and 3G live separate to each other
+</span>
+</li>
+<li>
+<span>
+we want integration
+</span>
+<ul class="">
+<li>
+<span>
+cross-advertisement of neighbor cells
+</span>
+</li>
+<li>
+<span>
+inter-RAT mobility
+</span>
+</li>
+<li>
+<span>
+inter-RAT hand-over
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+combined PS + CS attach
+</span>
+</li>
+<li>
+<span>
+SMS over packet switched
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_operation_maintenance">Operation / Maintenance</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+generation of Alarms in BTS + PCU (done)
+</span>
+</li>
+<li>
+<span>
+report via CTRL TRAP as well as A-bis OML (done)
+</span>
+</li>
+<li>
+<span>
+centralized reporting / collections of Alarms (tbd)
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>→ we need to generate more alarms in abnormal situations</p></div>
+<ul class="">
+<li>
+<span>
+generation of more stat, counters / KPIs
+</span>
+<ul class="">
+<li>
+<span>
+lots of work spent in 2016 on this alrady
+</span>
+</li>
+</ul>
+</li>
+</ul>
+<div class="paragraph"><p>→ we need aggregation/interpretation/analysis of that data</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_further_wishlist">Further Wishlist</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+move SMSC out of OsmoMSC
+</span>
+</li>
+<li>
+<span>
+GSUP to MAP gateway
+</span>
+</li>
+<li>
+<span>
+billing interfaces
+</span>
+</li>
+<li>
+<span>
+LTE MME/S-GW-/P-GW
+</span>
+<ul class="">
+<li>
+<span>
+biggest issue is lack of good FOSS asn.1 tools for C
+</span>
+</li>
+<li>
+<span>
+we either have to ditch C, or invest lots of time in tools :/
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_eof">EOF</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>End of File</p></div>
+</div>
+</div>
+</body>
+</html>
diff --git a/2017/running_osmo_gsm-osmocon2017/Gsm_structures.svg b/2017/running_osmo_gsm-osmocon2017/Gsm_structures.svg new file mode 100644 index 0000000..cd68155 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/Gsm_structures.svg @@ -0,0 +1,15874 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="868.44971" + height="528.51886" + id="svg2" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="GSM_structures.svg" + style="display:inline" + inkscape:export-filename="/media/data/gsm/pictures/raster/UMTS_structure.png" + inkscape:export-xdpi="150.02303" + inkscape:export-ydpi="150.02303"> + <title + id="title2938">GSM structure</title> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow2Lstart" + style="overflow:visible"> + <path + id="path6083" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(1.1,0,0,1.1,1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="19.9375" + x2="26.5" + y1="7.6875" + x1="21.8125" + id="linearGradient7094" + xlink:href="#linearGradient7088" + inkscape:collect="always" /> + <linearGradient + y2="41" + x2="64.5" + y1="42.625" + x1="64.5625" + gradientTransform="matrix(1,0,0,-1,-38,50.0585)" + gradientUnits="userSpaceOnUse" + id="linearGradient6122" + xlink:href="#linearGradient8012" + inkscape:collect="always" /> + <linearGradient + y2="41" + x2="64.5" + y1="42.625" + x1="64.5625" + gradientTransform="matrix(1,0,0,-1,-40,50.0585)" + gradientUnits="userSpaceOnUse" + id="linearGradient6118" + xlink:href="#linearGradient8000" + inkscape:collect="always" /> + <linearGradient + y2="41" + x2="64.5" + y1="42.625" + x1="64.5625" + gradientTransform="matrix(1,0,0,-1,-40,50.0585)" + gradientUnits="userSpaceOnUse" + id="linearGradient6116" + xlink:href="#linearGradient8012" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="52.811184" + x2="28.087311" + y1="25.375" + x1="24.375" + id="linearGradient7532" + xlink:href="#linearGradient7526" + inkscape:collect="always" /> + <linearGradient + y2="22.53125" + x2="23.749973" + y1="32.21875" + x1="27.53125" + gradientUnits="userSpaceOnUse" + id="linearGradient7511" + xlink:href="#linearGradient8357" + inkscape:collect="always" /> + <linearGradient + y2="32.313343" + x2="44.0625" + y1="30.5" + x1="43.5" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7491" + xlink:href="#linearGradient7215" + inkscape:collect="always" /> + <linearGradient + y2="35.4375" + x2="44" + y1="33.46875" + x1="43.53125" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7488" + xlink:href="#linearGradient7223" + inkscape:collect="always" /> + <linearGradient + y2="38.4375" + x2="43.988625" + y1="36.505032" + x1="43.480392" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7485" + xlink:href="#linearGradient7231" + inkscape:collect="always" /> + <linearGradient + y2="26.4375" + x2="38.947304" + y1="24.541054" + x1="38.491497" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7482" + xlink:href="#linearGradient7199" + inkscape:collect="always" /> + <linearGradient + y2="26.4375" + x2="44" + y1="24.486135" + x1="43.493069" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7479" + xlink:href="#linearGradient7199" + inkscape:collect="always" /> + <linearGradient + y2="26.4375" + x2="48.976982" + y1="24.508232" + x1="48.478554" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7476" + xlink:href="#linearGradient7199" + inkscape:collect="always" /> + <linearGradient + y2="26.4375" + x2="38.947304" + y1="24.541054" + x1="38.491497" + gradientTransform="translate(-20,3)" + gradientUnits="userSpaceOnUse" + id="linearGradient7473" + xlink:href="#linearGradient7199" + inkscape:collect="always" /> + <linearGradient + y2="26.4375" + x2="44" + y1="24.486135" + x1="43.493069" + gradientTransform="translate(-20,3)" + gradientUnits="userSpaceOnUse" + id="linearGradient7470" + xlink:href="#linearGradient7199" + inkscape:collect="always" /> + <linearGradient + y2="26.4375" + x2="48.976982" + y1="24.508232" + x1="48.478554" + gradientTransform="translate(-20,3)" + gradientUnits="userSpaceOnUse" + id="linearGradient7467" + xlink:href="#linearGradient7199" + inkscape:collect="always" /> + <linearGradient + y2="32.500843" + x2="39" + y1="30.5" + x1="38.5" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7464" + xlink:href="#linearGradient7215" + inkscape:collect="always" /> + <linearGradient + y2="32.4375" + x2="49" + y1="30.46875" + x1="48.5" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7461" + xlink:href="#linearGradient7215" + inkscape:collect="always" /> + <linearGradient + y2="35.4375" + x2="49" + y1="33.46875" + x1="48.53125" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7458" + xlink:href="#linearGradient7223" + inkscape:collect="always" /> + <linearGradient + y2="35.497356" + x2="39.0625" + y1="33.5625" + x1="38.5" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7455" + xlink:href="#linearGradient7223" + inkscape:collect="always" /> + <linearGradient + y2="38.440475" + x2="40.01115" + y1="36.460838" + x1="39.502918" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7452" + xlink:href="#linearGradient7231" + inkscape:collect="always" /> + <linearGradient + y2="38.4375" + x2="48.982567" + y1="36.460838" + x1="48.496433" + gradientTransform="translate(-20,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient7449" + xlink:href="#linearGradient7231" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="44.788391" + x2="29.249495" + y1="21.108738" + x1="26.499495" + id="linearGradient7287" + xlink:href="#linearGradient7281" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(0,-1)" + gradientUnits="userSpaceOnUse" + y2="28.203257" + x2="23.334524" + y1="12.556273" + x1="23.334524" + id="linearGradient8242" + xlink:href="#linearGradient8236" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(-40,0)" + gradientUnits="userSpaceOnUse" + y2="5.5714717" + x2="71.739273" + y1="2.2823277" + x1="71.739273" + id="linearGradient8222" + xlink:href="#linearGradient8216" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32813,0,0,7.00602,-61.1646,-173.012)" + r="10.5" + fy="29.797501" + fx="64.5" + cy="29.797501" + cx="64.5" + id="radialGradient8054" + xlink:href="#linearGradient8046" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(1,0,0,-1,-39,83.0585)" + gradientUnits="userSpaceOnUse" + y2="41" + x2="64.5" + y1="42.625" + x1="64.5625" + id="linearGradient8010" + xlink:href="#linearGradient8012" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(1,0,0,-1,-39,83.0585)" + gradientUnits="userSpaceOnUse" + y2="41" + x2="64.5" + y1="42.625" + x1="64.5625" + id="linearGradient8006" + xlink:href="#linearGradient8000" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(-89,-1)" + gradientUnits="userSpaceOnUse" + y2="23.438053" + x2="64.375" + y1="9.3125" + x1="64.375" + id="linearGradient7998" + xlink:href="#linearGradient7992" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(-40,-1)" + gradientUnits="userSpaceOnUse" + y2="10.6875" + x2="65.4375" + y1="19.690521" + x1="65.4375" + id="linearGradient7978" + xlink:href="#linearGradient7972" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(-40,0)" + gradientUnits="userSpaceOnUse" + y2="92.265244" + x2="87.042259" + y1="8.375" + x1="59.510406" + id="linearGradient7923" + xlink:href="#linearGradient7917" + inkscape:collect="always" /> + <linearGradient + id="linearGradient7917" + inkscape:collect="always"> + <stop + id="stop7919" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7921" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient7972"> + <stop + id="stop7974" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7976" + offset="1" + style="stop-color: rgb(238, 238, 236); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient7992"> + <stop + id="stop7994" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7996" + offset="1" + style="stop-color: rgb(211, 215, 207); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient8000" + inkscape:collect="always"> + <stop + id="stop8002" + offset="0" + style="stop-color: rgb(46, 52, 54); stop-opacity: 1;" /> + <stop + id="stop8004" + offset="1" + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient8012"> + <stop + style="stop-color: rgb(46, 52, 54); stop-opacity: 1;" + offset="0" + id="stop8014" /> + <stop + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" + offset="1" + id="stop8016" /> + </linearGradient> + <linearGradient + id="linearGradient8046"> + <stop + id="stop8048" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop8050" + offset="1" + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient8216"> + <stop + id="stop8218" + offset="0" + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" /> + <stop + id="stop8220" + offset="1" + style="stop-color: rgb(186, 189, 182); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient8236" + inkscape:collect="always"> + <stop + id="stop8238" + offset="0" + style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" /> + <stop + id="stop8240" + offset="1" + style="stop-color: rgb(0, 0, 0); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient8357"> + <stop + id="stop8359" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop8361" + offset="1" + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient7199" + inkscape:collect="always"> + <stop + id="stop7201" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7203" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient7215" + inkscape:collect="always"> + <stop + id="stop7217" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7219" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient7223" + inkscape:collect="always"> + <stop + id="stop7225" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7227" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient7231" + inkscape:collect="always"> + <stop + id="stop7233" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7235" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient7281"> + <stop + id="stop7283" + offset="0" + style="stop-color: rgb(46, 52, 54); stop-opacity: 1;" /> + <stop + id="stop7285" + offset="1" + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient7526" + inkscape:collect="always"> + <stop + id="stop7528" + offset="0" + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" /> + <stop + id="stop7530" + offset="1" + style="stop-color: rgb(211, 215, 207); stop-opacity: 0.498039;" /> + </linearGradient> + <linearGradient + id="linearGradient7088" + inkscape:collect="always"> + <stop + id="stop7090" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7092" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient3042"> + <stop + style="stop-color: black; stop-opacity: 0;" + offset="0" + id="stop3044" /> + <stop + id="stop3050-0" + offset="0.5" + style="stop-color: black; stop-opacity: 1;" /> + <stop + style="stop-color: black; stop-opacity: 0;" + offset="1" + id="stop3046" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient3028"> + <stop + style="stop-color: black; stop-opacity: 1;" + offset="0" + id="stop3030" /> + <stop + style="stop-color: black; stop-opacity: 0;" + offset="1" + id="stop3032" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient1558"> + <stop + style="stop-color: rgb(186, 189, 182);" + offset="0" + id="stop1560" /> + <stop + style="stop-color: rgb(238, 238, 236);" + offset="1" + id="stop1562" /> + </linearGradient> + <linearGradient + id="linearGradient11400"> + <stop + id="stop11402" + offset="0" + style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" /> + <stop + id="stop11404" + offset="1" + style="stop-color: rgb(0, 0, 0); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient6240" + inkscape:collect="always"> + <stop + id="stop6242" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop6244" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient5137"> + <stop + id="stop5139" + offset="0" + style="stop-color: rgb(238, 238, 236); stop-opacity: 1;" /> + <stop + id="stop5141" + offset="1" + style="stop-color: rgb(230, 230, 227); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient5225" + inkscape:collect="always"> + <stop + id="stop5227" + offset="0" + style="stop-color: black; stop-opacity: 1;" /> + <stop + id="stop5229" + offset="1" + style="stop-color: black; stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient5233"> + <stop + id="stop5235" + offset="0" + style="stop-color: rgb(114, 159, 207); stop-opacity: 1;" /> + <stop + id="stop5237" + offset="1" + style="stop-color: rgb(50, 97, 148); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient3899" + inkscape:collect="always"> + <stop + id="stop3901" + offset="0" + style="stop-color: rgb(238, 238, 236);" /> + <stop + id="stop3903" + offset="1" + style="stop-color: rgb(211, 215, 207);" /> + </linearGradient> + <linearGradient + id="linearGradient3907"> + <stop + id="stop3909" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop3911" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient4196"> + <stop + id="stop4198" + offset="0" + style="stop-color: black; stop-opacity: 1;" /> + <stop + id="stop4200" + offset="1" + style="stop-color: black; stop-opacity: 0;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5225" + id="radialGradient5236" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.24763,0,32.1168)" + cx="23.9375" + cy="42.6875" + fx="23.9375" + fy="42.6875" + r="23.75956" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4196" + id="linearGradient5238" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(24,0)" + x1="37.484837" + y1="38.267769" + x2="37.295498" + y2="33.637787" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5137" + id="linearGradient5240" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.992781,0,-2.71803)" + x1="31.743324" + y1="37.842293" + x2="31.86105" + y2="43.82579" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient11400" + id="linearGradient5242" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.00419,0,0,1,-0.12454,-3.01177)" + x1="23.154902" + y1="34.572548" + x2="23.529411" + y2="40.219608" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5137" + id="linearGradient5244" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.999303,0,0,0.998527,0.00306125,-2.97132)" + x1="17.247635" + y1="6.3760414" + x2="39.904388" + y2="38.876041" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5233" + id="radialGradient5246" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.23263,0,0,0.778392,-5.59058,-0.847446)" + cx="24.006104" + cy="32.997028" + fx="24.006104" + fy="32.997028" + r="19.00016" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6240" + id="linearGradient5248" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-0.0235294,-3.03922)" + x1="20.156862" + y1="5.0996137" + x2="20.156862" + y2="26.039215" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3028" + id="radialGradient5250" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0,-0.750002,1.33333,0,-40.2857,35)" + cx="2.9999995" + cy="33.214287" + fx="2.9999995" + fy="33.214287" + r="3" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3028" + id="radialGradient5252" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0,-0.750002,1.33333,0,-88.2857,-30.5)" + cx="2.9999995" + cy="33.214287" + fx="2.9999995" + fy="33.214287" + r="3" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3042" + id="linearGradient5254" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.888889,0,3.83333)" + x1="37.03125" + y1="35.062885" + x2="37.03125" + y2="29.995127" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3899" + id="linearGradient5256" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.753044,-48,12.2525)" + x1="26.5" + y1="43.249905" + x2="26.5" + y2="35.75" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1558" + id="linearGradient5258" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.833169,-48,19.0825)" + x1="16.396038" + y1="19.659277" + x2="16.396038" + y2="32.448051" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5262" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5264" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5266" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5268" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5270" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5272" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5274" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5276" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5278" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5280" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5282" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5284" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5286" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5288" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5290" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5292" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5294" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5296" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5298" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5300" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5302" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5304" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5306" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5308" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5310" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5312" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5314" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5316" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5318" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5320" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5322" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5324" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5326" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5328" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5330" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5332" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5334" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5336" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5338" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5340" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5342" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5344" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5346" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5348" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5350" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5352" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5354" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5356" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5358" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5360" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5362" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5364" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5366" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5368" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5370" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5372" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5374" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5376" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5378" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3907" + id="radialGradient5380" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.3826,3.5814e-5,0,0.171503,-6.72968,34.0972)" + cx="20.913568" + cy="47.045319" + fx="20.913568" + fy="47.045319" + r="19.5" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="10.934953" + x2="39.421204" + y1="28.5" + x1="39.06765" + id="linearGradient6985" + xlink:href="#linearGradient6979" + inkscape:collect="always" /> + <linearGradient + y2="21.041553" + x2="21.036427" + y1="44.528019" + x1="24.837126" + gradientUnits="userSpaceOnUse" + id="linearGradient7121" + xlink:href="#linearGradient7101" + inkscape:collect="always" /> + <linearGradient + id="linearGradient7101"> + <stop + style="stop-color: rgb(186, 189, 182); stop-opacity: 1;" + offset="0" + id="stop7103" /> + <stop + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" + offset="1" + id="stop7105" /> + </linearGradient> + <linearGradient + id="linearGradient6979"> + <stop + id="stop6981" + offset="0" + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" /> + <stop + id="stop6983" + offset="1" + style="stop-color: rgb(85, 87, 83); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="40.441154" + x2="21.8125" + y1="13.249833" + x1="21.8125" + id="linearGradient2960" + xlink:href="#linearGradient2954" + inkscape:collect="always" /> + <linearGradient + y2="29.010038" + x2="17.5625" + y1="20.996099" + x1="17.5625" + gradientUnits="userSpaceOnUse" + id="linearGradient4074" + xlink:href="#linearGradient4055" + inkscape:collect="always" /> + <radialGradient + r="2" + fy="26" + fx="13.006094" + cy="26" + cx="13.006094" + gradientTransform="matrix(-9.45807e-7,-2.00001,2.00305,-1.68422e-6,-86.5731,1.01229)" + gradientUnits="userSpaceOnUse" + id="radialGradient4072" + xlink:href="#linearGradient4033" + inkscape:collect="always" /> + <radialGradient + r="2" + fy="26" + fx="13.006094" + cy="26" + cx="13.006094" + gradientTransform="matrix(-9.45807e-7,-2.00001,2.00305,-1.68422e-6,-38.5731,51.0123)" + gradientUnits="userSpaceOnUse" + id="radialGradient4070" + xlink:href="#linearGradient4033" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.96731,-1.03151e-7,0,-1.13646,83.2333,33.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient3017" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.96731,-1.03151e-7,0,-1.13646,88.3242,33.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient3013" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.96731,-1.03151e-7,0,-1.13646,93.4151,33.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient3009" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.75536,-1.03151e-7,0,-1.13646,79.0024,30.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient3002" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.75536,-1.03151e-7,0,-1.13646,83.7296,30.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient2998" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.75536,-1.03151e-7,0,-1.13646,88.4569,30.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient2994" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.54341,-1.03151e-7,0,-1.13646,74.7714,27.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient2987" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.54341,-1.03151e-7,0,-1.13646,79.135,27.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient2983" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.54341,-1.03151e-7,0,-1.13646,83.4987,27.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient2979" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.33146,-1.03151e-7,0,-1.13646,78.5405,24.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient2972" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.33146,-1.03151e-7,0,-1.13646,74.5405,24.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient2968" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.33146,-1.03151e-7,0,-1.13646,70.5405,24.6702)" + gradientUnits="userSpaceOnUse" + id="radialGradient6264" + xlink:href="#linearGradient6256" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.72079,-0.0389865,0.00176461,0.123227,-33.0387,12.786)" + r="16.031172" + fy="3.5110793" + fx="16.030262" + cy="3.5110793" + cx="16.030262" + id="radialGradient4068" + xlink:href="#linearGradient4062" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.04444,-0.123888,0.0146767,0.242354,-19.8863,13.6194)" + r="16.994591" + fy="6.5931005" + fx="17.04607" + cy="6.5931005" + cx="17.04607" + id="radialGradient4024" + xlink:href="#linearGradient4038" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="18.257809" + x2="23.994669" + y1="13.842071" + x1="23.994669" + id="linearGradient3404" + xlink:href="#linearGradient4044" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(1.00031,0,0,1,-0.00361429,0.972209)" + y2="20.639368" + x2="28.260429" + y1="8.7648172" + x1="28.260429" + gradientUnits="userSpaceOnUse" + id="linearGradient1616" + xlink:href="#linearGradient4044" + inkscape:collect="always" /> + <linearGradient + y2="29.477005" + x2="24.414724" + y1="25.463402" + x1="24.414724" + gradientTransform="matrix(1.00031,0,0,1,0.00705191,-4.00001)" + gradientUnits="userSpaceOnUse" + id="linearGradient1614" + xlink:href="#linearGradient4038" + inkscape:collect="always" /> + <linearGradient + y2="17.53454" + x2="25.189993" + y1="24.504593" + x1="24.160858" + gradientTransform="matrix(-1.00031,0,0,1,48.0127,-4.00001)" + gradientUnits="userSpaceOnUse" + id="linearGradient1601" + xlink:href="#linearGradient2513" + inkscape:collect="always" /> + <linearGradient + y2="8.361702" + x2="24.010672" + y1="24.81731" + x1="24.834204" + gradientTransform="matrix(0.921903,0,0,0.877945,1.86967,-1.02471)" + gradientUnits="userSpaceOnUse" + id="linearGradient1598" + xlink:href="#linearGradient4070" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2513"> + <stop + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" + offset="0" + id="stop2515" /> + <stop + style="stop-color: rgb(255, 255, 255); stop-opacity: 0.217899;" + offset="1" + id="stop2517" /> + </linearGradient> + <linearGradient + id="linearGradient4038"> + <stop + style="stop-color: rgb(114, 159, 207); stop-opacity: 1;" + offset="0" + id="stop4040" /> + <stop + style="stop-color: rgb(52, 101, 164); stop-opacity: 1;" + offset="1" + id="stop4042" /> + </linearGradient> + <linearGradient + id="linearGradient4044"> + <stop + id="stop4046" + offset="0" + style="stop-color: rgb(52, 101, 164); stop-opacity: 1;" /> + <stop + id="stop4048" + offset="1" + style="stop-color: rgb(32, 74, 135); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient4062"> + <stop + id="stop4064" + offset="0" + style="stop-color: white; stop-opacity: 1;" /> + <stop + id="stop4066" + offset="1" + style="stop-color: white; stop-opacity: 0.297619;" /> + </linearGradient> + <linearGradient + id="linearGradient4070"> + <stop + style="stop-color: white; stop-opacity: 0.428571;" + offset="0" + id="stop4072" /> + <stop + style="stop-color: white; stop-opacity: 1;" + offset="1" + id="stop4074" /> + </linearGradient> + <linearGradient + id="linearGradient6256"> + <stop + style="stop-color: white; stop-opacity: 1;" + offset="0" + id="stop6258" /> + <stop + style="stop-color: rgb(204, 206, 201); stop-opacity: 1;" + offset="1" + id="stop6260" /> + </linearGradient> + <linearGradient + id="linearGradient4033" + inkscape:collect="always"> + <stop + id="stop4035" + offset="0" + style="stop-color: black; stop-opacity: 1;" /> + <stop + id="stop4037" + offset="1" + style="stop-color: black; stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient4055"> + <stop + id="stop4057" + offset="0" + style="stop-color: black; stop-opacity: 0;" /> + <stop + style="stop-color: black; stop-opacity: 1;" + offset="0.5" + id="stop4063" /> + <stop + id="stop4059" + offset="1" + style="stop-color: black; stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient4961"> + <stop + id="stop4963" + offset="0" + style="stop-color: rgb(85, 87, 83); stop-opacity: 1;" /> + <stop + id="stop4965" + offset="1" + style="stop-color: rgb(186, 189, 182); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient2954" + inkscape:collect="always"> + <stop + id="stop2956" + offset="0" + style="stop-color: rgb(52, 101, 164); stop-opacity: 1;" /> + <stop + id="stop2958" + offset="1" + style="stop-color: rgb(52, 101, 164); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6299" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6301" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6303" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6305" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6307" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6309" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6311" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6313" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6315" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6317" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6319" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient6321" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + id="linearGradient5048"> + <stop + id="stop5050" + offset="0" + style="stop-color: black; stop-opacity: 0;" /> + <stop + style="stop-color: black; stop-opacity: 1;" + offset="0.5" + id="stop5056" /> + <stop + id="stop5052" + offset="1" + style="stop-color: black; stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient5060" + inkscape:collect="always"> + <stop + id="stop5062" + offset="0" + style="stop-color: black; stop-opacity: 1;" /> + <stop + id="stop5064" + offset="1" + style="stop-color: black; stop-opacity: 0;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6499"> + <stop + style="stop-color: rgb(114, 159, 207); stop-opacity: 1;" + offset="0" + id="stop6501" /> + <stop + style="stop-color: rgb(52, 101, 164); stop-opacity: 1;" + offset="1" + id="stop6503" /> + </linearGradient> + <linearGradient + id="linearGradient6642" + inkscape:collect="always"> + <stop + id="stop6644" + offset="0" + style="stop-color: rgb(211, 215, 207); stop-opacity: 1;" /> + <stop + id="stop6646" + offset="1" + style="stop-color: rgb(136, 138, 133); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient6794" + inkscape:collect="always"> + <stop + id="stop6796" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop6798" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient6820" + inkscape:collect="always"> + <stop + id="stop6822" + offset="0" + style="stop-color: rgb(114, 159, 207); stop-opacity: 1;" /> + <stop + id="stop6824" + offset="1" + style="stop-color: rgb(114, 159, 207); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient6843" + inkscape:collect="always"> + <stop + id="stop6845" + offset="0" + style="stop-color: rgb(254, 192, 101); stop-opacity: 1;" /> + <stop + id="stop6847" + offset="1" + style="stop-color: rgb(252, 175, 62); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient6851" + inkscape:collect="always"> + <stop + id="stop6853" + offset="0" + style="stop-color: rgb(253, 238, 119); stop-opacity: 1;" /> + <stop + id="stop6855" + offset="1" + style="stop-color: rgb(252, 233, 79); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient6859" + inkscape:collect="always"> + <stop + id="stop6861" + offset="0" + style="stop-color: rgb(158, 231, 87); stop-opacity: 1;" /> + <stop + id="stop6863" + offset="1" + style="stop-color: rgb(138, 226, 52); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient6881" + inkscape:collect="always"> + <stop + id="stop6883" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop6885" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <linearGradient + id="linearGradient8918"> + <stop + id="stop8920" + offset="0" + style="stop-color: rgb(206, 225, 75);" /> + <stop + id="stop8922" + offset="1" + style="stop-color: rgb(157, 176, 41);" /> + </linearGradient> + <linearGradient + id="linearGradient8912"> + <stop + style="stop-color: rgb(206, 225, 75);" + offset="0" + id="stop8914" /> + <stop + style="stop-color: rgb(157, 176, 41);" + offset="1" + id="stop8916" /> + </linearGradient> + <linearGradient + id="linearGradient8930"> + <stop + id="stop8932" + offset="0" + style="stop-color: rgb(206, 225, 75);" /> + <stop + id="stop8934" + offset="1" + style="stop-color: rgb(157, 176, 41);" /> + </linearGradient> + <linearGradient + id="linearGradient8924"> + <stop + id="stop8926" + offset="0" + style="stop-color: rgb(206, 225, 75);" /> + <stop + id="stop8928" + offset="1" + style="stop-color: rgb(157, 176, 41);" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient8740"> + <stop + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" + offset="0" + id="stop8742" /> + <stop + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" + offset="1" + id="stop8744" /> + </linearGradient> + <linearGradient + id="linearGradient8647"> + <stop + style="stop-color: rgb(143, 177, 220); stop-opacity: 1;" + offset="0" + id="stop8649" /> + <stop + style="stop-color: rgb(52, 101, 164); stop-opacity: 1;" + offset="1" + id="stop8651" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient8838"> + <stop + style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" + offset="0" + id="stop8840" /> + <stop + style="stop-color: rgb(0, 0, 0); stop-opacity: 0;" + offset="1" + id="stop8842" /> + </linearGradient> + <linearGradient + id="linearGradient4873" + inkscape:collect="always"> + <stop + id="stop4875" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop4877" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8838" + id="radialGradient7184" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.341176,0,3.04706)" + cx="62.625" + cy="4.625" + fx="62.625" + fy="4.625" + r="10.625" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8647" + id="radialGradient7186" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.12235,0,0,1.12238,-7.61047,1.06772)" + cx="62.200352" + cy="-8.7256308" + fx="62.200352" + fy="-8.7256308" + r="9.7552834" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4873" + id="linearGradient7188" + gradientUnits="userSpaceOnUse" + x1="63.397362" + y1="-9.3832779" + x2="68.910904" + y2="16.839214" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7194" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7202" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7208" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7216" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7224" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,0.79739)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7230" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8924" + id="radialGradient7254" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.0682288,2.45967,-1.7549,0.0486843,55.1288,-46.8219)" + cx="24.652573" + cy="18.94449" + fx="24.652485" + fy="18.944481" + r="8.6174498" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7256" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.891018,0,0,0.828854,1.57952,2.39052)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8930" + id="radialGradient7262" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.159592,5.75333,-0.8072,0.0223703,32.8731,-130.867)" + cx="25.135374" + cy="14.542349" + fx="25.135332" + fy="14.542329" + r="4.1347499" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7264" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,0.589884)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8912" + id="radialGradient7270" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.222034,8.00438,-0.597156,0.0165609,29.8566,-181.6)" + cx="24.478569" + cy="17.573915" + fx="24.478539" + fy="17.573889" + r="2.9719501" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7272" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0.311259,0.486131)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8918" + id="radialGradient7278" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.0616815,2.22364,-1.49597,0.0414803,50.5112,-44.5084)" + cx="25.969097" + cy="17.257854" + fx="25.968998" + fy="17.257843" + r="9.8222504" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient7280" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.918134,0,0,0.854079,2.42976,1.4901)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8838" + id="radialGradient8513" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.341176,0,3.04706)" + cx="62.625" + cy="4.625" + fx="62.625" + fy="4.625" + r="10.625" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8647" + id="radialGradient8515" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.12235,0,0,1.12238,-7.61047,1.06772)" + cx="62.200352" + cy="-8.7256308" + fx="62.200352" + fy="-8.7256308" + r="9.7552834" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4873" + id="linearGradient8517" + gradientUnits="userSpaceOnUse" + x1="63.397362" + y1="-9.3832779" + x2="68.910904" + y2="16.839214" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8519" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8521" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8523" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8525" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8527" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8529" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8531" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8533" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8535" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8537" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8539" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8541" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8543" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8545" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8547" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8549" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8551" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8553" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,0.79739)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8555" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8557" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8559" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8561" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8563" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8565" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8567" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8569" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8571" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8573" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8575" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8577" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8579" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8581" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8924" + id="radialGradient8583" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.0682288,2.45967,-1.7549,0.0486843,55.1288,-46.8219)" + cx="24.652573" + cy="18.94449" + fx="24.652485" + fy="18.944481" + r="8.6174498" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8585" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.891018,0,0,0.828854,1.57952,2.39052)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8924" + id="radialGradient8587" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.0765739,2.76052,-1.96955,0.0546389,60.099,-55.4718)" + cx="24.652573" + cy="18.94449" + fx="24.652485" + fy="18.944481" + r="8.6174498" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8589" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8930" + id="radialGradient8591" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.159592,5.75333,-0.8072,0.0223703,32.8731,-130.867)" + cx="25.135374" + cy="14.542349" + fx="25.135332" + fy="14.542329" + r="4.1347499" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8593" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,0.589884)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8930" + id="radialGradient8595" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.159592,5.75333,-0.8072,0.0223703,32.8731,-131.697)" + cx="25.135374" + cy="14.542349" + fx="25.135332" + fy="14.542329" + r="4.1347499" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8597" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8912" + id="radialGradient8599" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.222034,8.00438,-0.597156,0.0165609,29.8566,-181.6)" + cx="24.478569" + cy="17.573915" + fx="24.478539" + fy="17.573889" + r="2.9719501" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8601" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0.311259,0.486131)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8912" + id="radialGradient8603" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.222034,8.00438,-0.597156,0.0165609,29.5454,-182.327)" + cx="24.478569" + cy="17.573915" + fx="24.478539" + fy="17.573889" + r="2.9719501" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8605" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8918" + id="radialGradient8607" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.0616815,2.22364,-1.49597,0.0414803,50.5112,-44.5084)" + cx="25.969097" + cy="17.257854" + fx="25.968998" + fy="17.257843" + r="9.8222504" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8609" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.918134,0,0,0.854079,2.42976,1.4901)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8918" + id="radialGradient8611" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.0671814,2.42191,-1.62936,0.0451789,52.3687,-50.3401)" + cx="25.969097" + cy="17.257854" + fx="25.968998" + fy="17.257843" + r="9.8222504" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient8613" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961" + id="linearGradient9568" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9570" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9572" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9574" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9576" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9578" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9580" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9582" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9584" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9586" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9588" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9590" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9592" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9594" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9596" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9598" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9600" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9602" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9604" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9606" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9608" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9610" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9612" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9614" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9616" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9618" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9620" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8924" + id="radialGradient9622" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.0765739,2.76052,-1.96955,0.0546389,60.099,-55.4718)" + cx="24.652573" + cy="18.94449" + fx="24.652485" + fy="18.944481" + r="8.6174498" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9624" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8930" + id="radialGradient9626" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.159592,5.75333,-0.8072,0.0223703,32.8731,-131.697)" + cx="25.135374" + cy="14.542349" + fx="25.135332" + fy="14.542329" + r="4.1347499" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9628" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8912" + id="radialGradient9630" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.222034,8.00438,-0.597156,0.0165609,29.5454,-182.327)" + cx="24.478569" + cy="17.573915" + fx="24.478539" + fy="17.573889" + r="2.9719501" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9632" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8918" + id="radialGradient9634" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.0671814,2.42191,-1.62936,0.0451789,52.3687,-50.3401)" + cx="25.969097" + cy="17.257854" + fx="25.968998" + fy="17.257843" + r="9.8222504" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient8740" + id="radialGradient9636" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.930233,0,-0.240141)" + cx="62.225391" + cy="-3.4420195" + fx="62.225391" + fy="-3.4420195" + r="10.081216" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5048" + id="linearGradient9874" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.77439,0,0,1.96971,-1892.18,-872.885)" + x1="302.85715" + y1="366.64789" + x2="302.85715" + y2="609.50507" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient9876" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.77439,0,0,1.96971,-1891.63,-872.885)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient9878" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.77439,0,0,1.96971,112.762,-872.885)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9880" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9882" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9884" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9886" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9888" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9890" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6859" + id="radialGradient9892" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.786718,0,0,1.44232,-51.0422,-5.89968)" + cx="42" + cy="15.814279" + fx="42" + fy="15.814279" + r="3" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient9894" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6851" + id="radialGradient9896" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.821325,0,0,1.00384,-52.3505,0.173875)" + cx="42.8125" + cy="25.727272" + fx="42.8125" + fy="25.727272" + r="4.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6843" + id="radialGradient9898" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.745238,0,0,0.910847,-49.1726,3.63873)" + cx="42.5" + cy="36.307945" + fx="42.5" + fy="36.307945" + r="4.5" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient9900" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient9902" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6499" + id="linearGradient9904" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.88856,0,0,1,-55.4867,0)" + x1="17.077137" + y1="14.375" + x2="41.06271" + y2="56.9375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6820" + id="linearGradient9906" + gradientUnits="userSpaceOnUse" + x1="24.75" + y1="43.927441" + x2="24.75" + y2="35.790096" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6881" + id="linearGradient9908" + gradientUnits="userSpaceOnUse" + x1="17.353554" + y1="7.9356604" + x2="28.035534" + y2="81.759773" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9910" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9912" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9914" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9916" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9918" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9920" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <linearGradient + id="linearGradient3276-4-9"> + <stop + id="stop3278-5-0" + offset="0" + style="stop-color: rgb(175, 207, 255); stop-opacity: 1;" /> + <stop + id="stop3280-4-7" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + id="linearGradient3284-2-9"> + <stop + id="stop3286-2-3" + offset="0" + style="stop-color: rgb(255, 212, 42); stop-opacity: 1;" /> + <stop + id="stop3288-4-3" + offset="1" + style="stop-color: rgb(255, 241, 163); stop-opacity: 1;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3276-4-9" + id="linearGradient4274" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1,0,0,1,1054.98,9.00005)" + x1="298.49658" + y1="540.21155" + x2="625.77783" + y2="540.21155" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3284-2-9" + id="linearGradient4276" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(6.70711,9)" + x1="474.26663" + y1="483.6463" + x2="573.2616" + y2="589.20721" /> + <linearGradient + y2="31.250401" + x2="57.49662" + y1="38.277283" + x1="57.49662" + gradientTransform="translate(10,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient2351" + xlink:href="#linearGradient4241" + inkscape:collect="always" /> + <linearGradient + y2="31.250401" + x2="57.49662" + y1="38.277283" + x1="57.49662" + gradientTransform="translate(8,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient2349" + xlink:href="#linearGradient4241" + inkscape:collect="always" /> + <linearGradient + y2="31.250401" + x2="57.49662" + y1="38.277283" + x1="57.49662" + gradientTransform="translate(6,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient2347" + xlink:href="#linearGradient4241" + inkscape:collect="always" /> + <linearGradient + y2="31.250401" + x2="57.49662" + y1="38.277283" + x1="57.49662" + gradientTransform="translate(4,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient2345" + xlink:href="#linearGradient4241" + inkscape:collect="always" /> + <linearGradient + y2="31.250401" + x2="57.49662" + y1="38.277283" + x1="57.49662" + gradientTransform="translate(2,0)" + gradientUnits="userSpaceOnUse" + id="linearGradient2343" + xlink:href="#linearGradient4241" + inkscape:collect="always" /> + <linearGradient + y2="31.250401" + x2="57.49662" + y1="38.277283" + x1="57.49662" + gradientUnits="userSpaceOnUse" + id="linearGradient2341" + xlink:href="#linearGradient4241" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(-40,-1)" + y2="6.5458651" + x2="53.61911" + y1="6.5458651" + x1="73.05397" + gradientUnits="userSpaceOnUse" + id="linearGradient2339" + xlink:href="#linearGradient3859" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(-40,-1)" + y2="72.082878" + x2="60.426777" + y1="18.520107" + x1="60.426777" + gradientUnits="userSpaceOnUse" + id="linearGradient2335" + xlink:href="#linearGradient4175" + inkscape:collect="always" /> + <linearGradient + y2="10.868282" + x2="24.92893" + y1="12.001067" + x1="24.92893" + gradientTransform="matrix(0.882353,0,0,1,2.70589,1)" + gradientUnits="userSpaceOnUse" + id="linearGradient2332" + xlink:href="#linearGradient4233" + inkscape:collect="always" /> + <linearGradient + y2="17.762573" + x2="24.92893" + y1="19.00001" + x1="24.960155" + gradientTransform="matrix(0.882353,0,0,1,2.70589,1)" + gradientUnits="userSpaceOnUse" + id="linearGradient2329" + xlink:href="#linearGradient4227" + inkscape:collect="always" /> + <linearGradient + y2="36.374992" + x2="12.500004" + y1="32.593761" + x1="10.249995" + gradientTransform="matrix(0.999998,0,0,1.000003,6.00003,-7.000134)" + gradientUnits="userSpaceOnUse" + id="linearGradient2325" + xlink:href="#linearGradient2833" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(-40,-1)" + y2="37.256325" + x2="53.5625" + y1="4.4916701" + x1="53.5625" + gradientUnits="userSpaceOnUse" + id="linearGradient2319" + xlink:href="#linearGradient3942" + inkscape:collect="always" /> + <linearGradient + id="linearGradient2809"> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="0" + id="stop2811" /> + <stop + style="stop-color:#eeeeec;stop-opacity:0;" + offset="1" + id="stop2813" /> + </linearGradient> + <linearGradient + id="linearGradient3942"> + <stop + id="stop3944" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + id="stop3946" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient3859"> + <stop + id="stop3861" + offset="0" + style="stop-color:#d3d7cf;stop-opacity:1" /> + <stop + id="stop3037" + offset="0.30973485" + style="stop-color:#eeeeec;stop-opacity:1;" /> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0.88648254" + id="stop3039" /> + <stop + id="stop3863" + offset="1" + style="stop-color:#d3d7cf;stop-opacity:1" /> + </linearGradient> + <linearGradient + y2="24.500002" + x2="0.055013988" + y1="24.500002" + x1="6.5030808" + gradientTransform="matrix(-0.909091,0,0,1,46.04546,1.999997)" + gradientUnits="userSpaceOnUse" + id="linearGradient6849" + xlink:href="#linearGradient4391" + inkscape:collect="always" /> + <linearGradient + y2="27.499998" + x2="1.0550151" + y1="27.499998" + x1="7.5030818" + gradientTransform="matrix(-0.909091,0,0,1,46.95455,-0.999999)" + gradientUnits="userSpaceOnUse" + id="linearGradient6847" + xlink:href="#linearGradient2809" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(0.909091,0,0,1,1.954541,1.999997)" + gradientUnits="userSpaceOnUse" + y2="24.500002" + x2="0.055013988" + y1="24.500002" + x1="6.5030808" + id="linearGradient6843-4" + xlink:href="#linearGradient6837" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(0.909091,0,0,1,1.045449,-1)" + y2="27.499998" + x2="1.0550151" + y1="27.499998" + x1="7.5030818" + gradientUnits="userSpaceOnUse" + id="linearGradient6835" + xlink:href="#linearGradient2809" + inkscape:collect="always" /> + <linearGradient + id="linearGradient6837" + inkscape:collect="always"> + <stop + id="stop6839" + offset="0" + style="stop-color:#729fcf;stop-opacity:1" /> + <stop + id="stop6841" + offset="1" + style="stop-color:#729fcf;stop-opacity:0" /> + </linearGradient> + <linearGradient + y2="609.50507" + x2="302.85715" + y1="366.64789" + x1="302.85715" + gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" + gradientUnits="userSpaceOnUse" + id="linearGradient6715" + xlink:href="#linearGradient5048-1" + inkscape:collect="always" /> + <linearGradient + id="linearGradient5048-1"> + <stop + id="stop5050-4" + offset="0" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0.5" + id="stop5056-5" /> + <stop + id="stop5052-0" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <radialGradient + r="117.14286" + fy="486.64789" + fx="605.71429" + cy="486.64789" + cx="605.71429" + gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" + gradientUnits="userSpaceOnUse" + id="radialGradient6717" + xlink:href="#linearGradient5060-8" + inkscape:collect="always" /> + <linearGradient + id="linearGradient5060-8" + inkscape:collect="always"> + <stop + id="stop5062-7" + offset="0" + style="stop-color:black;stop-opacity:1;" /> + <stop + id="stop5064-5" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <radialGradient + r="117.14286" + fy="486.64789" + fx="605.71429" + cy="486.64789" + cx="605.71429" + gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" + gradientUnits="userSpaceOnUse" + id="radialGradient6719" + xlink:href="#linearGradient5060-8" + inkscape:collect="always" /> + <linearGradient + id="linearGradient2833"> + <stop + style="stop-color:#959595;stop-opacity:1;" + offset="0" + id="stop2835" /> + <stop + style="stop-color:white;stop-opacity:0.85576922;" + offset="1" + id="stop2837" /> + </linearGradient> + <linearGradient + id="linearGradient4175" + inkscape:collect="always"> + <stop + id="stop4177" + offset="0" + style="stop-color:#d3d7cf;stop-opacity:1" /> + <stop + id="stop4179" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient4227"> + <stop + style="stop-color:#d7d7d7;stop-opacity:1;" + offset="0" + id="stop4229" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1" + offset="1" + id="stop4231" /> + </linearGradient> + <linearGradient + id="linearGradient4233"> + <stop + style="stop-color:#d7d7d7;stop-opacity:1;" + offset="0" + id="stop4235" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1" + offset="1" + id="stop4237" /> + </linearGradient> + <linearGradient + id="linearGradient4241" + inkscape:collect="always"> + <stop + id="stop4243" + offset="0" + style="stop-color:black;stop-opacity:1;" /> + <stop + id="stop4245" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient4391"> + <stop + style="stop-color:#729fcf;stop-opacity:1" + offset="0" + id="stop4393" /> + <stop + style="stop-color:#729fcf;stop-opacity:0" + offset="1" + id="stop4395" /> + </linearGradient> + <filter + id="filter5406" + inkscape:collect="always" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur5408" + stdDeviation="0.78208031" + inkscape:collect="always" /> + </filter> + <filter + id="filter5386" + inkscape:collect="always" + color-interpolation-filters="sRGB"> + <feGaussianBlur + id="feGaussianBlur5388" + stdDeviation="0.26293105" + inkscape:collect="always" /> + </filter> + <linearGradient + id="linearGradient6991"> + <stop + id="stop6993" + offset="0" + style="stop-color:#d3d7cf;stop-opacity:1" /> + <stop + id="stop6995" + offset="1" + style="stop-color:#ffffff;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient7186"> + <stop + id="stop7188" + offset="0" + style="stop-color:#888a85;stop-opacity:1;" /> + <stop + id="stop7190" + offset="1" + style="stop-color:#ffffff;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient7237"> + <stop + id="stop7239" + offset="0" + style="stop-color:#eeeeec;stop-opacity:1" /> + <stop + id="stop7241" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient7245"> + <stop + id="stop7247" + offset="0" + style="stop-color:#eeeeec;stop-opacity:1;" /> + <stop + id="stop7249" + offset="1" + style="stop-color:#ffffff;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient7257"> + <stop + style="stop-color:#000000;stop-opacity:1" + offset="0" + id="stop7259" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop7261" /> + </linearGradient> + <linearGradient + id="linearGradient7263"> + <stop + style="stop-color:#adb0a8;stop-opacity:1;" + offset="0" + id="stop7265" /> + <stop + style="stop-color:#ffffff;stop-opacity:1" + offset="1" + id="stop7267" /> + </linearGradient> + <linearGradient + id="linearGradient7269"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop7271" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1" + offset="1" + id="stop7273" /> + </linearGradient> + <linearGradient + id="linearGradient7277"> + <stop + id="stop7279" + offset="0" + style="stop-color:#555753;stop-opacity:1" /> + <stop + id="stop7281" + offset="1" + style="stop-color:#d3d7cf;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient7340"> + <stop + id="stop7342" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + id="stop7344" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient7422" + inkscape:collect="always"> + <stop + id="stop7424" + offset="0" + style="stop-color:#edd400;stop-opacity:1;" /> + <stop + id="stop7426" + offset="1" + style="stop-color:#edd400;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient7430" + inkscape:collect="always"> + <stop + id="stop7432" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop7434" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient7438" + inkscape:collect="always"> + <stop + id="stop7440" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop7442" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient7576" + inkscape:collect="always"> + <stop + id="stop7578" + offset="0" + style="stop-color:#3465a4;stop-opacity:1" /> + <stop + id="stop7580" + offset="1" + style="stop-color:#3465a4;stop-opacity:0" /> + </linearGradient> + <linearGradient + id="linearGradient7652" + inkscape:collect="always"> + <stop + id="stop7654" + offset="0" + style="stop-color:#729fcf;stop-opacity:1;" /> + <stop + id="stop7656" + offset="1" + style="stop-color:#729fcf;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient7660" + inkscape:collect="always"> + <stop + id="stop7662" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop7664" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient7688" + inkscape:collect="always"> + <stop + id="stop7690" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + id="stop7692" + offset="1" + style="stop-color:#000000;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient7812" + inkscape:collect="always"> + <stop + id="stop7814" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + id="stop7816" + offset="1" + style="stop-color:#000000;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient7822" + inkscape:collect="always"> + <stop + id="stop7824" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + id="stop7826" + offset="1" + style="stop-color:#000000;stop-opacity:0;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient7822" + id="radialGradient6685" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6884422,0,10.837832)" + cx="14.363107" + cy="34.785942" + fx="14.363107" + fy="34.785942" + r="8.7946405" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6991" + id="linearGradient6687" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.0000002,0,0,1.9333333,43.500004,0.533333)" + x1="-7.975069" + y1="25.357235" + x2="-11.005972" + y2="-6.5683565" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7438" + id="linearGradient6689" + gradientUnits="userSpaceOnUse" + x1="-7.8516631" + y1="3.7545938" + x2="-5.5098634" + y2="18.937717" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7688" + id="linearGradient6691" + gradientUnits="userSpaceOnUse" + x1="28.625" + y1="41.125" + x2="30.5" + y2="47.8125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7263" + id="linearGradient6693" + gradientUnits="userSpaceOnUse" + x1="1.6256078" + y1="55.219357" + x2="0.82206726" + y2="54.415817" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7269" + id="linearGradient6695" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.9642856,0,0,0.9722222,-0.2500008,1.6944444)" + x1="-4.2208939" + y1="59.878922" + x2="-4.2208939" + y2="54.707691" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7257" + id="linearGradient6697" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-4,-24)" + x1="-1.9887378" + y1="51.137787" + x2="-3.3587573" + y2="54" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7237" + id="linearGradient6699" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-4,-24)" + x1="-4.6845822" + y1="52.640388" + x2="0.88388348" + y2="50.563263" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7245" + id="linearGradient6701" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-4,-24)" + x1="-5.0823302" + y1="50.51907" + x2="0.26516503" + y2="49.458408" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7186" + id="linearGradient6703" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-4,-24)" + x1="-5.96875" + y1="52.875" + x2="-5.96875" + y2="51.812416" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7277" + id="linearGradient6705" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,1.0285717,-4,-25.142872)" + x1="-3.5355339" + y1="55.866562" + x2="-3.5355339" + y2="59.444622" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7340" + id="linearGradient6707" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0874899,0,0,1.086371,-1.5809531,-8.9433469)" + x1="32.8125" + y1="21" + x2="32.8125" + y2="26.204767" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7430" + id="linearGradient6709" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(1,-7)" + x1="28.875" + y1="29" + x2="29" + y2="16" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7422" + id="linearGradient6711" + gradientUnits="userSpaceOnUse" + x1="30.3125" + y1="27.313059" + x2="30.3125" + y2="24.6875" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7422" + id="linearGradient6713" + gradientUnits="userSpaceOnUse" + x1="30.3125" + y1="27.313059" + x2="30.3125" + y2="24.6875" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7422" + id="linearGradient6716" + gradientUnits="userSpaceOnUse" + x1="30.3125" + y1="27.313059" + x2="30.3125" + y2="24.6875" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7422" + id="linearGradient6718" + gradientUnits="userSpaceOnUse" + x1="30.3125" + y1="27.313059" + x2="30.3125" + y2="24.6875" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7652" + id="linearGradient6722" + gradientUnits="userSpaceOnUse" + x1="37.625" + y1="40.3125" + x2="38.875" + y2="45.0625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7576" + id="linearGradient6724" + gradientUnits="userSpaceOnUse" + x1="38.75" + y1="40.625" + x2="40.125" + y2="46.5625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7660" + id="linearGradient6726" + gradientUnits="userSpaceOnUse" + x1="41.1875" + y1="38.3125" + x2="42.123722" + y2="42.9375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7269" + id="linearGradient6728" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.1249999,0,0,1.1666666,15.874999,-34.135417)" + x1="-4.1097827" + y1="58.807774" + x2="-4.1097827" + y2="55.000004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7812" + id="linearGradient6730" + gradientUnits="userSpaceOnUse" + x1="-6.40625" + y1="32.4375" + x2="-7.78125" + y2="34.5625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5048-1" + id="linearGradient7016" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" + x1="302.85715" + y1="366.64789" + x2="302.85715" + y2="609.50507" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060-8" + id="radialGradient7018" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060-8" + id="radialGradient7020" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2809" + id="linearGradient7022" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.909091,0,0,1,46.95455,-0.999999)" + x1="7.5030818" + y1="27.499998" + x2="1.0550151" + y2="27.499998" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4391" + id="linearGradient7024" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-0.909091,0,0,1,46.04546,1.999997)" + x1="6.5030808" + y1="24.500002" + x2="0.055013988" + y2="24.500002" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2809" + id="linearGradient7026" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.909091,0,0,1,1.045449,-1)" + x1="7.5030818" + y1="27.499998" + x2="1.0550151" + y2="27.499998" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6837" + id="linearGradient7028" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.909091,0,0,1,1.954541,1.999997)" + x1="6.5030808" + y1="24.500002" + x2="0.055013988" + y2="24.500002" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3859" + id="linearGradient7030" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-40,-1)" + x1="73.05397" + y1="6.5458651" + x2="53.61911" + y2="6.5458651" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4175" + id="linearGradient7032" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-40,-1)" + x1="60.426777" + y1="18.520107" + x2="60.426777" + y2="72.082878" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4233" + id="linearGradient7034" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.882353,0,0,1,2.70589,1)" + x1="24.92893" + y1="12.001067" + x2="24.92893" + y2="10.868282" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4227" + id="linearGradient7036" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.882353,0,0,1,2.70589,1)" + x1="24.960155" + y1="19.00001" + x2="24.92893" + y2="17.762573" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2833" + id="linearGradient7038" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.999998,0,0,1.000003,6.00003,-7.000134)" + x1="10.249995" + y1="32.593761" + x2="12.500004" + y2="36.374992" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3942" + id="linearGradient7040" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-40,-1)" + x1="53.5625" + y1="4.4916701" + x2="53.5625" + y2="37.256325" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient7042" + gradientUnits="userSpaceOnUse" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient7044" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(2,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient7046" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(4,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient7048" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(6,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient7050" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(8,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4241" + id="linearGradient7052" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(10,0)" + x1="57.49662" + y1="38.277283" + x2="57.49662" + y2="31.250401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient7422" + id="linearGradient7060" + gradientUnits="userSpaceOnUse" + x1="30.3125" + y1="27.313059" + x2="30.3125" + y2="24.6875" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="40.441154" + x2="21.8125" + y1="13.249833" + x1="21.8125" + id="linearGradient2960-6" + xlink:href="#linearGradient2954-1" + inkscape:collect="always" /> + <linearGradient + y2="39.3125" + x2="33.5625" + y1="34" + x1="33.5" + gradientUnits="userSpaceOnUse" + id="linearGradient2077" + xlink:href="#linearGradient5302" + inkscape:collect="always" /> + <linearGradient + y2="39.3125" + x2="33.5625" + y1="34" + x1="33.5" + gradientUnits="userSpaceOnUse" + id="linearGradient2073" + xlink:href="#linearGradient5302" + inkscape:collect="always" /> + <linearGradient + y2="39.3125" + x2="33.5625" + y1="34" + x1="33.5" + gradientUnits="userSpaceOnUse" + id="linearGradient2069" + xlink:href="#linearGradient5302" + inkscape:collect="always" /> + <linearGradient + y2="39.3125" + x2="33.5625" + y1="34" + x1="33.5" + gradientUnits="userSpaceOnUse" + id="linearGradient2065" + xlink:href="#linearGradient5302" + inkscape:collect="always" /> + <linearGradient + y2="39.3125" + x2="33.5625" + y1="34" + x1="33.5" + gradientUnits="userSpaceOnUse" + id="linearGradient2061" + xlink:href="#linearGradient5302" + inkscape:collect="always" /> + <linearGradient + y2="39.3125" + x2="33.5625" + y1="34" + x1="33.5" + gradientUnits="userSpaceOnUse" + id="linearGradient2057" + xlink:href="#linearGradient5302" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="21.997721" + x2="5.25" + y1="35.75" + x1="5.25" + id="linearGradient2164" + xlink:href="#linearGradient2158" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(1.571428,0,0,1,-7.714286,0)" + y2="29.010038" + x2="17.5625" + y1="20.996099" + x1="17.5625" + gradientUnits="userSpaceOnUse" + id="linearGradient5322" + xlink:href="#linearGradient4055-4" + inkscape:collect="always" /> + <radialGradient + r="2" + fy="26" + fx="13.006094" + cy="26" + cx="13.006094" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-98.5731,1.012286)" + gradientUnits="userSpaceOnUse" + id="radialGradient5320-2" + xlink:href="#linearGradient4033-7" + inkscape:collect="always" /> + <radialGradient + r="2" + fy="26" + fx="13.006094" + cy="26" + cx="13.006094" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-38.5731,51.01229)" + gradientUnits="userSpaceOnUse" + id="radialGradient5318-5" + xlink:href="#linearGradient4033-7" + inkscape:collect="always" /> + <linearGradient + y2="33.375" + x2="10.5" + y1="36.75" + x1="12.5" + gradientTransform="translate(12,1)" + gradientUnits="userSpaceOnUse" + id="linearGradient5201" + xlink:href="#linearGradient5187" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(6,1)" + y2="33.375" + x2="10.5" + y1="36.75" + x1="12.5" + gradientUnits="userSpaceOnUse" + id="linearGradient5197" + xlink:href="#linearGradient5209" + inkscape:collect="always" /> + <linearGradient + gradientTransform="translate(0,1)" + gradientUnits="userSpaceOnUse" + y2="33.375" + x2="10.5" + y1="36.75" + x1="12.5" + id="linearGradient5193" + xlink:href="#linearGradient5203" + inkscape:collect="always" /> + <linearGradient + y2="36.65625" + x2="10" + y1="34.9375" + x1="10" + gradientTransform="matrix(1,0,0,0.666666,13,12.1667)" + gradientUnits="userSpaceOnUse" + id="linearGradient5101" + xlink:href="#linearGradient5111" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(1,0,0,0.666666,7,12.1667)" + y2="36.65625" + x2="10" + y1="34.9375" + x1="10" + gradientUnits="userSpaceOnUse" + id="linearGradient5095" + xlink:href="#linearGradient5105" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(1,0,0,0.666662,1,12.16683)" + gradientUnits="userSpaceOnUse" + y2="36.65625" + x2="10" + y1="34.9375" + x1="10" + id="linearGradient5091" + xlink:href="#linearGradient5085" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(0.944444,0,0,0.999999,1.333333,0)" + gradientUnits="userSpaceOnUse" + y2="42" + x2="20.875" + y1="33" + x1="19" + id="linearGradient4975" + xlink:href="#linearGradient4969" + inkscape:collect="always" /> + <linearGradient + y2="29.010038" + x2="17.5625" + y1="20.996099" + x1="17.5625" + gradientUnits="userSpaceOnUse" + id="linearGradient4074-1" + xlink:href="#linearGradient4055-4" + inkscape:collect="always" /> + <radialGradient + r="2" + fy="26" + fx="13.006094" + cy="26" + cx="13.006094" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-86.5731,1.012286)" + gradientUnits="userSpaceOnUse" + id="radialGradient4072-4" + xlink:href="#linearGradient4033-7" + inkscape:collect="always" /> + <radialGradient + r="2" + fy="26" + fx="13.006094" + cy="26" + cx="13.006094" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-38.5731,51.01229)" + gradientUnits="userSpaceOnUse" + id="radialGradient4070-6" + xlink:href="#linearGradient4033-7" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,83.23332,33.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient3017-3" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,88.32422,33.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient3013-2" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,93.41513,33.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient3009-6" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,79.00237,30.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient3002-6" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,83.72964,30.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient2998-7" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,88.45691,30.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient2994-4" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,74.77142,27.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient2987-3" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,79.13505,27.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient2983-6" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,83.49869,27.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient2979-8" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,78.54047,24.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient2972-2" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,74.54047,24.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient2968-2" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + r="1.5" + fy="11.602475" + fx="21.530191" + cy="11.602475" + cx="21.530191" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,70.54047,24.67016)" + gradientUnits="userSpaceOnUse" + id="radialGradient6264-1" + xlink:href="#linearGradient6256-4" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.720795,-0.03898649,0.00176461,0.123227,-33.03868,12.78605)" + r="16.031172" + fy="3.5110793" + fx="16.030262" + cy="3.5110793" + cx="16.030262" + id="radialGradient4068-8" + xlink:href="#linearGradient4062-9" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.04444,-0.123888,0.01467675,0.242354,-19.8863,13.61936)" + r="16.994591" + fy="6.5931005" + fx="17.04607" + cy="6.5931005" + cx="17.04607" + id="radialGradient4024-0" + xlink:href="#linearGradient4038-5" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="18.257809" + x2="23.994669" + y1="13.842071" + x1="23.994669" + id="linearGradient3404-2" + xlink:href="#linearGradient4044-9" + inkscape:collect="always" /> + <linearGradient + gradientTransform="matrix(1.000314,0,0,1,-0.00361429,0.972209)" + y2="20.639368" + x2="28.260429" + y1="8.7648172" + x1="28.260429" + gradientUnits="userSpaceOnUse" + id="linearGradient1616-2" + xlink:href="#linearGradient4044-9" + inkscape:collect="always" /> + <linearGradient + y2="29.477005" + x2="24.414724" + y1="25.463402" + x1="24.414724" + gradientTransform="matrix(1.000314,0,0,1,0.00705191,-4.000006)" + gradientUnits="userSpaceOnUse" + id="linearGradient1614-1" + xlink:href="#linearGradient4038-5" + inkscape:collect="always" /> + <linearGradient + y2="17.53454" + x2="25.189993" + y1="24.504593" + x1="24.160858" + gradientTransform="matrix(-1.000314,0,0,1,48.01271,-4.000006)" + gradientUnits="userSpaceOnUse" + id="linearGradient1601-3" + xlink:href="#linearGradient2513-0" + inkscape:collect="always" /> + <linearGradient + y2="8.361702" + x2="24.010672" + y1="24.81731" + x1="24.834204" + gradientTransform="matrix(0.921903,0,0,0.877945,1.869671,-1.024713)" + gradientUnits="userSpaceOnUse" + id="linearGradient1598-1" + xlink:href="#linearGradient4070-0" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2513-0"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop2515-3" /> + <stop + style="stop-color:#ffffff;stop-opacity:0.21789883" + offset="1" + id="stop2517-9" /> + </linearGradient> + <linearGradient + id="linearGradient4038-5"> + <stop + style="stop-color:#729fcf;stop-opacity:1" + offset="0" + id="stop4040-3" /> + <stop + style="stop-color:#3465a4;stop-opacity:1" + offset="1" + id="stop4042-4" /> + </linearGradient> + <linearGradient + id="linearGradient4044-9"> + <stop + id="stop4046-5" + offset="0" + style="stop-color:#3465a4;stop-opacity:1" /> + <stop + id="stop4048-5" + offset="1" + style="stop-color:#204a87;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient4062-9"> + <stop + id="stop4064-2" + offset="0" + style="stop-color:white;stop-opacity:1;" /> + <stop + id="stop4066-6" + offset="1" + style="stop-color:white;stop-opacity:0.29761904;" /> + </linearGradient> + <linearGradient + id="linearGradient4070-0"> + <stop + style="stop-color:white;stop-opacity:0.42857143;" + offset="0" + id="stop4072-4" /> + <stop + style="stop-color:white;stop-opacity:1;" + offset="1" + id="stop4074-7" /> + </linearGradient> + <linearGradient + id="linearGradient6256-4"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop6258-1" /> + <stop + style="stop-color:#cccec9;stop-opacity:1;" + offset="1" + id="stop6260-1" /> + </linearGradient> + <linearGradient + id="linearGradient4033-7" + inkscape:collect="always"> + <stop + id="stop4035-1" + offset="0" + style="stop-color:black;stop-opacity:1;" /> + <stop + id="stop4037-0" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient4055-4"> + <stop + id="stop4057-7" + offset="0" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0.5" + id="stop4063-0" /> + <stop + id="stop4059-4" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient4961-1"> + <stop + id="stop4963-8" + offset="0" + style="stop-color:#555753;stop-opacity:1" /> + <stop + id="stop4965-9" + offset="1" + style="stop-color:#babdb6;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient4969" + inkscape:collect="always"> + <stop + id="stop4971" + offset="0" + style="stop-color:#d3d7cf;stop-opacity:1;" /> + <stop + id="stop4973" + offset="1" + style="stop-color:#d3d7cf;stop-opacity:0" /> + </linearGradient> + <linearGradient + id="linearGradient5085"> + <stop + id="stop5087" + offset="0" + style="stop-color:#73d216;stop-opacity:1;" /> + <stop + id="stop5089" + offset="1" + style="stop-color:#8ae234;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5105"> + <stop + style="stop-color:#edd400;stop-opacity:1" + offset="0" + id="stop5107" /> + <stop + style="stop-color:#fce94f;stop-opacity:1" + offset="1" + id="stop5109" /> + </linearGradient> + <linearGradient + id="linearGradient5111"> + <stop + style="stop-color:#f57900;stop-opacity:1" + offset="0" + id="stop5113" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:1" + offset="1" + id="stop5115" /> + </linearGradient> + <linearGradient + id="linearGradient5187" + inkscape:collect="always"> + <stop + id="stop5189" + offset="0" + style="stop-color:white;stop-opacity:1" /> + <stop + id="stop5191" + offset="1" + style="stop-color:#eeeeec;stop-opacity:0;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient5203"> + <stop + style="stop-color:white;stop-opacity:1" + offset="0" + id="stop5205" /> + <stop + style="stop-color:#eeeeec;stop-opacity:0;" + offset="1" + id="stop5207" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient5209"> + <stop + style="stop-color:white;stop-opacity:1" + offset="0" + id="stop5211" /> + <stop + style="stop-color:#eeeeec;stop-opacity:0;" + offset="1" + id="stop5213" /> + </linearGradient> + <linearGradient + id="linearGradient5302" + inkscape:collect="always"> + <stop + id="stop5304" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + id="stop5306" + offset="1" + style="stop-color:#d3d7cf;stop-opacity:0" /> + </linearGradient> + <linearGradient + id="linearGradient2158"> + <stop + id="stop2160" + offset="0" + style="stop-color:#555753;stop-opacity:1" /> + <stop + id="stop2162" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient2954-1" + inkscape:collect="always"> + <stop + id="stop2956-8" + offset="0" + style="stop-color:#3465a4;stop-opacity:1;" /> + <stop + id="stop2958-0" + offset="1" + style="stop-color:#3465a4;stop-opacity:0;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7959" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7961" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7963" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7965" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7967" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7969" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7971" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7973" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7975" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7977" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7979" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7981" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8522" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8524" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8526" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8528" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8530" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8532" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8534" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8536" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8538" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8540" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8542" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8544" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8546" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8548" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8550" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8552" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3374-9-9" + id="radialGradient5864-2" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.827349,0,1.12223)" + cx="10.28125" + cy="8.0709476" + fx="10.28125" + fy="8.0709476" + r="4.5250292" /> + <linearGradient + id="linearGradient3374-9-9" + inkscape:collect="always"> + <linearGradient + id="linearGradient4953"> + <stop + style="stop-color: rgb(252, 245, 213); stop-opacity: 1;" + offset="0" + id="stop4955" /> + <stop + style="stop-color: rgb(255, 221, 0); stop-opacity: 1;" + offset="1" + id="stop4957" /> + </linearGradient> + <stop + id="stop3376-6-6" + offset="0" + style="stop-color: rgb(114, 159, 207); stop-opacity: 1;" /> + <stop + id="stop3378-6-5" + offset="1" + style="stop-color: rgb(114, 159, 207); stop-opacity: 0;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3362-7-4" + id="radialGradient5866-9" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(4.68085,0,0,1.27674,-37.8437,-3.30085)" + cx="10.28125" + cy="10.018439" + fx="10.28125" + fy="10.018439" + r="4.5250292" /> + <linearGradient + id="linearGradient3362-7-4" + inkscape:collect="always"> + <stop + id="stop3364-5-3" + offset="0" + style="stop-color: rgb(52, 101, 164); stop-opacity: 1;" /> + <stop + id="stop3366-5-7" + offset="1" + style="stop-color: rgb(52, 101, 164); stop-opacity: 0;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3362-7-4" + id="radialGradient5870-2" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(4.68085,0,0,1.27674,-37.8437,-3.30085)" + cx="10.28125" + cy="9.8424416" + fx="10.28125" + fy="9.8424416" + r="4.5250292" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3374-9-9" + id="radialGradient5872-8" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.698447,0,0,0.57786,3.10034,2.74391)" + cx="10.28125" + cy="7.8249326" + fx="10.28125" + fy="7.8249326" + r="4.5250292" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3362-7-4" + id="radialGradient5874-7" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(4.68085,0,0,1.27674,-37.8437,-3.30085)" + cx="10.28125" + cy="9.8424416" + fx="10.28125" + fy="9.8424416" + r="4.5250292" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient7131-9-0" + id="radialGradient5876-6" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.737507,0,0,0.720181,2.43453,0.661737)" + cx="8.9057236" + cy="1.7286602" + fx="8.9057236" + fy="1.7286602" + r="1.9952321" /> + <linearGradient + id="linearGradient7131-9-0" + inkscape:collect="always"> + <stop + id="stop7133-8-4" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7135-2-9" + offset="1" + style="stop-color: rgb(211, 215, 207); stop-opacity: 1;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient7153-8-2" + id="radialGradient5878-1" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.85977,0,0,1.81726,-7.14013,-0.894237)" + cx="8.3046875" + cy="1.1256332" + fx="8.3046875" + fy="1.1256332" + r="2.0507698" /> + <linearGradient + id="linearGradient7153-8-2" + inkscape:collect="always"> + <stop + id="stop7155-6-2" + offset="0" + style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" /> + <stop + id="stop7157-1-2" + offset="1" + style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3374-9-9" + id="radialGradient6930" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.827349,0,1.12223)" + cx="10.28125" + cy="8.0709476" + fx="10.28125" + fy="8.0709476" + r="4.5250292" /> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow2Lstart-3" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path6083-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(1.1,0,0,1.1,1.1,0)" /> + </marker> + <marker + id="multiplicityStart" + refX="0" + refY="0" + orient="auto" + style="overflow:visible"> + <path + id="path4836" + d="M 0,0 -14,7 M 0,0 -14,0 M 0,0 -14,-7" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + </marker> + <marker + id="multiplicityEnd" + orient="auto" + refX="14" + refY="0" + style="overflow:visible"> + <path + id="path6575" + d="M 0,0 14,7 M 0,0 14,0 M 0,0 14,-7" + inkscape:connector-curvature="0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + </marker> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient6667" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient6671" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient6675" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient6679" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient6683" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient6688" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient6690" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient6739" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + id="linearGradient5048-9"> + <stop + id="stop5050-8" + offset="0" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0.5" + id="stop5056-9" /> + <stop + id="stop5052-1" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <radialGradient + r="18.5" + fy="61.48016" + fx="13.107393" + cy="61.48016" + cx="13.107393" + gradientTransform="matrix(2.60832,0,0,2.21881,-25.9414,-116.551)" + gradientUnits="userSpaceOnUse" + id="radialGradient10291-7" + xlink:href="#linearGradient6945-1" + inkscape:collect="always" /> + <linearGradient + y2="58.838387" + x2="32.625" + y1="68.4375" + x1="32.625" + gradientUnits="userSpaceOnUse" + id="linearGradient10289-0" + xlink:href="#linearGradient6932-5" + inkscape:collect="always" /> + <linearGradient + y2="25.371557" + x2="9.9965248" + y1="21.246521" + x1="9.9965248" + gradientUnits="userSpaceOnUse" + id="linearGradient10287-3" + xlink:href="#linearGradient7088-39" + inkscape:collect="always" /> + <linearGradient + y2="24.779999" + x2="9.0107775" + y1="19.584124" + x1="9.0107775" + gradientUnits="userSpaceOnUse" + id="linearGradient10285-8" + xlink:href="#linearGradient7059-3" + inkscape:collect="always" /> + <radialGradient + r="15.5" + fy="25.349953" + fx="26.762928" + cy="25.349953" + cx="26.762928" + gradientTransform="matrix(1.49194,0,0,1.32349,-11.499,-8.80317)" + gradientUnits="userSpaceOnUse" + id="radialGradient10283-8" + xlink:href="#linearGradient7067-2" + inkscape:collect="always" /> + <linearGradient + y2="35.853024" + x2="15.75" + y1="24.561808" + x1="15.75" + gradientTransform="matrix(1,0,0,1.14285,-1,-4.36135)" + gradientUnits="userSpaceOnUse" + id="linearGradient10281-2" + xlink:href="#linearGradient7002-6" + inkscape:collect="always" /> + <radialGradient + r="18.5" + fy="61.48016" + fx="13.107393" + cy="61.48016" + cx="13.107393" + gradientTransform="matrix(2.60832,0,0,-2.21881,-25.9414,168.685)" + gradientUnits="userSpaceOnUse" + id="radialGradient10279-8" + xlink:href="#linearGradient6945-1" + inkscape:collect="always" /> + <radialGradient + r="117.14286" + fy="486.64789" + fx="605.71429" + cy="486.64789" + cx="605.71429" + gradientTransform="matrix(-2.77439,0,0,1.96971,112.762,-872.885)" + gradientUnits="userSpaceOnUse" + id="radialGradient10277-5" + xlink:href="#linearGradient5060-1" + inkscape:collect="always" /> + <radialGradient + r="117.14286" + fy="486.64789" + fx="605.71429" + cy="486.64789" + cx="605.71429" + gradientTransform="matrix(2.77439,0,0,1.96971,-1891.63,-872.885)" + gradientUnits="userSpaceOnUse" + id="radialGradient10275-7" + xlink:href="#linearGradient5060-1" + inkscape:collect="always" /> + <linearGradient + y2="609.50507" + x2="302.85715" + y1="366.64789" + x1="302.85715" + gradientTransform="matrix(2.77439,0,0,1.96971,-1892.18,-872.885)" + gradientUnits="userSpaceOnUse" + id="linearGradient10273-9" + xlink:href="#linearGradient5048-2" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient7088-39"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop7090-1" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop7092-6" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient7067-2"> + <stop + style="stop-color:#ffffff;stop-opacity:1" + offset="0" + id="stop7069-1" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1" + offset="1" + id="stop7071-3" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient7059-3"> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="0" + id="stop7061-0" /> + <stop + style="stop-color:#babdb6;stop-opacity:0" + offset="1" + id="stop7063-3" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient7002-6"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop7004-4" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop7006-5" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6932-5"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop6934-9" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop9565-8" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6945-1"> + <stop + style="stop-color:#ffffff;stop-opacity:1" + offset="0" + id="stop6947-8" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1" + offset="1" + id="stop6949-3" /> + </linearGradient> + <linearGradient + id="linearGradient5048-2"> + <stop + id="stop5050-7" + offset="0" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0.5" + id="stop5056-0" /> + <stop + id="stop5052-6" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient5060-1" + inkscape:collect="always"> + <stop + id="stop5062-9" + offset="0" + style="stop-color:black;stop-opacity:1;" /> + <stop + id="stop5064-9" + offset="1" + style="stop-color:black;stop-opacity:0;" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient7733" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient7737" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient7741" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient7745" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient7749" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient7753" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient7755" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient7803" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4033-7" + id="radialGradient8019" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-38.5731,51.01229)" + cx="13.006094" + cy="26" + fx="13.006094" + fy="26" + r="2" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4033-7" + id="radialGradient8021" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-98.5731,1.012286)" + cx="13.006094" + cy="26" + fx="13.006094" + fy="26" + r="2" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4055-4" + id="linearGradient8023" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.571428,0,0,1,-7.714286,0)" + x1="17.5625" + y1="20.996099" + x2="17.5625" + y2="29.010038" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2158" + id="linearGradient8025" + gradientUnits="userSpaceOnUse" + x1="5.25" + y1="35.75" + x2="5.25" + y2="21.997721" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4969" + id="linearGradient8027" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.944444,0,0,0.999999,1.333333,0)" + x1="19" + y1="33" + x2="20.875" + y2="42" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5203" + id="linearGradient8029" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,1)" + x1="12.5" + y1="36.75" + x2="10.5" + y2="33.375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5085" + id="linearGradient8031" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.666662,1,12.16683)" + x1="10" + y1="34.9375" + x2="10" + y2="36.65625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5105" + id="linearGradient8033" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.666666,7,12.1667)" + x1="10" + y1="34.9375" + x2="10" + y2="36.65625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5111" + id="linearGradient8035" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.666666,13,12.1667)" + x1="10" + y1="34.9375" + x2="10" + y2="36.65625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5209" + id="linearGradient8037" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(6,1)" + x1="12.5" + y1="36.75" + x2="10.5" + y2="33.375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5187" + id="linearGradient8039" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(12,1)" + x1="12.5" + y1="36.75" + x2="10.5" + y2="33.375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8041" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8043" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8045" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8047" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8049" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8051" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8053" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8055" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8057" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8059" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8061" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8063" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8065" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4038-5" + id="radialGradient8067" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.04444,-0.123888,0.01467675,0.242354,-19.8863,13.61936)" + cx="17.04607" + cy="6.5931005" + fx="17.04607" + fy="6.5931005" + r="16.994591" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4044-9" + id="linearGradient8069" + gradientUnits="userSpaceOnUse" + x1="23.994669" + y1="13.842071" + x2="23.994669" + y2="18.257809" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4062-9" + id="radialGradient8071" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.720795,-0.03898649,0.00176461,0.123227,-33.03868,12.78605)" + cx="16.030262" + cy="3.5110793" + fx="16.030262" + fy="3.5110793" + r="16.031172" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4033-7" + id="radialGradient8073" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-38.5731,51.01229)" + cx="13.006094" + cy="26" + fx="13.006094" + fy="26" + r="2" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4033-7" + id="radialGradient8075" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-86.5731,1.012286)" + cx="13.006094" + cy="26" + fx="13.006094" + fy="26" + r="2" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4055-4" + id="linearGradient8077" + gradientUnits="userSpaceOnUse" + x1="17.5625" + y1="20.996099" + x2="17.5625" + y2="29.010038" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4038-5" + id="linearGradient8079" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.000314,0,0,1,0.00705191,-4.000006)" + x1="24.414724" + y1="25.463402" + x2="24.414724" + y2="29.477005" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4044-9" + id="linearGradient8081" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.000314,0,0,1,-0.00361429,0.972209)" + x1="28.260429" + y1="8.7648172" + x2="28.260429" + y2="20.639368" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2513-0" + id="linearGradient8083" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.000314,0,0,1,48.01271,-4.000006)" + x1="24.160858" + y1="24.504593" + x2="25.189993" + y2="17.53454" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4070-0" + id="linearGradient8085" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.921903,0,0,0.877945,1.869671,-1.024713)" + x1="24.834204" + y1="24.81731" + x2="24.010672" + y2="8.361702" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2954-1" + id="linearGradient8087" + gradientUnits="userSpaceOnUse" + x1="21.8125" + y1="13.249833" + x2="21.8125" + y2="40.441154" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8089" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8091" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8093" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8095" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8097" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8099" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8101" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8103" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8105" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8107" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8109" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8111" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8113" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8115" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,74.77142,27.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8117" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,79.13505,27.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8119" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,83.49869,27.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8121" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,70.54047,24.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8123" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,74.54047,24.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8125" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,78.54047,24.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8127" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,79.00237,30.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8129" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,83.72964,30.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8131" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,88.45691,30.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8133" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,83.23332,33.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8135" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,88.32422,33.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8137" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,93.41513,33.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4033-7" + id="radialGradient8325" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-38.5731,51.01229)" + cx="13.006094" + cy="26" + fx="13.006094" + fy="26" + r="2" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4033-7" + id="radialGradient8327" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-98.5731,1.012286)" + cx="13.006094" + cy="26" + fx="13.006094" + fy="26" + r="2" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4055-4" + id="linearGradient8329" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.571428,0,0,1,-7.714286,0)" + x1="17.5625" + y1="20.996099" + x2="17.5625" + y2="29.010038" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2158" + id="linearGradient8331" + gradientUnits="userSpaceOnUse" + x1="5.25" + y1="35.75" + x2="5.25" + y2="21.997721" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4969" + id="linearGradient8333" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.944444,0,0,0.999999,1.333333,0)" + x1="19" + y1="33" + x2="20.875" + y2="42" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5203" + id="linearGradient8335" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,1)" + x1="12.5" + y1="36.75" + x2="10.5" + y2="33.375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5085" + id="linearGradient8337" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.666662,1,12.16683)" + x1="10" + y1="34.9375" + x2="10" + y2="36.65625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5105" + id="linearGradient8339" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.666666,7,12.1667)" + x1="10" + y1="34.9375" + x2="10" + y2="36.65625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5111" + id="linearGradient8341" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.666666,13,12.1667)" + x1="10" + y1="34.9375" + x2="10" + y2="36.65625" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5209" + id="linearGradient8343" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(6,1)" + x1="12.5" + y1="36.75" + x2="10.5" + y2="33.375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5187" + id="linearGradient8345" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(12,1)" + x1="12.5" + y1="36.75" + x2="10.5" + y2="33.375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8347" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8349" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8351" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8353" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8355" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8358" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8360" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8362" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8364" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8366" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8368" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8370" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5302" + id="linearGradient8372" + gradientUnits="userSpaceOnUse" + x1="33.5" + y1="34" + x2="33.5625" + y2="39.3125" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4038-5" + id="radialGradient8374" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.04444,-0.123888,0.01467675,0.242354,-19.8863,13.61936)" + cx="17.04607" + cy="6.5931005" + fx="17.04607" + fy="6.5931005" + r="16.994591" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4044-9" + id="linearGradient8376" + gradientUnits="userSpaceOnUse" + x1="23.994669" + y1="13.842071" + x2="23.994669" + y2="18.257809" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4062-9" + id="radialGradient8378" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.720795,-0.03898649,0.00176461,0.123227,-33.03868,12.78605)" + cx="16.030262" + cy="3.5110793" + fx="16.030262" + fy="3.5110793" + r="16.031172" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4033-7" + id="radialGradient8380" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-38.5731,51.01229)" + cx="13.006094" + cy="26" + fx="13.006094" + fy="26" + r="2" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4033-7" + id="radialGradient8382" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-9.458067e-7,-2.000005,2.003046,-1.684215e-6,-86.5731,1.012286)" + cx="13.006094" + cy="26" + fx="13.006094" + fy="26" + r="2" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4055-4" + id="linearGradient8384" + gradientUnits="userSpaceOnUse" + x1="17.5625" + y1="20.996099" + x2="17.5625" + y2="29.010038" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4038-5" + id="linearGradient8386" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.000314,0,0,1,0.00705191,-4.000006)" + x1="24.414724" + y1="25.463402" + x2="24.414724" + y2="29.477005" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4044-9" + id="linearGradient8388" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.000314,0,0,1,-0.00361429,0.972209)" + x1="28.260429" + y1="8.7648172" + x2="28.260429" + y2="20.639368" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2513-0" + id="linearGradient8390" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.000314,0,0,1,48.01271,-4.000006)" + x1="24.160858" + y1="24.504593" + x2="25.189993" + y2="17.53454" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4070-0" + id="linearGradient8392" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.921903,0,0,0.877945,1.869671,-1.024713)" + x1="24.834204" + y1="24.81731" + x2="24.010672" + y2="8.361702" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2954-1" + id="linearGradient8394" + gradientUnits="userSpaceOnUse" + x1="21.8125" + y1="13.249833" + x2="21.8125" + y2="40.441154" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8396" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8398" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8400" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8402" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8404" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8406" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8408" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8410" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8412" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8414" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8416" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8418" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4961-1" + id="linearGradient8420" + gradientUnits="userSpaceOnUse" + x1="23.994967" + y1="20.3125" + x2="23.994967" + y2="3.1169004" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8422" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,74.77142,27.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8424" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,79.13505,27.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8426" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.543409,-1.031509e-7,0,-1.136461,83.49869,27.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8428" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,70.54047,24.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8430" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,74.54047,24.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8432" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.331458,-1.031509e-7,0,-1.136461,78.54047,24.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8434" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,79.00237,30.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8436" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,83.72964,30.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8438" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.755359,-1.031509e-7,0,-1.136461,88.45691,30.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8440" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,83.23332,33.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8442" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,88.32422,33.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6256-4" + id="radialGradient8444" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.96731,-1.031509e-7,0,-1.136461,93.41513,33.67016)" + cx="21.530191" + cy="11.602475" + fx="21.530191" + fy="11.602475" + r="1.5" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5048" + id="linearGradient8606" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.77439,0,0,1.96971,-1892.18,-872.885)" + x1="302.85715" + y1="366.64789" + x2="302.85715" + y2="609.50507" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient8608" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.77439,0,0,1.96971,-1891.63,-872.885)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient8610" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.77439,0,0,1.96971,112.762,-872.885)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8612" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8614" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8616" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8618" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8620" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8622" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6859" + id="radialGradient8624" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.786718,0,0,1.44232,-51.0422,-5.89968)" + cx="42" + cy="15.814279" + fx="42" + fy="15.814279" + r="3" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient8626" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6851" + id="radialGradient8628" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.821325,0,0,1.00384,-52.3505,0.173875)" + cx="42.8125" + cy="25.727272" + fx="42.8125" + fy="25.727272" + r="4.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6843" + id="radialGradient8630" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.745238,0,0,0.910847,-49.1726,3.63873)" + cx="42.5" + cy="36.307945" + fx="42.5" + fy="36.307945" + r="4.5" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient8632" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient8634" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6499" + id="linearGradient8636" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.88856,0,0,1,-55.4867,0)" + x1="17.077137" + y1="14.375" + x2="41.06271" + y2="56.9375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6820" + id="linearGradient8638" + gradientUnits="userSpaceOnUse" + x1="24.75" + y1="43.927441" + x2="24.75" + y2="35.790096" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6881" + id="linearGradient8640" + gradientUnits="userSpaceOnUse" + x1="17.353554" + y1="7.9356604" + x2="28.035534" + y2="81.759773" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8642" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8644" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8646" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8648" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8650" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8652" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5048" + id="linearGradient8810" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.77439,0,0,1.96971,-1892.18,-872.885)" + x1="302.85715" + y1="366.64789" + x2="302.85715" + y2="609.50507" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient8812" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.77439,0,0,1.96971,-1891.63,-872.885)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient8814" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.77439,0,0,1.96971,112.762,-872.885)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8816" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8818" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8820" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8822" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8824" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8826" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6859" + id="radialGradient8828" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.786718,0,0,1.44232,-51.0422,-5.89968)" + cx="42" + cy="15.814279" + fx="42" + fy="15.814279" + r="3" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient8830" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6851" + id="radialGradient8832" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.821325,0,0,1.00384,-52.3505,0.173875)" + cx="42.8125" + cy="25.727272" + fx="42.8125" + fy="25.727272" + r="4.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6843" + id="radialGradient8834" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.745238,0,0,0.910847,-49.1726,3.63873)" + cx="42.5" + cy="36.307945" + fx="42.5" + fy="36.307945" + r="4.5" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient8836" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient8839" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6499" + id="linearGradient8841" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.88856,0,0,1,-55.4867,0)" + x1="17.077137" + y1="14.375" + x2="41.06271" + y2="56.9375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6820" + id="linearGradient8843" + gradientUnits="userSpaceOnUse" + x1="24.75" + y1="43.927441" + x2="24.75" + y2="35.790096" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6881" + id="linearGradient8845" + gradientUnits="userSpaceOnUse" + x1="17.353554" + y1="7.9356604" + x2="28.035534" + y2="81.759773" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8847" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8849" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8851" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8853" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8855" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient8857" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5048" + id="linearGradient9015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.77439,0,0,1.96971,-1892.18,-872.885)" + x1="302.85715" + y1="366.64789" + x2="302.85715" + y2="609.50507" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient9017" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.77439,0,0,1.96971,-1891.63,-872.885)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient5060" + id="radialGradient9019" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-2.77439,0,0,1.96971,112.762,-872.885)" + cx="605.71429" + cy="486.64789" + fx="605.71429" + fy="486.64789" + r="117.14286" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9021" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9023" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9025" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9027" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9029" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9031" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.32797,0,-0.467771,1.60701,3.48927,-5.75381)" + cx="4.4339509" + cy="8.3226004" + fx="4.4339509" + fy="8.3226004" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6859" + id="radialGradient9033" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.786718,0,0,1.44232,-51.0422,-5.89968)" + cx="42" + cy="15.814279" + fx="42" + fy="15.814279" + r="3" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient9035" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6851" + id="radialGradient9037" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.821325,0,0,1.00384,-52.3505,0.173875)" + cx="42.8125" + cy="25.727272" + fx="42.8125" + fy="25.727272" + r="4.5" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6843" + id="radialGradient9039" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.745238,0,0,0.910847,-49.1726,3.63873)" + cx="42.5" + cy="36.307945" + fx="42.5" + fy="36.307945" + r="4.5" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient9041" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6794" + id="linearGradient9043" + gradientUnits="userSpaceOnUse" + x1="42.875" + y1="30.9375" + x2="39.919209" + y2="51.062393" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6499" + id="linearGradient9045" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.88856,0,0,1,-55.4867,0)" + x1="17.077137" + y1="14.375" + x2="41.06271" + y2="56.9375" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6820" + id="linearGradient9047" + gradientUnits="userSpaceOnUse" + x1="24.75" + y1="43.927441" + x2="24.75" + y2="35.790096" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6881" + id="linearGradient9049" + gradientUnits="userSpaceOnUse" + x1="17.353554" + y1="7.9356604" + x2="28.035534" + y2="81.759773" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9051" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9053" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9055" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9057" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9059" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6642" + id="radialGradient9061" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.52618,0,0,1.40054,-2.79535,-3.40699)" + cx="5.312501" + cy="8.1713457" + fx="5.312501" + fy="8.1713457" + r="6" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.70710678" + inkscape:cx="633.8316" + inkscape:cy="339.72348" + inkscape:document-units="px" + inkscape:current-layer="layer3" + showgrid="false" + inkscape:window-width="1440" + inkscape:window-height="850" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="false" + inkscape:object-paths="false" + inkscape:snap-object-midpoints="true" + inkscape:connector-spacing="0" + inkscape:snap-global="true" + inkscape:snap-nodes="false" + showguides="true" + inkscape:guide-bbox="true" + fit-margin-top="5" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title>GSM structure</dc:title> + <dc:date>2012-08-14</dc:date> + <dc:creator> + <cc:Agent> + <dc:title>Kevin Redon</dc:title> + </cc:Agent> + </dc:creator> + <dc:description>structure of a GSM network, based on 3GPP TS 23.002 version 9.2.0 Release 9</dc:description> + <cc:license + rdf:resource="http://www.gnu.org/licenses/gpl-3.0.html" /> + <dc:contributor> + <cc:Agent> + <dc:title>icons from gnome</dc:title> + </cc:Agent> + </dc:contributor> + <dc:source>https://secure.wikimedia.org/wikipedia/commons/wiki/File:Gsm_structures.svg, https://commons.wikimedia.org/w/index.php?title=File:UMTS_structures.svg</dc:source> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer4" + inkscape:label="systems" + style="display:inline" + transform="translate(32.314741,-4.0452318)"> + <rect + y="77.482117" + x="395.70496" + height="374.7666" + width="439.43002" + id="rect4794" + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + <rect + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + id="rect9929" + width="264.681" + height="374.7666" + x="124.24876" + y="77.482117" /> + <rect + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:1.99999976;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + id="rect9937" + width="250.31581" + height="213.77448" + x="404.79633" + y="84.553185" /> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="-13.93904" + y="40.106499" + id="text9939"><tspan + sodipodi:role="line" + id="tspan9941" + x="-13.93904" + y="40.106499" + style="font-size:18px;font-weight:bold">Structure of a GSM network</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;text-anchor:end;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="819.04413" + y="445.50446" + id="text9960"><tspan + sodipodi:role="line" + id="tspan9962" + x="819.04413" + y="445.50446">CN: Core Network</tspan></text> + <rect + y="77.482117" + x="-31.314741" + height="374.7666" + width="147.48227" + id="rect4939" + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + <text + id="text4941" + y="443.117" + x="42.344398" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1" + y="443.117" + x="42.344398" + id="tspan4943" + sodipodi:role="line">MS: Mobile Station</tspan></text> + <rect + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + id="rect4220" + width="134.84792" + height="334.27509" + x="-24.997562" + y="85.942154" /> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="42.344398" + y="393.40271" + id="text4222"><tspan + sodipodi:role="line" + id="tspan4224" + x="42.344398" + y="393.40271" + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1">UE: User</tspan><tspan + sodipodi:role="line" + x="42.344398" + y="410.90271" + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1" + id="tspan4226">Equipment</tspan></text> + <rect + y="92.804291" + x="-16.70686" + height="181.26508" + width="118.2665" + id="rect4228" + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + <text + id="text4230" + y="108.40272" + x="42.111938" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + id="tspan4234" + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1" + y="108.40272" + x="42.111938" + sodipodi:role="line">ME: Mobile</tspan><tspan + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1" + y="125.90272" + x="42.111938" + sodipodi:role="line" + id="tspan4238">Equipment</tspan></text> + <rect + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + id="rect4240" + width="118.2665" + height="93.050789" + x="-16.70686" + y="281.37573" /> + <text + id="text4242" + y="367.68842" + x="42.344398" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + id="tspan4246" + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1" + y="367.68842" + x="42.344398" + sodipodi:role="line">ICC</tspan></text> + <rect + y="82.068649" + x="131.69247" + height="346.66492" + width="251.22214" + id="rect4812" + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="260.00381" + y="386.3313" + id="text4786"><tspan + sodipodi:role="line" + x="260.00381" + y="386.3313" + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1" + id="tspan6605">GERAN: GSM EDGE Radio</tspan><tspan + sodipodi:role="line" + x="262.23233" + y="403.8313" + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1" + id="tspan6609">Access Network </tspan><tspan + sodipodi:role="line" + x="260.00381" + y="421.3313" + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1" + id="tspan8650">BSS: Base Station System</tspan></text> + <rect + y="303.96808" + x="404.79633" + height="141.94052" + width="250.31581" + id="rect4796" + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:1.99999964;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + <text + id="text4798" + y="420.79019" + x="475.1969" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="420.79019" + x="475.1969" + sodipodi:role="line" + id="tspan6958">GPRS PS:</tspan><tspan + y="438.29019" + x="475.1969" + sodipodi:role="line" + id="tspan9141">Packet Switched</tspan></text> + <rect + y="85.152672" + x="667.99017" + height="342.9801" + width="160.51324" + id="rect4802" + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;text-anchor:end;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="775.86743" + y="422.02408" + id="text4804"><tspan + sodipodi:role="line" + id="tspan4806" + x="775.86743" + y="422.02408">PS & CS</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="459.8942" + y="122.67626" + id="text4808"><tspan + sodipodi:role="line" + id="tspan4810" + x="459.8942" + y="122.67626">CS: Circuit</tspan><tspan + sodipodi:role="line" + x="459.8942" + y="140.17627" + id="tspan7829">Switched</tspan></text> + <text + id="text4814" + y="445.50446" + x="256.56192" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;text-anchor:end;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="445.50446" + x="256.56192" + id="tspan4816" + sodipodi:role="line" + style="text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1">AN: Access Network</tspan></text> + <rect + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + id="rect7189" + width="147.78529" + height="91.250092" + x="673.64703" + y="177.07655" /> + <rect + y="163.21973" + x="411.8674" + height="129.24399" + width="234.75948" + id="rect7513" + style="opacity:0.8;fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:1.99999976;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /> + <text + id="text7515" + y="178.11395" + x="511.65826" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="178.11395" + x="511.65826" + sodipodi:role="line" + id="tspan6613">MSC: Mobile</tspan><tspan + y="195.61395" + x="511.65826" + sodipodi:role="line" + id="tspan6617">Switching Centre</tspan></text> + <text + id="text9063" + y="192.92146" + x="762.95178" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;text-anchor:end;fill:#14b514;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="192.92146" + x="762.95178" + id="tspan9065" + sodipodi:role="line">HSS</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 658.96681,208.41162 780.56154,122.72794" + id="path9091" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g7831" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g9791" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 660.42179,240.82438 120.13974,51.96275" + id="path9093" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g7831" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g8450" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 651.28218,224.99657 95.12083,-14.5978" + id="path9095" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g7831" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g8654" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + </g> + <g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="links" + transform="translate(32.314741,-4.0452318)" + style="display:inline"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline" + d="M 501.74336,375.23161 609.8573,495.66373" + id="path9554" + inkscape:connector-type="polyline" + inkscape:connection-start="#layer1-37" + inkscape:connection-start-point="d4" + inkscape:connector-curvature="0" + inkscape:connection-end="#g8347" + inkscape:connection-end-point="d4" /> + <text + id="text9642" + y="201.99919" + x="83.534523" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="201.99919" + x="83.534523" + id="tspan9644" + sodipodi:role="line">Um</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline" + d="m 74.568315,246.65626 0.139435,51.67026" + id="path4280" + inkscape:connector-type="polyline" + inkscape:connection-start="#layer1-0" + inkscape:connection-end="#g4250" + transform="translate(-32.3147,9.04523)" + inkscape:connection-start-point="d4" + inkscape:connection-end-point="d4" + inkscape:connector-curvature="0" /> + <text + id="text4288" + y="300.38333" + x="39.861164" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="300.38333" + x="39.861164" + id="tspan4290" + sodipodi:role="line">SIM-ME</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;marker-end:url(#multiplicityEnd)" + d="m 312.41795,234.0508 -77.67097,-5.59559" + id="path5872" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g6494" + inkscape:connection-start-point="d4" + inkscape:connection-end="#layer1-3" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="252.0182" + y="229.85699" + id="text4300"><tspan + sodipodi:role="line" + id="tspan4302" + x="252.0182" + y="229.85699" + style="font-weight:normal">Abis</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline" + d="M 642.84118,483.95298 632.00077,409.12824" + id="path7054" + transform="translate(-32.3147,9.04523)" + inkscape:connector-type="polyline" + inkscape:connection-end="#g6964" + inkscape:connection-end-point="d4" + inkscape:connector-curvature="0" + inkscape:connection-start="#g8347" + inkscape:connection-start-point="d4" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="427.09686" + y="334.98663" + id="text7287"><tspan + sodipodi:role="line" + id="tspan7289" + x="427.09686" + y="334.98663" + style="font-weight:normal">Gb</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="536.01837" + y="69.967316" + id="text8567"><tspan + sodipodi:role="line" + id="tspan8569" + x="536.01837" + y="69.967316">PSTN</tspan></text> + <text + id="text8575" + y="254.29642" + x="428.36725" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="254.29642" + x="428.36725" + id="tspan8577" + sodipodi:role="line">A</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;marker-end:url(#multiplicityEnd)" + d="m 487.86628,228.783 -99.0342,2.67301" + id="path7710" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" + transform="translate(-32.314741,9.0452318)" + inkscape:connection-end-point="d4" + inkscape:connection-end="#g6494" + inkscape:connection-start-point="d4" + inkscape:connection-start="#g7865" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;marker-end:url(#multiplicityEnd)" + d="M 493.48755,329.558 398.60319,266.68192" + id="path8272" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#layer1-37" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g6494" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;marker-end:url(#multiplicityEnd)" + d="M 215.65509,225.62678 98.291063,204.45445" + id="path10411" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#layer1-3" + inkscape:connection-start-point="d4" + inkscape:connection-end="#layer1-0" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#multiplicityEnd)" + d="m 460.53869,231.23086 -44.90128,0 0,-19.799 36.06244,0" + id="path6257" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="428.95303" + y="227.06241" + id="text6447"><tspan + sodipodi:role="line" + id="tspan6449" + x="428.95303" + y="227.06241">Nb</tspan></text> + <text + id="text9069" + y="261.37183" + x="539.37811" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="261.37183" + x="539.37811" + id="tspan9071" + sodipodi:role="line">Mc</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" + d="m 539.89472,234.60649 64.05488,0" + id="path9067" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + transform="translate(-32.314741,9.0452318)" + inkscape:connection-end-point="d4" + inkscape:connection-end="#g7831" + inkscape:connection-start-point="d4" + inkscape:connection-start="#g7865" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="597.87561" + y="198.11089" + id="text9081"><tspan + sodipodi:role="line" + id="tspan9083" + x="597.87561" + y="198.11089">Nc</tspan></text> + <text + id="text9087" + y="229.3553" + x="554.99481" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="229.3553" + x="554.99481" + id="tspan9089" + sodipodi:role="line">E</tspan></text> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path9097" + d="m 579.33263,232.10954 -31.28947,0 0,-17.67768 22.09708,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#multiplicityEnd)" /> + <text + id="text9099" + y="158.22612" + x="690.69891" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="158.22612" + x="690.69891" + id="tspan9101" + sodipodi:role="line">B</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="682.5672" + y="216.56242" + id="text9103"><tspan + sodipodi:role="line" + id="tspan9105" + x="682.5672" + y="216.56242">C</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 745.39144,210.93291 78.48887,0" + id="path9107" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g8654" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g8859" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + <text + id="text9113" + y="234.59364" + x="753.3327" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="234.59364" + x="753.3327" + id="tspan9115" + sodipodi:role="line">H</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 745.39144,210.93291 34.15853,-87.67083" + id="path9117" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g8654" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g9791" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="744.43903" + y="170.95403" + id="text9119"><tspan + sodipodi:role="line" + id="tspan9121" + x="744.43903" + y="170.95403">D</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="783.03674" + y="138.25032" + id="text9123"><tspan + sodipodi:role="line" + id="tspan9125" + x="783.03674" + y="138.25032">G</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#multiplicityEnd)" + d="m 770.42824,143.65622 24.21841,0 0,-22.27387 -25.63262,0" + id="path9127" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="702.15295" + y="294.41238" + id="text9129"><tspan + sodipodi:role="line" + id="tspan9131" + x="702.15295" + y="294.41238">F</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 547.62206,335.66345 780.56153,292.78713" + id="path9133" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#layer1-37" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g8450" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + <text + id="text9135" + y="329.53369" + x="697.4563" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="329.53369" + x="697.4563" + id="tspan9137" + sodipodi:role="line">Gf,Sv</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none" + d="m 547.62206,344.22236 214.93955,12.76535" + id="path9139" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#layer1-37" + inkscape:connection-start-point="d4" + inkscape:connection-end="#layer1" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="689.9563" + y="357.44794" + id="text9143"><tspan + sodipodi:role="line" + id="tspan9145" + x="689.9563" + y="357.44794">Gd</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 547.62206,354.15208 41.72849,14.26445" + id="path9147" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#layer1-37" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g6964" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="546.16339" + y="390.69666" + id="text9149"><tspan + sodipodi:role="line" + id="tspan9151" + x="546.16339" + y="390.69666">Gn</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" + d="M 617.89951,200.66361 591.58194,145.60742" + id="path9079" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g7831" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g8139" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,9.0452318)" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 745.39144,215.93291 647.60977,358.14067" + id="path9154" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g8654" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g6964" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,4.0452318)" /> + <text + id="text9156" + y="348.14029" + x="609.23804" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="348.14029" + x="609.23804" + id="tspan9158" + sodipodi:role="line">Gc</tspan></text> + <text + id="text9160" + y="436.60834" + x="587.06897" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="436.60834" + x="587.06897" + id="tspan9162" + sodipodi:role="line">Gp</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="546.05676" + y="413.15253" + id="text9164"><tspan + sodipodi:role="line" + id="tspan9166" + x="546.05676" + y="413.15253">Gi</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" + d="M 592.00739,94.862956 623.70891,37.31892" + id="path9168" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g8139" + inkscape:connection-start-point="d4" + transform="translate(-32.314741,4.0452318)" + inkscape:connection-end="#g8060" + inkscape:connection-end-point="d4" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 730.07505,37.921224 623.70891,37.31892" + id="path5188" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#layer2-5" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g8060" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,4.0452318)" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 738.31474,491.6185 -96.1427,0" + id="path5190" + inkscape:connector-type="polyline" + inkscape:connector-curvature="0" + inkscape:connection-start="#g5044" + inkscape:connection-start-point="d4" + inkscape:connection-end="#g8347" + inkscape:connection-end-point="d4" + transform="translate(-32.314741,4.0452318)" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="symbol" + transform="translate(32.314741,-4.0452318)" + style="display:inline"> + <g + style="opacity:0.8;stroke-linecap:round;stroke-linejoin:round" + inkscape:label="Layer 1" + id="g8060" + transform="matrix(2.66942,0,0,2.66942,548.56257,0.0210852)"> + <g + transform="matrix(1.28471,0,0,1.28471,-63.8963,19.9689)" + id="g8062" + style="stroke-linecap:round;stroke-linejoin:round;display:inline"> + <path + sodipodi:type="arc" + style="opacity:0.56044;color:#000000;fill:url(#radialGradient8513);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="path8064" + sodipodi:cx="62.625" + sodipodi:cy="4.625" + sodipodi:rx="10.625" + sodipodi:ry="3.625" + d="M 73.25,4.625 C 73.25,6.6270322 68.493025,8.25 62.625,8.25 56.756975,8.25 52,6.6270322 52,4.625 52,2.6229678 56.756975,1 62.625,1 68.493025,1 73.25,2.6229678 73.25,4.625 z" + transform="matrix(1,0,0,1.19247,-0.590821,-2.37871)" /> + <path + style="fill:url(#radialGradient8515);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.29159501;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" + d="m 71.455637,-3.5111605 c 0,5.1118327 -4.144037,9.255822 -9.255167,9.255822 -5.111598,0 -9.2554,-4.1440362 -9.2554,-9.255822 0,-5.1115983 4.143802,-9.2551665 9.2554,-9.2551665 5.11113,0 9.255167,4.1435682 9.255167,9.2551665 l 0,0 z" + id="path8066" + inkscape:connector-curvature="0" /> + <path + id="path8068" + d="m 70.945908,-3.5111451 c 0,4.8302718 -3.915782,8.7460091 -8.74539,8.7460091 -4.83005,0 -8.745611,-3.9157817 -8.745611,-8.7460091 0,-4.8300503 3.915561,-8.7453899 8.745611,-8.7453899 4.829608,0 8.74539,3.9153396 8.74539,8.7453899 l 0,0 z" + style="opacity:0.527473;fill:none;stroke:url(#linearGradient8517);stroke-width:0.29159501;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8519);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="10.784556" + height="16.411282" + href="62169F0D.png" + id="image8070" + x="61.522053" + y="-11.413214" /> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8521);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="2.3444688" + href="62169F0E.png" + id="image8072" + x="61.990948" + y="-10.94432" /> + <g + transform="matrix(0.468894,0,0,0.468894,50.3904,-14.5737)" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8525);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8074"> + <path + d="m 26.0703,9.2363 -0.0732,0.4932 0.5098,0.3291 0.8711,-0.5757 -0.4355,-0.4937 -0.582,0.3296 -0.29,-0.0825" + id="path8076" + style="fill:#9db029;stroke:url(#radialGradient8523);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8527);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="5.6267252" + height="4.6889377" + href="62169F0F.png" + id="image8078" + x="58.708691" + y="-12.819895" /> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8529);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="2.3444688" + href="62169F10.png" + id="image8080" + x="62.928734" + y="-9.5376387" /> + <g + transform="matrix(0.468894,0,0,0.468894,49.7717,-14.5737)" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8533);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8082"> + <path + d="m 28.833,12.7749 -0.291,-0.7412 -0.5098,0.165 0.1465,0.9043 0.6543,-0.3281" + id="path8084" + style="fill:#9db029;stroke:url(#radialGradient8531);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8535);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="3.2822564" + href="62169F11.png" + id="image8086" + x="63.397629" + y="-10.006532" /> + <g + transform="matrix(0.468894,0,0,0.468894,49.9485,-14.5737)" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8539);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8088"> + <path + d="m 29.123,12.6089 -0.1455,0.9883 0.7998,-0.165 0.5811,-0.5752 -0.5088,-0.4941 C 29.6787,11.9078 29.4824,11.483 29.2685,11.0465 l -0.4355,0 0,0.4932 0.29,0.3291 0,0.7402" + id="path8090" + style="fill:#9db029;stroke:url(#radialGradient8537);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8541);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="9.8467684" + height="17.34907" + href="62169F12.png" + id="image8092" + x="52.144176" + y="-11.413214" /> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8543);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="2.3444688" + href="62169F13.png" + id="image8094" + x="57.770901" + y="-10.94432" /> + <g + transform="matrix(0.468894,0,0,0.468894,50.3904,-14.5737)" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8547);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8096"> + <path + d="m 16.7656,9.5649 0.7266,0.4937 0.582,0 0,-0.5757 -0.7266,-0.3291 -0.582,0.4111" + id="path8098" + style="fill:#9db029;stroke:url(#radialGradient8545);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8549);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="4.2200437" + height="3.2822564" + href="62169F14.png" + id="image8100" + x="56.36422" + y="-11.882107" /> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8551);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="3.7511499" + height="2.8133626" + href="2D44FCEC.png" + id="image8102" + x="57.30201" + y="-12.819895" /> + <g + transform="matrix(0.468894,0,0,0.468894,50.9649,-14.5295)" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8555);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8104"> + <path + d="m 17.4922,7.887132 0.3638,-0.3286 0.7271,-0.1646 c 0.498,-0.2422 0.998,-0.4053 1.5264,-0.5762 l -0.29,-0.4937 -0.9385,0.1348 -0.4434,0.4419 -0.731,0.106 -0.6499,0.3052 -0.3159,0.1528 -0.1929,0.2583 0.9443,0.1641" + id="path8106" + style="fill:#9db029;stroke:url(#radialGradient8553);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <image + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8557);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="2.3444688" + href="2D44FCED.png" + id="image8108" + x="58.239796" + y="-8.5998507" /> + <g + transform="matrix(0.468894,0,0,0.468894,50.5672,-14.3085)" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient8561);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8110"> + <path + d="m 18.7285,14.6665 0.4365,-0.6582 -0.6548,-0.4932 0.2183,1.1514" + id="path8112" + style="fill:#9db029;stroke:url(#radialGradient8559);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8563);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="10.784556" + height="16.411282" + href="2D44FCEE.png" + id="image8114" + x="61.522053" + y="-11.413214" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8565);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="2.3444688" + href="2D44FCEF.png" + id="image8116" + x="61.990948" + y="-10.94432" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8567);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="5.6267252" + height="4.6889377" + href="2D44FCF0.png" + id="image8118" + x="58.708691" + y="-12.819895" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8569);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="2.3444688" + href="2D44FCF1.png" + id="image8120" + x="62.928734" + y="-9.5376387" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8571);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="3.2822564" + href="2D44FCF2.png" + id="image8122" + x="63.397629" + y="-10.006532" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8573);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="9.8467684" + height="17.34907" + href="2D44FCF3.png" + id="image8124" + x="52.144176" + y="-11.413214" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8575);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="2.3444688" + href="2D44FCF4.png" + id="image8126" + x="57.770901" + y="-10.94432" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8577);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="4.2200437" + height="3.2822564" + href="2D44FCF5.png" + id="image8128" + x="56.36422" + y="-11.882107" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8579);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="3.7511499" + height="2.8133626" + href="2D44FD11.png" + id="image8130" + x="57.30201" + y="-12.819895" /> + <image + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient8581);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + width="2.3444688" + height="2.3444688" + href="2D44FD12.png" + id="image8132" + x="58.239796" + y="-8.5998507" /> + <g + transform="matrix(0.468894,0,0,0.468894,50.744,-14.6178)" + style="fill:url(#radialGradient8587);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient8589);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8134"> + <path + d="m 17.943241,27.768799 -0.518573,-1.02672 -0.971477,-0.219726 -0.518127,-1.392215 -1.295183,0.146216 -1.100764,-0.805748 -1.166432,1.025918 0,0.161809 C 12.019842,25.55649 11.586095,25.54259 11.271922,25.349417 l -0.259287,-0.732684 0,-0.806638 -0.777056,0.07306 c 0.06487,-0.513404 0.129197,-1.025918 0.194509,-1.539233 l -0.4537956,0 -0.4529044,0.586468 -0.4537955,0.219279 -0.6478592,-0.365495 -0.064866,-0.806639 0.1296431,-0.879702 0.9719225,-0.732684 0.7770571,0 0.129197,-0.440252 0.971477,0.219279 0.712636,0.880593 0.129643,-1.467061 1.230764,-1.025918 0.45335,-1.099872 0.906699,-0.366298 0.518127,-0.732684 1.165541,-0.220973 0.583439,-0.878811 c -0.582993,0 -1.165987,0 -1.74898,0 l 1.10112,-0.513404 0.776612,0 1.101565,-0.367189 0.129643,-0.438559 -0.388929,-0.367188 -0.45335,-0.147018 0.129643,-0.43945 -0.323707,-0.659532 -0.777502,0.292343 0.129643,-0.586022 -0.9067,-0.513405 -0.71219,1.245554 0.06442,0.440252 -0.71219,0.294125 -0.453796,0.952766 -0.194064,-0.879702 -1.230763,-0.513405 -0.194509,-0.659531 1.619336,-0.953657 0.712636,-0.659532 0.06487,-0.8061926 -0.388483,-0.2201702 -0.518127,-0.073509 -0.323707,0.8066378 c 0,0 -0.54165,0.106121 -0.680916,0.140514 -1.778561,1.638938 -5.372215,5.176904 -6.2070989,11.856064 0.033057,0.154859 0.6051795,1.052827 0.6051795,1.052827 l 1.3600498,0.805747 1.3600499,0.367189 0.5834387,0.733486 0.906254,0.659531 0.518127,-0.07306 0.388484,0.174907 0,0.118327 -0.517771,1.392661 -0.388929,0.586468 0.129643,0.294125 -0.323707,1.098091 1.165987,2.126592 1.16554,1.02672 0.518573,0.732684 -0.06522,1.540125 0.38893,0.878811 -0.38893,1.686341 c 0,0 -0.03047,-0.01043 0.01916,0.158334 0.05007,0.168847 2.07527,1.293045 2.204022,1.19735 0.128307,-0.09748 0.237991,-0.182748 0.237991,-0.182748 l -0.129198,-0.365496 0.517771,-0.513404 0.194509,-0.513405 0.84228,-0.294125 0.647413,-1.613188 -0.194063,-0.438559 0.452458,-0.659532 0.971923,-0.220972 0.518572,-1.172936 -0.129643,-1.465279 0.777057,-1.099873 0.129643,-1.099873 c -1.063341,-0.527304 -2.11795,-1.07029 -3.17336,-1.613188" + id="path8136" + style="fill:url(#radialGradient8583);fill-opacity:1;stroke:url(#radialGradient8585);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(0.468894,0,0,0.468894,50.523,-14.4411)" + style="fill:url(#radialGradient8595);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient8597);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8138"> + <path + d="m 26.8701,6.6933256 -1.8906,-0.7407 -2.1797,0.2466 -2.6904,0.7402 -0.5088,0.4941 1.6719,1.1514 0,0.6582 -0.6543,0.6582 0.873,1.7289984 0.5801,-0.3301 0.7285,-1.151399 c 1.123,-0.3471994 2.1299,-0.7406994 3.1973,-1.2343994 l 0.873,-2.2212" + id="path8140" + style="fill:url(#radialGradient8591);fill-opacity:1;stroke:url(#radialGradient8593);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(0.468894,0,0,0.468894,50.8324,-14.7504)" + style="fill:url(#radialGradient8603);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient8605);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8142"> + <path + d="m 15.187259,9.6334723 -0.3638,0.9047987 0.7271,0 0.3638,-0.8227987 c 0.3135,-0.2217 0.6255,-0.4448 0.9448,-0.6582 l 0.7271,0.2471 c 0.4844,0.3291 0.9688,0.6582 1.4536,0.9867997 l 0.7275,-0.6576997 -0.8003,-0.3291 -0.3638,-0.7407 -1.3809,-0.1646 -0.0728,-0.4116 -0.6543,0.165 -0.2904,0.5758 -0.3638,-0.7407 -0.145,0.3291 0.0728,0.8228 -0.5816,0.494" + id="path8144" + style="fill:url(#radialGradient8599);fill-opacity:1;stroke:url(#radialGradient8601);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(0.468894,0,0,0.468894,50.1253,-14.4853)" + style="fill:url(#radialGradient8611);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient8613);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + id="g8146"> + <path + d="m 42.893123,20.729176 c 0,0.241194 0,0 0,0 l -0.500291,0.566672 c -0.306657,-0.361377 -0.650957,-0.66528 -1.000583,-0.982679 l -0.767468,0.112931 -0.701179,-0.792625 0,0.980934 0.600735,0.454568 0.399848,0.452824 0.534354,-0.604316 c 0.134506,0.251936 0.267177,0.503872 0.400765,0.755808 l 0,0.754982 -0.601653,0.679602 -1.101026,0.755808 -0.83385,0.832105 -0.534354,-0.606152 0.267177,-0.679603 -0.533527,-0.604315 -0.901057,-1.92597 -0.767468,-0.867912 -0.200888,0.225953 0.30124,1.095701 0.566672,0.641959 c 0.323642,0.934293 0.643796,1.82727 1.0688,2.720339 0.659036,0 1.280338,-0.06996 1.934875,-0.15241 l 0,0.529029 -0.800704,1.964072 -0.734324,0.830269 -0.600735,1.285754 c 0,0.70476 0,1.40952 0,2.114188 l 0.200888,0.832105 -0.333558,0.376618 -0.735242,0.45365 -0.767468,0.641959 0.634798,0.717338 -0.867912,0.756727 0.166733,0.489549 -1.301914,1.474064 -0.866994,0 -0.734324,0.45365 -0.468064,0 0,-0.604316 -0.199052,-1.210468 c -0.258271,-0.758562 -0.527192,-1.511708 -0.800705,-2.264853 0,-0.55593 0.03314,-1.106443 0.06638,-1.662282 l 0.334477,-0.754981 -0.468065,-0.907392 0.03406,-1.246275 -0.634798,-0.717338 0.317399,-1.038318 -0.516451,-0.585953 -0.901974,0 -0.300322,-0.339801 -0.901057,0.567131 -0.366702,-0.416466 -0.834768,0.717706 C 27.577179,26.356327 27.009588,25.714368 26.44209,25.072409 l -0.667116,-1.586995 0.600735,-0.905555 -0.333558,-0.377445 0.733405,-1.738579 c 0.602571,-0.749564 1.231952,-1.468647 1.868586,-2.190392 l 1.135089,-0.302158 1.267852,-0.150666 0.867912,0.226871 1.234615,1.245357 0.434001,-0.490467 0.599817,-0.07529 1.135089,0.377445 0.867913,0 0.600735,-0.529029 0.267177,-0.377445 -0.601654,-0.377445 -1.0015,-0.07529 c -0.277919,-0.385524 -0.53619,-0.790789 -0.866168,-1.133344 l -0.334476,0.150665 -0.133589,0.982679 -0.600735,-0.679603 -0.13267,-0.756726 -0.667116,-0.527192 -0.268095,0 0.667942,0.754981 -0.267177,0.679603 -0.533527,0.150666 0.333558,-0.679603 -0.601654,-0.30124 -0.532609,-0.604315 -1.002419,0.225952 -0.13267,0.30124 -0.600735,0.378363 -0.333558,0.831187 -0.83385,0.415088 -0.36762,-0.415088 -0.399848,0 0,-1.360124 0.867912,-0.45365 0.667116,0 -0.134506,-0.52811 -0.53261,-0.529029 0.900231,-0.189228 0.500291,-0.565754 0.399847,-0.680521 0.735242,0 -0.200888,-0.52811 0.468065,-0.302158 0,0.604315 1.000582,0.225953 1.000583,-0.830268 0.06721,-0.378363 0.866994,-0.603857 c -0.313818,0.03902 -0.627636,0.06767 -0.934293,0.151125 l 0,-0.680429 0.333558,-0.755441 -0.333558,0 -0.733038,0.679603 -0.200888,0.377904 0.200888,0.529488 -0.334476,0.905555 -0.533528,-0.302158 -0.466229,-0.52811 -0.735241,0.52811 -0.267177,-1.208172 1.267851,-0.830728 0,-0.4536504 0.801531,-0.5285696 1.267851,-0.302617 0.867912,0.302617 1.601318,0.3021579 -0.399848,0.4528241 -0.867912,0 0.867912,0.906474 0.667117,-0.754982 0.202632,-0.3321814 c 0,0 2.558931,2.2934994 4.021335,4.8023004 1.462404,2.509628 2.149168,5.46758 2.149168,6.068315 z" + id="path8148" + style="fill:url(#radialGradient8607);fill-opacity:1;stroke:url(#radialGradient8609);stroke-width:0.62689197;stroke-linecap:round;stroke-linejoin:round" + inkscape:connector-curvature="0" /> + </g> + </g> + </g> + <rect + style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1;stroke-opacity:1;stroke-dasharray:none" + id="rect2693" + width="0" + height="0.80252302" + x="721.57831" + y="82.00975" /> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif" + x="590.7384" + y="49.072498" + id="text3810"><tspan + sodipodi:role="line" + id="tspan3812" + x="590.7384" + y="49.072498" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:DejaVu Sans">PSTN</tspan></text> + <g + id="g8347" + transform="matrix(0.839909,0,0,0.839909,108.91065,90.0005)" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + inkscape:label="Layer 1" + id="layer1-5" + transform="matrix(1.93811,0,0,1.93811,551.368,434.746)" + style="opacity:0.8;stroke-linecap:round;stroke-linejoin:round"> + <g + transform="matrix(1.67343,0,0,1.67343,-3.18926,-2.66854)" + id="g3020" + inkscape:label="Layer 1" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + id="g8936" + transform="matrix(1.28471,0,0,1.28471,-63.8963,19.9689)"> + <path + transform="matrix(1,0,0,1.19247,-0.590821,-2.37871)" + d="M 73.25,4.625 C 73.25,6.6270322 68.493025,8.25 62.625,8.25 56.756975,8.25 52,6.6270322 52,4.625 52,2.6229678 56.756975,1 62.625,1 68.493025,1 73.25,2.6229678 73.25,4.625 z" + sodipodi:ry="3.625" + sodipodi:rx="10.625" + sodipodi:cy="4.625" + sodipodi:cx="62.625" + id="path8836" + style="opacity:0.56044;color:#000000;fill:url(#radialGradient7184);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + sodipodi:type="arc" /> + <path + id="path6495" + d="m 71.455637,-3.5111605 c 0,5.1118327 -4.144037,9.255822 -9.255167,9.255822 -5.111598,0 -9.2554,-4.1440362 -9.2554,-9.255822 0,-5.1115983 4.143802,-9.2551665 9.2554,-9.2551665 5.11113,0 9.255167,4.1435682 9.255167,9.2551665 l 0,0 z" + style="fill:url(#radialGradient7186);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.28574401;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.527473;fill:none;stroke:url(#linearGradient7188);stroke-width:0.28574499;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 70.945908,-3.5111451 c 0,4.8302718 -3.915782,8.7460091 -8.74539,8.7460091 -4.83005,0 -8.745611,-3.9157817 -8.745611,-8.7460091 0,-4.8300503 3.915561,-8.7453899 8.745611,-8.7453899 4.829608,0 8.74539,3.9153396 8.74539,8.7453899 l 0,0 z" + id="path8655" + inkscape:connector-curvature="0" /> + <image + y="-11.413214" + x="61.522053" + id="image6522" + href="62169F0D.png" + height="16.411282" + width="10.784556" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9570);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-10.94432" + x="61.990948" + id="image6530" + href="62169F0E.png" + height="2.3444688" + width="2.3444688" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9572);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <g + id="g6532" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient9574);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,50.3904,-14.5737)"> + <path + style="fill:#9db029;stroke:url(#radialGradient7194);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6534" + d="m 26.0703,9.2363 -0.0732,0.4932 0.5098,0.3291 0.8711,-0.5757 -0.4355,-0.4937 -0.582,0.3296 -0.29,-0.0825" + inkscape:connector-curvature="0" /> + </g> + <image + y="-12.819895" + x="58.708691" + id="image6538" + href="62169F0F.png" + height="4.6889377" + width="5.6267252" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9576);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-9.5376387" + x="62.928734" + id="image6546" + href="62169F10.png" + height="2.3444688" + width="2.3444688" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9578);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <g + id="g6548" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient9580);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,49.7717,-14.5737)"> + <path + style="fill:#9db029;stroke:url(#radialGradient7202);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6550" + d="m 28.833,12.7749 -0.291,-0.7412 -0.5098,0.165 0.1465,0.9043 0.6543,-0.3281" + inkscape:connector-curvature="0" /> + </g> + <image + y="-10.006532" + x="63.397629" + id="image6554" + href="62169F11.png" + height="3.2822564" + width="2.3444688" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9582);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <g + id="g6556" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient9584);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,49.9485,-14.5737)"> + <path + style="fill:#9db029;stroke:url(#radialGradient7208);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6558" + d="m 29.123,12.6089 -0.1455,0.9883 0.7998,-0.165 0.5811,-0.5752 -0.5088,-0.4941 C 29.6787,11.9078 29.4824,11.483 29.2685,11.0465 l -0.4355,0 0,0.4932 0.29,0.3291 0,0.7402" + inkscape:connector-curvature="0" /> + </g> + <image + y="-11.413214" + x="52.144176" + id="image6562" + href="62169F12.png" + height="17.34907" + width="9.8467684" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9586);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-10.94432" + x="57.770901" + id="image6570" + href="62169F13.png" + height="2.3444688" + width="2.3444688" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9588);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <g + id="g6572" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient9590);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,50.3904,-14.5737)"> + <path + style="fill:#9db029;stroke:url(#radialGradient7216);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6574" + d="m 16.7656,9.5649 0.7266,0.4937 0.582,0 0,-0.5757 -0.7266,-0.3291 -0.582,0.4111" + inkscape:connector-curvature="0" /> + </g> + <image + y="-11.882107" + x="56.36422" + id="image6578" + href="62169F14.png" + height="3.2822564" + width="4.2200437" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9592);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-12.819895" + x="57.30201" + id="image6606" + href="2D44FCEC.png" + height="2.8133626" + width="3.7511499" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9594);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <g + id="g6608" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient9596);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,50.9649,-14.5295)"> + <path + style="fill:#9db029;stroke:url(#radialGradient7224);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6610" + d="m 17.4922,7.887132 0.3638,-0.3286 0.7271,-0.1646 c 0.498,-0.2422 0.998,-0.4053 1.5264,-0.5762 l -0.29,-0.4937 -0.9385,0.1348 -0.4434,0.4419 -0.731,0.106 -0.6499,0.3052 -0.3159,0.1528 -0.1929,0.2583 0.9443,0.1641" + inkscape:connector-curvature="0" /> + </g> + <image + y="-8.5998507" + x="58.239796" + id="image6614" + href="2D44FCED.png" + height="2.3444688" + width="2.3444688" + style="opacity:0.75;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9598);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <g + id="g6616" + style="fill:#9db029;fill-rule:nonzero;stroke:url(#radialGradient9600);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,50.5672,-14.3085)"> + <path + style="fill:#9db029;stroke:url(#radialGradient7230);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6618" + d="m 18.7285,14.6665 0.4365,-0.6582 -0.6548,-0.4932 0.2183,1.1514" + inkscape:connector-curvature="0" /> + </g> + <image + y="-11.413214" + x="61.522053" + id="image6624" + href="2D44FCEE.png" + height="16.411282" + width="10.784556" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9602);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-10.94432" + x="61.990948" + id="image6632" + href="2D44FCEF.png" + height="2.3444688" + width="2.3444688" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9604);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-12.819895" + x="58.708691" + id="image6640" + href="2D44FCF0.png" + height="4.6889377" + width="5.6267252" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9606);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-9.5376387" + x="62.928734" + id="image6648" + href="2D44FCF1.png" + height="2.3444688" + width="2.3444688" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9608);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-10.006532" + x="63.397629" + id="image6656" + href="2D44FCF2.png" + height="3.2822564" + width="2.3444688" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9610);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-11.413214" + x="52.144176" + id="image6664" + href="2D44FCF3.png" + height="17.34907" + width="9.8467684" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9612);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-10.94432" + x="57.770901" + id="image6672" + href="2D44FCF4.png" + height="2.3444688" + width="2.3444688" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9614);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-11.882107" + x="56.36422" + id="image6680" + href="2D44FCF5.png" + height="3.2822564" + width="4.2200437" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9616);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-12.819895" + x="57.30201" + id="image6708" + href="2D44FD11.png" + height="2.8133626" + width="3.7511499" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9618);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <image + y="-8.5998507" + x="58.239796" + id="image6716" + href="2D44FD12.png" + height="2.3444688" + width="2.3444688" + style="opacity:0.15750002;fill:#ffffff;fill-rule:nonzero;stroke:url(#radialGradient9620);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" /> + <g + id="g6564" + style="fill:url(#radialGradient9622);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient9624);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,50.744,-14.6178)"> + <path + style="fill:url(#radialGradient7254);fill-opacity:1;stroke:url(#radialGradient7256);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6566" + d="m 17.943241,27.768799 -0.518573,-1.02672 -0.971477,-0.219726 -0.518127,-1.392215 -1.295183,0.146216 -1.100764,-0.805748 -1.166432,1.025918 0,0.161809 C 12.019842,25.55649 11.586095,25.54259 11.271922,25.349417 l -0.259287,-0.732684 0,-0.806638 -0.777056,0.07306 c 0.06487,-0.513404 0.129197,-1.025918 0.194509,-1.539233 l -0.4537956,0 -0.4529044,0.586468 -0.4537955,0.219279 -0.6478592,-0.365495 -0.064866,-0.806639 0.1296431,-0.879702 0.9719225,-0.732684 0.7770571,0 0.129197,-0.440252 0.971477,0.219279 0.712636,0.880593 0.129643,-1.467061 1.230764,-1.025918 0.45335,-1.099872 0.906699,-0.366298 0.518127,-0.732684 1.165541,-0.220973 0.583439,-0.878811 c -0.582993,0 -1.165987,0 -1.74898,0 l 1.10112,-0.513404 0.776612,0 1.101565,-0.367189 0.129643,-0.438559 -0.388929,-0.367188 -0.45335,-0.147018 0.129643,-0.43945 -0.323707,-0.659532 -0.777502,0.292343 0.129643,-0.586022 -0.9067,-0.513405 -0.71219,1.245554 0.06442,0.440252 -0.71219,0.294125 -0.453796,0.952766 -0.194064,-0.879702 -1.230763,-0.513405 -0.194509,-0.659531 1.619336,-0.953657 0.712636,-0.659532 0.06487,-0.8061926 -0.388483,-0.2201702 -0.518127,-0.073509 -0.323707,0.8066378 c 0,0 -0.54165,0.106121 -0.680916,0.140514 -1.778561,1.638938 -5.372215,5.176904 -6.2070989,11.856064 0.033057,0.154859 0.6051795,1.052827 0.6051795,1.052827 l 1.3600498,0.805747 1.3600499,0.367189 0.5834387,0.733486 0.906254,0.659531 0.518127,-0.07306 0.388484,0.174907 0,0.118327 -0.517771,1.392661 -0.388929,0.586468 0.129643,0.294125 -0.323707,1.098091 1.165987,2.126592 1.16554,1.02672 0.518573,0.732684 -0.06522,1.540125 0.38893,0.878811 -0.38893,1.686341 c 0,0 -0.03047,-0.01043 0.01916,0.158334 0.05007,0.168847 2.07527,1.293045 2.204022,1.19735 0.128307,-0.09748 0.237991,-0.182748 0.237991,-0.182748 l -0.129198,-0.365496 0.517771,-0.513404 0.194509,-0.513405 0.84228,-0.294125 0.647413,-1.613188 -0.194063,-0.438559 0.452458,-0.659532 0.971923,-0.220972 0.518572,-1.172936 -0.129643,-1.465279 0.777057,-1.099873 0.129643,-1.099873 c -1.063341,-0.527304 -2.11795,-1.07029 -3.17336,-1.613188" + inkscape:connector-curvature="0" /> + </g> + <g + id="g6540" + style="fill:url(#radialGradient9626);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient9628);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,50.523,-14.4411)"> + <path + style="fill:url(#radialGradient7262);fill-opacity:1;stroke:url(#radialGradient7264);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6542" + d="m 26.8701,6.6933256 -1.8906,-0.7407 -2.1797,0.2466 -2.6904,0.7402 -0.5088,0.4941 1.6719,1.1514 0,0.6582 -0.6543,0.6582 0.873,1.7289984 0.5801,-0.3301 0.7285,-1.151399 c 1.123,-0.3471994 2.1299,-0.7406994 3.1973,-1.2343994 l 0.873,-2.2212" + inkscape:connector-curvature="0" /> + </g> + <g + id="g6580" + style="fill:url(#radialGradient9630);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient9632);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,50.8324,-14.7504)"> + <path + style="fill:url(#radialGradient7270);fill-opacity:1;stroke:url(#radialGradient7272);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6582" + d="m 15.187259,9.6334723 -0.3638,0.9047987 0.7271,0 0.3638,-0.8227987 c 0.3135,-0.2217 0.6255,-0.4448 0.9448,-0.6582 l 0.7271,0.2471 c 0.4844,0.3291 0.9688,0.6582 1.4536,0.9867997 l 0.7275,-0.6576997 -0.8003,-0.3291 -0.3638,-0.7407 -1.3809,-0.1646 -0.0728,-0.4116 -0.6543,0.165 -0.2904,0.5758 -0.3638,-0.7407 -0.145,0.3291 0.0728,0.8228 -0.5816,0.494" + inkscape:connector-curvature="0" /> + </g> + <g + id="g6626" + style="fill:url(#radialGradient9634);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient9636);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" + transform="matrix(0.468894,0,0,0.468894,50.1253,-14.4853)"> + <path + style="fill:url(#radialGradient7278);fill-opacity:1;stroke:url(#radialGradient7280);stroke-width:0.61431402;stroke-linecap:round;stroke-linejoin:round" + id="path6628" + d="m 42.893123,20.729176 c 0,0.241194 0,0 0,0 l -0.500291,0.566672 c -0.306657,-0.361377 -0.650957,-0.66528 -1.000583,-0.982679 l -0.767468,0.112931 -0.701179,-0.792625 0,0.980934 0.600735,0.454568 0.399848,0.452824 0.534354,-0.604316 c 0.134506,0.251936 0.267177,0.503872 0.400765,0.755808 l 0,0.754982 -0.601653,0.679602 -1.101026,0.755808 -0.83385,0.832105 -0.534354,-0.606152 0.267177,-0.679603 -0.533527,-0.604315 -0.901057,-1.92597 -0.767468,-0.867912 -0.200888,0.225953 0.30124,1.095701 0.566672,0.641959 c 0.323642,0.934293 0.643796,1.82727 1.0688,2.720339 0.659036,0 1.280338,-0.06996 1.934875,-0.15241 l 0,0.529029 -0.800704,1.964072 -0.734324,0.830269 -0.600735,1.285754 c 0,0.70476 0,1.40952 0,2.114188 l 0.200888,0.832105 -0.333558,0.376618 -0.735242,0.45365 -0.767468,0.641959 0.634798,0.717338 -0.867912,0.756727 0.166733,0.489549 -1.301914,1.474064 -0.866994,0 -0.734324,0.45365 -0.468064,0 0,-0.604316 -0.199052,-1.210468 c -0.258271,-0.758562 -0.527192,-1.511708 -0.800705,-2.264853 0,-0.55593 0.03314,-1.106443 0.06638,-1.662282 l 0.334477,-0.754981 -0.468065,-0.907392 0.03406,-1.246275 -0.634798,-0.717338 0.317399,-1.038318 -0.516451,-0.585953 -0.901974,0 -0.300322,-0.339801 -0.901057,0.567131 -0.366702,-0.416466 -0.834768,0.717706 C 27.577179,26.356327 27.009588,25.714368 26.44209,25.072409 l -0.667116,-1.586995 0.600735,-0.905555 -0.333558,-0.377445 0.733405,-1.738579 c 0.602571,-0.749564 1.231952,-1.468647 1.868586,-2.190392 l 1.135089,-0.302158 1.267852,-0.150666 0.867912,0.226871 1.234615,1.245357 0.434001,-0.490467 0.599817,-0.07529 1.135089,0.377445 0.867913,0 0.600735,-0.529029 0.267177,-0.377445 -0.601654,-0.377445 -1.0015,-0.07529 c -0.277919,-0.385524 -0.53619,-0.790789 -0.866168,-1.133344 l -0.334476,0.150665 -0.133589,0.982679 -0.600735,-0.679603 -0.13267,-0.756726 -0.667116,-0.527192 -0.268095,0 0.667942,0.754981 -0.267177,0.679603 -0.533527,0.150666 0.333558,-0.679603 -0.601654,-0.30124 -0.532609,-0.604315 -1.002419,0.225952 -0.13267,0.30124 -0.600735,0.378363 -0.333558,0.831187 -0.83385,0.415088 -0.36762,-0.415088 -0.399848,0 0,-1.360124 0.867912,-0.45365 0.667116,0 -0.134506,-0.52811 -0.53261,-0.529029 0.900231,-0.189228 0.500291,-0.565754 0.399847,-0.680521 0.735242,0 -0.200888,-0.52811 0.468065,-0.302158 0,0.604315 1.000582,0.225953 1.000583,-0.830268 0.06721,-0.378363 0.866994,-0.603857 c -0.313818,0.03902 -0.627636,0.06767 -0.934293,0.151125 l 0,-0.680429 0.333558,-0.755441 -0.333558,0 -0.733038,0.679603 -0.200888,0.377904 0.200888,0.529488 -0.334476,0.905555 -0.533528,-0.302158 -0.466229,-0.52811 -0.735241,0.52811 -0.267177,-1.208172 1.267851,-0.830728 0,-0.4536504 0.801531,-0.5285696 1.267851,-0.302617 0.867912,0.302617 1.601318,0.3021579 -0.399848,0.4528241 -0.867912,0 0.867912,0.906474 0.667117,-0.754982 0.202632,-0.3321814 c 0,0 2.558931,2.2934994 4.021335,4.8023004 1.462404,2.509628 2.149168,5.46758 2.149168,6.068315 z" + inkscape:connector-curvature="0" /> + </g> + </g> + </g> + </g> + <text + id="text3849" + y="486.79901" + x="595.91199" + style="font-size:25.67140007px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif" + xml:space="preserve"><tspan + style="font-size:16.6685009px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:DejaVu Sans" + y="486.79901" + x="595.91199" + id="tspan3851" + sodipodi:role="line">Internet</tspan></text> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + id="layer1-0" + inkscape:label="Livello 1" + transform="matrix(2.38482,0,0,2.38482,-16.299968,149.577)"> + <rect + ry="0.41931883" + rx="0.41931883" + y="0.5625" + x="30.5" + height="9" + width="2" + id="rect7962" + style="fill:url(#linearGradient8222);fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path7885" + d="M 19.5625,5.5 C 16.753603,5.5 14.5,7.070666 14.5,9.03125 l 0,24.71875 c 0,5.958578 2.476602,10.75 5.5625,10.75 l 8.875,0 C 32.023397,44.5 34.5,39.708577 34.5,33.75 l 0,-24.71875 C 34.5,7.070666 32.246396,5.5 29.4375,5.5 l -9.875,0 z" + style="fill:url(#radialGradient8054);fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + d="M 19.5625,6 C 18.251247,6 17.065963,6.3684846 16.25,6.9375 15.434037,7.5065154 15,8.2425338 15,9.03125 L 15,33.75 c 0,2.910016 0.605563,5.525023 1.5625,7.375 0.956937,1.849977 2.215832,2.875 3.5,2.875 l 8.875,0 c 1.284168,0 2.543063,-1.025023 3.5,-2.875 C 33.394437,39.275023 34,36.660016 34,33.75 L 34,9.03125 C 34,8.2425339 33.565963,7.5065155 32.75,6.9375 31.934037,6.3684845 30.748752,6 29.4375,6 l -9.875,0 z" + id="path7086" + style="opacity:0.47761201;fill:url(#linearGradient7094);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:original="M 19.5625 5.5 C 16.753603 5.5 14.5 7.0706659 14.5 9.03125 L 14.5 33.75 C 14.5 39.708578 16.976602 44.5 20.0625 44.5 L 28.9375 44.5 C 32.023397 44.5 34.5 39.708577 34.5 33.75 L 34.5 9.03125 C 34.5 7.0706659 32.246396 5.5 29.4375 5.5 L 19.5625 5.5 z " + inkscape:radius="-0.5" + sodipodi:type="inkscape:offset" /> + <rect + transform="scale(-1,1)" + ry="1.2856876" + rx="1.2856876" + y="9.5" + x="-32.499992" + height="13" + width="15.999991" + id="rect7990" + style="opacity:0.59701502;fill:none;stroke:url(#linearGradient7998);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <rect + ry="0.85491931" + rx="0.85491931" + y="10.5" + x="17.5" + height="11" + width="14" + id="rect7889" + style="fill:url(#linearGradient7978);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="csccsccsccscc" + id="path7896" + d="M 19.5625,6.5 C 18.343394,6.5 17.249773,6.842685 16.53125,7.34375 15.812727,7.844815 15.5,8.431952 15.5,9.03125 l 0,24.71875 c 0,2.841524 0.590474,5.397929 1.5,7.15625 0.909526,1.758321 2.034198,2.59375 3.0625,2.59375 l 8.875,0 c 1.028302,0 2.152974,-0.835429 3.0625,-2.59375 0.909526,-1.758321 1.5,-4.314727 1.5,-7.15625 l 0,-24.71875 C 33.5,8.431952 33.187274,7.844815 32.46875,7.34375 31.750226,6.842685 30.656606,6.5 29.4375,6.5 l -9.875,0 z" + style="opacity:0.86194003;fill:none;stroke:url(#linearGradient7923);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + id="path7900" + d="M 25.5,41.558522 25.5,40.5" + style="fill:none;stroke:url(#linearGradient8010);stroke-width:0.419319px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + id="path7905" + d="m 23.5,41.558522 0,-1" + style="fill:none;stroke:url(#linearGradient8006);stroke-width:0.419319px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <rect + y="14" + x="25" + height="1" + width="1" + id="rect8057" + style="fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none" /> + <rect + y="13" + x="27" + height="2" + width="1" + id="rect8059" + style="fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none" /> + <rect + y="12" + x="29" + height="3" + width="1" + id="rect8061" + style="fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none" /> + <g + transform="translate(-50,-1)" + id="g8067" + style="stroke-linecap:round;stroke-linejoin:round"> + <rect + style="fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect8063" + width="1" + height="1" + x="69" + y="15" /> + <rect + style="fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect8065" + width="1" + height="1" + x="69" + y="13" /> + </g> + <rect + y="19" + x="19" + height="1" + width="3.0000002" + id="rect8074" + style="fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none" /> + <rect + y="19" + x="27" + height="1" + width="3.0000002" + id="rect8076" + style="fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:none" /> + <rect + y="18" + x="18" + height="1" + width="13" + id="rect8078" + style="opacity:0.39179101;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none" /> + <rect + ry="0.42249677" + rx="0.42249677" + y="11.5" + x="18.5" + height="9" + width="12" + id="rect7980" + style="opacity:0.09328362;fill:none;stroke:url(#linearGradient8242);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + sodipodi:nodetypes="ccssccssccccc" + id="path8355" + d="m 16.5,24.631663 0,3.055837 c 0,3.699177 0.399906,6.497467 1.09375,8.46875 0.346922,0.985642 0.755987,1.750468 1.3125,2.34375 0.556513,0.593282 1.302939,1 2.09375,1 l 7,0 c 0.785425,0 1.535575,-0.380226 2.09375,-0.96875 0.558175,-0.588524 0.965122,-1.392373 1.3125,-2.375 C 32.101007,34.190996 32.5,31.417446 32.5,27.6875 l 0,-3.055837 C 31.801719,23.004152 30.471547,23.5 28.96875,23.5 l -8.9375,0 c -1.85409,0 -2.556891,-0.438624 -3.53125,1.131663 z" + style="fill:none;stroke:url(#linearGradient7511);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + id="path8246" + d="M 18.0625,24.5 C 17.750875,24.5 17.5,24.750875 17.5,25.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 21.5,24.750875 21.249125,24.5 20.9375,24.5 l -0.90625,0 -1.96875,0 z m 5,0 C 22.750875,24.5 22.5,24.750875 22.5,25.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 26.5,24.750875 26.249125,24.5 25.9375,24.5 l -2.875,0 z m 5,0 C 27.750875,24.5 27.5,24.750875 27.5,25.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 31.5,24.750875 31.249125,24.5 30.9375,24.5 l -1.96875,0 -0.90625,0 z m -10,3 c -0.289811,0 -0.530702,0.218965 -0.5625,0.5 -0.0024,0.02115 0,0.04069 0,0.0625 0.003,0.379919 0.01966,0.734852 0.03125,1.09375 C 17.61642,29.358275 17.828781,29.5 18.0625,29.5 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 21.5,27.750875 21.249125,27.5 20.9375,27.5 l -2.875,0 z m 5,0 C 22.750875,27.5 22.5,27.750875 22.5,28.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 26.5,27.750875 26.249125,27.5 25.9375,27.5 l -2.875,0 z m 5,0 C 27.750875,27.5 27.5,27.750875 27.5,28.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.233719,0 0.446084,-0.141725 0.53125,-0.34375 0.01159,-0.361339 0.02823,-0.710723 0.03125,-1.09375 1.72e-4,-0.02187 -1.44e-4,-0.04056 0,-0.0625 -0.0318,-0.281035 -0.272689,-0.5 -0.5625,-0.5 l -2.875,0 z m -10,3 c -0.179784,0 -0.334665,0.08826 -0.4375,0.21875 0.04378,0.602024 0.08702,1.187395 0.15625,1.71875 0.08225,0.04698 0.179373,0.0625 0.28125,0.0625 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 21.5,30.750875 21.249125,30.5 20.9375,30.5 l -2.875,0 z m 5,0 C 22.750875,30.5 22.5,30.750875 22.5,31.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 26.5,30.750875 26.249125,30.5 25.9375,30.5 l -2.875,0 z m 5,0 C 27.750875,30.5 27.5,30.750875 27.5,31.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.101877,0 0.199002,-0.01552 0.28125,-0.0625 0.06784,-0.526351 0.113185,-1.122038 0.15625,-1.71875 C 31.272165,30.588256 31.117284,30.5 30.9375,30.5 l -2.875,0 z m -10.09375,3 c 0.134459,0.748868 0.283222,1.421542 0.46875,2 l 2.5,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 21.5,33.750875 21.249125,33.5 20.9375,33.5 l -2.875,0 c -0.03272,0 -0.06259,-0.0053 -0.09375,0 z m 5.09375,0 C 22.750875,33.5 22.5,33.750875 22.5,34.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 26.5,33.750875 26.249125,33.5 25.9375,33.5 l -2.875,0 z m 5,0 C 27.750875,33.5 27.5,33.750875 27.5,34.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.5,0 c 0.183775,-0.574728 0.335469,-1.254667 0.46875,-2 -0.03116,-0.0053 -0.06103,0 -0.09375,0 l -2.875,0 z m -9.125,3 c -0.04719,0 -0.08168,0.01236 -0.125,0.03125 C 19.410622,37.842551 20.169694,38.5 21,38.5 l 0.0625,0 c 0.233719,0 0.4375,-0.250875 0.4375,-0.5625 l 0,-0.875 C 21.5,36.750875 21.296218,36.5 21.0625,36.5 l -2.125,0 z m 4.125,0 C 22.750875,36.5 22.5,36.750875 22.5,37.0625 l 0,0.875 c 0,0.311625 0.250875,0.5625 0.5625,0.5625 l 2.875,0 c 0.311625,0 0.5625,-0.250875 0.5625,-0.5625 l 0,-0.875 C 26.5,36.750875 26.249125,36.5 25.9375,36.5 l -2.875,0 z m 4.875,0 C 27.703781,36.5 27.5,36.750875 27.5,37.0625 l 0,0.875 c 0,0.311625 0.203782,0.5625 0.4375,0.5625 L 28,38.5 c 0.835261,0 1.587757,-0.649928 2.1875,-1.96875 C 30.144179,36.512357 30.109693,36.5 30.0625,36.5 l -2.125,0 z" + style="fill:url(#linearGradient7532);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient7287);stroke-width:0.406739;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <g + style="opacity:0.85;stroke-linecap:round;stroke-linejoin:round" + id="g7493"> + <path + style="fill:none;stroke:url(#linearGradient7491);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 26.5,31.0625 C 26.5,30.750875 26.249125,30.5 25.9375,30.5 l -2.875,0 C 22.750875,30.5 22.5,30.750875 22.5,31.0625 l 0,0.875" + id="path7193" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7488);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 26.5,34.0625 C 26.5,33.750875 26.249125,33.5 25.9375,33.5 l -2.875,0 C 22.750875,33.5 22.5,33.750875 22.5,34.0625 l 0,0.875" + id="path7195" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7485);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 26.5,37.0625 C 26.5,36.750875 26.249125,36.5 25.9375,36.5 l -2.875,0 C 22.750875,36.5 22.5,36.750875 22.5,37.0625 l 0,0.875" + id="path7197" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7482);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 21.5,25.0625 C 21.5,24.750875 21.249125,24.5 20.9375,24.5 l -0.90625,0 -1.96875,0 C 17.750875,24.5 17.5,24.750875 17.5,25.0625 l 0,0.875" + id="path7191" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccc" + id="path7311" + d="M 26.5,25.0625 C 26.5,24.750875 26.249125,24.5 25.9375,24.5 l -2.875,0 C 22.750875,24.5 22.5,24.750875 22.5,25.0625 l 0,0.875" + style="fill:none;stroke:url(#linearGradient7479);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccccc" + id="path7313" + d="M 31.5,25.0625 C 31.5,24.750875 31.249125,24.5 30.9375,24.5 l -1.96875,0 -0.90625,0 C 27.750875,24.5 27.5,24.750875 27.5,25.0625 l 0,0.875" + style="fill:none;stroke:url(#linearGradient7476);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7473);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 21.5,28.0625 C 21.5,27.750875 21.249125,27.5 20.9375,27.5 l -0.90625,0 -1.96875,0 C 17.750875,27.5 17.5,27.750875 17.5,28.0625 l 0,0.875" + id="path7341" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccc" + id="path7343" + d="M 26.5,28.0625 C 26.5,27.750875 26.249125,27.5 25.9375,27.5 l -2.875,0 C 22.750875,27.5 22.5,27.750875 22.5,28.0625 l 0,0.875" + style="fill:none;stroke:url(#linearGradient7470);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccccc" + id="path7345" + d="M 31.5,28.0625 C 31.5,27.750875 31.249125,27.5 30.9375,27.5 l -1.96875,0 -0.90625,0 C 27.750875,27.5 27.5,27.750875 27.5,28.0625 l 0,0.875" + style="fill:none;stroke:url(#linearGradient7467);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7464);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 21.5,31.0625 C 21.5,30.750875 21.249125,30.5 20.9375,30.5 l -2.875,0 c -0.179784,0 -0.334665,0.08826 -0.4375,0.21875 0.04378,0.602024 0.08702,1.187395 0.15625,1.71875" + id="path7353" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7461);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 31.375,30.71875 C 31.272165,30.588256 31.117284,30.5 30.9375,30.5 l -2.875,0 C 27.750875,30.5 27.5,30.750875 27.5,31.0625 l 0,0.875" + id="path7355" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7458);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 31.03125,33.5 c -0.03116,-0.0053 -0.06103,0 -0.09375,0 l -2.875,0 C 27.750875,33.5 27.5,33.750875 27.5,34.0625 l 0,0.875" + id="path7361" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7455);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 21.5,34.0625 C 21.5,33.750875 21.249125,33.5 20.9375,33.5 l -2.875,0 c -0.03272,0 -0.06259,-0.0053 -0.09375,0 0.134459,0.748868 0.283222,1.421542 0.46875,2" + id="path7363" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7452);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 21.5,37.0625 C 21.5,36.750875 21.296218,36.5 21.0625,36.5 l -2.125,0 c -0.04719,0 -0.08168,0.01236 -0.125,0.03125" + id="path7369" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient7449);stroke-width:0.419319;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 30.1875,36.53125 C 30.144179,36.512357 30.109693,36.5 30.0625,36.5 l -2.125,0 C 27.703781,36.5 27.5,36.750875 27.5,37.0625 l 0,0.875" + id="path7371" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(0,1)" + style="fill:#555753;stroke-linecap:round;stroke-linejoin:round" + id="g7135" /> + <path + id="path6112" + d="M 24.5,8.558522 24.5,7.5" + style="fill:none;stroke:url(#linearGradient6116);stroke-width:0.419319px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + id="path6114" + d="m 22.5,8.558522 0,-1" + style="fill:none;stroke:url(#linearGradient6118);stroke-width:0.419319px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + id="path6120" + d="M 26.5,8.558522 26.5,7.5" + style="fill:none;stroke:url(#linearGradient6122);stroke-width:0.419319px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + inkscape:connector-curvature="0" /> + </g> + <g + transform="matrix(1.45152,0,0,1.45152,706,462.89113)" + id="g5044" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + id="g5046" + inkscape:label="Layer 1" + style="stroke-linecap:round;stroke-linejoin:round;display:inline"> + <path + sodipodi:type="arc" + style="opacity:0.2;fill:url(#radialGradient5236);fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path5048" + sodipodi:cx="23.9375" + sodipodi:cy="42.6875" + sodipodi:rx="23.75956" + sodipodi:ry="5.8835783" + d="m 47.69706,42.6875 c 0,3.249411 -10.637518,5.883578 -23.75956,5.883578 -13.122042,0 -23.75955963,-2.634167 -23.75955963,-5.883578 0,-3.249411 10.63751763,-5.883578 23.75955963,-5.883578 13.122042,0 23.75956,2.634167 23.75956,5.883578 z" + transform="matrix(0.968245,0,0,0.863797,1.44763,-0.747418)" /> + <g + id="g5050" + transform="translate(-25,0)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + style="opacity:0.20786498;fill:none;stroke:url(#linearGradient5238);stroke-width:0.688932;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" + d="M 66.13085,41.787912 C 57.847275,31.229854 73.566661,39.498791 71.897463,35.839689 70.26171,32.253903 51.343195,36.513864 53.3325,30.513864" + id="path5052" + sodipodi:nodetypes="czz" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="czz" + id="path5054" + d="M 65.675044,41.213388 C 57.656634,30.125 72.913568,39.404152 71.161327,35 69.172021,30 52.551603,36.027728 53.480248,30.116116" + style="fill:none;stroke:#729fcf;stroke-width:0.688932;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" + inkscape:connector-curvature="0" /> + </g> + <g + id="g5056" + transform="matrix(0.811017,0,0,0.811017,4.53606,4.14478)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + style="color:#000000;fill:url(#linearGradient5240);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.84946603;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 14.375479,32.558794 c 0,0 1.216876,4.898976 -3.856329,4.944966 -2.4302757,0.02175 -1.9324777,4.006021 -1.9324777,4.006021 l 30.8464667,-0.03115 c 0,0 0.418438,-3.867241 -2.022217,-3.912581 -4.987467,-0.09147 -3.810529,-5.06955 -3.810529,-5.06955 l -19.224914,0.06229 z" + id="path5058" + sodipodi:nodetypes="csccscc" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.5;fill:url(#linearGradient5242);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 13.926195,33.027451 c 0.08401,2.172549 -0.28454,2.911443 -1.640464,3.675231 L 36,38 c -0.952992,-1.168628 -2.339163,-2.933334 -1.961117,-4.988235 l -20.112688,0.01569 z" + id="path5060" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + id="path5062" + d="m 10.436202,38.661601 c 6.564263,0.002 27.126435,0 27.126435,0" + style="fill:none;stroke:#8d8d8f;stroke-width:0.84946603px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.43902402" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#ffffff;stroke-width:0.84946603px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 9.647928,39.660187 c 6.706693,0.002 28.719861,0 28.719861,0" + id="path5064" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + </g> + <rect + style="fill:none;stroke:none" + id="rect5066" + width="48" + height="48" + x="0" + y="-2.84375" /> + <path + style="fill:url(#linearGradient5244);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.688932;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" + d="m 4.8882799,0.5019965 38.1022591,0 c 2.023707,0 3.498537,1.4255519 3.498537,3.6208005 l 0.01094,25.165237 C 46.500019,30.977609 45.97204,31.5 44.466781,31.5 L 3.5326624,31.481093 C 2.3542134,31.452343 1.5154744,30.987161 1.4996519,29.464764 L 1.5148181,3.935329 c 0,-1.7712136 1.5383348,-3.4333325 3.3734618,-3.4333325 z" + id="path5068" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <rect + style="fill:url(#radialGradient5246);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:0.688932px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + id="rect5070" + width="37" + height="23" + x="5.5" + y="4.5" /> + <path + style="opacity:0.75;fill:url(#linearGradient5248);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="M 6,4.9921565 6,23 C 22.444445,21.645751 28.598693,12.887581 41.968627,11.972548 l 1e-6,-7.011764 L 6,4.9921565 z" + id="path5072" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <rect + y="-2.84375" + x="0" + height="48" + width="48" + id="rect5074" + style="fill:none;stroke:none" /> + <rect + style="fill:none;stroke:none" + id="rect5076" + width="48" + height="48" + x="0" + y="-2.84375" /> + <path + style="fill:none;stroke:#ffffff;stroke-width:0.68893099;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" + d="m 4.9838392,1.4949272 c -1.2994875,0 -2.4838385,1.2815188 -2.4838385,2.5365102 L 2.5,29.355478 c 0.00622,0.597159 0.1447546,0.782572 0.2794318,0.897058 0.1346773,0.114486 0.419191,0.204825 0.9003915,0.216531 L 44.352677,30.5 c 0.646964,0 0.851442,-0.1 0.931439,-0.185598 0.08,-0.0856 0.217336,-0.396637 0.217336,-1.144523 l 10e-7,-24.9528433 c 0,-1.7888213 -1.004252,-2.7221085 -2.60803,-2.7221085 l -37.9095838,0 z" + id="path5078" + sodipodi:nodetypes="cccsccscccc" + inkscape:connector-curvature="0" /> + <g + style="opacity:0.4;stroke-linecap:round;stroke-linejoin:round" + id="g5080" + transform="translate(0,13)"> + <rect + style="fill:url(#radialGradient5250);fill-opacity:1;stroke:none" + id="rect5082" + width="4" + height="4.5" + x="0" + y="30.5" /> + <rect + style="fill:url(#radialGradient5252);fill-opacity:1;stroke:none;display:inline" + id="rect5084" + width="4" + height="4.5" + x="-48" + y="-35" + transform="scale(-1,-1)" /> + <rect + style="fill:url(#linearGradient5254);fill-opacity:1;stroke:none" + id="rect5086" + width="40" + height="4.5" + x="4" + y="30.5" /> + </g> + <g + id="g5088" + transform="translate(48,0)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + style="fill:url(#linearGradient5256);fill-opacity:1;stroke:#888a85;stroke-width:0.68893403;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" + d="m -42.6875,40.49166 c -0.967886,0 -1.847763,0.285348 -2.4375,1.247229 l -1.8125,2.918046 c -0.808653,1.054721 -0.156385,1.859077 2.59375,1.859077 l 40.4375,0 c 2.750135,0 3.402403,-0.804356 2.59375,-1.859077 L -3.125,41.738889 C -3.714737,40.777008 -4.594614,40.49166 -5.5625,40.49166 l -37.125,0 z" + id="path5090" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1,0,0,0.666668,-48,15.8333)" + sodipodi:type="inkscape:offset" + inkscape:radius="-1" + inkscape:original="M 5.3125 37.5 C 4.344614 37.5 3.4647369 37.878926 2.875 39.15625 L 1.0625 43.03125 C 0.253847 44.43186 0.90611493 45.5 3.65625 45.5 L 44.09375 45.5 C 46.843885 45.5 47.496153 44.43186 46.6875 43.03125 L 44.875 39.15625 C 44.285263 37.878926 43.405386 37.5 42.4375 37.5 L 5.3125 37.5 z " + style="fill:none;stroke:#ffffff;stroke-width:0.843768;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;display:inline" + id="path5092" + d="m 5.3125,38.5 c -0.7068869,0 -1.0686379,0.06052 -1.53125,1.0625 a 1.0001,1.0001 0 0 1 0,0.03125 l -1.8125,3.875 a 1.0001,1.0001 0 0 1 -0.03125,0.0625 c -0.1455374,0.252075 -0.1851561,0.42743 -0.1875,0.5 -0.00234,0.07257 -0.035314,0.05527 0,0.09375 0.070629,0.07696 0.6606476,0.375 1.90625,0.375 l 40.4375,0 c 1.245602,0 1.835621,-0.298042 1.90625,-0.375 0.03531,-0.03848 0.0023,-0.02118 0,-0.09375 -0.0023,-0.07257 -0.04196,-0.247925 -0.1875,-0.5 a 1.0001,1.0001 0 0 1 -0.03125,-0.0625 l -1.8125,-3.875 a 1.0001,1.0001 0 0 1 0,-0.03125 C 43.506138,38.560518 43.144387,38.5 42.4375,38.5 l -37.125,0 z" /> + </g> + <g + transform="translate(-102,13.1809)" + inkscape:label="Shadow" + id="g5094" + style="stroke-linecap:round;stroke-linejoin:round" /> + <g + id="g5096" + inkscape:label="Shadow" + transform="translate(-102,28.2469)" + style="stroke-linecap:round;stroke-linejoin:round" /> + <g + id="g5098" + inkscape:label="Lavoro" + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + transform="translate(-102,28.2469)" /> + <g + id="g5100" + transform="translate(48,0)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + style="color:#000000;fill:url(#linearGradient5258);fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:0.68893099;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -41.565234,39.500963 c -0.003,0.0031 0.0028,0.02359 0,0.026 -0.01467,0.0041 -0.05022,0.02021 -0.06523,0.02601 -0.005,0.0021 -0.02762,-0.0023 -0.03262,0 -0.005,0.0025 -0.02769,0.0233 -0.03262,0.026 -0.0097,0.0058 -0.02321,0.01943 -0.03262,0.026 -0.0046,0.0035 -0.02815,0.02233 -0.03262,0.02601 -0.0043,0.0039 -0.02844,0.02193 -0.03262,0.02601 -0.06487,0.075 -0.133186,0.205396 -0.228319,0.364081 l -2.22755,3.952895 c 0,0.0049 -2.28e-4,0.02105 0,0.026 4.53e-4,0.005 -6.74e-4,0.02104 0,0.026 8.91e-4,0.005 -0.0011,0.02106 0,0.02601 0.0026,0.0099 0.02917,0.04222 0.03262,0.05201 0.0019,0.0049 -0.0021,0.02117 0,0.02601 0.0069,0.01439 0.02403,0.03804 0.03262,0.05201 0.0091,0.0138 0.02197,0.03881 0.03262,0.05201 0.0037,0.0043 0.02875,0.02176 0.03262,0.026 0.004,0.0042 0.02844,0.02194 0.03262,0.02601 0.02595,0.02385 0.06703,0.05818 0.09785,0.07802 0.0053,0.0032 0.02724,0.02296 0.03262,0.02601 0.0165,0.0079 0.04736,0.01884 0.06523,0.026 0.120228,0.04402 0.279283,0.07802 0.42402,0.07802 l 23.114643,0 -0.09785,-4.993121 -20.789242,-6e-6 c -0.06851,0 -0.143762,-0.0019 -0.195701,0 -0.01215,5.7e-5 -0.05203,5.11e-4 -0.06523,0 -0.004,2.5e-5 -0.02896,-2.14e-4 -0.03262,0 -0.0028,0.0024 -0.02957,-0.0031 -0.03262,0 z m 23.039809,6e-6 0.09785,1.664375 5.642726,0 -0.260935,-1.664375 -5.479641,0 z m 7.436655,0 1.17421,4.993121 5.218705,0 c 0.144736,0 0.303792,-0.034 0.42402,-0.07802 0.017877,-0.0072 0.048735,-0.0181 0.065233,-0.026 0.00538,-0.003 0.027357,-0.02283 0.032617,-0.02601 0.030821,-0.01983 0.071897,-0.05416 0.097851,-0.07802 0.00418,-0.0041 0.028592,-0.02185 0.032616,-0.02601 0.00387,-0.0042 0.028906,-0.02168 0.032618,-0.026 0.010648,-0.0132 0.023496,-0.03821 0.032617,-0.05201 0.00859,-0.01397 0.025688,-0.03762 0.032617,-0.05201 0.00212,-0.0048 -0.00192,-0.02114 0,-0.02601 0.00345,-0.0098 0.029987,-0.04214 0.032617,-0.05201 0.0011,-0.005 -8.92e-4,-0.02105 0,-0.02601 6.73e-4,-0.005 -4.54e-4,-0.02104 0,-0.026 2.29e-4,-0.005 0,-0.02106 0,-0.026 l -1.826015,-3.9529 C -5.834197,39.862396 -5.902512,39.732002 -5.967383,39.656999 -5.971557,39.652925 -5.99567,39.634868 -6,39.630993 c -0.00447,-0.0037 -0.028021,-0.02252 -0.032617,-0.02601 -0.00941,-0.0066 -0.022876,-0.02021 -0.032617,-0.026 -0.00493,-0.0027 -0.027643,-0.0235 -0.032616,-0.026 -0.005,-0.0023 -0.027608,0.0021 -0.032617,0 -0.015014,-0.0058 -0.050564,-0.02192 -0.065234,-0.02601 -0.016117,-0.0031 -0.041567,-0.02056 -0.065235,-0.026 -0.011875,-0.0025 -0.054353,0.0014 -0.065233,0 -0.05194,-0.0019 -0.127187,0 -0.195701,0 l -4.5669,6e-6 z m -6.131978,3.328747 -1.043741,1.664374 6.001511,0 -1.304677,-1.664374 -3.653093,0 z" + id="path5102" + sodipodi:nodetypes="csssssssccssssssssssssccccssscccccccccssssssssssssccsssssssssccccccc" + inkscape:connector-curvature="0" /> + <g + id="g5104" + style="fill:url(#radialGradient5380);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + transform="translate(-48,-0.00589)"> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="7" + height="1" + width="1" + id="rect5106" + style="color:#000000;fill:url(#radialGradient5260);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="9" + height="1" + width="1" + id="rect5108" + style="color:#000000;fill:url(#radialGradient5262);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="11" + height="1" + width="1" + id="rect5110" + style="color:#000000;fill:url(#radialGradient5264);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="13" + height="1" + width="1" + id="rect5112" + style="color:#000000;fill:url(#radialGradient5266);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="15" + height="1" + width="1" + id="rect5114" + style="color:#000000;fill:url(#radialGradient5268);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="17" + height="1" + width="1" + id="rect5116" + style="color:#000000;fill:url(#radialGradient5270);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="19" + height="1" + width="1" + id="rect5118" + style="color:#000000;fill:url(#radialGradient5272);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="21" + height="1" + width="1" + id="rect5120" + style="color:#000000;fill:url(#radialGradient5274);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="6" + height="1" + width="1" + id="rect5122" + style="color:#000000;fill:url(#radialGradient5276);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="8" + height="1" + width="1" + id="rect5124" + style="color:#000000;fill:url(#radialGradient5278);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="10" + height="1" + width="1" + id="rect5126" + style="color:#000000;fill:url(#radialGradient5280);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="12" + height="1" + width="1" + id="rect5128" + style="color:#000000;fill:url(#radialGradient5282);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="14" + height="1" + width="1" + id="rect5130" + style="color:#000000;fill:url(#radialGradient5284);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="16" + height="1" + width="1" + id="rect5132" + style="color:#000000;fill:url(#radialGradient5286);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="18" + height="1" + width="1" + id="rect5134" + style="color:#000000;fill:url(#radialGradient5288);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="20" + height="1" + width="1" + id="rect5136" + style="color:#000000;fill:url(#radialGradient5290);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="7" + height="1" + width="1" + id="rect5138" + style="color:#000000;fill:url(#radialGradient5292);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="9" + height="1" + width="1" + id="rect5140" + style="color:#000000;fill:url(#radialGradient5294);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="11" + height="1" + width="1" + id="rect5142" + style="color:#000000;fill:url(#radialGradient5296);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="13" + height="1" + width="1" + id="rect5144" + style="color:#000000;fill:url(#radialGradient5298);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="15" + height="1" + width="1" + id="rect5146" + style="color:#000000;fill:url(#radialGradient5300);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="17" + height="1" + width="1" + id="rect5148" + style="color:#000000;fill:url(#radialGradient5302);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="19" + height="1" + width="1" + id="rect5150" + style="color:#000000;fill:url(#radialGradient5304);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="21" + height="1" + width="1" + id="rect5152" + style="color:#000000;fill:url(#radialGradient5306);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="6" + height="1" + width="1" + id="rect5154" + style="color:#000000;fill:url(#radialGradient5308);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="8" + height="1" + width="1" + id="rect5156" + style="color:#000000;fill:url(#radialGradient5310);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="10" + height="1" + width="1" + id="rect5158" + style="color:#000000;fill:url(#radialGradient5312);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="12" + height="1" + width="1" + id="rect5160" + style="color:#000000;fill:url(#radialGradient5314);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="14" + height="1" + width="1" + id="rect5162" + style="color:#000000;fill:url(#radialGradient5316);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="16" + height="1" + width="1" + id="rect5164" + style="color:#000000;fill:url(#radialGradient5318);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="18" + height="1" + width="1" + id="rect5166" + style="color:#000000;fill:url(#radialGradient5320);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="20" + height="1" + width="1" + id="rect5168" + style="color:#000000;fill:url(#radialGradient5322);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="43" + x="5" + height="1" + width="1" + id="rect5170" + style="color:#000000;fill:url(#radialGradient5324);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="43" + x="7" + height="1" + width="1" + id="rect5172" + style="color:#000000;fill:url(#radialGradient5326);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="22" + height="1" + width="1" + id="rect5174" + style="color:#000000;fill:url(#radialGradient5328);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="23" + height="1" + width="1" + id="rect5176" + style="color:#000000;fill:url(#radialGradient5330);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="22" + height="1" + width="1" + id="rect5178" + style="color:#000000;fill:url(#radialGradient5332);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="23" + height="1" + width="1" + id="rect5180" + style="color:#000000;fill:url(#radialGradient5334);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="24" + height="1" + width="1" + id="rect5182" + style="color:#000000;fill:url(#radialGradient5336);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="25" + height="1" + width="1" + id="rect5184" + style="color:#000000;fill:url(#radialGradient5338);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="26" + height="1" + width="1" + id="rect5186" + style="color:#000000;fill:url(#radialGradient5340);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="25" + height="1" + width="1" + id="rect5188" + style="color:#000000;fill:url(#radialGradient5342);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="24" + height="1" + width="1" + id="rect5190" + style="color:#000000;fill:url(#radialGradient5344);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="26" + height="1" + width="1" + id="rect5192" + style="color:#000000;fill:url(#radialGradient5346);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="43" + x="25" + height="1" + width="1" + id="rect5194" + style="color:#000000;fill:url(#radialGradient5348);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="43" + x="23" + height="1" + width="1" + id="rect5196" + style="color:#000000;fill:url(#radialGradient5350);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="43" + x="31" + height="1" + width="1" + id="rect5198" + style="color:#000000;fill:url(#radialGradient5352);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="43" + x="33" + height="1" + width="1" + id="rect5200" + style="color:#000000;fill:url(#radialGradient5354);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="31" + height="1" + width="1" + id="rect5202" + style="color:#000000;fill:url(#radialGradient5356);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="33" + height="1" + width="1" + id="rect5204" + style="color:#000000;fill:url(#radialGradient5358);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="37" + height="1" + width="1" + id="rect5206" + style="color:#000000;fill:url(#radialGradient5360);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="38" + height="1" + width="1" + id="rect5208" + style="color:#000000;fill:url(#radialGradient5362);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="39" + x="39" + height="1" + width="1" + id="rect5210" + style="color:#000000;fill:url(#radialGradient5364);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="41" + height="1" + width="1" + id="rect5212" + style="color:#000000;fill:url(#radialGradient5366);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="41" + x="39" + height="1" + width="1" + id="rect5214" + style="color:#000000;fill:url(#radialGradient5368);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="38" + height="1" + width="1" + id="rect5216" + style="color:#000000;fill:url(#radialGradient5370);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="42" + x="40" + height="1" + width="1" + id="rect5218" + style="color:#000000;fill:url(#radialGradient5372);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="43" + x="41" + height="1" + width="1" + id="rect5220" + style="color:#000000;fill:url(#radialGradient5374);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="40" + x="40" + height="1" + width="1" + id="rect5222" + style="color:#000000;fill:url(#radialGradient5376);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0.18268055" + rx="0.18268055" + y="43" + x="43" + height="1" + width="1" + id="rect5224" + style="color:#000000;fill:url(#radialGradient5378);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + </g> + </g> + </g> + <g + id="g5226" + inkscape:label="tastiera" + style="stroke-linecap:round;stroke-linejoin:round;display:inline"> + <g + id="g5228" + inkscape:label="Shadow" + transform="translate(-54,0.18088)" + style="stroke-linecap:round;stroke-linejoin:round" /> + <g + transform="translate(-54,15.2469)" + inkscape:label="Shadow" + id="g5230" + style="stroke-linecap:round;stroke-linejoin:round" /> + <g + transform="translate(-54,15.2469)" + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + inkscape:label="Lavoro" + id="g5232" /> + </g> + <g + id="g5234" + inkscape:label="tasti" + style="stroke-linecap:round;stroke-linejoin:round;display:inline" /> + </g> + <g + transform="matrix(2.07029,0,0,2.07029,681.54,9.03133)" + id="layer2-5" + inkscape:label="phone" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + id="g2366" + transform="matrix(1.00031,0,0,1,-0.002355,-7.00001)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="ccczccccccccccz" + id="rect2276" + d="m 8.2474619,14.5 7.7498701,-2.999994 16,0 L 39.741876,14.5 c 0.256803,0.06883 0.747462,1.333368 0.747462,1.747462 l 0,2.505076 c 0,0.414094 -0.333368,0.747462 -0.747462,0.747462 l -5.752538,0 -2,-4 -15.5,0 -2.5,4 -5.7418761,0 C 7.833368,19.5 7.5,19.166632 7.5,18.752538 l 0,-2.505076 C 7.5,15.833368 7.9909958,14.568741 8.2474619,14.5 z" + style="color:#000000;fill:url(#radialGradient4024);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3404);stroke-width:0.48294699;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + </g> + <path + style="opacity:0.6;color:#000000;fill:none;stroke:url(#radialGradient4068);stroke-width:0.48294699;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="M 16.1875,12.46875 8.8125,15.3125 C 8.770706,15.38818 8.740325,15.496831 8.6875,15.625 8.559965,15.934436 8.46875,16.429219 8.46875,16.25 l 0,2.28125 5,0 c 0.858697,-1.529381 1.128913,-2.553892 3.03125,-2 l 15.5,0 c 0.859584,0.447471 1.469779,-1.114201 2.625,2 l 4.90625,0 0,-2.28125 c 0,0.178953 -0.09127,-0.31563 -0.21875,-0.625 -0.0528,-0.128142 -0.08323,-0.236865 -0.125,-0.3125 l -7.375,-2.84375 -15.625,0 z" + id="path4056" + sodipodi:nodetypes="ccsccccccccsccc" + transform="matrix(1.00031,0,0,1,-0.002355,-7.00001)" + inkscape:connector-curvature="0" /> + <g + id="g4065" + transform="matrix(1,0,0,1.0625,0,-1.3125)" + style="opacity:0.8;stroke-linecap:round;stroke-linejoin:round"> + <rect + y="21" + x="9.5" + height="8" + width="4" + id="rect4030" + style="fill:url(#radialGradient4070);fill-opacity:1;stroke:none" /> + <rect + transform="scale(-1,-1)" + y="-29" + x="-38.5" + height="8" + width="4" + id="rect4041" + style="fill:url(#radialGradient4072);fill-opacity:1;stroke:none" /> + <rect + y="21" + x="13.5" + height="8" + width="21" + id="rect4045" + style="fill:url(#linearGradient4074);fill-opacity:1;stroke:none" /> + </g> + <path + style="color:#000000;fill:url(#linearGradient1614);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient1616);stroke-width:0.48302299;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 17.509407,7.5 2,0 0.5,2 8.002512,0 0.497488,-2 2,0 c 1.123656,0 1.740719,0.9709838 2.03297,2 l 3.976136,13.999994 0.02763,2 c 0,1.060896 -0.904604,2 -2.02826,2 l -21.006594,0 c -1.123656,0 -1.972996,-0.939104 -1.972996,-2 l -0.02763,-2 L 15.509407,9.5 c 0.293822,-1.0286979 0.876344,-2 2,-2 z" + id="rect2236" + sodipodi:nodetypes="ccccccsccccccsc" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.24324299;color:#000000;fill:url(#linearGradient1601);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 30.504082,8 -1.588859,0.022097 -0.592,2 L 19.632583,9.955806 19.044665,8.022097 17.5,8 c -1.078709,0 -1.426702,0.8189946 -1.687047,1.789079 l -2.4042,8.958396 -1.157183,3.752519 c 6.001884,-7.205882 17.755181,4 21.876475,-5.73172 L 32.164603,9.789079 C 31.892547,8.8220351 31.582792,8 30.504082,8 z" + id="path2297" + sodipodi:nodetypes="ccccccscccsc" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.6;color:#000000;fill:none;stroke:url(#linearGradient1598);stroke-width:0.48302299;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 17.500314,8.5 1.234521,0 0.497174,2 9.444768,-0.0221 0.654679,-1.9779 1.17294,0 c 0.500157,0 0.739705,0.088799 1.000314,1 l 4.004082,13.999994 0,1.5 c 0,1.5 0,1.5 -1.500471,1.5 l -20.00628,0 c -1.500471,0 -1.500471,0 -1.500471,-1.5 l 0,-1.5 L 16.5,9.5 c 0.260325,-0.911495 0.500157,-1 1.000314,-1 z" + id="path2279" + sodipodi:nodetypes="ccccccsccccccsc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient2960);fill-opacity:1;stroke:none" + d="m 18.67949,9.4999962 10.64178,0 c 0.597659,0 1.078805,0.4882234 1.078805,1.0946718 L 32,21.40532 c 0,0.606448 -0.481147,1.094672 -1.078807,1.094672 l -13.853815,-0.01237 c -0.59766,0 -1.078807,-0.488223 -1.078807,-1.094671 l 1.612114,-10.798283 c 0,-0.6064484 0.481147,-1.0946718 1.078805,-1.0946718 z" + id="rect4094" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <g + id="g3067" + transform="translate(0,0.5)" + style="fill:url(#linearGradient9568);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="ccccccccc" + id="path3043" + d="m 18.558806,13 2.221403,0.01105 c 0.30958,0 0.574433,0.228459 0.558808,0.512241 l -0.04285,0.964469 C 21.280538,14.771541 21.046935,15 20.737355,15 l -2.32218,0 c -0.309579,0 -0.605683,-0.228459 -0.558808,-0.512241 l 0.143631,-0.975518 C 18.031248,13.236272 18.249227,13 18.558806,13 z" + style="fill:url(#linearGradient6299);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3045" + d="m 22.891192,13 2.209799,0 c 0.30958,0 0.558808,0.228459 0.558808,0.512241 l 0.03906,0.975518 C 25.698861,14.771541 25.449633,15 25.140053,15 l -2.287924,0 c -0.309579,0 -0.558808,-0.228459 -0.558808,-0.512241 l 0.03906,-0.975518 C 22.332384,13.228459 22.581613,13 22.891192,13 z" + style="fill:url(#linearGradient6301);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3047" + d="m 27.223578,13 2.217611,0 c 0.30958,0 0.519745,0.244084 0.558808,0.512241 l 0.140625,0.975518 C 30.187497,14.775447 29.891394,15 29.581814,15 l -2.315267,0 c -0.309579,0 -0.54709,-0.228459 -0.558808,-0.512241 L 26.66477,13.512241 C 26.649145,13.228459 26.913999,13 27.223578,13 z" + style="fill:url(#linearGradient6303);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3049" + d="m 19.012241,10 1.942372,0 c 0.283782,0 0.535679,0.228459 0.512241,0.512241 l -0.04419,0.975518 C 21.42266,11.771541 21.194201,12 20.910419,12 l -2.074955,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 L 18.5,10.512241 C 18.5,10.228459 18.728459,10 19.012241,10 z" + style="fill:url(#linearGradient6305);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3051" + d="m 22.980991,10 2.030206,0 c 0.283782,0 0.512241,0.228459 0.512241,0.512241 l 0.03125,0.975518 C 25.554688,11.771541 25.326229,12 25.042447,12 l -2.100519,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 l 0.03906,-0.975518 C 22.46875,10.228459 22.697209,10 22.980991,10 z" + style="fill:url(#linearGradient6307);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3053" + d="m 27.035679,10 1.975518,0 c 0.283782,0 0.469272,0.224553 0.512241,0.512241 l 0.160156,0.975518 C 29.722656,11.771541 29.455135,12 29.171353,12 l -2.092706,0 c -0.283782,0 -0.496616,-0.228459 -0.512241,-0.512241 l -0.04297,-0.975518 C 26.507813,10.228459 26.751897,10 27.035679,10 z" + style="fill:url(#linearGradient6309);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3055" + d="m 18.140535,16 2.455797,0 c 0.335378,0 0.624907,0.232365 0.605376,0.512241 l -0.04297,0.975518 C 21.143114,17.767635 20.888741,18 20.553363,18 l -2.561265,0 C 17.65672,18 17.343754,17.771541 17.386723,17.487759 L 17.53516,16.512241 C 17.578129,16.232365 17.805157,16 18.140535,16 z" + style="fill:url(#linearGradient6311);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3057" + d="m 22.801401,16 2.389391,0 c 0.335378,0 0.605376,0.228459 0.605376,0.512241 l 0.03906,0.975518 C 25.83523,17.771541 25.565232,18 25.229854,18 l -2.459703,0 c -0.335378,0 -0.605375,-0.228459 -0.605375,-0.512241 l 0.03125,-0.975518 C 22.196026,16.228459 22.466023,16 22.801401,16 z" + style="fill:url(#linearGradient6313);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3059" + d="m 27.399767,16 2.447984,0 c 0.335378,0 0.566313,0.228459 0.605376,0.512241 l 0.144531,0.975518 C 30.64844,17.775447 30.32766,18 29.992282,18 l -2.549547,0 c -0.335378,0 -0.58975,-0.232365 -0.605375,-0.512241 L 26.79439,16.512241 C 26.782673,16.228459 27.064389,16 27.399767,16 z" + style="fill:url(#linearGradient6315);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3061" + d="m 17.730073,19 2.678359,0 c 0.361176,0 0.667568,0.236272 0.651943,0.512241 l -0.03125,0.975518 C 21.0135,20.763728 20.738358,21 20.377182,21 l -2.803359,0 c -0.361176,0 -0.683192,-0.228459 -0.651942,-0.512241 l 0.15625,-0.975518 C 17.109381,19.232365 17.368897,19 17.730073,19 z" + style="fill:url(#linearGradient6317);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3063" + d="m 22.723326,19 2.553357,0 c 0.361176,0 0.651943,0.228459 0.651943,0.512241 l 0.04297,0.975518 C 25.971595,20.771541 25.680828,21 25.319652,21 l -2.643201,0 c -0.361177,0 -0.651943,-0.228459 -0.651943,-0.512241 l 0.04687,-0.975518 C 22.071383,19.228459 22.362149,19 22.723326,19 z" + style="fill:url(#linearGradient6319);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path3065" + d="m 27.583765,19 2.674451,0 c 0.361176,0 0.616787,0.228459 0.651943,0.512241 l 0.15625,0.975518 C 31.109378,20.767635 30.775642,21 30.414466,21 l -2.783826,0 c -0.361177,0 -0.644131,-0.228459 -0.651943,-0.512241 l -0.04687,-0.975518 C 26.920103,19.228459 27.222588,19 27.583765,19 z" + style="fill:url(#linearGradient6321);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:url(#radialGradient2987);fill-opacity:1;stroke:none" + d="m 18.558806,13 2.221403,0.01105 c 0.30958,0 0.574433,0.228459 0.558808,0.512241 l -0.04285,0.964469 C 21.280538,14.771541 21.046935,15 20.737355,15 l -2.32218,0 c -0.309579,0 -0.605683,-0.228459 -0.558808,-0.512241 l 0.143631,-0.975518 C 18.031248,13.236272 18.249227,13 18.558806,13 z" + id="use6266" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient2983);fill-opacity:1;stroke:none" + d="m 22.891192,13 2.209799,0 c 0.30958,0 0.558808,0.228459 0.558808,0.512241 l 0.03906,0.975518 C 25.698861,14.771541 25.449633,15 25.140053,15 l -2.287924,0 c -0.309579,0 -0.558808,-0.228459 -0.558808,-0.512241 l 0.03906,-0.975518 C 22.332384,13.228459 22.581613,13 22.891192,13 z" + id="use6268" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient2979);fill-opacity:1;stroke:none" + d="m 27.223578,13 2.217611,0 c 0.30958,0 0.519745,0.244084 0.558808,0.512241 l 0.140625,0.975518 C 30.187497,14.775447 29.891394,15 29.581814,15 l -2.315267,0 c -0.309579,0 -0.54709,-0.228459 -0.558808,-0.512241 L 26.66477,13.512241 C 26.649145,13.228459 26.913999,13 27.223578,13 z" + id="use6270" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient6264);fill-opacity:1;stroke:none" + d="m 19.012241,10 1.942372,0 c 0.283782,0 0.535679,0.228459 0.512241,0.512241 l -0.04419,0.975518 C 21.42266,11.771541 21.194201,12 20.910419,12 l -2.074955,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 L 18.5,10.512241 C 18.5,10.228459 18.728459,10 19.012241,10 z" + id="rect5016" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient2968);fill-opacity:1;stroke:none" + d="m 22.980991,10 2.030206,0 c 0.283782,0 0.512241,0.228459 0.512241,0.512241 l 0.03125,0.975518 C 25.554688,11.771541 25.326229,12 25.042447,12 l -2.100519,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 l 0.03906,-0.975518 C 22.46875,10.228459 22.697209,10 22.980991,10 z" + id="use6252" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient2972);fill-opacity:1;stroke:none" + d="m 27.035679,10 1.975518,0 c 0.283782,0 0.469272,0.224553 0.512241,0.512241 l 0.160156,0.975518 C 29.722656,11.771541 29.455135,12 29.171353,12 l -2.092706,0 c -0.283782,0 -0.496616,-0.228459 -0.512241,-0.512241 l -0.04297,-0.975518 C 26.507813,10.228459 26.751897,10 27.035679,10 z" + id="use6254" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient3002);fill-opacity:1;stroke:none" + d="m 18.140535,16 2.455797,0 c 0.335378,0 0.624907,0.232365 0.605376,0.512241 l -0.04297,0.975518 C 21.143114,17.767635 20.888741,18 20.553363,18 l -2.561265,0 C 17.65672,18 17.343754,17.771541 17.386723,17.487759 L 17.53516,16.512241 C 17.578129,16.232365 17.805157,16 18.140535,16 z" + id="use6279" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient2998);fill-opacity:1;stroke:none" + d="m 22.801401,16 2.389391,0 c 0.335378,0 0.605376,0.228459 0.605376,0.512241 l 0.03906,0.975518 C 25.83523,17.771541 25.565232,18 25.229854,18 l -2.459703,0 c -0.335378,0 -0.605375,-0.228459 -0.605375,-0.512241 l 0.03125,-0.975518 C 22.196026,16.228459 22.466023,16 22.801401,16 z" + id="use6281" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient2994);fill-opacity:1;stroke:none" + d="m 27.399767,16 2.447984,0 c 0.335378,0 0.566313,0.228459 0.605376,0.512241 l 0.144531,0.975518 C 30.64844,17.775447 30.32766,18 29.992282,18 l -2.549547,0 c -0.335378,0 -0.58975,-0.232365 -0.605375,-0.512241 L 26.79439,16.512241 C 26.782673,16.228459 27.064389,16 27.399767,16 z" + id="use6283" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient3017);fill-opacity:1;stroke:none" + d="m 17.730073,19 2.678359,0 c 0.361176,0 0.667568,0.236272 0.651943,0.512241 l -0.03125,0.975518 C 21.0135,20.763728 20.738358,21 20.377182,21 l -2.803359,0 c -0.361176,0 -0.683192,-0.228459 -0.651942,-0.512241 l 0.15625,-0.975518 C 17.109381,19.232365 17.368897,19 17.730073,19 z" + id="use6287" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient3013);fill-opacity:1;stroke:none" + d="m 22.723326,19 2.553357,0 c 0.361176,0 0.651943,0.228459 0.651943,0.512241 l 0.04297,0.975518 C 25.971595,20.771541 25.680828,21 25.319652,21 l -2.643201,0 c -0.361177,0 -0.651943,-0.228459 -0.651943,-0.512241 l 0.04687,-0.975518 C 22.071383,19.228459 22.362149,19 22.723326,19 z" + id="use6289" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#radialGradient3009);fill-opacity:1;stroke:none" + d="m 27.583765,19 2.674451,0 c 0.361176,0 0.616787,0.228459 0.651943,0.512241 l 0.15625,0.975518 C 31.109378,20.767635 30.775642,21 30.414466,21 l -2.783826,0 c -0.361177,0 -0.644131,-0.228459 -0.651943,-0.512241 l -0.04687,-0.975518 C 26.920103,19.228459 27.222588,19 27.583765,19 z" + id="use6291" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <g + id="g3105" + style="fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + transform="translate(1,0.370117)"> + <text + id="text6117" + y="11.364" + x="19.6092" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="11.364" + x="19.6092" + id="tspan6119" + sodipodi:role="line">1</tspan></text> + <text + id="text6121" + y="11.364" + x="23.675301" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="11.364" + x="23.675301" + id="tspan6123" + sodipodi:role="line">2</tspan></text> + <text + id="text6125" + y="11.3579" + x="27.7743" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="11.3579" + x="27.7743" + id="tspan6127" + sodipodi:role="line">3</tspan></text> + <text + id="text6129" + y="14.364" + x="19.2623" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="14.364" + x="19.2623" + id="tspan6131" + sodipodi:role="line">4</tspan></text> + <text + id="text6133" + y="14.364" + x="23.675301" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="14.364" + x="23.675301" + id="tspan6135" + sodipodi:role="line">5</tspan></text> + <text + id="text6137" + y="14.3579" + x="28.0679" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="14.3579" + x="28.0679" + id="tspan6139" + sodipodi:role="line">6</tspan></text> + <text + id="text6141" + y="17.357901" + x="18.958" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="17.357901" + x="18.958" + id="tspan6143" + sodipodi:role="line">7</tspan></text> + <text + id="text6145" + y="17.364" + x="23.675301" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="17.364" + x="23.675301" + id="tspan6147" + sodipodi:role="line">8</tspan></text> + <text + id="text6149" + y="17.357901" + x="28.3689" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="17.357901" + x="28.3689" + id="tspan6151" + sodipodi:role="line">9</tspan></text> + <text + id="text6153" + y="20.3582" + x="18.662001" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="20.3582" + x="18.662001" + id="tspan6155" + sodipodi:role="line">#</tspan></text> + <text + id="text6157" + y="20.357901" + x="23.6665" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="20.357901" + x="23.6665" + id="tspan6159" + sodipodi:role="line">0</tspan></text> + <text + id="text6161" + y="20.8827" + x="28.5483" + style="font-size:1.73081005px;font-weight:bold;fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + xml:space="preserve"><tspan + style="font-size:1.73081005px;font-weight:bold;fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + y="20.8827" + x="28.5483" + id="tspan6163" + sodipodi:role="line">*</tspan></text> + </g> + </g> + <g + transform="matrix(1.48173,0,0,1.48173,666.859,95.8056)" + id="layer1-4" + inkscape:label="Layer 1" + style="stroke-linecap:round;stroke-linejoin:round" /> + <g + id="layer1-3" + inkscape:label="Vrstva 1" + transform="matrix(2.3886831,0,0,2.3886831,123.70512,135.22227)" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + transform="matrix(0.82988027,0,0,1.5027223,5.04861,-1.193873)" + id="g7115" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + style="fill:url(#linearGradient7121);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6985);stroke-width:0.443748px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 24,13 -16,31 3.5,0 2.5625,-5.3125 21.625,3.625 L 36.5,44 40,44 24,13 z m 0,4.96875 4,8.34375 -7.09375,-1.84375 3.09375,-6.5 z m -4,8.34375 7.28125,1.875 L 16.625,33.375 20,26.3125 z m 9.65625,3.46875 4.4375,9.21875 -17.4375,-2.90625 13,-6.3125 z" + id="path7060" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#ffffff;stroke-width:0.443748px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="M 38.40625,43.03125 24,15.125 9.59375,43.03125" + id="path7092" + sodipodi:nodetypes="ccc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#ffffff;stroke-width:0.443748px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="M 15.78125,34.90625 28.8125,28.5625" + id="path7097" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#ffffff;stroke-width:0.443748px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="M 15.09375,36.84375 34.75,40.125" + id="path7099" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + </g> + </g> + <text + id="text9682" + y="317.64258" + x="182.09781" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Serif" + xml:space="preserve"><tspan + y="317.64258" + x="182.09781" + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:DejaVu Sans" + id="tspan6595">BTS: Base</tspan><tspan + y="335.14258" + x="182.09781" + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:DejaVu Sans" + id="tspan6603">Transceiver</tspan><tspan + y="352.64258" + x="182.09781" + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:DejaVu Sans" + id="tspan6599">Station</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="326.67023" + y="295.97589" + id="text9686"><tspan + sodipodi:role="line" + id="tspan9688" + x="326.67023" + y="295.97589">BSC:</tspan><tspan + sodipodi:role="line" + x="326.67023" + y="313.47589" + id="tspan6587">Base Station</tspan><tspan + sodipodi:role="line" + x="326.67023" + y="330.97589" + id="tspan6591">Controller</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="483.98407" + y="283.42673" + id="text9694"><tspan + sodipodi:role="line" + id="tspan9696" + x="483.98407" + y="283.42673">CS-MGW</tspan></text> + <text + id="text9698" + y="400.69357" + x="480.37714" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="400.69357" + x="480.37714" + id="tspan9700" + sodipodi:role="line">SGSN</tspan></text> + <g + id="g9791" + transform="matrix(0.69916804,0,0,0.69916804,255.60783,39.383069)" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + transform="matrix(1.48173,0,0,1.48173,755.762,95.8056)" + id="g6053" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + id="g6055" + transform="matrix(0.0201927,0,0,0.0170832,-17.5399,42.4025)"> + <rect + y="-150.69685" + x="-1559.2523" + height="478.35718" + width="1339.6335" + id="rect6057" + style="opacity:0.39195999;color:#000000;fill:url(#linearGradient9874);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="cccc" + id="path6059" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + style="opacity:0.40206197;color:#000000;fill:url(#radialGradient9876);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.40206197;color:#000000;fill:url(#radialGradient9878);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + id="path6061" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + </g> + <g + id="g6063" + transform="translate(-60,30)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path6065" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient9880);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path6067" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g6070" + transform="translate(-60,24)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path6072" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient9882);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path6074" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g6076" + transform="translate(-60,18)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path6078" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient9884);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path6080" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g6082" + transform="translate(-60,12)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path6084" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient9886);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path6086" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g6088" + transform="translate(-60,6)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path6090" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient9888);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path6092" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g6094" + transform="translate(-60,0)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path6096" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient9890);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path6098" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <rect + style="fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect6100" + width="29.999998" + height="39.999996" + x="-50.5" + y="1.5" + rx="1.616383" + ry="1.6702623" /> + <g + id="g6102" + transform="translate(-62,1)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="cccccc" + id="path6104" + d="M 14,3 39.182408,3 40,3.6961651 40,25 14,25 14,3 z" + style="fill:#d3d7cf;fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccc" + id="path6106" + d="m 14,3 25.65625,0 c 1.055682,1.0277742 -0.49011,2.0151389 -2,2 L 12.625,5 C 14.126385,5 15.015732,3.4971845 14,3 z" + style="fill:#ffffff;fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + </g> + <rect + style="fill:url(#radialGradient9892);fill-opacity:1;stroke:#4e9a06;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect6108" + width="5" + height="10" + x="-20.5" + y="9.5" + rx="0.83513117" + ry="0.75161809" /> + <path + style="opacity:0.2;fill:none;stroke:#ffffff;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + d="m -48.079373,2.53125 c -0.800828,0 -1.389377,0.6089338 -1.389377,1.4375 l 0,35.0625 c 0,0.828566 0.588549,1.4375 1.389377,1.4375 l 25.189997,0 c 0.800828,0 1.389377,-0.608935 1.389377,-1.4375 l 0,-35.0625 c 0,-0.8285661 -0.58855,-1.4375 -1.389377,-1.4375 l -25.189997,0 z" + id="path6110" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.99302852" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + style="opacity:0.5;fill:none;stroke:url(#linearGradient9894);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6112-2" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + transform="translate(-62,-20)" /> + <rect + style="fill:url(#radialGradient9896);fill-opacity:1;stroke:#c4a000;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect6114" + width="8" + height="10" + x="-22.5" + y="19.5" + rx="0.83513117" + ry="0.83513117" /> + <rect + style="fill:url(#radialGradient9898);fill-opacity:1;stroke:#ce5c00;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect6116" + width="8" + height="10" + x="-21.5" + y="29.5" + rx="0.83513117" + ry="0.83513117" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.99302852" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + style="opacity:0.5;fill:none;stroke:url(#linearGradient9900);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6118" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + transform="translate(-61,-10)" /> + <rect + style="opacity:0.25;fill:#000000;fill-opacity:1;stroke:none" + id="rect6120" + width="6.8125" + height="10" + x="-24.8125" + y="19" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.99302852" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + style="opacity:0.5;fill:none;stroke:url(#linearGradient9902);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6122" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + transform="translate(-60,0)" /> + <rect + style="opacity:0.1;fill:#000000;fill-opacity:1;stroke:none" + id="rect6124" + width="6.8125" + height="11" + x="-24.8125" + y="29" /> + <rect + style="opacity:0.15517201;fill:#000000;fill-opacity:1;stroke:none" + id="rect6126" + width="7" + height="10" + x="-25" + y="9" /> + <path + sodipodi:nodetypes="ccccccccc" + id="rect6128" + d="m -49.025126,6.5 27.050252,0 C -20.603794,6.5 -19.5,7.6037937 -19.5,8.9748738 l 0,34.0502482 c 0,1.37108 -1.103794,2.474874 -2.474874,2.474874 l -27.050252,0 c -1.37108,0 -2.474874,-1.103794 -2.474874,-2.474874 l 0,-34.0502482 C -51.5,7.6037937 -50.396206,6.5 -49.025126,6.5 z" + style="fill:url(#linearGradient9904);fill-opacity:1;stroke:#204a87;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path6130" + d="M 10.96875,7 C 9.866556,7 9,7.8665563 9,8.96875 l 0,34.0625 C 9,44.133444 9.8665564,45 10.96875,45 l 27.0625,0 C 39.133444,45 40,44.133443 40,43.03125 L 40,8.96875 C 40,7.8665562 39.133443,7 38.03125,7 l -27.0625,0 z" + style="fill:url(#linearGradient9906);fill-opacity:1;stroke:none" + transform="translate(-60,0)" + inkscape:connector-curvature="0" /> + <path + transform="translate(-60,0)" + sodipodi:nodetypes="ccccccccc" + id="path6132" + d="m 10.96875,7.53125 c -0.828566,0 -1.4375,0.6089338 -1.4375,1.4375 l 0,34.0625 c 0,0.828566 0.608934,1.4375 1.4375,1.4375 l 27.0625,0 c 0.828566,0 1.4375,-0.608935 1.4375,-1.4375 l 0,-34.0625 c 0,-0.8285661 -0.608935,-1.4375 -1.4375,-1.4375 l -27.0625,0 z" + style="opacity:0.46120701;fill:none;stroke:url(#linearGradient9908);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6134" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,30.1455)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6136" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,24.1455)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6138" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,18.1455)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6140" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,6.14552)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6142" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,12.1455)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path6144" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,0.145517)" /> + <g + id="g6146" + transform="translate(-60,30)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path6148" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient9910);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path6150" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6152" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6154" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g6156" + transform="translate(-60,24)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path6158" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient9912);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path6160" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6162" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6164" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g6166" + transform="translate(-60,18)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path6168" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient9914);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path6170" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6172" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6174" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g6176" + transform="translate(-60,12)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path6178" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient9916);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path6180" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6182" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6184" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g6186" + transform="translate(-60,6)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path6188" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient9918);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path6190" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6192" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6194" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <path + style="font-size:23.55380058px;font-style:normal;font-weight:normal;fill:#8fbceb;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + d="m -36.126698,24.53508 c -9e-6,0.958803 0.196069,1.714927 0.588236,2.268374 0.399687,0.553456 0.938903,0.830181 1.617647,0.830178 0.671179,3e-6 1.206623,-0.276722 1.606334,-0.830178 0.399685,-0.561242 0.599535,-1.317366 0.599548,-2.268374 -1.3e-5,-0.943199 -0.203634,-1.68763 -0.61086,-2.233296 -0.399711,-0.553442 -0.938926,-0.830168 -1.617647,-0.830178 -0.663661,10e-6 -1.195335,0.276736 -1.595022,0.830178 -0.392167,0.545666 -0.588245,1.290097 -0.588236,2.233296 m 4.63801,3.519487 c -0.226258,0.553454 -0.59202,0.986082 -1.097286,1.297885 -0.49775,0.304009 -1.082214,0.456014 -1.753393,0.456013 -1.297144,10e-7 -2.352951,-0.483295 -3.167421,-1.449888 -0.806945,-0.974385 -1.210414,-2.241087 -1.210407,-3.800111 -7e-6,-1.559012 0.407232,-2.825714 1.221719,-3.800111 0.814471,-0.974376 1.866506,-1.461569 3.156109,-1.461581 0.671179,1.2e-5 1.255643,0.155913 1.753393,0.467706 0.505266,0.311815 0.871028,0.744442 1.097286,1.297884 l 0,-1.531736 2.364252,0 0,8.103004 c 0.935127,-0.148103 1.67042,-0.611911 2.205883,-1.391425 0.535426,-0.7873 0.803148,-1.792866 0.803167,-3.016703 -1.9e-5,-0.779502 -0.10937,-1.508343 -0.328054,-2.186526 -0.218722,-0.685957 -0.550546,-1.313463 -0.995475,-1.882516 -0.716458,-0.950989 -1.613892,-1.683728 -2.692308,-2.198218 -1.070904,-0.514461 -2.23229,-0.7717 -3.484163,-0.771714 -0.874822,1.4e-5 -1.711925,0.120838 -2.511312,0.362472 -0.799405,0.233867 -1.538469,0.580748 -2.217194,1.040646 -1.116145,0.763932 -1.987185,1.753908 -2.613122,2.969932 -0.618405,1.208249 -0.927606,2.517824 -0.927602,3.92873 -4e-6,1.161475 0.199846,2.252787 0.599547,3.273942 0.407236,1.013364 0.9917,1.9098 1.753395,2.689308 0.754141,0.76392 1.617639,1.344654 2.590496,1.742205 0.980384,0.405343 2.024878,0.608015 3.133485,0.608017 0.950214,-2e-6 1.900439,-0.183186 2.850678,-0.549554 0.950212,-0.36637 1.760919,-0.861359 2.432127,-1.484966 l 1.210407,1.894209 c -0.942701,0.756122 -1.972113,1.332959 -3.088235,1.730512 -1.108611,0.405341 -2.236061,0.608013 -3.382353,0.608018 -1.395184,-5e-6 -2.71117,-0.257243 -3.947964,-0.771715 -1.236809,-0.506684 -2.337863,-1.247218 -3.303167,-2.221603 -0.965312,-0.974388 -1.700606,-2.100778 -2.205882,-3.379176 -0.50528,-1.286188 -0.757919,-2.665919 -0.757918,-4.139197 -10e-7,-1.4187 0.256408,-2.771149 0.769231,-4.057349 0.512817,-1.286179 1.244339,-2.416468 2.194569,-3.390868 0.950221,-0.966578 2.055046,-1.714906 3.31448,-2.244989 1.266959,-0.53005 2.579175,-0.795082 3.936651,-0.795099 1.689278,1.7e-5 3.223967,0.335205 4.604072,1.005567 1.380073,0.662599 2.533919,1.621395 3.461539,2.876391 0.565591,0.763933 0.991683,1.59411 1.27828,2.490534 0.294097,0.888651 0.441155,1.824062 0.441177,2.806237 -2.2e-5,2.112476 -0.614651,3.753344 -1.843891,4.922604 -1.22928,1.169266 -2.963818,1.753899 -5.203621,1.753898 l -0.441175,0 0,-1.800669" + id="path6196" + inkscape:connector-curvature="0" /> + <g + id="g6198" + transform="translate(-60,0)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path6200" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient9920);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path6202" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6204" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path6206" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + </g> + </g> + <text + id="text4945" + y="145.17384" + x="42.19397" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="145.17384" + x="42.19397" + id="tspan4947" + sodipodi:role="line">MT/TE</tspan></text> + <g + inkscape:label="Calque 1" + id="g4250" + transform="matrix(0.122312,0,0,0.122312,-30.085582,252.55201)" + style="stroke-linecap:round;stroke-linejoin:round;display:inline"> + <path + style="fill:url(#linearGradient4274);fill-opacity:1;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 730.20369,448.19592 c 14.27042,0 25.78125,11.47958 25.78125,25.75 l 0,117.21875 -59.09375,59.0625 -241.4375,0 c -14.27043,0 -25.74999,-11.4796 -25.75,-25.75 l 0,-150.53125 c 0,-14.27043 11.47956,-25.75 25.75,-25.75 l 274.75,0 z" + id="path4252" + inkscape:connector-curvature="0" /> + <rect + rx="25.75889" + style="fill:url(#linearGradient4276);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4254" + width="149.5023" + height="142.93658" + x="460.77066" + y="478.50421" + ry="25.75889" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.01707006px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 461.22302,514.31577 48.47024,0 0,35.54048 -48.47024,0" + id="path4256" + inkscape:connector-curvature="0" /> + <path + id="path4258" + d="m 461.22302,549.8871 48.47024,0 0,35.54046 -48.47024,0" + style="fill:none;stroke:#000000;stroke-width:1.01707006px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + id="path4260" + d="m 509.69326,478.78318 0,35.54048" + style="fill:none;stroke:#000000;stroke-width:1.01707006px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;stroke:#000000;stroke-width:1.01707006px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 509.69326,585.40475 0,35.54048" + id="path4262" + inkscape:connector-curvature="0" /> + <path + id="path4264" + d="m 609.69326,514.31577 -48.47024,0 0,35.54048 48.47024,0" + style="fill:none;stroke:#000000;stroke-width:1.01707006px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.01707006px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 609.69326,549.8871 -48.47024,0 0,35.54046 48.47024,0" + id="path4266" + inkscape:connector-curvature="0" /> + <path + id="path4268" + d="m 561.22364,585.40475 0,35.54048" + style="fill:none;stroke:#000000;stroke-width:1.01707006px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + </g> + <text + id="text4270" + y="348.54425" + x="42.505005" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + id="tspan4272" + y="348.54425" + x="42.505005" + sodipodi:role="line">SIM</tspan></text> + <g + inkscape:label="Layer 1" + id="layer1-37" + transform="matrix(1.5182985,0,0,1.5182985,443.71238,314.74052)" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + style="opacity:0.6;stroke-linecap:round;stroke-linejoin:round;display:inline" + transform="matrix(0.01477517,0,0,0.02195012,36.14156,38.80781)" + id="g3952"> + <rect + style="opacity:0.40206185;color:#000000;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect3954" + width="1339.6335" + height="478.35718" + x="-1559.2523" + y="-150.69685" /> + <path + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + id="path3956" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path3958" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + </g> + <path + sodipodi:nodetypes="cccc" + id="path6845" + d="m 46.5,25.5 -10.000004,0 0,1.999997 10.000004,0" + style="fill:url(#linearGradient6847);fill-opacity:1;stroke:url(#linearGradient6849);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.761905,0,0,0.761905,7.388392,5.500001)" + d="m 38.25,27.5625 c 0,1.449747 -1.175253,2.625 -2.625,2.625 -1.449747,0 -2.625,-1.175253 -2.625,-2.625 0,-1.449747 1.175253,-2.625 2.625,-2.625 1.449747,0 2.625,1.175253 2.625,2.625 z" + sodipodi:ry="2.625" + sodipodi:rx="2.625" + sodipodi:cy="27.5625" + sodipodi:cx="35.625" + id="path6851" + style="fill:#d0d0ca;fill-opacity:1;stroke:#729fcf;stroke-width:1.31249964;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="cccc" + id="rect6804" + d="M 1.4999956,25.5 11.5,25.5 l 0,1.999997 -10.0000044,0" + style="fill:url(#linearGradient6835);fill-opacity:1;stroke:url(#linearGradient6843-4);stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccccccc" + id="path2371" + d="m 18.125,2.5 c -0.744057,0 -1.39865,0.3133048 -1.875,0.8125 l -4.21875,5.25 C 11.703624,9.146009 11.5,9.811876 11.5,10.53125 l 0,28.9375 c 0,2.233312 1.797934,4.031249 4.03125,4.03125 l 14.9375,0 C 32.70207,43.499999 34.5,41.702062 34.5,39.46875 l 0,-28.9375 C 34.5,9.811876 34.29638,9.146009 33.96875,8.5625 L 29.75,3.3125 C 29.27365,2.8133048 28.61906,2.5 27.875,2.5 l -9.75,0 z" + style="color:#000000;fill:url(#linearGradient2339);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + transform="translate(-40,-1)" + d="M 58.125,4.5 C 57.67221,4.5 57.301304,4.6939871 57,5 l -0.03125,0 -4.0625,5.0625 C 52.651026,10.51706 52.5,11.000581 52.5,11.53125 l 0,25.9375 c 0,1.69661 1.334636,3.031249 3.03125,3.03125 l 14.9375,0 C 72.165369,40.499999 73.5,39.165361 73.5,37.46875 l 0,-25.9375 c 0,-0.530673 -0.151026,-1.014195 -0.40625,-1.46875 L 69.03125,5 C 69.024311,4.9927285 69.00702,5.0071301 69,5 68.698695,4.6939857 68.327794,4.5 67.875,4.5 l -9.75,0 z" + id="path4329" + style="opacity:0.7;color:#000000;fill:none;stroke:#f9f9f9;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:original="M 58.125 3.5 C 57.380943 3.5 56.72635 3.8133048 56.25 4.3125 L 52.03125 9.5625 C 51.703624 10.146009 51.5 10.811876 51.5 11.53125 L 51.5 37.46875 C 51.5 39.702062 53.297934 41.499999 55.53125 41.5 L 70.46875 41.5 C 72.70207 41.499999 74.5 39.702062 74.5 37.46875 L 74.5 11.53125 C 74.5 10.811876 74.29638 10.146009 73.96875 9.5625 L 69.75 4.3125 C 69.27365 3.8133048 68.61906 3.5 67.875 3.5 L 58.125 3.5 z " + inkscape:radius="-1" + sodipodi:type="inkscape:offset" /> + <path + style="color:#000000;fill:url(#linearGradient2335);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 15.528487,7.5000019 14.942993,0 c 1.677787,0 3.028495,1.3507087 3.028495,3.0284951 l 0,28.943041 c 0,1.677786 -1.350708,3.028494 -3.028495,3.028494 l -14.942993,0 c -1.677786,0 -3.028495,-1.350708 -3.028495,-3.028494 l 0,-28.943041 c 0,-1.6777864 1.350709,-3.0284951 3.028495,-3.0284951 z" + id="rect2377" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <rect + ry="0" + rx="0" + y="10.500004" + x="15.500004" + height="5.0000067" + width="14.999999" + id="rect4183" + style="color:#000000;fill:url(#linearGradient2332);fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + ry="0" + rx="0" + y="17.500006" + x="15.500004" + height="5.0000067" + width="14.999999" + id="rect4187" + style="fill:url(#linearGradient2329);fill-opacity:1;stroke:#babdb6;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + transform="matrix(0.954546,0,0,0.954547,0.77272,3.181783)" + d="m 18.571429,26 c 0,0.867876 -0.703553,1.571429 -1.571429,1.571429 -0.867876,0 -1.571429,-0.703553 -1.571429,-1.571429 0,-0.867876 0.703553,-1.571429 1.571429,-1.571429 0.867876,0 1.571429,0.703553 1.571429,1.571429 z" + sodipodi:ry="1.5714285" + sodipodi:rx="1.5714285" + sodipodi:cy="26" + sodipodi:cx="17" + id="path4191" + style="fill:#d0d0ca;fill-opacity:1;stroke:#555753;stroke-width:1.04761803;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + sodipodi:type="arc" /> + <rect + ry="2.4999907" + rx="2.4999905" + y="25.49999" + x="14.500004" + height="4.9999981" + width="5.000001" + id="rect4193" + style="fill:none;stroke:url(#linearGradient2325);stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="0" + rx="0" + y="26.500006" + x="21.5" + height="3.0000033" + width="10.000003" + id="rect4195" + style="fill:#eeeeec;fill-opacity:1;stroke:#babdb6;stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + transform="matrix(0.942803,0,0,1.077485,0.8126,-0.100478)" + d="m 17.169437,25.61565 c 0,0.256282 -0.237437,0.464039 -0.53033,0.464039 -0.292893,0 -0.53033,-0.207757 -0.53033,-0.464039 0,-0.256281 0.237437,-0.464039 0.53033,-0.464039 0.292893,0 0.53033,0.207758 0.53033,0.464039 z" + sodipodi:ry="0.46403882" + sodipodi:rx="0.53033012" + sodipodi:cy="25.61565" + sodipodi:cx="16.639107" + id="path4197" + style="fill:#f7f7f7;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(0.942803,0,0,1.008364,0.8126,1.670102)" + d="m 17.169437,25.61565 c 0,0.256282 -0.237437,0.464039 -0.53033,0.464039 -0.292893,0 -0.53033,-0.207757 -0.53033,-0.464039 0,-0.256281 0.237437,-0.464039 0.53033,-0.464039 0.292893,0 0.53033,0.207758 0.53033,0.464039 z" + sodipodi:ry="0.46403882" + sodipodi:rx="0.53033012" + sodipodi:cy="25.61565" + sodipodi:cx="16.639107" + id="path4213" + style="fill:#f7f7f7;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <rect + ry="2.0110888" + rx="2.0110888" + y="8.499999" + x="13.499996" + height="33" + width="18.999966" + id="rect2379" + style="opacity:0.8;color:#000000;fill:none;stroke:url(#linearGradient2319);stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" /> + <g + transform="translate(-40,2)" + style="opacity:0.19699246;stroke-linecap:round;stroke-linejoin:round" + id="g4307"> + <rect + style="color:#000000;fill:url(#linearGradient2341);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect4239" + width="1.0130863" + height="8.000001" + x="57" + y="31" /> + <rect + style="color:#000000;fill:url(#linearGradient2343);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect4249" + width="1.0130863" + height="8.000001" + x="59" + y="31" /> + <rect + style="color:#000000;fill:url(#linearGradient2345);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect4253" + width="1.0130863" + height="8.000001" + x="61" + y="31" /> + <rect + style="color:#000000;fill:url(#linearGradient2347);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect4257" + width="1.0130863" + height="8.000001" + x="63" + y="31" /> + <rect + style="color:#000000;fill:url(#linearGradient2349);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect4261" + width="1.0130863" + height="8.000001" + x="65" + y="31" /> + <rect + style="color:#000000;fill:url(#linearGradient2351);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect4265" + width="1.0130863" + height="8.000001" + x="67" + y="31" /> + </g> + </g> + <g + id="g6494" + transform="matrix(1.5232404,0,0,1.5232404,278.85448,197.45627)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="ccccc" + id="path7013" + d="m 5,12 3,0 2,0 -3,0 -2,0 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.1559927,0,0,1.1167882,-1.4892394,-5.8125919)" + d="m 23.157747,34.785942 c 0,3.343864 -3.937494,6.054602 -8.79464,6.054602 -4.8571461,0 -8.7946408,-2.710738 -8.7946408,-6.054602 0,-3.343864 3.9374947,-6.054602 8.7946408,-6.054602 4.857146,0 8.79464,2.710738 8.79464,6.054602 z" + sodipodi:ry="6.0546017" + sodipodi:rx="8.7946405" + sodipodi:cy="34.785942" + sodipodi:cx="14.363107" + id="path7820" + style="opacity:0.45895523;fill:url(#radialGradient6685);fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:type="arc" /> + <rect + transform="matrix(1.015625,0,0,1.015625,-0.4902344,-0.2714844)" + ry="3.7225697" + rx="3.7225697" + y="2.875" + x="15.375001" + height="29" + width="32.000004" + id="rect7696" + style="opacity:0.1204819;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5386)" /> + <rect + ry="2.780735" + rx="2.8766227" + y="1.5" + x="14.500001" + height="29" + width="32.000004" + id="rect5925" + style="fill:url(#linearGradient6687);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.94973111;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.99236642;stroke-dasharray:none;stroke-dashoffset:0.69999992" /> + <path + transform="matrix(2.1428572,0,0,2.0867798,44.428572,-0.6301697)" + d="m -12.5,1.5 c -0.572952,0 -1,0.4270471 -1,1 l 0,11 c 0,0.572953 0.427046,1 1,1 l 12,0 c 0.57295344,0 1,-0.427046 1,-1 l 0,-11 c 0,-0.5729532 -0.42704686,-1 -1,-1 l -12,0 z" + id="path6964" + style="fill:none;stroke:url(#linearGradient6689);stroke-width:0.44912341;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.99236642;stroke-dasharray:none;stroke-dashoffset:0.69999992" + inkscape:original="M -12.5 0.5 C -13.608449 0.5 -14.5 1.3915505 -14.5 2.5 L -14.5 13.5 C -14.5 14.608449 -13.60845 15.5 -12.5 15.5 L -0.5 15.5 C 0.60844948 15.5 1.5 14.60845 1.5 13.5 L 1.5 2.5 C 1.5 1.3915505 0.60844948 0.5 -0.5 0.5 L -12.5 0.5 z " + inkscape:radius="-0.99866015" + sodipodi:type="inkscape:offset" /> + <path + transform="translate(0.25,-0.625)" + d="M 14.6875,31 A 0.50950812,0.50950812 0 0 0 14.5,31.09375 c 0,0 -4.304771,3.322239 -8.21875,6.5625 C 4.316376,39.282908 2.5162731,40.913519 1.4375,42.5625 0.91466802,43.361686 0.33442463,44.404861 0.71875,45.75 0.9275427,46.480774 1.4549221,47.109726 2.0625,47.46875 2.6167319,47.796251 3.1674141,47.932778 3.75,48 c 2.2711642,0.262057 4.9083138,-0.390694 8.03125,-1.28125 3.130284,-0.892651 6.703348,-2.114543 10.28125,-3.28125 3.577446,-1.166558 7.199429,-2.282374 10.3125,-2.96875 3.10701,-0.685039 5.758895,-0.841526 7.125,-0.5 0.218805,0.0547 0.263413,0.06213 0.34375,0.09375 -0.01958,0.106035 -0.05666,0.225872 -0.15625,0.4375 -0.490105,1.041473 -2.143138,2.981849 -4.0625,4.78125 -3.845148,3.604826 -8.78125,7.09375 -8.78125,7.09375 a 0.50950812,0.50950812 0 0 0 -0.125,0.71875 l 1.75,2.4375 a 0.50950812,0.50950812 0 0 0 0.6875,0.09375 c 0,0 5.064738,-3.511863 9.21875,-7.40625 2.073974,-1.94435 3.950551,-3.933984 4.9375,-6.03125 0.49266,-1.046902 0.845293,-2.339698 0.34375,-3.65625 -0.510066,-1.338925 -1.773956,-2.154427 -3.15625,-2.5 -2.605897,-0.651474 -5.670788,-0.209671 -9.03125,0.53125 -3.366179,0.742181 -7.042948,1.884249 -10.65625,3.0625 -3.612491,1.177986 -7.118824,2.370401 -10.09375,3.21875 -2.1807601,0.621879 -3.8918327,0.927529 -5.125,1.03125 0.7851691,-0.875391 1.8772687,-1.957308 3.25,-3.09375 3.711358,-3.072518 7.96875,-6.375 7.96875,-6.375 a 0.50950812,0.50950812 0 0 0 0.125,-0.6875 l -1.6875,-2.5 A 0.50950812,0.50950812 0 0 0 14.6875,31 z" + id="path7678" + style="opacity:0.31927712;fill:url(#linearGradient6691);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5406)" + inkscape:original="M 14.8125 31.5 C 14.8125 31.5 10.498126 34.830189 6.59375 38.0625 C 4.6415622 39.678655 2.8956918 41.28355 1.875 42.84375 C 1.3646541 43.62385 0.8878846 44.466971 1.21875 45.625 C 1.3841827 46.204014 1.8301355 46.746216 2.3125 47.03125 C 2.7948645 47.316284 3.2706533 47.437479 3.8125 47.5 C 5.9363798 47.745063 8.5434834 47.106406 11.65625 46.21875 C 14.769017 45.331094 18.325496 44.136387 21.90625 42.96875 C 25.487004 41.801113 29.102635 40.662687 32.25 39.96875 C 35.397365 39.274813 38.085104 39.083776 39.625 39.46875 C 40.353931 39.650983 40.370552 39.769574 40.375 39.78125 C 40.379448 39.792926 40.439577 40.11668 40.15625 40.71875 C 39.589596 41.92289 37.911115 43.835283 35.96875 45.65625 C 32.08402 49.298184 27.125 52.78125 27.125 52.78125 L 28.875 55.21875 C 28.875 55.21875 33.91598 51.701816 38.03125 47.84375 C 40.088885 45.914717 41.910404 43.95211 42.84375 41.96875 C 43.310423 40.97707 43.620552 39.855512 43.1875 38.71875 C 42.754448 37.581988 41.646069 36.849017 40.375 36.53125 C 37.914896 35.916224 34.93076 36.32675 31.59375 37.0625 C 28.25674 37.79825 24.575496 38.917637 20.96875 40.09375 C 17.362004 41.269863 13.840358 42.489218 10.84375 43.34375 C 7.9314529 44.174239 5.5458184 44.563842 4.375 44.46875 C 4.9949332 43.521138 6.6709378 41.915095 8.53125 40.375 C 12.251874 37.294811 16.5 34 16.5 34 L 14.8125 31.5 z " + inkscape:radius="0.50945717" + sodipodi:type="inkscape:offset" /> + <g + transform="translate(20,0)" + id="g7542" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + id="g7162" + transform="matrix(1.1666667,0,0,1.2,-3.833333,-36.2)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="cccccccccccscc" + id="rect6100-9" + d="m -2.34375,51 c -0.2047699,0 -0.3811572,0.101237 -0.5,0.25 l -4.015625,4 C -6.8943841,55.381797 -6.9584881,55.521336 -7,55.65625 l 0,5.520833 c 0,0.363563 0.2965189,0.65625 0.65625,0.65625 l 6.6875,0 c 0.17986547,0 0.3513829,-0.06888 0.46875,-0.1875 l 4,-4 C 4.9298671,57.527216 5,57.358864 5,57.177083 L 5,51.65625 C 5,51.474469 4.9298671,51.306117 4.8125,51.1875 4.6934039,51.068883 4.5236156,51 4.34375,51 l -6.6875,0 z" + style="fill:url(#linearGradient6693);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + id="path6105" + d="m -6.3738568,55.166667 6.46199924,0 c 0.34688337,0 0.62614331,0.284557 0.62614331,0.638021 l 0,5.390624 c 0,0.353464 -0.27925994,0.638021 -0.62614331,0.638021 l -6.46199924,0 C -6.7207401,61.833333 -7,61.548776 -7,61.195312 l 0,-5.390624 c 0,-0.353464 0.2792599,-0.638021 0.6261432,-0.638021 z" + style="fill:url(#linearGradient6695);fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + </g> + <path + style="opacity:0.12313436;fill:url(#linearGradient6697);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m -5,25 -5,5 4,0 5,-5 -4,0" + id="path7253" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:#babdb6;fill-rule:evenodd;stroke:none" + d="m -1,25 -9.5,4 3.5,0 5,-3 1,-1" + id="path6126" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.53358208;fill:none;stroke:#ffffff;stroke-width:0.94973099;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0.69999992" + d="m -6.5625,25.5 c -0.023832,0 -0.054614,0.0064 -0.15625,0.125 -0.030011,0.02263 -0.061314,0.0435 -0.09375,0.0625 -0.019872,0.02177 -0.040727,0.04263 -0.0625,0.0625 -0.019872,0.02177 -0.040727,0.04263 -0.0625,0.0625 l -0.03125,0 c -0.019872,0.02177 -0.040727,0.04263 -0.0625,0.0625 l -0.1875,0.1875 c -0.106843,0.100345 -0.235062,0.175139 -0.375,0.21875 l -4.25,1.21875 c -0.400496,0.208356 -0.534035,0.34932 -0.59375,0.46875 -8.88e-4,0.0018 0.03402,0.134571 0,0.09375 0.08185,0.09822 0.360373,0.252244 0.84375,0.34375 0.339897,0.06887 0.617058,0.314167 0.726728,0.643174 0.109669,0.329008 0.03512,0.691541 -0.195478,0.950576 l -0.34375,0.375 c -0.01981,0.08756 -0.05384,0.170084 -0.09375,0.3125 -0.0075,0.0266 0.0082,0.03523 0,0.0625 l 0,6.5 c 0,0.05419 3.76e-4,0.115539 0.0625,0.1875 0.03149,0.03648 0.103253,0.0625 0.15625,0.0625 l 7.84375,0 c 0.092572,0 0.168439,-0.0102 0.21875,-0.0625 -1.68e-4,-0.01042 -1.68e-4,-0.02083 0,-0.03125 L 1.4375,32.59375 C 1.489686,32.539502 1.5,32.514607 1.5,32.40625 l 0,-6.625 C 1.5,25.6729 1.489688,25.616751 1.4375,25.5625 1.400675,25.524775 1.282521,25.5 1.25,25.5 l -7.8125,0 z" + id="path7235" + sodipodi:nodetypes="csssccccccssssccsccsccsccccscc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#555753;stroke-width:0.94973099;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0.69999992" + d="m -6.5625,24.53125 c -0.387741,0 -0.691692,0.218481 -0.90625,0.46875 L -7.5,24.96875 l -0.03125,0.0625 -0.34375,0.3125 -4.25,1.21875 c -0.03226,0.0071 -0.06369,0.01756 -0.09375,0.03125 -0.548914,0.274457 -0.902027,0.554054 -1.09375,0.9375 -0.191723,0.383446 -0.116521,0.866425 0.125,1.15625 0.328077,0.393692 0.857606,0.552388 1.40625,0.65625 l -0.40625,0.4375 c -0.05629,0.05141 -0.0992,0.115766 -0.125,0.1875 -0.03135,0.121381 -0.0699,0.315787 -0.125,0.5 -0.01612,0.04003 -0.02664,0.08209 -0.03125,0.125 l 0,6.65625 c 0,0.29887 0.113231,0.581675 0.3125,0.8125 0.199269,0.230825 0.510866,0.40625 0.875,0.40625 l 7.84375,0 c 0.323633,0 0.656893,-0.115787 0.90625,-0.375 L 2.125,33.28125 c 0.22588,-0.234805 0.34375,-0.539646 0.34375,-0.875 l 0,-6.625 c 0,-0.335353 -0.117873,-0.640195 -0.34375,-0.875 -0.223656,-0.229118 -0.551364,-0.375 -0.875,-0.375 l -7.8125,0 z" + id="path7229" + sodipodi:nodetypes="ccccccsssccssccsccccccscc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient6699);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m -1,25 -11,2.5 2,1.5 3,0 5,-3 1,-1" + id="path7184" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient6701);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m -5,25 -7,2 4,0 7,-2 -4,0" + id="path7171" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient6703);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="M -12,27 -8.2868349,27 -8,27 c -2,1 -0.5,2 1,2 l -4,0 c -1.5,0 -3,-1 -1,-2 z" + id="rect7173" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" /> + <path + id="path7275" + d="m -9.5941664,32 4.1883324,0 C -5.181002,32 -5,32.195125 -5,32.4375 l 0,3.125 C -5,35.804876 -5.181002,36 -5.405834,36 l -4.1883324,0 C -9.8189979,36 -10,35.804876 -10,35.5625 l 0,-3.125 C -10,32.195125 -9.8189979,32 -9.5941664,32 z" + style="fill:url(#linearGradient6705);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + </g> + <path + sodipodi:nodetypes="ccccccccccccccccc" + id="rect7327" + d="m 29.480478,10.068145 c -0.639015,0 -1.155458,0.515912 -1.155458,1.154269 l 0,0.287788 c 0,0.293222 -0.229312,0.543185 -0.543745,0.543185 l -1.563267,0 c -0.639015,0 -1.155458,0.703412 -1.155458,1.341769 l 0,6.44493 c 0,0.638358 0.516444,1.154269 1.155458,1.154269 l 8.563984,0 c 0.639015,0 1.155458,-0.515912 1.155458,-1.154269 l 0,-6.44493 c 0,-0.638358 -0.516442,-1.341769 -1.155458,-1.341769 l -1.563267,0 c -0.261777,0.01767 -0.543745,-0.186296 -0.543745,-0.526211 l 0,-0.304762 c 0,-0.638358 -0.516444,-1.154269 -1.155458,-1.154269 l -2.039044,0 z" + style="fill:url(#linearGradient6707);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccccccc" + id="path7350" + d="m 29.5625,9.4375 c -1.109356,0 -1.984686,0.908013 -2.0625,2 l -0.9375,0 c -1.15908,0 -2.125,0.965921 -2.125,2.125 l 0,5.875 c 0,1.15908 0.965921,2.125 2.125,2.125 l 7.875,0 c 1.15908,0 2.125,-0.965921 2.125,-2.125 l 0,-5.875 c 0,-1.159077 -0.965921,-2.125 -2.125,-2.125 l -0.9375,0 c -0.07781,-1.091988 -0.953145,-2 -2.0625,-2 l -1.875,0 z" + style="fill:none;stroke:url(#linearGradient6709);stroke-width:0.94973099;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0.69999992" + inkscape:connector-curvature="0" /> + <g + transform="translate(1,-8)" + style="fill-opacity:1;stroke:url(#linearGradient7060);stroke-width:0.94973099;stroke-linecap:round;stroke-linejoin:round" + id="g7393"> + <path + style="fill:none;stroke:url(#linearGradient6711);stroke-width:0.94973099px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 26.5,26.5 0,-2" + id="path7352" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient6713);stroke-width:0.94973099px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 28.5,26.5 0,-2" + id="path7362" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient6716);stroke-width:0.94973099px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 30.5,26.5 0,-2" + id="path7364" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:url(#linearGradient6718);stroke-width:0.94973099px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + d="m 32.5,26.5 0,-2" + id="path7366" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + </g> + <path + sodipodi:nodetypes="cssssssssssssccssssssscscc" + id="path7506" + d="m 14.6875,30.5625 c 0,0 -4.189374,3.267689 -8.09375,6.5 -1.9521878,1.616155 -3.6980582,3.22105 -4.71875,4.78125 -0.5103459,0.7801 -0.9871154,1.623221 -0.65625,2.78125 0.1654327,0.579014 0.6113855,1.121216 1.09375,1.40625 0.4823645,0.285034 0.9581533,0.406229 1.5,0.46875 2.1238798,0.245063 4.7309834,-0.393594 7.84375,-1.28125 3.112767,-0.887656 6.669246,-2.082363 10.25,-3.25 3.580754,-1.167637 7.196385,-2.306063 10.34375,-3 3.147365,-0.693937 5.835104,-0.884974 7.375,-0.5 0.728931,0.182233 0.745552,0.300824 0.75,0.3125 0.0044,0.01168 0.06458,0.33543 -0.21875,0.9375 -0.566654,1.20414 -2.245135,3.116533 -4.1875,4.9375 -3.88473,3.641934 -8.84375,7.125 -8.84375,7.125 l 1.75,2.4375 c 0,0 5.04098,-3.516934 9.15625,-7.375 2.057635,-1.929033 3.879154,-3.89164 4.8125,-5.875 0.466673,-0.99168 0.776802,-2.113238 0.34375,-3.25 -0.433052,-1.136762 -1.541431,-1.869733 -2.8125,-2.1875 -2.460104,-0.615026 -5.44424,-0.2045 -8.78125,0.53125 -3.33701,0.73575 -7.018254,1.855137 -10.625,3.03125 -3.606746,1.176113 -7.128392,2.395468 -10.125,3.25 C 7.9314529,43.174239 5.5458184,43.563842 4.375,43.46875 4.9949332,42.521138 6.6709378,40.915095 8.53125,39.375 12.251874,36.294811 16.5,33 16.5,33 l -1.8125,-2.4375 z" + style="fill:url(#linearGradient6722);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6724);stroke-width:0.94973099;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path7502" + d="m 15.672335,31.269607 c 0,0 -18.4375,12.6875 -11.9375,13.4375 6.5,0.75 28,-10 36,-8 8,2 -12,16 -12,16" + style="opacity:0.19029852;fill:none;stroke:url(#linearGradient6726);stroke-width:0.94973099px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path7512" + d="m 10.088769,30.03125 0.317481,2 4.1875,0 c 0.224832,0 0.40625,0.195125 0.40625,0.4375 l 0,3.125 2,-0.3125 0,-4.46875 c 0,-0.424157 -0.314054,-0.78125 -0.71875,-0.78125 l -6.192481,0 z" + style="fill:url(#linearGradient6728);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + transform="translate(20,0)" + id="path7810" + d="m -9.5941664,32 4.1883324,0 C -5.181002,32 -5,32.195125 -5,32.4375 l 0,3.125 C -5,35.804876 -5.181002,36 -5.405834,36 l -4.1883324,0 C -9.8189979,36 -10,35.804876 -10,35.5625 l 0,-3.125 C -10,32.195125 -9.8189979,32 -9.5941664,32 z" + style="opacity:0.35447759;fill:url(#linearGradient6730);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + </g> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="626.40234" + y="435.07227" + id="text6960"><tspan + sodipodi:role="line" + id="tspan6962" + x="626.40234" + y="435.07227">GGSN</tspan></text> + <g + transform="matrix(1.4099377,0,0,1.4099377,561.86433,356.84118)" + id="g6964" + inkscape:label="Layer 1" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + id="g6966" + transform="matrix(0.01477517,0,0,0.02195012,36.14156,38.80781)" + style="opacity:0.6;stroke-linecap:round;stroke-linejoin:round;display:inline"> + <rect + y="-150.69685" + x="-1559.2523" + height="478.35718" + width="1339.6335" + id="rect6968" + style="opacity:0.40206185;color:#000000;fill:url(#linearGradient7016);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="cccc" + id="path6970" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient7018);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient7020);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + id="path6972" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:url(#linearGradient7022);fill-opacity:1;stroke:url(#linearGradient7024);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 46.5,25.5 -10.000004,0 0,1.999997 10.000004,0" + id="path6974" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:type="arc" + style="fill:#d0d0ca;fill-opacity:1;stroke:#729fcf;stroke-width:1.31249964;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="path6976" + sodipodi:cx="35.625" + sodipodi:cy="27.5625" + sodipodi:rx="2.625" + sodipodi:ry="2.625" + d="m 38.25,27.5625 c 0,1.449747 -1.175253,2.625 -2.625,2.625 -1.449747,0 -2.625,-1.175253 -2.625,-2.625 0,-1.449747 1.175253,-2.625 2.625,-2.625 1.449747,0 2.625,1.175253 2.625,2.625 z" + transform="matrix(0.761905,0,0,0.761905,7.388392,5.500001)" /> + <path + style="fill:url(#linearGradient7026);fill-opacity:1;stroke:url(#linearGradient7028);stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" + d="M 1.4999956,25.5 11.5,25.5 l 0,1.999997 -10.0000044,0" + id="path6978" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;fill:url(#linearGradient7030);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 18.125,2.5 c -0.744057,0 -1.39865,0.3133048 -1.875,0.8125 l -4.21875,5.25 C 11.703624,9.146009 11.5,9.811876 11.5,10.53125 l 0,28.9375 c 0,2.233312 1.797934,4.031249 4.03125,4.03125 l 14.9375,0 C 32.70207,43.499999 34.5,41.702062 34.5,39.46875 l 0,-28.9375 C 34.5,9.811876 34.29638,9.146009 33.96875,8.5625 L 29.75,3.3125 C 29.27365,2.8133048 28.61906,2.5 27.875,2.5 l -9.75,0 z" + id="path6980" + sodipodi:nodetypes="ccccccccccccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-1" + inkscape:original="M 58.125 3.5 C 57.380943 3.5 56.72635 3.8133048 56.25 4.3125 L 52.03125 9.5625 C 51.703624 10.146009 51.5 10.811876 51.5 11.53125 L 51.5 37.46875 C 51.5 39.702062 53.297934 41.499999 55.53125 41.5 L 70.46875 41.5 C 72.70207 41.499999 74.5 39.702062 74.5 37.46875 L 74.5 11.53125 C 74.5 10.811876 74.29638 10.146009 73.96875 9.5625 L 69.75 4.3125 C 69.27365 3.8133048 68.61906 3.5 67.875 3.5 L 58.125 3.5 z " + style="opacity:0.7;color:#000000;fill:none;stroke:#f9f9f9;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + id="path6982" + d="M 58.125,4.5 C 57.67221,4.5 57.301304,4.6939871 57,5 l -0.03125,0 -4.0625,5.0625 C 52.651026,10.51706 52.5,11.000581 52.5,11.53125 l 0,25.9375 c 0,1.69661 1.334636,3.031249 3.03125,3.03125 l 14.9375,0 C 72.165369,40.499999 73.5,39.165361 73.5,37.46875 l 0,-25.9375 c 0,-0.530673 -0.151026,-1.014195 -0.40625,-1.46875 L 69.03125,5 C 69.024311,4.9927285 69.00702,5.0071301 69,5 68.698695,4.6939857 68.327794,4.5 67.875,4.5 l -9.75,0 z" + transform="translate(-40,-1)" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path6984" + d="m 15.528487,7.5000019 14.942993,0 c 1.677787,0 3.028495,1.3507087 3.028495,3.0284951 l 0,28.943041 c 0,1.677786 -1.350708,3.028494 -3.028495,3.028494 l -14.942993,0 c -1.677786,0 -3.028495,-1.350708 -3.028495,-3.028494 l 0,-28.943041 c 0,-1.6777864 1.350709,-3.0284951 3.028495,-3.0284951 z" + style="color:#000000;fill:url(#linearGradient7032);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <rect + style="color:#000000;fill:url(#linearGradient7034);fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect6986" + width="14.999999" + height="5.0000067" + x="15.500004" + y="10.500004" + rx="0" + ry="0" /> + <rect + style="fill:url(#linearGradient7036);fill-opacity:1;stroke:#babdb6;stroke-width:1.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect6988" + width="14.999999" + height="5.0000067" + x="15.500004" + y="17.500006" + rx="0" + ry="0" /> + <path + sodipodi:type="arc" + style="fill:#d0d0ca;fill-opacity:1;stroke:#555753;stroke-width:1.04761803;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="path6990" + sodipodi:cx="17" + sodipodi:cy="26" + sodipodi:rx="1.5714285" + sodipodi:ry="1.5714285" + d="m 18.571429,26 c 0,0.867876 -0.703553,1.571429 -1.571429,1.571429 -0.867876,0 -1.571429,-0.703553 -1.571429,-1.571429 0,-0.867876 0.703553,-1.571429 1.571429,-1.571429 0.867876,0 1.571429,0.703553 1.571429,1.571429 z" + transform="matrix(0.954546,0,0,0.954547,0.77272,3.181783)" /> + <rect + style="fill:none;stroke:url(#linearGradient7038);stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="rect6992" + width="5.000001" + height="4.9999981" + x="14.500004" + y="25.49999" + rx="2.4999905" + ry="2.4999907" /> + <rect + style="fill:#eeeeec;fill-opacity:1;stroke:#babdb6;stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect6994" + width="10.000003" + height="3.0000033" + x="21.5" + y="26.500006" + rx="0" + ry="0" /> + <path + sodipodi:type="arc" + style="fill:#f7f7f7;fill-opacity:1;stroke:none" + id="path6996" + sodipodi:cx="16.639107" + sodipodi:cy="25.61565" + sodipodi:rx="0.53033012" + sodipodi:ry="0.46403882" + d="m 17.169437,25.61565 c 0,0.256282 -0.237437,0.464039 -0.53033,0.464039 -0.292893,0 -0.53033,-0.207757 -0.53033,-0.464039 0,-0.256281 0.237437,-0.464039 0.53033,-0.464039 0.292893,0 0.53033,0.207758 0.53033,0.464039 z" + transform="matrix(0.942803,0,0,1.077485,0.8126,-0.100478)" /> + <path + sodipodi:type="arc" + style="fill:#f7f7f7;fill-opacity:1;stroke:none" + id="path6998" + sodipodi:cx="16.639107" + sodipodi:cy="25.61565" + sodipodi:rx="0.53033012" + sodipodi:ry="0.46403882" + d="m 17.169437,25.61565 c 0,0.256282 -0.237437,0.464039 -0.53033,0.464039 -0.292893,0 -0.53033,-0.207757 -0.53033,-0.464039 0,-0.256281 0.237437,-0.464039 0.53033,-0.464039 0.292893,0 0.53033,0.207758 0.53033,0.464039 z" + transform="matrix(0.942803,0,0,1.008364,0.8126,1.670102)" /> + <rect + style="opacity:0.8;color:#000000;fill:none;stroke:url(#linearGradient7040);stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.4;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect7000" + width="18.999966" + height="33" + x="13.499996" + y="8.499999" + rx="2.0110888" + ry="2.0110888" /> + <g + id="g7002" + style="opacity:0.19699246;stroke-linecap:round;stroke-linejoin:round" + transform="translate(-40,2)"> + <rect + y="31" + x="57" + height="8.000001" + width="1.0130863" + id="rect7004" + style="color:#000000;fill:url(#linearGradient7042);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="59" + height="8.000001" + width="1.0130863" + id="rect7006" + style="color:#000000;fill:url(#linearGradient7044);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="61" + height="8.000001" + width="1.0130863" + id="rect7008" + style="color:#000000;fill:url(#linearGradient7046);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="63" + height="8.000001" + width="1.0130863" + id="rect7010" + style="color:#000000;fill:url(#linearGradient7048);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="65" + height="8.000001" + width="1.0130863" + id="rect7012" + style="color:#000000;fill:url(#linearGradient7050);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <rect + y="31" + x="67" + height="8.000001" + width="1.0130863" + id="rect7014" + style="color:#000000;fill:url(#linearGradient7052);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + </g> + </g> + <text + id="text7066" + y="101.53799" + x="748.39716" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="101.53799" + x="748.39716" + sodipodi:role="line" + id="tspan7070">VLR</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="747.76483" + y="340.22113" + id="text7293"><tspan + id="tspan7297" + sodipodi:role="line" + x="747.76483" + y="340.22113">EIR</tspan></text> + <text + id="text8171" + y="283.42673" + x="598.02264" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="283.42673" + x="598.02264" + sodipodi:role="line" + id="tspan7511">MSC server</tspan></text> + <g + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + id="g7865" + transform="matrix(1.6839963,0,0,1.6839963,440.2001,197.34288)"> + <g + inkscape:label="Layer 1" + id="layer1-7" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + style="opacity:0.4;stroke-linecap:round;stroke-linejoin:round" + transform="matrix(1,0,0,1.6875,-6,-5.5625)" + id="g5310"> + <rect + style="fill:url(#radialGradient5318-5);fill-opacity:1;stroke:none" + id="rect5312" + width="4" + height="8" + x="9.5" + y="21" /> + <rect + style="fill:url(#radialGradient5320-2);fill-opacity:1;stroke:none" + id="rect5314" + width="4" + height="8" + x="-50.5" + y="-29" + transform="scale(-1,-1)" /> + <rect + style="fill:url(#linearGradient5322);fill-opacity:1;stroke:none" + id="rect5316" + width="33" + height="8" + x="13.5" + y="21" /> + </g> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + id="path2495" + d="m 10.0625,22.504459 c -0.01534,0.003 -0.04893,0.02718 -0.0625,0.03125 -0.00435,0.0015 -0.027066,-0.0016 -0.03125,0 -0.00388,0.0019 -0.027502,0.02926 -0.03125,0.03125 -0.00351,0.0023 -0.027847,-0.0024 -0.03125,0 -0.138974,0.106837 -0.205623,0.359232 -0.5625,0.8125 L 7,30.191959 c 1.93e-4,0.0075 -3.84e-4,0.02381 0,0.03125 -0.010751,0.01212 0.010461,0.05012 0,0.0625 -0.298139,0.35285 -0.5,0.781029 -0.5,1.28125 L 6.53125,38.5 c 0,1.123303 0.907948,2.031251 2.03125,2.03125 l 30.9375,0 c 1.123303,0 2.03125,-0.907947 2.03125,-2.03125 L 41.5,31.566959 c 0,-0.500221 -0.201861,-0.9284 -0.5,-1.28125 7.6e-4,-0.0073 -5.73e-4,-0.02386 0,-0.03125 -0.0053,-0.0061 0.0054,-0.02519 0,-0.03125 3.84e-4,-0.0074 -1.93e-4,-0.02376 0,-0.03125 l -2.5,-6.8125 c -0.378776,-0.468361 -0.44102,-0.710816 -0.59375,-0.8125 -0.0037,-0.002 -0.0274,-0.02934 -0.03125,-0.03125 -0.004,-0.0018 -0.0271,0.0016 -0.03125,0 -0.05842,-0.01816 -0.149481,-0.03125 -0.25,-0.03125 l -27.34375,0 c -0.07732,0 -0.13637,-0.01005 -0.1875,0 z" + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2164);stroke-width:1.1919533;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + sodipodi:nodetypes="cssssccssccccccsssccsssccc" + inkscape:connector-curvature="0" /> + <rect + ry="1.6088903" + rx="1.5195075" + y="31" + x="7" + height="9" + width="34" + id="rect4028" + style="fill:url(#linearGradient4975);fill-opacity:1;stroke:none" /> + <rect + ry="2.4999917" + rx="2.49999" + y="33.500023" + x="8.4999924" + height="4.9999833" + width="5.000011" + id="rect5179" + style="fill:none;stroke:url(#linearGradient5193);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="1.4999907" + rx="1.4999907" + y="34.500027" + x="9.5" + height="2.9999814" + width="3" + id="rect5059" + style="fill:url(#linearGradient5091);fill-opacity:1;stroke:#4e9a06;stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="1.4999987" + rx="1.4999987" + y="34.500015" + x="15.5" + height="2.9999974" + width="3" + id="rect5093" + style="fill:url(#linearGradient5095);fill-opacity:1;stroke:#c4a000;stroke-width:1.19195366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="1.4999987" + rx="1.4999987" + y="34.500015" + x="21.5" + height="2.9999974" + width="3" + id="rect5099" + style="fill:url(#linearGradient5101);fill-opacity:1;stroke:#ce5c00;stroke-width:1.19195366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <path + transform="translate(0.75,0.25)" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + sodipodi:ry="0.25" + sodipodi:rx="0.25" + sodipodi:cy="35.25" + sodipodi:cx="9.75" + id="path5117" + style="opacity:0.75675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + sodipodi:type="arc" /> + <path + transform="translate(6.75,0.25)" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + sodipodi:ry="0.25" + sodipodi:rx="0.25" + sodipodi:cy="35.25" + sodipodi:cx="9.75" + id="path5119" + style="opacity:0.85675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + sodipodi:type="arc" /> + <path + transform="translate(12.75,0.25)" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + sodipodi:ry="0.25" + sodipodi:rx="0.25" + sodipodi:cy="35.25" + sodipodi:cx="9.75" + id="path5121" + style="opacity:0.75675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + sodipodi:type="arc" /> + <rect + ry="2.4999917" + rx="2.49999" + y="33.500023" + x="14.499992" + height="4.9999833" + width="5.000011" + id="rect5195" + style="fill:none;stroke:url(#linearGradient5197);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="2.4999917" + rx="2.49999" + y="33.500023" + x="20.499992" + height="4.9999833" + width="5.000011" + id="rect5199" + style="fill:none;stroke:url(#linearGradient5201);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <g + transform="translate(-1,0)" + style="fill:url(#linearGradient8534);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g5288"> + <g + style="fill:url(#linearGradient8522);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g4999" + transform="translate(-2,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect4979" + style="fill:url(#linearGradient2057);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8524);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g5007"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect5011" + style="fill:url(#linearGradient2061);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8526);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g5017" + transform="translate(2,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect5021" + style="fill:url(#linearGradient2065);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8528);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g5027" + transform="translate(4,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect5031" + style="fill:url(#linearGradient2069);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8530);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g5037" + transform="translate(6,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect5041" + style="fill:url(#linearGradient2073);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8532);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g5230-2" + transform="translate(-4,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect5234" + style="fill:url(#linearGradient2077);fill-opacity:1;stroke:none" /> + </g> + </g> + <path + d="m 10.4375,23.46875 c -0.05668,0.09312 -0.124527,0.211556 -0.21875,0.34375 l -2.25,6.46875 a 0.97236903,0.97236903 0 0 1 0,0.03125 0.97236903,0.97236903 0 0 1 0,0.0625 c -0.00269,0.03459 0.0088,0.04902 0,0.09375 -0.011731,0.05964 -0.028776,0.110654 -0.0625,0.1875 -0.00985,0.02245 -0.043668,0.03169 -0.0625,0.0625 -0.04563,0.07466 -0.093287,0.186952 -0.09375,0.1875 -0.1875108,0.221921 -0.28125,0.417598 -0.28125,0.65625 L 7.5,38.5 c 0,0.599388 0.4631135,1.062501 1.0625,1.0625 l 30.9375,0 c 0.599389,0 1.0625,-0.463111 1.0625,-1.0625 l -0.03125,-6.9375 c 0,-0.238652 -0.09374,-0.434329 -0.28125,-0.65625 a 0.97236903,0.97236903 0 0 1 0,-0.03125 0.97236903,0.97236903 0 0 1 -0.09375,-0.125 0.97236903,0.97236903 0 0 1 0,-0.03125 A 0.97236903,0.97236903 0 0 1 40.0625,30.5 c -0.0031,-0.0063 0.002,-0.02721 0,-0.03125 -0.0029,-0.0061 -0.03123,-0.03115 -0.03125,-0.03125 -5.7e-5,-2.8e-4 0.0019,-0.04282 0,-0.0625 l 0,-0.03125 -2.375,-6.5 c -0.110187,-0.147962 -0.219199,-0.277139 -0.28125,-0.375 l -26.9375,0 z" + id="path2966" + style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.1919533;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:original="M 10.0625 22.5 C 10.047161 22.503014 10.013575 22.527184 10 22.53125 C 9.995651 22.532728 9.972934 22.529649 9.96875 22.53125 C 9.964867 22.533108 9.941248 22.560511 9.9375 22.5625 C 9.933992 22.564763 9.909653 22.560098 9.90625 22.5625 C 9.767276 22.669337 9.700627 22.921732 9.34375 23.375 L 7 30.1875 C 7.000193 30.194989 6.999616 30.211311 7 30.21875 C 6.989249 30.230871 7.010461 30.268869 7 30.28125 C 6.701861 30.6341 6.5 31.062279 6.5 31.5625 L 6.53125 38.5 C 6.53125 39.623303 7.439198 40.531251 8.5625 40.53125 L 39.5 40.53125 C 40.623303 40.53125 41.53125 39.623303 41.53125 38.5 L 41.5 31.5625 C 41.5 31.062279 41.298139 30.6341 41 30.28125 C 41.00076 30.273915 40.999427 30.257389 41 30.25 C 40.994697 30.243874 41.005375 30.224811 41 30.21875 C 41.000384 30.211311 40.999807 30.194989 41 30.1875 L 38.5 23.375 C 38.121224 22.906639 38.05898 22.664184 37.90625 22.5625 C 37.902538 22.560463 37.878847 22.533156 37.875 22.53125 C 37.871006 22.529474 37.8479 22.532897 37.84375 22.53125 C 37.785333 22.513087 37.694269 22.5 37.59375 22.5 L 10.25 22.5 C 10.172677 22.5 10.11363 22.489952 10.0625 22.5 z " + inkscape:radius="-0.9722718" + sodipodi:type="inkscape:offset" /> + </g> + <g + inkscape:label="phone" + id="layer2-3" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + transform="matrix(1.000314,0,0,1,-0.002355,-7.00001)" + id="g2366-0" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + style="color:#000000;fill:url(#radialGradient4024-0);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3404-2);stroke-width:1.1917665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 8.2474619,14.5 7.7498701,-2.999994 16,0 L 39.741876,14.5 c 0.256803,0.06883 0.747462,1.333368 0.747462,1.747462 l 0,2.505076 c 0,0.414094 -0.333368,0.747462 -0.747462,0.747462 l -5.752538,0 -2,-4 -15.5,0 -2.5,4 -5.7418761,0 C 7.833368,19.5 7.5,19.166632 7.5,18.752538 l 0,-2.505076 C 7.5,15.833368 7.9909958,14.568741 8.2474619,14.5 z" + id="rect2276-4" + sodipodi:nodetypes="ccczccccccccccz" + inkscape:connector-curvature="0" /> + </g> + <path + transform="matrix(1.000314,0,0,1,-0.002355,-7.00001)" + sodipodi:nodetypes="ccsccccccccsccc" + id="path4056-4" + d="M 16.1875,12.46875 8.8125,15.3125 C 8.770706,15.38818 8.740325,15.496831 8.6875,15.625 8.559965,15.934436 8.46875,16.429219 8.46875,16.25 l 0,2.28125 5,0 c 0.858697,-1.529381 1.128913,-2.553892 3.03125,-2 l 15.5,0 c 0.859584,0.447471 1.469779,-1.114201 2.625,2 l 4.90625,0 0,-2.28125 c 0,0.178953 -0.09127,-0.31563 -0.21875,-0.625 -0.0528,-0.128142 -0.08323,-0.236865 -0.125,-0.3125 l -7.375,-2.84375 -15.625,0 z" + style="opacity:0.6;color:#000000;fill:none;stroke:url(#radialGradient4068-8);stroke-width:1.19176626;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <g + style="opacity:0.8;stroke-linecap:round;stroke-linejoin:round" + transform="matrix(1,0,0,1.0625,0,-1.3125)" + id="g4065-5"> + <rect + style="fill:url(#radialGradient4070-6);fill-opacity:1;stroke:none" + id="rect4030-7" + width="4" + height="8" + x="9.5" + y="21" /> + <rect + style="fill:url(#radialGradient4072-4);fill-opacity:1;stroke:none" + id="rect4041-8" + width="4" + height="8" + x="-38.5" + y="-29" + transform="scale(-1,-1)" /> + <rect + style="fill:url(#linearGradient4074-1);fill-opacity:1;stroke:none" + id="rect4045-9" + width="21" + height="8" + x="13.5" + y="21" /> + </g> + <path + sodipodi:nodetypes="ccccccsccccccsc" + id="rect2236-8" + d="m 17.509407,7.5 2,0 0.5,2 8.002512,0 0.497488,-2 2,0 c 1.123656,0 1.740719,0.9709838 2.03297,2 l 3.976136,13.999994 0.02763,2 c 0,1.060896 -0.904604,2 -2.02826,2 l -21.006594,0 c -1.123656,0 -1.972996,-0.939104 -1.972996,-2 l -0.02763,-2 L 15.509407,9.5 c 0.293822,-1.0286979 0.876344,-2 2,-2 z" + style="color:#000000;fill:url(#linearGradient1614-1);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient1616-2);stroke-width:1.19195318;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccscccsc" + id="path2297-7" + d="m 30.504082,8 -1.588859,0.022097 -0.592,2 L 19.632583,9.955806 19.044665,8.022097 17.5,8 c -1.078709,0 -1.426702,0.8189946 -1.687047,1.789079 l -2.4042,8.958396 -1.157183,3.752519 c 6.001884,-7.205882 17.755181,4 21.876475,-5.73172 L 32.164603,9.789079 C 31.892547,8.8220351 31.582792,8 30.504082,8 z" + style="opacity:0.24324323;color:#000000;fill:url(#linearGradient1601-3);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccsccccccsc" + id="path2279-0" + d="m 17.500314,8.5 1.234521,0 0.497174,2 9.444768,-0.0221 0.654679,-1.9779 1.17294,0 c 0.500157,0 0.739705,0.088799 1.000314,1 l 4.004082,13.999994 0,1.5 c 0,1.5 0,1.5 -1.500471,1.5 l -20.00628,0 c -1.500471,0 -1.500471,0 -1.500471,-1.5 l 0,-1.5 L 16.5,9.5 c 0.260325,-0.911495 0.500157,-1 1.000314,-1 z" + style="opacity:0.6;color:#000000;fill:none;stroke:url(#linearGradient1598-1);stroke-width:1.19195318;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="rect4094-2" + d="m 18.67949,9.4999962 10.64178,0 c 0.597659,0 1.078805,0.4882234 1.078805,1.0946718 L 32,21.40532 c 0,0.606448 -0.481147,1.094672 -1.078807,1.094672 l -13.853815,-0.01237 c -0.59766,0 -1.078807,-0.488223 -1.078807,-1.094671 l 1.612114,-10.798283 c 0,-0.6064484 0.481147,-1.0946718 1.078805,-1.0946718 z" + style="fill:url(#linearGradient2960-6);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <g + style="fill:url(#linearGradient8536);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + transform="translate(0,0.5)" + id="g3067-1"> + <path + style="fill:url(#linearGradient7959);fill-opacity:1;stroke:none" + d="m 18.558806,13 2.221403,0.01105 c 0.30958,0 0.574433,0.228459 0.558808,0.512241 l -0.04285,0.964469 C 21.280538,14.771541 21.046935,15 20.737355,15 l -2.32218,0 c -0.309579,0 -0.605683,-0.228459 -0.558808,-0.512241 l 0.143631,-0.975518 C 18.031248,13.236272 18.249227,13 18.558806,13 z" + id="path3043-9" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7961);fill-opacity:1;stroke:none" + d="m 22.891192,13 2.209799,0 c 0.30958,0 0.558808,0.228459 0.558808,0.512241 l 0.03906,0.975518 C 25.698861,14.771541 25.449633,15 25.140053,15 l -2.287924,0 c -0.309579,0 -0.558808,-0.228459 -0.558808,-0.512241 l 0.03906,-0.975518 C 22.332384,13.228459 22.581613,13 22.891192,13 z" + id="path3045-8" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7963);fill-opacity:1;stroke:none" + d="m 27.223578,13 2.217611,0 c 0.30958,0 0.519745,0.244084 0.558808,0.512241 l 0.140625,0.975518 C 30.187497,14.775447 29.891394,15 29.581814,15 l -2.315267,0 c -0.309579,0 -0.54709,-0.228459 -0.558808,-0.512241 L 26.66477,13.512241 C 26.649145,13.228459 26.913999,13 27.223578,13 z" + id="path3047-4" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7965);fill-opacity:1;stroke:none" + d="m 19.012241,10 1.942372,0 c 0.283782,0 0.535679,0.228459 0.512241,0.512241 l -0.04419,0.975518 C 21.42266,11.771541 21.194201,12 20.910419,12 l -2.074955,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 L 18.5,10.512241 C 18.5,10.228459 18.728459,10 19.012241,10 z" + id="path3049-5" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7967);fill-opacity:1;stroke:none" + d="m 22.980991,10 2.030206,0 c 0.283782,0 0.512241,0.228459 0.512241,0.512241 l 0.03125,0.975518 C 25.554688,11.771541 25.326229,12 25.042447,12 l -2.100519,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 l 0.03906,-0.975518 C 22.46875,10.228459 22.697209,10 22.980991,10 z" + id="path3051-8" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7969);fill-opacity:1;stroke:none" + d="m 27.035679,10 1.975518,0 c 0.283782,0 0.469272,0.224553 0.512241,0.512241 l 0.160156,0.975518 C 29.722656,11.771541 29.455135,12 29.171353,12 l -2.092706,0 c -0.283782,0 -0.496616,-0.228459 -0.512241,-0.512241 l -0.04297,-0.975518 C 26.507813,10.228459 26.751897,10 27.035679,10 z" + id="path3053-0" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7971);fill-opacity:1;stroke:none" + d="m 18.140535,16 2.455797,0 c 0.335378,0 0.624907,0.232365 0.605376,0.512241 l -0.04297,0.975518 C 21.143114,17.767635 20.888741,18 20.553363,18 l -2.561265,0 C 17.65672,18 17.343754,17.771541 17.386723,17.487759 L 17.53516,16.512241 C 17.578129,16.232365 17.805157,16 18.140535,16 z" + id="path3055-2" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7973);fill-opacity:1;stroke:none" + d="m 22.801401,16 2.389391,0 c 0.335378,0 0.605376,0.228459 0.605376,0.512241 l 0.03906,0.975518 C 25.83523,17.771541 25.565232,18 25.229854,18 l -2.459703,0 c -0.335378,0 -0.605375,-0.228459 -0.605375,-0.512241 l 0.03125,-0.975518 C 22.196026,16.228459 22.466023,16 22.801401,16 z" + id="path3057-0" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7975);fill-opacity:1;stroke:none" + d="m 27.399767,16 2.447984,0 c 0.335378,0 0.566313,0.228459 0.605376,0.512241 l 0.144531,0.975518 C 30.64844,17.775447 30.32766,18 29.992282,18 l -2.549547,0 c -0.335378,0 -0.58975,-0.232365 -0.605375,-0.512241 L 26.79439,16.512241 C 26.782673,16.228459 27.064389,16 27.399767,16 z" + id="path3059-5" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7977);fill-opacity:1;stroke:none" + d="m 17.730073,19 2.678359,0 c 0.361176,0 0.667568,0.236272 0.651943,0.512241 l -0.03125,0.975518 C 21.0135,20.763728 20.738358,21 20.377182,21 l -2.803359,0 c -0.361176,0 -0.683192,-0.228459 -0.651942,-0.512241 l 0.15625,-0.975518 C 17.109381,19.232365 17.368897,19 17.730073,19 z" + id="path3061-8" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7979);fill-opacity:1;stroke:none" + d="m 22.723326,19 2.553357,0 c 0.361176,0 0.651943,0.228459 0.651943,0.512241 l 0.04297,0.975518 C 25.971595,20.771541 25.680828,21 25.319652,21 l -2.643201,0 c -0.361177,0 -0.651943,-0.228459 -0.651943,-0.512241 l 0.04687,-0.975518 C 22.071383,19.228459 22.362149,19 22.723326,19 z" + id="path3063-6" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient7981);fill-opacity:1;stroke:none" + d="m 27.583765,19 2.674451,0 c 0.361176,0 0.616787,0.228459 0.651943,0.512241 l 0.15625,0.975518 C 31.109378,20.767635 30.775642,21 30.414466,21 l -2.783826,0 c -0.361177,0 -0.644131,-0.228459 -0.651943,-0.512241 l -0.04687,-0.975518 C 26.920103,19.228459 27.222588,19 27.583765,19 z" + id="path3065-7" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + </g> + <path + sodipodi:nodetypes="ccccccccc" + id="use6266-5" + d="m 18.558806,13 2.221403,0.01105 c 0.30958,0 0.574433,0.228459 0.558808,0.512241 l -0.04285,0.964469 C 21.280538,14.771541 21.046935,15 20.737355,15 l -2.32218,0 c -0.309579,0 -0.605683,-0.228459 -0.558808,-0.512241 l 0.143631,-0.975518 C 18.031248,13.236272 18.249227,13 18.558806,13 z" + style="fill:url(#radialGradient2987-3);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6268-0" + d="m 22.891192,13 2.209799,0 c 0.30958,0 0.558808,0.228459 0.558808,0.512241 l 0.03906,0.975518 C 25.698861,14.771541 25.449633,15 25.140053,15 l -2.287924,0 c -0.309579,0 -0.558808,-0.228459 -0.558808,-0.512241 l 0.03906,-0.975518 C 22.332384,13.228459 22.581613,13 22.891192,13 z" + style="fill:url(#radialGradient2983-6);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6270-5" + d="m 27.223578,13 2.217611,0 c 0.30958,0 0.519745,0.244084 0.558808,0.512241 l 0.140625,0.975518 C 30.187497,14.775447 29.891394,15 29.581814,15 l -2.315267,0 c -0.309579,0 -0.54709,-0.228459 -0.558808,-0.512241 L 26.66477,13.512241 C 26.649145,13.228459 26.913999,13 27.223578,13 z" + style="fill:url(#radialGradient2979-8);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="rect5016-8" + d="m 19.012241,10 1.942372,0 c 0.283782,0 0.535679,0.228459 0.512241,0.512241 l -0.04419,0.975518 C 21.42266,11.771541 21.194201,12 20.910419,12 l -2.074955,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 L 18.5,10.512241 C 18.5,10.228459 18.728459,10 19.012241,10 z" + style="fill:url(#radialGradient6264-1);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6252-7" + d="m 22.980991,10 2.030206,0 c 0.283782,0 0.512241,0.228459 0.512241,0.512241 l 0.03125,0.975518 C 25.554688,11.771541 25.326229,12 25.042447,12 l -2.100519,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 l 0.03906,-0.975518 C 22.46875,10.228459 22.697209,10 22.980991,10 z" + style="fill:url(#radialGradient2968-2);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6254-0" + d="m 27.035679,10 1.975518,0 c 0.283782,0 0.469272,0.224553 0.512241,0.512241 l 0.160156,0.975518 C 29.722656,11.771541 29.455135,12 29.171353,12 l -2.092706,0 c -0.283782,0 -0.496616,-0.228459 -0.512241,-0.512241 l -0.04297,-0.975518 C 26.507813,10.228459 26.751897,10 27.035679,10 z" + style="fill:url(#radialGradient2972-2);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6279-3" + d="m 18.140535,16 2.455797,0 c 0.335378,0 0.624907,0.232365 0.605376,0.512241 l -0.04297,0.975518 C 21.143114,17.767635 20.888741,18 20.553363,18 l -2.561265,0 C 17.65672,18 17.343754,17.771541 17.386723,17.487759 L 17.53516,16.512241 C 17.578129,16.232365 17.805157,16 18.140535,16 z" + style="fill:url(#radialGradient3002-6);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6281-9" + d="m 22.801401,16 2.389391,0 c 0.335378,0 0.605376,0.228459 0.605376,0.512241 l 0.03906,0.975518 C 25.83523,17.771541 25.565232,18 25.229854,18 l -2.459703,0 c -0.335378,0 -0.605375,-0.228459 -0.605375,-0.512241 l 0.03125,-0.975518 C 22.196026,16.228459 22.466023,16 22.801401,16 z" + style="fill:url(#radialGradient2998-7);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6283-6" + d="m 27.399767,16 2.447984,0 c 0.335378,0 0.566313,0.228459 0.605376,0.512241 l 0.144531,0.975518 C 30.64844,17.775447 30.32766,18 29.992282,18 l -2.549547,0 c -0.335378,0 -0.58975,-0.232365 -0.605375,-0.512241 L 26.79439,16.512241 C 26.782673,16.228459 27.064389,16 27.399767,16 z" + style="fill:url(#radialGradient2994-4);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6287-7" + d="m 17.730073,19 2.678359,0 c 0.361176,0 0.667568,0.236272 0.651943,0.512241 l -0.03125,0.975518 C 21.0135,20.763728 20.738358,21 20.377182,21 l -2.803359,0 c -0.361176,0 -0.683192,-0.228459 -0.651942,-0.512241 l 0.15625,-0.975518 C 17.109381,19.232365 17.368897,19 17.730073,19 z" + style="fill:url(#radialGradient3017-3);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6289-5" + d="m 22.723326,19 2.553357,0 c 0.361176,0 0.651943,0.228459 0.651943,0.512241 l 0.04297,0.975518 C 25.971595,20.771541 25.680828,21 25.319652,21 l -2.643201,0 c -0.361177,0 -0.651943,-0.228459 -0.651943,-0.512241 l 0.04687,-0.975518 C 22.071383,19.228459 22.362149,19 22.723326,19 z" + style="fill:url(#radialGradient3013-2);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="use6291-3" + d="m 27.583765,19 2.674451,0 c 0.361176,0 0.616787,0.228459 0.651943,0.512241 l 0.15625,0.975518 C 31.109378,20.767635 30.775642,21 30.414466,21 l -2.783826,0 c -0.361177,0 -0.644131,-0.228459 -0.651943,-0.512241 l -0.04687,-0.975518 C 26.920103,19.228459 27.222588,19 27.583765,19 z" + style="fill:url(#radialGradient3009-6);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <g + transform="translate(1,0.370117)" + style="fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g3105-8"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="19.609175" + y="11.364014" + id="text6117-4"><tspan + sodipodi:role="line" + id="tspan6119-3" + x="19.609175" + y="11.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">1</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="23.675293" + y="11.364014" + id="text6121-7"><tspan + sodipodi:role="line" + id="tspan6123-5" + x="23.675293" + y="11.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">2</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="27.774256" + y="11.35791" + id="text6125-6"><tspan + sodipodi:role="line" + id="tspan6127-8" + x="27.774256" + y="11.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">3</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="19.262312" + y="14.364014" + id="text6129-6"><tspan + sodipodi:role="line" + id="tspan6131-6" + x="19.262312" + y="14.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">4</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="23.675293" + y="14.364014" + id="text6133-3"><tspan + sodipodi:role="line" + id="tspan6135-3" + x="23.675293" + y="14.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">5</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="28.067911" + y="14.35791" + id="text6137-4"><tspan + sodipodi:role="line" + id="tspan6139-5" + x="28.067911" + y="14.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">6</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="18.957983" + y="17.35791" + id="text6141-5"><tspan + sodipodi:role="line" + id="tspan6143-6" + x="18.957983" + y="17.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">7</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="23.675293" + y="17.364014" + id="text6145-1"><tspan + sodipodi:role="line" + id="tspan6147-5" + x="23.675293" + y="17.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">8</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="28.368921" + y="17.35791" + id="text6149-5"><tspan + sodipodi:role="line" + id="tspan6151-0" + x="28.368921" + y="17.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">9</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="18.661995" + y="20.358154" + id="text6153-1"><tspan + sodipodi:role="line" + id="tspan6155-5" + x="18.661995" + y="20.358154" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">#</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="23.666496" + y="20.35791" + id="text6157-7"><tspan + sodipodi:role="line" + id="tspan6159-1" + x="23.666496" + y="20.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">0</tspan></text> + <text + xml:space="preserve" + style="font-size:1.73080969px;font-weight:bold;fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + x="28.54826" + y="20.88273" + id="text6161-3"><tspan + sodipodi:role="line" + id="tspan6163-7" + x="28.54826" + y="20.88273" + style="font-size:1.73080969px;font-weight:bold;fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round">*</tspan></text> + </g> + </g> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + id="g4336" + transform="matrix(3.2316001,0,0,3.2316001,8.4096008,143.54304)"> + <g + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + transform="matrix(0.50268008,0,0,0.50268008,42.066995,3.4540541)" + id="g4398"> + <path + transform="matrix(4.55474,0,0,5.50699,-22.8285,-20.7954)" + d="m 14.5625,6.5 c 0,1.9329966 -1.916781,3.5 -4.28125,3.5 C 7.9167809,10 6,8.4329966 6,6.5 6,4.5670034 7.9167809,3 10.28125,3 12.645719,3 14.5625,4.5670034 14.5625,6.5 z" + sodipodi:ry="3.5" + sodipodi:rx="4.28125" + sodipodi:cy="6.5" + sodipodi:cx="10.28125" + id="path4400" + style="opacity:0.6;fill:url(#radialGradient5864-2);fill-opacity:1;stroke:url(#radialGradient5866-9);stroke-width:0.16386265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(3.38686,0,0,4.09453,-10.8212,-11.6144)" + d="m 14.5625,6.5 c 0,1.9329966 -1.916781,3.5 -4.28125,3.5 C 7.9167809,10 6,8.4329966 6,6.5 6,4.5670034 7.9167809,3 10.28125,3 12.645719,3 14.5625,4.5670034 14.5625,6.5 z" + sodipodi:ry="3.5" + sodipodi:rx="4.28125" + sodipodi:cy="6.5" + sodipodi:cx="10.28125" + id="path4402" + style="opacity:0.8;fill:url(#radialGradient6930);fill-opacity:1;stroke:url(#radialGradient5870-2);stroke-width:0.22037922;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(2.21898,0,0,2.71429,1.18613,-2.64286)" + d="m 14.5625,6.5 c 0,1.9329966 -1.916781,3.5 -4.28125,3.5 C 7.9167809,10 6,8.4329966 6,6.5 6,4.5670034 7.9167809,3 10.28125,3 12.645719,3 14.5625,4.5670034 14.5625,6.5 z" + sodipodi:ry="3.5" + sodipodi:rx="4.28125" + sodipodi:cy="6.5" + sodipodi:cx="10.28125" + id="path4404" + style="fill:url(#radialGradient5872-8);fill-opacity:1;stroke:url(#radialGradient5874-7);stroke-width:0.33439919;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <g + transform="matrix(2.23984,0,0,2.23009,-19.6769,9.38862)" + id="g4406" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:type="arc" + style="fill:url(#radialGradient5876-6);fill-opacity:1;stroke:#555753;stroke-width:0.32557303;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path4408" + sodipodi:cx="9.203125" + sodipodi:cy="2.25" + sodipodi:rx="1.796875" + sodipodi:ry="1.75" + d="M 11,2.25 C 11,3.2164983 10.195512,4 9.203125,4 8.2107383,4 7.40625,3.2164983 7.40625,2.25 7.40625,1.2835017 8.2107383,0.5 9.203125,0.5 10.195512,0.5 11,1.2835017 11,2.25 z" + transform="matrix(1.11304,0,0,1.14286,9.25652,-0.0714286)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path4410" + sodipodi:cx="19.5" + sodipodi:cy="1.5" + sodipodi:rx="0.5" + sodipodi:ry="0.5" + d="M 20,1.5 C 20,1.7761424 19.776142,2 19.5,2 19.223858,2 19,1.7761424 19,1.5 19,1.2238576 19.223858,1 19.5,1 19.776142,1 20,1.2238576 20,1.5 z" + transform="matrix(1.8125,0,0,1.8125,-16.4654,-0.92882)" /> + </g> + <path + transform="matrix(1.94783,0,0,1.99105,6.07391,10.484)" + d="M 11,2.25 C 11,3.2164983 10.195512,4 9.203125,4 8.2107383,4 7.40625,3.2164983 7.40625,2.25 7.40625,1.2835017 8.2107383,0.5 9.203125,0.5 10.195512,0.5 11,1.2835017 11,2.25 z" + sodipodi:ry="1.75" + sodipodi:rx="1.796875" + sodipodi:cy="2.25" + sodipodi:cx="9.203125" + id="path4412" + style="fill:none;stroke:url(#radialGradient5878-1);stroke-width:0.41672909;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + </g> + <text + id="text7179" + y="261.24701" + x="713.60632" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + xml:space="preserve"><tspan + y="261.24701" + x="713.60632" + sodipodi:role="line" + id="tspan7181">HLR</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="792.90869" + y="261.24017" + id="text7185"><tspan + id="tspan7187" + sodipodi:role="line" + x="792.90869" + y="261.24017">AuC</tspan></text> + <g + id="layer1" + inkscape:label="Livello 1" + transform="translate(723.74687,335.8565)"> + <g + transform="translate(1,9.8994949)" + id="g10103"> + <g + style="opacity:0.7;display:inline" + id="g10105" + transform="matrix(0.0221628,0,0,0.0106952,43.2123,38.1206)"> + <rect + y="-150.69685" + x="-1559.2523" + height="478.35718" + width="1339.6335" + id="rect10107" + style="opacity:0.39195981;color:#000000;fill:url(#linearGradient10273-9);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="cccc" + id="path10109" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient10275-7);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.40206185;color:#000000;fill:url(#radialGradient10277-5);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + id="path10111" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:url(#radialGradient10279-8);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 23.5,1.5669415 c -5.522703,0 -6,0.999998 -7,2 L 5.4999996,14.566942 l 0,1.40625 0,0.187499 0,22 c 0,0.783476 0.622776,1.406253 1.40625,1.40625 l 33.1875004,0 c 0.783474,0 1.40625,-0.622776 1.40625,-1.40625 l 0,-22 0,-0.187499 0,-1.40625 -11,-11.0000005 c -1,-1 -1.5,-2.000002 -7,-2 z" + id="path10113" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.99236642;stroke-dashoffset:0.69999992" + d="m 41.5,17.160691 0,-2.593749 -11,-11.0000005 c -1,-1 -1.5,-2.000002 -7,-2 -5.522703,0 -6,0.999998 -7,2 L 5.4999996,14.566942 l 0,2.593749" + id="path10115" + sodipodi:nodetypes="ccccccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.98534405" + inkscape:original="M 24.5 4.5 C 18.977297 4.5 18.5 5.499998 17.5 6.5 L 6.5 17.5 L 6.5 18.90625 L 6.5 19.09375 L 6.5 41.09375 C 6.5 41.877225 7.1227756 42.500002 7.90625 42.5 L 41.09375 42.5 C 41.877224 42.5 42.5 41.877224 42.5 41.09375 L 42.5 19.09375 L 42.5 18.90625 L 42.5 17.5 L 31.5 6.5 C 30.5 5.5 30 4.499998 24.5 4.5 z " + style="fill:none;stroke:#ffffff;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.99236642;stroke-dashoffset:0.69999992" + id="path10117" + d="M 24.5,5.5 C 21.798121,5.5 20.393246,5.7355566 19.65625,6.03125 18.919254,6.3269434 18.748198,6.6268011 18.1875,7.1875 L 7.5,17.875 l 0,1.03125 0,0.1875 0,22 c 0,0.261316 0.1449379,0.406251 0.40625,0.40625 l 33.1875,0 C 41.355064,41.5 41.5,41.355064 41.5,41.09375 l 0,-22 0,-0.1875 0,-1.03125 L 30.8125,7.1875 C 30.254438,6.6294378 30.053706,6.3277326 29.3125,6.03125 28.571294,5.7347674 27.190282,5.499999 24.5,5.5 z" + transform="translate(-1,-2.93306)" /> + <path + style="opacity:0.07462685;fill:url(#linearGradient10281-2);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 23.5,23.066941 c -2.533586,0 -4.101342,0.284501 -5.1875,0.749992 -1.086158,0.465492 -1.65625,1.142846 -2.15625,1.714269 L 6.3749996,38.709641 c 0.3494617,0.399382 0.010369,0.357138 0.53125,0.35714 l 33.1875004,0 c 0.520882,0 0.244288,-0.314901 0.59375,-0.714279 l -9.84375,-12.8213 c -0.5,-0.571423 -1.070092,-1.248777 -2.15625,-1.714269 C 27.601342,23.351442 26.033586,23.066941 23.5,23.066941 z" + id="path10119" + sodipodi:nodetypes="csccccccsc" + inkscape:connector-curvature="0" /> + <g + id="g10121" + transform="translate(-1,-2.93306)"> + <path + id="path10123" + d="M 10.78125,7.5 C 10.079832,7.5 9.5,8.0075514 9.5,8.65625 l 0,15.53125 7.65625,7.65625 c 0.4692,0.469201 0.933785,1.084757 1.96875,1.5 C 20.159965,33.758993 21.70847,34 24.5,34 c 2.780303,10e-7 4.337893,-0.241407 5.375,-0.65625 1.037107,-0.414843 1.498213,-1.029463 1.96875,-1.5 L 39.5,24.1875 39.5,8.65625 C 39.5,8.0075513 38.920169,7.5 38.21875,7.5 l -27.4375,0 z" + style="fill:url(#radialGradient10283-8);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient10285-8);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99236642;stroke-dasharray:none;stroke-dashoffset:0.69999992" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccsssccccc" + id="path10126" + d="M 10.78125,8.5 C 10.562237,8.5 10.5,8.603444 10.5,8.65625 l 0,17.09375 7.375,7.375 c 0.545039,0.545041 0.811022,0.95467 1.625,1.28125 0.839149,0.336679 2.266027,0.59375 5,0.59375 2.722418,10e-7 4.159247,-0.257448 5,-0.59375 0.815774,-0.32631 1.077564,-0.733814 1.625,-1.28125 L 38.5,25.75 38.5,8.65625 C 38.5,8.6034427 38.437765,8.5 38.21875,8.5 l -27.4375,0 z" + style="fill:none;stroke:url(#linearGradient10287-3);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.99236642;stroke-dashoffset:0.69999992" + inkscape:connector-curvature="0" /> + <g + id="g10128"> + <rect + style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect10131" + width="11" + height="1" + x="13" + y="11" + rx="0.5" + ry="0.5" /> + <rect + style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect10133" + width="7" + height="1" + x="13" + y="14" + rx="0.5" + ry="0.5" /> + <rect + style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect10135" + width="23" + height="1" + x="13" + y="18" + rx="0.5" + ry="0.5" /> + <rect + style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect10137" + width="23" + height="1" + x="13" + y="20" + rx="0.5" + ry="0.5" /> + <rect + style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect10139" + width="23" + height="1" + x="13" + y="22" + rx="0.5" + ry="0.5" /> + <rect + style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect10141" + width="23" + height="1" + x="13" + y="24" + rx="0.5" + ry="0.5" /> + <rect + style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect10143" + width="23" + height="1" + x="13" + y="26" + rx="0.5" + ry="0.5" /> + <rect + style="fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="rect10145" + width="5" + height="1" + x="31" + y="11" + rx="0.5" + ry="0.5" /> + </g> + </g> + <g + id="g10147" + transform="translate(-1,-2.93306)"> + <path + sodipodi:nodetypes="ccssscccssscc" + id="path10149" + d="m 7.09375,21.75 10.0625,11.59375 c 0.4692,0.469201 0.933785,1.084757 1.96875,1.5 1.034965,0.415243 2.58347,0.65625 5.375,0.65625 2.780303,10e-7 4.337893,-0.241407 5.375,-0.65625 1.037107,-0.414843 1.498213,-1.029463 1.96875,-1.5 L 41.875,21.875 31.84375,31.84375 c -0.470537,0.470537 -0.931643,1.085157 -1.96875,1.5 C 28.837893,33.758593 27.280303,34.000001 24.5,34 c -2.79153,0 -4.340035,-0.241007 -5.375,-0.65625 -1.034965,-0.415243 -1.49955,-1.030799 -1.96875,-1.5 L 7.09375,21.75 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccssscccssscc" + id="path10151" + d="m 7.09375,21.75 10.0625,9.59375 c 0.4692,0.469201 0.933785,1.084757 1.96875,1.5 1.034965,0.415243 2.58347,0.65625 5.375,0.65625 2.780303,10e-7 4.337893,-0.241407 5.375,-0.65625 1.037107,-0.414843 1.498213,-1.029463 1.96875,-1.5 L 41.875,21.875 31.84375,31.84375 c -0.470537,0.470537 -0.931643,1.085157 -1.96875,1.5 C 28.837893,33.758593 27.280303,34.000001 24.5,34 c -2.79153,0 -4.340035,-0.241007 -5.375,-0.65625 -1.034965,-0.415243 -1.49955,-1.030799 -1.96875,-1.5 L 7.09375,21.75 z" + style="opacity:0.3;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + transform="translate(1,-38)" + d="M 6.90625,55 C 5.8578131,55 5,55.857811 5,56.90625 L 5,58.5 a 0.50005,0.50005 0 0 0 0.15625,0.34375 l 11,11 c 0.4692,0.469201 0.933785,1.084757 1.96875,1.5 C 19.159965,71.758993 20.70847,72 23.5,72 c 2.780303,10e-7 4.337893,-0.241407 5.375,-0.65625 1.037107,-0.414843 1.498213,-1.029463 1.96875,-1.5 l 11,-11 A 0.50005,0.50005 0 0 0 42,58.5 l 0,-1.59375 C 42,55.857813 41.142189,55 40.09375,55 l -33.1875,0 z" + id="path10153" + style="opacity:0.16791047;fill:url(#linearGradient10289-0);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:original="M 6.90625 55.5 C 6.1227756 55.5 5.5 56.122774 5.5 56.90625 L 5.5 58.5 L 16.5 69.5 C 17.5 70.500002 17.977297 71.5 23.5 71.5 C 29 71.500002 29.5 70.5 30.5 69.5 L 41.5 58.5 L 41.5 56.90625 C 41.5 56.122776 40.877226 55.5 40.09375 55.5 L 6.90625 55.5 z " + inkscape:radius="0.5" + sodipodi:type="inkscape:offset" /> + </g> + <path + style="fill:url(#radialGradient10291-7);fill-opacity:1;fill-rule:evenodd;stroke:none" + d="m 23.5,26.566941 c -5,0 -6,1 -7,2 L 5.9062496,39.160691 c 0.255619,0.25562 0.608262,0.40625 1,0.40625 l 33.1875004,0 c 0.391737,0 0.74438,-0.15063 1,-0.40625 L 30.5,28.566941 c -1,-1 -2,-2 -7,-2 z" + id="path10155" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.99236642;stroke-dashoffset:0.69999992" + d="m 5.4999996,16.160691 0,22 c 0,0.783476 0.622776,1.406253 1.40625,1.40625 l 33.1875004,0 c 0.783474,0 1.40625,-0.622776 1.40625,-1.40625 l 0,-22" + id="path10157" + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" /> + <g + id="g10159" + transform="matrix(1,0,0,1.03483,-57.25,-4.39571)"> + <path + sodipodi:nodetypes="ccssscccccc" + id="path10161" + d="m 63.25,41.970971 10.15625,-11.34375 c 0.469373,-0.469374 0.93435,-1.084984 1.96875,-1.5 1.0344,-0.415016 2.58364,-0.65625 5.375,-0.65625 2.780132,-10e-7 4.338454,0.241631 5.375,0.65625 1.036546,0.414619 1.498047,1.029297 1.96875,1.5 L 98.25,41.970971 88.09375,31.627221 c -2.044007,-1.969594 -4.518247,-2.272157 -7.34375,-2.15625 -2.67085,0.04954 -5.464303,-3.3e-4 -7.34375,2.15625 L 63.25,41.970971 z" + style="fill:#888a85;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path10163" + d="m 63.25,41.99247 10.15625,-9.041768 c 1.879447,-2.15658 4.6729,-2.10671 7.34375,-2.15625 2.825503,-0.115907 5.299743,0.186656 7.34375,2.15625 L 98.25,41.99247 88.09375,31.64872 C 86.049743,29.679126 83.575503,29.376563 80.75,29.49247 c -2.67085,0.04954 -5.464303,-3.3e-4 -7.34375,2.15625 L 63.25,41.99247 z" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + </g> + </g> + </g> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="748.17157" + y="404.88678" + id="text7499"><tspan + id="tspan7501" + sodipodi:role="line" + x="748.17157" + y="404.88678">SMS-GMSC</tspan></text> + <g + transform="matrix(1.6839963,0,0,1.6839963,558.28692,197.34288)" + id="g7831" + style="stroke-linecap:round;stroke-linejoin:round;display:inline"> + <g + style="stroke-linecap:round;stroke-linejoin:round" + id="g7833" + inkscape:label="Layer 1"> + <g + id="g7835" + transform="matrix(1,0,0,1.6875,-6,-5.5625)" + style="opacity:0.4;stroke-linecap:round;stroke-linejoin:round"> + <rect + y="21" + x="9.5" + height="8" + width="4" + id="rect7837" + style="fill:url(#radialGradient8019);fill-opacity:1;stroke:none" /> + <rect + transform="scale(-1,-1)" + y="-29" + x="-50.5" + height="8" + width="4" + id="rect7839" + style="fill:url(#radialGradient8021);fill-opacity:1;stroke:none" /> + <rect + y="21" + x="13.5" + height="8" + width="33" + id="rect7841" + style="fill:url(#linearGradient8023);fill-opacity:1;stroke:none" /> + </g> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssssccssccccccsssccsssccc" + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8025);stroke-width:1.1919533;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 10.0625,22.504459 c -0.01534,0.003 -0.04893,0.02718 -0.0625,0.03125 -0.00435,0.0015 -0.027066,-0.0016 -0.03125,0 -0.00388,0.0019 -0.027502,0.02926 -0.03125,0.03125 -0.00351,0.0023 -0.027847,-0.0024 -0.03125,0 -0.138974,0.106837 -0.205623,0.359232 -0.5625,0.8125 L 7,30.191959 c 1.93e-4,0.0075 -3.84e-4,0.02381 0,0.03125 -0.010751,0.01212 0.010461,0.05012 0,0.0625 -0.298139,0.35285 -0.5,0.781029 -0.5,1.28125 L 6.53125,38.5 c 0,1.123303 0.907948,2.031251 2.03125,2.03125 l 30.9375,0 c 1.123303,0 2.03125,-0.907947 2.03125,-2.03125 L 41.5,31.566959 c 0,-0.500221 -0.201861,-0.9284 -0.5,-1.28125 7.6e-4,-0.0073 -5.73e-4,-0.02386 0,-0.03125 -0.0053,-0.0061 0.0054,-0.02519 0,-0.03125 3.84e-4,-0.0074 -1.93e-4,-0.02376 0,-0.03125 l -2.5,-6.8125 c -0.378776,-0.468361 -0.44102,-0.710816 -0.59375,-0.8125 -0.0037,-0.002 -0.0274,-0.02934 -0.03125,-0.03125 -0.004,-0.0018 -0.0271,0.0016 -0.03125,0 -0.05842,-0.01816 -0.149481,-0.03125 -0.25,-0.03125 l -27.34375,0 c -0.07732,0 -0.13637,-0.01005 -0.1875,0 z" + id="path7843" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <rect + style="fill:url(#linearGradient8027);fill-opacity:1;stroke:none" + id="rect7845" + width="34" + height="9" + x="7" + y="31" + rx="1.5195075" + ry="1.6088903" /> + <rect + style="fill:none;stroke:url(#linearGradient8029);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="rect7847" + width="5.000011" + height="4.9999833" + x="8.4999924" + y="33.500023" + rx="2.49999" + ry="2.4999917" /> + <rect + style="fill:url(#linearGradient8031);fill-opacity:1;stroke:#4e9a06;stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="rect7849" + width="3" + height="2.9999814" + x="9.5" + y="34.500027" + rx="1.4999907" + ry="1.4999907" /> + <rect + style="fill:url(#linearGradient8033);fill-opacity:1;stroke:#c4a000;stroke-width:1.19195366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="rect7851" + width="3" + height="2.9999974" + x="15.5" + y="34.500015" + rx="1.4999987" + ry="1.4999987" /> + <rect + style="fill:url(#linearGradient8035);fill-opacity:1;stroke:#ce5c00;stroke-width:1.19195366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="rect7853" + width="3" + height="2.9999974" + x="21.5" + y="34.500015" + rx="1.4999987" + ry="1.4999987" /> + <path + sodipodi:type="arc" + style="opacity:0.75675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="path7855" + sodipodi:cx="9.75" + sodipodi:cy="35.25" + sodipodi:rx="0.25" + sodipodi:ry="0.25" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + transform="translate(0.75,0.25)" /> + <path + sodipodi:type="arc" + style="opacity:0.85675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="path7857" + sodipodi:cx="9.75" + sodipodi:cy="35.25" + sodipodi:rx="0.25" + sodipodi:ry="0.25" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + transform="translate(6.75,0.25)" /> + <path + sodipodi:type="arc" + style="opacity:0.75675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="path7859" + sodipodi:cx="9.75" + sodipodi:cy="35.25" + sodipodi:rx="0.25" + sodipodi:ry="0.25" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + transform="translate(12.75,0.25)" /> + <rect + style="fill:none;stroke:url(#linearGradient8037);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="rect7861" + width="5.000011" + height="4.9999833" + x="14.499992" + y="33.500023" + rx="2.49999" + ry="2.4999917" /> + <rect + style="fill:none;stroke:url(#linearGradient8039);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + id="rect7863" + width="5.000011" + height="4.9999833" + x="20.499992" + y="33.500023" + rx="2.49999" + ry="2.4999917" /> + <g + id="g7866" + style="fill:url(#linearGradient8065);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + transform="translate(-1,0)"> + <g + transform="translate(-2,0)" + id="g7868" + style="fill:url(#linearGradient8043);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"> + <rect + style="fill:url(#linearGradient8041);fill-opacity:1;stroke:none" + id="rect7870" + width="1" + height="4.5" + x="33" + y="34" + rx="0.5" + ry="0.5" /> + </g> + <g + id="g7872" + style="fill:url(#linearGradient8047);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"> + <rect + style="fill:url(#linearGradient8045);fill-opacity:1;stroke:none" + id="rect7874" + width="1" + height="4.5" + x="33" + y="34" + rx="0.5" + ry="0.5" /> + </g> + <g + transform="translate(2,0)" + id="g7876" + style="fill:url(#linearGradient8051);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"> + <rect + style="fill:url(#linearGradient8049);fill-opacity:1;stroke:none" + id="rect7878" + width="1" + height="4.5" + x="33" + y="34" + rx="0.5" + ry="0.5" /> + </g> + <g + transform="translate(4,0)" + id="g7880" + style="fill:url(#linearGradient8055);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"> + <rect + style="fill:url(#linearGradient8053);fill-opacity:1;stroke:none" + id="rect7882" + width="1" + height="4.5" + x="33" + y="34" + rx="0.5" + ry="0.5" /> + </g> + <g + transform="translate(6,0)" + id="g7884" + style="fill:url(#linearGradient8059);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"> + <rect + style="fill:url(#linearGradient8057);fill-opacity:1;stroke:none" + id="rect7886" + width="1" + height="4.5" + x="33" + y="34" + rx="0.5" + ry="0.5" /> + </g> + <g + transform="translate(-4,0)" + id="g7888" + style="fill:url(#linearGradient8063);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"> + <rect + style="fill:url(#linearGradient8061);fill-opacity:1;stroke:none" + id="rect7890" + width="1" + height="4.5" + x="33" + y="34" + rx="0.5" + ry="0.5" /> + </g> + </g> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.9722718" + inkscape:original="M 10.0625 22.5 C 10.047161 22.503014 10.013575 22.527184 10 22.53125 C 9.995651 22.532728 9.972934 22.529649 9.96875 22.53125 C 9.964867 22.533108 9.941248 22.560511 9.9375 22.5625 C 9.933992 22.564763 9.909653 22.560098 9.90625 22.5625 C 9.767276 22.669337 9.700627 22.921732 9.34375 23.375 L 7 30.1875 C 7.000193 30.194989 6.999616 30.211311 7 30.21875 C 6.989249 30.230871 7.010461 30.268869 7 30.28125 C 6.701861 30.6341 6.5 31.062279 6.5 31.5625 L 6.53125 38.5 C 6.53125 39.623303 7.439198 40.531251 8.5625 40.53125 L 39.5 40.53125 C 40.623303 40.53125 41.53125 39.623303 41.53125 38.5 L 41.5 31.5625 C 41.5 31.062279 41.298139 30.6341 41 30.28125 C 41.00076 30.273915 40.999427 30.257389 41 30.25 C 40.994697 30.243874 41.005375 30.224811 41 30.21875 C 41.000384 30.211311 40.999807 30.194989 41 30.1875 L 38.5 23.375 C 38.121224 22.906639 38.05898 22.664184 37.90625 22.5625 C 37.902538 22.560463 37.878847 22.533156 37.875 22.53125 C 37.871006 22.529474 37.8479 22.532897 37.84375 22.53125 C 37.785333 22.513087 37.694269 22.5 37.59375 22.5 L 10.25 22.5 C 10.172677 22.5 10.11363 22.489952 10.0625 22.5 z " + style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.1919533;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + id="path7892" + d="m 10.4375,23.46875 c -0.05668,0.09312 -0.124527,0.211556 -0.21875,0.34375 l -2.25,6.46875 a 0.97236903,0.97236903 0 0 1 0,0.03125 0.97236903,0.97236903 0 0 1 0,0.0625 c -0.00269,0.03459 0.0088,0.04902 0,0.09375 -0.011731,0.05964 -0.028776,0.110654 -0.0625,0.1875 -0.00985,0.02245 -0.043668,0.03169 -0.0625,0.0625 -0.04563,0.07466 -0.093287,0.186952 -0.09375,0.1875 -0.1875108,0.221921 -0.28125,0.417598 -0.28125,0.65625 L 7.5,38.5 c 0,0.599388 0.4631135,1.062501 1.0625,1.0625 l 30.9375,0 c 0.599389,0 1.0625,-0.463111 1.0625,-1.0625 l -0.03125,-6.9375 c 0,-0.238652 -0.09374,-0.434329 -0.28125,-0.65625 a 0.97236903,0.97236903 0 0 1 0,-0.03125 0.97236903,0.97236903 0 0 1 -0.09375,-0.125 0.97236903,0.97236903 0 0 1 0,-0.03125 A 0.97236903,0.97236903 0 0 1 40.0625,30.5 c -0.0031,-0.0063 0.002,-0.02721 0,-0.03125 -0.0029,-0.0061 -0.03123,-0.03115 -0.03125,-0.03125 -5.7e-5,-2.8e-4 0.0019,-0.04282 0,-0.0625 l 0,-0.03125 -2.375,-6.5 c -0.110187,-0.147962 -0.219199,-0.277139 -0.28125,-0.375 l -26.9375,0 z" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + id="g7894" + inkscape:label="phone"> + <g + style="stroke-linecap:round;stroke-linejoin:round" + id="g7896" + transform="matrix(1.000314,0,0,1,-0.002355,-7.00001)"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccczccccccccccz" + id="path7898" + d="m 8.2474619,14.5 7.7498701,-2.999994 16,0 L 39.741876,14.5 c 0.256803,0.06883 0.747462,1.333368 0.747462,1.747462 l 0,2.505076 c 0,0.414094 -0.333368,0.747462 -0.747462,0.747462 l -5.752538,0 -2,-4 -15.5,0 -2.5,4 -5.7418761,0 C 7.833368,19.5 7.5,19.166632 7.5,18.752538 l 0,-2.505076 C 7.5,15.833368 7.9909958,14.568741 8.2474619,14.5 z" + style="color:#000000;fill:url(#radialGradient8067);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8069);stroke-width:1.1917665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" /> + </g> + <path + inkscape:connector-curvature="0" + style="opacity:0.6;color:#000000;fill:none;stroke:url(#radialGradient8071);stroke-width:1.19176626;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="M 16.1875,12.46875 8.8125,15.3125 C 8.770706,15.38818 8.740325,15.496831 8.6875,15.625 8.559965,15.934436 8.46875,16.429219 8.46875,16.25 l 0,2.28125 5,0 c 0.858697,-1.529381 1.128913,-2.553892 3.03125,-2 l 15.5,0 c 0.859584,0.447471 1.469779,-1.114201 2.625,2 l 4.90625,0 0,-2.28125 c 0,0.178953 -0.09127,-0.31563 -0.21875,-0.625 -0.0528,-0.128142 -0.08323,-0.236865 -0.125,-0.3125 l -7.375,-2.84375 -15.625,0 z" + id="path7901" + sodipodi:nodetypes="ccsccccccccsccc" + transform="matrix(1.000314,0,0,1,-0.002355,-7.00001)" /> + <g + id="g7903" + transform="matrix(1,0,0,1.0625,0,-1.3125)" + style="opacity:0.8;stroke-linecap:round;stroke-linejoin:round"> + <rect + y="21" + x="9.5" + height="8" + width="4" + id="rect7905" + style="fill:url(#radialGradient8073);fill-opacity:1;stroke:none" /> + <rect + transform="scale(-1,-1)" + y="-29" + x="-38.5" + height="8" + width="4" + id="rect7907" + style="fill:url(#radialGradient8075);fill-opacity:1;stroke:none" /> + <rect + y="21" + x="13.5" + height="8" + width="21" + id="rect7909" + style="fill:url(#linearGradient8077);fill-opacity:1;stroke:none" /> + </g> + <path + inkscape:connector-curvature="0" + style="color:#000000;fill:url(#linearGradient8079);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8081);stroke-width:1.19195318;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 17.509407,7.5 2,0 0.5,2 8.002512,0 0.497488,-2 2,0 c 1.123656,0 1.740719,0.9709838 2.03297,2 l 3.976136,13.999994 0.02763,2 c 0,1.060896 -0.904604,2 -2.02826,2 l -21.006594,0 c -1.123656,0 -1.972996,-0.939104 -1.972996,-2 l -0.02763,-2 L 15.509407,9.5 c 0.293822,-1.0286979 0.876344,-2 2,-2 z" + id="path7911" + sodipodi:nodetypes="ccccccsccccccsc" /> + <path + inkscape:connector-curvature="0" + style="opacity:0.24324323;color:#000000;fill:url(#linearGradient8083);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 30.504082,8 -1.588859,0.022097 -0.592,2 L 19.632583,9.955806 19.044665,8.022097 17.5,8 c -1.078709,0 -1.426702,0.8189946 -1.687047,1.789079 l -2.4042,8.958396 -1.157183,3.752519 c 6.001884,-7.205882 17.755181,4 21.876475,-5.73172 L 32.164603,9.789079 C 31.892547,8.8220351 31.582792,8 30.504082,8 z" + id="path7913" + sodipodi:nodetypes="ccccccscccsc" /> + <path + inkscape:connector-curvature="0" + style="opacity:0.6;color:#000000;fill:none;stroke:url(#linearGradient8085);stroke-width:1.19195318;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 17.500314,8.5 1.234521,0 0.497174,2 9.444768,-0.0221 0.654679,-1.9779 1.17294,0 c 0.500157,0 0.739705,0.088799 1.000314,1 l 4.004082,13.999994 0,1.5 c 0,1.5 0,1.5 -1.500471,1.5 l -20.00628,0 c -1.500471,0 -1.500471,0 -1.500471,-1.5 l 0,-1.5 L 16.5,9.5 c 0.260325,-0.911495 0.500157,-1 1.000314,-1 z" + id="path7915" + sodipodi:nodetypes="ccccccsccccccsc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#linearGradient8087);fill-opacity:1;stroke:none" + d="m 18.67949,9.4999962 10.64178,0 c 0.597659,0 1.078805,0.4882234 1.078805,1.0946718 L 32,21.40532 c 0,0.606448 -0.481147,1.094672 -1.078807,1.094672 l -13.853815,-0.01237 c -0.59766,0 -1.078807,-0.488223 -1.078807,-1.094671 l 1.612114,-10.798283 c 0,-0.6064484 0.481147,-1.0946718 1.078805,-1.0946718 z" + id="path7917" + sodipodi:nodetypes="ccccccccc" /> + <g + id="g7919" + transform="translate(0,0.5)" + style="fill:url(#linearGradient8113);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7921" + d="m 18.558806,13 2.221403,0.01105 c 0.30958,0 0.574433,0.228459 0.558808,0.512241 l -0.04285,0.964469 C 21.280538,14.771541 21.046935,15 20.737355,15 l -2.32218,0 c -0.309579,0 -0.605683,-0.228459 -0.558808,-0.512241 l 0.143631,-0.975518 C 18.031248,13.236272 18.249227,13 18.558806,13 z" + style="fill:url(#linearGradient8089);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7923" + d="m 22.891192,13 2.209799,0 c 0.30958,0 0.558808,0.228459 0.558808,0.512241 l 0.03906,0.975518 C 25.698861,14.771541 25.449633,15 25.140053,15 l -2.287924,0 c -0.309579,0 -0.558808,-0.228459 -0.558808,-0.512241 l 0.03906,-0.975518 C 22.332384,13.228459 22.581613,13 22.891192,13 z" + style="fill:url(#linearGradient8091);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7925" + d="m 27.223578,13 2.217611,0 c 0.30958,0 0.519745,0.244084 0.558808,0.512241 l 0.140625,0.975518 C 30.187497,14.775447 29.891394,15 29.581814,15 l -2.315267,0 c -0.309579,0 -0.54709,-0.228459 -0.558808,-0.512241 L 26.66477,13.512241 C 26.649145,13.228459 26.913999,13 27.223578,13 z" + style="fill:url(#linearGradient8093);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7927" + d="m 19.012241,10 1.942372,0 c 0.283782,0 0.535679,0.228459 0.512241,0.512241 l -0.04419,0.975518 C 21.42266,11.771541 21.194201,12 20.910419,12 l -2.074955,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 L 18.5,10.512241 C 18.5,10.228459 18.728459,10 19.012241,10 z" + style="fill:url(#linearGradient8095);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7929" + d="m 22.980991,10 2.030206,0 c 0.283782,0 0.512241,0.228459 0.512241,0.512241 l 0.03125,0.975518 C 25.554688,11.771541 25.326229,12 25.042447,12 l -2.100519,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 l 0.03906,-0.975518 C 22.46875,10.228459 22.697209,10 22.980991,10 z" + style="fill:url(#linearGradient8097);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7931" + d="m 27.035679,10 1.975518,0 c 0.283782,0 0.469272,0.224553 0.512241,0.512241 l 0.160156,0.975518 C 29.722656,11.771541 29.455135,12 29.171353,12 l -2.092706,0 c -0.283782,0 -0.496616,-0.228459 -0.512241,-0.512241 l -0.04297,-0.975518 C 26.507813,10.228459 26.751897,10 27.035679,10 z" + style="fill:url(#linearGradient8099);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7933" + d="m 18.140535,16 2.455797,0 c 0.335378,0 0.624907,0.232365 0.605376,0.512241 l -0.04297,0.975518 C 21.143114,17.767635 20.888741,18 20.553363,18 l -2.561265,0 C 17.65672,18 17.343754,17.771541 17.386723,17.487759 L 17.53516,16.512241 C 17.578129,16.232365 17.805157,16 18.140535,16 z" + style="fill:url(#linearGradient8101);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7935" + d="m 22.801401,16 2.389391,0 c 0.335378,0 0.605376,0.228459 0.605376,0.512241 l 0.03906,0.975518 C 25.83523,17.771541 25.565232,18 25.229854,18 l -2.459703,0 c -0.335378,0 -0.605375,-0.228459 -0.605375,-0.512241 l 0.03125,-0.975518 C 22.196026,16.228459 22.466023,16 22.801401,16 z" + style="fill:url(#linearGradient8103);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7937" + d="m 27.399767,16 2.447984,0 c 0.335378,0 0.566313,0.228459 0.605376,0.512241 l 0.144531,0.975518 C 30.64844,17.775447 30.32766,18 29.992282,18 l -2.549547,0 c -0.335378,0 -0.58975,-0.232365 -0.605375,-0.512241 L 26.79439,16.512241 C 26.782673,16.228459 27.064389,16 27.399767,16 z" + style="fill:url(#linearGradient8105);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7939" + d="m 17.730073,19 2.678359,0 c 0.361176,0 0.667568,0.236272 0.651943,0.512241 l -0.03125,0.975518 C 21.0135,20.763728 20.738358,21 20.377182,21 l -2.803359,0 c -0.361176,0 -0.683192,-0.228459 -0.651942,-0.512241 l 0.15625,-0.975518 C 17.109381,19.232365 17.368897,19 17.730073,19 z" + style="fill:url(#linearGradient8107);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7941" + d="m 22.723326,19 2.553357,0 c 0.361176,0 0.651943,0.228459 0.651943,0.512241 l 0.04297,0.975518 C 25.971595,20.771541 25.680828,21 25.319652,21 l -2.643201,0 c -0.361177,0 -0.651943,-0.228459 -0.651943,-0.512241 l 0.04687,-0.975518 C 22.071383,19.228459 22.362149,19 22.723326,19 z" + style="fill:url(#linearGradient8109);fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path7943" + d="m 27.583765,19 2.674451,0 c 0.361176,0 0.616787,0.228459 0.651943,0.512241 l 0.15625,0.975518 C 31.109378,20.767635 30.775642,21 30.414466,21 l -2.783826,0 c -0.361177,0 -0.644131,-0.228459 -0.651943,-0.512241 l -0.04687,-0.975518 C 26.920103,19.228459 27.222588,19 27.583765,19 z" + style="fill:url(#linearGradient8111);fill-opacity:1;stroke:none" /> + </g> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8115);fill-opacity:1;stroke:none" + d="m 18.558806,13 2.221403,0.01105 c 0.30958,0 0.574433,0.228459 0.558808,0.512241 l -0.04285,0.964469 C 21.280538,14.771541 21.046935,15 20.737355,15 l -2.32218,0 c -0.309579,0 -0.605683,-0.228459 -0.558808,-0.512241 l 0.143631,-0.975518 C 18.031248,13.236272 18.249227,13 18.558806,13 z" + id="path7945" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8117);fill-opacity:1;stroke:none" + d="m 22.891192,13 2.209799,0 c 0.30958,0 0.558808,0.228459 0.558808,0.512241 l 0.03906,0.975518 C 25.698861,14.771541 25.449633,15 25.140053,15 l -2.287924,0 c -0.309579,0 -0.558808,-0.228459 -0.558808,-0.512241 l 0.03906,-0.975518 C 22.332384,13.228459 22.581613,13 22.891192,13 z" + id="path7947" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8119);fill-opacity:1;stroke:none" + d="m 27.223578,13 2.217611,0 c 0.30958,0 0.519745,0.244084 0.558808,0.512241 l 0.140625,0.975518 C 30.187497,14.775447 29.891394,15 29.581814,15 l -2.315267,0 c -0.309579,0 -0.54709,-0.228459 -0.558808,-0.512241 L 26.66477,13.512241 C 26.649145,13.228459 26.913999,13 27.223578,13 z" + id="path7949" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8121);fill-opacity:1;stroke:none" + d="m 19.012241,10 1.942372,0 c 0.283782,0 0.535679,0.228459 0.512241,0.512241 l -0.04419,0.975518 C 21.42266,11.771541 21.194201,12 20.910419,12 l -2.074955,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 L 18.5,10.512241 C 18.5,10.228459 18.728459,10 19.012241,10 z" + id="path7951" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8123);fill-opacity:1;stroke:none" + d="m 22.980991,10 2.030206,0 c 0.283782,0 0.512241,0.228459 0.512241,0.512241 l 0.03125,0.975518 C 25.554688,11.771541 25.326229,12 25.042447,12 l -2.100519,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 l 0.03906,-0.975518 C 22.46875,10.228459 22.697209,10 22.980991,10 z" + id="path7953" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8125);fill-opacity:1;stroke:none" + d="m 27.035679,10 1.975518,0 c 0.283782,0 0.469272,0.224553 0.512241,0.512241 l 0.160156,0.975518 C 29.722656,11.771541 29.455135,12 29.171353,12 l -2.092706,0 c -0.283782,0 -0.496616,-0.228459 -0.512241,-0.512241 l -0.04297,-0.975518 C 26.507813,10.228459 26.751897,10 27.035679,10 z" + id="path7955" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8127);fill-opacity:1;stroke:none" + d="m 18.140535,16 2.455797,0 c 0.335378,0 0.624907,0.232365 0.605376,0.512241 l -0.04297,0.975518 C 21.143114,17.767635 20.888741,18 20.553363,18 l -2.561265,0 C 17.65672,18 17.343754,17.771541 17.386723,17.487759 L 17.53516,16.512241 C 17.578129,16.232365 17.805157,16 18.140535,16 z" + id="path7957" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8129);fill-opacity:1;stroke:none" + d="m 22.801401,16 2.389391,0 c 0.335378,0 0.605376,0.228459 0.605376,0.512241 l 0.03906,0.975518 C 25.83523,17.771541 25.565232,18 25.229854,18 l -2.459703,0 c -0.335378,0 -0.605375,-0.228459 -0.605375,-0.512241 l 0.03125,-0.975518 C 22.196026,16.228459 22.466023,16 22.801401,16 z" + id="path7959" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8131);fill-opacity:1;stroke:none" + d="m 27.399767,16 2.447984,0 c 0.335378,0 0.566313,0.228459 0.605376,0.512241 l 0.144531,0.975518 C 30.64844,17.775447 30.32766,18 29.992282,18 l -2.549547,0 c -0.335378,0 -0.58975,-0.232365 -0.605375,-0.512241 L 26.79439,16.512241 C 26.782673,16.228459 27.064389,16 27.399767,16 z" + id="path7961" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8133);fill-opacity:1;stroke:none" + d="m 17.730073,19 2.678359,0 c 0.361176,0 0.667568,0.236272 0.651943,0.512241 l -0.03125,0.975518 C 21.0135,20.763728 20.738358,21 20.377182,21 l -2.803359,0 c -0.361176,0 -0.683192,-0.228459 -0.651942,-0.512241 l 0.15625,-0.975518 C 17.109381,19.232365 17.368897,19 17.730073,19 z" + id="path7963" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8135);fill-opacity:1;stroke:none" + d="m 22.723326,19 2.553357,0 c 0.361176,0 0.651943,0.228459 0.651943,0.512241 l 0.04297,0.975518 C 25.971595,20.771541 25.680828,21 25.319652,21 l -2.643201,0 c -0.361177,0 -0.651943,-0.228459 -0.651943,-0.512241 l 0.04687,-0.975518 C 22.071383,19.228459 22.362149,19 22.723326,19 z" + id="path7965" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#radialGradient8137);fill-opacity:1;stroke:none" + d="m 27.583765,19 2.674451,0 c 0.361176,0 0.616787,0.228459 0.651943,0.512241 l 0.15625,0.975518 C 31.109378,20.767635 30.775642,21 30.414466,21 l -2.783826,0 c -0.361177,0 -0.644131,-0.228459 -0.651943,-0.512241 l -0.04687,-0.975518 C 26.920103,19.228459 27.222588,19 27.583765,19 z" + id="path7967" + sodipodi:nodetypes="ccccccccc" /> + <g + id="g7969" + style="fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + transform="translate(1,0.370117)"> + <text + id="text7971" + y="11.364014" + x="19.609175" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="11.364014" + x="19.609175" + id="tspan7973" + sodipodi:role="line">1</tspan></text> + <text + id="text7975" + y="11.364014" + x="23.675293" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="11.364014" + x="23.675293" + id="tspan7977" + sodipodi:role="line">2</tspan></text> + <text + id="text7979" + y="11.35791" + x="27.774256" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="11.35791" + x="27.774256" + id="tspan7981" + sodipodi:role="line">3</tspan></text> + <text + id="text7983" + y="14.364014" + x="19.262312" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="14.364014" + x="19.262312" + id="tspan7985" + sodipodi:role="line">4</tspan></text> + <text + id="text7987" + y="14.364014" + x="23.675293" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="14.364014" + x="23.675293" + id="tspan7989" + sodipodi:role="line">5</tspan></text> + <text + id="text7991" + y="14.35791" + x="28.067911" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="14.35791" + x="28.067911" + id="tspan7993" + sodipodi:role="line">6</tspan></text> + <text + id="text7995" + y="17.35791" + x="18.957983" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="17.35791" + x="18.957983" + id="tspan7997" + sodipodi:role="line">7</tspan></text> + <text + id="text7999" + y="17.364014" + x="23.675293" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="17.364014" + x="23.675293" + id="tspan8001" + sodipodi:role="line">8</tspan></text> + <text + id="text8003" + y="17.35791" + x="28.368921" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="17.35791" + x="28.368921" + id="tspan8005" + sodipodi:role="line">9</tspan></text> + <text + id="text8007" + y="20.358154" + x="18.661995" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="20.358154" + x="18.661995" + id="tspan8009" + sodipodi:role="line">#</tspan></text> + <text + id="text8011" + y="20.35791" + x="23.666496" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black" + y="20.35791" + x="23.666496" + id="tspan8013" + sodipodi:role="line">0</tspan></text> + <text + id="text8015" + y="20.88273" + x="28.54826" + style="font-size:1.73080969px;font-weight:bold;fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + xml:space="preserve"><tspan + style="font-size:1.73080969px;font-weight:bold;fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + y="20.88273" + x="28.54826" + id="tspan8017" + sodipodi:role="line">*</tspan></text> + </g> + </g> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + id="g8139" + transform="matrix(1.6839963,0,0,1.6839963,505.25391,86.398179)"> + <g + inkscape:label="Layer 1" + id="g8141" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + style="opacity:0.4;stroke-linecap:round;stroke-linejoin:round" + transform="matrix(1,0,0,1.6875,-6,-5.5625)" + id="g8143"> + <rect + style="fill:url(#radialGradient8325);fill-opacity:1;stroke:none" + id="rect8145" + width="4" + height="8" + x="9.5" + y="21" /> + <rect + style="fill:url(#radialGradient8327);fill-opacity:1;stroke:none" + id="rect8147" + width="4" + height="8" + x="-50.5" + y="-29" + transform="scale(-1,-1)" /> + <rect + style="fill:url(#linearGradient8329);fill-opacity:1;stroke:none" + id="rect8149" + width="33" + height="8" + x="13.5" + y="21" /> + </g> + <path + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + id="path8151" + d="m 10.0625,22.504459 c -0.01534,0.003 -0.04893,0.02718 -0.0625,0.03125 -0.00435,0.0015 -0.027066,-0.0016 -0.03125,0 -0.00388,0.0019 -0.027502,0.02926 -0.03125,0.03125 -0.00351,0.0023 -0.027847,-0.0024 -0.03125,0 -0.138974,0.106837 -0.205623,0.359232 -0.5625,0.8125 L 7,30.191959 c 1.93e-4,0.0075 -3.84e-4,0.02381 0,0.03125 -0.010751,0.01212 0.010461,0.05012 0,0.0625 -0.298139,0.35285 -0.5,0.781029 -0.5,1.28125 L 6.53125,38.5 c 0,1.123303 0.907948,2.031251 2.03125,2.03125 l 30.9375,0 c 1.123303,0 2.03125,-0.907947 2.03125,-2.03125 L 41.5,31.566959 c 0,-0.500221 -0.201861,-0.9284 -0.5,-1.28125 7.6e-4,-0.0073 -5.73e-4,-0.02386 0,-0.03125 -0.0053,-0.0061 0.0054,-0.02519 0,-0.03125 3.84e-4,-0.0074 -1.93e-4,-0.02376 0,-0.03125 l -2.5,-6.8125 c -0.378776,-0.468361 -0.44102,-0.710816 -0.59375,-0.8125 -0.0037,-0.002 -0.0274,-0.02934 -0.03125,-0.03125 -0.004,-0.0018 -0.0271,0.0016 -0.03125,0 -0.05842,-0.01816 -0.149481,-0.03125 -0.25,-0.03125 l -27.34375,0 c -0.07732,0 -0.13637,-0.01005 -0.1875,0 z" + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8331);stroke-width:1.1919533;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + sodipodi:nodetypes="cssssccssccccccsssccsssccc" + inkscape:connector-curvature="0" /> + <rect + ry="1.6088903" + rx="1.5195075" + y="31" + x="7" + height="9" + width="34" + id="rect8153" + style="fill:url(#linearGradient8333);fill-opacity:1;stroke:none" /> + <rect + ry="2.4999917" + rx="2.49999" + y="33.500023" + x="8.4999924" + height="4.9999833" + width="5.000011" + id="rect8155" + style="fill:none;stroke:url(#linearGradient8335);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="1.4999907" + rx="1.4999907" + y="34.500027" + x="9.5" + height="2.9999814" + width="3" + id="rect8157" + style="fill:url(#linearGradient8337);fill-opacity:1;stroke:#4e9a06;stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="1.4999987" + rx="1.4999987" + y="34.500015" + x="15.5" + height="2.9999974" + width="3" + id="rect8159" + style="fill:url(#linearGradient8339);fill-opacity:1;stroke:#c4a000;stroke-width:1.19195366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="1.4999987" + rx="1.4999987" + y="34.500015" + x="21.5" + height="2.9999974" + width="3" + id="rect8161" + style="fill:url(#linearGradient8341);fill-opacity:1;stroke:#ce5c00;stroke-width:1.19195366;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <path + transform="translate(0.75,0.25)" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + sodipodi:ry="0.25" + sodipodi:rx="0.25" + sodipodi:cy="35.25" + sodipodi:cx="9.75" + id="path8163" + style="opacity:0.75675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + sodipodi:type="arc" /> + <path + transform="translate(6.75,0.25)" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + sodipodi:ry="0.25" + sodipodi:rx="0.25" + sodipodi:cy="35.25" + sodipodi:cx="9.75" + id="path8165" + style="opacity:0.85675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + sodipodi:type="arc" /> + <path + transform="translate(12.75,0.25)" + d="M 10,35.25 C 10,35.388071 9.8880712,35.5 9.75,35.5 9.6119288,35.5 9.5,35.388071 9.5,35.25 9.5,35.111929 9.6119288,35 9.75,35 9.8880712,35 10,35.111929 10,35.25 z" + sodipodi:ry="0.25" + sodipodi:rx="0.25" + sodipodi:cy="35.25" + sodipodi:cx="9.75" + id="path8167" + style="opacity:0.75675677;fill:#f57900;fill-opacity:1;stroke:#ffffff;stroke-width:1.19195342;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" + sodipodi:type="arc" /> + <rect + ry="2.4999917" + rx="2.49999" + y="33.500023" + x="14.499992" + height="4.9999833" + width="5.000011" + id="rect8169" + style="fill:none;stroke:url(#linearGradient8343);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <rect + ry="2.4999917" + rx="2.49999" + y="33.500023" + x="20.499992" + height="4.9999833" + width="5.000011" + id="rect8171" + style="fill:none;stroke:url(#linearGradient8345);stroke-width:1.19195378;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:1.20000057" /> + <g + transform="translate(-1,0)" + style="fill:url(#linearGradient8372);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g8173"> + <g + style="fill:url(#linearGradient8349);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g8175" + transform="translate(-2,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect8177" + style="fill:url(#linearGradient8347);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8353);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g8179"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect8181" + style="fill:url(#linearGradient8351);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8358);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g8183" + transform="translate(2,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect8185" + style="fill:url(#linearGradient8355);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8362);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g8187" + transform="translate(4,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect8189" + style="fill:url(#linearGradient8360);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8366);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g8191" + transform="translate(6,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect8193" + style="fill:url(#linearGradient8364);fill-opacity:1;stroke:none" /> + </g> + <g + style="fill:url(#linearGradient8370);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g8195" + transform="translate(-4,0)"> + <rect + ry="0.5" + rx="0.5" + y="34" + x="33" + height="4.5" + width="1" + id="rect8197" + style="fill:url(#linearGradient8368);fill-opacity:1;stroke:none" /> + </g> + </g> + <path + d="m 10.4375,23.46875 c -0.05668,0.09312 -0.124527,0.211556 -0.21875,0.34375 l -2.25,6.46875 a 0.97236903,0.97236903 0 0 1 0,0.03125 0.97236903,0.97236903 0 0 1 0,0.0625 c -0.00269,0.03459 0.0088,0.04902 0,0.09375 -0.011731,0.05964 -0.028776,0.110654 -0.0625,0.1875 -0.00985,0.02245 -0.043668,0.03169 -0.0625,0.0625 -0.04563,0.07466 -0.093287,0.186952 -0.09375,0.1875 -0.1875108,0.221921 -0.28125,0.417598 -0.28125,0.65625 L 7.5,38.5 c 0,0.599388 0.4631135,1.062501 1.0625,1.0625 l 30.9375,0 c 0.599389,0 1.0625,-0.463111 1.0625,-1.0625 l -0.03125,-6.9375 c 0,-0.238652 -0.09374,-0.434329 -0.28125,-0.65625 a 0.97236903,0.97236903 0 0 1 0,-0.03125 0.97236903,0.97236903 0 0 1 -0.09375,-0.125 0.97236903,0.97236903 0 0 1 0,-0.03125 A 0.97236903,0.97236903 0 0 1 40.0625,30.5 c -0.0031,-0.0063 0.002,-0.02721 0,-0.03125 -0.0029,-0.0061 -0.03123,-0.03115 -0.03125,-0.03125 -5.7e-5,-2.8e-4 0.0019,-0.04282 0,-0.0625 l 0,-0.03125 -2.375,-6.5 c -0.110187,-0.147962 -0.219199,-0.277139 -0.28125,-0.375 l -26.9375,0 z" + id="path8199" + style="color:#000000;fill:none;stroke:#ffffff;stroke-width:1.1919533;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:original="M 10.0625 22.5 C 10.047161 22.503014 10.013575 22.527184 10 22.53125 C 9.995651 22.532728 9.972934 22.529649 9.96875 22.53125 C 9.964867 22.533108 9.941248 22.560511 9.9375 22.5625 C 9.933992 22.564763 9.909653 22.560098 9.90625 22.5625 C 9.767276 22.669337 9.700627 22.921732 9.34375 23.375 L 7 30.1875 C 7.000193 30.194989 6.999616 30.211311 7 30.21875 C 6.989249 30.230871 7.010461 30.268869 7 30.28125 C 6.701861 30.6341 6.5 31.062279 6.5 31.5625 L 6.53125 38.5 C 6.53125 39.623303 7.439198 40.531251 8.5625 40.53125 L 39.5 40.53125 C 40.623303 40.53125 41.53125 39.623303 41.53125 38.5 L 41.5 31.5625 C 41.5 31.062279 41.298139 30.6341 41 30.28125 C 41.00076 30.273915 40.999427 30.257389 41 30.25 C 40.994697 30.243874 41.005375 30.224811 41 30.21875 C 41.000384 30.211311 40.999807 30.194989 41 30.1875 L 38.5 23.375 C 38.121224 22.906639 38.05898 22.664184 37.90625 22.5625 C 37.902538 22.560463 37.878847 22.533156 37.875 22.53125 C 37.871006 22.529474 37.8479 22.532897 37.84375 22.53125 C 37.785333 22.513087 37.694269 22.5 37.59375 22.5 L 10.25 22.5 C 10.172677 22.5 10.11363 22.489952 10.0625 22.5 z " + inkscape:radius="-0.9722718" + sodipodi:type="inkscape:offset" /> + </g> + <g + inkscape:label="phone" + id="g8201" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + transform="matrix(1.000314,0,0,1,-0.002355,-7.00001)" + id="g8203" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + style="color:#000000;fill:url(#radialGradient8374);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8376);stroke-width:1.1917665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + d="m 8.2474619,14.5 7.7498701,-2.999994 16,0 L 39.741876,14.5 c 0.256803,0.06883 0.747462,1.333368 0.747462,1.747462 l 0,2.505076 c 0,0.414094 -0.333368,0.747462 -0.747462,0.747462 l -5.752538,0 -2,-4 -15.5,0 -2.5,4 -5.7418761,0 C 7.833368,19.5 7.5,19.166632 7.5,18.752538 l 0,-2.505076 C 7.5,15.833368 7.9909958,14.568741 8.2474619,14.5 z" + id="path8205" + sodipodi:nodetypes="ccczccccccccccz" + inkscape:connector-curvature="0" /> + </g> + <path + transform="matrix(1.000314,0,0,1,-0.002355,-7.00001)" + sodipodi:nodetypes="ccsccccccccsccc" + id="path8207" + d="M 16.1875,12.46875 8.8125,15.3125 C 8.770706,15.38818 8.740325,15.496831 8.6875,15.625 8.559965,15.934436 8.46875,16.429219 8.46875,16.25 l 0,2.28125 5,0 c 0.858697,-1.529381 1.128913,-2.553892 3.03125,-2 l 15.5,0 c 0.859584,0.447471 1.469779,-1.114201 2.625,2 l 4.90625,0 0,-2.28125 c 0,0.178953 -0.09127,-0.31563 -0.21875,-0.625 -0.0528,-0.128142 -0.08323,-0.236865 -0.125,-0.3125 l -7.375,-2.84375 -15.625,0 z" + style="opacity:0.6;color:#000000;fill:none;stroke:url(#radialGradient8378);stroke-width:1.19176626;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <g + style="opacity:0.8;stroke-linecap:round;stroke-linejoin:round" + transform="matrix(1,0,0,1.0625,0,-1.3125)" + id="g8209"> + <rect + style="fill:url(#radialGradient8380);fill-opacity:1;stroke:none" + id="rect8211" + width="4" + height="8" + x="9.5" + y="21" /> + <rect + style="fill:url(#radialGradient8382);fill-opacity:1;stroke:none" + id="rect8213" + width="4" + height="8" + x="-38.5" + y="-29" + transform="scale(-1,-1)" /> + <rect + style="fill:url(#linearGradient8384);fill-opacity:1;stroke:none" + id="rect8215" + width="21" + height="8" + x="13.5" + y="21" /> + </g> + <path + sodipodi:nodetypes="ccccccsccccccsc" + id="path8217" + d="m 17.509407,7.5 2,0 0.5,2 8.002512,0 0.497488,-2 2,0 c 1.123656,0 1.740719,0.9709838 2.03297,2 l 3.976136,13.999994 0.02763,2 c 0,1.060896 -0.904604,2 -2.02826,2 l -21.006594,0 c -1.123656,0 -1.972996,-0.939104 -1.972996,-2 l -0.02763,-2 L 15.509407,9.5 c 0.293822,-1.0286979 0.876344,-2 2,-2 z" + style="color:#000000;fill:url(#linearGradient8386);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8388);stroke-width:1.19195318;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccscccsc" + id="path8219" + d="m 30.504082,8 -1.588859,0.022097 -0.592,2 L 19.632583,9.955806 19.044665,8.022097 17.5,8 c -1.078709,0 -1.426702,0.8189946 -1.687047,1.789079 l -2.4042,8.958396 -1.157183,3.752519 c 6.001884,-7.205882 17.755181,4 21.876475,-5.73172 L 32.164603,9.789079 C 31.892547,8.8220351 31.582792,8 30.504082,8 z" + style="opacity:0.24324323;color:#000000;fill:url(#linearGradient8390);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.9999997;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccsccccccsc" + id="path8221" + d="m 17.500314,8.5 1.234521,0 0.497174,2 9.444768,-0.0221 0.654679,-1.9779 1.17294,0 c 0.500157,0 0.739705,0.088799 1.000314,1 l 4.004082,13.999994 0,1.5 c 0,1.5 0,1.5 -1.500471,1.5 l -20.00628,0 c -1.500471,0 -1.500471,0 -1.500471,-1.5 l 0,-1.5 L 16.5,9.5 c 0.260325,-0.911495 0.500157,-1 1.000314,-1 z" + style="opacity:0.6;color:#000000;fill:none;stroke:url(#linearGradient8392);stroke-width:1.19195318;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8223" + d="m 18.67949,9.4999962 10.64178,0 c 0.597659,0 1.078805,0.4882234 1.078805,1.0946718 L 32,21.40532 c 0,0.606448 -0.481147,1.094672 -1.078807,1.094672 l -13.853815,-0.01237 c -0.59766,0 -1.078807,-0.488223 -1.078807,-1.094671 l 1.612114,-10.798283 c 0,-0.6064484 0.481147,-1.0946718 1.078805,-1.0946718 z" + style="fill:url(#linearGradient8394);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <g + style="fill:url(#linearGradient8420);fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + transform="translate(0,0.5)" + id="g8225"> + <path + style="fill:url(#linearGradient8396);fill-opacity:1;stroke:none" + d="m 18.558806,13 2.221403,0.01105 c 0.30958,0 0.574433,0.228459 0.558808,0.512241 l -0.04285,0.964469 C 21.280538,14.771541 21.046935,15 20.737355,15 l -2.32218,0 c -0.309579,0 -0.605683,-0.228459 -0.558808,-0.512241 l 0.143631,-0.975518 C 18.031248,13.236272 18.249227,13 18.558806,13 z" + id="path8227" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8398);fill-opacity:1;stroke:none" + d="m 22.891192,13 2.209799,0 c 0.30958,0 0.558808,0.228459 0.558808,0.512241 l 0.03906,0.975518 C 25.698861,14.771541 25.449633,15 25.140053,15 l -2.287924,0 c -0.309579,0 -0.558808,-0.228459 -0.558808,-0.512241 l 0.03906,-0.975518 C 22.332384,13.228459 22.581613,13 22.891192,13 z" + id="path8229" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8400);fill-opacity:1;stroke:none" + d="m 27.223578,13 2.217611,0 c 0.30958,0 0.519745,0.244084 0.558808,0.512241 l 0.140625,0.975518 C 30.187497,14.775447 29.891394,15 29.581814,15 l -2.315267,0 c -0.309579,0 -0.54709,-0.228459 -0.558808,-0.512241 L 26.66477,13.512241 C 26.649145,13.228459 26.913999,13 27.223578,13 z" + id="path8231" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8402);fill-opacity:1;stroke:none" + d="m 19.012241,10 1.942372,0 c 0.283782,0 0.535679,0.228459 0.512241,0.512241 l -0.04419,0.975518 C 21.42266,11.771541 21.194201,12 20.910419,12 l -2.074955,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 L 18.5,10.512241 C 18.5,10.228459 18.728459,10 19.012241,10 z" + id="path8233" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8404);fill-opacity:1;stroke:none" + d="m 22.980991,10 2.030206,0 c 0.283782,0 0.512241,0.228459 0.512241,0.512241 l 0.03125,0.975518 C 25.554688,11.771541 25.326229,12 25.042447,12 l -2.100519,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 l 0.03906,-0.975518 C 22.46875,10.228459 22.697209,10 22.980991,10 z" + id="path8235" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8406);fill-opacity:1;stroke:none" + d="m 27.035679,10 1.975518,0 c 0.283782,0 0.469272,0.224553 0.512241,0.512241 l 0.160156,0.975518 C 29.722656,11.771541 29.455135,12 29.171353,12 l -2.092706,0 c -0.283782,0 -0.496616,-0.228459 -0.512241,-0.512241 l -0.04297,-0.975518 C 26.507813,10.228459 26.751897,10 27.035679,10 z" + id="path8237" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8408);fill-opacity:1;stroke:none" + d="m 18.140535,16 2.455797,0 c 0.335378,0 0.624907,0.232365 0.605376,0.512241 l -0.04297,0.975518 C 21.143114,17.767635 20.888741,18 20.553363,18 l -2.561265,0 C 17.65672,18 17.343754,17.771541 17.386723,17.487759 L 17.53516,16.512241 C 17.578129,16.232365 17.805157,16 18.140535,16 z" + id="path8239" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8410);fill-opacity:1;stroke:none" + d="m 22.801401,16 2.389391,0 c 0.335378,0 0.605376,0.228459 0.605376,0.512241 l 0.03906,0.975518 C 25.83523,17.771541 25.565232,18 25.229854,18 l -2.459703,0 c -0.335378,0 -0.605375,-0.228459 -0.605375,-0.512241 l 0.03125,-0.975518 C 22.196026,16.228459 22.466023,16 22.801401,16 z" + id="path8241" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8412);fill-opacity:1;stroke:none" + d="m 27.399767,16 2.447984,0 c 0.335378,0 0.566313,0.228459 0.605376,0.512241 l 0.144531,0.975518 C 30.64844,17.775447 30.32766,18 29.992282,18 l -2.549547,0 c -0.335378,0 -0.58975,-0.232365 -0.605375,-0.512241 L 26.79439,16.512241 C 26.782673,16.228459 27.064389,16 27.399767,16 z" + id="path8243" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8414);fill-opacity:1;stroke:none" + d="m 17.730073,19 2.678359,0 c 0.361176,0 0.667568,0.236272 0.651943,0.512241 l -0.03125,0.975518 C 21.0135,20.763728 20.738358,21 20.377182,21 l -2.803359,0 c -0.361176,0 -0.683192,-0.228459 -0.651942,-0.512241 l 0.15625,-0.975518 C 17.109381,19.232365 17.368897,19 17.730073,19 z" + id="path8245" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8416);fill-opacity:1;stroke:none" + d="m 22.723326,19 2.553357,0 c 0.361176,0 0.651943,0.228459 0.651943,0.512241 l 0.04297,0.975518 C 25.971595,20.771541 25.680828,21 25.319652,21 l -2.643201,0 c -0.361177,0 -0.651943,-0.228459 -0.651943,-0.512241 l 0.04687,-0.975518 C 22.071383,19.228459 22.362149,19 22.723326,19 z" + id="path8247" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:url(#linearGradient8418);fill-opacity:1;stroke:none" + d="m 27.583765,19 2.674451,0 c 0.361176,0 0.616787,0.228459 0.651943,0.512241 l 0.15625,0.975518 C 31.109378,20.767635 30.775642,21 30.414466,21 l -2.783826,0 c -0.361177,0 -0.644131,-0.228459 -0.651943,-0.512241 l -0.04687,-0.975518 C 26.920103,19.228459 27.222588,19 27.583765,19 z" + id="path8249" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + </g> + <path + sodipodi:nodetypes="ccccccccc" + id="path8251" + d="m 18.558806,13 2.221403,0.01105 c 0.30958,0 0.574433,0.228459 0.558808,0.512241 l -0.04285,0.964469 C 21.280538,14.771541 21.046935,15 20.737355,15 l -2.32218,0 c -0.309579,0 -0.605683,-0.228459 -0.558808,-0.512241 l 0.143631,-0.975518 C 18.031248,13.236272 18.249227,13 18.558806,13 z" + style="fill:url(#radialGradient8422);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8253" + d="m 22.891192,13 2.209799,0 c 0.30958,0 0.558808,0.228459 0.558808,0.512241 l 0.03906,0.975518 C 25.698861,14.771541 25.449633,15 25.140053,15 l -2.287924,0 c -0.309579,0 -0.558808,-0.228459 -0.558808,-0.512241 l 0.03906,-0.975518 C 22.332384,13.228459 22.581613,13 22.891192,13 z" + style="fill:url(#radialGradient8424);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8255" + d="m 27.223578,13 2.217611,0 c 0.30958,0 0.519745,0.244084 0.558808,0.512241 l 0.140625,0.975518 C 30.187497,14.775447 29.891394,15 29.581814,15 l -2.315267,0 c -0.309579,0 -0.54709,-0.228459 -0.558808,-0.512241 L 26.66477,13.512241 C 26.649145,13.228459 26.913999,13 27.223578,13 z" + style="fill:url(#radialGradient8426);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8257" + d="m 19.012241,10 1.942372,0 c 0.283782,0 0.535679,0.228459 0.512241,0.512241 l -0.04419,0.975518 C 21.42266,11.771541 21.194201,12 20.910419,12 l -2.074955,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 L 18.5,10.512241 C 18.5,10.228459 18.728459,10 19.012241,10 z" + style="fill:url(#radialGradient8428);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8259" + d="m 22.980991,10 2.030206,0 c 0.283782,0 0.512241,0.228459 0.512241,0.512241 l 0.03125,0.975518 C 25.554688,11.771541 25.326229,12 25.042447,12 l -2.100519,0 c -0.283782,0 -0.512241,-0.228459 -0.512241,-0.512241 l 0.03906,-0.975518 C 22.46875,10.228459 22.697209,10 22.980991,10 z" + style="fill:url(#radialGradient8430);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8261" + d="m 27.035679,10 1.975518,0 c 0.283782,0 0.469272,0.224553 0.512241,0.512241 l 0.160156,0.975518 C 29.722656,11.771541 29.455135,12 29.171353,12 l -2.092706,0 c -0.283782,0 -0.496616,-0.228459 -0.512241,-0.512241 l -0.04297,-0.975518 C 26.507813,10.228459 26.751897,10 27.035679,10 z" + style="fill:url(#radialGradient8432);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8263" + d="m 18.140535,16 2.455797,0 c 0.335378,0 0.624907,0.232365 0.605376,0.512241 l -0.04297,0.975518 C 21.143114,17.767635 20.888741,18 20.553363,18 l -2.561265,0 C 17.65672,18 17.343754,17.771541 17.386723,17.487759 L 17.53516,16.512241 C 17.578129,16.232365 17.805157,16 18.140535,16 z" + style="fill:url(#radialGradient8434);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8265" + d="m 22.801401,16 2.389391,0 c 0.335378,0 0.605376,0.228459 0.605376,0.512241 l 0.03906,0.975518 C 25.83523,17.771541 25.565232,18 25.229854,18 l -2.459703,0 c -0.335378,0 -0.605375,-0.228459 -0.605375,-0.512241 l 0.03125,-0.975518 C 22.196026,16.228459 22.466023,16 22.801401,16 z" + style="fill:url(#radialGradient8436);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8267" + d="m 27.399767,16 2.447984,0 c 0.335378,0 0.566313,0.228459 0.605376,0.512241 l 0.144531,0.975518 C 30.64844,17.775447 30.32766,18 29.992282,18 l -2.549547,0 c -0.335378,0 -0.58975,-0.232365 -0.605375,-0.512241 L 26.79439,16.512241 C 26.782673,16.228459 27.064389,16 27.399767,16 z" + style="fill:url(#radialGradient8438);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8269" + d="m 17.730073,19 2.678359,0 c 0.361176,0 0.667568,0.236272 0.651943,0.512241 l -0.03125,0.975518 C 21.0135,20.763728 20.738358,21 20.377182,21 l -2.803359,0 c -0.361176,0 -0.683192,-0.228459 -0.651942,-0.512241 l 0.15625,-0.975518 C 17.109381,19.232365 17.368897,19 17.730073,19 z" + style="fill:url(#radialGradient8440);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8271" + d="m 22.723326,19 2.553357,0 c 0.361176,0 0.651943,0.228459 0.651943,0.512241 l 0.04297,0.975518 C 25.971595,20.771541 25.680828,21 25.319652,21 l -2.643201,0 c -0.361177,0 -0.651943,-0.228459 -0.651943,-0.512241 l 0.04687,-0.975518 C 22.071383,19.228459 22.362149,19 22.723326,19 z" + style="fill:url(#radialGradient8442);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8273" + d="m 27.583765,19 2.674451,0 c 0.361176,0 0.616787,0.228459 0.651943,0.512241 l 0.15625,0.975518 C 31.109378,20.767635 30.775642,21 30.414466,21 l -2.783826,0 c -0.361177,0 -0.644131,-0.228459 -0.651943,-0.512241 l -0.04687,-0.975518 C 26.920103,19.228459 27.222588,19 27.583765,19 z" + style="fill:url(#radialGradient8444);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <g + transform="translate(1,0.370117)" + style="fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + id="g8275"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="19.609175" + y="11.364014" + id="text8277"><tspan + sodipodi:role="line" + id="tspan8279" + x="19.609175" + y="11.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">1</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="23.675293" + y="11.364014" + id="text8281"><tspan + sodipodi:role="line" + id="tspan8283" + x="23.675293" + y="11.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">2</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="27.774256" + y="11.35791" + id="text8285"><tspan + sodipodi:role="line" + id="tspan8287" + x="27.774256" + y="11.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">3</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="19.262312" + y="14.364014" + id="text8289"><tspan + sodipodi:role="line" + id="tspan8291" + x="19.262312" + y="14.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">4</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="23.675293" + y="14.364014" + id="text8293"><tspan + sodipodi:role="line" + id="tspan8295" + x="23.675293" + y="14.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">5</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="28.067911" + y="14.35791" + id="text8297"><tspan + sodipodi:role="line" + id="tspan8299" + x="28.067911" + y="14.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">6</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="18.957983" + y="17.35791" + id="text8301"><tspan + sodipodi:role="line" + id="tspan8303" + x="18.957983" + y="17.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">7</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="23.675293" + y="17.364014" + id="text8305"><tspan + sodipodi:role="line" + id="tspan8307" + x="23.675293" + y="17.364014" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">8</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="28.368921" + y="17.35791" + id="text8309"><tspan + sodipodi:role="line" + id="tspan8311" + x="28.368921" + y="17.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">9</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="18.661995" + y="20.358154" + id="text8313"><tspan + sodipodi:role="line" + id="tspan8315" + x="18.661995" + y="20.358154" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">#</tspan></text> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;fill:#cccccc;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="23.666496" + y="20.35791" + id="text8317"><tspan + sodipodi:role="line" + id="tspan8319" + x="23.666496" + y="20.35791" + style="font-size:1px;fill:#cccccc;fill-opacity:1;font-family:Arial Black">0</tspan></text> + <text + xml:space="preserve" + style="font-size:1.73080969px;font-weight:bold;fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round" + x="28.54826" + y="20.88273" + id="text8321"><tspan + sodipodi:role="line" + id="tspan8323" + x="28.54826" + y="20.88273" + style="font-size:1.73080969px;font-weight:bold;fill:#cccccc;fill-opacity:1;stroke-linecap:round;stroke-linejoin:round">*</tspan></text> + </g> + </g> + </g> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans" + x="603.19855" + y="149.49422" + id="text8446"><tspan + id="tspan8448" + sodipodi:role="line" + x="603.19855" + y="149.49422">GMSC</tspan></text> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="matrix(0.69916804,0,0,0.69916804,255.60782,209.44226)" + id="g8450"> + <g + style="stroke-linecap:round;stroke-linejoin:round" + id="g8452" + transform="matrix(1.48173,0,0,1.48173,755.762,95.8056)"> + <g + transform="matrix(0.0201927,0,0,0.0170832,-17.5399,42.4025)" + id="g8454" + style="stroke-linecap:round;stroke-linejoin:round;display:inline"> + <rect + style="opacity:0.39195999;color:#000000;fill:url(#linearGradient8606);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect8456" + width="1339.6335" + height="478.35718" + x="-1559.2523" + y="-150.69685" /> + <path + inkscape:connector-curvature="0" + style="opacity:0.40206197;color:#000000;fill:url(#radialGradient8608);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + id="path8458" + sodipodi:nodetypes="cccc" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + id="path8460" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + style="opacity:0.40206197;color:#000000;fill:url(#radialGradient8610);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,30)" + id="g8462"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8612);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8464" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8466" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,24)" + id="g8468"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8614);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8470" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8472" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,18)" + id="g8474"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8616);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8476" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8478" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,12)" + id="g8480"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8618);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8482" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8484" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,6)" + id="g8486"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8620);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8488" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8490" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,0)" + id="g8492"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8622);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8494" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8496" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <rect + ry="1.6702623" + rx="1.616383" + y="1.5" + x="-50.5" + height="39.999996" + width="29.999998" + id="rect8498" + style="fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-62,1)" + id="g8500"> + <path + inkscape:connector-curvature="0" + style="fill:#d3d7cf;fill-opacity:1;stroke:none" + d="M 14,3 39.182408,3 40,3.6961651 40,25 14,25 14,3 z" + id="path8502" + sodipodi:nodetypes="cccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;stroke:none" + d="m 14,3 25.65625,0 c 1.055682,1.0277742 -0.49011,2.0151389 -2,2 L 12.625,5 C 14.126385,5 15.015732,3.4971845 14,3 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + </g> + <rect + ry="0.75161809" + rx="0.83513117" + y="9.5" + x="-20.5" + height="10" + width="5" + id="rect8506" + style="fill:url(#radialGradient8624);fill-opacity:1;stroke:#4e9a06;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path8508" + d="m -48.079373,2.53125 c -0.800828,0 -1.389377,0.6089338 -1.389377,1.4375 l 0,35.0625 c 0,0.828566 0.588549,1.4375 1.389377,1.4375 l 25.189997,0 c 0.800828,0 1.389377,-0.608935 1.389377,-1.4375 l 0,-35.0625 c 0,-0.8285661 -0.58855,-1.4375 -1.389377,-1.4375 l -25.189997,0 z" + style="opacity:0.2;fill:none;stroke:#ffffff;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" /> + <path + transform="translate(-62,-20)" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + id="path8510" + style="opacity:0.5;fill:none;stroke:url(#linearGradient8626);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + inkscape:radius="-0.99302852" + sodipodi:type="inkscape:offset" /> + <rect + ry="0.83513117" + rx="0.83513117" + y="19.5" + x="-22.5" + height="10" + width="8" + id="rect8512" + style="fill:url(#radialGradient8628);fill-opacity:1;stroke:#c4a000;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <rect + ry="0.83513117" + rx="0.83513117" + y="29.5" + x="-21.5" + height="10" + width="8" + id="rect8514" + style="fill:url(#radialGradient8630);fill-opacity:1;stroke:#ce5c00;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + transform="translate(-61,-10)" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + id="path8516" + style="opacity:0.5;fill:none;stroke:url(#linearGradient8632);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + inkscape:radius="-0.99302852" + sodipodi:type="inkscape:offset" /> + <rect + y="19" + x="-24.8125" + height="10" + width="6.8125" + id="rect8518" + style="opacity:0.25;fill:#000000;fill-opacity:1;stroke:none" /> + <path + transform="translate(-60,0)" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + id="path8520" + style="opacity:0.5;fill:none;stroke:url(#linearGradient8634);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + inkscape:radius="-0.99302852" + sodipodi:type="inkscape:offset" /> + <rect + y="29" + x="-24.8125" + height="11" + width="6.8125" + id="rect8522" + style="opacity:0.1;fill:#000000;fill-opacity:1;stroke:none" /> + <rect + y="9" + x="-25" + height="10" + width="7" + id="rect8524" + style="opacity:0.15517201;fill:#000000;fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#linearGradient8636);fill-opacity:1;stroke:#204a87;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + d="m -49.025126,6.5 27.050252,0 C -20.603794,6.5 -19.5,7.6037937 -19.5,8.9748738 l 0,34.0502482 c 0,1.37108 -1.103794,2.474874 -2.474874,2.474874 l -27.050252,0 c -1.37108,0 -2.474874,-1.103794 -2.474874,-2.474874 l 0,-34.0502482 C -51.5,7.6037937 -50.396206,6.5 -49.025126,6.5 z" + id="path8526" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + transform="translate(-60,0)" + style="fill:url(#linearGradient8638);fill-opacity:1;stroke:none" + d="M 10.96875,7 C 9.866556,7 9,7.8665563 9,8.96875 l 0,34.0625 C 9,44.133444 9.8665564,45 10.96875,45 l 27.0625,0 C 39.133444,45 40,44.133443 40,43.03125 L 40,8.96875 C 40,7.8665562 39.133443,7 38.03125,7 l -27.0625,0 z" + id="path8528" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="opacity:0.46120701;fill:none;stroke:url(#linearGradient8640);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + d="m 10.96875,7.53125 c -0.828566,0 -1.4375,0.6089338 -1.4375,1.4375 l 0,34.0625 c 0,0.828566 0.608934,1.4375 1.4375,1.4375 l 27.0625,0 c 0.828566,0 1.4375,-0.608935 1.4375,-1.4375 l 0,-34.0625 c 0,-0.8285661 -0.608935,-1.4375 -1.4375,-1.4375 l -27.0625,0 z" + id="path8530" + sodipodi:nodetypes="ccccccccc" + transform="translate(-60,0)" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,30.1455)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8532" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,24.1455)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8534" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,18.1455)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8536" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,6.14552)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8538" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,12.1455)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8540" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,0.145517)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8542" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,30)" + id="g8544"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8642);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8546" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8548" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8550" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8552" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,24)" + id="g8554"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8644);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8556" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8558" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8560" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8562" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,18)" + id="g8564"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8646);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8566" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8568" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8570" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8572" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,12)" + id="g8574"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8648);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8576" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8578" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8580" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8582" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,6)" + id="g8584"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8650);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8586" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8588" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8590" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8592" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <path + inkscape:connector-curvature="0" + id="path8594" + d="m -36.126698,24.53508 c -9e-6,0.958803 0.196069,1.714927 0.588236,2.268374 0.399687,0.553456 0.938903,0.830181 1.617647,0.830178 0.671179,3e-6 1.206623,-0.276722 1.606334,-0.830178 0.399685,-0.561242 0.599535,-1.317366 0.599548,-2.268374 -1.3e-5,-0.943199 -0.203634,-1.68763 -0.61086,-2.233296 -0.399711,-0.553442 -0.938926,-0.830168 -1.617647,-0.830178 -0.663661,10e-6 -1.195335,0.276736 -1.595022,0.830178 -0.392167,0.545666 -0.588245,1.290097 -0.588236,2.233296 m 4.63801,3.519487 c -0.226258,0.553454 -0.59202,0.986082 -1.097286,1.297885 -0.49775,0.304009 -1.082214,0.456014 -1.753393,0.456013 -1.297144,10e-7 -2.352951,-0.483295 -3.167421,-1.449888 -0.806945,-0.974385 -1.210414,-2.241087 -1.210407,-3.800111 -7e-6,-1.559012 0.407232,-2.825714 1.221719,-3.800111 0.814471,-0.974376 1.866506,-1.461569 3.156109,-1.461581 0.671179,1.2e-5 1.255643,0.155913 1.753393,0.467706 0.505266,0.311815 0.871028,0.744442 1.097286,1.297884 l 0,-1.531736 2.364252,0 0,8.103004 c 0.935127,-0.148103 1.67042,-0.611911 2.205883,-1.391425 0.535426,-0.7873 0.803148,-1.792866 0.803167,-3.016703 -1.9e-5,-0.779502 -0.10937,-1.508343 -0.328054,-2.186526 -0.218722,-0.685957 -0.550546,-1.313463 -0.995475,-1.882516 -0.716458,-0.950989 -1.613892,-1.683728 -2.692308,-2.198218 -1.070904,-0.514461 -2.23229,-0.7717 -3.484163,-0.771714 -0.874822,1.4e-5 -1.711925,0.120838 -2.511312,0.362472 -0.799405,0.233867 -1.538469,0.580748 -2.217194,1.040646 -1.116145,0.763932 -1.987185,1.753908 -2.613122,2.969932 -0.618405,1.208249 -0.927606,2.517824 -0.927602,3.92873 -4e-6,1.161475 0.199846,2.252787 0.599547,3.273942 0.407236,1.013364 0.9917,1.9098 1.753395,2.689308 0.754141,0.76392 1.617639,1.344654 2.590496,1.742205 0.980384,0.405343 2.024878,0.608015 3.133485,0.608017 0.950214,-2e-6 1.900439,-0.183186 2.850678,-0.549554 0.950212,-0.36637 1.760919,-0.861359 2.432127,-1.484966 l 1.210407,1.894209 c -0.942701,0.756122 -1.972113,1.332959 -3.088235,1.730512 -1.108611,0.405341 -2.236061,0.608013 -3.382353,0.608018 -1.395184,-5e-6 -2.71117,-0.257243 -3.947964,-0.771715 -1.236809,-0.506684 -2.337863,-1.247218 -3.303167,-2.221603 -0.965312,-0.974388 -1.700606,-2.100778 -2.205882,-3.379176 -0.50528,-1.286188 -0.757919,-2.665919 -0.757918,-4.139197 -10e-7,-1.4187 0.256408,-2.771149 0.769231,-4.057349 0.512817,-1.286179 1.244339,-2.416468 2.194569,-3.390868 0.950221,-0.966578 2.055046,-1.714906 3.31448,-2.244989 1.266959,-0.53005 2.579175,-0.795082 3.936651,-0.795099 1.689278,1.7e-5 3.223967,0.335205 4.604072,1.005567 1.380073,0.662599 2.533919,1.621395 3.461539,2.876391 0.565591,0.763933 0.991683,1.59411 1.27828,2.490534 0.294097,0.888651 0.441155,1.824062 0.441177,2.806237 -2.2e-5,2.112476 -0.614651,3.753344 -1.843891,4.922604 -1.22928,1.169266 -2.963818,1.753899 -5.203621,1.753898 l -0.441175,0 0,-1.800669" + style="font-size:23.55380058px;font-style:normal;font-weight:normal;fill:#8fbceb;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" /> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,0)" + id="g8596"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient8652);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8598" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8600" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8602" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8604" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + </g> + </g> + <g + id="g8654" + transform="matrix(0.69916804,0,0,0.69916804,221.4493,127.0539)" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + transform="matrix(1.48173,0,0,1.48173,755.762,95.8056)" + id="g8656" + style="stroke-linecap:round;stroke-linejoin:round"> + <g + style="stroke-linecap:round;stroke-linejoin:round;display:inline" + id="g8658" + transform="matrix(0.0201927,0,0,0.0170832,-17.5399,42.4025)"> + <rect + y="-150.69685" + x="-1559.2523" + height="478.35718" + width="1339.6335" + id="rect8660" + style="opacity:0.39195999;color:#000000;fill:url(#linearGradient8810);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + <path + sodipodi:nodetypes="cccc" + id="path8662" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + style="opacity:0.40206197;color:#000000;fill:url(#radialGradient8812);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.40206197;color:#000000;fill:url(#radialGradient8814);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + id="path8664" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + </g> + <g + id="g8666" + transform="translate(-60,30)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path8668" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient8816);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path8670" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g8672" + transform="translate(-60,24)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path8674" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient8818);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path8676" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g8678" + transform="translate(-60,18)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path8680" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient8820);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path8682" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g8684" + transform="translate(-60,12)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path8686" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient8822);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path8688" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g8690" + transform="translate(-60,6)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path8692" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient8824);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path8694" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <g + id="g8696" + transform="translate(-60,0)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + id="path8698" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + style="fill:none;stroke:url(#radialGradient8826);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + sodipodi:ry="3.4913397" + sodipodi:rx="4.9939418" + sodipodi:cy="9.0207386" + sodipodi:cx="9.4575529" + id="path8700" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + </g> + <rect + style="fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect8702" + width="29.999998" + height="39.999996" + x="-50.5" + y="1.5" + rx="1.616383" + ry="1.6702623" /> + <g + id="g8704" + transform="translate(-62,1)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="cccccc" + id="path8706" + d="M 14,3 39.182408,3 40,3.6961651 40,25 14,25 14,3 z" + style="fill:#d3d7cf;fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccc" + id="path8708" + d="m 14,3 25.65625,0 c 1.055682,1.0277742 -0.49011,2.0151389 -2,2 L 12.625,5 C 14.126385,5 15.015732,3.4971845 14,3 z" + style="fill:#ffffff;fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + </g> + <rect + style="fill:url(#radialGradient8828);fill-opacity:1;stroke:#4e9a06;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect8710" + width="5" + height="10" + x="-20.5" + y="9.5" + rx="0.83513117" + ry="0.75161809" /> + <path + style="opacity:0.2;fill:none;stroke:#ffffff;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + d="m -48.079373,2.53125 c -0.800828,0 -1.389377,0.6089338 -1.389377,1.4375 l 0,35.0625 c 0,0.828566 0.588549,1.4375 1.389377,1.4375 l 25.189997,0 c 0.800828,0 1.389377,-0.608935 1.389377,-1.4375 l 0,-35.0625 c 0,-0.8285661 -0.58855,-1.4375 -1.389377,-1.4375 l -25.189997,0 z" + id="path8712" + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.99302852" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + style="opacity:0.5;fill:none;stroke:url(#linearGradient8830);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8714" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + transform="translate(-62,-20)" /> + <rect + style="fill:url(#radialGradient8832);fill-opacity:1;stroke:#c4a000;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect8716" + width="8" + height="10" + x="-22.5" + y="19.5" + rx="0.83513117" + ry="0.83513117" /> + <rect + style="fill:url(#radialGradient8834);fill-opacity:1;stroke:#ce5c00;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect8718" + width="8" + height="10" + x="-21.5" + y="29.5" + rx="0.83513117" + ry="0.83513117" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.99302852" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + style="opacity:0.5;fill:none;stroke:url(#linearGradient8836);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8720" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + transform="translate(-61,-10)" /> + <rect + style="opacity:0.25;fill:#000000;fill-opacity:1;stroke:none" + id="rect8722" + width="6.8125" + height="10" + x="-24.8125" + y="19" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.99302852" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + style="opacity:0.5;fill:none;stroke:url(#linearGradient8839);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8724" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + transform="translate(-60,0)" /> + <rect + style="opacity:0.1;fill:#000000;fill-opacity:1;stroke:none" + id="rect8726" + width="6.8125" + height="11" + x="-24.8125" + y="29" /> + <rect + style="opacity:0.15517201;fill:#000000;fill-opacity:1;stroke:none" + id="rect8728" + width="7" + height="10" + x="-25" + y="9" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8730" + d="m -49.025126,6.5 27.050252,0 C -20.603794,6.5 -19.5,7.6037937 -19.5,8.9748738 l 0,34.0502482 c 0,1.37108 -1.103794,2.474874 -2.474874,2.474874 l -27.050252,0 c -1.37108,0 -2.474874,-1.103794 -2.474874,-2.474874 l 0,-34.0502482 C -51.5,7.6037937 -50.396206,6.5 -49.025126,6.5 z" + style="fill:url(#linearGradient8841);fill-opacity:1;stroke:#204a87;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccccccc" + id="path8732" + d="M 10.96875,7 C 9.866556,7 9,7.8665563 9,8.96875 l 0,34.0625 C 9,44.133444 9.8665564,45 10.96875,45 l 27.0625,0 C 39.133444,45 40,44.133443 40,43.03125 L 40,8.96875 C 40,7.8665562 39.133443,7 38.03125,7 l -27.0625,0 z" + style="fill:url(#linearGradient8843);fill-opacity:1;stroke:none" + transform="translate(-60,0)" + inkscape:connector-curvature="0" /> + <path + transform="translate(-60,0)" + sodipodi:nodetypes="ccccccccc" + id="path8734" + d="m 10.96875,7.53125 c -0.828566,0 -1.4375,0.6089338 -1.4375,1.4375 l 0,34.0625 c 0,0.828566 0.608934,1.4375 1.4375,1.4375 l 27.0625,0 c 0.828566,0 1.4375,-0.608935 1.4375,-1.4375 l 0,-34.0625 c 0,-0.8285661 -0.608935,-1.4375 -1.4375,-1.4375 l -27.0625,0 z" + style="opacity:0.46120701;fill:none;stroke:url(#linearGradient8845);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8736" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,30.1455)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8738" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,24.1455)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8740" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,18.1455)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8742" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,6.14552)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8744" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,12.1455)" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8746" + sodipodi:cx="11.91033" + sodipodi:cy="11.959651" + sodipodi:rx="1.524699" + sodipodi:ry="1.6130873" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + transform="matrix(0.983801,0,0,0.95244,-59.7174,0.145517)" /> + <g + id="g8748" + transform="translate(-60,30)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path8750" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient8847);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path8752" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8754" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8756" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g8758" + transform="translate(-60,24)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path8760" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient8849);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path8762" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8764" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8766" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g8768" + transform="translate(-60,18)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path8770" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient8851);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path8772" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8774" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8776" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g8778" + transform="translate(-60,12)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path8780" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient8853);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path8782" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8784" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8786" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <g + id="g8788" + transform="translate(-60,6)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path8790" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient8855);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path8792" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8794" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8796" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + <path + style="font-size:23.55380058px;font-style:normal;font-weight:normal;fill:#8fbceb;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + d="m -36.126698,24.53508 c -9e-6,0.958803 0.196069,1.714927 0.588236,2.268374 0.399687,0.553456 0.938903,0.830181 1.617647,0.830178 0.671179,3e-6 1.206623,-0.276722 1.606334,-0.830178 0.399685,-0.561242 0.599535,-1.317366 0.599548,-2.268374 -1.3e-5,-0.943199 -0.203634,-1.68763 -0.61086,-2.233296 -0.399711,-0.553442 -0.938926,-0.830168 -1.617647,-0.830178 -0.663661,10e-6 -1.195335,0.276736 -1.595022,0.830178 -0.392167,0.545666 -0.588245,1.290097 -0.588236,2.233296 m 4.63801,3.519487 c -0.226258,0.553454 -0.59202,0.986082 -1.097286,1.297885 -0.49775,0.304009 -1.082214,0.456014 -1.753393,0.456013 -1.297144,10e-7 -2.352951,-0.483295 -3.167421,-1.449888 -0.806945,-0.974385 -1.210414,-2.241087 -1.210407,-3.800111 -7e-6,-1.559012 0.407232,-2.825714 1.221719,-3.800111 0.814471,-0.974376 1.866506,-1.461569 3.156109,-1.461581 0.671179,1.2e-5 1.255643,0.155913 1.753393,0.467706 0.505266,0.311815 0.871028,0.744442 1.097286,1.297884 l 0,-1.531736 2.364252,0 0,8.103004 c 0.935127,-0.148103 1.67042,-0.611911 2.205883,-1.391425 0.535426,-0.7873 0.803148,-1.792866 0.803167,-3.016703 -1.9e-5,-0.779502 -0.10937,-1.508343 -0.328054,-2.186526 -0.218722,-0.685957 -0.550546,-1.313463 -0.995475,-1.882516 -0.716458,-0.950989 -1.613892,-1.683728 -2.692308,-2.198218 -1.070904,-0.514461 -2.23229,-0.7717 -3.484163,-0.771714 -0.874822,1.4e-5 -1.711925,0.120838 -2.511312,0.362472 -0.799405,0.233867 -1.538469,0.580748 -2.217194,1.040646 -1.116145,0.763932 -1.987185,1.753908 -2.613122,2.969932 -0.618405,1.208249 -0.927606,2.517824 -0.927602,3.92873 -4e-6,1.161475 0.199846,2.252787 0.599547,3.273942 0.407236,1.013364 0.9917,1.9098 1.753395,2.689308 0.754141,0.76392 1.617639,1.344654 2.590496,1.742205 0.980384,0.405343 2.024878,0.608015 3.133485,0.608017 0.950214,-2e-6 1.900439,-0.183186 2.850678,-0.549554 0.950212,-0.36637 1.760919,-0.861359 2.432127,-1.484966 l 1.210407,1.894209 c -0.942701,0.756122 -1.972113,1.332959 -3.088235,1.730512 -1.108611,0.405341 -2.236061,0.608013 -3.382353,0.608018 -1.395184,-5e-6 -2.71117,-0.257243 -3.947964,-0.771715 -1.236809,-0.506684 -2.337863,-1.247218 -3.303167,-2.221603 -0.965312,-0.974388 -1.700606,-2.100778 -2.205882,-3.379176 -0.50528,-1.286188 -0.757919,-2.665919 -0.757918,-4.139197 -10e-7,-1.4187 0.256408,-2.771149 0.769231,-4.057349 0.512817,-1.286179 1.244339,-2.416468 2.194569,-3.390868 0.950221,-0.966578 2.055046,-1.714906 3.31448,-2.244989 1.266959,-0.53005 2.579175,-0.795082 3.936651,-0.795099 1.689278,1.7e-5 3.223967,0.335205 4.604072,1.005567 1.380073,0.662599 2.533919,1.621395 3.461539,2.876391 0.565591,0.763933 0.991683,1.59411 1.27828,2.490534 0.294097,0.888651 0.441155,1.824062 0.441177,2.806237 -2.2e-5,2.112476 -0.614651,3.753344 -1.843891,4.922604 -1.22928,1.169266 -2.963818,1.753899 -5.203621,1.753898 l -0.441175,0 0,-1.800669" + id="path8798" + inkscape:connector-curvature="0" /> + <g + id="g8800" + transform="translate(-60,0)" + style="stroke-linecap:round;stroke-linejoin:round"> + <path + sodipodi:nodetypes="csc" + id="path8802" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:url(#radialGradient8857);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cssc" + id="path8804" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + <path + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8806" + style="fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + sodipodi:ry="0.8046875" + sodipodi:rx="0.546875" + sodipodi:cy="8.2578125" + sodipodi:cx="5.265625" + id="path8808" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + </g> + </g> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="matrix(0.69916804,0,0,0.69916804,299.93817,127.0539)" + id="g8859"> + <g + style="stroke-linecap:round;stroke-linejoin:round" + id="g8861" + transform="matrix(1.48173,0,0,1.48173,755.762,95.8056)"> + <g + transform="matrix(0.0201927,0,0,0.0170832,-17.5399,42.4025)" + id="g8863" + style="stroke-linecap:round;stroke-linejoin:round;display:inline"> + <rect + style="opacity:0.39195999;color:#000000;fill:url(#linearGradient9015);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + id="rect8865" + width="1339.6335" + height="478.35718" + x="-1559.2523" + y="-150.69685" /> + <path + inkscape:connector-curvature="0" + style="opacity:0.40206197;color:#000000;fill:url(#radialGradient9017);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" + d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z" + id="path8867" + sodipodi:nodetypes="cccc" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" + id="path8869" + d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z" + style="opacity:0.40206197;color:#000000;fill:url(#radialGradient9019);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,30)" + id="g8871"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9021);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8873" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8875" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,24)" + id="g8877"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9023);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8879" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8881" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,18)" + id="g8883"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9025);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8885" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8887" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,12)" + id="g8889"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9027);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8891" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8893" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,6)" + id="g8895"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9029);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8897" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8899" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,0)" + id="g8901"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9031);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0" + d="m 14.345337,8.5060394 c -0.64368,2.2113336 -3.112797,4.0060386 -5.5114231,4.0060386 -2.3986256,0 -3.8229293,-1.794705 -3.1792494,-4.0060386 0.64368,-2.2113336 3.1127974,-4.0060393 5.5114235,-4.0060393 2.398625,0 3.822929,1.7947057 3.179249,4.0060393 z" + id="path8903" /> + <path + sodipodi:type="arc" + style="fill:none;stroke:#eeeeec;stroke-width:0.90639138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path8905" + sodipodi:cx="9.4575529" + sodipodi:cy="9.0207386" + sodipodi:rx="4.9939418" + sodipodi:ry="3.4913397" + d="m 14.451495,9.0207386 c 0,1.9282134 -2.235864,3.4913394 -4.9939421,3.4913394 -2.7580779,0 -4.9939418,-1.563126 -4.9939418,-3.4913394 0,-1.9282137 2.2358639,-3.4913397 4.9939418,-3.4913397 2.7580781,0 4.9939421,1.563126 4.9939421,3.4913397 z" + transform="matrix(0.870121,0,-0.333994,1.14742,4.78365,-1.84455)" /> + </g> + <rect + ry="1.6702623" + rx="1.616383" + y="1.5" + x="-50.5" + height="39.999996" + width="29.999998" + id="rect8907" + style="fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-62,1)" + id="g8909"> + <path + inkscape:connector-curvature="0" + style="fill:#d3d7cf;fill-opacity:1;stroke:none" + d="M 14,3 39.182408,3 40,3.6961651 40,25 14,25 14,3 z" + id="path8911" + sodipodi:nodetypes="cccccc" /> + <path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;stroke:none" + d="m 14,3 25.65625,0 c 1.055682,1.0277742 -0.49011,2.0151389 -2,2 L 12.625,5 C 14.126385,5 15.015732,3.4971845 14,3 z" + id="path8913" + sodipodi:nodetypes="ccccc" /> + </g> + <rect + ry="0.75161809" + rx="0.83513117" + y="9.5" + x="-20.5" + height="10" + width="5" + id="rect8915" + style="fill:url(#radialGradient9033);fill-opacity:1;stroke:#4e9a06;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path8917" + d="m -48.079373,2.53125 c -0.800828,0 -1.389377,0.6089338 -1.389377,1.4375 l 0,35.0625 c 0,0.828566 0.588549,1.4375 1.389377,1.4375 l 25.189997,0 c 0.800828,0 1.389377,-0.608935 1.389377,-1.4375 l 0,-35.0625 c 0,-0.8285661 -0.58855,-1.4375 -1.389377,-1.4375 l -25.189997,0 z" + style="opacity:0.2;fill:none;stroke:#ffffff;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" /> + <path + transform="translate(-62,-20)" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + id="path8919" + style="opacity:0.5;fill:none;stroke:url(#linearGradient9035);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + inkscape:radius="-0.99302852" + sodipodi:type="inkscape:offset" /> + <rect + ry="0.83513117" + rx="0.83513117" + y="19.5" + x="-22.5" + height="10" + width="8" + id="rect8921" + style="fill:url(#radialGradient9037);fill-opacity:1;stroke:#c4a000;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <rect + ry="0.83513117" + rx="0.83513117" + y="29.5" + x="-21.5" + height="10" + width="8" + id="rect8923" + style="fill:url(#radialGradient9039);fill-opacity:1;stroke:#ce5c00;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + <path + transform="translate(-61,-10)" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + id="path8925" + style="opacity:0.5;fill:none;stroke:url(#linearGradient9041);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + inkscape:radius="-0.99302852" + sodipodi:type="inkscape:offset" /> + <rect + y="19" + x="-24.8125" + height="10" + width="6.8125" + id="rect8927" + style="opacity:0.25;fill:#000000;fill-opacity:1;stroke:none" /> + <path + transform="translate(-60,0)" + d="m 39.75,30.5 c -0.140446,0 -0.25,0.109555 -0.25,0.25 l 0,7.5 c 0,0.140448 0.109551,0.25 0.25,0.25 l 5.5,0 c 0.140448,0 0.25,-0.109551 0.25,-0.25 l 0,-7.5 c 0,-0.140448 -0.109551,-0.25 -0.25,-0.25 l -5.5,0 z" + id="path8929" + style="opacity:0.5;fill:none;stroke:url(#linearGradient9043);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:original="M 39.75 29.5 C 39.06446 29.5 38.5 30.064461 38.5 30.75 L 38.5 38.25 C 38.5 38.93554 39.064459 39.5 39.75 39.5 L 45.25 39.5 C 45.93554 39.5 46.5 38.935541 46.5 38.25 L 46.5 30.75 C 46.5 30.06446 45.935541 29.5 45.25 29.5 L 39.75 29.5 z " + inkscape:radius="-0.99302852" + sodipodi:type="inkscape:offset" /> + <rect + y="29" + x="-24.8125" + height="11" + width="6.8125" + id="rect8931" + style="opacity:0.1;fill:#000000;fill-opacity:1;stroke:none" /> + <rect + y="9" + x="-25" + height="10" + width="7" + id="rect8933" + style="opacity:0.15517201;fill:#000000;fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + style="fill:url(#linearGradient9045);fill-opacity:1;stroke:#204a87;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + d="m -49.025126,6.5 27.050252,0 C -20.603794,6.5 -19.5,7.6037937 -19.5,8.9748738 l 0,34.0502482 c 0,1.37108 -1.103794,2.474874 -2.474874,2.474874 l -27.050252,0 c -1.37108,0 -2.474874,-1.103794 -2.474874,-2.474874 l 0,-34.0502482 C -51.5,7.6037937 -50.396206,6.5 -49.025126,6.5 z" + id="path8935" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + transform="translate(-60,0)" + style="fill:url(#linearGradient9047);fill-opacity:1;stroke:none" + d="M 10.96875,7 C 9.866556,7 9,7.8665563 9,8.96875 l 0,34.0625 C 9,44.133444 9.8665564,45 10.96875,45 l 27.0625,0 C 39.133444,45 40,44.133443 40,43.03125 L 40,8.96875 C 40,7.8665562 39.133443,7 38.03125,7 l -27.0625,0 z" + id="path8937" + sodipodi:nodetypes="ccccccccc" /> + <path + inkscape:connector-curvature="0" + style="opacity:0.46120701;fill:none;stroke:url(#linearGradient9049);stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dashoffset:0" + d="m 10.96875,7.53125 c -0.828566,0 -1.4375,0.6089338 -1.4375,1.4375 l 0,34.0625 c 0,0.828566 0.608934,1.4375 1.4375,1.4375 l 27.0625,0 c 0.828566,0 1.4375,-0.608935 1.4375,-1.4375 l 0,-34.0625 c 0,-0.8285661 -0.608935,-1.4375 -1.4375,-1.4375 l -27.0625,0 z" + id="path8939" + sodipodi:nodetypes="ccccccccc" + transform="translate(-60,0)" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,30.1455)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8941" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,24.1455)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8943" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,18.1455)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8945" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,6.14552)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8947" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,12.1455)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8949" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <path + transform="matrix(0.983801,0,0,0.95244,-59.7174,0.145517)" + d="m 13.435029,11.959651 c 0,0.890884 -0.682631,1.613087 -1.524699,1.613087 -0.842068,0 -1.524699,-0.722203 -1.524699,-1.613087 0,-0.890884 0.682631,-1.613087 1.524699,-1.613087 0.842068,0 1.524699,0.722203 1.524699,1.613087 z" + sodipodi:ry="1.6130873" + sodipodi:rx="1.524699" + sodipodi:cy="11.959651" + sodipodi:cx="11.91033" + id="path8951" + style="fill:none;stroke:#204a87;stroke-width:0.93560952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,30)" + id="g8953"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9051);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8955" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8957" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8959" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8961" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,24)" + id="g8963"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9053);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8965" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8967" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8969" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8971" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,18)" + id="g8973"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9055);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8975" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8977" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8979" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8981" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,12)" + id="g8983"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9057);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8985" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8987" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8989" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path8991" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,6)" + id="g8993"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9059);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8995" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path8997" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path8999" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path9001" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + <path + inkscape:connector-curvature="0" + id="path9003" + d="m -36.126698,24.53508 c -9e-6,0.958803 0.196069,1.714927 0.588236,2.268374 0.399687,0.553456 0.938903,0.830181 1.617647,0.830178 0.671179,3e-6 1.206623,-0.276722 1.606334,-0.830178 0.399685,-0.561242 0.599535,-1.317366 0.599548,-2.268374 -1.3e-5,-0.943199 -0.203634,-1.68763 -0.61086,-2.233296 -0.399711,-0.553442 -0.938926,-0.830168 -1.617647,-0.830178 -0.663661,10e-6 -1.195335,0.276736 -1.595022,0.830178 -0.392167,0.545666 -0.588245,1.290097 -0.588236,2.233296 m 4.63801,3.519487 c -0.226258,0.553454 -0.59202,0.986082 -1.097286,1.297885 -0.49775,0.304009 -1.082214,0.456014 -1.753393,0.456013 -1.297144,10e-7 -2.352951,-0.483295 -3.167421,-1.449888 -0.806945,-0.974385 -1.210414,-2.241087 -1.210407,-3.800111 -7e-6,-1.559012 0.407232,-2.825714 1.221719,-3.800111 0.814471,-0.974376 1.866506,-1.461569 3.156109,-1.461581 0.671179,1.2e-5 1.255643,0.155913 1.753393,0.467706 0.505266,0.311815 0.871028,0.744442 1.097286,1.297884 l 0,-1.531736 2.364252,0 0,8.103004 c 0.935127,-0.148103 1.67042,-0.611911 2.205883,-1.391425 0.535426,-0.7873 0.803148,-1.792866 0.803167,-3.016703 -1.9e-5,-0.779502 -0.10937,-1.508343 -0.328054,-2.186526 -0.218722,-0.685957 -0.550546,-1.313463 -0.995475,-1.882516 -0.716458,-0.950989 -1.613892,-1.683728 -2.692308,-2.198218 -1.070904,-0.514461 -2.23229,-0.7717 -3.484163,-0.771714 -0.874822,1.4e-5 -1.711925,0.120838 -2.511312,0.362472 -0.799405,0.233867 -1.538469,0.580748 -2.217194,1.040646 -1.116145,0.763932 -1.987185,1.753908 -2.613122,2.969932 -0.618405,1.208249 -0.927606,2.517824 -0.927602,3.92873 -4e-6,1.161475 0.199846,2.252787 0.599547,3.273942 0.407236,1.013364 0.9917,1.9098 1.753395,2.689308 0.754141,0.76392 1.617639,1.344654 2.590496,1.742205 0.980384,0.405343 2.024878,0.608015 3.133485,0.608017 0.950214,-2e-6 1.900439,-0.183186 2.850678,-0.549554 0.950212,-0.36637 1.760919,-0.861359 2.432127,-1.484966 l 1.210407,1.894209 c -0.942701,0.756122 -1.972113,1.332959 -3.088235,1.730512 -1.108611,0.405341 -2.236061,0.608013 -3.382353,0.608018 -1.395184,-5e-6 -2.71117,-0.257243 -3.947964,-0.771715 -1.236809,-0.506684 -2.337863,-1.247218 -3.303167,-2.221603 -0.965312,-0.974388 -1.700606,-2.100778 -2.205882,-3.379176 -0.50528,-1.286188 -0.757919,-2.665919 -0.757918,-4.139197 -10e-7,-1.4187 0.256408,-2.771149 0.769231,-4.057349 0.512817,-1.286179 1.244339,-2.416468 2.194569,-3.390868 0.950221,-0.966578 2.055046,-1.714906 3.31448,-2.244989 1.266959,-0.53005 2.579175,-0.795082 3.936651,-0.795099 1.689278,1.7e-5 3.223967,0.335205 4.604072,1.005567 1.380073,0.662599 2.533919,1.621395 3.461539,2.876391 0.565591,0.763933 0.991683,1.59411 1.27828,2.490534 0.294097,0.888651 0.441155,1.824062 0.441177,2.806237 -2.2e-5,2.112476 -0.614651,3.753344 -1.843891,4.922604 -1.22928,1.169266 -2.963818,1.753899 -5.203621,1.753898 l -0.441175,0 0,-1.800669" + style="font-size:23.55380058px;font-style:normal;font-weight:normal;fill:#8fbceb;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" /> + <g + style="stroke-linecap:round;stroke-linejoin:round" + transform="translate(-60,0)" + id="g9005"> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:url(#radialGradient9061);stroke-width:2.71698689;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 5.65625,8.5 c -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path9007" + sodipodi:nodetypes="csc" /> + <path + inkscape:connector-curvature="0" + style="fill:none;stroke:#eeeeec;stroke-width:0.90566409;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + d="m 6.84375,6.5 c -0.5475716,0.5922996 -0.9735778,1.2650799 -1.1875,2 -0.6436799,2.211334 0.7888742,4 3.1875,4 0.913594,0 1.829015,-0.27526 2.65625,-0.71875" + id="path9009" + sodipodi:nodetypes="cssc" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="path9011" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,-1.73659,0.313359)" /> + <path + sodipodi:type="arc" + style="opacity:0.7;fill:#ffffff;fill-opacity:1;stroke:none" + id="path9013" + sodipodi:cx="5.265625" + sodipodi:cy="8.2578125" + sodipodi:rx="0.546875" + sodipodi:ry="0.8046875" + d="M 5.8125,8.2578125 C 5.8125,8.7022291 5.5676557,9.0625 5.265625,9.0625 4.9635943,9.0625 4.71875,8.7022291 4.71875,8.2578125 c 0,-0.4444166 0.2448443,-0.8046875 0.546875,-0.8046875 0.3020307,0 0.546875,0.3602709 0.546875,0.8046875 z" + transform="matrix(1.37143,0,0,0.932039,4.09704,3.71631)" /> + </g> + </g> + </g> + </g> +</svg> diff --git a/2017/running_osmo_gsm-osmocon2017/arch-sysmobts-allinone.dot b/2017/running_osmo_gsm-osmocon2017/arch-sysmobts-allinone.dot new file mode 100644 index 0000000..2efbfd5 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/arch-sysmobts-allinone.dot @@ -0,0 +1,27 @@ +graph G { + rankdir=LR; + MS0 [label="MS",shape=box] + MS1 [label="MS",shape=box] + MS2 [label="MS",shape=box] + + MS0--PHY [label="Um"] + MS1--PHY [label="Um"] + MS2--PHY [label="Um"] + + subgraph cluster_0 { + label = "sysmoBTS (all-in-one)" + OsmoBTS + OsmoPCU [style="dashed"] + PHY -- OsmoBTS [label="shmem msgq"] + PHY -- OsmoPCU [label="shmem msgq"] + OsmoPCU -- OsmoBTS [label="pcu_sock"] + { rank=same; OsmoBTS OsmoPCU } + + OsmoNITB + OsmoSGSN [style="dashed"] + OsmoBTS -- OsmoNITB [label="Abis/IP\n(lo)"] + OsmoPCU -- OsmoSGSN [label="Gb/IP\n(lo)"] + + { rank=same; OsmoNITB OsmoSGSN } + } +} diff --git a/2017/running_osmo_gsm-osmocon2017/arch-sysmobts.dot b/2017/running_osmo_gsm-osmocon2017/arch-sysmobts.dot new file mode 100644 index 0000000..9375fc9 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/arch-sysmobts.dot @@ -0,0 +1,30 @@ +graph G { + rankdir=LR; + MS0 [label="MS",shape=box] + MS1 [label="MS",shape=box] + MS2 [label="MS",shape=box] + + MS0--PHY [label="Um"] + MS1--PHY [label="Um"] + MS2--PHY [label="Um"] + + subgraph cluster_0 { + label = "sysmoBTS" + OsmoBTS + OsmoPCU [style="dashed"] + PHY -- OsmoBTS [label="shmem msgq"] + PHY -- OsmoPCU [label="shmem msgq"] + OsmoPCU -- OsmoBTS [label="pcu_sock"] + { rank=same; OsmoBTS OsmoPCU } + } + + subgraph cluster_1 { + label = "Linux PC" + OsmoNITB + OsmoSGSN [style="dashed"] + OsmoBTS -- OsmoNITB [label="Abis/IP"] + OsmoPCU -- OsmoSGSN [label="Gb/IP"] + + { rank=same; OsmoNITB OsmoSGSN } + } +} diff --git a/2017/running_osmo_gsm-osmocon2017/arch-usrp-allinone.dot b/2017/running_osmo_gsm-osmocon2017/arch-usrp-allinone.dot new file mode 100644 index 0000000..11ab81e --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/arch-usrp-allinone.dot @@ -0,0 +1,30 @@ +graph G { + rankdir=LR; + MS0 [label="MS",shape=box] + MS1 [label="MS",shape=box] + MS2 [label="MS",shape=box] + + USRP [label="USRP Bxxx",shape=box] + USRP -- OsmoTRX [label="USB"] + + MS0--USRP [label="Um"] + MS1--USRP [label="Um"] + MS2--USRP [label="Um"] + + subgraph cluster_0 { + label = "Linux PC (all-in-one)" + OsmoTRX + OsmoBTS + OsmoPCU [style="dashed"] + OsmoPCU -- OsmoBTS [label="pcu_sock"] + OsmoTRX -- OsmoBTS [label="UDP"] + { rank=same; OsmoBTS OsmoPCU } + + OsmoNITB + OsmoSGSN [style="dashed"] + OsmoBTS -- OsmoNITB [label="Abis/IP\n(lo)"] + OsmoPCU -- OsmoSGSN [label="Gb/IP\n(lo)"] + + { rank=same; OsmoNITB OsmoSGSN } + } +} diff --git a/2017/running_osmo_gsm-osmocon2017/arch-usrp.dot b/2017/running_osmo_gsm-osmocon2017/arch-usrp.dot new file mode 100644 index 0000000..9426c08 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/arch-usrp.dot @@ -0,0 +1,31 @@ +graph G { + rankdir=LR; + MS0 [label="MS",shape=box] + MS1 [label="MS",shape=box] + MS2 [label="MS",shape=box] + + USRP [label="USRP Bxxx",shape=box] + USRP --OsmoTRX [label="USB"] + + MS0--USRP [label="Um"] + MS1--USRP [label="Um"] + MS2--USRP [label="Um"] + + subgraph cluster_0 { + label = "Linux PC (BTS)" + OsmoTRX + OsmoBTS + OsmoPCU [style="dashed"] + OsmoPCU -- OsmoBTS [label="pcu_sock"] + OsmoTRX -- OsmoBTS + { rank=same; OsmoBTS OsmoPCU } + } + + subgraph cluster_1 { + label = "Linux PC (Core)" + OsmoNITB + OsmoSGSN [style="dashed"] + OsmoBTS -- OsmoNITB [label="Abis/IP"] + OsmoPCU -- OsmoSGSN [label="Gb/IP"] + } +} diff --git a/2017/running_osmo_gsm-osmocon2017/gprs_user_stack.svg b/2017/running_osmo_gsm-osmocon2017/gprs_user_stack.svg new file mode 100644 index 0000000..6b702a2 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/gprs_user_stack.svg @@ -0,0 +1,1357 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1052.3622" + height="744.09448" + id="svg2" + version="1.1" + inkscape:version="0.48.1 r9760" + sodipodi:docname="gprs_user_stack.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path4387" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + id="path4384" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-4" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-8" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-9" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-6" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-7" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-3" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-7" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-2" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-5" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-0" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-3" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-2" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-1" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-7" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-6" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-5" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-4" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-2" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-77" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-9" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-8" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-10" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-60" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-10" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-2" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-5" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="marker7432" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path7434" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="marker7436" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path7438" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="marker7440" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path7442" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="marker7444" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path7446" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-0" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-30" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-0" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-4" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart-42" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4384-4" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-99" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4387-9" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.1" + inkscape:cx="544.0645" + inkscape:cy="334.56005" + inkscape:document-units="mm" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1598" + inkscape:window-height="1177" + inkscape:window-x="1600" + inkscape:window-y="0" + inkscape:window-maximized="0"> + <inkscape:grid + units="mm" + empspacing="5" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" + type="xygrid" + id="grid2985" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-308.2677)"> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="287.28647" + y="552.07013" + id="text3003" + sodipodi:linespacing="125%" + transform="translate(0,308.2677)"><tspan + sodipodi:role="line" + id="tspan3005" /></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="276.78516" + y="423.8038" + id="text3023" + sodipodi:linespacing="125%" + transform="translate(0,308.2677)"><tspan + sodipodi:role="line" + id="tspan3025" + x="276.78516" + y="423.8038" /></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="279.03543" + y="412.55237" + id="text3027" + sodipodi:linespacing="125%" + transform="translate(0,308.2677)"><tspan + sodipodi:role="line" + id="tspan3029" + x="279.03543" + y="412.55237" /></text> + <rect + style="fill:#afe9af;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3110" + width="88.58268" + height="35.433071" + x="35.433041" + y="768.89764" /> + <rect + style="fill:#afe9af;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3112" + width="88.58268" + height="35.433071" + x="35.433041" + y="733.46454" /> + <rect + style="fill:#afe9af;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3114" + width="88.58268" + height="35.433071" + x="35.433041" + y="698.03149" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="61.552505" + y="792.43835" + id="text3120" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="61.552505" + y="792.43835" + id="tspan3124">MAC</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="63.771255" + y="757.00531" + id="text3128" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3130" + x="63.771255" + y="757.00531">RLC</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="63.052505" + y="721.57227" + id="text3132" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3134" + x="63.052505" + y="721.57227">LLC</tspan></text> + <rect + style="fill:#afe9af;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3114-4" + width="88.58268" + height="35.433071" + x="690.94482" + y="698.03149" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="718.56427" + y="721.57227" + id="text3132-7" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3134-0" + x="718.56427" + y="721.57227">LLC</tspan></text> + <rect + style="fill:#c8b7b7;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2993-3-2-3" + width="88.58268" + height="35.433071" + x="690.94482" + y="839.76367" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="722.48712" + y="864.77032" + id="text3007-0-2-5" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3009-6-4-1" + x="722.48712" + y="864.77032">E1</tspan></text> + <rect + style="fill:#ff5555;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3534" + width="88.58268" + height="35.433071" + x="779.52753" + y="733.46454" /> + <rect + style="fill:#b380ff;fill-opacity:1;stroke:#000000;stroke-width:1.68378329;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3536" + width="88.58268" + height="106.29923" + x="779.52753" + y="768.89758" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="816.12354" + y="757.01312" + id="text3546" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3548" + x="816.12354" + y="757.01312">IP</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="788.72906" + y="828.01202" + id="text3550" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3552" + x="788.72906" + y="828.01202">Ethernet</tspan></text> + <rect + style="fill:#b380ff;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3554" + width="88.58268" + height="35.433071" + x="779.52765" + y="662.59839" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="799.85803" + y="686.13916" + id="text3556" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3558" + x="799.85803" + y="686.13916">GTP-U</tspan></text> + <rect + style="fill:#ff5555;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3534-6" + width="88.58268" + height="35.433071" + x="938.97632" + y="733.46448" /> + <rect + style="fill:#b380ff;fill-opacity:1;stroke:#000000;stroke-width:1.68378329;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3536-0" + width="88.58268" + height="106.29923" + x="938.97632" + y="768.89752" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="975.57227" + y="757.01306" + id="text3546-9" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3548-9" + x="975.57227" + y="757.01306">IP</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="948.17786" + y="828.01196" + id="text3550-0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3552-8" + x="948.17786" + y="828.01196">Ethernet</tspan></text> + <rect + style="fill:#b380ff;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3554-9" + width="88.58268" + height="35.433071" + x="938.97644" + y="662.59839" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="959.30682" + y="686.13916" + id="text3556-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3558-1" + x="959.30682" + y="686.13916">GTP-U</tspan><tspan + sodipodi:role="line" + x="959.30682" + y="706.13916" + id="tspan7275" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.68190962;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 868.11034,680.31492 70.86614,0" + id="path3611" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.92873204;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 124.01572,715.74801 566.92913,0" + id="path3611-7" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.44654906;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 124.01572,751.1811 318.89764,0" + id="path3611-7-2" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.44654906;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 124.01572,786.61415 318.89764,0" + id="path3611-7-9" + inkscape:connector-curvature="0" /> + <rect + style="fill:#c8b7b7;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2993-0" + width="88.58268" + height="35.433071" + x="35.433044" + y="839.76373" /> + <flowRoot + xml:space="preserve" + id="flowRoot5326" + style="fill:black;fill-opacity:1;stroke:none;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;font-family:helvetica;font-style:normal;font-weight:normal;font-size:16px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion + id="flowRegion5328"><rect + id="rect5330" + width="190.52419" + height="596.32574" + x="67.508575" + y="90.011429" /></flowRegion><flowPara + id="flowPara5332" /></flowRoot> <text + xml:space="preserve" + style="font-size:14.64712048px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="79.688622" + y="852.36664" + id="text5334" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5336" + x="79.688622" + y="852.36664">Physical</tspan><tspan + sodipodi:role="line" + x="79.688622" + y="870.67554" + id="tspan5338">Layer</tspan></text> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="307.05768" + y="829.32758" + id="text3011" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3013" + x="307.05768" + y="829.32758" /></text> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="301.38385" + y="793.89447" + id="text3015" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3017" + x="301.38385" + y="793.89447" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.84679401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:11.08076375, 3.69358791;stroke-dashoffset:0" + d="m 159.44882,520.86612 0,389.76378" + id="path5460" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.84679401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:11.08076375, 3.69358791;stroke-dashoffset:0" + d="m 407.48031,520.86612 0,389.76378" + id="path5460-1" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.84679401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:11.08076375, 3.69358791;stroke-dashoffset:0" + d="m 655.51181,520.86612 0,389.76378" + id="path5460-7" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.84679401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:11.08076375, 3.69358791;stroke-dashoffset:0" + d="m 903.54331,520.86612 0,389.76378" + id="path5460-2" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="145.78085" + y="928.34644" + id="text5494" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5496" + x="145.78085" + y="928.34644">Um</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="388.1561" + y="928.34644" + id="text5498" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5500" + x="388.1561" + y="928.34644">A-bis</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="644.21887" + y="928.34644" + id="text5502" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5504" + x="644.21887" + y="928.34644">Gb</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="892.50037" + y="928.34644" + id="text5506" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5508" + x="892.50037" + y="928.34644">Gn</tspan></text> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="60.822041" + y="928.34644" + id="text5510" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5512" + x="60.822041" + y="928.34644">MS</tspan></text> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="224.53098" + y="928.34644" + id="text5510-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5512-1" + x="224.53098" + y="928.34644">BTS+CCU</tspan></text> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="472.86713" + y="928.34644" + id="text5510-4-6-7" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5512-1-5-8" + x="472.86713" + y="928.34644">BSC+PCU</tspan></text> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="746.47583" + y="928.34644" + id="text5510-4-6-7-5" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5512-1-5-8-9" + x="746.47583" + y="928.34644">SGSN</tspan></text> + <text + xml:space="preserve" + style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="948.56842" + y="928.34644" + id="text5510-4-6-7-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5512-1-5-8-7" + x="948.56842" + y="928.34644">GGSN</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="88.58268" + y="503.1496" + id="text5725" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5727" + x="88.58268" + y="503.1496">GPRS User Plane</tspan></text> + <rect + style="fill:#e9afaf;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2995-7-7-2" + width="88.58268" + height="35.433071" + x="690.94489" + y="804.33075" /> + <rect + style="fill:#e9afaf;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2997-6-4-1" + width="88.58268" + height="35.433071" + x="690.94489" + y="768.89764" /> + <text + xml:space="preserve" + style="font-size:14.59619617px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="734.90839" + y="818.10785" + id="text3011-5-4-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3013-0-3-2" + x="734.90839" + y="818.10785">Frame</tspan><tspan + id="tspan7094-0" + sodipodi:role="line" + x="734.90839" + y="836.35309">Relay</tspan></text> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="720.98328" + y="793.89447" + id="text3015-8-8-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3017-1-6-2" + x="720.98328" + y="793.89447">NS</tspan></text> + <rect + style="fill:#80e5ff;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3303-9" + width="88.58268" + height="35.433071" + x="690.94489" + y="733.4646" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="701.43738" + y="758.46143" + id="text3015-8-8-4-7" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3017-1-6-12-4" + x="701.43738" + y="758.46143">BSSGP</tspan></text> + <flowRoot + xml:space="preserve" + id="flowRoot7277" + style="fill:black;fill-opacity:1;stroke:none;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;font-family:helvetica;font-style:normal;font-weight:normal;font-size:16px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion + id="flowRegion7279"><rect + id="rect7281" + width="184.54546" + height="200" + x="17.272728" + y="98.639938" /></flowRegion><flowPara + id="flowPara7283" /></flowRoot> <rect + style="fill:#c8b7b7;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2993" + width="88.58268" + height="35.433071" + x="283.46457" + y="839.76379" /> + <rect + style="fill:#e9afaf;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2995" + width="88.58268" + height="35.433071" + x="283.46457" + y="804.33075" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="315.0069" + y="864.77039" + id="text3007" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3009" + x="315.0069" + y="864.77039">E1</tspan></text> + <rect + style="fill:#c8b7b7;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2993-0-1" + width="88.58268" + height="35.433071" + x="194.88188" + y="839.76379" /> + <text + xml:space="preserve" + style="font-size:14.64712048px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="239.13747" + y="852.3667" + id="text5334-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5336-7" + x="239.13747" + y="852.3667">Physical</tspan><tspan + sodipodi:role="line" + x="239.13747" + y="870.6756" + id="tspan5338-4">Layer</tspan></text> + <text + xml:space="preserve" + style="font-size:14.75296879px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="327.70187" + y="816.6698" + id="text7300" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7302" + x="327.70187" + y="816.6698">TRAU</tspan><tspan + sodipodi:role="line" + x="327.70187" + y="835.11102" + id="tspan7304">Framing</tspan></text> + <rect + style="fill:#afe9af;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3110-2" + width="88.58268" + height="35.433071" + x="442.91336" + y="768.89764" /> + <rect + style="fill:#afe9af;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3112-7" + width="88.58268" + height="35.433071" + x="442.91336" + y="733.46454" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="469.03284" + y="792.43835" + id="text3120-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="469.03284" + y="792.43835" + id="tspan3124-8">MAC</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="471.25159" + y="757.00531" + id="text3128-0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3130-3" + x="471.25159" + y="757.00531">RLC</tspan></text> + <rect + style="fill:#c8b7b7;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2993-3" + width="88.58268" + height="35.433071" + x="442.91339" + y="839.76367" /> + <rect + style="fill:#e9afaf;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2995-7" + width="88.58268" + height="35.433071" + x="442.91336" + y="804.33069" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="474.45572" + y="864.77032" + id="text3007-0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3009-6" + x="474.45572" + y="864.77032">E1</tspan></text> + <rect + style="fill:#c8b7b7;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2993-3-2" + width="88.58268" + height="35.433071" + x="531.49603" + y="839.76373" /> + <rect + style="fill:#e9afaf;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2995-7-7" + width="88.58268" + height="35.433071" + x="531.49603" + y="804.33069" /> + <rect + style="fill:#e9afaf;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2997-6-4" + width="88.58268" + height="35.433071" + x="531.49603" + y="768.89764" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="563.03833" + y="864.77039" + id="text3007-0-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3009-6-4" + x="563.03833" + y="864.77039">E1</tspan></text> + <text + xml:space="preserve" + style="font-size:14.59619617px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="575.45953" + y="818.10785" + id="text3011-5-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3013-0-3" + x="575.45953" + y="818.10785">Frame</tspan><tspan + id="tspan7094" + sodipodi:role="line" + x="575.45953" + y="836.35309">Relay</tspan></text> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="561.53442" + y="793.89447" + id="text3015-8-8" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3017-1-6" + x="561.53442" + y="793.89447">NS</tspan></text> + <rect + style="fill:#80e5ff;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3303" + width="88.58268" + height="35.433071" + x="531.49603" + y="733.4646" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="541.98853" + y="758.46143" + id="text3015-8-8-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3017-1-6-12" + x="541.98853" + y="758.46143">BSSGP</tspan></text> + <text + xml:space="preserve" + style="font-size:14.75296879px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="487.15067" + y="816.66974" + id="text7300-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7302-5" + x="487.15067" + y="816.66974">TRAU</tspan><tspan + sodipodi:role="line" + x="487.15067" + y="835.11096" + id="tspan7304-6">Framing</tspan></text> + <rect + style="fill:#e5ff80;fill-opacity:1;stroke:#000000;stroke-width:1.77165353000000003;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect7330" + width="88.58268" + height="35.433071" + x="35.433071" + y="354.33069" + transform="translate(0,308.2677)" /> + <rect + style="fill:#ff5555;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect7334" + width="88.58268" + height="35.433071" + x="779.52759" + y="698.03149" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="806.55719" + y="721.4668" + id="text3542" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3544" + x="806.55719" + y="721.4668">UDP</tspan></text> + <rect + style="fill:#ff5555;fill-opacity:1;stroke:#000000;stroke-width:1.77165353;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect7334-1" + width="88.58268" + height="35.433071" + x="938.97638" + y="698.03149" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="966.00598" + y="721.4668" + id="text3542-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3544-0" + x="966.00598" + y="721.4668">UDP</tspan></text> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="51.833786" + y="686.13916" + id="text7360" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7362" + x="51.833786" + y="686.13916">SNDCP</tspan></text> + <rect + style="fill:#e5ff80;fill-opacity:1;stroke:#000000;stroke-width:1.77165353000000003;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect7330-3" + width="88.58268" + height="35.433071" + x="690.94489" + y="662.59845" /> + <text + xml:space="preserve" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + x="707.34558" + y="686.13922" + id="text7360-1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7362-2" + x="707.34558" + y="686.13922">SNDCP</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.92873204;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 124.01575,680.31494 566.92913,0" + id="path3611-7-7" + inkscape:connector-curvature="0" /> + <g + id="g5799" + transform="translate(-4.0522022e-6,159.44883)"> + <rect + y="449.99997" + x="35.433071" + height="35.433071" + width="88.58268" + id="rect3305-6" + style="fill:#ff80e5;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text5765" + y="473.54852" + x="72.029099" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + xml:space="preserve"><tspan + y="473.54852" + x="72.029099" + id="tspan5767" + sodipodi:role="line">IP</tspan></text> + </g> + <g + id="g5799-9" + transform="translate(903.54331,159.44883)"> + <rect + y="449.99997" + x="35.433071" + height="35.433071" + width="88.58268" + id="rect3305-6-2" + style="fill:#ff80e5;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text5765-1" + y="473.54852" + x="72.029099" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + xml:space="preserve"><tspan + y="473.54852" + x="72.029099" + id="tspan5767-7" + sodipodi:role="line">IP</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 124.01575,627.16533 814.96063,0" + id="path3611-7-1" + inkscape:connector-curvature="0" /> + <g + transform="translate(-4.0522022e-6,159.44882)" + id="g6328"> + <rect + y="414.56689" + x="35.433071" + height="35.433071" + width="88.58268" + id="rect3305-6-8" + style="fill:#ff80e5;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text5765-8" + y="438.11545" + x="65.181442" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + xml:space="preserve"><tspan + y="438.11545" + x="65.181442" + id="tspan5767-4" + sodipodi:role="line">TCP</tspan></text> + </g> + <g + transform="translate(903.54331,159.44883)" + id="g6328-4"> + <rect + y="414.56689" + x="35.433071" + height="35.433071" + width="88.58268" + id="rect3305-6-8-8" + style="fill:#ff80e5;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text5765-8-8" + y="438.11545" + x="65.181442" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + xml:space="preserve"><tspan + y="438.11545" + x="65.181442" + id="tspan5767-4-3" + sodipodi:role="line">TCP</tspan></text> + </g> + <g + transform="translate(-4.0522022e-6,159.44882)" + id="g6390"> + <rect + y="379.13382" + x="35.433071" + height="35.433071" + width="88.58268" + id="rect3305-6-8-8-7" + style="fill:#ff80e5;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text5765-8-8-5" + y="402.68237" + x="58.732224" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + xml:space="preserve"><tspan + y="402.68237" + x="58.732224" + id="tspan5767-4-3-2" + sodipodi:role="line">HTTP</tspan></text> + </g> + <g + transform="translate(903.54331,159.44883)" + id="g6390-4"> + <rect + y="379.13382" + x="35.433071" + height="35.433071" + width="88.58268" + id="rect3305-6-8-8-7-5" + style="fill:#ff80e5;fill-opacity:1;stroke:#000000;stroke-width:1.37480319;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text5765-8-8-5-0" + y="402.68237" + x="58.732224" + style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:helvetica" + xml:space="preserve"><tspan + y="402.68237" + x="58.732224" + id="tspan5767-4-3-2-5" + sodipodi:role="line">HTTP</tspan></text> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 124.01575,591.73226 814.96063,0" + id="path3611-7-1-4" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 124.01575,556.29919 814.96063,0" + id="path3611-7-1-7" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.6819098;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 620.07874,751.18108 70.86614,0" + id="path3611-7-2-5" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.68190974;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 620.07874,786.61415 70.86614,0" + id="path3611-7-2-4" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/2017/running_osmo_gsm-osmocon2017/osmo-bts.svg b/2017/running_osmo_gsm-osmocon2017/osmo-bts.svg new file mode 100644 index 0000000..5f24c35 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/osmo-bts.svg @@ -0,0 +1,342 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="85.403748mm" + height="60.830627mm" + viewBox="0 0 302.6117 215.54159" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="osmo-bts.svg"> + <defs + id="defs4"> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.3800511" + inkscape:cx="151.30585" + inkscape:cy="107.7708" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:snap-global="true" + inkscape:snap-bbox="true" + inkscape:bbox-paths="false" + inkscape:snap-to-guides="false" + inkscape:snap-others="false" + inkscape:bbox-nodes="false" + inkscape:snap-bbox-edge-midpoints="false" + inkscape:snap-bbox-midpoints="false" + inkscape:object-paths="false" + inkscape:object-nodes="true" + showguides="false" + inkscape:window-width="1022" + inkscape:window-height="730" + inkscape:window-x="0" + inkscape:window-y="1200" + inkscape:window-maximized="0" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0"> + <inkscape:grid + type="xygrid" + id="grid3336" + originx="-282.74929" + originy="-52.481486" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-282.74928,-784.33912)"> + <g + id="g5461" + transform="translate(203.46457,-1.324757e-5)"> + <path + inkscape:connector-curvature="0" + id="path4636" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644);marker-end:url(#marker4690)" /> + <text + sodipodi:linespacing="125%" + id="text5151" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153" + sodipodi:role="line">Abis/IP</tspan></text> + </g> + <g + id="g7653" + transform="translate(194.88189,-1.0472595e-5)"> + <g + id="g4252"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="122.30629" + y="985.66003" + id="text4144" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4146" + x="122.30629" + y="985.66003">SDR Hardware</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4172" + width="141.73228" + height="35.433071" + x="88.58268" + y="963.77948" /> + </g> + <g + id="g4247"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="97.314629" + y="950.22699" + id="text4148" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="97.314629" + y="950.22699" + id="tspan4152">OsmoTRX</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4160" + width="70.866142" + height="35.433071" + x="88.58268" + y="928.34644" /> + </g> + <g + id="g4242"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="166.59451" + y="950.125" + id="text4156" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4158" + x="166.59451" + y="950.125">Transceiver</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4162" + width="70.866142" + height="35.433071" + x="159.44882" + y="928.34644" /> + </g> + </g> + <g + id="g4227" + transform="translate(194.88189,-1.0472595e-5)"> + <rect + y="839.76373" + x="88.58268" + height="17.716536" + width="35.433071" + id="rect4225" + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g10050"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="94.139557" + y="852.78601" + id="text4217" + sodipodi:linespacing="125%" + transform="translate(194.88189,-1e-5)"><tspan + sodipodi:role="line" + id="tspan4219" + x="94.139557" + y="852.78601">VTY</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4178" + y="881.67499" + x="384.82532" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="881.67499" + x="384.82532" + id="tspan4180" + sodipodi:role="line">OsmoBTS</tspan></text> + <g + transform="translate(194.88189,-1.0472595e-5)" + id="g4232"> + <rect + style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4198" + width="141.73228" + height="17.716536" + x="88.58268" + y="910.62988" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="127.64554" + y="923.58612" + id="text4182" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="127.64554" + y="923.58612" + id="tspan4186">osmo-bts-trx</tspan></text> + </g> + <g + transform="translate(194.88189,-1.0472595e-5)" + id="g5364"> + <rect + style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4198-7" + width="141.73227" + height="17.716536" + x="248.03149" + y="910.62994" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="279.13019" + y="922.42224" + id="text4190" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="279.13019" + y="922.42224" + id="tspan4194">osmo-bts-sysmo</tspan></text> + </g> + <g + transform="translate(212.59843,1.6540969e-5)" + id="g4259"> + <rect + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4257" + width="35.433071" + height="17.716536" + x="336.61417" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.13992" + y="852.79199" + id="text4221" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4223" + x="339.13992" + y="852.79199">CTRL</tspan></text> + </g> + <rect + y="839.76373" + x="283.46457" + height="88.58268" + width="301.18112" + id="rect4176" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.43057334;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g7667" + transform="translate(194.88189,-1.0472595e-5)"> + <text + sodipodi:linespacing="125%" + id="text4166" + y="959.34552" + x="318.90579" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="959.34552" + x="318.90579" + id="tspan4168" + sodipodi:role="line">sysmoBTS PHY</tspan><tspan + id="tspan4170" + y="974.34552" + x="318.90579" + sodipodi:role="line">sysmoBTS Hardware</tspan></text> + <rect + y="928.34644" + x="248.03149" + height="70.866142" + width="141.73228" + id="rect5359" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.33630621;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect7782" + width="0" + height="0" + x="0" + y="0" + transform="translate(0,308.26772)" /> + </g> +</svg> diff --git a/2017/running_osmo_gsm-osmocon2017/osmocom-gprs.svg b/2017/running_osmo_gsm-osmocon2017/osmocom-gprs.svg new file mode 100644 index 0000000..0506053 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/osmocom-gprs.svg @@ -0,0 +1,1191 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210.37825mm" + height="150.83063mm" + viewBox="0 0 745.43474 534.43923" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="osmocom-gprs.svg"> + <defs + id="defs4"> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="marker5275" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path5277" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(0.8,0,0,0.8,10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="marker5211" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path5213" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4327" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4324" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(0.8,0,0,0.8,10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968-3" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074-5" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-61" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-3" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-7-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-6-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-3-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-4-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-7-1-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-6-1-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-3-0-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-4-6-2" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-7-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-6-0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-3-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-4-9" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968-9" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074-8" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966-7-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968-9-0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072-4-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074-8-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966-7-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968-9-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072-4-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074-8-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-9-4-22" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-8-5-2" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-3-8-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-5-5-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-9-4-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-8-5-7" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-3-8-00" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-5-5-1" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.68942857" + inkscape:cx="243.43182" + inkscape:cy="319.56575" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:snap-global="true" + inkscape:snap-bbox="true" + inkscape:bbox-paths="false" + inkscape:snap-to-guides="false" + inkscape:snap-others="false" + inkscape:bbox-nodes="false" + inkscape:snap-bbox-edge-midpoints="false" + inkscape:snap-bbox-midpoints="false" + inkscape:object-paths="false" + inkscape:object-nodes="true" + showguides="false" + inkscape:window-width="1022" + inkscape:window-height="730" + inkscape:window-x="0" + inkscape:window-y="1200" + inkscape:window-maximized="0" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0"> + <inkscape:grid + type="xygrid" + id="grid3336" + originx="-282.74928" + originy="-52.481501" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-282.74928,-465.4415)"> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 584.64567,875.19684 70.86615,0" + id="path4318" + inkscape:connector-curvature="0" /> + <g + id="g6607" + transform="translate(194.88189,-1.0472595e-5)"> + <path + inkscape:connector-curvature="0" + id="path4636-0" + d="m 549.2126,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-5);marker-end:url(#marker4690-8)" /> + <text + sodipodi:linespacing="125%" + id="text5147" + y="816.18896" + x="561.25983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="561.25983" + id="tspan5149" + sodipodi:role="line">Gb/IP</tspan></text> + </g> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5275);marker-end:url(#marker5211)" + d="m 584.64567,963.77952 141.73229,0 0,-35.43308" + id="path5203" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.9524622px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="605.33478" + y="958.31073" + id="text5351" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5353" + x="605.33478" + y="958.31073" + style="font-size:9.34528923px">sysmoBTS direct PHY access</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="596.60864" + y="864.77759" + id="text5355" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5357" + x="596.60864" + y="864.77759">PCU Sock</tspan></text> + <g + id="g7653" + transform="translate(194.88189,-1.0472595e-5)"> + <g + id="g4252"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="122.30629" + y="985.66003" + id="text4144" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4146" + x="122.30629" + y="985.66003">SDR Hardware</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4172" + width="141.73228" + height="35.433071" + x="88.58268" + y="963.77948" /> + </g> + <g + id="g4247"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="97.314629" + y="950.22699" + id="text4148" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="97.314629" + y="950.22699" + id="tspan4152">OsmoTRX</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4160" + width="70.866142" + height="35.433071" + x="88.58268" + y="928.34644" /> + </g> + <g + id="g4242"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="166.59451" + y="950.125" + id="text4156" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4158" + x="166.59451" + y="950.125">Transceiver</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4162" + width="70.866142" + height="35.433071" + x="159.44882" + y="928.34644" /> + </g> + </g> + <g + id="g4227" + transform="translate(194.88189,-1.0472595e-5)"> + <rect + y="839.76373" + x="88.58268" + height="17.716536" + width="35.433071" + id="rect4225" + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g10050"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="94.139557" + y="852.78601" + id="text4217" + sodipodi:linespacing="125%" + transform="translate(194.88189,-1e-5)"><tspan + sodipodi:role="line" + id="tspan4219" + x="94.139557" + y="852.78601">VTY</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4178" + y="881.67499" + x="384.82532" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="881.67499" + x="384.82532" + id="tspan4180" + sodipodi:role="line">OsmoBTS</tspan></text> + <g + transform="translate(194.88189,-1.0472595e-5)" + id="g4232"> + <rect + style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4198" + width="141.73228" + height="17.716536" + x="88.58268" + y="910.62988" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="127.64554" + y="923.58612" + id="text4182" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="127.64554" + y="923.58612" + id="tspan4186">osmo-bts-trx</tspan></text> + </g> + <g + transform="translate(194.88189,-1.0472595e-5)" + id="g5364"> + <rect + style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4198-7" + width="141.73227" + height="17.716536" + x="248.03149" + y="910.62994" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="279.13019" + y="922.42224" + id="text4190" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="279.13019" + y="922.42224" + id="tspan4194">osmo-bts-sysmo</tspan></text> + </g> + <g + transform="translate(212.59843,1.6540969e-5)" + id="g4259"> + <rect + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4257" + width="35.433071" + height="17.716536" + x="336.61417" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.13992" + y="852.79199" + id="text4221" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4223" + x="339.13992" + y="852.79199">CTRL</tspan></text> + </g> + <rect + y="839.76373" + x="283.46457" + height="88.58268" + width="301.18112" + id="rect4176" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.43057334;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g7667" + transform="translate(194.88189,-1.0472595e-5)"> + <text + sodipodi:linespacing="125%" + id="text4166" + y="959.34552" + x="318.90579" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="959.34552" + x="318.90579" + id="tspan4168" + sodipodi:role="line">sysmoBTS PHY</tspan><tspan + id="tspan4170" + y="974.34552" + x="318.90579" + sodipodi:role="line">sysmoBTS Hardware</tspan></text> + <rect + y="928.34644" + x="248.03149" + height="70.866142" + width="141.73228" + id="rect5359" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.33630621;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + transform="translate(124.01575,-1.324757e-5)" + id="g5461-7"> + <path + inkscape:connector-curvature="0" + id="path4636-4" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-7);marker-end:url(#marker4690-4)" /> + <text + sodipodi:linespacing="125%" + id="text5151-0" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-3" + sodipodi:role="line">Abis/IP</tspan></text> + </g> + <g + id="g7599" + transform="translate(194.88189,-1.0472595e-5)"> + <g + id="g4227-3-0" + transform="translate(372.04725,-141.73226)"> + <rect + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4225-9-2" + width="35.433071" + height="17.716536" + x="88.58268" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="94.139557" + y="852.78601" + id="text4217-0-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4219-2-3" + x="94.139557" + y="852.78601">VTY</tspan></text> + </g> + <g + id="g4259-6-3" + transform="translate(265.74803,-141.73224)"> + <rect + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4257-3-5" + width="35.433071" + height="17.716536" + x="336.61417" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.13992" + y="852.79199" + id="text4221-2-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4223-9-0" + x="339.13992" + y="852.79199">CTRL</tspan></text> + </g> + <rect + y="698.03149" + x="460.62991" + height="88.58268" + width="177.16536" + id="rect5562" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4178-6-6" + y="749.26282" + x="500.58948" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="749.26282" + x="500.58948" + id="tspan4180-4-6" + sodipodi:role="line">OsmoSGSN</tspan><tspan + id="tspan5630" + y="774.26282" + x="500.58948" + sodipodi:role="line" /></text> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="387.12598" + y="564.94281" + id="text4178-6-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4180-4-5" + x="387.12598" + y="564.94281">OsmoNITB</tspan></text> + <g + transform="translate(195.43307,-318.89761)" + id="g4227-7-9"> + <rect + y="839.76373" + x="88.58268" + height="17.716536" + width="35.433071" + id="rect4225-0-9" + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4217-4-4" + y="852.78601" + x="94.139557" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="852.78601" + x="94.139557" + id="tspan4219-6-7" + sodipodi:role="line">VTY</tspan></text> + </g> + <g + id="g4259-61-7" + transform="translate(213.14961,-318.89762)"> + <rect + y="839.76373" + x="336.61417" + height="17.716536" + width="35.433071" + id="rect4257-1-1" + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4221-5-2" + y="852.79199" + x="339.13992" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="852.79199" + x="339.13992" + id="tspan4223-7-1" + sodipodi:role="line">CTRL</tspan></text> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="374.17935" + y="621.99542" + id="text5928" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="374.17935" + y="621.99542" + id="tspan5932">Includes functionality of</tspan><tspan + sodipodi:role="line" + x="374.17935" + y="636.99542" + id="tspan5936">* BSC</tspan><tspan + sodipodi:role="line" + x="374.17935" + y="651.99542" + id="tspan5938">* MSC/VLR</tspan><tspan + sodipodi:role="line" + x="374.17935" + y="666.99542" + id="tspan5940">* HLR/AUC</tspan><tspan + sodipodi:role="line" + x="374.17935" + y="681.99542" + id="tspan5944">* SMSC</tspan></text> + <g + id="g7619" + transform="translate(194.88189,-1.0472595e-5)"> + <text + sodipodi:linespacing="125%" + id="text4266" + y="890.99506" + x="603.24945" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-size:20px" + y="890.99506" + x="603.24945" + id="tspan4268" + sodipodi:role="line">OsmoPCU</tspan></text> + <g + id="g4259-6" + transform="translate(460.62992,2.7013564e-5)"> + <rect + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4257-3" + width="35.433071" + height="17.716536" + x="336.61417" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.13992" + y="852.79199" + id="text4221-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4223-9" + x="339.13992" + y="852.79199">CTRL</tspan></text> + </g> + <g + id="g4227-3" + transform="translate(372.04725,4.2406034e-5)"> + <rect + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4225-9" + width="35.433071" + height="17.716536" + x="88.58268" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="94.139557" + y="852.78601" + id="text4217-0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4219-2" + x="94.139557" + y="852.78601">VTY</tspan></text> + </g> + <rect + y="839.76373" + x="460.62991" + height="88.58268" + width="372.04724" + id="rect6618" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + transform="translate(141.73228,-141.73229)" + id="g6607-2"> + <path + inkscape:connector-curvature="0" + id="path4636-0-22" + d="m 549.2126,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-5-7);marker-end:url(#marker4690-8-3)" /> + <text + sodipodi:linespacing="125%" + id="text5147-4" + y="816.18896" + x="561.25983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="561.25983" + sodipodi:role="line" + id="tspan7108">GTP/IP</tspan></text> + </g> + <g + id="g7316" + transform="translate(194.88189,-1.0472595e-5)"> + <rect + y="520.86615" + x="460.62991" + height="124.01575" + width="88.58268" + id="rect7296" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text7300" + y="587.36206" + x="463.63654" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.19563866px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="587.36206" + x="463.63654" + id="tspan7302" + sodipodi:role="line">OpenGGSN</tspan></text> + </g> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect7782" + width="0" + height="0" + x="0" + y="0" + transform="translate(0,308.26772)" /> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10082" + width="301.18109" + height="265.74802" + x="284.01575" + y="520.86615" /> + <g + id="g9402-3" + transform="translate(284.01575,-318.89764)"> + <path + inkscape:connector-curvature="0" + id="path4636-5-9-3" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-9-4-22);marker-end:url(#marker4690-3-8-0)" /> + <text + sodipodi:linespacing="125%" + id="text5151-9-1-6" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-33-5-1" + sodipodi:role="line">SMPP</tspan></text> + </g> + <g + id="g9402-2" + transform="translate(124.56693,-318.89764)"> + <path + inkscape:connector-curvature="0" + id="path4636-5-9-1" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-9-4-3);marker-end:url(#marker4690-3-8-00)" /> + <text + sodipodi:linespacing="125%" + id="text5151-9-1-2" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-33-5-50" + sodipodi:role="line">MNCC</tspan></text> + </g> + </g> +</svg> diff --git a/2017/running_osmo_gsm-osmocon2017/osmocom-gsm.svg b/2017/running_osmo_gsm-osmocon2017/osmocom-gsm.svg new file mode 100644 index 0000000..8f2ac6d --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/osmocom-gsm.svg @@ -0,0 +1,1980 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="297mm" + height="210mm" + viewBox="0 0 1052.3622 744.09448" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="osmocom-gsm.svg"> + <defs + id="defs4"> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker6072" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path6074" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + transform="scale(0.8) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path5968" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="marker5275" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path5277" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker5211" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path5213" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker4690" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path4692" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + transform="scale(0.8) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path4646" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4327" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4324" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) translate(12.5,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-8" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-5" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968-3" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074-5" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-61" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-3" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-7-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-6-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-3-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-4-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-7-1-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-6-1-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-3-0-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-4-6-2" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-5-7-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-9-6-0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-8-3-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-8-4-9" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968-9" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074-8" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966-7-7" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968-9-0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072-4-9" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074-8-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5966-7-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5968-9-4" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker6072-4-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path6074-8-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-9-4" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-8-5" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-3-8" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-5-5" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-9-4-5" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-8-5-5" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-3-8-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-5-5-2" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-9-4-2" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-8-5-9" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-3-8-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-5-5-8" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-7-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-6-9" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-4-1" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-1-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-7-6" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-6-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-4-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-1-1" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-9-4-22" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-8-5-2" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-3-8-0" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-5-5-6" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4644-9-4-3" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lstart" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(0.8,0,0,0.8,10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4646-8-5-7" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4690-3-8-00" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + inkscape:connector-curvature="0" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path4692-5-5-1" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4911551" + inkscape:cx="556.46791" + inkscape:cy="372.02568" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:snap-global="true" + inkscape:snap-bbox="true" + inkscape:bbox-paths="false" + inkscape:snap-to-guides="false" + inkscape:snap-others="false" + inkscape:bbox-nodes="false" + inkscape:snap-bbox-edge-midpoints="false" + inkscape:snap-bbox-midpoints="false" + inkscape:object-paths="false" + inkscape:object-nodes="true" + showguides="false" + inkscape:window-width="1918" + inkscape:window-height="1162" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-308.26772)"> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" + d="m 584.64567,875.19684 70.86615,0" + id="path4318" + inkscape:connector-curvature="0" /> + <g + id="g6607" + transform="translate(194.88189,-1.0472595e-5)"> + <path + inkscape:connector-curvature="0" + id="path4636-0" + d="m 549.2126,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-5);marker-end:url(#marker4690-8)" /> + <text + sodipodi:linespacing="125%" + id="text5147" + y="816.18896" + x="561.25983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="561.25983" + id="tspan5149" + sodipodi:role="line">Gb/IP</tspan></text> + </g> + <g + id="g5461" + transform="translate(283.46457,-1.324757e-5)"> + <path + inkscape:connector-curvature="0" + id="path4636" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644);marker-end:url(#marker4690)" /> + <text + sodipodi:linespacing="125%" + id="text5151" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153" + sodipodi:role="line">Abis/IP</tspan></text> + </g> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5275);marker-end:url(#marker5211)" + d="m 584.64567,963.77952 141.73229,0 0,-35.43308" + id="path5203" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.9524622px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="605.33478" + y="958.31073" + id="text5351" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5353" + x="605.33478" + y="958.31073" + style="font-size:9.34528923px">sysmoBTS direct PHY access</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="596.60864" + y="864.77759" + id="text5355" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5357" + x="596.60864" + y="864.77759">PCU Sock</tspan></text> + <g + id="g7653" + transform="translate(194.88189,-1.0472595e-5)"> + <g + id="g4252"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="122.30629" + y="985.66003" + id="text4144" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4146" + x="122.30629" + y="985.66003">SDR Hardware</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4172" + width="141.73228" + height="35.433071" + x="88.58268" + y="963.77948" /> + </g> + <g + id="g4247"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="97.314629" + y="950.22699" + id="text4148" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="97.314629" + y="950.22699" + id="tspan4152">OsmoTRX</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4160" + width="70.866142" + height="35.433071" + x="88.58268" + y="928.34644" /> + </g> + <g + id="g4242"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="166.59451" + y="950.125" + id="text4156" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4158" + x="166.59451" + y="950.125">Transceiver</tspan></text> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25100005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4162" + width="70.866142" + height="35.433071" + x="159.44882" + y="928.34644" /> + </g> + </g> + <g + id="g4227" + transform="translate(194.88189,-1.0472595e-5)"> + <rect + y="839.76373" + x="88.58268" + height="17.716536" + width="35.433071" + id="rect4225" + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g10050"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="94.139557" + y="852.78601" + id="text4217" + sodipodi:linespacing="125%" + transform="translate(194.88189,-10e-6)"><tspan + sodipodi:role="line" + id="tspan4219" + x="94.139557" + y="852.78601">VTY</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4178" + y="881.67499" + x="384.82532" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="881.67499" + x="384.82532" + id="tspan4180" + sodipodi:role="line">OsmoBTS</tspan></text> + <g + transform="translate(194.88189,-1.0472595e-5)" + id="g4232"> + <rect + style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4198" + width="141.73228" + height="17.716536" + x="88.58268" + y="910.62988" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="127.64554" + y="923.58612" + id="text4182" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="127.64554" + y="923.58612" + id="tspan4186">osmo-bts-trx</tspan></text> + </g> + <g + transform="translate(194.88189,-1.0472595e-5)" + id="g5364"> + <rect + style="opacity:1;fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.39999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4198-7" + width="141.73227" + height="17.716536" + x="248.03149" + y="910.62994" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="279.13019" + y="922.42224" + id="text4190" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="279.13019" + y="922.42224" + id="tspan4194">osmo-bts-sysmo</tspan></text> + </g> + <g + transform="translate(212.59843,1.6540969e-5)" + id="g4259"> + <rect + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4257" + width="35.433071" + height="17.716536" + x="336.61417" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.13992" + y="852.79199" + id="text4221" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4223" + x="339.13992" + y="852.79199">CTRL</tspan></text> + </g> + <rect + y="839.76373" + x="283.46457" + height="88.58268" + width="301.18112" + id="rect4176" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.43057334;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g7667" + transform="translate(194.88189,-1.0472595e-5)"> + <text + sodipodi:linespacing="125%" + id="text4166" + y="959.34552" + x="318.90579" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="959.34552" + x="318.90579" + id="tspan4168" + sodipodi:role="line">sysmoBTS PHY</tspan><tspan + id="tspan4170" + y="974.34552" + x="318.90579" + sodipodi:role="line">sysmoBTS Hardware</tspan></text> + <rect + y="928.34644" + x="248.03149" + height="70.866142" + width="141.73228" + id="rect5359" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.33630621;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + transform="translate(124.01575,-1.324757e-5)" + id="g5461-7"> + <path + inkscape:connector-curvature="0" + id="path4636-4" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-7);marker-end:url(#marker4690-4)" /> + <text + sodipodi:linespacing="125%" + id="text5151-0" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-3" + sodipodi:role="line">Abis/IP</tspan></text> + </g> + <g + id="g7578" + transform="translate(194.88189,-1.0472595e-5)"> + <text + sodipodi:linespacing="125%" + id="text4178-6" + y="744.66223" + x="276.61285" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="744.66223" + x="276.61285" + id="tspan4180-4" + sodipodi:role="line">OsmoBSC</tspan></text> + <g + id="g4227-7" + transform="translate(159.44882,-141.73226)"> + <rect + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4225-0" + width="35.433071" + height="17.716536" + x="88.58268" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="94.139557" + y="852.78601" + id="text4217-4" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4219-6" + x="94.139557" + y="852.78601">VTY</tspan></text> + </g> + <g + transform="translate(17.716542,-141.73226)" + id="g4259-61"> + <rect + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4257-1" + width="35.433071" + height="17.716536" + x="336.61417" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.13992" + y="852.79199" + id="text4221-5" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4223-7" + x="339.13992" + y="852.79199">CTRL</tspan></text> + </g> + <rect + y="698.03149" + x="248.03149" + height="88.58268" + width="141.73228" + id="rect5369" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g7599" + transform="translate(194.88189,-1.0472595e-5)"> + <g + id="g4227-3-0" + transform="translate(372.04725,-141.73226)"> + <rect + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4225-9-2" + width="35.433071" + height="17.716536" + x="88.58268" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="94.139557" + y="852.78601" + id="text4217-0-3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4219-2-3" + x="94.139557" + y="852.78601">VTY</tspan></text> + </g> + <g + id="g4259-6-3" + transform="translate(265.74803,-141.73224)"> + <rect + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4257-3-5" + width="35.433071" + height="17.716536" + x="336.61417" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.13992" + y="852.79199" + id="text4221-2-6" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4223-9-0" + x="339.13992" + y="852.79199">CTRL</tspan></text> + </g> + <rect + y="698.03149" + x="460.62991" + height="88.58268" + width="177.16536" + id="rect5562" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4178-6-6" + y="749.26282" + x="500.58948" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="749.26282" + x="500.58948" + id="tspan4180-4-6" + sodipodi:role="line">OsmoSGSN</tspan><tspan + id="tspan5630" + y="774.26282" + x="500.58948" + sodipodi:role="line" /></text> + </g> + <g + id="g5461-5" + transform="translate(283.46457,-141.7323)"> + <path + inkscape:connector-curvature="0" + id="path4636-5" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-9);marker-end:url(#marker4690-3)" /> + <text + sodipodi:linespacing="125%" + id="text5151-9" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-33" + sodipodi:role="line">A/IP</tspan></text> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="227.12598" + y="564.94281" + id="text4178-6-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4180-4-5" + x="227.12598" + y="564.94281">OsmoNITB</tspan></text> + <g + transform="translate(35.433068,-318.89761)" + id="g4227-7-9"> + <rect + y="839.76373" + x="88.58268" + height="17.716536" + width="35.433071" + id="rect4225-0-9" + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4217-4-4" + y="852.78601" + x="94.139557" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="852.78601" + x="94.139557" + id="tspan4219-6-7" + sodipodi:role="line">VTY</tspan></text> + </g> + <g + id="g4259-61-7" + transform="translate(53.149607,-318.89762)"> + <rect + y="839.76373" + x="336.61417" + height="17.716536" + width="35.433071" + id="rect4257-1-1" + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4221-5-2" + y="852.79199" + x="339.13992" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="852.79199" + x="339.13992" + id="tspan4223-7-1" + sodipodi:role="line">CTRL</tspan></text> + </g> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="214.17935" + y="621.99542" + id="text5928" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="214.17935" + y="621.99542" + id="tspan5932">Includes functionality of</tspan><tspan + sodipodi:role="line" + x="214.17935" + y="636.99542" + id="tspan5936">* BSC</tspan><tspan + sodipodi:role="line" + x="214.17935" + y="651.99542" + id="tspan5938">* MSC/VLR</tspan><tspan + sodipodi:role="line" + x="214.17935" + y="666.99542" + id="tspan5940">* HLR/AUC</tspan><tspan + sodipodi:role="line" + x="214.17935" + y="681.99542" + id="tspan5944">* SMSC</tspan></text> + <g + id="g7619" + transform="translate(194.88189,-1.0472595e-5)"> + <text + sodipodi:linespacing="125%" + id="text4266" + y="890.99506" + x="603.24945" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-size:20px" + y="890.99506" + x="603.24945" + id="tspan4268" + sodipodi:role="line">OsmoPCU</tspan></text> + <g + id="g4259-6" + transform="translate(460.62992,2.7013564e-5)"> + <rect + style="opacity:1;fill:#ffaaaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4257-3" + width="35.433071" + height="17.716536" + x="336.61417" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.13992" + y="852.79199" + id="text4221-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4223-9" + x="339.13992" + y="852.79199">CTRL</tspan></text> + </g> + <g + id="g4227-3" + transform="translate(372.04725,4.2406034e-5)"> + <rect + style="opacity:1;fill:#eeffaa;fill-opacity:1;stroke:#000000;stroke-width:0.40000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4225-9" + width="35.433071" + height="17.716536" + x="88.58268" + y="839.76373" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="94.139557" + y="852.78601" + id="text4217-0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4219-2" + x="94.139557" + y="852.78601">VTY</tspan></text> + </g> + <rect + y="839.76373" + x="460.62991" + height="88.58268" + width="372.04724" + id="rect6618" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + transform="translate(389.76378,-1.324757e-5)" + id="g6607-8"> + <path + inkscape:connector-curvature="0" + id="path4636-0-2" + d="m 549.2126,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-5-6);marker-end:url(#marker4690-8-5)" /> + <text + sodipodi:linespacing="125%" + id="text5147-2" + y="816.18896" + x="561.25983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="561.25983" + id="tspan5149-1" + sodipodi:role="line">Gb/IP</tspan></text> + </g> + <g + id="g9132"> + <rect + y="698.03149" + x="850.39374" + height="88.58268" + width="177.16536" + id="rect5562-2" + style="opacity:1;fill:#aaccff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4178-6-6-6" + y="747.43286" + x="872.34875" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="747.43286" + x="872.34875" + id="tspan4180-4-6-5" + sodipodi:role="line">3rd Party SGSN</tspan><tspan + id="tspan5630-8" + y="772.43286" + x="872.34875" + sodipodi:role="line" /></text> + </g> + <g + transform="translate(141.73228,-141.73229)" + id="g6607-2"> + <path + inkscape:connector-curvature="0" + id="path4636-0-22" + d="m 549.2126,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-5-7);marker-end:url(#marker4690-8-3)" /> + <text + sodipodi:linespacing="125%" + id="text5147-4" + y="816.18896" + x="561.25983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="561.25983" + sodipodi:role="line" + id="tspan7108">GTP/IP</tspan></text> + </g> + <g + transform="translate(248.03149,-141.7323)" + id="g6607-2-2"> + <path + inkscape:connector-curvature="0" + id="path4636-0-22-8" + d="m 549.2126,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-5-7-1);marker-end:url(#marker4690-8-3-0)" /> + <text + sodipodi:linespacing="125%" + id="text5147-4-0" + y="816.18896" + x="561.25983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="561.25983" + sodipodi:role="line" + id="tspan7108-4">GTP/IP</tspan></text> + </g> + <g + id="g7316" + transform="translate(194.88189,-1.0472595e-5)"> + <rect + y="520.86615" + x="460.62991" + height="124.01575" + width="88.58268" + id="rect7296" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text7300" + y="587.36206" + x="463.63654" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.19563866px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="587.36206" + x="463.63654" + id="tspan7302" + sodipodi:role="line">OpenGGSN</tspan></text> + </g> + <g + id="g7760" + transform="translate(194.88189,-1.0472595e-5)"> + <rect + y="520.86615" + x="566.92914" + height="124.01575" + width="70.866142" + id="rect7298" + style="opacity:1;fill:#aaccff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text7304" + y="578.02979" + x="602.13538" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.76203346px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="578.02979" + x="602.13538" + id="tspan7306" + sodipodi:role="line">3rd Party</tspan><tspan + id="tspan7308" + y="598.9823" + x="602.13538" + sodipodi:role="line">GGSN</tspan></text> + </g> + <g + transform="translate(336.61418,-141.7323)" + id="g6607-2-29"> + <path + inkscape:connector-curvature="0" + id="path4636-0-22-3" + d="m 549.2126,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-5-7-3);marker-end:url(#marker4690-8-3-5)" /> + <text + sodipodi:linespacing="125%" + id="text5147-4-8" + y="816.18896" + x="561.25983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="561.25983" + sodipodi:role="line" + id="tspan7108-9">GTP/IP</tspan></text> + </g> + <g + transform="translate(442.91339,-141.73231)" + id="g6607-2-2-7"> + <path + inkscape:connector-curvature="0" + id="path4636-0-22-8-4" + d="m 549.2126,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-5-7-1-1);marker-end:url(#marker4690-8-3-0-1)" /> + <text + sodipodi:linespacing="125%" + id="text5147-4-0-3" + y="816.18896" + x="561.25983" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="561.25983" + sodipodi:role="line" + id="tspan7108-4-9">GTP/IP</tspan></text> + </g> + <g + transform="translate(389.76379,-2.094519e-5)" + id="g7316-9"> + <rect + y="520.86615" + x="460.62991" + height="124.01575" + width="88.58268" + id="rect7296-1" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text7300-6" + y="587.36206" + x="463.63654" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.19563866px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="587.36206" + x="463.63654" + id="tspan7302-8" + sodipodi:role="line">OpenGGSN</tspan></text> + </g> + <g + id="g7754" + transform="translate(194.88189,-1.0472595e-5)"> + <rect + y="520.86615" + x="761.81104" + height="124.01575" + width="70.866142" + id="rect7298-4" + style="opacity:1;fill:#aaccff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text7304-9" + y="578.02979" + x="797.01727" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.76203346px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="578.02979" + x="797.01727" + id="tspan7306-7" + sodipodi:role="line">3rd Party</tspan><tspan + id="tspan7308-4" + y="598.9823" + x="797.01727" + sodipodi:role="line">GGSN</tspan></text> + </g> + <g + id="g7738" + transform="translate(194.88189,-1.0472595e-5)"> + <rect + y="520.86615" + x="248.03149" + height="124.01575" + width="141.73228" + id="rect5904" + style="opacity:1;fill:#aaccff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4178-6-2-6" + y="557.16223" + x="256.00607" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="557.16223" + x="256.00607" + id="tspan4180-4-5-5" + sodipodi:role="line">3rd Party MSC</tspan></text> + <text + sodipodi:linespacing="125%" + id="text6612" + y="574.01575" + x="265.74802" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="574.01575" + x="265.74802" + id="tspan6614" + sodipodi:role="line">and/or existing other</tspan><tspan + id="tspan6616" + y="589.01575" + x="265.74802" + sodipodi:role="line">core network elements</tspan></text> + </g> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect7782" + width="0" + height="0" + x="0" + y="0" + transform="translate(0,308.26772)" /> + <g + id="g10674" + transform="translate(194.88189,-159.44882)"> + <rect + y="520.86615" + x="-70.866142" + height="106.29921" + width="141.73228" + id="rect7768" + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text7796" + y="567.38342" + x="-66.036423" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.77378654px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="567.38342" + x="-66.036423" + id="tspan7798" + sodipodi:role="line">Linux Call Router</tspan></text> + <text + sodipodi:linespacing="125%" + id="text7800" + y="591.02368" + x="-46.175999" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="591.02368" + x="-46.175999" + id="tspan7802" + sodipodi:role="line">SoftSwitch / PBX</tspan></text> + <g + transform="translate(-159.44882,-53.149605)" + id="g9111"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="53.247967" + y="583.76086" + id="text5948-5" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5950-4" + x="53.247967" + y="583.76086">SIP</tspan></text> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5966-7);marker-end:url(#marker6072-4)" + d="m 88.582677,591.73228 -53.149606,0" + id="path5958-7" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-159.44882,-53.149605)" + id="g9094"> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5966-7-7);marker-end:url(#marker6072-4-9)" + d="m 88.582677,627.16535 -53.149606,0" + id="path5958-7-1" + inkscape:connector-curvature="0" /> + <text + sodipodi:linespacing="125%" + id="text8985" + y="617.31396" + x="43.049" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="617.31396" + x="43.049" + id="tspan8987" + sodipodi:role="line">E1/PRI</tspan></text> + </g> + <g + transform="translate(-159.44882,-53.149605)" + id="g9077"> + <path + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5966-7-1);marker-end:url(#marker6072-4-5)" + d="m 88.582677,662.59842 -53.149606,0" + id="path5958-7-5" + inkscape:connector-curvature="0" /> + <text + sodipodi:linespacing="125%" + id="text8989" + y="654.43243" + x="52.441154" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="654.43243" + x="52.441154" + id="tspan8991" + sodipodi:role="line">BRI</tspan></text> + </g> + </g> + <text + sodipodi:linespacing="125%" + id="text9116" + y="420.49026" + x="354.04681" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="420.49026" + x="354.04681" + id="tspan9118" + sodipodi:role="line">External SMS</tspan><tspan + id="tspan9120" + y="435.49026" + x="354.04681" + sodipodi:role="line">Applications</tspan></text> + <g + id="g9402" + transform="translate(283.46457,-318.89764)"> + <path + inkscape:connector-curvature="0" + id="path4636-5-9" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-9-4);marker-end:url(#marker4690-3-8)" /> + <text + sodipodi:linespacing="125%" + id="text5151-9-1" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-33-5" + sodipodi:role="line">SS7</tspan></text> + </g> + <g + id="g9402-1" + transform="translate(566.92913,-318.89764)"> + <path + inkscape:connector-curvature="0" + id="path4636-5-9-4" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-9-4-5);marker-end:url(#marker4690-3-8-6)" /> + <text + sodipodi:linespacing="125%" + id="text5151-9-1-3" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-33-5-5" + sodipodi:role="line">SS7</tspan></text> + </g> + <g + id="g9402-8" + transform="translate(761.81102,-318.89764)"> + <path + inkscape:connector-curvature="0" + id="path4636-5-9-0" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-9-4-2);marker-end:url(#marker4690-3-8-1)" /> + <text + sodipodi:linespacing="125%" + id="text5151-9-1-0" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-33-5-7" + sodipodi:role="line">SS7</tspan></text> + </g> + <g + id="g10071" + transform="translate(35.433068,4.4314868e-5)"> + <rect + y="839.76373" + x="88.58268" + height="159.44882" + width="141.73228" + id="rect10069" + style="opacity:1;fill:#aaccff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4178-5" + y="882.36993" + x="98.257568" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="882.36993" + x="98.257568" + id="tspan4180-40" + sodipodi:role="line">3rd Party BTS</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="115.93767" + y="909.9455" + id="text9931" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="115.93767" + y="909.9455" + id="tspan9935">Some support for</tspan><tspan + sodipodi:role="line" + x="115.93767" + y="924.9455" + id="tspan9939">* Siemens</tspan><tspan + sodipodi:role="line" + x="115.93767" + y="939.9455" + id="tspan9943">* Nokia</tspan><tspan + sodipodi:role="line" + x="115.93767" + y="954.9455" + id="tspan9947">* Ericsson</tspan><tspan + sodipodi:role="line" + x="115.93767" + y="969.9455" + id="tspan9949">* ip.access</tspan></text> + </g> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect10082" + width="301.18109" + height="265.74802" + x="124.01575" + y="520.86615" /> + <g + transform="translate(-88.582677,-2.7749754e-6)" + id="g5461-7-5"> + <path + inkscape:connector-curvature="0" + id="path4636-4-8" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-7-1);marker-end:url(#marker4690-4-1)" /> + <text + sodipodi:linespacing="125%" + id="text5151-0-5" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-3-0" + sodipodi:role="line">Abis/IP</tspan></text> + </g> + <g + transform="translate(-17.716535,-2.7749754e-6)" + id="g5461-7-4"> + <path + inkscape:connector-curvature="0" + id="path4636-4-1" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-7-6);marker-end:url(#marker4690-4-3)" /> + <text + sodipodi:linespacing="125%" + id="text5151-0-8" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-3-6" + sodipodi:role="line">Abis/E1</tspan></text> + </g> + <g + id="g9402-3" + transform="translate(124.01575,-318.89764)"> + <path + inkscape:connector-curvature="0" + id="path4636-5-9-3" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-9-4-22);marker-end:url(#marker4690-3-8-0)" /> + <text + sodipodi:linespacing="125%" + id="text5151-9-1-6" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-33-5-1" + sodipodi:role="line">SMPP</tspan></text> + </g> + <g + id="g9402-2" + transform="translate(-35.43307,-318.89764)"> + <path + inkscape:connector-curvature="0" + id="path4636-5-9-1" + d="m 230.31496,786.61417 0,53.14961" + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker4644-9-4-3);marker-end:url(#marker4690-3-8-00)" /> + <text + sodipodi:linespacing="125%" + id="text5151-9-1-2" + y="816.18896" + x="239.52753" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:125%;font-family:LMSans10;-inkscape-font-specification:LMSans10;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="816.18896" + x="239.52753" + id="tspan5153-33-5-50" + sodipodi:role="line">MNCC</tspan></text> + </g> + </g> +</svg> diff --git a/2017/running_osmo_gsm-osmocon2017/running-osmo-gsm.adoc b/2017/running_osmo_gsm-osmocon2017/running-osmo-gsm.adoc new file mode 100644 index 0000000..1f87a65 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/running-osmo-gsm.adoc @@ -0,0 +1,495 @@ +Running a basic Osmocom GSM network +=================================== +:author: Harald Welte <laforge@gnumonks.org> +:copyright: sysmocom - s.f.m.c. GmbH (License: CC-BY-SA) +:backend: slidy +:max-width: 45em +//:data-uri: +//:icons: + + +== What this talk is about + +[role="incremental"] +* Implementing GSM/GPRS network elements as FOSS +* Applied Protocol Archaeology +* Doing all of that on top of Linux (in userspace) + + +== Running your own Internet-style network + +* use off-the-shelf hardware (x86, Ethernet card) +* use any random Linux distribution +* configure Linux kernel TCP/IP network stack +** enjoy fancy features like netfilter/iproute2/tc +* use apache/lighttpd/nginx on the server +* use Firefox/chromium/konqueor/lynx on the client +* do whatever modification/optimization on any part of the stack + + +== Running your own GSM network + +Until 2009 the situation looked like this: + +* go to Ericsson/Huawei/ZTE/Nokia/Alcatel/... +* spend lots of time convincing them that you're an eligible customer +* spend a six-digit figure for even the most basic full network +* end up with black boxes you can neither study nor improve + +[role="incremental"] +- WTF? +- I've grown up with FOSS and the Internet. I know a better world. + + +== Why no cellular FOSS? + +- both cellular (2G/3G/4G) and TCP/IP/HTTP protocol specs are publicly + available for decades. Can you believe it? +- Internet protocol stacks have lots of FOSS implementations +- cellular protocol stacks have no FOSS implementations for the + first almost 20 years of their existence? +[role="incremental"] +- it's the classic conflict + * classic circuit-switched telco vs. the BBS community + * ITU-T/OSI/ISO vs. Arpanet and TCP/IP + + +== Enter Osmocom + +In 2008, some people (most present in this room) started to write FOSS +for GSM + +- to boldly go where no FOSS hacker has gone before +[role="incremental"] +** where protocol stacks are deep +** and acronyms are plentiful +** we went from `bs11-abis` to `bsc_hack` to 'OpenBSC' +** many other related projects were created +** finally leading to the 'Osmocom' umbrella project + + +== Classic GSM network architecture + +image::Gsm_structures.svg[width=850] + + +== GSM Acronyms, Radio Access Network + +MS:: + Mobile Station (your phone) +BTS:: + Base Transceiver Station, consists of 1..n TRX +TRX:: + Transceiver for one radio channel, serves 8 TS +TS:: + Timeslots in the GSM radio interface; each runs a specific combination of logical channels +BSC:: + Base Station Controller + + +== GSM Acronyms, Core Network + +MSC:: + Mobile Switching Center; Terminates MM + CC Sub-layers + +HLR:: + Home Location Register; Subscriber Database + +SMSC:: + SMS Service Center + + +== GSM Acronyms, Layer 2 + 3 + +LAPDm:: + Link Access Protocol, D-Channel. Like LAPD in ISDN +RR:: + Radio Resource (establish/release dedicated channels) +MM:: + Mobility Management (registration, location, authentication) +CC:: + Call Control (voice, circuit switched data, fax) +CM:: + Connection Management + + +== Osmocom GSM components + +image::osmocom-gsm.svg[width=850] + + +== Classic GSM network as digraph + +[graphviz] +---- +digraph G { + rankdir=LR; + MS0 [label="MS"] + MS1 [label="MS"] + MS2 [label="MS"] + MS3 [label="MS"] + BTS0 [label="BTS"] + BTS1 [label="BTS"] + MSC [label="MSC/VLR"] + HLR [label="HLR/AUC"] + MS0->BTS0 [label="Um"] + MS1->BTS0 [label="Um"] + MS2->BTS1 [label="Um"] + MS3->BTS1 [label="Um"] + BTS0->BSC [label="Abis"] + BTS1->BSC [label="Abis"] + BSC->MSC [label="A"] + MSC->HLR [label="C"] + MSC->EIR [label="F"] + MSC->SMSC +} +---- + +== Simplified OsmoNITB GSM network + +[graphviz] +---- +digraph G { + rankdir=LR; + MS0 [label="MS"] + MS1 [label="MS"] + MS2 [label="MS"] + MS3 [label="MS"] + BTS0 [label="BTS"] + BTS1 [label="BTS"] + MS0->BTS0 [label="Um"] + MS1->BTS0 [label="Um"] + MS2->BTS1 [label="Um"] + MS3->BTS1 [label="Um"] + BTS0->BSC [label="Abis"] + BTS1->BSC [label="Abis"] + subgraph cluster_nitb { + label = "OsmoNITB"; + BSC + MSC [label="MSC/VLR"] + HLR [label="HLR/AUC"] + BSC->MSC [label="A"] + MSC->HLR [label="C"] + MSC->EIR [label="F"] + MSC->SMSC; + } +} +---- + +which further reduces to the following minimal setup: + +[graphviz] +---- +digraph G { + rankdir=LR; + MS0 [label="MS"] + BTS0 [label="BTS"] + MS0->BTS0 [label="Um"] + BTS0->BSC [label="Abis"] + BSC [label="OsmoNITB"]; +} +---- + +So our minimal setup is a 'Phone', a 'BTS' and 'OsmoNITB'. + +== Which BTS to use? + +* Proprietary BTS of classic vendor +** Siemens BS-11 is what we started with +** Nokia, Ericsson, and others available 2nd hand +* 'OsmoBTS' software implementation, running with +** Proprietary HW + PHY (DSP): 'sysmoBTS', or +** General purpose SDR (like USRP) + 'OsmoTRX' + +We assume a sysmoBTS in the following tutorial + + +== OsmoBTS Overview + +image::osmo-bts.svg[] + +* Implementation of GSM BTS +* supports variety of hardware/PHY options +** `osmo-bts-sysmo`: BTS family by sysmocom +** `osmo-bts-trx`: Used with 'OsmoTRX' + general-purpose SDR +** `osmo-bts-octphy`: Octasic OCTBTS hardware / OCTSDR-2G PHY +** `osmo-bts-litecell15`: Nutaq Litecell 1.5 hardware/PHY + +See separate talk about BTS hardware options later today. + +== BTS Hardware vs. BTS software + +* A classic GSM BTS is hardware + software +* It has two interfaces +** Um to the radio side, towards phones +** Abis to the wired back-haul side, towards BSC +* with today's flexible architecture, this is not always true +** the hardware might just be a network-connected SDR and BTS software +runs o a different CPU/computer, _or_ +** the BTS and BSC, or even the NITB may run on the same board + + +== Physical vs. Logical Arch (sysmoBTS) + +[graphviz] +---- +include::arch-sysmobts.dot[] +---- + +[graphviz] +---- +include::arch-sysmobts-allinone.dot[] +---- + +== Physical vs. Logical Arch (SDR e.g. USRP B2xx) + +[graphviz] +---- +include::arch-usrp.dot[] +---- + +[graphviz] +---- +include::arch-usrp-allinone.dot[] +---- + +== IP layer traffic + +* Abis/IP signaling runs inside IPA multiplex inside TCP +** Port 3002 and 3003 betewen BTS and BSC +** Connections initiated from BTS to BSC +* Voice data is carried in RTP/UDP on dynamic ports + +=> Make sure you permit the above communication in your +network/firewall config + +== Configuring Osmocom software + +* all _native_ Osmo* GSM infrastructure programs share common architecture, as + defined by various libraries 'libosmo{core,gsm,vty,abis,netif,...}' +* part of this is configuration handling +** interactive configuration via command line interface (*vty*), similar + to Cisco routers +** based on a fork of the VTY code from Zebra/Quagga, now 'libosmovty' +* you can manually edit the config file, +* or use `configure terminal` and interactively change it + + +== Configuring OsmoBTS + +* 'OsmoBTS' in our example scenario runs on the embedded ARM/Linux system + inside the 'sysmoBTS' +* we access the 'sysmoBTS' via serial console or ssh +* we then edit the configuration file `/etc/osmocom/osmo-bts.cfg` as + described in the following slide + + +== Configuring OsmoBTS + +---- +bts 0 + band DCS1800 <1> + ipa unit-id 1801 0 <2> + oml remote-ip 192.168.100.11 <3> +---- +<1> the GSM frequency band in which the BTS operates +<2> the unit-id by which this BTS identifies itself to the BSC +<3> the IP address of the BSC (to establish the OML connection towards it) + +NOTE: All other configuration is downloaded by the BSC via OML. So most +BTS settings are configured in the BSC/NITB configuration file. + + +== Purpose of Unit ID + +* Unit IDs consist of three parts: +** Site Number, BTS Number, TRX Number + +[graphviz] +---- +graph G { + rankdir=LR; + BTS0 [label="BTS\nUnit 5/0[/0]"] + BTS1 [label="BTS\nUnit 23/0[/0]"] + BTS2 [label="BTS\nUnit 42/0[/0]"] + NAT + BSC [label="BSC/NITB"] + + BTS0 -- NAT [label="10.9.23.5"] + BTS1 -- NAT [label="10.9.23.23"] + BTS2 -- NAT [label="10.9.23.42"] + NAT -- BSC [label="172.16.23.42"] +} +---- + +* source IP of all BTSs would be identical + +=> BSC identifies BTS on Unit ID, not on Source IP! + + +== Configuring OsmoNITB + +* 'OsmoNITB' is the `osmo-nitb` executable built from the `openbsc` + source tree / git repository +** just your usual `git clone && autoreconf -fi && ./configure && make install` +** (in reality, the `libosmo*` dependencies are required first...) +** nightly packages for Debian 8, Ubuntu 16.04 and 16.10 available +* 'OsmoNITB' runs on any Linux system, like your speakers' laptop +** you can actually also run it on the ARM/Linux of the 'sysmoBTS' itself, + having a literal 'Network In The Box' with power as only external + dependency + + +== Configuring OsmoNITB + +---- +network + network country code 1 <1> + mobile network code 1 <2> + short name Osmocom <3> + long name Osmocom + auth policy closed <4> + encryption a5 0 <5> +---- +<1> MCC (Country Code) e.g. 262 for Germany; 1 == Test +<2> MNC (Network Code) e.g. mcc=262, mnc=02 == Vodafone; 1 == Test +<3> Operator name to be sent to the phone *after* registration +<4> Only accept subscribers (SIM cards) explicitly authorized in HLR +<5> Use A5/0 (== no encryption) + + +== Configuring BTS in OsmoNITB (BTS) + +---- +network + bts 0 + type sysmobts <1> + band DCS1800 <2> + ms max power 33 <3> + periodic location update 6 <4> + ip.access unit_id 1801 0 <5> + codec-support fr hr efr amr <6> +---- +<1> type of the BTS that we use (must match BTS) +<2> frequency band of the BTS (must match BTS) +<3> maximum transmit power phones are permitted (33 dBm == 2W) +<4> interval at which phones should send periodic location update (6 minutes) +<5> Unit ID of the BTS (must match BTS) +<6> Voice codecs supported by the BTS + + +== Configuring BTS in OsmoNITB (TRX) + +---- +network + bts 0 + trx 0 + arfcn 871 <1> + max_power_red 0 <2> + timeslot 0 + phys_chan_config CCCH+SDCCH4 <3> + timeslot 1 + phys_chan_config TCH/F <4> + ... + timeslot 7 + phys_chan_config PDCH <5> +---- +<1> The RF channel number used by this TRX +<2> The maximum power *reduction* in dBm. 0 = no reduction +<3> Every BTS needs need one timeslot with a CCCH +<4> We configure TS1 to TS6 as TCH/F for voice +<5> We configure TS6 as PDCH for GPRS + + +== What a GSM phone does after power-up + +* Check SIM card for last cell before switch-off +** if that cell is found again, use that +** if not, perform a network scan +*** try to find strong carriers, check if they contain BCCH +*** create a list of available cells + networks +*** if one of the networks MCC+MNC matches first digits of 'IMSI', this is +the home network, which has preference over others +* perform 'LOCATION UPDATE' (TYPE=IMSI ATTACH) procedure to network +* when network sends 'LOCATION UPDATE ACCEPT', *camp* on that cell + +-> let's check if we can perform 'LOCATION UPDATE' on our own network + + +== Verifying our network + +* look at stderr of 'OsmoBTS' and 'OsmoNITB' +** 'OsmoBTS' will terminate if Abis cannot be set-up +** expected to be re-spawned by init / systemd +* use MS to search for networks, try manual registration +* observe registration attempts `logging level mm info` + +-> should show 'LOCATION UPDATE' request / reject / accept + +* use the VTY to explore system state (`show *`) +* use the VTY to change subscriber parameters like extension number + + +== Exploring your GSM networks services + +* use `*#100#` from any registered MS to obtain own number +* voice calls from mobile to mobile +* SMS from mobile to mobile +* SMS to/from external applications (via SMPP) +* voice to/from external PBX (via MNCC) +* explore the VTY interfaces of all network elements +** send SMS from the command line +** experiment with 'silent call' feature +** experiment with logging levels +* use wireshark to investigate GSM protocols + + +== Using the VTY + +* The VTY can be used not only to configure, but also to interactively + explore the system status (`show` commands) +* Every Osmo* program has its own telnet port +|=== +|Program|Telnet Port +|OsmoPCU|4240 +|OsmoBTS|4241 +|OsmoNITB|4242 +|OsmoSGSN|4245 +|=== +* ports are bound to 127.0.0.1 by default +* try tab-completion, `?` and `list` commands + +== Using the VTY (continued) + +* e.g. `show subsciber` to display data about subscriber: +---- +OpenBSC> show subscriber imsi 901700000003804 + ID: 12, Authorized: 1 + Extension: 3804 + LAC: 0/0x0 + IMSI: 901700000003804 + TMSI: F2D4FA0A + Expiration Time: Mon, 07 Dec 2015 09:45:16 +0100 + Paging: not paging Requests: 0 + Use count: 1 +---- + +* try `show bts`, `show trx`, `show lchan`, `show statistics`, ... + +== Further Reading + +User Manuals:: +See http://ftp.osmocom.org/docs/latest/ +Wiki:: +See http://osmocom.org/projects/openbsc + +== The End + +* so long, and thanks for all the fish +* I hope you have questions! + +[role="incremental"] +* have fun exploring mobile technologies using Osmocom +* interested in working with more acronyms? Come join the project! + +* Check out https://osmocom.org/ and openbsc@lists.osmocom.org diff --git a/2017/running_osmo_gsm-osmocon2017/running-osmo-gsm.html b/2017/running_osmo_gsm-osmocon2017/running-osmo-gsm.html new file mode 100644 index 0000000..c162c20 --- /dev/null +++ b/2017/running_osmo_gsm-osmocon2017/running-osmo-gsm.html @@ -0,0 +1,5018 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Running a basic Osmocom GSM network</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="copyright" content="Copyright © sysmocom - s.f.m.c. GmbH (License: CC-BY-SA)" />
+<meta name="generator" content="AsciiDoc 8.6.9" />
+<style type="text/css">
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
+}
+
+body {
+ margin: 1em 5% 1em 5%;
+}
+
+a {
+ color: blue;
+ text-decoration: underline;
+}
+a:visited {
+ color: fuchsia;
+}
+
+em {
+ font-style: italic;
+ color: navy;
+}
+
+strong {
+ font-weight: bold;
+ color: #083194;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #527bbd;
+ margin-top: 1.2em;
+ margin-bottom: 0.5em;
+ line-height: 1.3;
+}
+
+h1, h2, h3 {
+ border-bottom: 2px solid silver;
+}
+h2 {
+ padding-top: 0.5em;
+}
+h3 {
+ float: left;
+}
+h3 + * {
+ clear: left;
+}
+h5 {
+ font-size: 1.0em;
+}
+
+div.sectionbody {
+ margin-left: 0;
+}
+
+hr {
+ border: 1px solid silver;
+}
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+ul, ol, li > p {
+ margin-top: 0;
+}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
+
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
+ padding: 0;
+ margin: 0;
+}
+pre {
+ white-space: pre-wrap;
+}
+
+#author {
+ color: #527bbd;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+#email {
+}
+#revnumber, #revdate, #revremark {
+}
+
+#footer {
+ font-size: small;
+ border-top: 2px solid silver;
+ padding-top: 0.5em;
+ margin-top: 4.0em;
+}
+#footer-text {
+ float: left;
+ padding-bottom: 0.5em;
+}
+#footer-badges {
+ float: right;
+ padding-bottom: 0.5em;
+}
+
+#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.admonitionblock {
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
+}
+
+div.content { /* Block element content. */
+ padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+ color: #527bbd;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 1.0em;
+ margin-bottom: 0.5em;
+}
+div.title + * {
+ margin-top: 0;
+}
+
+td div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content + div.title {
+ margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+ background: #ffffee;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
+ padding: 0.5em;
+}
+
+div.listingblock > div.content {
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
+ padding: 0.5em;
+}
+
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
+ margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
+}
+
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
+div.verseblock + div.attribution {
+ text-align: left;
+}
+
+div.admonitionblock .icon {
+ vertical-align: top;
+ font-size: 1.1em;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #527bbd;
+ padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+ padding-left: 0.5em;
+ border-left: 3px solid #dddddd;
+}
+
+div.exampleblock > div.content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+div.imageblock div.content { padding-left: 0; }
+span.image img { border-style: none; vertical-align: text-bottom; }
+a.image:visited { color: white; }
+
+dl {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+dt {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ font-style: normal;
+ color: navy;
+}
+dd > *:first-child {
+ margin-top: 0.1em;
+}
+
+ul, ol {
+ list-style-position: outside;
+}
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
+
+tfoot {
+ font-weight: bold;
+}
+td > div.verse {
+ white-space: pre;
+}
+
+div.hdlist {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+div.hdlist tr {
+ padding-bottom: 15px;
+}
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
+ vertical-align: top;
+ font-style: normal;
+ padding-right: 0.8em;
+ color: navy;
+}
+td.hdlist2 {
+ vertical-align: top;
+}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
+
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
+@media print {
+ #footer-badges { display: none; }
+}
+
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
+ color: #527bbd;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 1.0em;
+ margin-bottom: 0.1em;
+}
+
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.toclevel2 {
+ margin-left: 2em;
+ font-size: 0.9em;
+}
+div.toclevel3 {
+ margin-left: 4em;
+ font-size: 0.9em;
+}
+div.toclevel4 {
+ margin-left: 6em;
+ font-size: 0.9em;
+}
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
+
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+thead, p.tableblock.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
+}
+
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
+}
+
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
+ text-align: right;
+}
+
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
+}
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
+}
+
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
+}
+
+@media print {
+ body.manpage div#toc { display: none; }
+}
+/* slidy.css
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+/*
+ SJR: 2010-09-29: Modified for AsciiDoc slidy backend.
+ Mostly just commented out stuff that is handled by AsciiDoc's CSS files.
+*/
+
+body
+{
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ width: 100%;
+ height: 100%;
+ color: black;
+ background-color: white;
+/*
+ font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
+*/
+ font-size: 14pt;
+}
+
+div.toolbar {
+ position: fixed; z-index: 200;
+ top: auto; bottom: 0; left: 0; right: 0;
+ height: 1.2em; text-align: right;
+ padding-left: 1em;
+ padding-right: 1em;
+ font-size: 60%;
+ color: red;
+ background-color: rgb(240,240,240);
+ border-top: solid 1px rgb(180,180,180);
+}
+
+div.toolbar span.copyright {
+ color: black;
+ margin-left: 0.5em;
+}
+
+div.initial_prompt {
+ position: absolute;
+ z-index: 1000;
+ bottom: 1.2em;
+ width: 90%;
+ background-color: rgb(200,200,200);
+ opacity: 0.35;
+ background-color: rgb(200,200,200, 0.35);
+ cursor: pointer;
+}
+
+div.initial_prompt p.help {
+ text-align: center;
+}
+
+div.initial_prompt p.close {
+ text-align: right;
+ font-style: italic;
+}
+
+div.slidy_toc {
+ position: absolute;
+ z-index: 300;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ overflow: auto;
+ top: auto;
+ right: auto;
+ left: 4em;
+ bottom: 4em;
+ padding: 1em;
+ background: rgb(240,240,240);
+ border-style: solid;
+ border-width: 2px;
+ font-size: 60%;
+}
+
+div.slidy_toc .toc_heading {
+ text-align: center;
+ width: 100%;
+ margin: 0;
+ margin-bottom: 1em;
+ border-bottom-style: solid;
+ border-bottom-color: rgb(180,180,180);
+ border-bottom-width: 1px;
+}
+
+div.slide {
+ z-index: 20;
+ margin: 0 0 0 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ padding-left: 20px;
+ padding-right: 20px;
+ border-width: 0;
+ clear: both;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ line-height: 120%;
+ background-color: transparent;
+}
+
+div.background {
+ display: none;
+}
+
+div.handout {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+div.slide.titlepage {
+ text-align: center;
+}
+
+div.slide.titlepage.h1 {
+ padding-top: 10%;
+}
+
+div.slide h1 {
+ padding-left: 0;
+ padding-right: 20pt;
+ padding-top: 4pt;
+ padding-bottom: 4pt;
+ margin-top: 0;
+ margin-left: 0;
+ margin-right: 60pt;
+ margin-bottom: 0.5em;
+ display: block;
+ font-size: 160%;
+ line-height: 1.2em;
+ background: transparent;
+}
+
+div.toc {
+ position: absolute;
+ top: auto;
+ bottom: 4em;
+ left: 4em;
+ right: auto;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ border: solid thin black;
+ padding: 1em;
+ background: rgb(240,240,240);
+ color: black;
+ z-index: 300;
+ overflow: auto;
+ display: block;
+ visibility: visible;
+}
+
+div.toc-heading {
+ width: 100%;
+ border-bottom: solid 1px rgb(180,180,180);
+ margin-bottom: 1em;
+ text-align: center;
+}
+
+/*
+pre {
+ font-size: 80%;
+ font-weight: bold;
+ line-height: 120%;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ padding-left: 1em;
+ padding-right: 1em;
+ border-style: solid;
+ border-left-width: 1em;
+ border-top-width: thin;
+ border-right-width: thin;
+ border-bottom-width: thin;
+ border-color: #95ABD0;
+ color: #00428C;
+ background-color: #E4E5E7;
+}
+*/
+
+/*
+li pre { margin-left: 0; }
+
+blockquote { font-style: italic }
+
+img { background-color: transparent }
+
+p.copyright { font-size: smaller }
+*/
+
+.center { text-align: center }
+.footnote { font-size: smaller; margin-left: 2em; }
+
+/*
+a img { border-width: 0; border-style: none }
+*/
+
+a:visited { color: navy }
+a:link { color: navy }
+a:hover { color: red; text-decoration: underline }
+a:active { color: red; text-decoration: underline }
+
+a {text-decoration: none}
+.navbar a:link {color: white}
+.navbar a:visited {color: yellow}
+.navbar a:active {color: red}
+.navbar a:hover {color: red}
+
+/*
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+li { margin-left: 0.5em; margin-top: 0.5em; }
+li li { font-size: 85%; font-style: italic }
+li li li { font-size: 85%; font-style: normal }
+*/
+
+div dt
+{
+ margin-left: 0;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ font-weight: bold;
+}
+div dd
+{
+ margin-left: 2em;
+ margin-bottom: 0.5em;
+}
+
+
+/*
+p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
+ margin-left: 1em;
+ margin-right: 1em;
+}
+*/
+
+p.subhead { font-weight: bold; margin-top: 2em; }
+
+.smaller { font-size: smaller }
+.bigger { font-size: 130% }
+
+/*
+td,th { padding: 0.2em }
+*/
+
+ul {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ol {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+
+/*
+ul li {
+ list-style: square;
+ margin: 0.1em 0em 0.6em 0;
+ padding: 0 0 0 0;
+ line-height: 140%;
+}
+
+ol li {
+ margin: 0.1em 0em 0.6em 1.5em;
+ padding: 0 0 0 0px;
+ line-height: 140%;
+ list-style-type: decimal;
+}
+
+li ul li {
+ font-size: 85%;
+ font-style: italic;
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li ul li {
+ font-size: 85%;
+ font-style: normal;
+ list-style-type: circle;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li li ul li {
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+
+li ol li {
+ list-style-type: decimal;
+}
+
+
+li li ol li {
+ list-style-type: decimal;
+}
+*/
+
+/*
+ setting class="outline" on ol or ul makes it behave as an
+ ouline list where blocklevel content in li elements is
+ hidden by default and can be expanded or collapsed with
+ mouse click. Set class="expand" on li to override default
+*/
+
+ol.outline li:hover { cursor: pointer }
+ol.outline li.nofold:hover { cursor: default }
+
+ul.outline li:hover { cursor: pointer }
+ul.outline li.nofold:hover { cursor: default }
+
+ol.outline { list-style:decimal; }
+ol.outline ol { list-style-type:lower-alpha }
+
+ol.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+ul.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+/* for slides with class "title" in table of contents */
+a.titleslide { font-weight: bold; font-style: italic }
+
+/*
+ hide images for work around for save as bug
+ where browsers fail to save images used by CSS
+*/
+img.hidden { display: none; visibility: hidden }
+div.initial_prompt { display: none; visibility: hidden }
+
+ div.slide {
+ visibility: visible;
+ position: inherit;
+ }
+ div.handout {
+ border-top-style: solid;
+ border-top-width: thin;
+ border-top-color: black;
+ }
+
+@media screen {
+ .hidden { display: none; visibility: visible }
+
+ div.slide.hidden { display: block; visibility: visible }
+ div.handout.hidden { display: block; visibility: visible }
+ div.background { display: none; visibility: hidden }
+ body.single_slide div.initial_prompt { display: block; visibility: visible }
+ body.single_slide div.background { display: block; visibility: visible }
+ body.single_slide div.background.hidden { display: none; visibility: hidden }
+ body.single_slide .invisible { visibility: hidden }
+ body.single_slide .hidden { display: none; visibility: hidden }
+ body.single_slide div.slide { position: absolute }
+ body.single_slide div.handout { display: none; visibility: hidden }
+}
+
+@media print {
+ .hidden { display: block; visibility: visible }
+
+/*
+ div.slide pre { font-size: 60%; padding-left: 0.5em; }
+*/
+ div.toolbar { display: none; visibility: hidden; }
+ div.slidy_toc { display: none; visibility: hidden; }
+ div.background { display: none; visibility: hidden; }
+ div.slide { page-break-before: always }
+ /* :first-child isn't reliable for print media */
+ div.slide.first-slide { page-break-before: avoid }
+}
+
+
+/* SJR: AsciiDoc slidy backend tweaks */
+
+ol, ul {
+ margin: 0.8em 1.5em 0.8em 1.8em;
+}
+li > ul, li > ol {
+ margin-top: 0.5em;
+}
+
+.outline > li.folded,
+.outline > li.unfolded {
+ color: #527bbd;
+}
+ul > li{ color: #aaa; }
+ul > li > *, ol > li > * { color: black; }
+
+li {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+/* slidy.js
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+// the slidy object implementation
+var w3c_slidy = {
+ // classify which kind of browser we're running under
+ ns_pos: (typeof window.pageYOffset!='undefined'),
+ khtml: ((navigator.userAgent).indexOf("KHTML") >= 0 ? true : false),
+ opera: ((navigator.userAgent).indexOf("Opera") >= 0 ? true : false),
+ ipad: ((navigator.userAgent).indexOf("iPad") >= 0 ? true : false),
+ iphone: ((navigator.userAgent).indexOf("iPhone") >= 0 ? true : false),
+ ie: (typeof document.all != "undefined" && !this.opera),
+ ie6: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 6") != -1),
+ ie7: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 7") != -1),
+ ie8: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 8") != -1),
+ ie9: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 9") != -1),
+ keyboardless: (this.ipad || this.iphone),
+
+ // are we running as XHTML? (doesn't work on Opera)
+ is_xhtml: /xml/.test(document.contentType),
+
+ slide_number: 0, // integer slide count: 0, 1, 2, ...
+ slide_number_element: null, // element containing slide number
+ slides: [], // set to array of slide div's
+ notes: [], // set to array of handout div's
+ backgrounds: [], // set to array of background div's
+ toolbar: null, // element containing toolbar
+ title: null, // document title
+ last_shown: null, // last incrementally shown item
+ eos: null, // span element for end of slide indicator
+ toc: null, // table of contents
+ outline: null, // outline element with the focus
+ selected_text_len: 0, // length of drag selection on document
+ view_all: 0, // 1 to view all slides + handouts
+ want_toolbar: true, // user preference to show/hide toolbar
+ mouse_click_enabled: true, // enables left click for next slide
+ scroll_hack: 0, // IE work around for position: fixed
+ disable_slide_click: false, // used by clicked anchors
+
+ lang: "en", // updated to language specified by html file
+
+ help_anchor: null, // used for keyboard focus hack in showToolbar()
+ help_page: "http://www.w3.org/Talks/Tools/Slidy2/help/help.html",
+ help_text: "Navigate with mouse click, space bar, Cursor Left/Right, " +
+ "or Pg Up and Pg Dn. Use S and B to change font size.",
+
+ size_index: 0,
+ size_adjustment: 0,
+ sizes: new Array("10pt", "12pt", "14pt", "16pt", "18pt", "20pt",
+ "22pt", "24pt", "26pt", "28pt", "30pt", "32pt"),
+
+ // needed for efficient resizing
+ last_width: 0,
+ last_height: 0,
+
+
+ // Needed for cross browser support for relative width/height on
+ // object elements. The work around is to save width/height attributes
+ // and then to recompute absolute width/height dimensions on resizing
+ objects: [],
+
+ // attach initialiation event handlers
+ set_up: function () {
+ var init = function() { w3c_slidy.init(); };
+ if (typeof window.addEventListener != "undefined")
+ window.addEventListener("load", init, false);
+ else
+ window.attachEvent("onload", init);
+ },
+
+ hide_slides: function () {
+ if (document.body && !w3c_slidy.initialized)
+ document.body.style.visibility = "hidden";
+ else
+ setTimeout(w3c_slidy.hide_slides, 50);
+ },
+
+ // hack to persuade IE to compute correct document height
+ // as needed for simulating fixed positioning of toolbar
+ ie_hack: function () {
+ window.resizeBy(0,-1);
+ window.resizeBy(0, 1);
+ },
+
+ init: function () {
+ //alert("slidy starting test 10");
+ document.body.style.visibility = "visible";
+ w3c_slidy_i18n.init();
+ this.add_toolbar();
+ this.wrap_implicit_slides();
+ this.collect_slides();
+ this.collect_notes();
+ this.collect_backgrounds();
+ this.objects = document.body.getElementsByTagName("object");
+ this.patch_anchors();
+ this.slide_number = this.find_slide_number(location.href);
+ window.offscreenbuffering = true;
+ this.size_adjustment = this.find_size_adjust();
+ this.time_left = this.find_duration();
+ this.hide_image_toolbar(); // suppress IE image toolbar popup
+ this.init_outliner(); // activate fold/unfold support
+ this.title = document.title;
+
+ // work around for opera bug
+ this.is_xhtml = (document.body.tagName == "BODY" ? false : true);
+
+ if (this.slides.length > 0)
+ {
+ var slide = this.slides[this.slide_number];
+
+ if (this.slide_number > 0)
+ {
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ this.set_eos_status(true);
+ }
+ else
+ {
+ this.last_shown = null;
+ this.set_visibility_all_incremental("hidden");
+ this.set_eos_status(!this.next_incremental_item(this.last_shown));
+ }
+
+ this.set_location();
+ this.add_class(this.slides[0], "first-slide");
+ w3c_slidy.show_slide(slide);
+ }
+
+ this.toc = this.table_of_contents();
+
+ this.add_initial_prompt();
+
+ // bind event handlers without interfering with custom page scripts
+ // Tap events behave too weirdly to support clicks reliably on
+ // iPhone and iPad, so exclude these from click handler
+
+ if (!this.keyboardless)
+ this.add_listener(document.body, "click", this.mouse_button_click);
+
+ this.add_listener(document, "keydown", this.key_down);
+ this.add_listener(document, "keypress", this.key_press);
+ this.add_listener(window, "resize", this.resized);
+ this.add_listener(window, "scroll", this.scrolled);
+ this.add_listener(window, "unload", this.unloaded);
+
+ if (!document.body.onclick)
+ document.body.onclick = function () { };
+
+ this.single_slide_view();
+
+ //this.set_location();
+
+ this.resized();
+
+ if (this.ie7)
+ setTimeout(w3c_slidy.ie_hack, 100);
+
+ this.show_toolbar();
+
+ // for back button detection
+ setInterval(function () { w3c_slidy.check_location(); }, 200);
+ w3c_slidy.initialized = true;
+ },
+
+ // create div element with links to each slide
+ table_of_contents: function () {
+ var toc = this.create_element("div");
+ this.add_class(toc, "slidy_toc hidden");
+ //toc.setAttribute("tabindex", "0");
+
+ var heading = this.create_element("div");
+ this.add_class(heading, "toc-heading");
+ heading.innerHTML = "Table of Contents".localize();
+
+ toc.appendChild(heading);
+ var previous = null;
+
+ for (var i = 0; i < this.slides.length; ++i)
+ {
+ var title = this.has_class(this.slides[i], "title");
+ var num = document.createTextNode((i + 1) + ". ");
+
+ toc.appendChild(num);
+
+ var a = this.create_element("a");
+ a.setAttribute("href", "#(" + (i+1) + ")");
+
+ if (title)
+ this.add_class(a, "titleslide");
+
+ var name = document.createTextNode(this.slide_name(i));
+ a.appendChild(name);
+ a.onclick = w3c_slidy.toc_click;
+ a.onkeydown = w3c_slidy.toc_keydown;
+ a.previous = previous;
+
+ if (previous)
+ previous.next = a;
+
+ toc.appendChild(a);
+
+ if (i == 0)
+ toc.first = a;
+
+ if (i < this.slides.length - 1)
+ {
+ var br = this.create_element("br");
+ toc.appendChild(br);
+ }
+
+ previous = a;
+ }
+
+ toc.focus = function () {
+ if (this.first)
+ this.first.focus();
+ }
+
+ toc.onmouseup = w3c_slidy.mouse_button_up;
+
+ toc.onclick = function (e) {
+ e||(e=window.event);
+
+ if (w3c_slidy.selected_text_len <= 0)
+ w3c_slidy.hide_table_of_contents();
+
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ };
+
+ document.body.insertBefore(toc, document.body.firstChild);
+ return toc;
+ },
+
+ is_shown_toc: function () {
+ return !w3c_slidy.has_class(w3c_slidy.toc, "hidden");
+ },
+
+ show_table_of_contents: function () {
+ w3c_slidy.remove_class(w3c_slidy.toc, "hidden");
+ var toc = w3c_slidy.toc;
+ toc.focus();
+
+ if (w3c_slidy.ie7 && w3c_slidy.slide_number == 0)
+ setTimeout(w3c_slidy.ie_hack, 100);
+ },
+
+ hide_table_of_contents: function () {
+ w3c_slidy.add_class(w3c_slidy.toc, "hidden");
+
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ },
+
+ toggle_table_of_contents: function () {
+ if (w3c_slidy.is_shown_toc())
+ w3c_slidy.hide_table_of_contents();
+ else
+ w3c_slidy.show_table_of_contents();
+ },
+
+ // called on clicking toc entry
+ toc_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = w3c_slidy.get_target(e);
+
+ if (target && target.nodeType == 1)
+ {
+ var uri = target.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents(e);
+ if (w3c_slidy.ie7) w3c_slidy.ie_hack();
+ w3c_slidy.stop_propagation(e);
+ return w3c_slidy.cancel(e);
+ },
+
+ // called onkeydown for toc entry
+ toc_keydown: function (event) {
+ var key;
+
+ if (!event)
+ var event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey)
+ return true;
+
+ if (key == 13)
+ {
+ var uri = this.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents();
+
+ if (self.ie7)
+ w3c_slidy.ie_hack();
+
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 40 && this.next)
+ {
+ this.next.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 38 && this.previous)
+ {
+ this.previous.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ return true;
+ },
+
+
+ // ### OBSOLETE ###
+ before_print: function () {
+ this.show_all_slides();
+ this.hide_toolbar();
+ alert("before print");
+ },
+
+ // ### OBSOLETE ###
+ after_print: function () {
+ if (!this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ }
+ alert("after print");
+ },
+
+ // ### OBSOLETE ###
+ print_slides: function () {
+ this.before_print();
+ window.print();
+ this.after_print();
+ },
+
+ // ### OBSOLETE ?? ###
+ toggle_view: function () {
+ if (this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ this.view_all = 0;
+ }
+ else
+ {
+ this.show_all_slides();
+ this.hide_toolbar();
+ this.view_all = 1;
+ }
+ },
+
+ // prepare for printing ### OBSOLETE ###
+ show_all_slides: function () {
+ this.remove_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ },
+
+ // restore after printing ### OBSOLETE ###
+ single_slide_view: function () {
+ this.add_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ },
+
+ // suppress IE's image toolbar pop up
+ hide_image_toolbar: function () {
+ if (!this.ns_pos)
+ {
+ var images = document.getElementsByTagName("IMG");
+
+ for (var i = 0; i < images.length; ++i)
+ images[i].setAttribute("galleryimg", "no");
+ }
+ },
+
+ unloaded: function (e) {
+ //alert("unloaded");
+ },
+
+ // Safari and Konqueror don't yet support getComputedStyle()
+ // and they always reload page when location.href is updated
+ is_KHTML: function () {
+ var agent = navigator.userAgent;
+ return (agent.indexOf("KHTML") >= 0 ? true : false);
+ },
+
+ // find slide name from first h1 element
+ // default to document title + slide number
+ slide_name: function (index) {
+ var name = null;
+ var slide = this.slides[index];
+
+ var heading = this.find_heading(slide);
+
+ if (heading)
+ name = this.extract_text(heading);
+
+ if (!name)
+ name = this.title + "(" + (index + 1) + ")";
+
+ name.replace(/\&/g, "&");
+ name.replace(/\</g, "<");
+ name.replace(/\>/g, ">");
+
+ return name;
+ },
+
+ // find first h1 element in DOM tree
+ find_heading: function (node) {
+ if (!node || node.nodeType != 1)
+ return null;
+
+ if (node.nodeName == "H1" || node.nodeName == "h1")
+ return node;
+
+ var child = node.firstChild;
+
+ while (child)
+ {
+ node = this.find_heading(child);
+
+ if (node)
+ return node;
+
+ child = child.nextSibling;
+ }
+
+ return null;
+ },
+
+ // recursively extract text from DOM tree
+ extract_text: function (node) {
+ if (!node)
+ return "";
+
+ // text nodes
+ if (node.nodeType == 3)
+ return node.nodeValue;
+
+ // elements
+ if (node.nodeType == 1)
+ {
+ node = node.firstChild;
+ var text = "";
+
+ while (node)
+ {
+ text = text + this.extract_text(node);
+ node = node.nextSibling;
+ }
+
+ return text;
+ }
+
+ return "";
+ },
+
+ // find copyright text from meta element
+ find_copyright: function () {
+ var name, content;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "copyright")
+ return content;
+ }
+
+ return null;
+ },
+
+ find_size_adjust: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "font-size-adjustment")
+ return 1 * content;
+ }
+
+ return 1;
+ },
+
+ // <meta name="duration" content="20" /> for 20 minutes
+ find_duration: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "duration")
+ return 60000 * content;
+ }
+
+ return null;
+ },
+
+ replace_by_non_breaking_space: function (str) {
+ for (var i = 0; i < str.length; ++i)
+ str[i] = 160;
+ },
+
+ // ### CHECK ME ### is use of "li" okay for text/html?
+ // for XHTML do we also need to specify namespace?
+ init_outliner: function () {
+ var items = document.getElementsByTagName("li");
+
+ for (var i = 0; i < items.length; ++i)
+ {
+ var target = items[i];
+
+ if (!this.has_class(target.parentNode, "outline"))
+ continue;
+
+ target.onclick = this.outline_click;
+/* ### more work needed for IE6
+ if (!this.ns_pos)
+ {
+ target.onmouseover = this.hover_outline;
+ target.onmouseout = this.unhover_outline;
+ }
+*/
+ if (this.foldable(target))
+ {
+ target.foldable = true;
+ target.onfocus = function () {w3c_slidy.outline = this;};
+ target.onblur = function () {w3c_slidy.outline = null;};
+
+ if (!target.getAttribute("tabindex"))
+ target.setAttribute("tabindex", "0");
+
+ if (this.has_class(target, "expand"))
+ this.unfold(target);
+ else
+ this.fold(target);
+ }
+ else
+ {
+ this.add_class(target, "nofold");
+ target.visible = true;
+ target.foldable = false;
+ }
+ }
+ },
+
+ foldable: function (item) {
+ if (!item || item.nodeType != 1)
+ return false;
+
+ var node = item.firstChild;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node))
+ return true;
+
+ node = node.nextSibling;
+ }
+
+ return false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ fold: function (item) {
+ if (item)
+ {
+ this.remove_class(item, "unfolded");
+ this.add_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.add_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ unfold: function (item) {
+ if (item)
+ {
+ this.add_class(item, "unfolded");
+ this.remove_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.remove_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = true;
+ },
+
+ outline_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var rightclick = false;
+ var target = w3c_slidy.get_target(e);
+
+ while (target && target.visible == undefined)
+ target = target.parentNode;
+
+ if (!target)
+ return true;
+
+ if (e.which)
+ rightclick = (e.which == 3);
+ else if (e.button)
+ rightclick = (e.button == 2);
+
+ if (!rightclick && target.visible != undefined)
+ {
+ if (target.foldable)
+ {
+ if (target.visible)
+ w3c_slidy.fold(target);
+ else
+ w3c_slidy.unfold(target);
+ }
+
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ }
+
+ return false;
+ },
+
+ add_initial_prompt: function () {
+ var prompt = this.create_element("div");
+ prompt.setAttribute("class", "initial_prompt");
+
+ var p1 = this.create_element("p");
+ prompt.appendChild(p1);
+ p1.setAttribute("class", "help");
+
+ if (this.keyboardless)
+ p1.innerHTML = "Tap footer to move to next slide";
+ else
+ p1.innerHTML = "Space or Right Arrow to move to next " +
+ "slide, click help below for more details";
+
+ this.add_listener(prompt, "click", function (e) {
+ document.body.removeChild(prompt);
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ });
+
+ document.body.appendChild(prompt);
+ this.initial_prompt = prompt;
+ setTimeout(function() {document.body.removeChild(prompt);}, 5000);
+ },
+
+ add_toolbar: function () {
+ var counter, page;
+
+ this.toolbar = this.create_element("div");
+ this.toolbar.setAttribute("class", "toolbar");
+
+ // a reasonably behaved browser
+ if (this.ns_pos || !this.ie6)
+ {
+ var right = this.create_element("div");
+ right.setAttribute("style", "float: right; text-align: right");
+
+ counter = this.create_element("span")
+ counter.innerHTML = "slide".localize() + " n/m";
+ right.appendChild(counter);
+ this.toolbar.appendChild(right);
+
+ var left = this.create_element("div");
+ left.setAttribute("style", "text-align: left");
+
+ // global end of slide indicator
+ this.eos = this.create_element("span");
+ this.eos.innerHTML = "* ";
+ left.appendChild(this.eos);
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ left.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ left.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:w3c_slidy.toggle_table_of_contents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ left.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ left.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.className = "copyright";
+ span.innerHTML = copyright;
+ left.appendChild(span);
+ }
+
+ this.toolbar.setAttribute("tabindex", "0");
+ this.toolbar.appendChild(left);
+ }
+ else // IE6 so need to work around its poor CSS support
+ {
+ this.toolbar.style.position = (this.ie7 ? "fixed" : "absolute");
+ this.toolbar.style.zIndex = "200";
+ this.toolbar.style.width = "99.9%";
+ this.toolbar.style.height = "1.2em";
+ this.toolbar.style.top = "auto";
+ this.toolbar.style.bottom = "0";
+ this.toolbar.style.left = "0";
+ this.toolbar.style.right = "0";
+ this.toolbar.style.textAlign = "left";
+ this.toolbar.style.fontSize = "60%";
+ this.toolbar.style.color = "red";
+ this.toolbar.borderWidth = 0;
+ this.toolbar.className = "toolbar";
+ this.toolbar.style.background = "rgb(240,240,240)";
+
+ // would like to have help text left aligned
+ // and page counter right aligned, floating
+ // div's don't work, so instead use nested
+ // absolutely positioned div's.
+
+ var sp = this.create_element("span");
+ sp.innerHTML = " * ";
+ this.toolbar.appendChild(sp);
+ this.eos = sp; // end of slide indicator
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ this.toolbar.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:toggleTableOfContents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ this.toolbar.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.innerHTML = copyright;
+ span.style.color = "black";
+ span.style.marginLeft = "0.5em";
+ this.toolbar.appendChild(span);
+ }
+
+ counter = this.create_element("div")
+ counter.style.position = "absolute";
+ counter.style.width = "auto"; //"20%";
+ counter.style.height = "1.2em";
+ counter.style.top = "auto";
+ counter.style.bottom = 0;
+ counter.style.right = "0";
+ counter.style.textAlign = "right";
+ counter.style.color = "red";
+ counter.style.background = "rgb(240,240,240)";
+
+ counter.innerHTML = "slide".localize() + " n/m";
+ this.toolbar.appendChild(counter);
+ }
+
+ // ensure that click isn't passed through to the page
+ this.toolbar.onclick =
+ function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = e.target;
+
+ if (!target && e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target && target.nodeType == 3)
+ target = target.parentNode;
+
+ w3c_slidy.stop_propagation(e);
+
+ if (target && target.nodeName.toLowerCase() != "a")
+ w3c_slidy.mouse_button_click(e);
+ };
+
+ this.slide_number_element = counter;
+ this.set_eos_status(false);
+ document.body.appendChild(this.toolbar);
+ },
+
+ // wysiwyg editors make it hard to use div elements
+ // e.g. amaya loses the div when you copy and paste
+ // this function wraps div elements around implicit
+ // slides which start with an h1 element and continue
+ // up to the next heading or div element
+ wrap_implicit_slides: function () {
+ var i, heading, node, next, div;
+ var headings = document.getElementsByTagName("h1");
+
+ if (!headings)
+ return;
+
+ for (i = 0; i < headings.length; ++i)
+ {
+ heading = headings[i];
+
+ if (heading.parentNode != document.body)
+ continue;
+
+ node = heading.nextSibling;
+
+ div = document.createElement("div");
+ this.add_class(div, "slide");
+ document.body.replaceChild(div, heading);
+ div.appendChild(heading);
+
+ while (node)
+ {
+ if (node.nodeType == 1 && // an element
+ (node.nodeName == "H1" ||
+ node.nodeName == "h1" ||
+ node.nodeName == "DIV" ||
+ node.nodeName == "div"))
+ break;
+
+ next = node.nextSibling;
+ node = document.body.removeChild(node);
+ div.appendChild(node);
+ node = next;
+ }
+ }
+ },
+
+// return new array of all slides
+ collect_slides: function () {
+ var slides = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "slide"))
+ {
+ // add slide to collection
+ slides[slides.length] = div;
+
+ // hide each slide as it is found
+ this.add_class(div, "hidden");
+
+ // add dummy <br/> at end for scrolling hack
+ var node1 = document.createElement("br");
+ div.appendChild(node1);
+ var node2 = document.createElement("br");
+ div.appendChild(node2);
+ }
+ else if (this.has_class(div, "background"))
+ { // work around for Firefox SVG reload bug
+ // which otherwise replaces 1st SVG graphic with 2nd
+ div.style.display = "block";
+ }
+ }
+
+ this.slides = slides;
+ },
+
+ // return new array of all <div class="handout">
+ collect_notes: function () {
+ var notes = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "handout"))
+ {
+ // add note to collection
+ notes[notes.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.notes = notes;
+ },
+
+ // return new array of all <div class="background">
+ // including named backgrounds e.g. class="background titlepage"
+ collect_backgrounds: function () {
+ var backgrounds = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "background"))
+ {
+ // add background to collection
+ backgrounds[backgrounds.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.backgrounds = backgrounds;
+ },
+
+ // set click handlers on all anchors
+ patch_anchors: function () {
+ var self = w3c_slidy;
+ var handler = function (event) {
+ // compare this.href with location.href
+ // for link to another slide in this doc
+
+ if (self.page_address(this.href) == self.page_address(location.href))
+ {
+ // yes, so find new slide number
+ var newslidenum = self.find_slide_number(this.href);
+
+ if (newslidenum != self.slide_number)
+ {
+ var slide = self.slides[self.slide_number];
+ self.hide_slide(slide);
+ self.slide_number = newslidenum;
+ slide = self.slides[self.slide_number];
+ self.show_slide(slide);
+ self.set_location();
+ }
+ }
+ else if (this.target == null)
+ location.href = this.href;
+
+ this.blur();
+ self.disable_slide_click = true;
+ };
+
+ var anchors = document.body.getElementsByTagName("a");
+
+ for (var i = 0; i < anchors.length; ++i)
+ {
+ if (window.addEventListener)
+ anchors[i].addEventListener("click", handler, false);
+ else
+ anchors[i].attachEvent("onclick", handler);
+ }
+ },
+
+ // ### CHECK ME ### see which functions are invoked via setTimeout
+ // either directly or indirectly for use of w3c_slidy vs this
+ show_slide_number: function () {
+ var timer = w3c_slidy.get_timer();
+ w3c_slidy.slide_number_element.innerHTML = timer + "slide".localize() + " " +
+ (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length;
+ },
+
+ // every 200mS check if the location has been changed as a
+ // result of the user activating the Back button/menu item
+ // doesn't work for Opera < 9.5
+ check_location: function () {
+ var hash = location.hash;
+
+ if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#"))
+ w3c_slidy.goto_slide(0);
+ else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")")
+ {
+ var num = parseInt(location.hash.substr(2));
+
+ if (!isNaN(num))
+ w3c_slidy.goto_slide(num-1);
+ }
+
+ if (w3c_slidy.time_left && w3c_slidy.slide_number > 0)
+ {
+ w3c_slidy.show_slide_number();
+
+ if (w3c_slidy.time_left > 0)
+ w3c_slidy.time_left -= 200;
+ }
+ },
+
+ get_timer: function () {
+ var timer = "";
+ if (w3c_slidy.time_left)
+ {
+ var mins, secs;
+ secs = Math.floor(w3c_slidy.time_left/1000);
+ mins = Math.floor(secs / 60);
+ secs = secs % 60;
+ timer = (mins ? mins+"m" : "") + secs + "s ";
+ }
+
+ return timer;
+ },
+
+ // this doesn't push location onto history stack for IE
+ // for which a hidden iframe hack is needed: load page into
+ // the iframe with script that set's parent's location.hash
+ // but that won't work for standalone use unless we can
+ // create the page dynamically via a javascript: URL
+ set_location: function () {
+ var uri = w3c_slidy.page_address(location.href);
+ var hash = "#(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (w3c_slidy.slide_number >= 0)
+ uri = uri + hash;
+
+ if (w3c_slidy.ie && !w3c_slidy.ie8)
+ w3c_slidy.push_hash(hash);
+
+ if (uri != location.href) // && !khtml
+ location.href = uri;
+
+ if (this.khtml)
+ hash = "(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (!this.ie && location.hash != hash && location.hash != "")
+ location.hash = hash;
+
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide_number();
+ },
+
+ page_address: function (uri) {
+ var i = uri.indexOf("#");
+
+ if (i < 0)
+ i = uri.indexOf("%23");
+
+ // check if anchor is entire page
+
+ if (i < 0)
+ return uri; // yes
+
+ return uri.substr(0, i);
+ },
+
+ // only used for IE6 and IE7
+ on_frame_loaded: function (hash) {
+ location.hash = hash;
+ var uri = w3c_slidy.page_address(location.href);
+ location.href = uri + hash;
+ },
+
+ // history hack with thanks to Bertrand Le Roy
+ push_hash: function (hash) {
+ if (hash == "") hash = "#(1)";
+ window.location.hash = hash;
+
+ var doc = document.getElementById("historyFrame").contentWindow.document;
+ doc.open("javascript:'<html></html>'");
+ // PWL modified this string literal to break the close script tag
+ // which otherwise gets parsed when incorporated
+ doc.write("<html><head><script type=\"text/javascript\">window.parent.w3c_slidy.on_frame_loaded('"+
+ (hash) + "');</" + "script></head><body>hello mum</body></html>");
+ doc.close();
+ },
+
+ // find current slide based upon location
+ // first find target anchor and then look
+ // for associated div element enclosing it
+ // finally map that to slide number
+ find_slide_number: function (uri) {
+ // first get anchor from page location
+
+ var i = uri.indexOf("#");
+
+ // check if anchor is entire page
+ if (i < 0)
+ return 0; // yes
+
+ var anchor = unescape(uri.substr(i+1));
+
+ // now use anchor as XML ID to find target
+ var target = document.getElementById(anchor);
+
+ if (!target)
+ {
+ // does anchor look like "(2)" for slide 2 ??
+ // where first slide is (1)
+ var re = /\((\d)+\)/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // accept [2] for backwards compatibility
+ re = /\[(\d)+\]/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // oh dear unknown anchor
+ return 0;
+ }
+
+ // search for enclosing slide
+
+ while (true)
+ {
+ // browser coerces html elements to uppercase!
+ if (target.nodeName.toLowerCase() == "div" &&
+ this.has_class(target, "slide"))
+ {
+ // found the slide element
+ break;
+ }
+
+ // otherwise try parent element if any
+
+ target = target.parentNode;
+
+ if (!target)
+ {
+ return 0; // no luck!
+ }
+ };
+
+ for (i = 0; i < slides.length; ++i)
+ {
+ if (slides[i] == target)
+ return i; // success
+ }
+
+ // oh dear still no luck
+ return 0;
+ },
+
+ previous_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null)
+ {
+ w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown);
+ w3c_slidy.set_eos_status(false);
+ }
+ else if (w3c_slidy.slide_number > 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_location();
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ next_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide, last = w3c_slidy.last_shown;
+
+ if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1)
+ w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown);
+
+ if ((!incremental || w3c_slidy.last_shown == null) &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number + 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+ else if (!w3c_slidy.last_shown)
+ {
+ if (last && incremental)
+ w3c_slidy.last_shown = last;
+ }
+
+ w3c_slidy.set_location();
+
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ // to first slide with nothing revealed
+ // i.e. state at start of presentation
+ first_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if (w3c_slidy.slide_number != 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = 0;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_eos_status(
+ !w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.set_location();
+ }
+ },
+
+ // goto last slide with everything revealed
+ // i.e. state at end of presentation
+ last_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ w3c_slidy.last_shown = null; //revealNextItem(lastShown);
+
+ if (w3c_slidy.last_shown == null &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.slides.length - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+
+ w3c_slidy.show_slide(slide);
+ }
+ else
+ {
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ }
+
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.set_location();
+ }
+ },
+
+
+ // ### check this and consider add/remove class
+ set_eos_status: function (state) {
+ if (this.eos)
+ this.eos.style.color = (state ? "rgb(240,240,240)" : "red");
+ },
+
+ // first slide is 0
+ goto_slide: function (num) {
+ //alert("going to slide " + (num+1));
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = num;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide(slide);
+ w3c_slidy.show_slide_number();
+ },
+
+
+ show_slide: function (slide) {
+ this.sync_background(slide);
+ window.scrollTo(0,0);
+ this.remove_class(slide, "hidden");
+ },
+
+ hide_slide: function (slide) {
+ this.add_class(slide, "hidden");
+ },
+
+ // show just the backgrounds pertinent to this slide
+ // when slide background-color is transparent
+ // this should now work with rgba color values
+ sync_background: function (slide) {
+ var background;
+ var bgColor;
+
+ if (slide.currentStyle)
+ bgColor = slide.currentStyle["backgroundColor"];
+ else if (document.defaultView)
+ {
+ var styles = document.defaultView.getComputedStyle(slide,null);
+
+ if (styles)
+ bgColor = styles.getPropertyValue("background-color");
+ else // broken implementation probably due Safari or Konqueror
+ {
+ //alert("defective implementation of getComputedStyle()");
+ bgColor = "transparent";
+ }
+ }
+ else
+ bgColor == "transparent";
+
+ if (bgColor == "transparent" ||
+ bgColor.indexOf("rgba") >= 0 ||
+ bgColor.indexOf("opacity") >= 0)
+ {
+ var slideClass = this.get_class_list(slide);
+
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+
+ var bgClass = this.get_class_list(background);
+
+ if (this.matching_background(slideClass, bgClass))
+ this.remove_class(background, "hidden");
+ else
+ this.add_class(background, "hidden");
+ }
+ }
+ else // forcibly hide all backgrounds
+ this.hide_backgrounds();
+ },
+
+ hide_backgrounds: function () {
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+ this.add_class(background, "hidden");
+ }
+ },
+
+ // compare classes for slide and background
+ matching_background: function (slideClass, bgClass) {
+ var i, count, pattern, result;
+
+ // define pattern as regular expression
+ pattern = /\w+/g;
+
+ // check background class names
+ result = bgClass.match(pattern);
+
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (result[i] == "background")
+ continue;
+
+ ++count;
+ }
+
+ if (count == 0) // default match
+ return true;
+
+ // check for matches and place result in array
+ result = slideClass.match(pattern);
+
+ // now check if desired name is present for background
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (this.has_token(bgClass, result[i]))
+ return true;
+ }
+
+ return false;
+ },
+
+ resized: function () {
+ var width = 0;
+
+ if ( typeof( window.innerWidth ) == 'number' )
+ width = window.innerWidth; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientWidth)
+ width = document.documentElement.clientWidth; // IE6
+ else if (document.body && document.body.clientWidth)
+ width = document.body.clientWidth; // IE4
+
+ var height = 0;
+
+ if ( typeof( window.innerHeight ) == 'number' )
+ height = window.innerHeight; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientHeight)
+ height = document.documentElement.clientHeight; // IE6
+ else if (document.body && document.body.clientHeight)
+ height = document.body.clientHeight; // IE4
+
+ if (height && (width/height > 1.05*1024/768))
+ {
+ width = height * 1024.0/768;
+ }
+
+ // IE fires onresize even when only font size is changed!
+ // so we do a check to avoid blocking < and > actions
+ if (width != w3c_slidy.last_width || height != w3c_slidy.last_height)
+ {
+ if (width >= 1100)
+ w3c_slidy.size_index = 5; // 4
+ else if (width >= 1000)
+ w3c_slidy.size_index = 4; // 3
+ else if (width >= 800)
+ w3c_slidy.size_index = 3; // 2
+ else if (width >= 600)
+ w3c_slidy.size_index = 2; // 1
+ else if (width)
+ w3c_slidy.size_index = 0;
+
+ // add in font size adjustment from meta element e.g.
+ // <meta name="font-size-adjustment" content="-2" />
+ // useful when slides have too much content ;-)
+
+ if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment &&
+ w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length)
+ w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment;
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ w3c_slidy.adjust_object_dimensions(width, height);
+
+ if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index])
+ {
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ }
+
+ w3c_slidy.last_width = width;
+ w3c_slidy.last_height = height;
+
+ // force reflow to work around Mozilla bug
+ if (w3c_slidy.ns_pos)
+ {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ }
+
+ // force correct positioning of toolbar
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ scrolled: function () {
+ if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset();
+ // hide toolbar
+ w3c_slidy.toolbar.style.display = "none";
+
+ // make it reappear later
+ if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all)
+ {
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000);
+ w3c_slidy.scrollhack = 1;
+ }
+ }
+ },
+
+ hide_toolbar: function () {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden");
+ window.focus();
+ },
+
+ // used to ensure IE refreshes toolbar in correct position
+ refresh_toolbar: function (interval) {
+ if (!w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hide_toolbar();
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, interval);
+ }
+ },
+
+ // restores toolbar after short delay
+ show_toolbar: function () {
+ if (w3c_slidy.want_toolbar)
+ {
+ w3c_slidy.toolbar.style.display = "block";
+
+ if (!w3c_slidy.ns_pos)
+ {
+ // adjust position to allow for scrolling
+ var xoffset = w3c_slidy.scroll_x_offset();
+ w3c_slidy.toolbar.style.left = xoffset;
+ w3c_slidy.toolbar.style.right = xoffset;
+
+ // determine vertical scroll offset
+ //var yoffset = scrollYOffset();
+
+ // bottom is doc height - window height - scroll offset
+ //var bottom = documentHeight() - lastHeight - yoffset
+
+ //if (yoffset > 0 || documentHeight() > lastHeight)
+ // bottom += 16; // allow for height of scrollbar
+
+ w3c_slidy.toolbar.style.bottom = 0; //bottom;
+ }
+
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden");
+ }
+
+ w3c_slidy.scrollhack = 0;
+
+
+ // set the keyboard focus to the help link on the
+ // toolbar to ensure that document has the focus
+ // IE doesn't always work with window.focus()
+ // and this hack has benefit of Enter for help
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ },
+
+// invoked via F key
+ toggle_toolbar: function () {
+ if (!w3c_slidy.view_all)
+ {
+ if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden"))
+ {
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 1;
+ }
+ else
+ {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 0;
+ }
+ }
+ },
+
+ scroll_x_offset: function () {
+ if (window.pageXOffset)
+ return self.pageXOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollLeft)
+ return document.documentElement.scrollLeft;
+
+ if (document.body)
+ return document.body.scrollLeft;
+
+ return 0;
+ },
+
+ scroll_y_offset: function () {
+ if (window.pageYOffset)
+ return self.pageYOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollTop)
+ return document.documentElement.scrollTop;
+
+ if (document.body)
+ return document.body.scrollTop;
+
+ return 0;
+ },
+
+ // looking for a way to determine height of slide content
+ // the slide itself is set to the height of the window
+ optimize_font_size: function () {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ //var dh = documentHeight(); //getDocHeight(document);
+ var dh = slide.scrollHeight;
+ var wh = getWindowHeight();
+ var u = 100 * dh / wh;
+
+ alert("window utilization = " + u + "% (doc "
+ + dh + " win " + wh + ")");
+ },
+
+ // from document object
+ get_doc_height: function (doc) {
+ if (!doc)
+ doc = document;
+
+ if (doc && doc.body && doc.body.offsetHeight)
+ return doc.body.offsetHeight; // ns/gecko syntax
+
+ if (doc && doc.body && doc.body.scrollHeight)
+ return doc.body.scrollHeight;
+
+ alert("couldn't determine document height");
+ },
+
+ get_window_height: function () {
+ if ( typeof( window.innerHeight ) == 'number' )
+ return window.innerHeight; // Non IE browser
+
+ if (document.documentElement && document.documentElement.clientHeight)
+ return document.documentElement.clientHeight; // IE6
+
+ if (document.body && document.body.clientHeight)
+ return document.body.clientHeight; // IE4
+ },
+
+ document_height: function () {
+ var sh, oh;
+
+ sh = document.body.scrollHeight;
+ oh = document.body.offsetHeight;
+
+ if (sh && oh)
+ {
+ return (sh > oh ? sh : oh);
+ }
+
+ // no idea!
+ return 0;
+ },
+
+ smaller: function () {
+ if (w3c_slidy.size_index > 0)
+ {
+ --w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ bigger: function () {
+ if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1)
+ {
+ ++w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ // with thanks to Ivan Herman for the suggestion
+ adjust_object_dimensions: function (width, height) {
+ for( var i = 0; i < w3c_slidy.objects.length; i++ )
+ {
+ var obj = this.objects[i];
+ var mimeType = obj.getAttribute("type");
+
+ if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash")
+ {
+ if ( !obj.initialWidth )
+ obj.initialWidth = obj.getAttribute("width");
+
+ if ( !obj.initialHeight )
+ obj.initialHeight = obj.getAttribute("height");
+
+ if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" )
+ {
+ var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1));
+ var newW = width * (w/100.0);
+ obj.setAttribute("width",newW);
+ }
+
+ if ( obj.initialHeight &&
+ obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" )
+ {
+ var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1));
+ var newH = height * (h/100.0);
+ obj.setAttribute("height", newH);
+ }
+ }
+ }
+ },
+
+ // needed for Opera to inhibit default behavior
+ // since Opera delivers keyPress even if keyDown
+ // was cancelled
+ key_press: function (event) {
+ if (!event)
+ event = window.event;
+
+ if (!w3c_slidy.key_wanted)
+ return w3c_slidy.cancel(event);
+
+ return true;
+ },
+
+ // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
+ key_down: function (event) {
+ var key;
+
+ w3c_slidy.key_wanted = true;
+
+ if (!event)
+ event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey || event.metaKey)
+ return true;
+
+ // dismiss table of contents if visible
+ if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40)
+ {
+ w3c_slidy.hide_table_of_contents();
+
+ if (key == 27 || key == 84 || key == 67)
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 34) // Page Down
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.next_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 33) // Page Up
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.previous_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 32) // space bar
+ {
+ w3c_slidy.next_slide(true);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 37) // Left arrow
+ {
+ w3c_slidy.previous_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 36) // Home
+ {
+ w3c_slidy.first_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 35) // End
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 39) // Right arrow
+ {
+ w3c_slidy.next_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 13) // Enter
+ {
+ if (w3c_slidy.outline)
+ {
+ if (w3c_slidy.outline.visible)
+ w3c_slidy.fold(w3c_slidy.outline);
+ else
+ w3c_slidy.unfold(w3c_slidy.outline);
+
+ return w3c_slidy.cancel(event);
+ }
+ }
+ else if (key == 188) // < for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 190) // > for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 189 || key == 109) // - for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 187 || key == 191 || key == 107) // = + for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 83) // S for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 66) // B for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 90) // Z for last slide
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 70) // F for toggle toolbar
+ {
+ w3c_slidy.toggle_toolbar();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 65) // A for toggle view single/all slides
+ {
+ w3c_slidy.toggle_view();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 75) // toggle action of left click for next page
+ {
+ w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled;
+ var alert_msg = (w3c_slidy.mouse_click_enabled ?
+ "enabled" : "disabled") + " mouse click advance";
+
+ alert(alert_msg.localize());
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 84 || key == 67) // T or C for table of contents
+ {
+ if (w3c_slidy.toc)
+ w3c_slidy.toggle_table_of_contents();
+
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 72) // H for help
+ {
+ window.location = w3c_slidy.help_page;
+ return w3c_slidy.cancel(event);
+ }
+ //else alert("key code is "+ key);
+
+ return true;
+ },
+
+ // safe for both text/html and application/xhtml+xml
+ create_element: function (name) {
+ if (this.xhtml && (typeof document.createElementNS != 'undefined'))
+ return document.createElementNS("http://www.w3.org/1999/xhtml", name)
+
+ return document.createElement(name);
+ },
+
+ get_element_style: function (elem, IEStyleProp, CSSStyleProp) {
+ if (elem.currentStyle)
+ {
+ return elem.currentStyle[IEStyleProp];
+ }
+ else if (window.getComputedStyle)
+ {
+ var compStyle = window.getComputedStyle(elem, "");
+ return compStyle.getPropertyValue(CSSStyleProp);
+ }
+ return "";
+ },
+
+ // the string str is a whitespace separated list of tokens
+ // test if str contains a particular token, e.g. "slide"
+ has_token: function (str, token) {
+ if (str)
+ {
+ // define pattern as regular expression
+ var pattern = /\w+/g;
+
+ // check for matches
+ // place result in array
+ var result = str.match(pattern);
+
+ // now check if desired token is present
+ for (var i = 0; i < result.length; i++)
+ {
+ if (result[i] == token)
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ get_class_list: function (element) {
+ if (typeof element.className != 'undefined')
+ return element.className;
+
+ return element.getAttribute("class");
+ },
+
+ has_class: function (element, name) {
+ if (element.nodeType != 1)
+ return false;
+
+ var regexp = new RegExp("(^| )" + name + "\W*");
+
+ if (typeof element.className != 'undefined')
+ return regexp.test(element.className);
+
+ return regexp.test(element.getAttribute("class"));
+ },
+
+ remove_class: function (element, name) {
+ var regexp = new RegExp("(^| )" + name + "\W*");
+ var clsval = "";
+
+ if (typeof element.className != 'undefined')
+ {
+ clsval = element.className;
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.className = clsval;
+ }
+ }
+ else
+ {
+ clsval = element.getAttribute("class");
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ add_class: function (element, name) {
+ if (!this.has_class(element, name))
+ {
+ if (typeof element.className != 'undefined')
+ element.className += " " + name;
+ else
+ {
+ var clsval = element.getAttribute("class");
+ clsval = clsval ? clsval + " " + name : name;
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ // HTML elements that can be used with class="incremental"
+ // note that you can also put the class on containers like
+ // up, ol, dl, and div to make their contents appear
+ // incrementally. Upper case is used since this is what
+ // browsers report for HTML node names (text/html).
+ incremental_elements: null,
+ okay_for_incremental: function (name) {
+ if (!this.incremental_elements)
+ {
+ var inclist = new Array();
+ inclist["p"] = true;
+ inclist["pre"] = true;
+ inclist["li"] = true;
+ inclist["blockquote"] = true;
+ inclist["dt"] = true;
+ inclist["dd"] = true;
+ inclist["h2"] = true;
+ inclist["h3"] = true;
+ inclist["h4"] = true;
+ inclist["h5"] = true;
+ inclist["h6"] = true;
+ inclist["span"] = true;
+ inclist["address"] = true;
+ inclist["table"] = true;
+ inclist["tr"] = true;
+ inclist["th"] = true;
+ inclist["td"] = true;
+ inclist["img"] = true;
+ inclist["object"] = true;
+ this.incremental_elements = inclist;
+ }
+ return this.incremental_elements[name.toLowerCase()];
+ },
+
+ next_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.next_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1) // ELEMENT
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ previous_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.previous_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1)
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ // set visibility for all elements on current slide with
+ // a parent element with attribute class="incremental"
+ set_visibility_all_incremental: function (value) {
+ var node = this.next_incremental_item(null);
+
+ if (value == "hidden")
+ {
+ while (node)
+ {
+ w3c_slidy.add_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ else // value == "visible"
+ {
+ while (node)
+ {
+ w3c_slidy.remove_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ },
+
+ // reveal the next hidden item on the slide
+ // node is null or the node that was last revealed
+ reveal_next_item: function (node) {
+ node = w3c_slidy.next_incremental_item(node);
+
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.remove_class(node, "invisible");
+
+ return node;
+ },
+
+ // exact inverse of revealNextItem(node)
+ hide_previous_item: function (node) {
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.add_class(node, "invisible");
+
+ return this.previous_incremental_item(node);
+ },
+
+ // left to right traversal of root's content
+ next_node: function (root, node) {
+ if (node == null)
+ return root.firstChild;
+
+ if (node.firstChild)
+ return node.firstChild;
+
+ if (node.nextSibling)
+ return node.nextSibling;
+
+ for (;;)
+ {
+ node = node.parentNode;
+
+ if (!node || node == root)
+ break;
+
+ if (node && node.nextSibling)
+ return node.nextSibling;
+ }
+
+ return null;
+ },
+
+ // right to left traversal of root's content
+ previous_node: function (root, node) {
+ if (node == null)
+ {
+ node = root.lastChild;
+
+ if (node)
+ {
+ while (node.lastChild)
+ node = node.lastChild;
+ }
+
+ return node;
+ }
+
+ if (node.previousSibling)
+ {
+ node = node.previousSibling;
+
+ while (node.lastChild)
+ node = node.lastChild;
+
+ return node;
+ }
+
+ if (node.parentNode != root)
+ return node.parentNode;
+
+ return null;
+ },
+
+ previous_sibling_element: function (el) {
+ el = el.previousSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.previousSibling;
+
+ return el;
+ },
+
+ next_sibling_element: function (el) {
+ el = el.nextSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.nextSibling;
+
+ return el;
+ },
+
+ first_child_element: function (el) {
+ var node;
+
+ for (node = el.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1)
+ break;
+ }
+
+ return node;
+ },
+
+ first_tag: function (element, tag) {
+ var node;
+
+ if (!this.is_xhtml)
+ tag = tag.toUpperCase();
+
+ for (node = element.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1 && node.nodeName == tag)
+ break;
+ }
+
+ return node;
+ },
+
+ hide_selection: function () {
+ if (window.getSelection) // Firefox, Chromium, Safari, Opera
+ {
+ var selection = window.getSelection();
+
+ if (selection.rangeCount > 0)
+ {
+ var range = selection.getRangeAt(0);
+ range.collapse (false);
+ }
+ }
+ else // Internet Explorer
+ {
+ var textRange = document.selection.createRange ();
+ textRange.collapse (false);
+ }
+ },
+
+ get_selected_text: function () {
+ try
+ {
+ if (window.getSelection)
+ return window.getSelection().toString();
+
+ if (document.getSelection)
+ return document.getSelection().toString();
+
+ if (document.selection)
+ return document.selection.createRange().text;
+ }
+ catch (e)
+ {
+ }
+
+ return "";
+ },
+
+ // make note of length of selected text
+ // as this evaluates to zero in click event
+ mouse_button_up: function (e) {
+ w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length;
+ },
+
+ // right mouse button click is reserved for context menus
+ // it is more reliable to detect rightclick than leftclick
+ mouse_button_click: function (e) {
+ var rightclick = false;
+ var leftclick = false;
+ var middleclick = false;
+ var target;
+
+ if (!e)
+ var e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target.nodeType == 3)
+ target = target.parentNode;
+
+ if (e.which) // all browsers except IE
+ {
+ leftclick = (e.which == 1);
+ middleclick = (e.which == 2);
+ rightclick = (e.which == 3);
+ }
+ else if (e.button)
+ {
+ // Konqueror gives 1 for left, 4 for middle
+ // IE6 gives 0 for left and not 1 as I expected
+
+ if (e.button == 4)
+ middleclick = true;
+
+ // all browsers agree on 2 for right button
+ rightclick = (e.button == 2);
+ }
+ else leftclick = true;
+/*
+ alert("you clicked over a " + target.nodeName + " element\n" +
+ "w3c_slidy.mouse_click_enabled = " + w3c_slidy.mouse_click_enabled + "\n" +
+ "leftclick = " + leftclick + "\n" +
+ "selected text length = " + w3c_slidy.selected_text_len);
+ //alert("selected text length = " + w3c_slidy.selected_text_len);
+*/
+ if (w3c_slidy.selected_text_len > 0)
+ {
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+
+ // dismiss table of contents
+ w3c_slidy.hide_table_of_contents();
+
+ // check if target is something that probably want's clicks
+ // e.g. a, embed, object, input, textarea, select, option
+ var tag = target.nodeName.toLowerCase();
+
+ if (w3c_slidy.mouse_click_enabled && leftclick &&
+ tag != "a" &&
+ tag != "embed" &&
+ tag != "object" &&
+ tag != "video" &&
+ tag != "input" &&
+ tag != "textarea" &&
+ tag != "select" &&
+ tag != "option" &&
+ !target.onclick)
+ {
+ w3c_slidy.next_slide(true);
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+ },
+
+ get_key: function (e)
+ {
+ var key;
+
+ // kludge around NS/IE differences
+ if (typeof window.event != "undefined")
+ key = window.event.keyCode;
+ else if (e.which)
+ key = e.which;
+
+ return key;
+ },
+
+ get_target: function (e) {
+ var target;
+
+ if (!e)
+ e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ if (target.nodeType != 1)
+ target = target.parentNode;
+
+ return target;
+ },
+
+ // does display property provide correct defaults?
+ is_block: function (elem) {
+ var tag = elem.nodeName.toLowerCase();
+
+ return tag == "ol" || tag == "ul" || tag == "p" ||
+ tag == "li" || tag == "table" || tag == "pre" ||
+ tag == "h1" || tag == "h2" || tag == "h3" ||
+ tag == "h4" || tag == "h5" || tag == "h6" ||
+ tag == "blockquote" || tag == "address";
+ },
+
+ add_listener: function (element, event, handler) {
+ if (window.addEventListener)
+ element.addEventListener(event, handler, false);
+ else
+ element.attachEvent("on"+event, handler);
+ },
+
+ // used to prevent event propagation from field controls
+ stop_propagation: function (event) {
+ event = event ? event : window.event;
+ event.cancelBubble = true; // for IE
+
+ if (event.stopPropagation)
+ event.stopPropagation();
+
+ return true;
+ },
+
+ cancel: function (event) {
+ if (event)
+ {
+ event.cancel = true;
+ event.returnValue = false;
+
+ if (event.preventDefault)
+ event.preventDefault();
+ }
+
+ w3c_slidy.key_wanted = false;
+ return false;
+ }
+};
+
+// for each language define an associative array
+// and also the help text which is longer
+
+var w3c_slidy_i18n = {
+ strings_es: {
+ "slide":"pág.",
+ "help?":"Ayuda",
+ "contents?":"Índice",
+ "table of contents":"tabla de contenidos",
+ "Table of Contents":"Tabla de Contenidos",
+ "restart presentation":"Reiniciar presentación",
+ "restart?":"Inicio"
+ },
+ help_es:
+ "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
+ "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
+
+ strings_ca: {
+ "slide":"pàg..",
+ "help?":"Ajuda",
+ "contents?":"Índex",
+ "table of contents":"taula de continguts",
+ "Table of Contents":"Taula de Continguts",
+ "restart presentation":"Reiniciar presentació",
+ "restart?":"Inici"
+ },
+ help_ca:
+ "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " +
+ "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.",
+
+ strings_cs: {
+ "slide":"snímek",
+ "help?":"nápověda",
+ "contents?":"obsah",
+ "table of contents":"obsah prezentace",
+ "Table of Contents":"Obsah prezentace",
+ "restart presentation":"znovu spustit prezentaci",
+ "restart?":"restart"
+ },
+ help_cs:
+ "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " +
+ "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " +
+ "dá zvětšit a zmenšit pomocí kláves B a S.",
+
+ strings_nl: {
+ "slide":"pagina",
+ "help?":"Help?",
+ "contents?":"Inhoud?",
+ "table of contents":"inhoudsopgave",
+ "Table of Contents":"Inhoudsopgave",
+ "restart presentation":"herstart presentatie",
+ "restart?":"Herstart?"
+ },
+ help_nl:
+ "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " +
+ "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.",
+
+ strings_de: {
+ "slide":"Seite",
+ "help?":"Hilfe",
+ "contents?":"Übersicht",
+ "table of contents":"Inhaltsverzeichnis",
+ "Table of Contents":"Inhaltsverzeichnis",
+ "restart presentation":"Präsentation neu starten",
+ "restart?":"Neustart"
+ },
+ help_de:
+ "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " +
+ "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.",
+
+ strings_pl: {
+ "slide":"slajd",
+ "help?":"pomoc?",
+ "contents?":"spis treści?",
+ "table of contents":"spis treści",
+ "Table of Contents":"Spis Treści",
+ "restart presentation":"Restartuj prezentację",
+ "restart?":"restart?"
+ },
+ help_pl:
+ "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" +
+ "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.",
+
+ strings_fr: {
+ "slide":"page",
+ "help?":"Aide",
+ "contents?":"Index",
+ "table of contents":"table des matières",
+ "Table of Contents":"Table des matières",
+ "restart presentation":"Recommencer l'exposé",
+ "restart?":"Début"
+ },
+ help_fr:
+ "Naviguez avec la souris, la barre d'espace, les flèches " +
+ "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " +
+ "les touches S et B pour modifier la taille de la police.",
+
+ strings_hu: {
+ "slide":"oldal",
+ "help?":"segítség",
+ "contents?":"tartalom",
+ "table of contents":"tartalomjegyzék",
+ "Table of Contents":"Tartalomjegyzék",
+ "restart presentation":"bemutató újraindítása",
+ "restart?":"újraindítás"
+ },
+ help_hu:
+ "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " +
+ "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " +
+ "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " +
+ "a szöveg méretét.",
+
+ strings_it: {
+ "slide":"pag.",
+ "help?":"Aiuto",
+ "contents?":"Indice",
+ "table of contents":"indice",
+ "Table of Contents":"Indice",
+ "restart presentation":"Ricominciare la presentazione",
+ "restart?":"Inizio"
+ },
+ help_it:
+ "Navigare con mouse, barra spazio, frecce sinistra/destra o " +
+ "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.",
+
+ strings_el: {
+ "slide":"σελίδα",
+ "help?":"βοήθεια;",
+ "contents?":"περιεχόμενα;",
+ "table of contents":"πίνακας περιεχομένων",
+ "Table of Contents":"Πίνακας Περιεχομένων",
+ "restart presentation":"επανεκκίνηση παρουσίασης",
+ "restart?":"επανεκκίνηση;"
+ },
+ help_el:
+ "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " +
+ "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " +
+ "το μέγεθος της γραμματοσειράς.",
+
+ strings_ja: {
+ "slide":"スライド",
+ "help?":"ヘルプ",
+ "contents?":"目次",
+ "table of contents":"目次を表示",
+ "Table of Contents":"目次",
+ "restart presentation":"最初から再生",
+ "restart?":"最初から"
+ },
+ help_ja:
+ "マウス左クリック ・ スペース ・ 左右キー " +
+ "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更",
+
+ strings_zh: {
+ "slide":"幻灯片",
+ "help?":"帮助?",
+ "contents?":"内容?",
+ "table of contents":"目录",
+ "Table of Contents":"目录",
+ "restart presentation":"重新启动展示",
+ "restart?":"重新启动?"
+ },
+ help_zh:
+ "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " +
+ "用 S, B 改变字体大小.",
+
+ strings_ru: {
+ "slide":"слайд",
+ "help?":"помощь?",
+ "contents?":"содержание?",
+ "table of contents":"оглавление",
+ "Table of Contents":"Оглавление",
+ "restart presentation":"перезапустить презентацию",
+ "restart?":"перезапуск?"
+ },
+ help_ru:
+ "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" +
+ "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.",
+
+ strings_sv: {
+ "slide":"sida",
+ "help?":"hjälp",
+ "contents?":"innehåll",
+ "table of contents":"innehållsförteckning",
+ "Table of Contents":"Innehållsförteckning",
+ "restart presentation":"visa presentationen från början",
+ "restart?":"börja om"
+ },
+ help_sv:
+ "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " +
+ "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " +
+ "Använd tangenterna S och B för att ändra textens storlek.",
+
+// each such language array is declared in the localize array
+// which is set on string prototype and used as in "foo".localize();
+ localize: {
+ "es":this.strings_es,
+ "ca":this.strings_ca,
+ "cs":this.strings_cs,
+ "nl":this.strings_nl,
+ "de":this.strings_de,
+ "pl":this.strings_pl,
+ "fr":this.strings_fr,
+ "hu":this.strings_hu,
+ "it":this.strings_it,
+ "el":this.strings_el,
+ "jp":this.strings_ja,
+ "zh":this.strings_zh,
+ "ru":this.strings_ru,
+ "sv":this.strings_sv
+ },
+
+ init: function () {
+ var i18n = w3c_slidy_i18n;
+ var help_text = w3c_slidy.help_text;
+ i18n.strings_es[help_text] = i18n.help_es;
+ i18n.strings_ca[help_text] = i18n.help_ca;
+ i18n.strings_cs[help_text] = i18n.help_cs;
+ i18n.strings_nl[help_text] = i18n.help_nl;
+ i18n.strings_de[help_text] = i18n.help_de;
+ i18n.strings_pl[help_text] = i18n.help_pl;
+ i18n.strings_fr[help_text] = i18n.help_fr;
+ i18n.strings_hu[help_text] = i18n.help_hu;
+ i18n.strings_it[help_text] = i18n.help_it;
+ i18n.strings_el[help_text] = i18n.help_el;
+ i18n.strings_ja[help_text] = i18n.help_ja;
+ i18n.strings_zh[help_text] = i18n.help_zh;
+ i18n.strings_ru[help_text] = i18n.help_ru;
+ i18n.strings_sv[help_text] = i18n.help_sv;
+
+ w3c_slidy.lang = document.body.parentNode.getAttribute("lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = "en";
+
+ // add localize method to all strings
+ // for use as in "contents".localize()
+ String.prototype.localize = function() {
+ if (this == "")
+ return this;
+
+ // try full language code, e.g. en-US
+ var s, lookup = w3c_slidy_i18n.localize[w3c_slidy.lang];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+
+ // strip country code suffix, e.g.
+ // try en if undefined for en-US
+ var lg = w3c_slidy.lang.split("-");
+
+ if (lg.length > 1)
+ {
+ lookup = w3c_slidy_i18n.localize[lg[0]];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+ }
+
+ // otherwise string as is
+ return this;
+ };
+ }
+};
+
+// hack for back button behavior
+if (w3c_slidy.ie6 || w3c_slidy.ie7)
+{
+ document.write("<iframe id='historyFrame' " +
+ "src='javascript:\"<html"+"></"+"html>\"' " +
+ "height='1' width='1' " +
+ "style='position:absolute;left:-800px'></iframe>");
+}
+
+// attach event listeners for initialization
+w3c_slidy.set_up();
+
+// hide the slides as soon as body element is available
+// to reduce annoying screen mess before the onload event
+setTimeout(w3c_slidy.hide_slides, 50);
+
+/*]]>*/
+</script>
+</head>
+<body class="article" style="max-width:45em">
+<div id="header" class="slide">
+<h1>Running a basic Osmocom GSM network</h1>
+<span id="author">Harald Welte <laforge@gnumonks.org></span><br />
+</div>
+<div class="sect1 slide">
+<h1 id="_what_this_talk_is_about">What this talk is about</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class=" incremental">
+<li>
+<span>
+Implementing GSM/GPRS network elements as FOSS
+</span>
+</li>
+<li>
+<span>
+Applied Protocol Archaeology
+</span>
+</li>
+<li>
+<span>
+Doing all of that on top of Linux (in userspace)
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_running_your_own_internet_style_network">Running your own Internet-style network</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+use off-the-shelf hardware (x86, Ethernet card)
+</span>
+</li>
+<li>
+<span>
+use any random Linux distribution
+</span>
+</li>
+<li>
+<span>
+configure Linux kernel TCP/IP network stack
+</span>
+<ul class="">
+<li>
+<span>
+enjoy fancy features like netfilter/iproute2/tc
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+use apache/lighttpd/nginx on the server
+</span>
+</li>
+<li>
+<span>
+use Firefox/chromium/konqueor/lynx on the client
+</span>
+</li>
+<li>
+<span>
+do whatever modification/optimization on any part of the stack
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_running_your_own_gsm_network">Running your own GSM network</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>Until 2009 the situation looked like this:</p></div>
+<ul class="">
+<li>
+<span>
+go to Ericsson/Huawei/ZTE/Nokia/Alcatel/…
+</span>
+</li>
+<li>
+<span>
+spend lots of time convincing them that you’re an eligible customer
+</span>
+</li>
+<li>
+<span>
+spend a six-digit figure for even the most basic full network
+</span>
+</li>
+<li>
+<span>
+end up with black boxes you can neither study nor improve
+</span>
+<ul class=" incremental">
+<li>
+<span>
+WTF?
+</span>
+</li>
+<li>
+<span>
+I’ve grown up with FOSS and the Internet. I know a better world.
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_why_no_cellular_foss">Why no cellular FOSS?</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+both cellular (2G/3G/4G) and TCP/IP/HTTP protocol specs are publicly
+ available for decades. Can you believe it?
+</span>
+</li>
+<li>
+<span>
+Internet protocol stacks have lots of FOSS implementations
+</span>
+</li>
+<li>
+<span>
+cellular protocol stacks have no FOSS implementations for the
+ first almost 20 years of their existence?
+</span>
+</li>
+<li>
+<span>
+it’s the classic conflict
+</span>
+<ul class=" incremental">
+<li>
+<span>
+classic circuit-switched telco vs. the BBS community
+</span>
+</li>
+<li>
+<span>
+ITU-T/OSI/ISO vs. Arpanet and TCP/IP
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_enter_osmocom">Enter Osmocom</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>In 2008, some people (most present in this room) started to write FOSS
+for GSM</p></div>
+<ul class="">
+<li>
+<span>
+to boldly go where no FOSS hacker has gone before
+</span>
+<ul class=" incremental">
+<li>
+<span>
+where protocol stacks are deep
+</span>
+</li>
+<li>
+<span>
+and acronyms are plentiful
+</span>
+</li>
+<li>
+<span>
+we went from <code>bs11-abis</code> to <code>bsc_hack</code> to <em>OpenBSC</em>
+</span>
+</li>
+<li>
+<span>
+many other related projects were created
+</span>
+</li>
+<li>
+<span>
+finally leading to the <em>Osmocom</em> umbrella project
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_classic_gsm_network_architecture">Classic GSM network architecture</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock">
+<div class="content">
+<img src="Gsm_structures.svg" alt="Gsm_structures.svg" width="850" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_gsm_acronyms_radio_access_network">GSM Acronyms, Radio Access Network</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+MS
+</dt>
+<dd>
+<p>
+ Mobile Station (your phone)
+</p>
+</dd>
+<dt class="hdlist1">
+BTS
+</dt>
+<dd>
+<p>
+ Base Transceiver Station, consists of 1..n TRX
+</p>
+</dd>
+<dt class="hdlist1">
+TRX
+</dt>
+<dd>
+<p>
+ Transceiver for one radio channel, serves 8 TS
+</p>
+</dd>
+<dt class="hdlist1">
+TS
+</dt>
+<dd>
+<p>
+ Timeslots in the GSM radio interface; each runs a specific combination of logical channels
+</p>
+</dd>
+<dt class="hdlist1">
+BSC
+</dt>
+<dd>
+<p>
+ Base Station Controller
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_gsm_acronyms_core_network">GSM Acronyms, Core Network</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+MSC
+</dt>
+<dd>
+<p>
+ Mobile Switching Center; Terminates MM + CC Sub-layers
+</p>
+</dd>
+<dt class="hdlist1">
+HLR
+</dt>
+<dd>
+<p>
+ Home Location Register; Subscriber Database
+</p>
+</dd>
+<dt class="hdlist1">
+SMSC
+</dt>
+<dd>
+<p>
+ SMS Service Center
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_gsm_acronyms_layer_2_3">GSM Acronyms, Layer 2 + 3</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+LAPDm
+</dt>
+<dd>
+<p>
+ Link Access Protocol, D-Channel. Like LAPD in ISDN
+</p>
+</dd>
+<dt class="hdlist1">
+RR
+</dt>
+<dd>
+<p>
+ Radio Resource (establish/release dedicated channels)
+</p>
+</dd>
+<dt class="hdlist1">
+MM
+</dt>
+<dd>
+<p>
+ Mobility Management (registration, location, authentication)
+</p>
+</dd>
+<dt class="hdlist1">
+CC
+</dt>
+<dd>
+<p>
+ Call Control (voice, circuit switched data, fax)
+</p>
+</dd>
+<dt class="hdlist1">
+CM
+</dt>
+<dd>
+<p>
+ Connection Management
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmocom_gsm_components">Osmocom GSM components</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock">
+<div class="content">
+<img src="osmocom-gsm.svg" alt="osmocom-gsm.svg" width="850" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_classic_gsm_network_as_digraph">Classic GSM network as digraph</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock graphviz">
+<div class="content">
+<img src="running-osmo-gsm__1.png" alt="running-osmo-gsm__1.png" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_simplified_osmonitb_gsm_network">Simplified OsmoNITB GSM network</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock graphviz">
+<div class="content">
+<img src="running-osmo-gsm__2.png" alt="running-osmo-gsm__2.png" />
+</div>
+</div>
+<div class="paragraph"><p>which further reduces to the following minimal setup:</p></div>
+<div class="imageblock graphviz">
+<div class="content">
+<img src="running-osmo-gsm__3.png" alt="running-osmo-gsm__3.png" />
+</div>
+</div>
+<div class="paragraph"><p>So our minimal setup is a <em>Phone</em>, a <em>BTS</em> and <em>OsmoNITB</em>.</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_which_bts_to_use">Which BTS to use?</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Proprietary BTS of classic vendor
+</span>
+<ul class="">
+<li>
+<span>
+Siemens BS-11 is what we started with
+</span>
+</li>
+<li>
+<span>
+Nokia, Ericsson, and others available 2nd hand
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+<em>OsmoBTS</em> software implementation, running with
+</span>
+<ul class="">
+<li>
+<span>
+Proprietary HW + PHY (DSP): <em>sysmoBTS</em>, or
+</span>
+</li>
+<li>
+<span>
+General purpose SDR (like USRP) + <em>OsmoTRX</em>
+</span>
+</li>
+</ul>
+</li>
+</ul>
+<div class="paragraph"><p>We assume a sysmoBTS in the following tutorial</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmobts_overview">OsmoBTS Overview</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock">
+<div class="content">
+<img src="osmo-bts.svg" alt="osmo-bts.svg" />
+</div>
+</div>
+<ul class="">
+<li>
+<span>
+Implementation of GSM BTS
+</span>
+</li>
+<li>
+<span>
+supports variety of hardware/PHY options
+</span>
+<ul class="">
+<li>
+<span>
+<code>osmo-bts-sysmo</code>: BTS family by sysmocom
+</span>
+</li>
+<li>
+<span>
+<code>osmo-bts-trx</code>: Used with <em>OsmoTRX</em> + general-purpose SDR
+</span>
+</li>
+<li>
+<span>
+<code>osmo-bts-octphy</code>: Octasic OCTBTS hardware / OCTSDR-2G PHY
+</span>
+</li>
+<li>
+<span>
+<code>osmo-bts-litecell15</code>: Nutaq Litecell 1.5 hardware/PHY
+</span>
+</li>
+</ul>
+</li>
+</ul>
+<div class="paragraph"><p>See separate talk about BTS hardware options later today.</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_bts_hardware_vs_bts_software">BTS Hardware vs. BTS software</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+A classic GSM BTS is hardware + software
+</span>
+</li>
+<li>
+<span>
+It has two interfaces
+</span>
+<ul class="">
+<li>
+<span>
+Um to the radio side, towards phones
+</span>
+</li>
+<li>
+<span>
+Abis to the wired back-haul side, towards BSC
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+with today’s flexible architecture, this is not always true
+</span>
+<ul class="">
+<li>
+<span>
+the hardware might just be a network-connected SDR and BTS software
+runs o a different CPU/computer, <em>or</em>
+</span>
+</li>
+<li>
+<span>
+the BTS and BSC, or even the NITB may run on the same board
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_physical_vs_logical_arch_sysmobts">Physical vs. Logical Arch (sysmoBTS)</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock graphviz">
+<div class="content">
+<img src="running-osmo-gsm__4.png" alt="running-osmo-gsm__4.png" />
+</div>
+</div>
+<div class="imageblock graphviz">
+<div class="content">
+<img src="running-osmo-gsm__5.png" alt="running-osmo-gsm__5.png" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_physical_vs_logical_arch_sdr_e_g_usrp_b2xx">Physical vs. Logical Arch (SDR e.g. USRP B2xx)</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="imageblock graphviz">
+<div class="content">
+<img src="running-osmo-gsm__6.png" alt="running-osmo-gsm__6.png" />
+</div>
+</div>
+<div class="imageblock graphviz">
+<div class="content">
+<img src="running-osmo-gsm__7.png" alt="running-osmo-gsm__7.png" />
+</div>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_ip_layer_traffic">IP layer traffic</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Abis/IP signaling runs inside IPA multiplex inside TCP
+</span>
+<ul class="">
+<li>
+<span>
+Port 3002 and 3003 betewen BTS and BSC
+</span>
+</li>
+<li>
+<span>
+Connections initiated from BTS to BSC
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+Voice data is carried in RTP/UDP on dynamic ports
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>⇒ Make sure you permit the above communication in your
+network/firewall config</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_configuring_osmocom_software">Configuring Osmocom software</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+all <em>native</em> Osmo* GSM infrastructure programs share common architecture, as
+ defined by various libraries <em>libosmo{core,gsm,vty,abis,netif,…}</em>
+</span>
+</li>
+<li>
+<span>
+part of this is configuration handling
+</span>
+<ul class="">
+<li>
+<span>
+interactive configuration via command line interface (<strong>vty</strong>), similar
+ to Cisco routers
+</span>
+</li>
+<li>
+<span>
+based on a fork of the VTY code from Zebra/Quagga, now <em>libosmovty</em>
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+you can manually edit the config file,
+</span>
+</li>
+<li>
+<span>
+or use <code>configure terminal</code> and interactively change it
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_configuring_osmobts">Configuring OsmoBTS</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+<em>OsmoBTS</em> in our example scenario runs on the embedded ARM/Linux system
+ inside the <em>sysmoBTS</em>
+</span>
+</li>
+<li>
+<span>
+we access the <em>sysmoBTS</em> via serial console or ssh
+</span>
+</li>
+<li>
+<span>
+we then edit the configuration file <code>/etc/osmocom/osmo-bts.cfg</code> as
+ described in the following slide
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_configuring_osmobts_2">Configuring OsmoBTS</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="listingblock">
+<div class="content">
+<pre><code>bts 0
+ band DCS1800 <b><1></b>
+ ipa unit-id 1801 0 <b><2></b>
+ oml remote-ip 192.168.100.11 <b><3></b></code></pre>
+</div></div>
+<div class="colist arabic"><ol>
+<li>
+<p>
+the GSM frequency band in which the BTS operates
+</p>
+</li>
+<li>
+<p>
+the unit-id by which this BTS identifies itself to the BSC
+</p>
+</li>
+<li>
+<p>
+the IP address of the BSC (to establish the OML connection towards it)
+</p>
+</li>
+</ol></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">All other configuration is downloaded by the BSC via OML. So most
+BTS settings are configured in the BSC/NITB configuration file.</td>
+</tr></table>
+</div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_purpose_of_unit_id">Purpose of Unit ID</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Unit IDs consist of three parts:
+</span>
+<ul class="">
+<li>
+<span>
+Site Number, BTS Number, TRX Number
+</span>
+</li>
+</ul>
+</li>
+</ul>
+<div class="imageblock graphviz">
+<div class="content">
+<img src="running-osmo-gsm__8.png" alt="running-osmo-gsm__8.png" />
+</div>
+</div>
+<ul class="">
+<li>
+<span>
+source IP of all BTSs would be identical
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>⇒ BSC identifies BTS on Unit ID, not on Source IP!</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_configuring_osmonitb">Configuring OsmoNITB</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+<em>OsmoNITB</em> is the <code>osmo-nitb</code> executable built from the <code>openbsc</code>
+ source tree / git repository
+</span>
+<ul class="">
+<li>
+<span>
+just your usual <code>git clone && autoreconf -fi && ./configure && make install</code>
+</span>
+</li>
+<li>
+<span>
+(in reality, the <code>libosmo*</code> dependencies are required first…)
+</span>
+</li>
+<li>
+<span>
+nightly packages for Debian 8, Ubuntu 16.04 and 16.10 available
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+<em>OsmoNITB</em> runs on any Linux system, like your speakers' laptop
+</span>
+<ul class="">
+<li>
+<span>
+you can actually also run it on the ARM/Linux of the <em>sysmoBTS</em> itself,
+ having a literal <em>Network In The Box</em> with power as only external
+ dependency
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_configuring_osmonitb_2">Configuring OsmoNITB</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="listingblock">
+<div class="content">
+<pre><code>network
+ network country code 1 <b><1></b>
+ mobile network code 1 <b><2></b>
+ short name Osmocom <b><3></b>
+ long name Osmocom
+ auth policy closed <b><4></b>
+ encryption a5 0 <b><5></b></code></pre>
+</div></div>
+<div class="colist arabic"><ol>
+<li>
+<p>
+MCC (Country Code) e.g. 262 for Germany; 1 == Test
+</p>
+</li>
+<li>
+<p>
+MNC (Network Code) e.g. mcc=262, mnc=02 == Vodafone; 1 == Test
+</p>
+</li>
+<li>
+<p>
+Operator name to be sent to the phone <strong>after</strong> registration
+</p>
+</li>
+<li>
+<p>
+Only accept subscribers (SIM cards) explicitly authorized in HLR
+</p>
+</li>
+<li>
+<p>
+Use A5/0 (== no encryption)
+</p>
+</li>
+</ol></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_configuring_bts_in_osmonitb_bts">Configuring BTS in OsmoNITB (BTS)</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="listingblock">
+<div class="content">
+<pre><code>network
+ bts 0
+ type sysmobts <b><1></b>
+ band DCS1800 <b><2></b>
+ ms max power 33 <b><3></b>
+ periodic location update 6 <b><4></b>
+ ip.access unit_id 1801 0 <b><5></b>
+ codec-support fr hr efr amr <b><6></b></code></pre>
+</div></div>
+<div class="colist arabic"><ol>
+<li>
+<p>
+type of the BTS that we use (must match BTS)
+</p>
+</li>
+<li>
+<p>
+frequency band of the BTS (must match BTS)
+</p>
+</li>
+<li>
+<p>
+maximum transmit power phones are permitted (33 dBm == 2W)
+</p>
+</li>
+<li>
+<p>
+interval at which phones should send periodic location update (6 minutes)
+</p>
+</li>
+<li>
+<p>
+Unit ID of the BTS (must match BTS)
+</p>
+</li>
+<li>
+<p>
+Voice codecs supported by the BTS
+</p>
+</li>
+</ol></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_configuring_bts_in_osmonitb_trx">Configuring BTS in OsmoNITB (TRX)</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="listingblock">
+<div class="content">
+<pre><code>network
+ bts 0
+ trx 0
+ arfcn 871 <b><1></b>
+ max_power_red 0 <b><2></b>
+ timeslot 0
+ phys_chan_config CCCH+SDCCH4 <b><3></b>
+ timeslot 1
+ phys_chan_config TCH/F <b><4></b>
+ ...
+ timeslot 7
+ phys_chan_config PDCH <b><5></b></code></pre>
+</div></div>
+<div class="colist arabic"><ol>
+<li>
+<p>
+The RF channel number used by this TRX
+</p>
+</li>
+<li>
+<p>
+The maximum power <strong>reduction</strong> in dBm. 0 = no reduction
+</p>
+</li>
+<li>
+<p>
+Every BTS needs need one timeslot with a CCCH
+</p>
+</li>
+<li>
+<p>
+We configure TS1 to TS6 as TCH/F for voice
+</p>
+</li>
+<li>
+<p>
+We configure TS6 as PDCH for GPRS
+</p>
+</li>
+</ol></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_what_a_gsm_phone_does_after_power_up">What a GSM phone does after power-up</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Check SIM card for last cell before switch-off
+</span>
+<ul class="">
+<li>
+<span>
+if that cell is found again, use that
+</span>
+</li>
+<li>
+<span>
+if not, perform a network scan
+</span>
+<ul class="">
+<li>
+<span>
+try to find strong carriers, check if they contain BCCH
+</span>
+</li>
+<li>
+<span>
+create a list of available cells + networks
+</span>
+</li>
+<li>
+<span>
+if one of the networks MCC+MNC matches first digits of <em>IMSI</em>, this is
+the home network, which has preference over others
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>
+<span>
+perform <em>LOCATION UPDATE</em> (TYPE=IMSI ATTACH) procedure to network
+</span>
+</li>
+<li>
+<span>
+when network sends <em>LOCATION UPDATE ACCEPT</em>, <strong>camp</strong> on that cell
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>→ let’s check if we can perform <em>LOCATION UPDATE</em> on our own network</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_verifying_our_network">Verifying our network</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+look at stderr of <em>OsmoBTS</em> and <em>OsmoNITB</em>
+</span>
+<ul class="">
+<li>
+<span>
+<em>OsmoBTS</em> will terminate if Abis cannot be set-up
+</span>
+</li>
+<li>
+<span>
+expected to be re-spawned by init / systemd
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+use MS to search for networks, try manual registration
+</span>
+</li>
+<li>
+<span>
+observe registration attempts <code>logging level mm info</code>
+</span>
+</li>
+</ul>
+<div class="paragraph"><p>→ should show <em>LOCATION UPDATE</em> request / reject / accept</p></div>
+<ul class="">
+<li>
+<span>
+use the VTY to explore system state (<code>show *</code>)
+</span>
+</li>
+<li>
+<span>
+use the VTY to change subscriber parameters like extension number
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_exploring_your_gsm_networks_services">Exploring your GSM networks services</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+use <code>*#100#</code> from any registered MS to obtain own number
+</span>
+</li>
+<li>
+<span>
+voice calls from mobile to mobile
+</span>
+</li>
+<li>
+<span>
+SMS from mobile to mobile
+</span>
+</li>
+<li>
+<span>
+SMS to/from external applications (via SMPP)
+</span>
+</li>
+<li>
+<span>
+voice to/from external PBX (via MNCC)
+</span>
+</li>
+<li>
+<span>
+explore the VTY interfaces of all network elements
+</span>
+<ul class="">
+<li>
+<span>
+send SMS from the command line
+</span>
+</li>
+<li>
+<span>
+experiment with <em>silent call</em> feature
+</span>
+</li>
+<li>
+<span>
+experiment with logging levels
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+use wireshark to investigate GSM protocols
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_using_the_vty">Using the VTY</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+The VTY can be used not only to configure, but also to interactively
+ explore the system status (<code>show</code> commands)
+</span>
+</li>
+<li>
+<span>
+Every Osmo* program has its own telnet port
+</span>
+</li>
+</ul>
+<div class="tableblock">
+<table rules="all"
+width="100%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="50%" />
+<col width="50%" />
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">Program</p></td>
+<td align="left" valign="top"><p class="table">Telnet Port</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">OsmoPCU</p></td>
+<td align="left" valign="top"><p class="table">4240</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">OsmoBTS</p></td>
+<td align="left" valign="top"><p class="table">4241</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">OsmoNITB</p></td>
+<td align="left" valign="top"><p class="table">4242</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">OsmoSGSN</p></td>
+<td align="left" valign="top"><p class="table">4245</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<ul class="">
+<li>
+<span>
+ports are bound to 127.0.0.1 by default
+</span>
+</li>
+<li>
+<span>
+try tab-completion, <code>?</code> and <code>list</code> commands
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_using_the_vty_continued">Using the VTY (continued)</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+e.g. <code>show subsciber</code> to display data about subscriber:
+</span>
+</li>
+</ul>
+<div class="listingblock">
+<div class="content">
+<pre><code>OpenBSC> show subscriber imsi 901700000003804
+ ID: 12, Authorized: 1
+ Extension: 3804
+ LAC: 0/0x0
+ IMSI: 901700000003804
+ TMSI: F2D4FA0A
+ Expiration Time: Mon, 07 Dec 2015 09:45:16 +0100
+ Paging: not paging Requests: 0
+ Use count: 1</code></pre>
+</div></div>
+<ul class="">
+<li>
+<span>
+try <code>show bts</code>, <code>show trx</code>, <code>show lchan</code>, <code>show statistics</code>, …
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_further_reading">Further Reading</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="dlist"><dl class="">
+<dt class="hdlist1">
+User Manuals
+</dt>
+<dd>
+<p>
+See <a href="http://ftp.osmocom.org/docs/latest/">http://ftp.osmocom.org/docs/latest/</a>
+</p>
+</dd>
+<dt class="hdlist1">
+Wiki
+</dt>
+<dd>
+<p>
+See <a href="http://osmocom.org/projects/openbsc">http://osmocom.org/projects/openbsc</a>
+</p>
+</dd>
+</dl></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_the_end">The End</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+so long, and thanks for all the fish
+</span>
+</li>
+<li>
+<span>
+I hope you have questions!
+</span>
+</li>
+<li>
+<span>
+have fun exploring mobile technologies using Osmocom
+</span>
+</li>
+<li>
+<span>
+interested in working with more acronyms? Come join the project!
+</span>
+</li>
+<li>
+<span>
+Check out <a href="https://osmocom.org/">https://osmocom.org/</a> and <a href="mailto:openbsc@lists.osmocom.org">openbsc@lists.osmocom.org</a>
+</span>
+</li>
+</ul>
+</div>
+</div>
+</body>
+</html>
diff --git a/2017/welcome_intro-osmocon2017/welcome_intro.adoc b/2017/welcome_intro-osmocon2017/welcome_intro.adoc index 70c9e43..6e918a1 100644 --- a/2017/welcome_intro-osmocon2017/welcome_intro.adoc +++ b/2017/welcome_intro-osmocon2017/welcome_intro.adoc @@ -12,6 +12,7 @@ image:images/osmocon.png[width="90%"] == A diverse audience +[role="incremental"] * Osmocom developers * Commercial cellular Operators * Community Wireless Network Operators @@ -22,11 +23,14 @@ image:images/osmocon.png[width="90%"] == Thanks to.. +[role="incremental"] * Heike for organization, backoffice, registration * Maike for ticket sales, registration * our hosts here at JGH Berlin * our Speakers -* the anonymous Sponsor of the travel grants +* the anonymous sponsor of the travel grants +* C3VOC of Chaos Computer Club for video recordings +* Everyone who ever contributed code to Osmocom! == Schedule @@ -103,7 +107,7 @@ Date: Tue Dec 23 20:25:15 2008 +0000 * organizes this event as Osmocom is no legal entity * unfortunately is doing >= 80% of commits in Osmocom cellular infrastructure projects. -** Osmocom must not depend on sysmocom +** Osmocom should not depend on sysmocom ** we need more commitment and contributions from all users and beneficiaries == EOF diff --git a/2017/welcome_intro-osmocon2017/welcome_intro.html b/2017/welcome_intro-osmocon2017/welcome_intro.html new file mode 100644 index 0000000..1f0a70b --- /dev/null +++ b/2017/welcome_intro-osmocon2017/welcome_intro.html @@ -0,0 +1,4205 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Welcome to Osmocom Conference 2017</title>
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+<meta name="copyright" content="Copyright © 2017 by Harald Welte (License: CC-BY-SA)" />
+<meta name="generator" content="AsciiDoc 8.6.9" />
+<style type="text/css">
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+ font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+ font-family: Arial,Helvetica,sans-serif;
+}
+
+body {
+ margin: 1em 5% 1em 5%;
+}
+
+a {
+ color: blue;
+ text-decoration: underline;
+}
+a:visited {
+ color: fuchsia;
+}
+
+em {
+ font-style: italic;
+ color: navy;
+}
+
+strong {
+ font-weight: bold;
+ color: #083194;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #527bbd;
+ margin-top: 1.2em;
+ margin-bottom: 0.5em;
+ line-height: 1.3;
+}
+
+h1, h2, h3 {
+ border-bottom: 2px solid silver;
+}
+h2 {
+ padding-top: 0.5em;
+}
+h3 {
+ float: left;
+}
+h3 + * {
+ clear: left;
+}
+h5 {
+ font-size: 1.0em;
+}
+
+div.sectionbody {
+ margin-left: 0;
+}
+
+hr {
+ border: 1px solid silver;
+}
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+ul, ol, li > p {
+ margin-top: 0;
+}
+ul > li { color: #aaa; }
+ul > li > * { color: black; }
+
+.monospaced, code, pre {
+ font-family: "Courier New", Courier, monospace;
+ font-size: inherit;
+ color: navy;
+ padding: 0;
+ margin: 0;
+}
+pre {
+ white-space: pre-wrap;
+}
+
+#author {
+ color: #527bbd;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+#email {
+}
+#revnumber, #revdate, #revremark {
+}
+
+#footer {
+ font-size: small;
+ border-top: 2px solid silver;
+ padding-top: 0.5em;
+ margin-top: 4.0em;
+}
+#footer-text {
+ float: left;
+ padding-bottom: 0.5em;
+}
+#footer-badges {
+ float: right;
+ padding-bottom: 0.5em;
+}
+
+#preamble {
+ margin-top: 1.5em;
+ margin-bottom: 1.5em;
+}
+div.imageblock, div.exampleblock, div.verseblock,
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
+div.admonitionblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.admonitionblock {
+ margin-top: 2.0em;
+ margin-bottom: 2.0em;
+ margin-right: 10%;
+ color: #606060;
+}
+
+div.content { /* Block element content. */
+ padding: 0;
+}
+
+/* Block element titles. */
+div.title, caption.title {
+ color: #527bbd;
+ font-weight: bold;
+ text-align: left;
+ margin-top: 1.0em;
+ margin-bottom: 0.5em;
+}
+div.title + * {
+ margin-top: 0;
+}
+
+td div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content div.title:first-child {
+ margin-top: 0.0em;
+}
+div.content + div.title {
+ margin-top: 0.0em;
+}
+
+div.sidebarblock > div.content {
+ background: #ffffee;
+ border: 1px solid #dddddd;
+ border-left: 4px solid #f0f0f0;
+ padding: 0.5em;
+}
+
+div.listingblock > div.content {
+ border: 1px solid #dddddd;
+ border-left: 5px solid #f0f0f0;
+ background: #f8f8f8;
+ padding: 0.5em;
+}
+
+div.quoteblock, div.verseblock {
+ padding-left: 1.0em;
+ margin-left: 1.0em;
+ margin-right: 10%;
+ border-left: 5px solid #f0f0f0;
+ color: #888;
+}
+
+div.quoteblock > div.attribution {
+ padding-top: 0.5em;
+ text-align: right;
+}
+
+div.verseblock > pre.content {
+ font-family: inherit;
+ font-size: inherit;
+}
+div.verseblock > div.attribution {
+ padding-top: 0.75em;
+ text-align: left;
+}
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
+div.verseblock + div.attribution {
+ text-align: left;
+}
+
+div.admonitionblock .icon {
+ vertical-align: top;
+ font-size: 1.1em;
+ font-weight: bold;
+ text-decoration: underline;
+ color: #527bbd;
+ padding-right: 0.5em;
+}
+div.admonitionblock td.content {
+ padding-left: 0.5em;
+ border-left: 3px solid #dddddd;
+}
+
+div.exampleblock > div.content {
+ border-left: 3px solid #dddddd;
+ padding-left: 0.5em;
+}
+
+div.imageblock div.content { padding-left: 0; }
+span.image img { border-style: none; vertical-align: text-bottom; }
+a.image:visited { color: white; }
+
+dl {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+dt {
+ margin-top: 0.5em;
+ margin-bottom: 0;
+ font-style: normal;
+ color: navy;
+}
+dd > *:first-child {
+ margin-top: 0.1em;
+}
+
+ul, ol {
+ list-style-position: outside;
+}
+ol.arabic {
+ list-style-type: decimal;
+}
+ol.loweralpha {
+ list-style-type: lower-alpha;
+}
+ol.upperalpha {
+ list-style-type: upper-alpha;
+}
+ol.lowerroman {
+ list-style-type: lower-roman;
+}
+ol.upperroman {
+ list-style-type: upper-roman;
+}
+
+div.compact ul, div.compact ol,
+div.compact p, div.compact p,
+div.compact div, div.compact div {
+ margin-top: 0.1em;
+ margin-bottom: 0.1em;
+}
+
+tfoot {
+ font-weight: bold;
+}
+td > div.verse {
+ white-space: pre;
+}
+
+div.hdlist {
+ margin-top: 0.8em;
+ margin-bottom: 0.8em;
+}
+div.hdlist tr {
+ padding-bottom: 15px;
+}
+dt.hdlist1.strong, td.hdlist1.strong {
+ font-weight: bold;
+}
+td.hdlist1 {
+ vertical-align: top;
+ font-style: normal;
+ padding-right: 0.8em;
+ color: navy;
+}
+td.hdlist2 {
+ vertical-align: top;
+}
+div.hdlist.compact tr {
+ margin: 0;
+ padding-bottom: 0;
+}
+
+.comment {
+ background: yellow;
+}
+
+.footnote, .footnoteref {
+ font-size: 0.8em;
+}
+
+span.footnote, span.footnoteref {
+ vertical-align: super;
+}
+
+#footnotes {
+ margin: 20px 0 20px 0;
+ padding: 7px 0 0 0;
+}
+
+#footnotes div.footnote {
+ margin: 0 0 5px 0;
+}
+
+#footnotes hr {
+ border: none;
+ border-top: 1px solid silver;
+ height: 1px;
+ text-align: left;
+ margin-left: 0;
+ width: 20%;
+ min-width: 100px;
+}
+
+div.colist td {
+ padding-right: 0.5em;
+ padding-bottom: 0.3em;
+ vertical-align: top;
+}
+div.colist td img {
+ margin-top: 0.3em;
+}
+
+@media print {
+ #footer-badges { display: none; }
+}
+
+#toc {
+ margin-bottom: 2.5em;
+}
+
+#toctitle {
+ color: #527bbd;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 1.0em;
+ margin-bottom: 0.1em;
+}
+
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+div.toclevel2 {
+ margin-left: 2em;
+ font-size: 0.9em;
+}
+div.toclevel3 {
+ margin-left: 4em;
+ font-size: 0.9em;
+}
+div.toclevel4 {
+ margin-left: 6em;
+ font-size: 0.9em;
+}
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+div.tableblock > table {
+ border: 3px solid #527bbd;
+}
+thead, p.table.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.table {
+ margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+ border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+ border-left-style: none;
+ border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+ border-top-style: none;
+ border-bottom-style: none;
+}
+
+
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+ margin-top: 1.0em;
+ margin-bottom: 1.5em;
+}
+thead, p.tableblock.header {
+ font-weight: bold;
+ color: #527bbd;
+}
+p.tableblock {
+ margin-top: 0;
+}
+table.tableblock {
+ border-width: 3px;
+ border-spacing: 0px;
+ border-style: solid;
+ border-color: #527bbd;
+ border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+ border-width: 1px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #527bbd;
+}
+
+table.tableblock.frame-topbot {
+ border-left-style: hidden;
+ border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+ border-top-style: hidden;
+ border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+ border-style: hidden;
+}
+
+th.tableblock.halign-left, td.tableblock.halign-left {
+ text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+ text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
+ text-align: right;
+}
+
+th.tableblock.valign-top, td.tableblock.valign-top {
+ vertical-align: top;
+}
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+ vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+ vertical-align: bottom;
+}
+
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-top: 2px solid silver;
+ border-bottom: 2px solid silver;
+}
+body.manpage h2 {
+ border-style: none;
+}
+body.manpage div.sectionbody {
+ margin-left: 3em;
+}
+
+@media print {
+ body.manpage div#toc { display: none; }
+}
+/* slidy.css
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+/*
+ SJR: 2010-09-29: Modified for AsciiDoc slidy backend.
+ Mostly just commented out stuff that is handled by AsciiDoc's CSS files.
+*/
+
+body
+{
+ margin: 0 0 0 0;
+ padding: 0 0 0 0;
+ width: 100%;
+ height: 100%;
+ color: black;
+ background-color: white;
+/*
+ font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif;
+*/
+ font-size: 14pt;
+}
+
+div.toolbar {
+ position: fixed; z-index: 200;
+ top: auto; bottom: 0; left: 0; right: 0;
+ height: 1.2em; text-align: right;
+ padding-left: 1em;
+ padding-right: 1em;
+ font-size: 60%;
+ color: red;
+ background-color: rgb(240,240,240);
+ border-top: solid 1px rgb(180,180,180);
+}
+
+div.toolbar span.copyright {
+ color: black;
+ margin-left: 0.5em;
+}
+
+div.initial_prompt {
+ position: absolute;
+ z-index: 1000;
+ bottom: 1.2em;
+ width: 90%;
+ background-color: rgb(200,200,200);
+ opacity: 0.35;
+ background-color: rgb(200,200,200, 0.35);
+ cursor: pointer;
+}
+
+div.initial_prompt p.help {
+ text-align: center;
+}
+
+div.initial_prompt p.close {
+ text-align: right;
+ font-style: italic;
+}
+
+div.slidy_toc {
+ position: absolute;
+ z-index: 300;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ overflow: auto;
+ top: auto;
+ right: auto;
+ left: 4em;
+ bottom: 4em;
+ padding: 1em;
+ background: rgb(240,240,240);
+ border-style: solid;
+ border-width: 2px;
+ font-size: 60%;
+}
+
+div.slidy_toc .toc_heading {
+ text-align: center;
+ width: 100%;
+ margin: 0;
+ margin-bottom: 1em;
+ border-bottom-style: solid;
+ border-bottom-color: rgb(180,180,180);
+ border-bottom-width: 1px;
+}
+
+div.slide {
+ z-index: 20;
+ margin: 0 0 0 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ padding-left: 20px;
+ padding-right: 20px;
+ border-width: 0;
+ clear: both;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ line-height: 120%;
+ background-color: transparent;
+}
+
+div.background {
+ display: none;
+}
+
+div.handout {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+div.slide.titlepage {
+ text-align: center;
+}
+
+div.slide.titlepage.h1 {
+ padding-top: 10%;
+}
+
+div.slide h1 {
+ padding-left: 0;
+ padding-right: 20pt;
+ padding-top: 4pt;
+ padding-bottom: 4pt;
+ margin-top: 0;
+ margin-left: 0;
+ margin-right: 60pt;
+ margin-bottom: 0.5em;
+ display: block;
+ font-size: 160%;
+ line-height: 1.2em;
+ background: transparent;
+}
+
+div.toc {
+ position: absolute;
+ top: auto;
+ bottom: 4em;
+ left: 4em;
+ right: auto;
+ width: 60%;
+ max-width: 30em;
+ height: 30em;
+ border: solid thin black;
+ padding: 1em;
+ background: rgb(240,240,240);
+ color: black;
+ z-index: 300;
+ overflow: auto;
+ display: block;
+ visibility: visible;
+}
+
+div.toc-heading {
+ width: 100%;
+ border-bottom: solid 1px rgb(180,180,180);
+ margin-bottom: 1em;
+ text-align: center;
+}
+
+/*
+pre {
+ font-size: 80%;
+ font-weight: bold;
+ line-height: 120%;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ padding-left: 1em;
+ padding-right: 1em;
+ border-style: solid;
+ border-left-width: 1em;
+ border-top-width: thin;
+ border-right-width: thin;
+ border-bottom-width: thin;
+ border-color: #95ABD0;
+ color: #00428C;
+ background-color: #E4E5E7;
+}
+*/
+
+/*
+li pre { margin-left: 0; }
+
+blockquote { font-style: italic }
+
+img { background-color: transparent }
+
+p.copyright { font-size: smaller }
+*/
+
+.center { text-align: center }
+.footnote { font-size: smaller; margin-left: 2em; }
+
+/*
+a img { border-width: 0; border-style: none }
+*/
+
+a:visited { color: navy }
+a:link { color: navy }
+a:hover { color: red; text-decoration: underline }
+a:active { color: red; text-decoration: underline }
+
+a {text-decoration: none}
+.navbar a:link {color: white}
+.navbar a:visited {color: yellow}
+.navbar a:active {color: red}
+.navbar a:hover {color: red}
+
+/*
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+li { margin-left: 0.5em; margin-top: 0.5em; }
+li li { font-size: 85%; font-style: italic }
+li li li { font-size: 85%; font-style: normal }
+*/
+
+div dt
+{
+ margin-left: 0;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+ font-weight: bold;
+}
+div dd
+{
+ margin-left: 2em;
+ margin-bottom: 0.5em;
+}
+
+
+/*
+p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table {
+ margin-left: 1em;
+ margin-right: 1em;
+}
+*/
+
+p.subhead { font-weight: bold; margin-top: 2em; }
+
+.smaller { font-size: smaller }
+.bigger { font-size: 130% }
+
+/*
+td,th { padding: 0.2em }
+*/
+
+ul {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ol {
+ margin: 0.5em 1.5em 0.5em 1.5em;
+ padding: 0;
+}
+
+ul { list-style-type: square; }
+ul ul { list-style-type: disc; }
+ul ul ul { list-style-type: circle; }
+ul ul ul ul { list-style-type: disc; }
+
+/*
+ul li {
+ list-style: square;
+ margin: 0.1em 0em 0.6em 0;
+ padding: 0 0 0 0;
+ line-height: 140%;
+}
+
+ol li {
+ margin: 0.1em 0em 0.6em 1.5em;
+ padding: 0 0 0 0px;
+ line-height: 140%;
+ list-style-type: decimal;
+}
+
+li ul li {
+ font-size: 85%;
+ font-style: italic;
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li ul li {
+ font-size: 85%;
+ font-style: normal;
+ list-style-type: circle;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+li li li ul li {
+ list-style-type: disc;
+ background: transparent;
+ padding: 0 0 0 0;
+}
+
+li ol li {
+ list-style-type: decimal;
+}
+
+
+li li ol li {
+ list-style-type: decimal;
+}
+*/
+
+/*
+ setting class="outline" on ol or ul makes it behave as an
+ ouline list where blocklevel content in li elements is
+ hidden by default and can be expanded or collapsed with
+ mouse click. Set class="expand" on li to override default
+*/
+
+ol.outline li:hover { cursor: pointer }
+ol.outline li.nofold:hover { cursor: default }
+
+ul.outline li:hover { cursor: pointer }
+ul.outline li.nofold:hover { cursor: default }
+
+ol.outline { list-style:decimal; }
+ol.outline ol { list-style-type:lower-alpha }
+
+ol.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ol.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+ul.outline li.nofold {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.unfolded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em;
+}
+ul.outline li.folded:hover {
+ padding: 0 0 0 20px;
+ background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em;
+}
+
+/* for slides with class "title" in table of contents */
+a.titleslide { font-weight: bold; font-style: italic }
+
+/*
+ hide images for work around for save as bug
+ where browsers fail to save images used by CSS
+*/
+img.hidden { display: none; visibility: hidden }
+div.initial_prompt { display: none; visibility: hidden }
+
+ div.slide {
+ visibility: visible;
+ position: inherit;
+ }
+ div.handout {
+ border-top-style: solid;
+ border-top-width: thin;
+ border-top-color: black;
+ }
+
+@media screen {
+ .hidden { display: none; visibility: visible }
+
+ div.slide.hidden { display: block; visibility: visible }
+ div.handout.hidden { display: block; visibility: visible }
+ div.background { display: none; visibility: hidden }
+ body.single_slide div.initial_prompt { display: block; visibility: visible }
+ body.single_slide div.background { display: block; visibility: visible }
+ body.single_slide div.background.hidden { display: none; visibility: hidden }
+ body.single_slide .invisible { visibility: hidden }
+ body.single_slide .hidden { display: none; visibility: hidden }
+ body.single_slide div.slide { position: absolute }
+ body.single_slide div.handout { display: none; visibility: hidden }
+}
+
+@media print {
+ .hidden { display: block; visibility: visible }
+
+/*
+ div.slide pre { font-size: 60%; padding-left: 0.5em; }
+*/
+ div.toolbar { display: none; visibility: hidden; }
+ div.slidy_toc { display: none; visibility: hidden; }
+ div.background { display: none; visibility: hidden; }
+ div.slide { page-break-before: always }
+ /* :first-child isn't reliable for print media */
+ div.slide.first-slide { page-break-before: avoid }
+}
+
+
+/* SJR: AsciiDoc slidy backend tweaks */
+
+ol, ul {
+ margin: 0.8em 1.5em 0.8em 1.8em;
+}
+li > ul, li > ol {
+ margin-top: 0.5em;
+}
+
+.outline > li.folded,
+.outline > li.unfolded {
+ color: #527bbd;
+}
+ul > li{ color: #aaa; }
+ul > li > *, ol > li > * { color: black; }
+
+li {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+/* slidy.js
+
+ Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved.
+ W3C liability, trademark, document use and software licensing
+ rules apply, see:
+
+ http://www.w3.org/Consortium/Legal/copyright-documents
+ http://www.w3.org/Consortium/Legal/copyright-software
+*/
+
+// the slidy object implementation
+var w3c_slidy = {
+ // classify which kind of browser we're running under
+ ns_pos: (typeof window.pageYOffset!='undefined'),
+ khtml: ((navigator.userAgent).indexOf("KHTML") >= 0 ? true : false),
+ opera: ((navigator.userAgent).indexOf("Opera") >= 0 ? true : false),
+ ipad: ((navigator.userAgent).indexOf("iPad") >= 0 ? true : false),
+ iphone: ((navigator.userAgent).indexOf("iPhone") >= 0 ? true : false),
+ ie: (typeof document.all != "undefined" && !this.opera),
+ ie6: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 6") != -1),
+ ie7: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 7") != -1),
+ ie8: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 8") != -1),
+ ie9: (!this.ns_pos && navigator.userAgent.indexOf("MSIE 9") != -1),
+ keyboardless: (this.ipad || this.iphone),
+
+ // are we running as XHTML? (doesn't work on Opera)
+ is_xhtml: /xml/.test(document.contentType),
+
+ slide_number: 0, // integer slide count: 0, 1, 2, ...
+ slide_number_element: null, // element containing slide number
+ slides: [], // set to array of slide div's
+ notes: [], // set to array of handout div's
+ backgrounds: [], // set to array of background div's
+ toolbar: null, // element containing toolbar
+ title: null, // document title
+ last_shown: null, // last incrementally shown item
+ eos: null, // span element for end of slide indicator
+ toc: null, // table of contents
+ outline: null, // outline element with the focus
+ selected_text_len: 0, // length of drag selection on document
+ view_all: 0, // 1 to view all slides + handouts
+ want_toolbar: true, // user preference to show/hide toolbar
+ mouse_click_enabled: true, // enables left click for next slide
+ scroll_hack: 0, // IE work around for position: fixed
+ disable_slide_click: false, // used by clicked anchors
+
+ lang: "en", // updated to language specified by html file
+
+ help_anchor: null, // used for keyboard focus hack in showToolbar()
+ help_page: "http://www.w3.org/Talks/Tools/Slidy2/help/help.html",
+ help_text: "Navigate with mouse click, space bar, Cursor Left/Right, " +
+ "or Pg Up and Pg Dn. Use S and B to change font size.",
+
+ size_index: 0,
+ size_adjustment: 0,
+ sizes: new Array("10pt", "12pt", "14pt", "16pt", "18pt", "20pt",
+ "22pt", "24pt", "26pt", "28pt", "30pt", "32pt"),
+
+ // needed for efficient resizing
+ last_width: 0,
+ last_height: 0,
+
+
+ // Needed for cross browser support for relative width/height on
+ // object elements. The work around is to save width/height attributes
+ // and then to recompute absolute width/height dimensions on resizing
+ objects: [],
+
+ // attach initialiation event handlers
+ set_up: function () {
+ var init = function() { w3c_slidy.init(); };
+ if (typeof window.addEventListener != "undefined")
+ window.addEventListener("load", init, false);
+ else
+ window.attachEvent("onload", init);
+ },
+
+ hide_slides: function () {
+ if (document.body && !w3c_slidy.initialized)
+ document.body.style.visibility = "hidden";
+ else
+ setTimeout(w3c_slidy.hide_slides, 50);
+ },
+
+ // hack to persuade IE to compute correct document height
+ // as needed for simulating fixed positioning of toolbar
+ ie_hack: function () {
+ window.resizeBy(0,-1);
+ window.resizeBy(0, 1);
+ },
+
+ init: function () {
+ //alert("slidy starting test 10");
+ document.body.style.visibility = "visible";
+ w3c_slidy_i18n.init();
+ this.add_toolbar();
+ this.wrap_implicit_slides();
+ this.collect_slides();
+ this.collect_notes();
+ this.collect_backgrounds();
+ this.objects = document.body.getElementsByTagName("object");
+ this.patch_anchors();
+ this.slide_number = this.find_slide_number(location.href);
+ window.offscreenbuffering = true;
+ this.size_adjustment = this.find_size_adjust();
+ this.time_left = this.find_duration();
+ this.hide_image_toolbar(); // suppress IE image toolbar popup
+ this.init_outliner(); // activate fold/unfold support
+ this.title = document.title;
+
+ // work around for opera bug
+ this.is_xhtml = (document.body.tagName == "BODY" ? false : true);
+
+ if (this.slides.length > 0)
+ {
+ var slide = this.slides[this.slide_number];
+
+ if (this.slide_number > 0)
+ {
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ this.set_eos_status(true);
+ }
+ else
+ {
+ this.last_shown = null;
+ this.set_visibility_all_incremental("hidden");
+ this.set_eos_status(!this.next_incremental_item(this.last_shown));
+ }
+
+ this.set_location();
+ this.add_class(this.slides[0], "first-slide");
+ w3c_slidy.show_slide(slide);
+ }
+
+ this.toc = this.table_of_contents();
+
+ this.add_initial_prompt();
+
+ // bind event handlers without interfering with custom page scripts
+ // Tap events behave too weirdly to support clicks reliably on
+ // iPhone and iPad, so exclude these from click handler
+
+ if (!this.keyboardless)
+ this.add_listener(document.body, "click", this.mouse_button_click);
+
+ this.add_listener(document, "keydown", this.key_down);
+ this.add_listener(document, "keypress", this.key_press);
+ this.add_listener(window, "resize", this.resized);
+ this.add_listener(window, "scroll", this.scrolled);
+ this.add_listener(window, "unload", this.unloaded);
+
+ if (!document.body.onclick)
+ document.body.onclick = function () { };
+
+ this.single_slide_view();
+
+ //this.set_location();
+
+ this.resized();
+
+ if (this.ie7)
+ setTimeout(w3c_slidy.ie_hack, 100);
+
+ this.show_toolbar();
+
+ // for back button detection
+ setInterval(function () { w3c_slidy.check_location(); }, 200);
+ w3c_slidy.initialized = true;
+ },
+
+ // create div element with links to each slide
+ table_of_contents: function () {
+ var toc = this.create_element("div");
+ this.add_class(toc, "slidy_toc hidden");
+ //toc.setAttribute("tabindex", "0");
+
+ var heading = this.create_element("div");
+ this.add_class(heading, "toc-heading");
+ heading.innerHTML = "Table of Contents".localize();
+
+ toc.appendChild(heading);
+ var previous = null;
+
+ for (var i = 0; i < this.slides.length; ++i)
+ {
+ var title = this.has_class(this.slides[i], "title");
+ var num = document.createTextNode((i + 1) + ". ");
+
+ toc.appendChild(num);
+
+ var a = this.create_element("a");
+ a.setAttribute("href", "#(" + (i+1) + ")");
+
+ if (title)
+ this.add_class(a, "titleslide");
+
+ var name = document.createTextNode(this.slide_name(i));
+ a.appendChild(name);
+ a.onclick = w3c_slidy.toc_click;
+ a.onkeydown = w3c_slidy.toc_keydown;
+ a.previous = previous;
+
+ if (previous)
+ previous.next = a;
+
+ toc.appendChild(a);
+
+ if (i == 0)
+ toc.first = a;
+
+ if (i < this.slides.length - 1)
+ {
+ var br = this.create_element("br");
+ toc.appendChild(br);
+ }
+
+ previous = a;
+ }
+
+ toc.focus = function () {
+ if (this.first)
+ this.first.focus();
+ }
+
+ toc.onmouseup = w3c_slidy.mouse_button_up;
+
+ toc.onclick = function (e) {
+ e||(e=window.event);
+
+ if (w3c_slidy.selected_text_len <= 0)
+ w3c_slidy.hide_table_of_contents();
+
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ };
+
+ document.body.insertBefore(toc, document.body.firstChild);
+ return toc;
+ },
+
+ is_shown_toc: function () {
+ return !w3c_slidy.has_class(w3c_slidy.toc, "hidden");
+ },
+
+ show_table_of_contents: function () {
+ w3c_slidy.remove_class(w3c_slidy.toc, "hidden");
+ var toc = w3c_slidy.toc;
+ toc.focus();
+
+ if (w3c_slidy.ie7 && w3c_slidy.slide_number == 0)
+ setTimeout(w3c_slidy.ie_hack, 100);
+ },
+
+ hide_table_of_contents: function () {
+ w3c_slidy.add_class(w3c_slidy.toc, "hidden");
+
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ },
+
+ toggle_table_of_contents: function () {
+ if (w3c_slidy.is_shown_toc())
+ w3c_slidy.hide_table_of_contents();
+ else
+ w3c_slidy.show_table_of_contents();
+ },
+
+ // called on clicking toc entry
+ toc_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = w3c_slidy.get_target(e);
+
+ if (target && target.nodeType == 1)
+ {
+ var uri = target.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents(e);
+ if (w3c_slidy.ie7) w3c_slidy.ie_hack();
+ w3c_slidy.stop_propagation(e);
+ return w3c_slidy.cancel(e);
+ },
+
+ // called onkeydown for toc entry
+ toc_keydown: function (event) {
+ var key;
+
+ if (!event)
+ var event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey)
+ return true;
+
+ if (key == 13)
+ {
+ var uri = this.getAttribute("href");
+
+ if (uri)
+ {
+ //alert("going to " + uri);
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.find_slide_number(uri);
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_location();
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.show_slide(slide);
+ //target.focus();
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ }
+
+ w3c_slidy.hide_table_of_contents();
+
+ if (self.ie7)
+ w3c_slidy.ie_hack();
+
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 40 && this.next)
+ {
+ this.next.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 38 && this.previous)
+ {
+ this.previous.focus();
+ return w3c_slidy.cancel(event);
+ }
+
+ return true;
+ },
+
+
+ // ### OBSOLETE ###
+ before_print: function () {
+ this.show_all_slides();
+ this.hide_toolbar();
+ alert("before print");
+ },
+
+ // ### OBSOLETE ###
+ after_print: function () {
+ if (!this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ }
+ alert("after print");
+ },
+
+ // ### OBSOLETE ###
+ print_slides: function () {
+ this.before_print();
+ window.print();
+ this.after_print();
+ },
+
+ // ### OBSOLETE ?? ###
+ toggle_view: function () {
+ if (this.view_all)
+ {
+ this.single_slide_view();
+ this.show_toolbar();
+ this.view_all = 0;
+ }
+ else
+ {
+ this.show_all_slides();
+ this.hide_toolbar();
+ this.view_all = 1;
+ }
+ },
+
+ // prepare for printing ### OBSOLETE ###
+ show_all_slides: function () {
+ this.remove_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ },
+
+ // restore after printing ### OBSOLETE ###
+ single_slide_view: function () {
+ this.add_class(document.body, "single_slide");
+ this.set_visibility_all_incremental("visible");
+ this.last_shown = this.previous_incremental_item(null);
+ },
+
+ // suppress IE's image toolbar pop up
+ hide_image_toolbar: function () {
+ if (!this.ns_pos)
+ {
+ var images = document.getElementsByTagName("IMG");
+
+ for (var i = 0; i < images.length; ++i)
+ images[i].setAttribute("galleryimg", "no");
+ }
+ },
+
+ unloaded: function (e) {
+ //alert("unloaded");
+ },
+
+ // Safari and Konqueror don't yet support getComputedStyle()
+ // and they always reload page when location.href is updated
+ is_KHTML: function () {
+ var agent = navigator.userAgent;
+ return (agent.indexOf("KHTML") >= 0 ? true : false);
+ },
+
+ // find slide name from first h1 element
+ // default to document title + slide number
+ slide_name: function (index) {
+ var name = null;
+ var slide = this.slides[index];
+
+ var heading = this.find_heading(slide);
+
+ if (heading)
+ name = this.extract_text(heading);
+
+ if (!name)
+ name = this.title + "(" + (index + 1) + ")";
+
+ name.replace(/\&/g, "&");
+ name.replace(/\</g, "<");
+ name.replace(/\>/g, ">");
+
+ return name;
+ },
+
+ // find first h1 element in DOM tree
+ find_heading: function (node) {
+ if (!node || node.nodeType != 1)
+ return null;
+
+ if (node.nodeName == "H1" || node.nodeName == "h1")
+ return node;
+
+ var child = node.firstChild;
+
+ while (child)
+ {
+ node = this.find_heading(child);
+
+ if (node)
+ return node;
+
+ child = child.nextSibling;
+ }
+
+ return null;
+ },
+
+ // recursively extract text from DOM tree
+ extract_text: function (node) {
+ if (!node)
+ return "";
+
+ // text nodes
+ if (node.nodeType == 3)
+ return node.nodeValue;
+
+ // elements
+ if (node.nodeType == 1)
+ {
+ node = node.firstChild;
+ var text = "";
+
+ while (node)
+ {
+ text = text + this.extract_text(node);
+ node = node.nextSibling;
+ }
+
+ return text;
+ }
+
+ return "";
+ },
+
+ // find copyright text from meta element
+ find_copyright: function () {
+ var name, content;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "copyright")
+ return content;
+ }
+
+ return null;
+ },
+
+ find_size_adjust: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "font-size-adjustment")
+ return 1 * content;
+ }
+
+ return 1;
+ },
+
+ // <meta name="duration" content="20" /> for 20 minutes
+ find_duration: function () {
+ var name, content, offset;
+ var meta = document.getElementsByTagName("meta");
+
+ for (var i = 0; i < meta.length; ++i)
+ {
+ name = meta[i].getAttribute("name");
+ content = meta[i].getAttribute("content");
+
+ if (name == "duration")
+ return 60000 * content;
+ }
+
+ return null;
+ },
+
+ replace_by_non_breaking_space: function (str) {
+ for (var i = 0; i < str.length; ++i)
+ str[i] = 160;
+ },
+
+ // ### CHECK ME ### is use of "li" okay for text/html?
+ // for XHTML do we also need to specify namespace?
+ init_outliner: function () {
+ var items = document.getElementsByTagName("li");
+
+ for (var i = 0; i < items.length; ++i)
+ {
+ var target = items[i];
+
+ if (!this.has_class(target.parentNode, "outline"))
+ continue;
+
+ target.onclick = this.outline_click;
+/* ### more work needed for IE6
+ if (!this.ns_pos)
+ {
+ target.onmouseover = this.hover_outline;
+ target.onmouseout = this.unhover_outline;
+ }
+*/
+ if (this.foldable(target))
+ {
+ target.foldable = true;
+ target.onfocus = function () {w3c_slidy.outline = this;};
+ target.onblur = function () {w3c_slidy.outline = null;};
+
+ if (!target.getAttribute("tabindex"))
+ target.setAttribute("tabindex", "0");
+
+ if (this.has_class(target, "expand"))
+ this.unfold(target);
+ else
+ this.fold(target);
+ }
+ else
+ {
+ this.add_class(target, "nofold");
+ target.visible = true;
+ target.foldable = false;
+ }
+ }
+ },
+
+ foldable: function (item) {
+ if (!item || item.nodeType != 1)
+ return false;
+
+ var node = item.firstChild;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node))
+ return true;
+
+ node = node.nextSibling;
+ }
+
+ return false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ fold: function (item) {
+ if (item)
+ {
+ this.remove_class(item, "unfolded");
+ this.add_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.add_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = false;
+ },
+
+ // ### CHECK ME ### switch to add/remove "hidden" class
+ unfold: function (item) {
+ if (item)
+ {
+ this.add_class(item, "unfolded");
+ this.remove_class(item, "folded");
+ }
+
+ var node = item ? item.firstChild : null;
+
+ while (node)
+ {
+ if (node.nodeType == 1 && this.is_block(node)) // element
+ {
+ w3c_slidy.remove_class(node, "hidden");
+ }
+
+ node = node.nextSibling;
+ }
+
+ item.visible = true;
+ },
+
+ outline_click: function (e) {
+ if (!e)
+ e = window.event;
+
+ var rightclick = false;
+ var target = w3c_slidy.get_target(e);
+
+ while (target && target.visible == undefined)
+ target = target.parentNode;
+
+ if (!target)
+ return true;
+
+ if (e.which)
+ rightclick = (e.which == 3);
+ else if (e.button)
+ rightclick = (e.button == 2);
+
+ if (!rightclick && target.visible != undefined)
+ {
+ if (target.foldable)
+ {
+ if (target.visible)
+ w3c_slidy.fold(target);
+ else
+ w3c_slidy.unfold(target);
+ }
+
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ }
+
+ return false;
+ },
+
+ add_initial_prompt: function () {
+ var prompt = this.create_element("div");
+ prompt.setAttribute("class", "initial_prompt");
+
+ var p1 = this.create_element("p");
+ prompt.appendChild(p1);
+ p1.setAttribute("class", "help");
+
+ if (this.keyboardless)
+ p1.innerHTML = "Tap footer to move to next slide";
+ else
+ p1.innerHTML = "Space or Right Arrow to move to next " +
+ "slide, click help below for more details";
+
+ this.add_listener(prompt, "click", function (e) {
+ document.body.removeChild(prompt);
+ w3c_slidy.stop_propagation(e);
+
+ if (e.cancel != undefined)
+ e.cancel = true;
+
+ if (e.returnValue != undefined)
+ e.returnValue = false;
+
+ return false;
+ });
+
+ document.body.appendChild(prompt);
+ this.initial_prompt = prompt;
+ setTimeout(function() {document.body.removeChild(prompt);}, 5000);
+ },
+
+ add_toolbar: function () {
+ var counter, page;
+
+ this.toolbar = this.create_element("div");
+ this.toolbar.setAttribute("class", "toolbar");
+
+ // a reasonably behaved browser
+ if (this.ns_pos || !this.ie6)
+ {
+ var right = this.create_element("div");
+ right.setAttribute("style", "float: right; text-align: right");
+
+ counter = this.create_element("span")
+ counter.innerHTML = "slide".localize() + " n/m";
+ right.appendChild(counter);
+ this.toolbar.appendChild(right);
+
+ var left = this.create_element("div");
+ left.setAttribute("style", "text-align: left");
+
+ // global end of slide indicator
+ this.eos = this.create_element("span");
+ this.eos.innerHTML = "* ";
+ left.appendChild(this.eos);
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ left.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ left.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:w3c_slidy.toggle_table_of_contents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ left.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ left.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.className = "copyright";
+ span.innerHTML = copyright;
+ left.appendChild(span);
+ }
+
+ this.toolbar.setAttribute("tabindex", "0");
+ this.toolbar.appendChild(left);
+ }
+ else // IE6 so need to work around its poor CSS support
+ {
+ this.toolbar.style.position = (this.ie7 ? "fixed" : "absolute");
+ this.toolbar.style.zIndex = "200";
+ this.toolbar.style.width = "99.9%";
+ this.toolbar.style.height = "1.2em";
+ this.toolbar.style.top = "auto";
+ this.toolbar.style.bottom = "0";
+ this.toolbar.style.left = "0";
+ this.toolbar.style.right = "0";
+ this.toolbar.style.textAlign = "left";
+ this.toolbar.style.fontSize = "60%";
+ this.toolbar.style.color = "red";
+ this.toolbar.borderWidth = 0;
+ this.toolbar.className = "toolbar";
+ this.toolbar.style.background = "rgb(240,240,240)";
+
+ // would like to have help text left aligned
+ // and page counter right aligned, floating
+ // div's don't work, so instead use nested
+ // absolutely positioned div's.
+
+ var sp = this.create_element("span");
+ sp.innerHTML = " * ";
+ this.toolbar.appendChild(sp);
+ this.eos = sp; // end of slide indicator
+
+ var help = this.create_element("a");
+ help.setAttribute("href", this.help_page);
+ help.setAttribute("title", this.help_text.localize());
+ help.innerHTML = "help?".localize();
+ this.toolbar.appendChild(help);
+ this.help_anchor = help; // save for focus hack
+
+ var gap1 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap1);
+
+ var contents = this.create_element("a");
+ contents.setAttribute("href", "javascript:toggleTableOfContents()");
+ contents.setAttribute("title", "table of contents".localize());
+ contents.innerHTML = "contents?".localize();
+ this.toolbar.appendChild(contents);
+
+ var gap2 = document.createTextNode(" ");
+ this.toolbar.appendChild(gap2);
+
+ var copyright = this.find_copyright();
+
+ if (copyright)
+ {
+ var span = this.create_element("span");
+ span.innerHTML = copyright;
+ span.style.color = "black";
+ span.style.marginLeft = "0.5em";
+ this.toolbar.appendChild(span);
+ }
+
+ counter = this.create_element("div")
+ counter.style.position = "absolute";
+ counter.style.width = "auto"; //"20%";
+ counter.style.height = "1.2em";
+ counter.style.top = "auto";
+ counter.style.bottom = 0;
+ counter.style.right = "0";
+ counter.style.textAlign = "right";
+ counter.style.color = "red";
+ counter.style.background = "rgb(240,240,240)";
+
+ counter.innerHTML = "slide".localize() + " n/m";
+ this.toolbar.appendChild(counter);
+ }
+
+ // ensure that click isn't passed through to the page
+ this.toolbar.onclick =
+ function (e) {
+ if (!e)
+ e = window.event;
+
+ var target = e.target;
+
+ if (!target && e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target && target.nodeType == 3)
+ target = target.parentNode;
+
+ w3c_slidy.stop_propagation(e);
+
+ if (target && target.nodeName.toLowerCase() != "a")
+ w3c_slidy.mouse_button_click(e);
+ };
+
+ this.slide_number_element = counter;
+ this.set_eos_status(false);
+ document.body.appendChild(this.toolbar);
+ },
+
+ // wysiwyg editors make it hard to use div elements
+ // e.g. amaya loses the div when you copy and paste
+ // this function wraps div elements around implicit
+ // slides which start with an h1 element and continue
+ // up to the next heading or div element
+ wrap_implicit_slides: function () {
+ var i, heading, node, next, div;
+ var headings = document.getElementsByTagName("h1");
+
+ if (!headings)
+ return;
+
+ for (i = 0; i < headings.length; ++i)
+ {
+ heading = headings[i];
+
+ if (heading.parentNode != document.body)
+ continue;
+
+ node = heading.nextSibling;
+
+ div = document.createElement("div");
+ this.add_class(div, "slide");
+ document.body.replaceChild(div, heading);
+ div.appendChild(heading);
+
+ while (node)
+ {
+ if (node.nodeType == 1 && // an element
+ (node.nodeName == "H1" ||
+ node.nodeName == "h1" ||
+ node.nodeName == "DIV" ||
+ node.nodeName == "div"))
+ break;
+
+ next = node.nextSibling;
+ node = document.body.removeChild(node);
+ div.appendChild(node);
+ node = next;
+ }
+ }
+ },
+
+// return new array of all slides
+ collect_slides: function () {
+ var slides = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "slide"))
+ {
+ // add slide to collection
+ slides[slides.length] = div;
+
+ // hide each slide as it is found
+ this.add_class(div, "hidden");
+
+ // add dummy <br/> at end for scrolling hack
+ var node1 = document.createElement("br");
+ div.appendChild(node1);
+ var node2 = document.createElement("br");
+ div.appendChild(node2);
+ }
+ else if (this.has_class(div, "background"))
+ { // work around for Firefox SVG reload bug
+ // which otherwise replaces 1st SVG graphic with 2nd
+ div.style.display = "block";
+ }
+ }
+
+ this.slides = slides;
+ },
+
+ // return new array of all <div class="handout">
+ collect_notes: function () {
+ var notes = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "handout"))
+ {
+ // add note to collection
+ notes[notes.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.notes = notes;
+ },
+
+ // return new array of all <div class="background">
+ // including named backgrounds e.g. class="background titlepage"
+ collect_backgrounds: function () {
+ var backgrounds = new Array();
+ var divs = document.body.getElementsByTagName("div");
+
+ for (var i = 0; i < divs.length; ++i)
+ {
+ div = divs.item(i);
+
+ if (this.has_class(div, "background"))
+ {
+ // add background to collection
+ backgrounds[backgrounds.length] = div;
+
+ // and hide it
+ this.add_class(div, "hidden");
+ }
+ }
+
+ this.backgrounds = backgrounds;
+ },
+
+ // set click handlers on all anchors
+ patch_anchors: function () {
+ var self = w3c_slidy;
+ var handler = function (event) {
+ // compare this.href with location.href
+ // for link to another slide in this doc
+
+ if (self.page_address(this.href) == self.page_address(location.href))
+ {
+ // yes, so find new slide number
+ var newslidenum = self.find_slide_number(this.href);
+
+ if (newslidenum != self.slide_number)
+ {
+ var slide = self.slides[self.slide_number];
+ self.hide_slide(slide);
+ self.slide_number = newslidenum;
+ slide = self.slides[self.slide_number];
+ self.show_slide(slide);
+ self.set_location();
+ }
+ }
+ else if (this.target == null)
+ location.href = this.href;
+
+ this.blur();
+ self.disable_slide_click = true;
+ };
+
+ var anchors = document.body.getElementsByTagName("a");
+
+ for (var i = 0; i < anchors.length; ++i)
+ {
+ if (window.addEventListener)
+ anchors[i].addEventListener("click", handler, false);
+ else
+ anchors[i].attachEvent("onclick", handler);
+ }
+ },
+
+ // ### CHECK ME ### see which functions are invoked via setTimeout
+ // either directly or indirectly for use of w3c_slidy vs this
+ show_slide_number: function () {
+ var timer = w3c_slidy.get_timer();
+ w3c_slidy.slide_number_element.innerHTML = timer + "slide".localize() + " " +
+ (w3c_slidy.slide_number + 1) + "/" + w3c_slidy.slides.length;
+ },
+
+ // every 200mS check if the location has been changed as a
+ // result of the user activating the Back button/menu item
+ // doesn't work for Opera < 9.5
+ check_location: function () {
+ var hash = location.hash;
+
+ if (w3c_slidy.slide_number > 0 && (hash == "" || hash == "#"))
+ w3c_slidy.goto_slide(0);
+ else if (hash.length > 2 && hash != "#("+(w3c_slidy.slide_number+1)+")")
+ {
+ var num = parseInt(location.hash.substr(2));
+
+ if (!isNaN(num))
+ w3c_slidy.goto_slide(num-1);
+ }
+
+ if (w3c_slidy.time_left && w3c_slidy.slide_number > 0)
+ {
+ w3c_slidy.show_slide_number();
+
+ if (w3c_slidy.time_left > 0)
+ w3c_slidy.time_left -= 200;
+ }
+ },
+
+ get_timer: function () {
+ var timer = "";
+ if (w3c_slidy.time_left)
+ {
+ var mins, secs;
+ secs = Math.floor(w3c_slidy.time_left/1000);
+ mins = Math.floor(secs / 60);
+ secs = secs % 60;
+ timer = (mins ? mins+"m" : "") + secs + "s ";
+ }
+
+ return timer;
+ },
+
+ // this doesn't push location onto history stack for IE
+ // for which a hidden iframe hack is needed: load page into
+ // the iframe with script that set's parent's location.hash
+ // but that won't work for standalone use unless we can
+ // create the page dynamically via a javascript: URL
+ set_location: function () {
+ var uri = w3c_slidy.page_address(location.href);
+ var hash = "#(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (w3c_slidy.slide_number >= 0)
+ uri = uri + hash;
+
+ if (w3c_slidy.ie && !w3c_slidy.ie8)
+ w3c_slidy.push_hash(hash);
+
+ if (uri != location.href) // && !khtml
+ location.href = uri;
+
+ if (this.khtml)
+ hash = "(" + (w3c_slidy.slide_number+1) + ")";
+
+ if (!this.ie && location.hash != hash && location.hash != "")
+ location.hash = hash;
+
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide_number();
+ },
+
+ page_address: function (uri) {
+ var i = uri.indexOf("#");
+
+ if (i < 0)
+ i = uri.indexOf("%23");
+
+ // check if anchor is entire page
+
+ if (i < 0)
+ return uri; // yes
+
+ return uri.substr(0, i);
+ },
+
+ // only used for IE6 and IE7
+ on_frame_loaded: function (hash) {
+ location.hash = hash;
+ var uri = w3c_slidy.page_address(location.href);
+ location.href = uri + hash;
+ },
+
+ // history hack with thanks to Bertrand Le Roy
+ push_hash: function (hash) {
+ if (hash == "") hash = "#(1)";
+ window.location.hash = hash;
+
+ var doc = document.getElementById("historyFrame").contentWindow.document;
+ doc.open("javascript:'<html></html>'");
+ // PWL modified this string literal to break the close script tag
+ // which otherwise gets parsed when incorporated
+ doc.write("<html><head><script type=\"text/javascript\">window.parent.w3c_slidy.on_frame_loaded('"+
+ (hash) + "');</" + "script></head><body>hello mum</body></html>");
+ doc.close();
+ },
+
+ // find current slide based upon location
+ // first find target anchor and then look
+ // for associated div element enclosing it
+ // finally map that to slide number
+ find_slide_number: function (uri) {
+ // first get anchor from page location
+
+ var i = uri.indexOf("#");
+
+ // check if anchor is entire page
+ if (i < 0)
+ return 0; // yes
+
+ var anchor = unescape(uri.substr(i+1));
+
+ // now use anchor as XML ID to find target
+ var target = document.getElementById(anchor);
+
+ if (!target)
+ {
+ // does anchor look like "(2)" for slide 2 ??
+ // where first slide is (1)
+ var re = /\((\d)+\)/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // accept [2] for backwards compatibility
+ re = /\[(\d)+\]/;
+
+ if (anchor.match(re))
+ {
+ var num = parseInt(anchor.substring(1, anchor.length-1));
+
+ if (num > this.slides.length)
+ num = 1;
+
+ if (--num < 0)
+ num = 0;
+
+ return num;
+ }
+
+ // oh dear unknown anchor
+ return 0;
+ }
+
+ // search for enclosing slide
+
+ while (true)
+ {
+ // browser coerces html elements to uppercase!
+ if (target.nodeName.toLowerCase() == "div" &&
+ this.has_class(target, "slide"))
+ {
+ // found the slide element
+ break;
+ }
+
+ // otherwise try parent element if any
+
+ target = target.parentNode;
+
+ if (!target)
+ {
+ return 0; // no luck!
+ }
+ };
+
+ for (i = 0; i < slides.length; ++i)
+ {
+ if (slides[i] == target)
+ return i; // success
+ }
+
+ // oh dear still no luck
+ return 0;
+ },
+
+ previous_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if ((incremental || w3c_slidy.slide_number == 0) && w3c_slidy.last_shown != null)
+ {
+ w3c_slidy.last_shown = w3c_slidy.hide_previous_item(w3c_slidy.last_shown);
+ w3c_slidy.set_eos_status(false);
+ }
+ else if (w3c_slidy.slide_number > 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_location();
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ next_slide: function (incremental) {
+ if (!w3c_slidy.view_all)
+ {
+ var slide, last = w3c_slidy.last_shown;
+
+ if (incremental || w3c_slidy.slide_number == w3c_slidy.slides.length - 1)
+ w3c_slidy.last_shown = w3c_slidy.reveal_next_item(w3c_slidy.last_shown);
+
+ if ((!incremental || w3c_slidy.last_shown == null) &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = w3c_slidy.slide_number + 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+ else if (!w3c_slidy.last_shown)
+ {
+ if (last && incremental)
+ w3c_slidy.last_shown = last;
+ }
+
+ w3c_slidy.set_location();
+
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+
+ if (!w3c_slidy.ns_pos)
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ // to first slide with nothing revealed
+ // i.e. state at start of presentation
+ first_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ if (w3c_slidy.slide_number != 0)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+
+ w3c_slidy.slide_number = 0;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.show_slide(slide);
+ }
+
+ w3c_slidy.set_eos_status(
+ !w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ w3c_slidy.set_location();
+ }
+ },
+
+ // goto last slide with everything revealed
+ // i.e. state at end of presentation
+ last_slide: function () {
+ if (!w3c_slidy.view_all)
+ {
+ var slide;
+
+ w3c_slidy.last_shown = null; //revealNextItem(lastShown);
+
+ if (w3c_slidy.last_shown == null &&
+ w3c_slidy.slide_number < w3c_slidy.slides.length - 1)
+ {
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = w3c_slidy.slides.length - 1;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+
+ w3c_slidy.show_slide(slide);
+ }
+ else
+ {
+ w3c_slidy.set_visibility_all_incremental("visible");
+ w3c_slidy.last_shown = w3c_slidy.previous_incremental_item(null);
+ }
+
+ w3c_slidy.set_eos_status(true);
+ w3c_slidy.set_location();
+ }
+ },
+
+
+ // ### check this and consider add/remove class
+ set_eos_status: function (state) {
+ if (this.eos)
+ this.eos.style.color = (state ? "rgb(240,240,240)" : "red");
+ },
+
+ // first slide is 0
+ goto_slide: function (num) {
+ //alert("going to slide " + (num+1));
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.slide_number = num;
+ slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.last_shown = null;
+ w3c_slidy.set_visibility_all_incremental("hidden");
+ w3c_slidy.set_eos_status(!w3c_slidy.next_incremental_item(w3c_slidy.last_shown));
+ document.title = w3c_slidy.title + " (" + (w3c_slidy.slide_number+1) + ")";
+ w3c_slidy.show_slide(slide);
+ w3c_slidy.show_slide_number();
+ },
+
+
+ show_slide: function (slide) {
+ this.sync_background(slide);
+ window.scrollTo(0,0);
+ this.remove_class(slide, "hidden");
+ },
+
+ hide_slide: function (slide) {
+ this.add_class(slide, "hidden");
+ },
+
+ // show just the backgrounds pertinent to this slide
+ // when slide background-color is transparent
+ // this should now work with rgba color values
+ sync_background: function (slide) {
+ var background;
+ var bgColor;
+
+ if (slide.currentStyle)
+ bgColor = slide.currentStyle["backgroundColor"];
+ else if (document.defaultView)
+ {
+ var styles = document.defaultView.getComputedStyle(slide,null);
+
+ if (styles)
+ bgColor = styles.getPropertyValue("background-color");
+ else // broken implementation probably due Safari or Konqueror
+ {
+ //alert("defective implementation of getComputedStyle()");
+ bgColor = "transparent";
+ }
+ }
+ else
+ bgColor == "transparent";
+
+ if (bgColor == "transparent" ||
+ bgColor.indexOf("rgba") >= 0 ||
+ bgColor.indexOf("opacity") >= 0)
+ {
+ var slideClass = this.get_class_list(slide);
+
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+
+ var bgClass = this.get_class_list(background);
+
+ if (this.matching_background(slideClass, bgClass))
+ this.remove_class(background, "hidden");
+ else
+ this.add_class(background, "hidden");
+ }
+ }
+ else // forcibly hide all backgrounds
+ this.hide_backgrounds();
+ },
+
+ hide_backgrounds: function () {
+ for (var i = 0; i < this.backgrounds.length; i++)
+ {
+ background = this.backgrounds[i];
+ this.add_class(background, "hidden");
+ }
+ },
+
+ // compare classes for slide and background
+ matching_background: function (slideClass, bgClass) {
+ var i, count, pattern, result;
+
+ // define pattern as regular expression
+ pattern = /\w+/g;
+
+ // check background class names
+ result = bgClass.match(pattern);
+
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (result[i] == "background")
+ continue;
+
+ ++count;
+ }
+
+ if (count == 0) // default match
+ return true;
+
+ // check for matches and place result in array
+ result = slideClass.match(pattern);
+
+ // now check if desired name is present for background
+ for (i = count = 0; i < result.length; i++)
+ {
+ if (result[i] == "hidden")
+ continue;
+
+ if (this.has_token(bgClass, result[i]))
+ return true;
+ }
+
+ return false;
+ },
+
+ resized: function () {
+ var width = 0;
+
+ if ( typeof( window.innerWidth ) == 'number' )
+ width = window.innerWidth; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientWidth)
+ width = document.documentElement.clientWidth; // IE6
+ else if (document.body && document.body.clientWidth)
+ width = document.body.clientWidth; // IE4
+
+ var height = 0;
+
+ if ( typeof( window.innerHeight ) == 'number' )
+ height = window.innerHeight; // Non IE browser
+ else if (document.documentElement && document.documentElement.clientHeight)
+ height = document.documentElement.clientHeight; // IE6
+ else if (document.body && document.body.clientHeight)
+ height = document.body.clientHeight; // IE4
+
+ if (height && (width/height > 1.05*1024/768))
+ {
+ width = height * 1024.0/768;
+ }
+
+ // IE fires onresize even when only font size is changed!
+ // so we do a check to avoid blocking < and > actions
+ if (width != w3c_slidy.last_width || height != w3c_slidy.last_height)
+ {
+ if (width >= 1100)
+ w3c_slidy.size_index = 5; // 4
+ else if (width >= 1000)
+ w3c_slidy.size_index = 4; // 3
+ else if (width >= 800)
+ w3c_slidy.size_index = 3; // 2
+ else if (width >= 600)
+ w3c_slidy.size_index = 2; // 1
+ else if (width)
+ w3c_slidy.size_index = 0;
+
+ // add in font size adjustment from meta element e.g.
+ // <meta name="font-size-adjustment" content="-2" />
+ // useful when slides have too much content ;-)
+
+ if (0 <= w3c_slidy.size_index + w3c_slidy.size_adjustment &&
+ w3c_slidy.size_index + w3c_slidy.size_adjustment < w3c_slidy.sizes.length)
+ w3c_slidy.size_index = w3c_slidy.size_index + w3c_slidy.size_adjustment;
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ w3c_slidy.adjust_object_dimensions(width, height);
+
+ if (document.body.style.fontSize != w3c_slidy.sizes[w3c_slidy.size_index])
+ {
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ }
+
+ w3c_slidy.last_width = width;
+ w3c_slidy.last_height = height;
+
+ // force reflow to work around Mozilla bug
+ if (w3c_slidy.ns_pos)
+ {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ }
+
+ // force correct positioning of toolbar
+ w3c_slidy.refresh_toolbar(200);
+ }
+ },
+
+ scrolled: function () {
+ if (w3c_slidy.toolbar && !w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hack_offset = w3c_slidy.scroll_x_offset();
+ // hide toolbar
+ w3c_slidy.toolbar.style.display = "none";
+
+ // make it reappear later
+ if (w3c_slidy.scrollhack == 0 && !w3c_slidy.view_all)
+ {
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 1000);
+ w3c_slidy.scrollhack = 1;
+ }
+ }
+ },
+
+ hide_toolbar: function () {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden");
+ window.focus();
+ },
+
+ // used to ensure IE refreshes toolbar in correct position
+ refresh_toolbar: function (interval) {
+ if (!w3c_slidy.ns_pos && !w3c_slidy.ie7)
+ {
+ w3c_slidy.hide_toolbar();
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, interval);
+ }
+ },
+
+ // restores toolbar after short delay
+ show_toolbar: function () {
+ if (w3c_slidy.want_toolbar)
+ {
+ w3c_slidy.toolbar.style.display = "block";
+
+ if (!w3c_slidy.ns_pos)
+ {
+ // adjust position to allow for scrolling
+ var xoffset = w3c_slidy.scroll_x_offset();
+ w3c_slidy.toolbar.style.left = xoffset;
+ w3c_slidy.toolbar.style.right = xoffset;
+
+ // determine vertical scroll offset
+ //var yoffset = scrollYOffset();
+
+ // bottom is doc height - window height - scroll offset
+ //var bottom = documentHeight() - lastHeight - yoffset
+
+ //if (yoffset > 0 || documentHeight() > lastHeight)
+ // bottom += 16; // allow for height of scrollbar
+
+ w3c_slidy.toolbar.style.bottom = 0; //bottom;
+ }
+
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden");
+ }
+
+ w3c_slidy.scrollhack = 0;
+
+
+ // set the keyboard focus to the help link on the
+ // toolbar to ensure that document has the focus
+ // IE doesn't always work with window.focus()
+ // and this hack has benefit of Enter for help
+
+ try
+ {
+ if (!w3c_slidy.opera)
+ w3c_slidy.help_anchor.focus();
+ }
+ catch (e)
+ {
+ }
+ },
+
+// invoked via F key
+ toggle_toolbar: function () {
+ if (!w3c_slidy.view_all)
+ {
+ if (w3c_slidy.has_class(w3c_slidy.toolbar, "hidden"))
+ {
+ w3c_slidy.remove_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 1;
+ }
+ else
+ {
+ w3c_slidy.add_class(w3c_slidy.toolbar, "hidden")
+ w3c_slidy.want_toolbar = 0;
+ }
+ }
+ },
+
+ scroll_x_offset: function () {
+ if (window.pageXOffset)
+ return self.pageXOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollLeft)
+ return document.documentElement.scrollLeft;
+
+ if (document.body)
+ return document.body.scrollLeft;
+
+ return 0;
+ },
+
+ scroll_y_offset: function () {
+ if (window.pageYOffset)
+ return self.pageYOffset;
+
+ if (document.documentElement &&
+ document.documentElement.scrollTop)
+ return document.documentElement.scrollTop;
+
+ if (document.body)
+ return document.body.scrollTop;
+
+ return 0;
+ },
+
+ // looking for a way to determine height of slide content
+ // the slide itself is set to the height of the window
+ optimize_font_size: function () {
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ //var dh = documentHeight(); //getDocHeight(document);
+ var dh = slide.scrollHeight;
+ var wh = getWindowHeight();
+ var u = 100 * dh / wh;
+
+ alert("window utilization = " + u + "% (doc "
+ + dh + " win " + wh + ")");
+ },
+
+ // from document object
+ get_doc_height: function (doc) {
+ if (!doc)
+ doc = document;
+
+ if (doc && doc.body && doc.body.offsetHeight)
+ return doc.body.offsetHeight; // ns/gecko syntax
+
+ if (doc && doc.body && doc.body.scrollHeight)
+ return doc.body.scrollHeight;
+
+ alert("couldn't determine document height");
+ },
+
+ get_window_height: function () {
+ if ( typeof( window.innerHeight ) == 'number' )
+ return window.innerHeight; // Non IE browser
+
+ if (document.documentElement && document.documentElement.clientHeight)
+ return document.documentElement.clientHeight; // IE6
+
+ if (document.body && document.body.clientHeight)
+ return document.body.clientHeight; // IE4
+ },
+
+ document_height: function () {
+ var sh, oh;
+
+ sh = document.body.scrollHeight;
+ oh = document.body.offsetHeight;
+
+ if (sh && oh)
+ {
+ return (sh > oh ? sh : oh);
+ }
+
+ // no idea!
+ return 0;
+ },
+
+ smaller: function () {
+ if (w3c_slidy.size_index > 0)
+ {
+ --w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ bigger: function () {
+ if (w3c_slidy.size_index < w3c_slidy.sizes.length - 1)
+ {
+ ++w3c_slidy.size_index;
+ }
+
+ w3c_slidy.toolbar.style.display = "none";
+ document.body.style.fontSize = w3c_slidy.sizes[w3c_slidy.size_index];
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+ w3c_slidy.hide_slide(slide);
+ w3c_slidy.show_slide(slide);
+ setTimeout(function () {w3c_slidy.show_toolbar(); }, 50);
+ },
+
+ // enables cross browser use of relative width/height
+ // on object elements for use with SVG and Flash media
+ // with thanks to Ivan Herman for the suggestion
+ adjust_object_dimensions: function (width, height) {
+ for( var i = 0; i < w3c_slidy.objects.length; i++ )
+ {
+ var obj = this.objects[i];
+ var mimeType = obj.getAttribute("type");
+
+ if (mimeType == "image/svg+xml" || mimeType == "application/x-shockwave-flash")
+ {
+ if ( !obj.initialWidth )
+ obj.initialWidth = obj.getAttribute("width");
+
+ if ( !obj.initialHeight )
+ obj.initialHeight = obj.getAttribute("height");
+
+ if ( obj.initialWidth && obj.initialWidth.charAt(obj.initialWidth.length-1) == "%" )
+ {
+ var w = parseInt(obj.initialWidth.slice(0, obj.initialWidth.length-1));
+ var newW = width * (w/100.0);
+ obj.setAttribute("width",newW);
+ }
+
+ if ( obj.initialHeight &&
+ obj.initialHeight.charAt(obj.initialHeight.length-1) == "%" )
+ {
+ var h = parseInt(obj.initialHeight.slice(0, obj.initialHeight.length-1));
+ var newH = height * (h/100.0);
+ obj.setAttribute("height", newH);
+ }
+ }
+ }
+ },
+
+ // needed for Opera to inhibit default behavior
+ // since Opera delivers keyPress even if keyDown
+ // was cancelled
+ key_press: function (event) {
+ if (!event)
+ event = window.event;
+
+ if (!w3c_slidy.key_wanted)
+ return w3c_slidy.cancel(event);
+
+ return true;
+ },
+
+ // See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
+ key_down: function (event) {
+ var key;
+
+ w3c_slidy.key_wanted = true;
+
+ if (!event)
+ event = window.event;
+
+ // kludge around NS/IE differences
+ if (window.event)
+ key = window.event.keyCode;
+ else if (event.which)
+ key = event.which;
+ else
+ return true; // Yikes! unknown browser
+
+ // ignore event if key value is zero
+ // as for alt on Opera and Konqueror
+ if (!key)
+ return true;
+
+ // check for concurrent control/command/alt key
+ // but are these only present on mouse events?
+
+ if (event.ctrlKey || event.altKey || event.metaKey)
+ return true;
+
+ // dismiss table of contents if visible
+ if (w3c_slidy.is_shown_toc() && key != 9 && key != 16 && key != 38 && key != 40)
+ {
+ w3c_slidy.hide_table_of_contents();
+
+ if (key == 27 || key == 84 || key == 67)
+ return w3c_slidy.cancel(event);
+ }
+
+ if (key == 34) // Page Down
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.next_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 33) // Page Up
+ {
+ if (w3c_slidy.view_all)
+ return true;
+
+ w3c_slidy.previous_slide(false);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 32) // space bar
+ {
+ w3c_slidy.next_slide(true);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 37) // Left arrow
+ {
+ w3c_slidy.previous_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 36) // Home
+ {
+ w3c_slidy.first_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 35) // End
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 39) // Right arrow
+ {
+ w3c_slidy.next_slide(!event.shiftKey);
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 13) // Enter
+ {
+ if (w3c_slidy.outline)
+ {
+ if (w3c_slidy.outline.visible)
+ w3c_slidy.fold(w3c_slidy.outline);
+ else
+ w3c_slidy.unfold(w3c_slidy.outline);
+
+ return w3c_slidy.cancel(event);
+ }
+ }
+ else if (key == 188) // < for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 190) // > for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 189 || key == 109) // - for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 187 || key == 191 || key == 107) // = + for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 83) // S for smaller fonts
+ {
+ w3c_slidy.smaller();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 66) // B for larger fonts
+ {
+ w3c_slidy.bigger();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 90) // Z for last slide
+ {
+ w3c_slidy.last_slide();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 70) // F for toggle toolbar
+ {
+ w3c_slidy.toggle_toolbar();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 65) // A for toggle view single/all slides
+ {
+ w3c_slidy.toggle_view();
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 75) // toggle action of left click for next page
+ {
+ w3c_slidy.mouse_click_enabled = !w3c_slidy.mouse_click_enabled;
+ var alert_msg = (w3c_slidy.mouse_click_enabled ?
+ "enabled" : "disabled") + " mouse click advance";
+
+ alert(alert_msg.localize());
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 84 || key == 67) // T or C for table of contents
+ {
+ if (w3c_slidy.toc)
+ w3c_slidy.toggle_table_of_contents();
+
+ return w3c_slidy.cancel(event);
+ }
+ else if (key == 72) // H for help
+ {
+ window.location = w3c_slidy.help_page;
+ return w3c_slidy.cancel(event);
+ }
+ //else alert("key code is "+ key);
+
+ return true;
+ },
+
+ // safe for both text/html and application/xhtml+xml
+ create_element: function (name) {
+ if (this.xhtml && (typeof document.createElementNS != 'undefined'))
+ return document.createElementNS("http://www.w3.org/1999/xhtml", name)
+
+ return document.createElement(name);
+ },
+
+ get_element_style: function (elem, IEStyleProp, CSSStyleProp) {
+ if (elem.currentStyle)
+ {
+ return elem.currentStyle[IEStyleProp];
+ }
+ else if (window.getComputedStyle)
+ {
+ var compStyle = window.getComputedStyle(elem, "");
+ return compStyle.getPropertyValue(CSSStyleProp);
+ }
+ return "";
+ },
+
+ // the string str is a whitespace separated list of tokens
+ // test if str contains a particular token, e.g. "slide"
+ has_token: function (str, token) {
+ if (str)
+ {
+ // define pattern as regular expression
+ var pattern = /\w+/g;
+
+ // check for matches
+ // place result in array
+ var result = str.match(pattern);
+
+ // now check if desired token is present
+ for (var i = 0; i < result.length; i++)
+ {
+ if (result[i] == token)
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ get_class_list: function (element) {
+ if (typeof element.className != 'undefined')
+ return element.className;
+
+ return element.getAttribute("class");
+ },
+
+ has_class: function (element, name) {
+ if (element.nodeType != 1)
+ return false;
+
+ var regexp = new RegExp("(^| )" + name + "\W*");
+
+ if (typeof element.className != 'undefined')
+ return regexp.test(element.className);
+
+ return regexp.test(element.getAttribute("class"));
+ },
+
+ remove_class: function (element, name) {
+ var regexp = new RegExp("(^| )" + name + "\W*");
+ var clsval = "";
+
+ if (typeof element.className != 'undefined')
+ {
+ clsval = element.className;
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.className = clsval;
+ }
+ }
+ else
+ {
+ clsval = element.getAttribute("class");
+
+ if (clsval)
+ {
+ clsval = clsval.replace(regexp, "");
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ add_class: function (element, name) {
+ if (!this.has_class(element, name))
+ {
+ if (typeof element.className != 'undefined')
+ element.className += " " + name;
+ else
+ {
+ var clsval = element.getAttribute("class");
+ clsval = clsval ? clsval + " " + name : name;
+ element.setAttribute("class", clsval);
+ }
+ }
+ },
+
+ // HTML elements that can be used with class="incremental"
+ // note that you can also put the class on containers like
+ // up, ol, dl, and div to make their contents appear
+ // incrementally. Upper case is used since this is what
+ // browsers report for HTML node names (text/html).
+ incremental_elements: null,
+ okay_for_incremental: function (name) {
+ if (!this.incremental_elements)
+ {
+ var inclist = new Array();
+ inclist["p"] = true;
+ inclist["pre"] = true;
+ inclist["li"] = true;
+ inclist["blockquote"] = true;
+ inclist["dt"] = true;
+ inclist["dd"] = true;
+ inclist["h2"] = true;
+ inclist["h3"] = true;
+ inclist["h4"] = true;
+ inclist["h5"] = true;
+ inclist["h6"] = true;
+ inclist["span"] = true;
+ inclist["address"] = true;
+ inclist["table"] = true;
+ inclist["tr"] = true;
+ inclist["th"] = true;
+ inclist["td"] = true;
+ inclist["img"] = true;
+ inclist["object"] = true;
+ this.incremental_elements = inclist;
+ }
+ return this.incremental_elements[name.toLowerCase()];
+ },
+
+ next_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.next_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1) // ELEMENT
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ previous_incremental_item: function (node) {
+ var br = this.is_xhtml ? "br" : "BR";
+ var slide = w3c_slidy.slides[w3c_slidy.slide_number];
+
+ for (;;)
+ {
+ node = w3c_slidy.previous_node(slide, node);
+
+ if (node == null || node.parentNode == null)
+ break;
+
+ if (node.nodeType == 1)
+ {
+ if (node.nodeName == br)
+ continue;
+
+ if (w3c_slidy.has_class(node, "incremental")
+ && w3c_slidy.okay_for_incremental(node.nodeName))
+ return node;
+
+ if (w3c_slidy.has_class(node.parentNode, "incremental")
+ && !w3c_slidy.has_class(node, "non-incremental"))
+ return node;
+ }
+ }
+
+ return node;
+ },
+
+ // set visibility for all elements on current slide with
+ // a parent element with attribute class="incremental"
+ set_visibility_all_incremental: function (value) {
+ var node = this.next_incremental_item(null);
+
+ if (value == "hidden")
+ {
+ while (node)
+ {
+ w3c_slidy.add_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ else // value == "visible"
+ {
+ while (node)
+ {
+ w3c_slidy.remove_class(node, "invisible");
+ node = w3c_slidy.next_incremental_item(node);
+ }
+ }
+ },
+
+ // reveal the next hidden item on the slide
+ // node is null or the node that was last revealed
+ reveal_next_item: function (node) {
+ node = w3c_slidy.next_incremental_item(node);
+
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.remove_class(node, "invisible");
+
+ return node;
+ },
+
+ // exact inverse of revealNextItem(node)
+ hide_previous_item: function (node) {
+ if (node && node.nodeType == 1) // an element
+ w3c_slidy.add_class(node, "invisible");
+
+ return this.previous_incremental_item(node);
+ },
+
+ // left to right traversal of root's content
+ next_node: function (root, node) {
+ if (node == null)
+ return root.firstChild;
+
+ if (node.firstChild)
+ return node.firstChild;
+
+ if (node.nextSibling)
+ return node.nextSibling;
+
+ for (;;)
+ {
+ node = node.parentNode;
+
+ if (!node || node == root)
+ break;
+
+ if (node && node.nextSibling)
+ return node.nextSibling;
+ }
+
+ return null;
+ },
+
+ // right to left traversal of root's content
+ previous_node: function (root, node) {
+ if (node == null)
+ {
+ node = root.lastChild;
+
+ if (node)
+ {
+ while (node.lastChild)
+ node = node.lastChild;
+ }
+
+ return node;
+ }
+
+ if (node.previousSibling)
+ {
+ node = node.previousSibling;
+
+ while (node.lastChild)
+ node = node.lastChild;
+
+ return node;
+ }
+
+ if (node.parentNode != root)
+ return node.parentNode;
+
+ return null;
+ },
+
+ previous_sibling_element: function (el) {
+ el = el.previousSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.previousSibling;
+
+ return el;
+ },
+
+ next_sibling_element: function (el) {
+ el = el.nextSibling;
+
+ while (el && el.nodeType != 1)
+ el = el.nextSibling;
+
+ return el;
+ },
+
+ first_child_element: function (el) {
+ var node;
+
+ for (node = el.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1)
+ break;
+ }
+
+ return node;
+ },
+
+ first_tag: function (element, tag) {
+ var node;
+
+ if (!this.is_xhtml)
+ tag = tag.toUpperCase();
+
+ for (node = element.firstChild; node; node = node.nextSibling)
+ {
+ if (node.nodeType == 1 && node.nodeName == tag)
+ break;
+ }
+
+ return node;
+ },
+
+ hide_selection: function () {
+ if (window.getSelection) // Firefox, Chromium, Safari, Opera
+ {
+ var selection = window.getSelection();
+
+ if (selection.rangeCount > 0)
+ {
+ var range = selection.getRangeAt(0);
+ range.collapse (false);
+ }
+ }
+ else // Internet Explorer
+ {
+ var textRange = document.selection.createRange ();
+ textRange.collapse (false);
+ }
+ },
+
+ get_selected_text: function () {
+ try
+ {
+ if (window.getSelection)
+ return window.getSelection().toString();
+
+ if (document.getSelection)
+ return document.getSelection().toString();
+
+ if (document.selection)
+ return document.selection.createRange().text;
+ }
+ catch (e)
+ {
+ }
+
+ return "";
+ },
+
+ // make note of length of selected text
+ // as this evaluates to zero in click event
+ mouse_button_up: function (e) {
+ w3c_slidy.selected_text_len = w3c_slidy.get_selected_text().length;
+ },
+
+ // right mouse button click is reserved for context menus
+ // it is more reliable to detect rightclick than leftclick
+ mouse_button_click: function (e) {
+ var rightclick = false;
+ var leftclick = false;
+ var middleclick = false;
+ var target;
+
+ if (!e)
+ var e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ // work around Safari bug
+ if (target.nodeType == 3)
+ target = target.parentNode;
+
+ if (e.which) // all browsers except IE
+ {
+ leftclick = (e.which == 1);
+ middleclick = (e.which == 2);
+ rightclick = (e.which == 3);
+ }
+ else if (e.button)
+ {
+ // Konqueror gives 1 for left, 4 for middle
+ // IE6 gives 0 for left and not 1 as I expected
+
+ if (e.button == 4)
+ middleclick = true;
+
+ // all browsers agree on 2 for right button
+ rightclick = (e.button == 2);
+ }
+ else leftclick = true;
+/*
+ alert("you clicked over a " + target.nodeName + " element\n" +
+ "w3c_slidy.mouse_click_enabled = " + w3c_slidy.mouse_click_enabled + "\n" +
+ "leftclick = " + leftclick + "\n" +
+ "selected text length = " + w3c_slidy.selected_text_len);
+ //alert("selected text length = " + w3c_slidy.selected_text_len);
+*/
+ if (w3c_slidy.selected_text_len > 0)
+ {
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+
+ // dismiss table of contents
+ w3c_slidy.hide_table_of_contents();
+
+ // check if target is something that probably want's clicks
+ // e.g. a, embed, object, input, textarea, select, option
+ var tag = target.nodeName.toLowerCase();
+
+ if (w3c_slidy.mouse_click_enabled && leftclick &&
+ tag != "a" &&
+ tag != "embed" &&
+ tag != "object" &&
+ tag != "video" &&
+ tag != "input" &&
+ tag != "textarea" &&
+ tag != "select" &&
+ tag != "option" &&
+ !target.onclick)
+ {
+ w3c_slidy.next_slide(true);
+ w3c_slidy.stop_propagation(e);
+ e.cancel = true;
+ e.returnValue = false;
+ return false;
+ }
+ },
+
+ get_key: function (e)
+ {
+ var key;
+
+ // kludge around NS/IE differences
+ if (typeof window.event != "undefined")
+ key = window.event.keyCode;
+ else if (e.which)
+ key = e.which;
+
+ return key;
+ },
+
+ get_target: function (e) {
+ var target;
+
+ if (!e)
+ e = window.event;
+
+ if (e.target)
+ target = e.target;
+ else if (e.srcElement)
+ target = e.srcElement;
+
+ if (target.nodeType != 1)
+ target = target.parentNode;
+
+ return target;
+ },
+
+ // does display property provide correct defaults?
+ is_block: function (elem) {
+ var tag = elem.nodeName.toLowerCase();
+
+ return tag == "ol" || tag == "ul" || tag == "p" ||
+ tag == "li" || tag == "table" || tag == "pre" ||
+ tag == "h1" || tag == "h2" || tag == "h3" ||
+ tag == "h4" || tag == "h5" || tag == "h6" ||
+ tag == "blockquote" || tag == "address";
+ },
+
+ add_listener: function (element, event, handler) {
+ if (window.addEventListener)
+ element.addEventListener(event, handler, false);
+ else
+ element.attachEvent("on"+event, handler);
+ },
+
+ // used to prevent event propagation from field controls
+ stop_propagation: function (event) {
+ event = event ? event : window.event;
+ event.cancelBubble = true; // for IE
+
+ if (event.stopPropagation)
+ event.stopPropagation();
+
+ return true;
+ },
+
+ cancel: function (event) {
+ if (event)
+ {
+ event.cancel = true;
+ event.returnValue = false;
+
+ if (event.preventDefault)
+ event.preventDefault();
+ }
+
+ w3c_slidy.key_wanted = false;
+ return false;
+ }
+};
+
+// for each language define an associative array
+// and also the help text which is longer
+
+var w3c_slidy_i18n = {
+ strings_es: {
+ "slide":"pág.",
+ "help?":"Ayuda",
+ "contents?":"Índice",
+ "table of contents":"tabla de contenidos",
+ "Table of Contents":"Tabla de Contenidos",
+ "restart presentation":"Reiniciar presentación",
+ "restart?":"Inicio"
+ },
+ help_es:
+ "Utilice el ratón, barra espaciadora, teclas Izda/Dcha, " +
+ "o Re pág y Av pág. Use S y B para cambiar el tamaño de fuente.",
+
+ strings_ca: {
+ "slide":"pàg..",
+ "help?":"Ajuda",
+ "contents?":"Índex",
+ "table of contents":"taula de continguts",
+ "Table of Contents":"Taula de Continguts",
+ "restart presentation":"Reiniciar presentació",
+ "restart?":"Inici"
+ },
+ help_ca:
+ "Utilitzi el ratolí, barra espaiadora, tecles Esq./Dta. " +
+ "o Re pàg y Av pàg. Usi S i B per canviar grandària de font.",
+
+ strings_cs: {
+ "slide":"snímek",
+ "help?":"nápověda",
+ "contents?":"obsah",
+ "table of contents":"obsah prezentace",
+ "Table of Contents":"Obsah prezentace",
+ "restart presentation":"znovu spustit prezentaci",
+ "restart?":"restart"
+ },
+ help_cs:
+ "Prezentaci můžete procházet pomocí kliknutí myši, mezerníku, " +
+ "šipek vlevo a vpravo nebo kláves PageUp a PageDown. Písmo se " +
+ "dá zvětšit a zmenšit pomocí kláves B a S.",
+
+ strings_nl: {
+ "slide":"pagina",
+ "help?":"Help?",
+ "contents?":"Inhoud?",
+ "table of contents":"inhoudsopgave",
+ "Table of Contents":"Inhoudsopgave",
+ "restart presentation":"herstart presentatie",
+ "restart?":"Herstart?"
+ },
+ help_nl:
+ "Navigeer d.m.v. het muis, spatiebar, Links/Rechts toetsen, " +
+ "of PgUp en PgDn. Gebruik S en B om de karaktergrootte te veranderen.",
+
+ strings_de: {
+ "slide":"Seite",
+ "help?":"Hilfe",
+ "contents?":"Übersicht",
+ "table of contents":"Inhaltsverzeichnis",
+ "Table of Contents":"Inhaltsverzeichnis",
+ "restart presentation":"Präsentation neu starten",
+ "restart?":"Neustart"
+ },
+ help_de:
+ "Benutzen Sie die Maus, Leerschlag, die Cursortasten links/rechts oder " +
+ "Page up/Page Down zum Wechseln der Seiten und S und B für die Schriftgrösse.",
+
+ strings_pl: {
+ "slide":"slajd",
+ "help?":"pomoc?",
+ "contents?":"spis treści?",
+ "table of contents":"spis treści",
+ "Table of Contents":"Spis Treści",
+ "restart presentation":"Restartuj prezentację",
+ "restart?":"restart?"
+ },
+ help_pl:
+ "Zmieniaj slajdy klikając myszą, naciskając spację, strzałki lewo/prawo" +
+ "lub PgUp / PgDn. Użyj klawiszy S i B, aby zmienić rozmiar czczionki.",
+
+ strings_fr: {
+ "slide":"page",
+ "help?":"Aide",
+ "contents?":"Index",
+ "table of contents":"table des matières",
+ "Table of Contents":"Table des matières",
+ "restart presentation":"Recommencer l'exposé",
+ "restart?":"Début"
+ },
+ help_fr:
+ "Naviguez avec la souris, la barre d'espace, les flèches " +
+ "gauche/droite ou les touches Pg Up, Pg Dn. Utilisez " +
+ "les touches S et B pour modifier la taille de la police.",
+
+ strings_hu: {
+ "slide":"oldal",
+ "help?":"segítség",
+ "contents?":"tartalom",
+ "table of contents":"tartalomjegyzék",
+ "Table of Contents":"Tartalomjegyzék",
+ "restart presentation":"bemutató újraindítása",
+ "restart?":"újraindítás"
+ },
+ help_hu:
+ "Az oldalak közti lépkedéshez kattintson az egérrel, vagy " +
+ "használja a szóköz, a bal, vagy a jobb nyíl, illetve a Page Down, " +
+ "Page Up billentyűket. Az S és a B billentyűkkel változtathatja " +
+ "a szöveg méretét.",
+
+ strings_it: {
+ "slide":"pag.",
+ "help?":"Aiuto",
+ "contents?":"Indice",
+ "table of contents":"indice",
+ "Table of Contents":"Indice",
+ "restart presentation":"Ricominciare la presentazione",
+ "restart?":"Inizio"
+ },
+ help_it:
+ "Navigare con mouse, barra spazio, frecce sinistra/destra o " +
+ "PgUp e PgDn. Usare S e B per cambiare la dimensione dei caratteri.",
+
+ strings_el: {
+ "slide":"σελίδα",
+ "help?":"βοήθεια;",
+ "contents?":"περιεχόμενα;",
+ "table of contents":"πίνακας περιεχομένων",
+ "Table of Contents":"Πίνακας Περιεχομένων",
+ "restart presentation":"επανεκκίνηση παρουσίασης",
+ "restart?":"επανεκκίνηση;"
+ },
+ help_el:
+ "Πλοηγηθείτε με το κλίκ του ποντικιού, το space, τα βέλη αριστερά/δεξιά, " +
+ "ή Page Up και Page Down. Χρησιμοποιήστε τα πλήκτρα S και B για να αλλάξετε " +
+ "το μέγεθος της γραμματοσειράς.",
+
+ strings_ja: {
+ "slide":"スライド",
+ "help?":"ヘルプ",
+ "contents?":"目次",
+ "table of contents":"目次を表示",
+ "Table of Contents":"目次",
+ "restart presentation":"最初から再生",
+ "restart?":"最初から"
+ },
+ help_ja:
+ "マウス左クリック ・ スペース ・ 左右キー " +
+ "または Page Up ・ Page Downで操作, S ・ Bでフォントサイズ変更",
+
+ strings_zh: {
+ "slide":"幻灯片",
+ "help?":"帮助?",
+ "contents?":"内容?",
+ "table of contents":"目录",
+ "Table of Contents":"目录",
+ "restart presentation":"重新启动展示",
+ "restart?":"重新启动?"
+ },
+ help_zh:
+ "用鼠标点击, 空格条, 左右箭头, Pg Up 和 Pg Dn 导航. " +
+ "用 S, B 改变字体大小.",
+
+ strings_ru: {
+ "slide":"слайд",
+ "help?":"помощь?",
+ "contents?":"содержание?",
+ "table of contents":"оглавление",
+ "Table of Contents":"Оглавление",
+ "restart presentation":"перезапустить презентацию",
+ "restart?":"перезапуск?"
+ },
+ help_ru:
+ "Перемещайтесь кликая мышкой, используя клавишу пробел, стрелки" +
+ "влево/вправо или Pg Up и Pg Dn. Клавиши S и B меняют размер шрифта.",
+
+ strings_sv: {
+ "slide":"sida",
+ "help?":"hjälp",
+ "contents?":"innehåll",
+ "table of contents":"innehållsförteckning",
+ "Table of Contents":"Innehållsförteckning",
+ "restart presentation":"visa presentationen från början",
+ "restart?":"börja om"
+ },
+ help_sv:
+ "Bläddra med ett klick med vänstra musknappen, mellanslagstangenten, " +
+ "vänster- och högerpiltangenterna eller tangenterna Pg Up, Pg Dn. " +
+ "Använd tangenterna S och B för att ändra textens storlek.",
+
+// each such language array is declared in the localize array
+// which is set on string prototype and used as in "foo".localize();
+ localize: {
+ "es":this.strings_es,
+ "ca":this.strings_ca,
+ "cs":this.strings_cs,
+ "nl":this.strings_nl,
+ "de":this.strings_de,
+ "pl":this.strings_pl,
+ "fr":this.strings_fr,
+ "hu":this.strings_hu,
+ "it":this.strings_it,
+ "el":this.strings_el,
+ "jp":this.strings_ja,
+ "zh":this.strings_zh,
+ "ru":this.strings_ru,
+ "sv":this.strings_sv
+ },
+
+ init: function () {
+ var i18n = w3c_slidy_i18n;
+ var help_text = w3c_slidy.help_text;
+ i18n.strings_es[help_text] = i18n.help_es;
+ i18n.strings_ca[help_text] = i18n.help_ca;
+ i18n.strings_cs[help_text] = i18n.help_cs;
+ i18n.strings_nl[help_text] = i18n.help_nl;
+ i18n.strings_de[help_text] = i18n.help_de;
+ i18n.strings_pl[help_text] = i18n.help_pl;
+ i18n.strings_fr[help_text] = i18n.help_fr;
+ i18n.strings_hu[help_text] = i18n.help_hu;
+ i18n.strings_it[help_text] = i18n.help_it;
+ i18n.strings_el[help_text] = i18n.help_el;
+ i18n.strings_ja[help_text] = i18n.help_ja;
+ i18n.strings_zh[help_text] = i18n.help_zh;
+ i18n.strings_ru[help_text] = i18n.help_ru;
+ i18n.strings_sv[help_text] = i18n.help_sv;
+
+ w3c_slidy.lang = document.body.parentNode.getAttribute("lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = document.body.parentNode.getAttribute("xml:lang");
+
+ if (!w3c_slidy.lang)
+ w3c_slidy.lang = "en";
+
+ // add localize method to all strings
+ // for use as in "contents".localize()
+ String.prototype.localize = function() {
+ if (this == "")
+ return this;
+
+ // try full language code, e.g. en-US
+ var s, lookup = w3c_slidy_i18n.localize[w3c_slidy.lang];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+
+ // strip country code suffix, e.g.
+ // try en if undefined for en-US
+ var lg = w3c_slidy.lang.split("-");
+
+ if (lg.length > 1)
+ {
+ lookup = w3c_slidy_i18n.localize[lg[0]];
+
+ if (lookup)
+ {
+ s = lookup[this];
+
+ if (s)
+ return s;
+ }
+ }
+
+ // otherwise string as is
+ return this;
+ };
+ }
+};
+
+// hack for back button behavior
+if (w3c_slidy.ie6 || w3c_slidy.ie7)
+{
+ document.write("<iframe id='historyFrame' " +
+ "src='javascript:\"<html"+"></"+"html>\"' " +
+ "height='1' width='1' " +
+ "style='position:absolute;left:-800px'></iframe>");
+}
+
+// attach event listeners for initialization
+w3c_slidy.set_up();
+
+// hide the slides as soon as body element is available
+// to reduce annoying screen mess before the onload event
+setTimeout(w3c_slidy.hide_slides, 50);
+
+/*]]>*/
+</script>
+</head>
+<body class="article" style="max-width:45em">
+<div id="header" class="slide">
+<h1>Welcome to Osmocom Conference 2017</h1>
+<span id="author">Harald Welte <hwelte@sysmocom.de></span><br />
+</div>
+<div class="sect1 slide">
+<h1 id="_welcome_to_osmocom_conference_2017">Welcome to Osmocom Conference 2017</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p><span class="image">
+<img src="images/osmocon.png" alt="images/osmocon.png" width="90%" />
+</span></p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_a_diverse_audience">A diverse audience</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class=" incremental">
+<li>
+<span>
+Osmocom developers
+</span>
+</li>
+<li>
+<span>
+Commercial cellular Operators
+</span>
+</li>
+<li>
+<span>
+Community Wireless Network Operators
+</span>
+</li>
+<li>
+<span>
+IT Security
+</span>
+</li>
+<li>
+<span>
+Academia / Research
+</span>
+</li>
+<li>
+<span>
+Vendors of BTS hardware / PHY layers
+</span>
+</li>
+<li>
+<span>
+M2M / IoT Device Testing
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_thanks_to">Thanks to..</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class=" incremental">
+<li>
+<span>
+Heike for organization, backoffice, registration
+</span>
+</li>
+<li>
+<span>
+Maike for ticket sales, registration
+</span>
+</li>
+<li>
+<span>
+our hosts here at JGH Berlin
+</span>
+</li>
+<li>
+<span>
+our Speakers
+</span>
+</li>
+<li>
+<span>
+the anonymous sponsor of the travel grants
+</span>
+</li>
+<li>
+<span>
+C3VOC of Chaos Computer Club for video recordings
+</span>
+</li>
+<li>
+<span>
+Everyone who ever contributed code to Osmocom!
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_schedule">Schedule</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="tableblock">
+<table rules="all"
+width="60%"
+frame="border"
+cellspacing="0" cellpadding="4">
+<col width="25%" />
+<col width="25%" />
+<col width="50%" />
+<tbody>
+<tr>
+<td align="left" valign="top"><p class="table">10:00</p></td>
+<td align="left" valign="top"><p class="table">10:30</p></td>
+<td align="left" valign="top"><p class="table">Morning Break</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">12:30</p></td>
+<td align="left" valign="top"><p class="table">13:30</p></td>
+<td align="left" valign="top"><p class="table">Lunch Break</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">15:30</p></td>
+<td align="left" valign="top"><p class="table">16:00</p></td>
+<td align="left" valign="top"><p class="table">Afternoon Break</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">19:30</p></td>
+<td align="left" valign="top"><p class="table">-</p></td>
+<td align="left" valign="top"><p class="table">Social event (doors)</p></td>
+</tr>
+<tr>
+<td align="left" valign="top"><p class="table">20:00</p></td>
+<td align="left" valign="top"><p class="table">-</p></td>
+<td align="left" valign="top"><p class="table">Social event (food)</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="paragraph"><p>and lots of technical talks in between, of course</p></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_social_event">Social Event</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Address
+</span>
+<div class="listingblock">
+<div class="content">
+<pre><code>Restaurant "Zur Gerichtslaube"
+Poststr. 28
+10178 Berlin</code></pre>
+</div></div>
+</li>
+<li>
+<span>
+We have leaflets with map + address informations
+</span>
+</li>
+<li>
+<span>
+Get there: By yourself, using public transport or cabs
+</span>
+</li>
+<li>
+<span>
+Vegetarian + Vegan option available upon request
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_where_do_we_come_from">Where do we come from?</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+2008: Humble beginnings with bs11_abis + bsc_hack
+</span>
+<ul class="">
+<li>
+<span>
+Dieter Spaar + Harald Welte start with old Siemens BS-11 and ISDN-Card
+</span>
+</li>
+<li>
+<span>
+implement whatever needed beyond the BTS to simulate a telephony network
+</span>
+</li>
+<li>
+<span>
+turned into OpenBSC in December 2008
+</span>
+</li>
+</ul>
+</li>
+</ul>
+<div class="literalblock">
+<div class="content">
+<pre><code>commit 52b1f9888905df8aa6ecd50af900b63f5273de6a
+Author: Harald Welte <laforge@gnumonks.org>
+Date: Tue Dec 23 20:25:15 2008 +0000
+
+ initial commit of current OpenBSC state</code></pre>
+</div></div>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_from_openbsc_to_osmocom">From OpenBSC to Osmocom</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+2009: OpenBSC code matures beyond PoC
+</span>
+</li>
+<li>
+<span>
+2009: Support for ip.access nanoBTS
+</span>
+<ul class="">
+<li>
+<span>
+first multi-vendor BSC to our knowledge
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+2010: OsmocomBB project starts for phone-side GSM stack
+</span>
+</li>
+<li>
+<span>
+Start of Osmocom as umbrella project for OpenBSC + OsmocomBB
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_osmocom_101">Osmocom 101</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+umbrella project for <strong>O</strong> pen <strong>S</strong> ource <strong>MO</strong> bile <strong>COM</strong> munications
+</span>
+</li>
+<li>
+<span>
+FOSS developers exploring mobile communications
+</span>
+</li>
+<li>
+<span>
+much larger than the <strong>Cellular Infrastructure</strong> projects we talk about today
+</span>
+<ul class="">
+<li>
+<span>
+TETRA, Thuraya, DECT, OP25, SDR, SIMtrace and many others
+</span>
+</li>
+<li>
+<span>
+59 projects in <a href="https://osmocom.org/">https://osmocom.org/</a> redmine
+</span>
+</li>
+<li>
+<span>
+112 git repositories on <a href="https://git.osmocom.org/">https://git.osmocom.org/</a>
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+most well-known typically OsmocomBB, OpenBSC + rtl-sdr
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_community_collaborative_development">Community + Collaborative Development</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+Free Software is about <strong>collaborative development</strong>
+</span>
+<ul class="">
+<li>
+<span>
+shared investment in R&D, while everyone can use full results
+</span>
+</li>
+<li>
+<span>
+it is <strong>not</strong> about a one-way producer/consumer relationship
+</span>
+</li>
+</ul>
+</li>
+<li>
+<span>
+sustainable projects need serious committment contributions from all
+ stake holders
+</span>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_sysmocom_s_f_m_c_gmbh">sysmocom - s.f.m.c. GmbH</h1>
+<div class="sectionbody" style="max-width:45em">
+<ul class="">
+<li>
+<span>
+founded in 2011 by two core Osmocom developers
+</span>
+</li>
+<li>
+<span>
+exists to drive/support Osmocom development
+</span>
+</li>
+<li>
+<span>
+does not claim (nor want) ownership over any part of Osmocom
+</span>
+</li>
+<li>
+<span>
+organizes this event as Osmocom is no legal entity
+</span>
+</li>
+<li>
+<span>
+unfortunately is doing >= 80% of commits in Osmocom cellular
+ infrastructure projects.
+</span>
+<ul class="">
+<li>
+<span>
+Osmocom must not depend on sysmocom
+</span>
+</li>
+<li>
+<span>
+we need more commitment and contributions from all users and beneficiaries
+</span>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect1 slide">
+<h1 id="_eof">EOF</h1>
+<div class="sectionbody" style="max-width:45em">
+<div class="paragraph"><p>End of File</p></div>
+</div>
+</div>
+</body>
+</html>
|