* [spp] [PATCH 10/28] doc: revice path descs
@ 2018-01-23 0:28 ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 11/28] doc: add network configuration diagram ogawa.yasufumi
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/sample_usage.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/spp_vf/sample_usage.md b/docs/spp_vf/sample_usage.md
index 2157378..5f6ece2 100644
--- a/docs/spp_vf/sample_usage.md
+++ b/docs/spp_vf/sample_usage.md
@@ -43,7 +43,7 @@ TODO(yasufum) add description for sec.
-c 0x00fd -n 4 --proc-type=secondary \
-- \
--process-id 1 \
- --config $SPRINT_REVIEW_HOME/spp_vf1_without_cmtab.json \
+ --config /path/to/spp_vf1_without_cmtab.json \
-s 127.0.0.1:11111
# start nc for secondary 2
@@ -54,11 +54,11 @@ TODO(yasufum) add description for sec.
-c 0x3f01 -n 4 --proc-type=secondary \
-- \
--process-id 2 \
- --config $SPRINT_REVIEW_HOME/spp_vf2_without_cmtab.json \
+ --config /path/to/spp_vf2_without_cmtab.json \
-s 127.0.0.1:11112
```
-### Setup network configuration for VMs.
+### Setup network configuration for VMs
Start two VMs.
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [spp] [PATCH 11/28] doc: add network configuration diagram
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 12/28] doc: update user account ogawa.yasufumi
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/sample_usage.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/docs/spp_vf/sample_usage.md b/docs/spp_vf/sample_usage.md
index 5f6ece2..bb4d540 100644
--- a/docs/spp_vf/sample_usage.md
+++ b/docs/spp_vf/sample_usage.md
@@ -7,6 +7,8 @@ It enables to access to VMs with ssh from a remote node.
Before trying this sample, install SPP by following
[setup guide](setup_guide.md).
+![spp_sample_usage](spp_sample_usage.svg)
+
## Testing Steps
In this section, you configure spp_vf and client applications for
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [spp] [PATCH 12/28] doc: update user account
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 11/28] doc: add network configuration diagram ogawa.yasufumi
@ 2018-01-23 0:29 ` ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 13/28] doc: update descriptions for todo ogawa.yasufumi
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:29 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
User account 'ntt' is not appropriate for example of spp's usacase.
Change to 'sppuser'.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/sample_usage.md | 41 ++++++++++++++---------------------------
1 file changed, 14 insertions(+), 27 deletions(-)
diff --git a/docs/spp_vf/sample_usage.md b/docs/spp_vf/sample_usage.md
index bb4d540..00e1631 100644
--- a/docs/spp_vf/sample_usage.md
+++ b/docs/spp_vf/sample_usage.md
@@ -74,7 +74,7 @@ To not ask for unknown keys while login VMs,
set `-oStrictHostKeyChecking=no` option for ssh.
```sh
- $ ssh -oStrictHostKeyChecking=no ntt@192.168.122.31
+ $ ssh -oStrictHostKeyChecking=no sppuser@192.168.122.31
```
Up interfaces for vhost and register them to arp table inside spp-vm1.
@@ -83,12 +83,12 @@ after configuration is done.
```sh
# up interfaces
- $ sudo ifconfig ens4 inet 192.168.240.21 netmask 255.255.255.0 up
- $ sudo ifconfig ens5 inet 192.168.250.22 netmask 255.255.255.0 up
+ $ sudo ifconfig ens4 inet 192.168.140.21 netmask 255.255.255.0 up
+ $ sudo ifconfig ens5 inet 192.168.150.22 netmask 255.255.255.0 up
# register to arp table
- $ sudo arp -s 192.168.240.11 a0:36:9f:78:86:78 -i ens4
- $ sudo arp -s 192.168.250.13 a0:36:9f:6c:ed:bc -i ens5
+ $ sudo arp -s 192.168.140.11 a0:36:9f:78:86:78 -i ens4
+ $ sudo arp -s 192.168.150.13 a0:36:9f:6c:ed:bc -i ens5
# diable TCP offload
$ sudo ethtool -K ens4 tx off
@@ -98,15 +98,15 @@ after configuration is done.
Configurations for spp-vm2 is same as spp-vm1.
```sh
- $ ssh -oStrictHostKeyChecking=no ntt@192.168.122.32
+ $ ssh -oStrictHostKeyChecking=no sppuser@192.168.122.32
# up interfaces
- $ sudo ifconfig ens4 inet 192.168.240.31 netmask 255.255.255.0 up
- $ sudo ifconfig ens5 inet 192.168.250.32 netmask 255.255.255.0 up
+ $ sudo ifconfig ens4 inet 192.168.140.31 netmask 255.255.255.0 up
+ $ sudo ifconfig ens5 inet 192.168.150.32 netmask 255.255.255.0 up
# register to arp table
- $ sudo arp -s 192.168.240.11 a0:36:9f:78:86:78 -i ens4
- $ sudo arp -s 192.168.250.13 a0:36:9f:6c:ed:bc -i ens5
+ $ sudo arp -s 192.168.140.11 a0:36:9f:78:86:78 -i ens4
+ $ sudo arp -s 192.168.150.13 a0:36:9f:6c:ed:bc -i ens5
# diable TCP offload
$ sudo ethtool -K ens4 tx off
@@ -124,19 +124,6 @@ TODO(yasufum) json-based steps are deprecated.
### Register MAC address to Classifier
-Send a request for getting each of process IDs with nc command.
-TODO(yasufum) for what?
-
- ```sh
- {
- "commands": [
- {
- "command": "process"
- }
- ]
- }
- ```
-
Register MAC addresses to classifier.
```sh
@@ -183,16 +170,16 @@ Now, you can login VMs.
```sh
# spp-vm1 via NIC0
- $ ssh ntt@192.168.240.21
+ $ ssh sppuser@192.168.140.21
# spp-vm1 via NIC1
- $ ssh ntt@192.168.250.22
+ $ ssh sppuser@192.168.150.22
# spp-vm2 via NIC0
- $ ssh ntt@192.168.240.31
+ $ ssh sppuser@192.168.140.31
# spp-vm2 via NIC1
- $ ssh ntt@192.168.250.32
+ $ ssh sppuser@192.168.150.32
```
If you unregister the addresses, send request as following.
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [spp] [PATCH 13/28] doc: update descriptions for todo
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 11/28] doc: add network configuration diagram ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 12/28] doc: update user account ogawa.yasufumi
@ 2018-01-23 0:29 ` ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 14/28] doc: add description for explanation section ogawa.yasufumi
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:29 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
- Add why use nc command and how.
- Change the status of json based steps from 'are deprecated' to
'will be deprecated'.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/sample_usage.md | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/docs/spp_vf/sample_usage.md b/docs/spp_vf/sample_usage.md
index 00e1631..ce68867 100644
--- a/docs/spp_vf/sample_usage.md
+++ b/docs/spp_vf/sample_usage.md
@@ -34,10 +34,16 @@ First, launch spp controller and primary process.
-p 0x03 -n 8 -s 127.0.0.1:5555
```
-TODO(yasufum) add description for sec.
+After primary process is launched, run nc command for each of
+seconrdary processes and itselves.
+In this sample, commands for secondary are sent from nc because
+`spp.py` does not support commands for spp_vf.
+nc is a network utility and it can open TCP connections, send UDP
+packets, listen on arbitrary TCP and UDP ports, do port scanning,
+and deal with both IPv4 and IPv6.
```sh
- # start nc for secondary 1
+ # run nc for secondary 1 with port 11111
$ while true; do nc -l 11111; done
# start secondary 1
@@ -48,7 +54,7 @@ TODO(yasufum) add description for sec.
--config /path/to/spp_vf1_without_cmtab.json \
-s 127.0.0.1:11111
- # start nc for secondary 2
+ # run nc for secondary 2 with port 11112
$ while true; do nc -l 11112; done
# start secondary 2
@@ -120,7 +126,7 @@ discarding packets.
## Test Application
-TODO(yasufum) json-based steps are deprecated.
+TODO(yasufum) json-based steps will be deprecated.
### Register MAC address to Classifier
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [spp] [PATCH 14/28] doc: add description for explanation section
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
` (2 preceding siblings ...)
2018-01-23 0:29 ` [spp] [PATCH 13/28] doc: update descriptions for todo ogawa.yasufumi
@ 2018-01-23 0:29 ` ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 15/28] doc: add spp_sample_usage_svg in docs/spp_vf/ ogawa.yasufumi
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:29 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp
Cc: Hiroyuki Nakamura, Naoki Takada, Yasufumi Ogawa
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Add details explanation for essential parts of spp_vf for
developers.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
docs/spp_vf/spp_vf.md | 221 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 214 insertions(+), 7 deletions(-)
diff --git a/docs/spp_vf/spp_vf.md b/docs/spp_vf/spp_vf.md
index 1ba2a5e..d3fad57 100644
--- a/docs/spp_vf/spp_vf.md
+++ b/docs/spp_vf/spp_vf.md
@@ -4,8 +4,8 @@ SPP_VF is a SR-IOV like network functionality using DPDK for NFV.
## Overview
-The application distributes incoming packets depends on MAC address
-similar to SR-IOV functionality.
+The application distributes incoming packets referring virtual MAC
+address similar to SR-IOV functionality.
Network configuration is defined in JSON config file which is imported
while launching the application.
The configuration is able to change after initialization by sending
@@ -13,14 +13,14 @@ commnad from spp controller.
SPP_VF is a multi-thread application.
It consists of manager thread and forwarder threads.
-There are three types of forwarder for 1:1, 1:N and N:1.
+There are three types of forwarder for 1:1, 1:N and N:1 as following.
* forward: 1:1
* classifier_mac: 1:N (Destination is determined by MAC address)
* merge: N:1
This is an example of network configration, in which one classifier_mac,
-one merger and four forwarders are runnig in spp_vf process for two
+one merger and four forwarders are runnig in SPP_VF process for two
destinations of vhost interface.
Incoming packets from rx on host1 are sent to each of vhosts on guest
by looking MAC address in the packet..
@@ -99,9 +99,15 @@ file and return json_t object as a result.
In spp_config_load_file(), configuration of classifier table and
resource assignment of threads are loaded into config of spp.
-After importing config, each of threads are launched.
+### Forwarding
+
+SPP_VF supports three types of forwarding, for 1:1, 1:N and N:1.
+After importing config, each of forwarding threads are launched
+from`rte_eal_remote_launch()`.
```c
+ /* spp_vf.c */
+
/* Start thread */
unsigned int lcore_id = 0;
RTE_LCORE_FOREACH_SLAVE(lcore_id) {
@@ -117,9 +123,210 @@ After importing config, each of threads are launched.
}
```
-### Forwarding
+`spp_classifier_mac_do()` is a forwarding function of 1:N defined in
+`classifier_mac.c`.
+Configuration of destination is managed as a table structured info.
+`classifier_mac_info` and `classifier_mac_mng_info` struct are for
+the purpose.
+
+TODO(yasufum) add desc for table structure and it's doubled for
+redundancy.
+
+ ```c
+ /* classifier_mac.c */
+
+ /* classifier information */
+ struct classifier_mac_info {
+ struct rte_hash *classifier_table;
+ int num_active_classified;
+ int active_classifieds[RTE_MAX_ETHPORTS];
+ int default_classified;
+ };
+
+ /* classifier management information */
+ struct classifier_mac_mng_info {
+ struct classifier_mac_info info[NUM_CLASSIFIER_MAC_INFO];
+ volatile int ref_index;
+ volatile int upd_index;
+ struct classified_data classified_data[RTE_MAX_ETHPORTS];
+ };
+ ```
+
+In `spp_classifier_mac_do()`, it receives packets from rx port and send them
+to destinations with `classify_packet()`.
+`classifier_info` is an argument of `classify_packet()` and is used to decide
+the destinations.
+
+ ```c
+ /* classifier_mac.c */
+
+ while(likely(core_info->status == SPP_CORE_IDLE) ||
+ likely(core_info->status == SPP_CORE_FORWARD)) {
+
+ while(likely(core_info->status == SPP_CORE_FORWARD)) {
+ /* change index of update side */
+ change_update_index(classifier_mng_info, lcore_id);
+
+ /* decide classifier infomation of the current cycle */
+ classifier_info = classifier_mng_info->info +
+ classifier_mng_info->ref_index;
+
+ /* drain tx packets, if buffer is not filled for interval */
+ cur_tsc = rte_rdtsc();
+ if (unlikely(cur_tsc - prev_tsc > drain_tsc)) {
+ for (i = 0; i < n_classified_data; i++) {
+ if (unlikely(classified_data[i].num_pkt != 0)) {
+ RTE_LOG(DEBUG, SPP_CLASSIFIER_MAC,
+ "transimit packets (drain). "
+ "index=%d, "
+ "num_pkt=%hu, "
+ "interval=%lu\n",
+ i,
+ classified_data[i].num_pkt,
+ cur_tsc - prev_tsc);
+ transmit_packet(&classified_data[i]);
+ }
+ }
+ prev_tsc = cur_tsc;
+ }
+
+ /* retrieve packets */
+ n_rx = rte_eth_rx_burst(core_info->rx_ports[0].dpdk_port, 0,
+ rx_pkts, MAX_PKT_BURST);
+ if (unlikely(n_rx == 0))
+ continue;
+
+#ifdef SPP_RINGLATENCYSTATS_ENABLE
+ if (core_info->rx_ports[0].if_type == RING)
+ spp_ringlatencystats_calculate_latency(
+ core_info->rx_ports[0].if_no, rx_pkts, n_rx);
+#endif
+
+ /* classify and transmit (filled) */
+ classify_packet(rx_pkts, n_rx, classifier_info, classified_data);
+ }
+ }
+ ```
+
+On the other hand, `spp_forward` is for 1:1 or N:1 (called as merge)
+forwarding defined in `spp_forward.c`.
+Source and destination ports are decided from `core_info`
+and given to `set_use_interface()` in which first argment is
+destination info and second one is source.
+
+ ```c
+ /* spp_forward.c */
+
+ /* RX/TX Info setting */
+ rxtx_num = core_info->num_rx_port;
+ for (if_cnt = 0; if_cnt < rxtx_num; if_cnt++) {
+ set_use_interface(&patch[if_cnt].rx,
+ &core_info->rx_ports[if_cnt]);
+ if (core_info->type == SPP_CONFIG_FORWARD) {
+ /* FORWARD */
+ set_use_interface(&patch[if_cnt].tx,
+ &core_info->tx_ports[if_cnt]);
+ } else {
+ /* MERGE */
+ set_use_interface(&patch[if_cnt].tx,
+ &core_info->tx_ports[0]);
+ }
+ }
+ ```
+
+ After ports are decided, forwarding is executed.
+
+ ```c
+ /* spp_forward.c */
+
+ int cnt, nb_rx, nb_tx, buf;
+ struct spp_core_port_info *rx;
+ struct spp_core_port_info *tx;
+ struct rte_mbuf *bufs[MAX_PKT_BURST];
+ while (likely(core_info->status == SPP_CORE_IDLE) ||
+ likely(core_info->status == SPP_CORE_FORWARD)) {
+ while (likely(core_info->status == SPP_CORE_FORWARD)) {
+ for (cnt = 0; cnt < rxtx_num; cnt++) {
+ rx = &patch[cnt].rx;
+ tx = &patch[cnt].tx;
+
+ /* Packet receive */
+ nb_rx = rte_eth_rx_burst(rx->dpdk_port, 0, bufs, MAX_PKT_BURST);
+ if (unlikely(nb_rx == 0)) {
+ continue;
+ }
+
+#ifdef SPP_RINGLATENCYSTATS_ENABLE
+ if (rx->if_type == RING) {
+ /* Receive port is RING */
+ spp_ringlatencystats_calculate_latency(rx->if_no,
+ bufs, nb_rx);
+ }
+ if (tx->if_type == RING) {
+ /* Send port is RING */
+ spp_ringlatencystats_add_time_stamp(tx->if_no,
+ bufs, nb_rx);
+ }
+#endif /* SPP_RINGLATENCYSTATS_ENABLE */
+
+ /* Send packet */
+ nb_tx = rte_eth_tx_burst(tx->dpdk_port, 0, bufs, nb_rx);
+
+ /* Free any unsent packets. */
+ if (unlikely(nb_tx < nb_rx)) {
+ for (buf = nb_tx; buf < nb_rx; buf++) {
+ rte_pktmbuf_free(bufs[buf]);
+ }
+ }
+ }
+ }
+ }
+ ```
+### L2 Multicast Support
-### Packet Cloning
+Multicast for resolving ARP requests is also supported in SPP_VF.
+It is implemented as `handle_l2multicast_packet()` and called from
+`classify_packet()` for incoming multicast packets.
+ ```c
+ /* classify_packet() in classifier_mac.c */
+
+ /* L2 multicast(include broadcast) ? */
+ if (unlikely(is_multicast_ether_addr(ð->d_addr))) {
+ RTE_LOG(DEBUG, SPP_CLASSIFIER_MAC,
+ "multicast mac address.\n");
+ handle_l2multicast_packet(rx_pkts[i],
+ classifier_info, classified_data);
+ continue;
+ }
+ ```
+
+For distributing multicast packet, it is cloned with
+`rte_mbuf_refcnt_update()`.
+ ```c
+ /* classifier_mac.c */
+
+ /* handle L2 multicast(include broadcast) packet */
+ static inline void
+ handle_l2multicast_packet(struct rte_mbuf *pkt,
+ struct classifier_mac_info *classifier_info,
+ struct classified_data *classified_data)
+ {
+ int i;
+
+ if (unlikely(classifier_info->num_active_classified == 0)) {
+ RTE_LOG(ERR, SPP_CLASSIFIER_MAC, "No mac address.(l2multicast packet)\n");
+ rte_pktmbuf_free(pkt);
+ return;
+ }
+
+ rte_mbuf_refcnt_update(pkt, classifier_info->num_active_classified);
+
+ for (i= 0; i < classifier_info->num_active_classified; i++) {
+ push_packet(pkt, classified_data +
+ (long)classifier_info->active_classifieds[i]);
+ }
+ }
+ ```
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [spp] [PATCH 15/28] doc: add spp_sample_usage_svg in docs/spp_vf/
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
` (3 preceding siblings ...)
2018-01-23 0:29 ` [spp] [PATCH 14/28] doc: add description for explanation section ogawa.yasufumi
@ 2018-01-23 0:29 ` ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 16/28] doc: add explanation for terminating spp app ogawa.yasufumi
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:29 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp
Cc: Hiroyuki Nakamura, Tomoyuki Mizuguchi, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Add spp_sample_usage.svg file in docs/spp_vf, which is removed
from docs/ directory.
Signed-off-by: Tomoyuki Mizuguchi <mizuguchi.tomoyuki@po.ntt-tx.co.jp>
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/spp_sample_usage.svg | 3144 ++++++++++++++++++++++++++++++++++++++
1 file changed, 3144 insertions(+)
create mode 100644 docs/spp_vf/spp_sample_usage.svg
diff --git a/docs/spp_vf/spp_sample_usage.svg b/docs/spp_vf/spp_sample_usage.svg
new file mode 100644
index 0000000..3fdd7df
--- /dev/null
+++ b/docs/spp_vf/spp_sample_usage.svg
@@ -0,0 +1,3144 @@
+<?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="172.52679mm"
+ height="120.57605mm"
+ viewBox="0 0 172.52679 120.57605"
+ version="1.1"
+ id="svg4746"
+ inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+ sodipodi:docname="spp_sample_usage.svg">
+ <defs
+ id="defs4740">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker39126"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path39124"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker34720"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="scale(1.1) rotate(180) translate(1,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ id="path34718" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker33826"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path33824"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker32792"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="scale(1.1) rotate(180) translate(1,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ id="path32790" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker16375"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path16373"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker15633"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path15631"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker15037"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path15035"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker14003"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path14001"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker12239"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path12237"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker11643"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path11641"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker11193"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path11191"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker9721"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path9719"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker6789"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path6787"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker26505"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="scale(1.1) translate(1,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ id="path26503" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker25907"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="scale(1.1) translate(1,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ id="path25905" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker23218"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="scale(1.1) rotate(180) translate(1,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ id="path23216" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker19632"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path19630"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker18406"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path18404"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker17872"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend"
+ inkscape:collect="always">
+ <path
+ transform="scale(1.1) rotate(180) translate(1,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ id="path17870" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker17252"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path17250"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker16657"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path16655"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker6296"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend"
+ inkscape:collect="always">
+ <path
+ transform="scale(1.1) rotate(180) translate(1,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ id="path6294" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker1654"
+ style="overflow:visible;"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path1652"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="SquareL"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="SquareL"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1432"
+ d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker9343"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path9341"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1359"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4626"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4624" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3618"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path3616" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker1780"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path1778" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker1604"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path1362"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6489"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6487"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker8593"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path8591"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker8169"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path8167"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker7739"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path7737"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;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">
+ <path
+ id="path5589"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;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="marker6959"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path6957" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker6583"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path6581" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker6219"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path6217" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5849"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5586"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker2218"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2216"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1864"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1862"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1516"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1514"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1632"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1630"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1626"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1624"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1620"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1618"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1614"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1612"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1608"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1606"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1560"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1558"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1552"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1550"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4611"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4609"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker24654"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path24652"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker23978"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path23976"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker23136"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path23134"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker13092"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path13090"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12910"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path12908"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12568"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path12566"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5180"
+ 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:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5178"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4816"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4814"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4059"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4057"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5293"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-4"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4059-8"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4057-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-2"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-6"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-3"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-6-2"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-3-4"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-5"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-8"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4059-8-1"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4057-0-9"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4059-8-1-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4057-0-9-1"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4-1"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4-1-9"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0-0-3"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4-1-7"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0-0-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4-1-7-7"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0-0-0-8"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5180-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:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5178-1" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5180-9-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:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5178-1-4" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1110-1"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-9"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-9" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-5"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-4" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-5"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-6" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1560-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1558-3"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-7"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-61" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-5-6"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-6-8" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1-4"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-4-5" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-9"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-60" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1-9-6"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-4-1-5" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-9-7"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-60-6" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1560-1"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1558-8"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1560-8"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1558-1"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1560-1-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1558-8-4"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1-5"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-4-6" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-97"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-7"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1654-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1652-8"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-5-7"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-6-0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-2"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-6"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker19632-9"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path19630-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker20184-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path20182-4"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker18406-4"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ id="path18404-3"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker6296-4"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path6294-8" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker17872-8"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path17870-5" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker9343-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path9341-4"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker16657-7"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ id="path16655-1"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker17252-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path17250-5"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ 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
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker23218-3"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path23216-8" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker23218-7"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path23216-89" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker23218-3-7"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path23216-8-2" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-97-3"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-7-6"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1-5-9"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-4-6-0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-56"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-4"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-5-7-8"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-6-0-0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-2-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-6-0"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1-58"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-4-2" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-5-3"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-6-4" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-8"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-5"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-97-3-5"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-7-6-2"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1-5-9-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-4-6-0-4" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-56-0"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958-4-2"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1-58-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ 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"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path14791-4-2-7" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.9899495"
+ inkscape:cx="-70.466635"
+ inkscape:cy="186.07323"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer4"
+ showgrid="false"
+ inkscape:window-width="1366"
+ inkscape:window-height="664"
+ inkscape:window-x="-8"
+ inkscape:window-y="1016"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ viewbox-x="0"
+ scale-x="1" />
+ <metadata
+ id="metadata4743">
+ <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="host"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline;opacity:0.98999999"
+ transform="translate(22.342263,-42.641668)">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.36492524;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect5291"
+ width="133.45515"
+ height="117.74038"
+ x="16.725571"
+ y="43.951878"
+ ry="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="17.927746"
+ y="48.597805"
+ id="text5577"><tspan
+ sodipodi:role="line"
+ id="tspan5575"
+ x="17.927746"
+ y="48.597805"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.19843748">host1</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot5610"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion5612"><rect
+ id="rect5614"
+ width="12.857142"
+ height="94.285713"
+ x="147.14285"
+ y="89.662544" /></flowRegion><flowPara
+ id="flowPara5616" /></flowRoot> <rect
+ style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11811945;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1-3"
+ width="9.2134848"
+ height="16.567875"
+ x="16.552696"
+ y="70.891708" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="16.618973"
+ y="74.613152"
+ id="text2024-9-4-2"><tspan
+ sodipodi:role="line"
+ id="tspan14621"
+ x="16.618973"
+ y="74.613152">NIC0</tspan></text>
+ <rect
+ style="display:inline;opacity:0.98999999;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.36500001;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect5291-0"
+ width="27.28093"
+ height="119.00851"
+ x="-21.550173"
+ y="43.577824"
+ ry="0" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11811945;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1-3-3"
+ width="9.2134848"
+ height="16.567875"
+ x="16.552696"
+ y="123.30804" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="17.14814"
+ y="127.02951"
+ id="text2024-9-4-2-0"><tspan
+ sodipodi:role="line"
+ id="tspan14623"
+ x="17.14814"
+ y="127.02951">NIC1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="-20.979584"
+ y="47.929138"
+ id="text5577-5"><tspan
+ sodipodi:role="line"
+ id="tspan1631"
+ x="-20.979584"
+ y="47.929138">host2</tspan></text>
+ <rect
+ style="display:inline;opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11811945;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1-3-2"
+ width="9.2134848"
+ height="16.567875"
+ x="-3.440033"
+ y="70.738869" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="-3.3737564"
+ y="74.460312"
+ id="text2024-9-4-2-4"><tspan
+ sodipodi:role="line"
+ id="tspan1637"
+ x="-3.3737564"
+ y="74.460312">NIC2</tspan></text>
+ <rect
+ style="display:inline;opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11811945;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1-3-3-5"
+ width="9.2134848"
+ height="16.567875"
+ x="-3.440033"
+ y="123.15519" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="-2.8445892"
+ y="126.87669"
+ id="text2024-9-4-2-0-7"><tspan
+ sodipodi:role="line"
+ id="tspan1639"
+ x="-2.8445892"
+ y="126.87669">NIC3</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker23218)"
+ d="M 5.7734517,74.443035 C 16.552696,74.595877 16.552696,74.595877 16.552696,74.595877"
+ id="path23208"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker23218-3)"
+ d="m 5.7734518,126.85937 c 10.7792452,0.15284 10.7792452,0.15284 10.7792452,0.15284"
+ id="path23208-4"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker26505)"
+ d="M 5.6749747,83.522821 C 16.454217,83.675663 16.454217,83.675663 16.454217,83.675663"
+ id="path23208-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker25907)"
+ d="m 5.6749757,135.93924 c 10.7792423,0.15285 10.7792423,0.15285 10.7792423,0.15285"
+ id="path23208-4-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#marker39126)"
+ d="m -3.6681555,136.09531 c 0,0 -10.1562395,-0.68662 -11.4925875,-13.73235"
+ id="path39116"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="spp_vf_process"
+ style="display:none"
+ transform="translate(22.342263,-42.641668)">
+ <rect
+ style="fill:#ffccaa;fill-opacity:1;stroke:#000000;stroke-width:0.16642947;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1763"
+ width="59.980141"
+ height="46.595516"
+ x="28.250807"
+ y="56.22039"
+ ry="2.4291499" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="31.005722"
+ y="61.07103"
+ id="text1767"><tspan
+ sodipodi:role="line"
+ id="tspan10724"
+ x="31.005722"
+ y="61.07103">spp_vf1</tspan></text>
+ <rect
+ style="display:inline;opacity:0.98999999;fill:#ffccaa;fill-opacity:1;stroke:#000000;stroke-width:0.16642947;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1763-1"
+ width="59.980141"
+ height="46.595516"
+ x="28.250807"
+ y="108.63673"
+ ry="2.4291499" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="31.005724"
+ y="113.48738"
+ id="text1767-1"><tspan
+ sodipodi:role="line"
+ id="tspan14625"
+ x="31.005724"
+ y="113.48738">spp_vf2</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="guests"
+ style="display:inline"
+ transform="translate(22.342263,-42.641668)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker34720)"
+ d="m -10.45306,119.21565 c -0.07257,7.78267 6.0943783,7.4034 6.0943783,7.4034"
+ id="path34710"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="display:inline;fill:#d7eef4;stroke:#000000;stroke-width:0.28149092;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect13971-3"
+ width="32.50581"
+ height="53.967125"
+ x="113.9224"
+ y="104.36536"
+ ry="1.690876" />
+ <rect
+ style="display:inline;fill:#ffd5d5;stroke:#000000;stroke-width:0.12;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect4404-9"
+ width="13.307772"
+ height="40.352818"
+ x="131.26602"
+ y="111.62362"
+ ry="2.7388608" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372"
+ x="147.38239"
+ y="121.55878"
+ id="text1773-6-6-5-2-58-9"
+ transform="scale(0.93214045,1.0727997)"><tspan
+ style="stroke-width:0.21267372"
+ sodipodi:role="line"
+ id="tspan4393-3"
+ x="147.38239"
+ y="121.55878">ssh</tspan><tspan
+ style="stroke-width:0.21267372"
+ sodipodi:role="line"
+ id="tspan4395-1"
+ x="147.38239"
+ y="126.18899">server</tspan></text>
+ <rect
+ style="fill:#d7eef4;stroke:#000000;stroke-width:0.28033611;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect13971"
+ width="32.239651"
+ height="53.967121"
+ x="114.18855"
+ y="47.752419"
+ ry="1.6908759" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="114.9353"
+ y="51.130241"
+ id="text2024"><tspan
+ sodipodi:role="line"
+ id="tspan4579"
+ x="114.9353"
+ y="51.130241">guest vm1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="114.67667"
+ y="107.6647"
+ id="text2024-5"><tspan
+ sodipodi:role="line"
+ id="tspan4581"
+ x="114.67667"
+ y="107.6647">guest vm2</tspan></text>
+ <rect
+ style="fill:#ffd5d5;stroke:#000000;stroke-width:0.12;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect4404"
+ width="13.307771"
+ height="40.352818"
+ x="131.26602"
+ y="58.185673"
+ ry="2.7388606" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372"
+ x="147.3824"
+ y="69.774078"
+ id="text1773-6-6-5-2-58"
+ transform="scale(0.93214045,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan4393"
+ x="147.3824"
+ y="69.774078">ssh</tspan><tspan
+ sodipodi:role="line"
+ id="tspan4395"
+ x="147.3824"
+ y="74.404289">server</tspan></text>
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-56)"
+ d="m 126.21074,94.634296 c 4.95896,0 4.95896,0 4.95896,0"
+ id="path14783-8-29"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1-58)"
+ d="m 124.88059,88.334466 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87-4"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-97-3)"
+ d="m 125.86595,147.37137 c 4.95896,0 4.95896,0 4.95896,0"
+ id="path14783-8-2-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1-5-9)"
+ d="m 124.5358,141.07155 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87-0-5"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11848791;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-7"
+ width="11.678429"
+ height="13.152599"
+ x="114.16298"
+ y="84.577766" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="114.97461"
+ y="88.269478"
+ id="text2024-9-0"><tspan
+ sodipodi:role="line"
+ id="tspan1641"
+ x="114.97461"
+ y="88.269478">vNIC1</tspan></text>
+ <rect
+ style="display:inline;opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.12118802;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1-6"
+ width="11.9492"
+ height="13.44709"
+ x="113.9498"
+ y="137.55743" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="114.03404"
+ y="141.20172"
+ id="text2024-9-4-29"><tspan
+ sodipodi:role="line"
+ id="tspan1647"
+ x="114.03404"
+ y="141.20172">vNIC3</tspan></text>
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-56-0)"
+ d="m 126.28635,68.674988 c 4.95896,0 4.95896,0 4.95896,0"
+ id="path14783-8-29-4"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1-58-1)"
+ d="m 124.9562,62.375158 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87-4-3"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-97-3-5)"
+ d="m 125.94156,121.41205 c 4.95896,0 4.95896,0 4.95896,0"
+ id="path14783-8-2-5-7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1-5-9-1)"
+ d="m 124.61141,115.11223 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87-0-5-1"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.1198233;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139"
+ width="11.944364"
+ height="13.151264"
+ x="114.19665"
+ y="59.255657" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="114.70798"
+ y="62.946693"
+ id="text2024-9"><tspan
+ sodipodi:role="line"
+ id="tspan1643"
+ x="114.70798"
+ y="62.946693">vNIC0</tspan></text>
+ <rect
+ style="display:inline;opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11983798;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1-6-8"
+ width="11.683282"
+ height="13.448441"
+ x="114.04266"
+ y="111.84875" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="114.48937"
+ y="115.23184"
+ id="text2024-9-4-29-8"><tspan
+ sodipodi:role="line"
+ id="tspan1645"
+ x="114.48937"
+ y="115.23184">vNIC2</tspan></text>
+ <rect
+ style="display:inline;fill:#ffd5d5;stroke:#000000;stroke-width:0.120654;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect4404-9-5"
+ width="16.770006"
+ height="32.371811"
+ x="-20.445839"
+ y="89.455406"
+ ry="2.1971672" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416668px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:middle;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372;"
+ x="-13.677567"
+ y="97.412262"
+ id="text1773-6-6-5-2-58-9-7"
+ transform="scale(0.93214045,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan1763">ssh </tspan><tspan
+ sodipodi:role="line"
+ id="tspan1765">client</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1654)"
+ d="M -15.835612,89.669972 C -12.488463,79.248516 -3.440033,74.972204 -3.440033,74.972204"
+ id="path32594"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker32792)"
+ d="m -3.440033,83.602577 c 0,0 -5.87993,0.801807 -6.147199,5.879927"
+ id="path32782"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="spp_vf_threads"
+ style="display:inline;opacity:0.98999999"
+ transform="translate(22.342263,-42.641668)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker16375)"
+ d="m 99.555055,147.04032 c -12.85119,0 -12.85119,0 -12.85119,0"
+ id="path16365"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9721)"
+ d="M 100.21858,69.679628 C 86.806132,84.847397 86.806132,84.847397 86.806132,84.847397"
+ id="path9711"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6789)"
+ d="M 85.793887,62.025084 C 99.160248,61.917299 99.160248,61.917299 99.160248,61.917299"
+ id="path6779"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker16657-7)"
+ d="m 51.850553,120.88419 c 13.503428,-6.62315 13.503428,-6.62315 13.503428,-6.62315"
+ id="path16647-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker17252-3)"
+ d="m 51.850553,121.94252 c 13.523669,4.97261 13.523669,4.97261 13.523669,4.97261"
+ id="path17242-1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker9343-4)"
+ d="m 49.558914,142.12156 c 15.9854,-4.67979 15.9854,-4.67979 15.9854,-4.67979 v 0"
+ id="path17770-7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker17872-8)"
+ d="m 65.827792,148.15468 c -16.268878,-5.1529 -16.268878,-5.1529 -16.268878,-5.1529"
+ id="path17862-4"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker16657)"
+ d="M 51.850549,68.289813 C 65.353977,61.666664 65.353977,61.666664 65.353977,61.666664"
+ id="path16647"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960)"
+ d="m 109.21487,94.404527 c 4.95896,0 4.95896,0 4.95896,0"
+ id="path14783-8"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.13431512;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769"
+ width="21.297846"
+ height="5.9898095"
+ x="30.552704"
+ y="66.004173"
+ ry="1.3525398" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="33.065685"
+ y="69.991264"
+ id="text1773"><tspan
+ sodipodi:role="line"
+ id="tspan1461"
+ x="33.065685"
+ y="69.991264"
+ style="stroke-width:0.19843748">classifier</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793)"
+ d="m 109.2058,62.342026 c 4.20592,0 4.20592,0 4.20592,0"
+ id="path14783"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1)"
+ d="m 107.88472,88.1047 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-5)"
+ d="m 109.42079,68.64875 c 4.20592,0 4.20592,0 4.20592,0"
+ id="path14783-8-7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1560)"
+ d="m 100.74232,62.375041 c 6.66184,0 6.66184,0 6.66184,0"
+ id="path1556"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.12518337;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769-3"
+ width="18.472155"
+ height="5.9989409"
+ x="31.086758"
+ y="86.703247"
+ ry="1.3546017" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="33.207432"
+ y="90.827194"
+ id="text1773-6"><tspan
+ sodipodi:role="line"
+ id="tspan1463"
+ x="33.207432"
+ y="90.827194"
+ style="stroke-width:0.19843748">merger</tspan></text>
+ <g
+ id="g2295"
+ transform="matrix(0.75,0,0,0.75,-14.653803,40.613879)">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75,0,0,0.75,-14.463468,63.265443)"
+ style="display:inline"
+ id="g2295-3">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-4"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-0"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-5"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75,0,0,0.75,-14.633561,52.209642)"
+ style="display:inline"
+ id="g2295-5">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-2"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-6"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-9"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75,0,0,0.75,-14.179991,73.090775)"
+ style="display:inline"
+ id="g2295-0">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-8"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-8"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-96"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ id="g1969"
+ transform="matrix(0.52050337,0,0,1.6939167,34.865777,-148.27289)"
+ style="fill:#eef4d7">
+ <rect
+ ry="1.8106976"
+ y="122.52335"
+ x="124.54029"
+ height="8.0187912"
+ width="18.980101"
+ id="rect1769-3-2-7"
+ style="fill:#eef4d7;stroke:#000000;stroke-width:0.14670815;stroke-miterlimit:4;stroke-dasharray:none" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372"
+ x="106.97886"
+ y="62.639709"
+ id="text1773-6-6-5-2"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ y="62.639709"
+ x="106.97886"
+ sodipodi:role="line"
+ id="tspan1964-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.21267372">vhost</tspan></text>
+ <g
+ id="g1263"
+ transform="matrix(0.75,0,0,0.75,-12.18121,-38.666051)">
+ <g
+ id="g2377-5-42"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.24075003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1560-1)"
+ d="m 100.69372,88.1047 c 6.66183,0 6.66183,0 6.66183,0"
+ id="path1556-4"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g1969-8"
+ transform="matrix(0.52050336,0,0,1.6939167,34.817293,-122.54325)"
+ style="display:inline;opacity:0.98999999;fill:#eef4d7">
+ <rect
+ ry="1.8106976"
+ y="122.52335"
+ x="124.54029"
+ height="8.0187912"
+ width="18.980101"
+ id="rect1769-3-2-7-8"
+ style="fill:#eef4d7;stroke:#000000;stroke-width:0.14670815;stroke-miterlimit:4;stroke-dasharray:none" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372"
+ x="107.12971"
+ y="86.447212"
+ id="text1773-6-6-5-2-3"
+ transform="scale(0.93214045,1.0727997)"><tspan
+ y="86.447212"
+ x="107.12971"
+ sodipodi:role="line"
+ id="tspan1964-1-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.21267372">vhost</tspan></text>
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-97)"
+ d="m 108.87008,147.14161 c 4.95896,0 4.95896,0 4.95896,0"
+ id="path14783-8-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1-5)"
+ d="m 107.53993,140.84179 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.24075004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1560-1-3)"
+ d="m 100.34893,140.84179 c 6.66183,0 6.66183,0 6.66183,0"
+ id="path1556-4-6"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g1969-8-0"
+ transform="matrix(0.52050336,0,0,1.6939167,34.472523,-69.806185)"
+ style="display:inline;opacity:0.98999999;fill:#eef4d7">
+ <rect
+ ry="1.8106976"
+ y="122.52335"
+ x="124.54029"
+ height="8.0187912"
+ width="18.980101"
+ id="rect1769-3-2-7-8-0"
+ style="fill:#eef4d7;stroke:#000000;stroke-width:0.14670815;stroke-miterlimit:4;stroke-dasharray:none" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372"
+ x="106.75986"
+ y="135.60555"
+ id="text1773-6-6-5-2-3-0"
+ transform="scale(0.93214045,1.0727997)"><tspan
+ y="135.60555"
+ x="106.75986"
+ sodipodi:role="line"
+ id="tspan1964-1-9-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.21267372">vhost</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6296)"
+ d="m 25.76618,74.06671 c 4.786522,-4.887536 4.786522,-4.887536 4.786522,-4.887536"
+ id="path16400"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#d7f4e3;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="53.738861"
+ y="118.88161"
+ id="text16968-7"><tspan
+ sodipodi:role="line"
+ id="tspan16966-9"
+ x="53.738861"
+ y="118.88161"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#d7f4e3;stroke-width:0.19843748">ring</tspan></text>
+ <rect
+ style="display:inline;opacity:0.98999999;fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.13431512;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769-1"
+ width="21.297846"
+ height="5.9898095"
+ x="30.552706"
+ y="118.42049"
+ ry="1.3525398" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="33.065689"
+ y="122.40759"
+ id="text1773-3"><tspan
+ sodipodi:role="line"
+ id="tspan1461-7"
+ x="33.065689"
+ y="122.40759"
+ style="stroke-width:0.19843748">classifier</tspan></text>
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.24075003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1560-8)"
+ d="m 100.74232,114.79142 c 6.66185,0 6.66185,0 6.66185,0"
+ id="path1556-5"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="display:inline;opacity:0.98999999;fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.12518337;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769-3-9"
+ width="18.472155"
+ height="5.9989409"
+ x="31.08676"
+ y="139.11952"
+ ry="1.3546017" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="33.207436"
+ y="143.24347"
+ id="text1773-6-66"><tspan
+ sodipodi:role="line"
+ id="tspan1463-8"
+ x="33.207436"
+ y="143.24347"
+ style="stroke-width:0.19843748">merger</tspan></text>
+ <g
+ style="display:inline;opacity:0.98999999"
+ id="g2295-4"
+ transform="matrix(0.75000001,0,0,0.75000001,-14.653804,93.030228)">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-9"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-89"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-2"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75000001,0,0,0.75000001,-14.463468,115.68183)"
+ style="display:inline;opacity:0.98999999"
+ id="g2295-3-9">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-4-8"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-0-6"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-5-0"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75000001,0,0,0.75000001,-14.63356,104.62602)"
+ style="display:inline;opacity:0.98999999"
+ id="g2295-5-8">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-2-0"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-6-0"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-9-2"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75000001,0,0,0.75000001,-14.17999,125.50716)"
+ style="display:inline;opacity:0.98999999"
+ id="g2295-0-8">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-8-6"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-8-7"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-96-7"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ style="display:inline;opacity:0.98999999"
+ id="g1263-1-6"
+ transform="matrix(0.75000001,0,0,0.75000001,-12.136796,36.242705)">
+ <g
+ id="g2377-5-42-1-1"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-5-3"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-6-7"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-1-9"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-8-0"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-6-5"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <g
+ style="display:inline;opacity:0.98999999"
+ id="g1263-52-2"
+ transform="matrix(0.75000001,0,0,0.75000001,-12.136796,42.743899)">
+ <g
+ id="g2377-5-42-19-1"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-0-7"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-0-1"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-3-1"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-0-9"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-8-3"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <g
+ id="g1969-2"
+ transform="matrix(0.52050336,0,0,1.6939167,34.865776,-95.856534)"
+ style="display:inline;opacity:0.98999999;fill:#eef4d7">
+ <rect
+ ry="1.8106976"
+ y="122.52335"
+ x="124.54029"
+ height="8.0187912"
+ width="18.980101"
+ id="rect1769-3-2-7-0"
+ style="fill:#eef4d7;stroke:#000000;stroke-width:0.14670815;stroke-miterlimit:4;stroke-dasharray:none" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372"
+ x="107.1816"
+ y="111.32291"
+ id="text1773-6-6-5-2-5"
+ transform="scale(0.93214045,1.0727997)"><tspan
+ y="111.32291"
+ x="107.1816"
+ sodipodi:role="line"
+ id="tspan1964-1-2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.21267372">vhost</tspan></text>
+ <g
+ style="display:inline;opacity:0.98999999"
+ id="g1263-18"
+ transform="matrix(0.75000001,0,0,0.75000001,-12.007968,14.39228)">
+ <g
+ id="g2377-5-42-8"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-7"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-3"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-6"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-5"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-85"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <g
+ style="display:inline;opacity:0.98999999"
+ id="g1263-5-6"
+ transform="matrix(0.75000001,0,0,0.75000001,-11.724485,20.874574)">
+ <g
+ id="g2377-5-42-7-9"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-4-8"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-1-6"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-0-9"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-6-1"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-9-4"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-2)"
+ d="m 109.41096,114.89574 c 4.20595,0 4.20595,0 4.20595,0"
+ id="path14783-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-5-7)"
+ d="m 109.62596,121.20249 c 4.20594,0 4.20594,0 4.20594,0"
+ id="path14783-8-7-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker17252)"
+ d="M 51.850549,69.348147 C 65.374218,74.32076 65.374218,74.32076 65.374218,74.32076"
+ id="path17242"
+ inkscape:connector-curvature="0" />
+ <g
+ style="display:inline"
+ id="g1263-5"
+ transform="matrix(0.75,0,0,0.75,-12.699537,-31.862767)">
+ <g
+ id="g2377-5-42-7"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-4"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-1"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-0"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-6"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-9"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker9343)"
+ d="m 49.55891,89.527187 c 15.9854,-4.679791 15.9854,-4.679791 15.9854,-4.679791 v 0"
+ id="path17770"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker17872)"
+ d="M 65.827788,95.560313 C 49.55891,90.407413 49.55891,90.407413 49.55891,90.407413"
+ id="path17862"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker18406)"
+ d="M 31.086758,88.99802 C 25.76618,83.755415 25.76618,83.755415 25.76618,83.755415"
+ id="path18396"
+ inkscape:connector-curvature="0" />
+ <g
+ style="display:inline"
+ id="g1263-1"
+ transform="matrix(0.75,0,0,0.75,-11.641198,-17.237352)">
+ <g
+ id="g2377-5-42-1"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-5"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-6"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-1"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-8"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-6"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g1263-52"
+ transform="matrix(0.75,0,0,0.75,-11.641198,-10.736158)">
+ <g
+ id="g2377-5-42-19"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-0"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-0"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-3"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-0"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-8"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6296-4)"
+ d="m 25.454394,126.25419 c 4.786522,-4.88753 4.786522,-4.88753 4.786522,-4.88753"
+ id="path16400-6"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker18406-4)"
+ d="m 30.774972,141.1855 c -5.320578,-5.2426 -5.320578,-5.2426 -5.320578,-5.2426"
+ id="path18396-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker11193)"
+ d="M 86.106872,73.620847 C 99.689413,114.33366 99.689413,114.33366 99.689413,114.33366"
+ id="path11183"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker11643)"
+ d="M 99.689413,122.09597 C 86.560442,94.672728 86.560442,94.672728 86.560442,94.672728"
+ id="path11633"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14003)"
+ d="m 86.086632,114.97061 c 13.5543,-26.794505 13.5543,-26.794505 13.5543,-26.794505"
+ id="path13993"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker15037)"
+ d="M 99.640931,95.409267 C 86.276967,137.26377 86.276967,137.26377 86.276967,137.26377"
+ id="path15027"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker15633)"
+ d="m 86.106875,126.5664 c 13.189286,14.34678 13.189286,14.34678 13.189286,14.34678"
+ id="path15623"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [spp] [PATCH 16/28] doc: add explanation for terminating spp app
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
` (4 preceding siblings ...)
2018-01-23 0:29 ` [spp] [PATCH 15/28] doc: add spp_sample_usage_svg in docs/spp_vf/ ogawa.yasufumi
@ 2018-01-23 0:29 ` ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 17/28] doc: add explanations on options of spp ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 18/28] doc: update description for the latest spp version ogawa.yasufumi
7 siblings, 0 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:29 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp
Cc: Hiroyuki Nakamura, Kentaro Watanabe, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Add a chapter that describes procedures for terminating spp application.
Signed-off-by: Kentaro Watanabe <watanabe.kentaro.z01@as.ntt-tx.co.jp>
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/sample_usage.md | 46 +++++++++++++++++++++++++++++++--------------
1 file changed, 32 insertions(+), 14 deletions(-)
diff --git a/docs/spp_vf/sample_usage.md b/docs/spp_vf/sample_usage.md
index ce68867..8653a49 100644
--- a/docs/spp_vf/sample_usage.md
+++ b/docs/spp_vf/sample_usage.md
@@ -188,20 +188,38 @@ Now, you can login VMs.
$ ssh sppuser@192.168.150.32
```
-If you unregister the addresses, send request as following.
+## End Application
+
+Describe the procedure to end the application.
+
+### Remove MAC address from Classifier
+
+It is possible to remove the MAC address set by inputting the following
+command from `spp_vf.py` which was started with `Setup SPP`.
+The flush command is required to reflect the setting.
```sh
- {
- "commands": [
- {
- "command": "classifier_table",
- "type": "mac",
- "value": "52:54:00:12:34:58",
- "port": "unuse"
- },
- {
- "command": "flush"
- }
- ]
- }
+ spp > classifier_table mac 52:54:00:12:34:56 unuse
+ spp > classifier_table mac 52:54:00:12:34:58 unuse
+ spp > flush
+ ```
+
+### Teardown SPP
+
+Tear down SPP in the reverse order of Setup.
+To stop other than spp_vf.py, press Ctrl + C on the launched screen.
+spp_vf.py can be stopped by the bye command.
+
+ ```sh
+ # stop secondary 2
+ Ctrl + C
+
+ # stop secondary 1
+ Ctrl + C
+
+ # stop primary
+ Ctrl + C
+
+ # stop controller
+ spp > bye
```
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [spp] [PATCH 17/28] doc: add explanations on options of spp
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
` (5 preceding siblings ...)
2018-01-23 0:29 ` [spp] [PATCH 16/28] doc: add explanation for terminating spp app ogawa.yasufumi
@ 2018-01-23 0:29 ` ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 18/28] doc: update description for the latest spp version ogawa.yasufumi
7 siblings, 0 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:29 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp
Cc: Hiroyuki Nakamura, Daiki Yamashita, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Add the following explanations:
* Options for DPDK and ones for spp are available.
* Hyperlink to the reference to DPDK option is inserted.
Signed-off-by: Daiki Yamashita <yamashita.daiki.z01@as.ntt-tx.co.jp>
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/how_to_use.md | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/docs/spp_vf/how_to_use.md b/docs/spp_vf/how_to_use.md
index 6b5019c..e9b752d 100644
--- a/docs/spp_vf/how_to_use.md
+++ b/docs/spp_vf/how_to_use.md
@@ -29,6 +29,11 @@ $ python ./src/spp.py -p 5555 -s 6666
SPP primary reserves and manages resources for secondary processes.
You have to run it before secondaries.
+SPP primary has two kinds of options, dpdk and spp.
+Option of dpdk is before `--`, option of spp is after `--`.
+
+Option of dpdk are refer to [dpdk documentation](http://dpdk.org/doc/guides/linux_gsg/build_sample_apps.html#running-a-sample-application).
+
Options of spp primary are
* -p : port mask
* -n : number of rings
@@ -45,6 +50,14 @@ $ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
### SPP Secondary
In `spp_vf`, spp secondary processes are launched by single command.
+
+`spp_vf` has two kinds of options as well as spp primary.
+
+Option of dpdk are refer to [dpdk documentation](http://dpdk.org/doc/guides/linux_gsg/build_sample_apps.html#running-a-sample-application).
+
+Options of `spp_vf` are
+ * TODO
+
Core assingment and network configuration are defined
in JSON formatted config file.
If you run `spp_vf` without giving config file, it refers default
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [spp] [PATCH 18/28] doc: update description for the latest spp version
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
` (6 preceding siblings ...)
2018-01-23 0:29 ` [spp] [PATCH 17/28] doc: add explanations on options of spp ogawa.yasufumi
@ 2018-01-23 0:29 ` ogawa.yasufumi
7 siblings, 0 replies; 9+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:29 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp
Cc: Hiroyuki Nakamura, Kentaro Watanabe, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Update description for the latest version of spp.
* Update syntax and procedures (nic->phy、ring0->ring:0 etc.)
* Change filename spp.py to spp_vf.py.
* Change how to register MAC in Classifier_table.
Signed-off-by: Kentaro Watanabe <watanabe.kentaro.z01@as.ntt-tx.co.jp>
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/config_manual.md | 58 +++++++++++++++++++++---------------------
docs/spp_vf/how_to_use.md | 2 +-
docs/spp_vf/sample_usage.md | 60 +++++++++-----------------------------------
3 files changed, 42 insertions(+), 78 deletions(-)
diff --git a/docs/spp_vf/config_manual.md b/docs/spp_vf/config_manual.md
index 370dfdb..f049407 100644
--- a/docs/spp_vf/config_manual.md
+++ b/docs/spp_vf/config_manual.md
@@ -17,12 +17,12 @@ There are three types of forwarder for 1:1, 1:N and N:1.
There are three port types.
- * nic: Physical NIC
+ * phy: Physical NIC
* vhost: Vhost PMD for VMs
* ring: Ring PMD for spp components
Each of ports is identified as resource ID with port type and resource ID.
-For example, resource ID of physical NIC of ID 0 is described as `nic0`.
+For example, resource ID of physical NIC of ID 0 is described as `phy:0`.
## Config Format
@@ -66,76 +66,76 @@ Here is default config `spp.json` and network diagram of it.
{
"core": 2, // Core ID
"type": "merge", // Forwarder type
- "rx_port": ["nic0", "nic1"], // Rx port, It MUST be a list for merge type
- "tx_port": "ring8" // Tx port
+ "rx_port": ["phy:0", "phy:1"], // Rx port, It MUST be a list for merge type
+ "tx_port": "ring:8" // Tx port
},
{
"core": 3,
"type": "classifier_mac",
- "rx_port": "ring8", // Rx port, It is not a list because type is classifier_mac
+ "rx_port": "ring:8", // Rx port, It is not a list because type is classifier_mac
"tx_port_table": "classifier_mac_table" // If type is classifier_mac, tx is classifier_mac_table
},
{
"core": 4,
"type": "forward",
- "rx_port": "ring0",
- "tx_port": "vhost0"
+ "rx_port": "ring:0",
+ "tx_port": "vhost:0"
},
{
"core": 5,
"type": "forward",
- "rx_port": "ring1",
- "tx_port": "vhost2"
+ "rx_port": "ring:1",
+ "tx_port": "vhost:2"
},
{
"core": 6,
"type": "forward",
- "rx_port": "vhost0",
- "tx_port": "ring2"
+ "rx_port": "vhost:0",
+ "tx_port": "ring:2"
},
{
"core": 7,
"type": "forward",
- "rx_port": "vhost2",
- "tx_port": "ring3"
+ "rx_port": "vhost:2",
+ "tx_port": "ring:3"
},
{
"core": 8,
"type": "merge",
- "rx_port": ["ring2", "ring3"],
- "tx_port": "nic0"
+ "rx_port": ["ring:2", "ring:3"],
+ "tx_port": "phy:0"
},
{
"core": 9,
"type": "forward",
- "rx_port": "ring4",
- "tx_port": "vhost1"
+ "rx_port": "ring:4",
+ "tx_port": "vhost:1"
},
{
"core": 10,
"type": "forward",
- "rx_port": "ring5",
- "tx_port": "vhost3"
+ "rx_port": "ring:5",
+ "tx_port": "vhost:3"
},
{
"core": 11,
"type": "forward",
- "rx_port": "vhost1",
- "tx_port": "ring6"
+ "rx_port": "vhost:1",
+ "tx_port": "ring:6"
},
{
"core": 12,
"type": "forward",
- "rx_port": "vhost3",
- "tx_port": "ring7"
+ "rx_port": "vhost:3",
+ "tx_port": "ring:7"
},
{
"core": 13,
"type": "merge",
- "rx_port": ["ring6", "ring7"],
- "tx_port": "nic1"
+ "rx_port": ["ring:6", "ring:7"],
+ "tx_port": "phy:1"
}
]
}
@@ -145,19 +145,19 @@ Here is default config `spp.json` and network diagram of it.
"table": [
{
"mac":"52:54:00:12:34:56",
- "port":"ring0"
+ "port":"ring:0"
},
{
"mac":"52:54:00:12:34:57",
- "port":"ring4"
+ "port":"ring:4"
},
{
"mac":"52:54:00:12:34:58",
- "port":"ring1"
+ "port":"ring:1"
},
{
"mac":"52:54:00:12:34:59",
- "port":"ring5"
+ "port":"ring:5"
}
]
}
diff --git a/docs/spp_vf/how_to_use.md b/docs/spp_vf/how_to_use.md
index e9b752d..5cf464c 100644
--- a/docs/spp_vf/how_to_use.md
+++ b/docs/spp_vf/how_to_use.md
@@ -21,7 +21,7 @@ Before launching spp, you need to setup described as [setup guide](setup_guide.m
First, run SPP Controller with port numbers for spp primary and secondary.
```sh
-$ python ./src/spp.py -p 5555 -s 6666
+$ python ./src/spp_vf.py -p 5555 -s 6666
```
### SPP Primary
diff --git a/docs/spp_vf/sample_usage.md b/docs/spp_vf/sample_usage.md
index 8653a49..abab4d4 100644
--- a/docs/spp_vf/sample_usage.md
+++ b/docs/spp_vf/sample_usage.md
@@ -24,7 +24,7 @@ First, launch spp controller and primary process.
/path/to/Soft-Patch-Panel
# SPP controller
- $ python ./src/spp.py -p 5555 -s 6666
+ $ python ./src/spp_vf.py -p 5555 -s 6666
# SPP primary
$ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
@@ -34,18 +34,9 @@ First, launch spp controller and primary process.
-p 0x03 -n 8 -s 127.0.0.1:5555
```
-After primary process is launched, run nc command for each of
-seconrdary processes and itselves.
-In this sample, commands for secondary are sent from nc because
-`spp.py` does not support commands for spp_vf.
-nc is a network utility and it can open TCP connections, send UDP
-packets, listen on arbitrary TCP and UDP ports, do port scanning,
-and deal with both IPv4 and IPv6.
+launch secondary process after launch primary process.
```sh
- # run nc for secondary 1 with port 11111
- $ while true; do nc -l 11111; done
-
# start secondary 1
$ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
-c 0x00fd -n 4 --proc-type=secondary \
@@ -54,9 +45,6 @@ and deal with both IPv4 and IPv6.
--config /path/to/spp_vf1_without_cmtab.json \
-s 127.0.0.1:11111
- # run nc for secondary 2 with port 11112
- $ while true; do nc -l 11112; done
-
# start secondary 2
$ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
-c 0x3f01 -n 4 --proc-type=secondary \
@@ -126,48 +114,20 @@ discarding packets.
## Test Application
-TODO(yasufum) json-based steps will be deprecated.
-
### Register MAC address to Classifier
Register MAC addresses to classifier.
```sh
- {
- "commands": [
- {
- "command": "classifier_table",
- "type": "mac",
- "value": "52:54:00:12:34:56",
- "port": "ring0"
- },
- {
- "command": "classifier_table",
- "type": "mac",
- "value": "52:54:00:12:34:58",
- "port": "ring1"
- },
- {
- "command": "flush"
- }
- ]
- }
+ spp > classifier_table mac 52:54:00:12:34:56 ring:0
+ spp > classifier_table mac 52:54:00:12:34:58 ring:1
+ spp > flush
```
```sh
- {
- "commands": [
- {
- "command": "classifier_table",
- "type": "mac",
- "value": "52:54:00:12:34:57",
- "port": "ring4"
- },
- {
- "command": "flush"
- }
- ]
- }
+ spp > classifier_table mac 52:54:00:12:34:57 ring:4
+ spp > classifier_table mac 52:54:00:12:34:59 ring:5
+ spp > flush
```
### Login to VMs
@@ -201,6 +161,10 @@ The flush command is required to reflect the setting.
```sh
spp > classifier_table mac 52:54:00:12:34:56 unuse
spp > classifier_table mac 52:54:00:12:34:58 unuse
+
+ spp > classifier_table mac 52:54:00:12:34:57 unuse
+ spp > classifier_table mac 52:54:00:12:34:59 unuse
+
spp > flush
```
--
2.13.1
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-01-23 0:29 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-23 0:28 [spp] [PATCH 10/28] doc: revice path descs ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 11/28] doc: add network configuration diagram ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 12/28] doc: update user account ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 13/28] doc: update descriptions for todo ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 14/28] doc: add description for explanation section ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 15/28] doc: add spp_sample_usage_svg in docs/spp_vf/ ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 16/28] doc: add explanation for terminating spp app ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 17/28] doc: add explanations on options of spp ogawa.yasufumi
2018-01-23 0:29 ` [spp] [PATCH 18/28] doc: update description for the latest spp version ogawa.yasufumi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).