aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHonnappa Nagarahalli <honnappa.nagarahalli@arm.com>2017-09-29 18:46:21 -0500
committerHonnappa Nagarahalli <honnappa.nagarahalli@arm.com>2017-10-03 13:26:57 -0500
commit3d3c8f71f39ff139695d6f4b8e5ea17502c5f7cf (patch)
treeb9c85c60570915835c90e2db2038bb7a54a23c31
parente89a0ed9c4cd6d7dc947b978ad1dcabc6d5a21a2 (diff)
parent13322ca632f8ffba292bec058e597719bc54142d (diff)
downloadodp-cloud-dev.tar.gz
Merge branch 'api-next' into cloud-devcloud-dev
Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Signed-off-by: Yi He <yi.he@linaro.org> Signed-off-by: Brian Brooks <brian.brooks@arm.com> Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Signed-off-by: Balakrishna Garapati <balakrishna.garapati@linaro.org> Reviewed-by: Ola Liljedahl <ola.liljedahl@arm.com>
-rw-r--r--.gitignore3
-rw-r--r--.travis.yml166
-rw-r--r--DEPENDENCIES31
-rw-r--r--Makefile.am10
-rw-r--r--configure.ac149
-rw-r--r--doc/images/segment.svg181
-rw-r--r--doc/users-guide/users-guide-crypto.adoc120
-rw-r--r--example/Makefile.inc8
-rw-r--r--example/ddf_ifs/Makefile.am2
-rw-r--r--example/generator/odp_generator.c304
-rw-r--r--example/m4/configure.m411
-rw-r--r--frameworks/modular/odp_module.c2
-rw-r--r--helper/.gitignore3
-rw-r--r--helper/Makefile.am21
-rw-r--r--helper/chksum.c2
-rw-r--r--helper/cuckootable.c2
-rw-r--r--helper/eth.c2
-rw-r--r--helper/hashtable.c3
-rw-r--r--helper/include/odp/helper/chksum.h2
-rw-r--r--helper/include/odp/helper/ip.h92
-rw-r--r--helper/include/odph_debug.h (renamed from helper/odph_debug.h)0
-rw-r--r--helper/include/odph_list_internal.h (renamed from helper/odph_list_internal.h)22
-rw-r--r--helper/ip.c2
-rw-r--r--helper/iplookuptable.c2
-rw-r--r--helper/lineartable.c2
-rw-r--r--helper/linux/thread.c2
-rw-r--r--helper/m4/configure.m49
-rw-r--r--helper/test/Makefile.am23
-rw-r--r--helper/test/chksum.c14
-rw-r--r--helper/test/cuckootable.c2
-rw-r--r--helper/test/iplookuptable.c2
-rw-r--r--helper/test/linux/process.c9
-rw-r--r--helper/test/linux/pthread.c9
-rw-r--r--helper/test/odpthreads.c9
-rw-r--r--helper/test/parse.c2
-rw-r--r--helper/test/table.c2
-rw-r--r--helper/threads.c2
-rw-r--r--include/odp/api/spec/crypto.h9
-rw-r--r--include/odp/api/spec/event.h4
-rw-r--r--include/odp/api/spec/ipsec.h18
-rw-r--r--include/odp/api/spec/packet.h52
-rw-r--r--include/odp/api/spec/packet_io.h59
-rw-r--r--include/odp/api/spec/pool.h14
-rw-r--r--include/odp/api/spec/queue.h9
-rw-r--r--include/odp/api/spec/schedule.h28
-rw-r--r--include/odp/api/spec/schedule_types.h2
-rw-r--r--include/odp/api/spec/timer.h36
-rw-r--r--include/odp/arch/default/api/abi/packet.h2
-rw-r--r--m4/ax_check_compile_flag.m412
-rw-r--r--platform/Makefile.inc7
-rw-r--r--platform/linux-dpdk/Makefile.am29
-rw-r--r--platform/linux-dpdk/buffer/dpdk.c2
-rw-r--r--platform/linux-dpdk/include/odp_packet_io_internal.h3
-rw-r--r--platform/linux-dpdk/m4/configure.m425
-rw-r--r--platform/linux-dpdk/odp_crypto.c2
-rw-r--r--platform/linux-dpdk/odp_init.c2
-rw-r--r--platform/linux-dpdk/odp_packet.c2
-rw-r--r--platform/linux-dpdk/pktio/dpdk.h2
-rw-r--r--platform/linux-dpdk/pktio/subsystem.c2
-rw-r--r--platform/linux-dpdk/pool/dpdk.c1
-rw-r--r--platform/linux-generic/Makefile.am23
-rw-r--r--platform/linux-generic/Makefile.inc2
-rw-r--r--platform/linux-generic/_fdserver.c2
-rw-r--r--platform/linux-generic/_ishm.c2
-rw-r--r--platform/linux-generic/_ishmphy.c2
-rw-r--r--platform/linux-generic/_ishmpool.c1
-rw-r--r--platform/linux-generic/_modules.c1
-rw-r--r--platform/linux-generic/arch/arm/odp_cpu_arch.c2
-rw-r--r--platform/linux-generic/arch/arm/odp_sysinfo_parse.c7
-rw-r--r--platform/linux-generic/arch/default/odp_cpu_arch.c2
-rw-r--r--platform/linux-generic/arch/default/odp_sysinfo_parse.c7
-rw-r--r--platform/linux-generic/arch/mips64/odp_cpu_arch.c2
-rw-r--r--platform/linux-generic/arch/mips64/odp_sysinfo_parse.c7
-rw-r--r--platform/linux-generic/arch/powerpc/odp_cpu_arch.c2
-rw-r--r--platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c7
-rw-r--r--platform/linux-generic/arch/x86/cpu_flags.c4
-rw-r--r--platform/linux-generic/arch/x86/odp_cpu_arch.c2
-rw-r--r--platform/linux-generic/arch/x86/odp_sysinfo_parse.c40
-rw-r--r--platform/linux-generic/buffer/generic.c2
-rw-r--r--platform/linux-generic/drv_driver.c2
-rw-r--r--platform/linux-generic/include/odp/api/plat/packet_inlines.h50
-rw-r--r--platform/linux-generic/include/odp/api/plat/packet_inlines_api.h16
-rw-r--r--platform/linux-generic/include/odp/api/plat/packet_types.h38
-rw-r--r--platform/linux-generic/include/odp_buffer_internal.h74
-rw-r--r--platform/linux-generic/include/odp_classification_internal.h7
-rw-r--r--platform/linux-generic/include/odp_internal.h1
-rw-r--r--platform/linux-generic/include/odp_packet_internal.h133
-rw-r--r--platform/linux-generic/include/odp_packet_io_internal.h5
-rw-r--r--platform/linux-generic/include/odp_pool_internal.h1
-rw-r--r--platform/linux-generic/include/odp_queue_scalable_internal.h2
-rw-r--r--platform/linux-generic/include/odp_queue_subsystem.h2
-rw-r--r--platform/linux-generic/include/odp_schedule_if.h2
-rw-r--r--platform/linux-generic/include/odp_schedule_scalable.h25
-rw-r--r--platform/linux-generic/include/odp_schedule_scalable_ordered.h13
-rw-r--r--platform/linux-generic/include/odp_schedule_subsystem.h3
-rw-r--r--platform/linux-generic/include/odp_timer_internal.h3
-rw-r--r--platform/linux-generic/m4/odp_dpdk.m46
-rw-r--r--platform/linux-generic/m4/odp_netmap.m43
-rw-r--r--platform/linux-generic/m4/odp_pcap.m42
-rw-r--r--platform/linux-generic/m4/odp_schedule.m466
-rw-r--r--platform/linux-generic/odp_atomic.c2
-rw-r--r--platform/linux-generic/odp_barrier.c2
-rw-r--r--platform/linux-generic/odp_bitmap.c2
-rw-r--r--platform/linux-generic/odp_byteorder.c2
-rw-r--r--platform/linux-generic/odp_classification.c17
-rw-r--r--platform/linux-generic/odp_cpu.c2
-rw-r--r--platform/linux-generic/odp_cpumask.c2
-rw-r--r--platform/linux-generic/odp_cpumask_task.c2
-rw-r--r--platform/linux-generic/odp_crypto.c73
-rw-r--r--platform/linux-generic/odp_errno.c2
-rw-r--r--platform/linux-generic/odp_event.c2
-rw-r--r--platform/linux-generic/odp_hash.c2
-rw-r--r--platform/linux-generic/odp_impl.c2
-rw-r--r--platform/linux-generic/odp_init.c3
-rw-r--r--platform/linux-generic/odp_ipsec.c2
-rw-r--r--platform/linux-generic/odp_name_table.c2
-rw-r--r--platform/linux-generic/odp_packet.c1516
-rw-r--r--platform/linux-generic/odp_packet_flags.c2
-rw-r--r--platform/linux-generic/odp_packet_io.c53
-rw-r--r--platform/linux-generic/odp_pkt_queue.c2
-rw-r--r--platform/linux-generic/odp_queue_if.c3
-rw-r--r--platform/linux-generic/odp_rwlock.c2
-rw-r--r--platform/linux-generic/odp_rwlock_recursive.c2
-rw-r--r--platform/linux-generic/odp_schedule_if.c2
-rw-r--r--platform/linux-generic/odp_shared_memory.c2
-rw-r--r--platform/linux-generic/odp_sorted_list.c2
-rw-r--r--platform/linux-generic/odp_spinlock.c2
-rw-r--r--platform/linux-generic/odp_spinlock_recursive.c2
-rw-r--r--platform/linux-generic/odp_std_clib.c2
-rw-r--r--platform/linux-generic/odp_sync.c2
-rw-r--r--platform/linux-generic/odp_system_info.c39
-rw-r--r--platform/linux-generic/odp_thread.c2
-rw-r--r--platform/linux-generic/odp_thrmask.c2
-rw-r--r--platform/linux-generic/odp_ticketlock.c2
-rw-r--r--platform/linux-generic/odp_time.c2
-rw-r--r--platform/linux-generic/odp_timer.c15
-rw-r--r--platform/linux-generic/odp_timer_wheel.c2
-rw-r--r--platform/linux-generic/odp_traffic_mngr.c4
-rw-r--r--platform/linux-generic/odp_version.c2
-rw-r--r--platform/linux-generic/odp_weak.c2
-rw-r--r--platform/linux-generic/pktio/common.c2
-rw-r--r--platform/linux-generic/pktio/dpdk.c280
-rw-r--r--platform/linux-generic/pktio/ethtool.c14
-rw-r--r--platform/linux-generic/pktio/ipc.c3
-rw-r--r--platform/linux-generic/pktio/loopback.c22
-rw-r--r--platform/linux-generic/pktio/netmap.c2
-rw-r--r--platform/linux-generic/pktio/pcap.c2
-rw-r--r--platform/linux-generic/pktio/ring.c6
-rw-r--r--platform/linux-generic/pktio/socket.c4
-rw-r--r--platform/linux-generic/pktio/socket_mmap.c2
-rw-r--r--platform/linux-generic/pktio/sysfs.c2
-rw-r--r--platform/linux-generic/pktio/tap.c2
-rw-r--r--platform/linux-generic/pool/generic.c37
-rw-r--r--platform/linux-generic/queue/generic.c6
-rw-r--r--platform/linux-generic/queue/scalable.c39
-rw-r--r--platform/linux-generic/queue/subsystem.c5
-rw-r--r--platform/linux-generic/schedule/generic.c58
-rw-r--r--platform/linux-generic/schedule/iquery.c25
-rw-r--r--platform/linux-generic/schedule/scalable.c556
-rw-r--r--platform/linux-generic/schedule/scalable_ordered.c48
-rw-r--r--platform/linux-generic/schedule/sp.c23
-rw-r--r--platform/linux-generic/schedule/subsystem.c2
-rw-r--r--test/Makefile.inc9
-rw-r--r--test/common_plat/common/Makefile.am9
-rw-r--r--test/common_plat/common/mask_common.c2
-rw-r--r--test/common_plat/common/odp_cunit_common.c4
-rw-r--r--test/common_plat/m4/miscellaneous.m49
-rw-r--r--test/common_plat/m4/performance.m49
-rw-r--r--test/common_plat/m4/validation.m471
-rw-r--r--test/common_plat/miscellaneous/Makefile.am6
-rw-r--r--test/common_plat/performance/Makefile.am34
-rw-r--r--test/common_plat/performance/odp_bench_packet.c2
-rw-r--r--test/common_plat/performance/odp_crypto.c22
-rw-r--r--test/common_plat/performance/odp_l2fwd.c89
-rw-r--r--test/common_plat/performance/odp_pktio_ordered.c4
-rw-r--r--test/common_plat/performance/odp_pktio_perf.c3
-rw-r--r--test/common_plat/performance/odp_sched_latency.c2
-rw-r--r--test/common_plat/performance/odp_scheduling.c2
-rw-r--r--test/common_plat/validation/Makefile.am2
-rw-r--r--test/common_plat/validation/api/Makefile.am3
-rw-r--r--test/common_plat/validation/api/Makefile.inc8
-rw-r--r--test/common_plat/validation/api/atomic/Makefile.am9
-rw-r--r--test/common_plat/validation/api/atomic/atomic.c2
-rw-r--r--test/common_plat/validation/api/atomic/atomic_main.c2
-rw-r--r--test/common_plat/validation/api/barrier/Makefile.am9
-rw-r--r--test/common_plat/validation/api/barrier/barrier.c2
-rw-r--r--test/common_plat/validation/api/barrier/barrier_main.c2
-rw-r--r--test/common_plat/validation/api/buffer/Makefile.am9
-rw-r--r--test/common_plat/validation/api/buffer/buffer.c2
-rw-r--r--test/common_plat/validation/api/buffer/buffer_main.c3
-rw-r--r--test/common_plat/validation/api/classification/Makefile.am20
-rw-r--r--test/common_plat/validation/api/classification/classification.c2
-rw-r--r--test/common_plat/validation/api/classification/classification_main.c2
-rw-r--r--test/common_plat/validation/api/classification/odp_classification_basic.c2
-rw-r--r--test/common_plat/validation/api/classification/odp_classification_common.c5
-rw-r--r--test/common_plat/validation/api/classification/odp_classification_test_pmr.c6
-rw-r--r--test/common_plat/validation/api/classification/odp_classification_tests.c11
-rw-r--r--test/common_plat/validation/api/cpumask/Makefile.am10
-rw-r--r--test/common_plat/validation/api/cpumask/cpumask.c2
-rw-r--r--test/common_plat/validation/api/cpumask/cpumask_main.c3
-rw-r--r--test/common_plat/validation/api/crypto/Makefile.am16
-rw-r--r--test/common_plat/validation/api/crypto/crypto.c2
-rw-r--r--test/common_plat/validation/api/crypto/crypto.h16
-rw-r--r--test/common_plat/validation/api/crypto/crypto_main.c2
-rw-r--r--test/common_plat/validation/api/crypto/odp_crypto_test_inp.c1118
-rw-r--r--test/common_plat/validation/api/crypto/test_vectors.h984
-rw-r--r--test/common_plat/validation/api/crypto/test_vectors_len.h45
-rw-r--r--test/common_plat/validation/api/errno/Makefile.am9
-rw-r--r--test/common_plat/validation/api/errno/errno.c2
-rw-r--r--test/common_plat/validation/api/errno/errno_main.c2
-rw-r--r--test/common_plat/validation/api/hash/Makefile.am9
-rw-r--r--test/common_plat/validation/api/hash/hash.c2
-rw-r--r--test/common_plat/validation/api/hash/hash_main.c2
-rw-r--r--test/common_plat/validation/api/init/Makefile.am16
-rw-r--r--test/common_plat/validation/api/init/init.c2
-rw-r--r--test/common_plat/validation/api/init/init_main_abort.c3
-rw-r--r--test/common_plat/validation/api/init/init_main_log.c3
-rw-r--r--test/common_plat/validation/api/init/init_main_ok.c3
-rw-r--r--test/common_plat/validation/api/lock/Makefile.am9
-rw-r--r--test/common_plat/validation/api/lock/lock.c2
-rw-r--r--test/common_plat/validation/api/lock/lock_main.c2
-rw-r--r--test/common_plat/validation/api/packet/Makefile.am9
-rw-r--r--test/common_plat/validation/api/packet/packet.c111
-rw-r--r--test/common_plat/validation/api/packet/packet_main.c2
-rw-r--r--test/common_plat/validation/api/pktio/Makefile.am9
-rw-r--r--test/common_plat/validation/api/pktio/parser.c3
-rw-r--r--test/common_plat/validation/api/pktio/pktio.c3
-rw-r--r--test/common_plat/validation/api/pktio/pktio_main.c2
-rw-r--r--test/common_plat/validation/api/pool/Makefile.am9
-rw-r--r--test/common_plat/validation/api/pool/pool.c2
-rw-r--r--test/common_plat/validation/api/pool/pool_main.c2
-rw-r--r--test/common_plat/validation/api/queue/Makefile.am9
-rw-r--r--test/common_plat/validation/api/queue/queue.c10
-rw-r--r--test/common_plat/validation/api/queue/queue_main.c2
-rw-r--r--test/common_plat/validation/api/random/Makefile.am9
-rw-r--r--test/common_plat/validation/api/random/random.c2
-rw-r--r--test/common_plat/validation/api/random/random_main.c2
-rw-r--r--test/common_plat/validation/api/scheduler/Makefile.am9
-rw-r--r--test/common_plat/validation/api/scheduler/scheduler.c22
-rw-r--r--test/common_plat/validation/api/scheduler/scheduler_main.c2
-rw-r--r--test/common_plat/validation/api/shmem/Makefile.am9
-rw-r--r--test/common_plat/validation/api/shmem/shmem.c2
-rw-r--r--test/common_plat/validation/api/shmem/shmem_main.c2
-rw-r--r--test/common_plat/validation/api/std_clib/Makefile.am9
-rw-r--r--test/common_plat/validation/api/std_clib/std_clib.c2
-rw-r--r--test/common_plat/validation/api/std_clib/std_clib_main.c2
-rw-r--r--test/common_plat/validation/api/system/Makefile.am9
-rw-r--r--test/common_plat/validation/api/system/system.c2
-rw-r--r--test/common_plat/validation/api/system/system_main.c2
-rw-r--r--test/common_plat/validation/api/thread/Makefile.am12
-rw-r--r--test/common_plat/validation/api/thread/thread.c2
-rw-r--r--test/common_plat/validation/api/thread/thread_main.c2
-rw-r--r--test/common_plat/validation/api/time/Makefile.am8
-rw-r--r--test/common_plat/validation/api/time/time.c2
-rw-r--r--test/common_plat/validation/api/time/time_main.c2
-rw-r--r--test/common_plat/validation/api/timer/Makefile.am9
-rw-r--r--test/common_plat/validation/api/timer/timer.c2
-rw-r--r--test/common_plat/validation/api/timer/timer_main.c2
-rw-r--r--test/common_plat/validation/api/traffic_mngr/Makefile.am8
-rw-r--r--test/common_plat/validation/api/traffic_mngr/traffic_mngr.c4
-rw-r--r--test/common_plat/validation/api/traffic_mngr/traffic_mngr_main.c2
-rw-r--r--test/common_plat/validation/drv/Makefile.am3
-rw-r--r--test/linux-dpdk/m4/configure.m42
-rw-r--r--test/linux-generic/Makefile.inc4
-rw-r--r--test/linux-generic/m4/performance.m49
-rw-r--r--test/linux-generic/mmap_vlan_ins/Makefile.am9
-rw-r--r--test/linux-generic/mmap_vlan_ins/mmap_vlan_ins.c2
-rw-r--r--test/linux-generic/performance/Makefile.am2
-rw-r--r--test/linux-generic/pktio_ipc/Makefile.am13
-rw-r--r--test/linux-generic/pktio_ipc/ipc_common.c14
-rw-r--r--test/linux-generic/pktio_ipc/ipc_common.h4
-rw-r--r--test/linux-generic/pktio_ipc/pktio_ipc1.c42
-rw-r--r--test/linux-generic/pktio_ipc/pktio_ipc2.c38
-rw-r--r--test/linux-generic/ring/Makefile.am19
-rw-r--r--test/linux-generic/ring/ring_basic.c2
-rw-r--r--test/linux-generic/ring/ring_main.c2
-rw-r--r--test/linux-generic/ring/ring_stress.c4
-rw-r--r--test/linux-generic/ring/ring_suites.c2
-rw-r--r--test/linux-generic/validation/api/shmem/Makefile.am16
-rw-r--r--test/linux-generic/validation/api/shmem/shmem.h21
-rw-r--r--test/linux-generic/validation/api/shmem/shmem_linux.c2
-rw-r--r--test/linux-generic/validation/api/shmem/shmem_odp1.c2
-rw-r--r--test/linux-generic/validation/api/shmem/shmem_odp2.c2
283 files changed, 4401 insertions, 3813 deletions
diff --git a/.gitignore b/.gitignore
index cce2428..1652a81 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,9 @@ depcomp
doc/output
dpdk/
install-sh
+include/config.h.in
+include/config.h
+include/stamp-h1
lib/
libtool
ltmain.sh
diff --git a/.travis.yml b/.travis.yml
index 52339b5..5587170 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -36,12 +36,10 @@ env:
addons:
apt:
- sources:
- - ubuntu-toolchain-r-test
packages:
- gcc
- clang-3.8
- - automake autoconf libtool libssl-dev graphviz mscgen doxygen
+ - automake autoconf libtool libssl-dev graphviz mscgen
- libpcap-dev
- libconfig-dev
# coverity_scan:
@@ -63,6 +61,7 @@ cache:
- dpdk
- netmap
- $HOME/cunit-install
+ - $HOME/doxygen-install
env:
- CONF=""
@@ -71,6 +70,10 @@ env:
- CONF="--enable-schedule-iquery"
- CONF="--enable-schedule-scalable"
- CONF="--enable-dpdk-zero-copy"
+ - CROSS_ARCH="arm64"
+ - CROSS_ARCH="armhf" CFLAGS="-march=armv7-a"
+ - CROSS_ARCH="powerpc"
+ - CROSS_ARCH="i386"
before_install:
@@ -81,13 +84,36 @@ before_install:
BUILD_GNU_TYPE=`dpkg-architecture -a"$CROSS_ARCH" -qDEB_BUILD_GNU_TYPE` ;
CROSS_GNU_TYPE=`dpkg-architecture -a"$CROSS_ARCH" -qDEB_HOST_GNU_TYPE` ;
CROSS_MULTIARCH=`dpkg-architecture -a"$CROSS_ARCH" -qDEB_HOST_MULTIARCH` ;
- CROSS="--host="$CROSS_GNU_TYPE" --build="$BUILD_GNU_TYPE" --prefix=/usr --includedir=/usr/include/"$CROSS_MULTIARCH" --libdir=/usr/lib/"$CROSS_MULTIARCH" --libexecdir=/usr/lib/"$CROSS_MULTIARCH"" ;
+ CROSS="--host="$CROSS_GNU_TYPE" --build="$BUILD_GNU_TYPE"" ;
sudo dpkg --add-architecture "$CROSS_ARCH" ;
sudo -E apt-add-repository -y "deb http://ports.ubuntu.com trusty main" ;
sudo -E apt-add-repository -y "deb http://ports.ubuntu.com trusty-updates main" ;
sudo -E apt-get -y update || true ;
- sudo -E apt-get -y --no-install-suggests --no-install-recommends --force-yes install build-essential gcc-"$CROSS_GNU_TYPE" pkg-config-"$CROSS_GNU_TYPE" ;
- sudo -E apt-get -y --no-install-suggests --no-install-recommends --force-yes install libc6-dev:"$CROSS_ARCH" libconfig-dev:"$CROSS_ARCH" libssl-dev:"$CROSS_ARCH" zlib1g-dev:"$CROSS_ARCH" libconfig-dev:"$CROSS_ARCH" ;
+ sudo -E apt-get -y --no-install-suggests --no-install-recommends --force-yes install build-essential ;
+ if [ "$CROSS_ARCH" = "i386" ] ;
+ then
+ sudo -E apt-get -y --no-install-suggests --no-install-recommends --force-yes install g++-multilib ;
+ else
+ sudo -E apt-get -y --no-install-suggests --no-install-recommends --force-yes install g++-"$CROSS_GNU_TYPE" ;
+ fi ;
+ sudo -E apt-get -y --no-install-suggests --no-install-recommends --force-yes install libc6-dev:"$CROSS_ARCH" libssl-dev:"$CROSS_ARCH" zlib1g-dev:"$CROSS_ARCH" libconfig-dev:"$CROSS_ARCH" libstdc++-4.8-dev:"$CROSS_ARCH";
+ export PKG_CONFIG_PATH=/usr/lib/${CROSS_MULTIARCH}/pkgconfig:/usr/${CROSS_MULTIARCH}/lib/pkgconfig ;
+ fi
+ - if [ "${CC#clang}" != "${CC}" ] ;
+ then
+ if [ -n "$CROSS_ARCH" ] ;
+ then
+ export CC="${CC} --target=$CROSS_GNU_TYPE" ;
+ fi ;
+ export CXX="${CC/clang/clang++}";
+ elif [ "$CROSS_ARCH" = "i386" ] ;
+ then
+ export CC="gcc -m32" ;
+ export CXX="g++ -m32" ;
+ elif [ -n "$CROSS_ARCH" ] ;
+ then
+ export CC="$CROSS_GNU_TYPE"-gcc ;
+ export CXX="$CROSS_GNU_TYPE"-g++ ;
fi
- if test ! -L /usr/lib/ccache/${CC%% *} ; then sudo ln -s -t /usr/lib/ccache/ `which ${CC%% *}` ; fi
- ccache -s
@@ -110,6 +136,7 @@ before_install:
sudo make install
popd
fi
+ - export PKG_CONFIG_PATH="$HOME/cunit-install/$CROSS_ARCH/lib/pkgconfig:${PKG_CONFIG_PATH}"
- find $HOME/cunit-install
install:
@@ -117,16 +144,17 @@ install:
- sudo mkdir -p /mnt/huge
- sudo mount -t hugetlbfs nodev /mnt/huge
- - sudo apt-get -qq update
- - sudo apt-get install linux-headers-`uname -r`
- - sudo pip install coverage
+ - if [ -z "$CROSS_ARCH" ] ;
+ then
+ sudo apt-get -qq update ;
+ sudo apt-get install linux-headers-`uname -r` ;
+ fi
- gem install asciidoctor
- - PATH=${PATH//:\.\/node_modules\/\.bin/}
# DPDK pktio. Note that cache must be purged if dpdk version changes.
- TARGET=${TARGET:-"x86_64-native-linuxapp-gcc"}
- |
- if [ ! -f "dpdk/${TARGET}/lib/libdpdk.a" ]; then
+ if [ -z "$CROSS_ARCH" -a ! -f "dpdk/${TARGET}/lib/libdpdk.a" ]; then
git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v17.02 http://dpdk.org/git/dpdk dpdk
pushd dpdk
git log --oneline --decorate
@@ -142,7 +170,7 @@ install:
# Netmap pktio
- |
- if [ ! -f "netmap/LINUX/netmap.ko" ]; then
+ if [ -z "$CROSS_ARCH" -a ! -f "netmap/LINUX/netmap.ko" ]; then
git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v11.2 https://github.com/luigirizzo/netmap.git
pushd netmap/LINUX
./configure
@@ -152,85 +180,51 @@ install:
fi
script:
+ - if [ -z "$CROSS_ARCH" ] ; then
+ EXTRA_CONF="--with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap" ;
+ fi
- ./bootstrap
- - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH $CONF
+ - ./configure --prefix=$HOME/odp-install
+ --enable-user-guides
+ --enable-debug=full
+ --enable-helper-linux
+ $CROSS $EXTRA_CONF $CONF
- make -j $(nproc)
- mkdir /dev/shm/odp
- - sudo LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" ODP_SHM_DIR=/dev/shm/odp make check
+ - if [ -z "$CROSS_ARCH" ] ; then
+ sudo LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" ODP_SHM_DIR=/dev/shm/odp make check ;
+ fi
- make install
- echo "Checking linking and run from install..."
- pushd $HOME
- echo "Dynamic link.."
- - ${CC} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst `PKG_CONFIG_PATH=${HOME}/odp-install/lib/pkgconfig pkg-config --cflags --libs libodp-linux`
- - LD_LIBRARY_PATH="${HOME}/odp-install/lib:$LD_LIBRARY_PATH" ./odp_hello_inst
+ - ${CC} ${CFLAGS} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst_dynamic `PKG_CONFIG_PATH=${HOME}/odp-install/lib/pkgconfig:${PKG_CONFIG_PATH} pkg-config --cflags --libs libodp-linux`
- echo "Static link.."
- - ${CC} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst `PKG_CONFIG_PATH=${HOME}/odp-install/lib/pkgconfig pkg-config --cflags --libs libodp-linux --static` -static
- - ./odp_hello_inst
+ - ${CC} ${CFLAGS} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst_static `PKG_CONFIG_PATH=${HOME}/odp-install/lib/pkgconfig:${PKG_CONFIG_PATH} pkg-config --cflags --libs libodp-linux --static` -static
+ - if [ -z "$CROSS_ARCH" ] ; then
+ LD_LIBRARY_PATH="${HOME}/odp-install/lib:$LD_LIBRARY_PATH" ./odp_hello_inst ;
+ ./odp_hello_inst_static ;
+ fi
+ - popd
- ccache -s
jobs:
include:
- stage: test
- compiler: aarch64-linux-gnu-gcc
- env: TEST="aarch64-linux-gnu" CROSS_ARCH="arm64"
- install: true
- script:
- - ./bootstrap
- - ./configure --prefix=$HOME/odp-install $CROSS
- --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH
- - make -j $(nproc)
- - stage: test
- compiler: "\"clang-3.8 --target=aarch64-linux-gnu\""
- env: TEST="clang-3.8 aarch64-linux-gnu" CROSS_ARCH="arm64"
- install: true
- script:
- - ./bootstrap
- - ./configure --prefix=$HOME/odp/odp-install $CROSS
- --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH
- - make -j $(nproc)
- - stage: test
- compiler: arm-linux-gnueabihf-gcc
- env: TEST="arm-linux-gnueabihf" CROSS_ARCH="armhf"
- install: true
- script:
- - ./bootstrap
- - ./configure --prefix=$HOME/odp-install $CROSS
- --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH
- - make -j $(nproc)
- - stage: test
- compiler: "\"clang-3.8 --target=arm-linux-gnueabihf\""
- env: TEST="clang-3.8 arm-linux-gnueabihf" CROSS_ARCH="armhf" CFLAGS="-march=armv7-a"
- install: true
- script:
- - ./bootstrap
- - ./configure --prefix=$HOME/odp-install $CROSS
- --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH
- - make -j $(nproc)
- - stage: test
- compiler: powerpc-linux-gnu-gcc
- env: TEST="powerpc-linux-gnueabihf" CROSS_ARCH="powerpc"
- install: true
- script:
- - ./bootstrap
- - ./configure --prefix=$HOME/odp-install $CROSS
- --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH
- - make -j $(nproc)
- - stage: test
- compiler: "\"clang-3.8 --target=powerpc-linux-gnu\""
- env: TEST="clang-3.8 powerpc-linux-gnu" CROSS_ARCH="powerpc"
- install: true
- script:
- - ./bootstrap
- - ./configure --prefix=$HOME/odp-install $CROSS
- --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH
- - make -j $(nproc)
- - stage: test
env: TEST=coverage
compiler: gcc
script:
+ - sudo pip install coverage
- ./bootstrap
- - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap CFLAGS="-O0 -coverage" --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH CXXFLAGS="-O0 -coverage" LDFLAGS="--coverage"
+ - ./configure --prefix=$HOME/odp-install
+ --enable-user-guides
+ --with-dpdk-path=`pwd`/dpdk/${TARGET}
+ --with-netmap-path=`pwd`/netmap CFLAGS="-O0
+ -coverage"
+ CXXFLAGS="-O0 -coverage" LDFLAGS="--coverage"
+ --enable-debug=full
+ --enable-helper-linux
- sudo LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" PATH=${PATH//:\.\/node_modules\/\.bin/} make check
- find . -type f -iname '*.[ch]' -not -path ".git/*" -execdir gcov {} \; ; bash <(curl -s https://codecov.io/bash) -X coveragepy
- stage: test
@@ -238,24 +232,40 @@ jobs:
compiler: gcc
script:
- ./bootstrap
- - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-cunit-path=$HOME/cunit-install/$CROSS_ARCH
- - sudo PATH="$PATH" LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make distcheck CFLAGS="-I$HOME/cunit-install/$CROSS_ARCH/include" LDFLAGS="-L$HOME/cunit-install/$CROSS_ARCH/lib"
+ - ./configure --prefix=$HOME/odp-install
+ --enable-user-guides
+ - sudo PATH="$PATH" LD_LIBRARY_PATH="$HOME/cunit-install/$CROSS_ARCH/lib:$LD_LIBRARY_PATH" make distcheck
- stage: test
env: TEST=doxygen
compiler: gcc
+ install:
+ - true
script:
+ - |
+ if [ ! -f "$HOME/doxygen-install/bin/doxygen" ]; then
+ wget https://github.com/doxygen/doxygen/archive/Release_1_8_13.tar.gz
+ tar xpvf Release_1_8_13.tar.gz
+ pushd doxygen-Release_1_8_13
+ cmake -DCMAKE_INSTALL_PREFIX=$HOME/doxygen-install .
+ make install
+ popd
+ fi
+
+ - export PATH=$HOME/doxygen-install/bin:$PATH
# doxygen does not trap on warnings, check for them here.
- ./bootstrap
- ./configure
- - make doxygen-doc |tee doxygen.log
- - fgrep -rvq warning ./doxygen.log
+ - make doxygen-doc 2>&1 |tee doxygen.log
+ - fgrep -rq warning ./doxygen.log && false
- stage: test
env: TEST=checkpatch
compiler: gcc
+ install:
+ - true
script:
- echo ${TRAVIS_COMMIT_RANGE};
- ODP_PATCHES=`echo ${TRAVIS_COMMIT_RANGE} | sed 's/\.//'`;
- - if [ -z "${ODP_PATCHES}" ]; then env; exit 1; fi;
+ - if [ -z "${ODP_PATCHES}" ]; then env; exit 0; fi;
- ./scripts/ci-checkpatches.sh ${ODP_PATCHES};
- stage: test
env: TEST=linux-dpdk
diff --git a/DEPENDENCIES b/DEPENDENCIES
index d9191c8..d57e2d8 100644
--- a/DEPENDENCIES
+++ b/DEPENDENCIES
@@ -9,12 +9,13 @@ Prerequisites for building the OpenDataPlane (ODP) API
automake
autoconf
libtool
+ pkg-config
On Debian/Ubuntu systems:
- $ sudo apt-get install automake autoconf libtool
+ $ sudo apt-get install automake autoconf libtool pkg-config
On CentOS/RedHat/Fedora systems:
- $ sudo yum install automake autoconf libtool
+ $ sudo yum install automake autoconf libtool pkgconfig
3. Required libraries
@@ -199,11 +200,11 @@ Prerequisites for building the OpenDataPlane (ODP) API
4.0 Packages needed to build API tests
- Cunit test framework version 2.1-3 is required
- Cunit prvodes a framework to run the API test suite that proves conformance to the
+ CUnit test framework version 2.1-3 is required
+ CUnit provides a framework to run the API test suite that proves conformance to the
ODP API. The home page http://cunit.sourceforge.net/doc/introduction.html
-4.1 Native Cunit install
+4.1 Native CUnit install
# Debian/Ubuntu
$ apt-get install libcunit1-dev
@@ -223,7 +224,7 @@ Prerequisites for building the OpenDataPlane (ODP) API
sudo make install
# ... OR ... Install CUnit into user defined location. The same path is
- # used in step 4.4 --with-cunit-path=/home/<my_cunit_path>
+ # used in step 4.4: PKG_CONFIG_PATH=/home/<my_cunit_path>/lib/pkgconfig
./configure --prefix=/home/<my_cunit_path>
make
make install
@@ -232,20 +233,24 @@ Prerequisites for building the OpenDataPlane (ODP) API
# reboot, before trying to run e.g. 'make distcheck'.
sudo ldconfig
-4.3 Cross compile of Cunit
+4.3 Cross compile of CUnit
$ git svn clone http://svn.code.sf.net/p/cunit/code/trunk cunit-code
$ cd cunit-code
$ ./bootstrap
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/${USER}/src/install-cunit
-4.4 Using Cunit with ODP
- $ Add the configuration option to the regular configuration options
- # Use the default path ...
- ./configure --enable-cunit
+4.4 Using CUnit with ODP
- # ... OR the user defined path.
- ./configure --with-cunit-path=/home/<my_cunit_path>
+ Configure will automatically look for CUnit if validation testsuite is
+ enabled. By default it uses pkg-config to locate CUnit. Usually no
+ additional configuration will be required. Few corner cases:
+
+ # User directory installation
+ ./configure PKG_CONFIG_PATH=/home/<my_cunit_path>/lib/pkgconfig
+
+ # ... OR directly specifying flags
+ ./configure CUNIT_CFLAGS="-I/home/<my_cunit_path>/include" CUNIT_LIBS="/home/<my_cunit_path>/lib -lcunit"
5.0 Documentation Images & Doxygen
diff --git a/Makefile.am b/Makefile.am
index 76ceb85..6c43679 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,12 +1,6 @@
ACLOCAL_AMFLAGS=-I m4
-AUTOMAKE_OPTIONS = foreign
-AM_DISTCHECK_CONFIGURE_FLAGS = --enable-test-cpp \
- --enable-test-example \
- --enable-test-helper \
- --enable-test-perf \
- --enable-test-perf-proc \
- --enable-test-vald \
- --enable-user-guides \
+AM_DISTCHECK_CONFIGURE_FLAGS = --enable-user-guides \
+ --enable-helper-linux \
--with-testdir
#@with_platform@ works alone in subdir but not as part of a path???
diff --git a/configure.ac b/configure.ac
index bf2c2a2..e56adcd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,9 +19,9 @@ AC_SUBST(ODP_VERSION_API_MINOR)
AC_CONFIG_FILES([include/odp/api/spec/version.h
include/odp/api/spec/deprecated.h])
-AM_INIT_AUTOMAKE([1.9 tar-pax subdir-objects])
-AC_CONFIG_SRCDIR([helper/config.h.in])
-AM_CONFIG_HEADER([helper/config.h])
+AM_INIT_AUTOMAKE([1.9 tar-pax subdir-objects foreign nostdinc])
+AC_CONFIG_SRCDIR([include/odp/api/spec/init.h])
+AM_CONFIG_HEADER([include/config.h])
AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE
@@ -62,10 +62,13 @@ LT_INIT([dlopen])
AC_SUBST([LIBTOOL_DEPS])
AM_PROG_LIBTOOL
+PKG_PROG_PKG_CONFIG
+
# Checks for library functions.
-AC_FUNC_MALLOC
+dnl breaks cross-compilation and malloc(0) behaviour is not that important
+dnl AC_FUNC_MALLOC
AC_FUNC_MMAP
-AC_CHECK_FUNCS([bzero clock_gettime gethostbyname getpagesize gettimeofday memset munmap socket strchr strerror strrchr strstr strtoull])
+AC_CHECK_FUNCS([bzero clock_gettime gethostbyname getpagesize gettimeofday malloc memset munmap socket strchr strerror strrchr strstr strtoull])
# Checks for header files.
AC_HEADER_RESOLV
@@ -204,27 +207,18 @@ AC_SUBST(ODP_LIB_STR)
# Set the install directory for test binaries/scripts
##########################################################################
AC_ARG_WITH([testdir],
- AC_HELP_STRING([--with-testdir=DIR installation directory for tests]),
- [if test "$withval" = "yes"; then
- testdir=$libdir/odp/tests
- else
- testdir=$withval
- fi], [])
+ [AC_HELP_STRING([--with-testdir=DIR], [installation directory for tests])],
+ [testdir=$withval],
+ [testdir=no])
+AS_IF([test "x$testdir" = "xyes"], [testdir=$libdir/odp/tests],
+ [test "x$testdir" = "xno"], [testdir=])
AC_SUBST([testdir])
+AM_CONDITIONAL([test_installdir], [test "x$testdir" != "xno"])
##########################################################################
# Set conditionals as computed within platform specific files
##########################################################################
AM_CONDITIONAL([SDK_INSTALL_PATH_], [test "x${SDK_INSTALL_PATH_}" = "x1"])
-AM_CONDITIONAL([DPDK_DEFAULT_DIR], [test "x${DPDK_DEFAULT_DIR}" = "x1"])
-AM_CONDITIONAL([test_installdir], [test "$testdir" != ""])
-AM_CONDITIONAL([cunit_support], [test x$cunit_support = xyes ])
-AM_CONDITIONAL([test_vald], [test x$test_vald = xyes ])
-AM_CONDITIONAL([test_perf], [test x$test_perf = xyes ])
-AM_CONDITIONAL([test_perf_proc], [test x$test_perf_proc = xyes ])
-AM_CONDITIONAL([test_cpp], [test x$test_cpp = xyes ])
-AM_CONDITIONAL([test_helper], [test x$test_helper = xyes ])
-AM_CONDITIONAL([test_example], [test x$test_example = xyes ])
AM_CONDITIONAL([HAVE_DOXYGEN], [test "x${DOXYGEN}" = "xdoxygen"])
AM_CONDITIONAL([user_guide], [test "x${user_guides}" = "xyes" ])
AM_CONDITIONAL([HAVE_MSCGEN], [test "x${MSCGEN}" = "xmscgen"])
@@ -250,40 +244,38 @@ DX_INIT_DOXYGEN($PACKAGE_NAME,
${builddir}/doc/driver-api-guide/output)
##########################################################################
-# Enable/disable ODP_DEBUG_PRINT
+# Enable/disable ODP_DEBUG
##########################################################################
-ODP_DEBUG_PRINT=0
-AC_ARG_ENABLE([debug-print],
- [ --enable-debug-print display debugging information],
- [if test "x$enableval" = "xyes"; then
- ODP_DEBUG_PRINT=1
- else
- ODP_DEBUG_PRINT=0
- fi])
-ODP_CFLAGS="$ODP_CFLAGS -DODP_DEBUG_PRINT=$ODP_DEBUG_PRINT"
+AC_ARG_ENABLE([debug],
+ [AS_HELP_STRING([--enable-debug],
+ [include additional debugging code ]
+ [(set to 'full' to enable all --enable-*-debug-* options)])])
-ODPH_DEBUG_PRINT=0
-AC_ARG_ENABLE([helper-debug-print],
- [ --enable-helper-debug-print display helper debugging information],
- [if test "x$enableval" = "xyes"; then
- ODPH_DEBUG_PRINT=1
- else
- ODPH_DEBUG_PRINT=0
- fi])
-ODP_CFLAGS="$ODP_CFLAGS -DODPH_DEBUG_PRINT=$ODPH_DEBUG_PRINT"
+AS_IF([test "x$enable_debug" != "xno"], [ODP_DEBUG=1],
+ [ODP_DEBUG=0])
+AC_DEFINE_UNQUOTED([ODP_DEBUG], [$ODP_DEBUG],
+ [Define to 1 to include additional debug code])
##########################################################################
-# Enable/disable ODP_DEBUG
+# Enable/disable ODP_DEBUG_PRINT
##########################################################################
-ODP_DEBUG=0
-AC_ARG_ENABLE([debug],
- [ --enable-debug include additional code],
- [if test "x$enableval" = "xyes"; then
- ODP_DEBUG=1
- else
- ODP_DEBUG=0
- fi])
-ODP_CFLAGS="$ODP_CFLAGS -DODP_DEBUG=$ODP_DEBUG"
+AC_ARG_ENABLE([debug-print],
+ [AS_HELP_STRING([--enable-debug-print], [display debugging information])],
+ [], [AS_IF([test "x$enable_debug" = "xfull"], [enable_debug_print=yes],
+ [enable_debug_print=no])])
+AS_IF([test "x$enable_debug_print" != "xno"], [ODP_DEBUG_PRINT=1],
+ [ODP_DEBUG_PRINT=0])
+AC_DEFINE_UNQUOTED([ODP_DEBUG_PRINT], [$ODP_DEBUG_PRINT],
+ [Define to 1 to display debug information])
+
+AC_ARG_ENABLE([helper-debug-print],
+ [AS_HELP_STRING([--enable-helper-debug-print], [display helper debugging information])],
+ [], [AS_IF([test "x$enable_debug" = "xfull"], [enable_helper_debug_print=yes],
+ [enable_helper_debug_print=no])])
+AS_IF([test "x$enable_helper_debug_print" != "xno"], [ODPH_DEBUG_PRINT=1],
+ [ODPH_DEBUG_PRINT=0])
+AC_DEFINE_UNQUOTED([ODPH_DEBUG_PRINT], [$ODPH_DEBUG_PRINT],
+ [Define to 1 to display helper debug information])
##########################################################################
# Enable/disable ABI compatible build
@@ -316,22 +308,33 @@ AC_SUBST(ODP_DEPRECATED_API)
##########################################################################
# Default warning setup
##########################################################################
-ODP_CFLAGS="$ODP_CFLAGS -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes"
-ODP_CFLAGS="$ODP_CFLAGS -Wmissing-declarations -Wold-style-definition -Wpointer-arith"
-ODP_CFLAGS="$ODP_CFLAGS -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral"
-ODP_CFLAGS="$ODP_CFLAGS -Wformat-security -Wundef -Wwrite-strings"
+ODP_CFLAGS="$ODP_CFLAGS -W -Wall -Werror"
dnl Use -Werror in the checks below since Clang emits a warning instead of
dnl an error when it encounters an unknown warning option.
-AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough=0],
- [ODP_CFLAGS="$ODP_CFLAGS -Wimplicit-fallthrough=0"],
- [], [-Werror])
-AX_CHECK_COMPILE_FLAG([-Wformat-truncation=0],
- [ODP_CFLAGS="$ODP_CFLAGS -Wformat-truncation=0"],
- [], [-Werror])
-AX_CHECK_COMPILE_FLAG([-Wformat-overflow=0],
- [ODP_CFLAGS="$ODP_CFLAGS -Wformat-overflow=0"],
- [], [-Werror])
+AC_DEFUN([ODP_CHECK_CFLAG],
+ [AX_CHECK_COMPILE_FLAG([$1],
+ [ODP_CFLAGS="$ODP_CFLAGS $1"],
+ [], [-W -Wall -Werror],
+ [AC_LANG_SOURCE([int main(void)
+ {return 0;}])])])
+ODP_CHECK_CFLAG([-Wstrict-prototypes])
+ODP_CHECK_CFLAG([-Wmissing-prototypes])
+ODP_CHECK_CFLAG([-Wmissing-declarations])
+ODP_CHECK_CFLAG([-Wold-style-definition])
+ODP_CHECK_CFLAG([-Wpointer-arith])
+ODP_CHECK_CFLAG([-Wcast-align])
+ODP_CHECK_CFLAG([-Wnested-externs])
+ODP_CHECK_CFLAG([-Wcast-qual])
+ODP_CHECK_CFLAG([-Wformat-nonliteral])
+ODP_CHECK_CFLAG([-Wformat-security])
+ODP_CHECK_CFLAG([-Wundef])
+ODP_CHECK_CFLAG([-Wwrite-strings])
+ODP_CHECK_CFLAG([-Wformat-truncation=0])
+ODP_CHECK_CFLAG([-Wformat-overflow=0])
+
+ODP_CFLAGS="$ODP_CFLAGS -std=c99"
+ODP_CXXFLAGS="$ODP_CXXFLAGS -std=c++11"
# Extra flags for example to suppress certain warning types
ODP_CFLAGS="$ODP_CFLAGS $ODP_CFLAGS_EXTRA"
@@ -342,16 +345,7 @@ ODP_CFLAGS="$ODP_CFLAGS $ODP_CFLAGS_EXTRA"
case "${host}" in
i?86? | x86*)
if test "${CC}" != "gcc" -o ${CC_VERSION_MAJOR} -ge 5; then
- my_save_cflags="$CFLAGS"
-
- CFLAGS=-mcx16
- AC_MSG_CHECKING([whether CC supports -mcx16])
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
- [AC_MSG_RESULT([yes])]
- [ODP_CFLAGS="$ODP_CFLAGS $CFLAGS"],
- [AC_MSG_RESULT([no])]
- )
- CFLAGS="$my_save_cflags"
+ ODP_CHECK_CFLAG([-mcx16])
fi
;;
esac
@@ -359,8 +353,8 @@ esac
##########################################################################
# Default include setup
##########################################################################
-AM_CFLAGS="$AM_CFLAGS $ODP_CFLAGS"
-AM_CXXFLAGS="-std=c++11"
+CFLAGS="$CFLAGS $ODP_CFLAGS"
+CXXFLAGS="$CXXFLAGS $ODP_CXXFLAGS"
AC_CONFIG_FILES([Makefile
pkgconfig/libodp-linux.pc
@@ -372,11 +366,8 @@ AC_CONFIG_FILES([Makefile
# distribute the changed variables among the Makefiles
AC_SUBST([LIBS])
-AC_SUBST([AM_CPPFLAGS])
AC_SUBST([CPPFLAGS])
-AC_SUBST([AM_CFLAGS])
AC_SUBST([CFLAGS])
-AC_SUBST([AM_LDFLAGS])
AC_SUBST([LDFLAGS])
AC_SUBST([EXEEXT])
@@ -403,12 +394,8 @@ AC_MSG_RESULT([
cc: ${CC}
cc version: ${CC_VERSION}
cppflags: ${CPPFLAGS}
- am_cppflags: ${AM_CPPFLAGS}
- am_cxxflags: ${AM_CXXFLAGS}
cflags: ${CFLAGS}
- am_cflags: ${AM_CFLAGS}
ldflags: ${LDFLAGS}
- am_ldflags: ${AM_LDFLAGS}
libs: ${LIBS}
defs: ${DEFS}
static libraries: ${enable_static}
diff --git a/doc/images/segment.svg b/doc/images/segment.svg
index 14ee913..22e4bf9 100644
--- a/doc/images/segment.svg
+++ b/doc/images/segment.svg
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<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" version="1.1" viewBox="0 0 1036.8367 502.24374" stroke-miterlimit="10" id="svg2" inkscape:version="0.91 r13725" sodipodi:docname="segment.svg" width="1036.8367" height="502.24374" style="fill:none;stroke:none;stroke-linecap:square;stroke-miterlimit:10">
+<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" version="1.1" viewBox="0 0 960 540" stroke-miterlimit="10" id="svg179" sodipodi:docname="segment.svg" width="960" height="540" style="fill:none;stroke:none;stroke-linecap:square;stroke-miterlimit:10" inkscape:version="0.92.1 r15371">
<metadata id="metadata185">
<rdf:RDF>
<cc:Work rdf:about="">
@@ -10,93 +10,96 @@
</rdf:RDF>
</metadata>
<defs id="defs183"/>
- <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="737" inkscape:window-height="480" id="namedview181" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:zoom="0.309375" inkscape:cx="405.59536" inkscape:cy="249.46965" inkscape:window-x="65" inkscape:window-y="24" inkscape:window-maximized="0" inkscape:current-layer="svg2"/>
- <clipPath id="p.0">
- <path d="M 0,0 960,0 960,540 0,540 0,0 Z" id="path5" inkscape:connector-curvature="0" style="clip-rule:nonzero"/>
+ <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="640" inkscape:window-height="480" id="namedview181" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:zoom="0.30520833" inkscape:cx="480" inkscape:cy="270" inkscape:window-x="65" inkscape:window-y="24" inkscape:window-maximized="0" inkscape:current-layer="svg179"/>
+ <clipPath id="g242026819a_0_105.0">
+ <path d="M 0,0 H 960 V 540 H 0 Z" id="path2" inkscape:connector-curvature="0" style="clip-rule:nonzero"/>
</clipPath>
- <path style="fill:#b6d7a8;fill-rule:nonzero" inkscape:connector-curvature="0" id="path11" d="m 203.35716,122.95505 491.43307,0 0,82.55118 -491.43307,0 z"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path13" d="m 203.35716,122.95505 491.43307,0 0,82.55118 -491.43307,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path15" d="m 402.09346,163.93188 0,-13.64063 1.53125,0 0,1.28125 q 0.53125,-0.75 1.20313,-1.125 0.6875,-0.375 1.64062,-0.375 1.26563,0 2.23438,0.65625 0.96875,0.64063 1.45312,1.82813 0.5,1.1875 0.5,2.59375 0,1.51562 -0.54687,2.73437 -0.54688,1.20313 -1.57813,1.84375 -1.03125,0.64063 -2.17187,0.64063 -0.84375,0 -1.51563,-0.34375 -0.65625,-0.35938 -1.07812,-0.89063 l 0,4.79688 -1.67188,0 z m 1.51563,-8.65625 q 0,1.90625 0.76562,2.8125 0.78125,0.90625 1.875,0.90625 1.10938,0 1.89063,-0.9375 0.79687,-0.9375 0.79687,-2.92188 0,-1.875 -0.78125,-2.8125 -0.76562,-0.9375 -1.84375,-0.9375 -1.0625,0 -1.89062,1 -0.8125,1 -0.8125,2.89063 z m 15.29757,3.65625 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 l -1.75,0 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 l 0,-0.60937 z m 10.51635,1.32812 1.64063,0.21875 q -0.26563,1.6875 -1.375,2.65625 -1.10938,0.95313 -2.73438,0.95313 -2.01562,0 -3.25,-1.3125 -1.21875,-1.32813 -1.21875,-3.79688 0,-1.59375 0.51563,-2.78125 0.53125,-1.20312 1.60937,-1.79687 1.09375,-0.60938 2.35938,-0.60938 1.60937,0 2.625,0.8125 1.01562,0.8125 1.3125,2.3125 l -1.625,0.25 q -0.23438,-1 -0.82813,-1.5 -0.59375,-0.5 -1.42187,-0.5 -1.26563,0 -2.0625,0.90625 -0.78125,0.90625 -0.78125,2.85938 0,1.98437 0.76562,2.89062 0.76563,0.89063 1.98438,0.89063 0.98437,0 1.64062,-0.59375 0.65625,-0.60938 0.84375,-1.85938 z m 2.90625,3.60938 0,-13.59375 1.67188,0 0,7.75 3.95309,-4.01563 2.15625,0 -3.76559,3.65625 4.14059,6.20313 -2.0625,0 -3.24997,-5.03125 -1.17187,1.125 0,3.90625 -1.67188,0 z m 16.06247,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 12.76636,4.375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 l 0,-5.65625 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z m 13.10095,1.5 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 l 0,-4.875 1.65625,0 0,13.59375 -1.54687,0 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 15.70385,3.70313 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 l -1.75,0 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 l 0,-0.60937 z m 7.73511,3.4375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 l 0,-5.65625 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z m 7.96454,0.28125 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 l -1.75,0 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 l 0,-0.60937 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path17" d="m 331.66256,186.15064 q -1.375,-1.75 -2.32812,-4.07813 -0.95313,-2.34375 -0.95313,-4.84375 0,-2.21875 0.70313,-4.23437 0.84375,-2.34375 2.57812,-4.67188 l 1.20313,0 q -1.125,1.92188 -1.48438,2.75 -0.5625,1.28125 -0.89062,2.67188 -0.40625,1.73437 -0.40625,3.48437 0,4.46875 2.78125,8.92188 l -1.20313,0 z m 3.02518,-4 0,-13.59375 1.67187,0 0,4.875 q 1.17188,-1.35938 2.95313,-1.35938 1.09375,0 1.89062,0.4375 0.8125,0.42188 1.15625,1.1875 0.35938,0.76563 0.35938,2.20313 l 0,6.25 -1.67188,0 0,-6.25 q 0,-1.25 -0.54687,-1.8125 -0.54688,-0.57813 -1.53125,-0.57813 -0.75,0 -1.40625,0.39063 -0.64063,0.375 -0.92188,1.04687 -0.28125,0.65625 -0.28125,1.8125 l 0,5.39063 -1.67187,0 z m 17.12573,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 15.54758,4.65625 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 l -1.75,0 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 l 0,-0.60937 z m 10.46948,4.9375 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 l 0,-4.875 1.65625,0 0,13.59375 -1.54687,0 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 16.01633,1.75 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 9.09448,5.875 0,-9.85938 1.5,0 0,1.5 q 0.57813,-1.04687 1.0625,-1.375 0.48438,-0.34375 1.07813,-0.34375 0.84375,0 1.71875,0.54688 l -0.57813,1.54687 q -0.60937,-0.35937 -1.23437,-0.35937 -0.54688,0 -0.98438,0.32812 -0.42187,0.32813 -0.60937,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67188,0 z m 5.55643,-2.9375 1.65625,-0.26563 q 0.14062,1 0.76562,1.53125 0.64063,0.51563 1.78125,0.51563 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.89063 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.60938 -0.35937,-1.32813 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.9375 0.39062,-0.28125 1.0625,-0.48437 0.67187,-0.20313 1.4375,-0.20313 1.17187,0 2.04687,0.34375 0.875,0.32813 1.28125,0.90625 0.42188,0.5625 0.57813,1.51563 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.39063 -0.48437,0.375 -0.48437,0.875 0,0.32812 0.20312,0.59375 0.20313,0.26562 0.64063,0.4375 0.25,0.0937 1.46875,0.4375 1.76562,0.46875 2.46875,0.76562 0.70312,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48438,1.57813 -0.48437,0.73437 -1.40625,1.14062 -0.92187,0.39063 -2.07812,0.39063 -1.92188,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 18.69891,0.73437 0,-3.71875 -3.70312,0 0,-1.5625 3.70312,0 0,-3.70312 1.57813,0 0,3.70312 3.6875,0 0,1.5625 -3.6875,0 0,3.71875 -1.57813,0 z m 12.56266,5.98438 0,-13.64063 1.53125,0 0,1.28125 q 0.53125,-0.75 1.20312,-1.125 0.6875,-0.375 1.64063,-0.375 1.26562,0 2.23437,0.65625 0.96875,0.64063 1.45313,1.82813 0.5,1.1875 0.5,2.59375 0,1.51562 -0.54688,2.73437 -0.54687,1.20313 -1.57812,1.84375 -1.03125,0.64063 -2.17188,0.64063 -0.84375,0 -1.51562,-0.34375 -0.65625,-0.35938 -1.07813,-0.89063 l 0,4.79688 -1.67187,0 z m 1.51562,-8.65625 q 0,1.90625 0.76563,2.8125 0.78125,0.90625 1.875,0.90625 1.10937,0 1.89062,-0.9375 0.79688,-0.9375 0.79688,-2.92188 0,-1.875 -0.78125,-2.8125 -0.76563,-0.9375 -1.84375,-0.9375 -1.0625,0 -1.89063,1 -0.8125,1 -0.8125,2.89063 z m 15.29758,3.65625 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 l -1.75,0 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 l 0,-0.60937 z m 4.00074,8.73437 -0.17188,-1.5625 q 0.54688,0.14063 0.95313,0.14063 0.54687,0 0.875,-0.1875 0.34375,-0.1875 0.5625,-0.51563 0.15625,-0.25 0.5,-1.25 0.0469,-0.14062 0.15625,-0.40625 l -3.73438,-9.875 1.79688,0 2.04687,5.71875 q 0.40625,1.07813 0.71875,2.28125 0.28125,-1.15625 0.6875,-2.25 l 2.09375,-5.75 1.67188,0 -3.75,10.03125 q -0.59375,1.625 -0.9375,2.23438 -0.4375,0.82812 -1.01563,1.20312 -0.57812,0.39063 -1.375,0.39063 -0.48437,0 -1.07812,-0.20313 z m 9.375,-3.79687 0,-13.59375 1.67187,0 0,13.59375 -1.67187,0 z m 3.55108,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26557,-1.09375 3.09369,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34369,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82807,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82807,0.9375 -0.82807,2.82812 z m 15.71942,3.70313 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 l -1.75,0 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 l 0,-0.60937 z m 10.46948,4.9375 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 l 0,-4.875 1.65625,0 0,13.59375 -1.54687,0 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 17.96527,2.71875 0,-3.71875 -3.70312,0 0,-1.5625 3.70312,0 0,-3.70312 1.57813,0 0,3.70312 3.6875,0 0,1.5625 -3.6875,0 0,3.71875 -1.57813,0 z m 16.21887,0.70313 0.23438,1.48437 q -0.70313,0.14063 -1.26563,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70312,-0.75 -0.20313,-0.46875 -0.20313,-1.98438 l 0,-5.65625 -1.23437,0 0,-1.3125 1.23437,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29687,0.32812 0.20313,0.125 0.57813,0.125 0.26562,0 0.73437,-0.0781 z m 1.51142,1.5 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z m 12.66583,-1.21875 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 l -1.75,0 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 l 0,-0.60937 z m 4.09449,-6.75 0,-1.90625 1.67187,0 0,1.90625 -1.67187,0 z m 0,11.6875 0,-9.85938 1.67187,0 0,9.85938 -1.67187,0 z m 4.0979,0 0,-13.59375 1.67187,0 0,13.59375 -1.67187,0 z m 10.92608,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.09448,5.875 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z m 5.5564,-2.9375 1.65625,-0.26563 q 0.14062,1 0.76562,1.53125 0.64063,0.51563 1.78125,0.51563 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.89063 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.60938 -0.35937,-1.32813 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.9375 0.39062,-0.28125 1.0625,-0.48437 0.67187,-0.20313 1.4375,-0.20313 1.17187,0 2.04687,0.34375 0.875,0.32813 1.28125,0.90625 0.42188,0.5625 0.57813,1.51563 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.39063 -0.48437,0.375 -0.48437,0.875 0,0.32812 0.20312,0.59375 0.20313,0.26562 0.64063,0.4375 0.25,0.0937 1.46875,0.4375 1.76562,0.46875 2.46875,0.76562 0.70312,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48438,1.57813 -0.48437,0.73437 -1.40625,1.14062 -0.92187,0.39063 -2.07812,0.39063 -1.92188,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 11.09375,6.9375 -1.1875,0 q 2.76562,-4.45313 2.76562,-8.92188 0,-1.73437 -0.39062,-3.45312 -0.32813,-1.39063 -0.89063,-2.67188 -0.35937,-0.84375 -1.48437,-2.78125 l 1.1875,0 q 1.75,2.32813 2.57812,4.67188 0.71875,2.01562 0.71875,4.23437 0,2.5 -0.96875,4.84375 -0.95312,2.32813 -2.32812,4.07813 z"/>
- <path style="fill:#b6d7a8;fill-rule:nonzero" inkscape:connector-curvature="0" id="path19" d="m 38.102299,122.95505 156.661421,0 0,82.55118 -156.661421,0 z"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6" inkscape:connector-curvature="0" id="path21" d="m 38.102299,122.95505 156.661421,0 0,82.55118 -156.661421,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path23" d="m 75.679119,171.15064 0,-13.59375 1.67187,0 0,4.875 q 1.17188,-1.35938 2.95313,-1.35938 1.09375,0 1.89062,0.4375 0.8125,0.42188 1.15625,1.1875 0.35938,0.76563 0.35938,2.20313 l 0,6.25 -1.67188,0 0,-6.25 q 0,-1.25 -0.54687,-1.8125 -0.54688,-0.57813 -1.53125,-0.57813 -0.75,0 -1.40625,0.39063 -0.64063,0.375 -0.92188,1.04687 -0.28125,0.65625 -0.28125,1.8125 l 0,5.39063 -1.67187,0 z m 17.12572,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 5.5,0 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 15.547591,4.65625 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.843751,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.031251,-0.25 2.984381,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.171881,0 -1.734381,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.250001,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 l -1.75,0 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.734381,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.968751,0 1.718751,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 l 0,-0.60937 z m 10.46947,4.9375 0,-1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 l 0,-4.875 1.65625,0 0,13.59375 -1.54687,0 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 9.25071,4.92188 0,-9.85938 1.5,0 0,1.5 q 0.57813,-1.04687 1.0625,-1.375 0.48438,-0.34375 1.07813,-0.34375 0.84375,0 1.71875,0.54688 l -0.57813,1.54687 q -0.60937,-0.35937 -1.23437,-0.35937 -0.54688,0 -0.98438,0.32812 -0.42187,0.32813 -0.60937,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67188,0 z m 5.60331,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26562,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29687,1.32813 1.29687,3.67188 0,1.90625 -0.57812,3 -0.5625,1.07812 -1.65625,1.6875 -1.07813,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82812,2.82813 0.82813,0.9375 2.07813,0.9375 1.25,0 2.0625,-0.9375 0.82812,-0.95313 0.82812,-2.89063 0,-1.82812 -0.82812,-2.76562 -0.82813,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07813,0.9375 -0.82812,0.9375 -0.82812,2.82812 z m 8.65696,0 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.28197,4.92188 0,-9.85938 1.5,0 0,1.39063 q 0.45312,-0.71875 1.21875,-1.15625 0.78125,-0.45313 1.76562,-0.45313 1.09375,0 1.79688,0.45313 0.70312,0.45312 0.98437,1.28125 1.17188,-1.73438 3.04688,-1.73438 1.46875,0 2.25,0.8125 0.79687,0.8125 0.79687,2.5 l 0,6.76563 -1.67187,0 0,-6.20313 q 0,-1 -0.15625,-1.4375 -0.15625,-0.45312 -0.59375,-0.71875 -0.42188,-0.26562 -1,-0.26562 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 l 0,5.71875 -1.67188,0 0,-6.40625 q 0,-1.10938 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70312,0 -1.3125,0.375 -0.59375,0.35937 -0.85937,1.07812 -0.26563,0.71875 -0.26563,2.0625 l 0,5.10938 -1.67187,0 z"/>
- <path style="fill:#b6d7a8;fill-rule:nonzero" inkscape:connector-curvature="0" id="path25" d="m 703.39876,122.95505 127.87402,0 0,82.55118 -127.87402,0 z"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6" inkscape:connector-curvature="0" id="path27" d="m 703.39876,122.95505 127.87402,0 0,82.55118 -127.87402,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path29" d="m 739.06521,169.65064 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 l 0,-5.65625 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z m 7.96454,0.28125 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 l 0,2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 l -1.75,0 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 l 0,-0.60937 z m 4.09449,-6.75 0,-1.90625 1.67187,0 0,1.90625 -1.67187,0 z m 0,11.6875 0,-9.85938 1.67187,0 0,9.85938 -1.67187,0 z m 4.09796,0 0,-13.59375 1.67187,0 0,13.59375 -1.67187,0 z m 4.16046,0 0,-9.85938 1.5,0 0,1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 l 0,5.15625 -1.67187,0 z m 5.60327,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 8.65698,0 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.28198,4.92188 0,-9.85938 1.5,0 0,1.39063 q 0.45313,-0.71875 1.21875,-1.15625 0.78125,-0.45313 1.76563,-0.45313 1.09375,0 1.79687,0.45313 0.70313,0.45312 0.98438,1.28125 1.17187,-1.73438 3.04687,-1.73438 1.46875,0 2.25,0.8125 0.79688,0.8125 0.79688,2.5 l 0,6.76563 -1.67188,0 0,-6.20313 q 0,-1 -0.15625,-1.4375 -0.15625,-0.45312 -0.59375,-0.71875 -0.42187,-0.26562 -1,-0.26562 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 l 0,5.71875 -1.67187,0 0,-6.40625 q 0,-1.10938 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.35937 -0.85938,1.07812 -0.26562,0.71875 -0.26562,2.0625 l 0,5.10938 -1.67188,0 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path31" d="m 318.31704,0 718.51966,0 0,26.58268 -718.51966,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path33" d="m 335.25454,15.215088 q 0,1.40625 -1.01563,2.40625 -1,0.984375 -2.42187,0.984375 -1.4375,0 -2.4375,-1 -1,-1 -1,-2.390625 0,-1.40625 1,-2.40625 1,-1 2.4375,-1 1.42187,0 2.42187,1 1.01563,0.984375 1.01563,2.40625 z m -0.625,0 q 0,-1.15625 -0.82813,-1.96875 -0.8125,-0.8125 -1.98437,-0.8125 -1.17188,0 -2,0.8125 -0.82813,0.8125 -0.82813,1.96875 0,1.140625 0.82813,1.96875 0.82812,0.8125 2,0.8125 1.17187,0 1.98437,-0.8125 0.82813,-0.8125 0.82813,-1.96875 z m 9.20459,-6.03125 0,8.578125 0.8125,0 q 0.23437,0 0.32812,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.32812,0.07813 l -1.4375,0 0,-1.21875 q -1.0625,1.453125 -2.71875,1.453125 -0.82813,0 -1.59375,-0.4375 -0.76563,-0.4375 -1.21875,-1.25 -0.4375,-0.828125 -0.4375,-1.703125 0,-0.875 0.4375,-1.6875 0.45312,-0.828125 1.21875,-1.265625 0.76562,-0.453125 1.60937,-0.453125 1.60938,0 2.70313,1.46875 l 0,-3.46875 -0.8125,0 q -0.23438,0 -0.32813,-0.09375 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.125 0.0937,-0.203125 0.0937,-0.09375 0.32813,-0.09375 l 1.4375,0 z m -0.625,6.03125 q 0,-1.171875 -0.79688,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.89062,0.8125 -0.79688,0.796875 -0.79688,1.96875 0,1.15625 0.79688,1.96875 0.79687,0.8125 1.89062,0.8125 1.09375,0 1.875,-0.8125 0.79688,-0.8125 0.79688,-1.96875 z m 4.29834,-3.1875 0,1.125 q 0.54687,-0.671875 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.421875 0.78125,0.421875 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.328125 -0.95312,2.265625 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 l 0,3.71875 1.48437,0 q 0.21875,0 0.3125,0.07813 0.10938,0.07813 0.10938,0.21875 0,0.140625 -0.10938,0.21875 -0.0937,0.09375 -0.3125,0.09375 l -2.9375,0 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.07813 -0.0937,-0.21875 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.0937,-0.09375 0.3125,-0.09375 l 1.45313,0 z m 5.32812,2.984375 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.765625 -1.875,-0.765625 -1.125,0 -1.90625,0.765625 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.828125 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.765625 0.78125,-1.828125 z m 10.07959,7.46875 -8.1875,0 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.07813 -0.0937,-0.21875 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 l 8.1875,0 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.21875 -0.0937,0.09375 -0.3125,0.09375 z m 2.59522,-10.453125 0,1.125 q 0.54687,-0.671875 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.421875 0.78125,0.421875 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.328125 -0.95312,2.265625 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 l 0,3.71875 1.48437,0 q 0.21875,0 0.3125,0.07813 0.10938,0.07813 0.10938,0.21875 0,0.140625 -0.10938,0.21875 -0.0937,0.09375 -0.3125,0.09375 l -2.9375,0 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.07813 -0.0937,-0.21875 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.0937,-0.09375 0.3125,-0.09375 l 1.45313,0 z m 5.32812,2.984375 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.765625 -1.875,-0.765625 -1.125,0 -1.90625,0.765625 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.828125 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.765625 0.78125,-1.828125 z m 7.75147,3.359375 0,-0.890625 q -1.34375,1.125 -2.85938,1.125 -1.10937,0 -1.73437,-0.546875 -0.60938,-0.5625 -0.60938,-1.375 0,-0.890625 0.8125,-1.5625 0.82813,-0.671875 2.39063,-0.671875 0.42187,0 0.92187,0.0625 0.5,0.04687 1.07813,0.171875 l 0,-1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01563,0.421875 -0.23437,0.0625 -0.29687,0.0625 -0.10938,0 -0.20313,-0.07813 -0.0781,-0.09375 -0.0781,-0.21875 0,-0.125 0.0781,-0.203125 0.0937,-0.109375 0.82813,-0.296875 1.14062,-0.3125 1.71875,-0.3125 1.17187,0 1.8125,0.578125 0.65625,0.578125 0.65625,1.296875 l 0,4.078125 0.82812,0 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 l -1.45312,0 z m 0,-3.0625 q -0.42188,-0.125 -0.90625,-0.171875 -0.48438,-0.0625 -1.01563,-0.0625 -1.34375,0 -2.10937,0.578125 -0.5625,0.421875 -0.5625,1.03125 0,0.546875 0.4375,0.9375 0.4375,0.375 1.26562,0.375 0.79688,0 1.48438,-0.3125 0.6875,-0.328125 1.40625,-1.015625 l 0,-1.359375 z m 9.79834,-2.65625 0,-0.203125 q 0,-0.234375 0.0937,-0.328125 0.0937,-0.09375 0.21875,-0.09375 0.14062,0 0.21875,0.09375 0.0937,0.09375 0.0937,0.328125 l 0,1.390625 q 0,0.21875 -0.0937,0.328125 -0.0781,0.09375 -0.21875,0.09375 -0.125,0 -0.21875,-0.07813 -0.0781,-0.09375 -0.0937,-0.296875 -0.0312,-0.515625 -0.67188,-0.984375 -0.64062,-0.46875 -1.73437,-0.46875 -1.375,0 -2.07813,0.859375 -0.70312,0.859375 -0.70312,1.953125 0,1.203125 0.78125,1.984375 0.78125,0.765625 2.03125,0.765625 0.70312,0 1.45312,-0.265625 0.75,-0.265625 1.34375,-0.84375 0.15625,-0.15625 0.26563,-0.15625 0.125,0 0.20312,0.09375 0.0937,0.07813 0.0937,0.203125 0,0.3125 -0.73437,0.796875 -1.20313,0.78125 -2.65625,0.78125 -1.48438,0 -2.45313,-0.9375 -0.95312,-0.953125 -0.95312,-2.40625 0,-1.484375 0.96875,-2.46875 0.98437,-0.984375 2.46875,-0.984375 1.42187,0 2.375,0.84375 z m 5.18896,2.984375 0,2.734375 -1.4375,0 q -0.21875,0 -0.3125,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 l 0.82813,0 0,-7.953125 -0.82813,0 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.125 0.0937,-0.203125 0.0937,-0.09375 0.3125,-0.09375 l 1.4375,0 0,5.671875 2.60938,-2.203125 -0.3125,0 q -0.21875,0 -0.3125,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.0937,-0.09375 0.3125,-0.09375 l 1.96875,0 q 0.23437,0 0.32812,0.09375 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.32812,0.07813 l -0.70313,0 -2.40625,2 3.04688,3.109375 0.70312,0 q 0.23438,0 0.32813,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.32813,0.07813 l -1.98437,0 q -0.21875,0 -0.32813,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.10938,-0.07813 0.32813,-0.07813 l 0.42187,0 -2.64062,-2.71875 -0.70313,0.59375 z m 13.57959,-0.296875 -6.26562,0 q 0.15625,1.203125 1,1.9375 0.84375,0.71875 2.07812,0.71875 0.6875,0 1.4375,-0.21875 0.75,-0.234375 1.23438,-0.609375 0.14062,-0.109375 0.23437,-0.109375 0.125,0 0.20313,0.09375 0.0937,0.09375 0.0937,0.21875 0,0.125 -0.10938,0.234375 -0.35937,0.375 -1.26562,0.6875 -0.89063,0.3125 -1.82813,0.3125 -1.59375,0 -2.65625,-1.03125 -1.04687,-1.03125 -1.04687,-2.5 0,-1.34375 0.98437,-2.296875 1,-0.96875 2.46875,-0.96875 1.5,0 2.46875,0.984375 0.98438,0.984375 0.96875,2.546875 z m -0.625,-0.609375 q -0.17187,-1.03125 -0.95312,-1.65625 -0.78125,-0.640625 -1.85938,-0.640625 -1.07812,0 -1.85937,0.625 -0.76563,0.625 -0.96875,1.671875 l 5.64062,0 z m 5.03272,-2.703125 3.34375,0 q 0.21875,0 0.3125,0.09375 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 l -3.34375,0 0,4.09375 q 0,0.53125 0.42187,0.890625 0.4375,0.359375 1.26563,0.359375 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.421875 0.15625,-0.09375 0.25,-0.09375 0.10937,0 0.20312,0.09375 0.0937,0.09375 0.0937,0.21875 0,0.109375 -0.0937,0.203125 -0.23437,0.234375 -1.14062,0.515625 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.359375 l 0,-4.09375 -1.125,0 q -0.21875,0 -0.32813,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.10938,-0.09375 0.32813,-0.09375 l 1.125,0 0,-1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.09375 0.21875,-0.09375 0.14062,0 0.21875,0.09375 0.0937,0.09375 0.0937,0.3125 l 0,1.8125 z m 14.36084,10.453125 -8.1875,0 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.07813 -0.0937,-0.21875 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 l 8.1875,0 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.21875 -0.0937,0.09375 -0.3125,0.09375 z m 7.92334,-13.296875 0,8.578125 0.8125,0 q 0.23437,0 0.32812,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.32812,0.07813 l -1.4375,0 0,-1.21875 q -1.0625,1.453125 -2.71875,1.453125 -0.82813,0 -1.59375,-0.4375 -0.76563,-0.4375 -1.21875,-1.25 -0.4375,-0.828125 -0.4375,-1.703125 0,-0.875 0.4375,-1.6875 0.45312,-0.828125 1.21875,-1.265625 0.76562,-0.453125 1.60937,-0.453125 1.60938,0 2.70313,1.46875 l 0,-3.46875 -0.8125,0 q -0.23438,0 -0.32813,-0.09375 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.125 0.0937,-0.203125 0.0937,-0.09375 0.32813,-0.09375 l 1.4375,0 z m -0.625,6.03125 q 0,-1.171875 -0.79688,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.89062,0.8125 -0.79688,0.796875 -0.79688,1.96875 0,1.15625 0.79688,1.96875 0.79687,0.8125 1.89062,0.8125 1.09375,0 1.875,-0.8125 0.79688,-0.8125 0.79688,-1.96875 z m 8.37646,3.15625 0,-0.890625 q -1.34375,1.125 -2.85937,1.125 -1.10938,0 -1.73438,-0.546875 -0.60937,-0.5625 -0.60937,-1.375 0,-0.890625 0.8125,-1.5625 0.82812,-0.671875 2.39062,-0.671875 0.42188,0 0.92188,0.0625 0.5,0.04687 1.07812,0.171875 l 0,-1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01562,0.421875 -0.23438,0.0625 -0.29688,0.0625 -0.10937,0 -0.20312,-0.07813 -0.0781,-0.09375 -0.0781,-0.21875 0,-0.125 0.0781,-0.203125 0.0937,-0.109375 0.82812,-0.296875 1.14063,-0.3125 1.71875,-0.3125 1.17188,0 1.8125,0.578125 0.65625,0.578125 0.65625,1.296875 l 0,4.078125 0.82813,0 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 l -1.45313,0 z m 0,-3.0625 q -0.42187,-0.125 -0.90625,-0.171875 -0.48437,-0.0625 -1.01562,-0.0625 -1.34375,0 -2.10938,0.578125 -0.5625,0.421875 -0.5625,1.03125 0,0.546875 0.4375,0.9375 0.4375,0.375 1.26563,0.375 0.79687,0 1.48437,-0.3125 0.6875,-0.328125 1.40625,-1.015625 l 0,-1.359375 z m 5.97022,-3.28125 3.34375,0 q 0.21875,0 0.3125,0.09375 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 l -3.34375,0 0,4.09375 q 0,0.53125 0.42187,0.890625 0.4375,0.359375 1.26563,0.359375 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.421875 0.15625,-0.09375 0.25,-0.09375 0.10937,0 0.20312,0.09375 0.0937,0.09375 0.0937,0.21875 0,0.109375 -0.0937,0.203125 -0.23437,0.234375 -1.14062,0.515625 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.359375 l 0,-4.09375 -1.125,0 q -0.21875,0 -0.32813,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.10938,-0.09375 0.32813,-0.09375 l 1.125,0 0,-1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.09375 0.21875,-0.09375 0.14062,0 0.21875,0.09375 0.0937,0.09375 0.0937,0.3125 l 0,1.8125 z m 12.03271,6.34375 0,-0.890625 q -1.34375,1.125 -2.85937,1.125 -1.10938,0 -1.73438,-0.546875 -0.60937,-0.5625 -0.60937,-1.375 0,-0.890625 0.8125,-1.5625 0.82812,-0.671875 2.39062,-0.671875 0.42188,0 0.92188,0.0625 0.5,0.04687 1.07812,0.171875 l 0,-1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01562,0.421875 -0.23438,0.0625 -0.29688,0.0625 -0.10937,0 -0.20312,-0.07813 -0.0781,-0.09375 -0.0781,-0.21875 0,-0.125 0.0781,-0.203125 0.0937,-0.109375 0.82812,-0.296875 1.14063,-0.3125 1.71875,-0.3125 1.17188,0 1.8125,0.578125 0.65625,0.578125 0.65625,1.296875 l 0,4.078125 0.82813,0 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 l -1.45313,0 z m 0,-3.0625 q -0.42187,-0.125 -0.90625,-0.171875 -0.48437,-0.0625 -1.01562,-0.0625 -1.34375,0 -2.10938,0.578125 -0.5625,0.421875 -0.5625,1.03125 0,0.546875 0.4375,0.9375 0.4375,0.375 1.26563,0.375 0.79687,0 1.48437,-0.3125 0.6875,-0.328125 1.40625,-1.015625 l 0,-1.359375 z m 7.17334,-0.578125 q 0,-0.84375 0.21875,-1.78125 0.21875,-0.953125 0.82813,-2.1875 0.625,-1.25 0.92187,-1.5 0.0781,-0.07813 0.1875,-0.07813 0.125,0 0.21875,0.09375 0.0937,0.07813 0.0937,0.203125 0,0.07813 -0.0469,0.15625 -0.8125,1.484375 -1.15625,2.6875 -0.34375,1.203125 -0.34375,2.40625 0,1.203125 0.34375,2.40625 0.34375,1.203125 1.15625,2.671875 0.0469,0.09375 0.0469,0.15625 0,0.125 -0.0937,0.21875 -0.0937,0.09375 -0.21875,0.09375 -0.10937,0 -0.1875,-0.07813 -0.28125,-0.25 -0.89062,-1.46875 -0.60938,-1.203125 -0.84375,-2.125 -0.23438,-0.9375 -0.23438,-1.875 z m 9.25147,0 q 0,0.84375 -0.23438,1.78125 -0.21875,0.9375 -0.84375,2.171875 -0.60937,1.25 -0.90625,1.5 -0.0781,0.09375 -0.1875,0.09375 -0.125,0 -0.21875,-0.09375 -0.0937,-0.09375 -0.0937,-0.21875 0,-0.0625 0.0469,-0.15625 0.8125,-1.46875 1.15625,-2.671875 0.34375,-1.203125 0.34375,-2.40625 0,-1.203125 -0.34375,-2.40625 -0.34375,-1.203125 -1.15625,-2.6875 -0.0469,-0.07813 -0.0469,-0.15625 0,-0.125 0.0937,-0.203125 0.0937,-0.09375 0.21875,-0.09375 0.10938,0 0.1875,0.07813 0.28125,0.25 0.89063,1.453125 0.625,1.203125 0.85937,2.140625 0.23438,0.9375 0.23438,1.875 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path35" d="m 497.26526,12.058838 -7.09375,0 0,-1.234375 7.09375,0 0,1.234375 z m 0,3.265625 -7.09375,0 0,-1.234375 7.09375,0 0,1.234375 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path37" d="m 512.96639,17.418212 q -0.73437,0.609375 -1.40625,0.875 -0.67187,0.25 -1.45312,0.25 -1.28125,0 -1.96875,-0.625 -0.6875,-0.625 -0.6875,-1.59375 0,-0.578125 0.25,-1.046875 0.26562,-0.46875 0.6875,-0.75 0.42187,-0.296875 0.95312,-0.4375 0.375,-0.109375 1.17188,-0.203125 1.59375,-0.1875 2.34375,-0.453125 0.0156,-0.265625 0.0156,-0.34375 0,-0.8125 -0.375,-1.140625 -0.51562,-0.4375 -1.5,-0.4375 -0.9375,0 -1.39062,0.328125 -0.4375,0.3125 -0.64063,1.140625 l -1.29687,-0.171875 q 0.17187,-0.828125 0.57812,-1.328125 0.40625,-0.515625 1.17188,-0.78125 0.76562,-0.28125 1.76562,-0.28125 1,0 1.60938,0.234375 0.625,0.234375 0.92187,0.59375 0.29688,0.34375 0.40625,0.890625 0.0625,0.34375 0.0625,1.21875 l 0,1.75 q 0,1.84375 0.0781,2.328125 0.0937,0.484375 0.34375,0.9375 l -1.375,0 q -0.20313,-0.40625 -0.26563,-0.953125 z m -0.10937,-2.953125 q -0.71875,0.296875 -2.15625,0.5 -0.8125,0.125 -1.15625,0.265625 -0.32813,0.140625 -0.51563,0.421875 -0.17187,0.28125 -0.17187,0.625 0,0.53125 0.39062,0.890625 0.40625,0.34375 1.17188,0.34375 0.76562,0 1.35937,-0.328125 0.59375,-0.34375 0.875,-0.921875 0.20313,-0.4375 0.20313,-1.3125 l 0,-0.484375 z m 8.22924,3.90625 0,-0.984375 q -0.73437,1.15625 -2.17187,1.15625 -0.92188,0 -1.70313,-0.5 -0.78125,-0.515625 -1.21875,-1.4375 -0.42187,-0.921875 -0.42187,-2.109375 0,-1.171875 0.39062,-2.109375 0.39063,-0.953125 1.15625,-1.453125 0.78125,-0.515625 1.73438,-0.515625 0.70312,0 1.25,0.296875 0.5625,0.296875 0.90625,0.765625 l 0,-3.84375 1.3125,0 0,10.734375 -1.23438,0 z m -4.15625,-3.875 q 0,1.484375 0.625,2.234375 0.625,0.734375 1.48438,0.734375 0.85937,0 1.46875,-0.703125 0.60937,-0.71875 0.60937,-2.15625 0,-1.609375 -0.625,-2.34375 -0.60937,-0.75 -1.51562,-0.75 -0.875,0 -1.46875,0.71875 -0.57813,0.71875 -0.57813,2.265625 z m 12.30738,3.875 0,-0.984375 q -0.73438,1.15625 -2.17188,1.15625 -0.92187,0 -1.70312,-0.5 -0.78125,-0.515625 -1.21875,-1.4375 -0.42188,-0.921875 -0.42188,-2.109375 0,-1.171875 0.39063,-2.109375 0.39062,-0.953125 1.15625,-1.453125 0.78125,-0.515625 1.73437,-0.515625 0.70313,0 1.25,0.296875 0.5625,0.296875 0.90625,0.765625 l 0,-3.84375 1.3125,0 0,10.734375 -1.23437,0 z m -4.15625,-3.875 q 0,1.484375 0.625,2.234375 0.625,0.734375 1.48437,0.734375 0.85938,0 1.46875,-0.703125 0.60938,-0.71875 0.60938,-2.15625 0,-1.609375 -0.625,-2.34375 -0.60938,-0.75 -1.51563,-0.75 -0.875,0 -1.46875,0.71875 -0.57812,0.71875 -0.57812,2.265625 z m 7.24481,3.875 0,-7.78125 1.1875,0 0,1.1875 q 0.45312,-0.828125 0.84375,-1.09375 0.39062,-0.265625 0.84375,-0.265625 0.67187,0 1.35937,0.421875 l -0.45312,1.21875 q -0.48438,-0.28125 -0.96875,-0.28125 -0.4375,0 -0.78125,0.265625 -0.34375,0.25 -0.48438,0.71875 -0.21875,0.703125 -0.21875,1.53125 l 0,4.078125 -1.32812,0 z m 10.22442,-2.5 1.35938,0.15625 q -0.3125,1.203125 -1.1875,1.859375 -0.875,0.65625 -2.23438,0.65625 -1.70312,0 -2.70312,-1.046875 -1,-1.046875 -1,-2.953125 0,-1.953125 1.01562,-3.03125 1.01563,-1.09375 2.625,-1.09375 1.5625,0 2.54688,1.0625 0.98437,1.0625 0.98437,2.984375 0,0.125 0,0.359375 l -5.8125,0 q 0.0781,1.28125 0.71875,1.96875 0.65625,0.671875 1.64063,0.671875 0.71875,0 1.23437,-0.375 0.51563,-0.390625 0.8125,-1.21875 z m -4.32812,-2.140625 4.34375,0 q -0.0937,-0.984375 -0.5,-1.46875 -0.625,-0.765625 -1.625,-0.765625 -0.92188,0 -1.54688,0.609375 -0.60937,0.609375 -0.67187,1.625 z m 6.6355,2.3125 1.29687,-0.203125 q 0.10938,0.78125 0.60938,1.203125 0.5,0.421875 1.40625,0.421875 0.90625,0 1.34375,-0.359375 0.4375,-0.375 0.4375,-0.875 0,-0.453125 -0.39063,-0.703125 -0.26562,-0.1875 -1.34375,-0.453125 -1.45312,-0.359375 -2.01562,-0.625 -0.54688,-0.28125 -0.84375,-0.75 -0.28125,-0.46875 -0.28125,-1.046875 0,-0.515625 0.23437,-0.953125 0.23438,-0.453125 0.64063,-0.734375 0.3125,-0.234375 0.84375,-0.390625 0.53125,-0.15625 1.14062,-0.15625 0.90625,0 1.59375,0.265625 0.70313,0.265625 1.03125,0.71875 0.32813,0.4375 0.45313,1.203125 l -1.28125,0.171875 q -0.0937,-0.609375 -0.51563,-0.9375 -0.42187,-0.34375 -1.1875,-0.34375 -0.90625,0 -1.29687,0.3125 -0.39063,0.296875 -0.39063,0.703125 0,0.25 0.15625,0.453125 0.17188,0.21875 0.51563,0.359375 0.1875,0.0625 1.15625,0.328125 1.40625,0.375 1.95312,0.609375 0.5625,0.234375 0.875,0.703125 0.3125,0.453125 0.3125,1.125 0,0.65625 -0.39062,1.234375 -0.375,0.578125 -1.10938,0.90625 -0.71875,0.3125 -1.64062,0.3125 -1.51563,0 -2.3125,-0.625 -0.78125,-0.625 -1,-1.875 z m 7.32812,0 1.29688,-0.203125 q 0.10937,0.78125 0.60937,1.203125 0.5,0.421875 1.40625,0.421875 0.90625,0 1.34375,-0.359375 0.4375,-0.375 0.4375,-0.875 0,-0.453125 -0.39062,-0.703125 -0.26563,-0.1875 -1.34375,-0.453125 -1.45313,-0.359375 -2.01563,-0.625 -0.54687,-0.28125 -0.84375,-0.75 -0.28125,-0.46875 -0.28125,-1.046875 0,-0.515625 0.23438,-0.953125 0.23437,-0.453125 0.64062,-0.734375 0.3125,-0.234375 0.84375,-0.390625 0.53125,-0.15625 1.14063,-0.15625 0.90625,0 1.59375,0.265625 0.70312,0.265625 1.03125,0.71875 0.32812,0.4375 0.45312,1.203125 l -1.28125,0.171875 q -0.0937,-0.609375 -0.51562,-0.9375 -0.42188,-0.34375 -1.1875,-0.34375 -0.90625,0 -1.29688,0.3125 -0.39062,0.296875 -0.39062,0.703125 0,0.25 0.15625,0.453125 0.17187,0.21875 0.51562,0.359375 0.1875,0.0625 1.15625,0.328125 1.40625,0.375 1.95313,0.609375 0.5625,0.234375 0.875,0.703125 0.3125,0.453125 0.3125,1.125 0,0.65625 -0.39063,1.234375 -0.375,0.578125 -1.10937,0.90625 -0.71875,0.3125 -1.64063,0.3125 -1.51562,0 -2.3125,-0.625 -0.78125,-0.625 -1,-1.875 z m 12.92188,1.375 q -0.73438,0.609375 -1.40625,0.875 -0.67188,0.25 -1.45313,0.25 -1.28125,0 -1.96875,-0.625 -0.6875,-0.625 -0.6875,-1.59375 0,-0.578125 0.25,-1.046875 0.26563,-0.46875 0.6875,-0.75 0.42188,-0.296875 0.95313,-0.4375 0.375,-0.109375 1.17187,-0.203125 1.59375,-0.1875 2.34375,-0.453125 0.0156,-0.265625 0.0156,-0.34375 0,-0.8125 -0.375,-1.140625 -0.51563,-0.4375 -1.5,-0.4375 -0.9375,0 -1.39063,0.328125 -0.4375,0.3125 -0.64062,1.140625 l -1.29688,-0.171875 q 0.17188,-0.828125 0.57813,-1.328125 0.40625,-0.515625 1.17187,-0.78125 0.76563,-0.28125 1.76563,-0.28125 1,0 1.60937,0.234375 0.625,0.234375 0.92188,0.59375 0.29687,0.34375 0.40625,0.890625 0.0625,0.34375 0.0625,1.21875 l 0,1.75 q 0,1.84375 0.0781,2.328125 0.0937,0.484375 0.34375,0.9375 l -1.375,0 q -0.20312,-0.40625 -0.26562,-0.953125 z m -0.10938,-2.953125 q -0.71875,0.296875 -2.15625,0.5 -0.8125,0.125 -1.15625,0.265625 -0.32812,0.140625 -0.51562,0.421875 -0.17188,0.28125 -0.17188,0.625 0,0.53125 0.39063,0.890625 0.40625,0.34375 1.17187,0.34375 0.76563,0 1.35938,-0.328125 0.59375,-0.34375 0.875,-0.921875 0.20312,-0.4375 0.20312,-1.3125 l 0,-0.484375 z m 4.40106,3.90625 -1.21875,0 0,-10.734375 1.3125,0 0,3.828125 q 0.84375,-1.046875 2.14063,-1.046875 0.71875,0 1.35937,0.296875 0.64063,0.28125 1.04688,0.8125 0.42187,0.515625 0.65625,1.265625 0.23437,0.734375 0.23437,1.578125 0,2 -1,3.09375 -0.98437,1.078125 -2.375,1.078125 -1.375,0 -2.15625,-1.140625 l 0,0.96875 z m -0.0156,-3.953125 q 0,1.40625 0.39062,2.03125 0.60938,1.015625 1.67188,1.015625 0.875,0 1.5,-0.75 0.625,-0.75 0.625,-2.234375 0,-1.53125 -0.60938,-2.25 -0.59375,-0.734375 -1.45312,-0.734375 -0.85938,0 -1.5,0.75 -0.625,0.75 -0.625,2.171875 z m 6.96362,-5.265625 0,-1.515625 1.3125,0 0,1.515625 -1.3125,0 z m 0,9.21875 0,-7.78125 1.3125,0 0,7.78125 -1.3125,0 z m 3.20929,0 0,-10.734375 1.32813,0 0,10.734375 -1.32813,0 z m 3.30304,-9.21875 0,-1.515625 1.3125,0 0,1.515625 -1.3125,0 z m 0,9.21875 0,-7.78125 1.3125,0 0,7.78125 -1.3125,0 z m 6.1311,-1.171875 0.1875,1.15625 q -0.5625,0.125 -1,0.125 -0.71875,0 -1.125,-0.234375 -0.39062,-0.234375 -0.54687,-0.59375 -0.15625,-0.375 -0.15625,-1.5625 l 0,-4.46875 -0.96875,0 0,-1.03125 0.96875,0 0,-1.921875 1.3125,-0.796875 0,2.71875 1.32812,0 0,1.03125 -1.32812,0 0,4.546875 q 0,0.5625 0.0625,0.734375 0.0781,0.15625 0.23437,0.25 0.15625,0.09375 0.4375,0.09375 0.23438,0 0.59375,-0.04687 z m 1.13453,4.171875 -0.15625,-1.234375 q 0.4375,0.109375 0.75,0.109375 0.45312,0 0.70312,-0.15625 0.26563,-0.140625 0.4375,-0.40625 0.125,-0.1875 0.40625,-0.96875 0.0312,-0.109375 0.10938,-0.328125 l -2.95313,-7.796875 1.42188,0 1.625,4.5 q 0.3125,0.859375 0.5625,1.8125 0.23437,-0.90625 0.54687,-1.78125 l 1.65625,-4.53125 1.32813,0 -2.96875,7.90625 q -0.46875,1.28125 -0.73438,1.765625 -0.35937,0.65625 -0.8125,0.953125 -0.45312,0.3125 -1.07812,0.3125 -0.375,0 -0.84375,-0.15625 z m 14.33758,-4.171875 0.1875,1.15625 q -0.5625,0.125 -1,0.125 -0.71875,0 -1.125,-0.234375 -0.39062,-0.234375 -0.54687,-0.59375 -0.15625,-0.375 -0.15625,-1.5625 l 0,-4.46875 -0.96875,0 0,-1.03125 0.96875,0 0,-1.921875 1.3125,-0.796875 0,2.71875 1.32812,0 0,1.03125 -1.32812,0 0,4.546875 q 0,0.5625 0.0625,0.734375 0.0781,0.15625 0.23437,0.25 0.15625,0.09375 0.4375,0.09375 0.23438,0 0.59375,-0.04687 z m 0.69696,-2.71875 q 0,-2.15625 1.20313,-3.203125 1,-0.859375 2.4375,-0.859375 1.60937,0 2.625,1.046875 1.01562,1.046875 1.01562,2.90625 0,1.5 -0.45312,2.359375 -0.4375,0.859375 -1.3125,1.34375 -0.85938,0.46875 -1.875,0.46875 -1.625,0 -2.64063,-1.046875 -1,-1.046875 -1,-3.015625 z m 1.35938,0 q 0,1.5 0.64062,2.25 0.65625,0.734375 1.64063,0.734375 0.98437,0 1.64062,-0.75 0.65625,-0.75 0.65625,-2.28125 0,-1.4375 -0.65625,-2.171875 -0.65625,-0.75 -1.64062,-0.75 -0.98438,0 -1.64063,0.734375 -0.64062,0.734375 -0.64062,2.234375 z m 11.34808,6.875 0,-10.765625 1.20313,0 0,1.015625 q 0.42187,-0.59375 0.95312,-0.890625 0.54688,-0.296875 1.3125,-0.296875 0.98438,0 1.75,0.515625 0.76563,0.515625 1.14063,1.453125 0.39062,0.921875 0.39062,2.03125 0,1.203125 -0.42187,2.15625 -0.42188,0.953125 -1.25,1.46875 -0.8125,0.5 -1.71875,0.5 -0.65625,0 -1.1875,-0.265625 -0.51563,-0.28125 -0.84375,-0.71875 l 0,3.796875 -1.32813,0 z m 1.20313,-6.828125 q 0,1.5 0.60937,2.21875 0.60938,0.71875 1.46875,0.71875 0.875,0 1.5,-0.734375 0.625,-0.75 0.625,-2.3125 0,-1.484375 -0.60937,-2.21875 -0.60938,-0.75 -1.45313,-0.75 -0.84375,0 -1.5,0.796875 -0.64062,0.78125 -0.64062,2.28125 z m 12.02612,2.890625 q -0.73438,0.609375 -1.40625,0.875 -0.67188,0.25 -1.45313,0.25 -1.28125,0 -1.96875,-0.625 -0.6875,-0.625 -0.6875,-1.59375 0,-0.578125 0.25,-1.046875 0.26563,-0.46875 0.6875,-0.75 0.42188,-0.296875 0.95313,-0.4375 0.375,-0.109375 1.17187,-0.203125 1.59375,-0.1875 2.34375,-0.453125 0.0156,-0.265625 0.0156,-0.34375 0,-0.8125 -0.375,-1.140625 -0.51563,-0.4375 -1.5,-0.4375 -0.9375,0 -1.39063,0.328125 -0.4375,0.3125 -0.64062,1.140625 l -1.29688,-0.171875 q 0.17188,-0.828125 0.57813,-1.328125 0.40625,-0.515625 1.17187,-0.78125 0.76563,-0.28125 1.76563,-0.28125 1,0 1.60937,0.234375 0.625,0.234375 0.92188,0.59375 0.29687,0.34375 0.40625,0.890625 0.0625,0.34375 0.0625,1.21875 l 0,1.75 q 0,1.84375 0.0781,2.328125 0.0937,0.484375 0.34375,0.9375 l -1.375,0 q -0.20312,-0.40625 -0.26562,-0.953125 z m -0.10938,-2.953125 q -0.71875,0.296875 -2.15625,0.5 -0.8125,0.125 -1.15625,0.265625 -0.32812,0.140625 -0.51562,0.421875 -0.17188,0.28125 -0.17188,0.625 0,0.53125 0.39063,0.890625 0.40625,0.34375 1.17187,0.34375 0.76563,0 1.35938,-0.328125 0.59375,-0.34375 0.875,-0.921875 0.20312,-0.4375 0.20312,-1.3125 l 0,-0.484375 z m 8.2605,1.0625 1.29688,0.15625 q -0.20313,1.34375 -1.09375,2.109375 -0.875,0.75 -2.14063,0.75 -1.59375,0 -2.5625,-1.03125 -0.96875,-1.046875 -0.96875,-3 0,-1.265625 0.40625,-2.203125 0.42188,-0.953125 1.26563,-1.421875 0.85937,-0.46875 1.85937,-0.46875 1.26563,0 2.07813,0.640625 0.8125,0.640625 1.03125,1.8125 l -1.28125,0.203125 q -0.1875,-0.78125 -0.65625,-1.171875 -0.45313,-0.40625 -1.10938,-0.40625 -1,0 -1.625,0.71875 -0.625,0.71875 -0.625,2.265625 0,1.5625 0.59375,2.28125 0.60938,0.703125 1.57813,0.703125 0.78125,0 1.29687,-0.46875 0.51563,-0.484375 0.65625,-1.46875 z m 2.26563,2.84375 0,-10.734375 1.3125,0 0,6.125 3.125,-3.171875 1.70312,0 -2.96875,2.890625 3.26563,4.890625 -1.625,0 -2.5625,-3.984375 -0.9375,0.90625 0,3.078125 -1.3125,0 z m 12.64062,-2.5 1.35938,0.15625 q -0.3125,1.203125 -1.1875,1.859375 -0.875,0.65625 -2.23438,0.65625 -1.70312,0 -2.70312,-1.046875 -1,-1.046875 -1,-2.953125 0,-1.953125 1.01562,-3.03125 1.01563,-1.09375 2.625,-1.09375 1.5625,0 2.54688,1.0625 0.98437,1.0625 0.98437,2.984375 0,0.125 0,0.359375 l -5.8125,0 q 0.0781,1.28125 0.71875,1.96875 0.65625,0.671875 1.64063,0.671875 0.71875,0 1.23437,-0.375 0.51563,-0.390625 0.8125,-1.21875 z m -4.32812,-2.140625 4.34375,0 q -0.0937,-0.984375 -0.5,-1.46875 -0.625,-0.765625 -1.625,-0.765625 -0.92188,0 -1.54688,0.609375 -0.60937,0.609375 -0.67187,1.625 z m 10.04168,3.46875 0.1875,1.15625 q -0.5625,0.125 -1,0.125 -0.71875,0 -1.125,-0.234375 -0.39062,-0.234375 -0.54687,-0.59375 -0.15625,-0.375 -0.15625,-1.5625 l 0,-4.46875 -0.96875,0 0,-1.03125 0.96875,0 0,-1.921875 1.3125,-0.796875 0,2.71875 1.32812,0 0,1.03125 -1.32812,0 0,4.546875 q 0,0.5625 0.0625,0.734375 0.0781,0.15625 0.23437,0.25 0.15625,0.09375 0.4375,0.09375 0.23438,0 0.59375,-0.04687 z m 4.76899,-2.71875 q 0,-2.15625 1.20312,-3.203125 1,-0.859375 2.4375,-0.859375 1.60938,0 2.625,1.046875 1.01563,1.046875 1.01563,2.90625 0,1.5 -0.45313,2.359375 -0.4375,0.859375 -1.3125,1.34375 -0.85937,0.46875 -1.875,0.46875 -1.625,0 -2.64062,-1.046875 -1,-1.046875 -1,-3.015625 z m 1.35937,0 q 0,1.5 0.64063,2.25 0.65625,0.734375 1.64062,0.734375 0.98438,0 1.64063,-0.75 0.65625,-0.75 0.65625,-2.28125 0,-1.4375 -0.65625,-2.171875 -0.65625,-0.75 -1.64063,-0.75 -0.98437,0 -1.64062,0.734375 -0.64063,0.734375 -0.64063,2.234375 z m 7.58862,3.890625 0,-6.75 -1.15625,0 0,-1.03125 1.15625,0 0,-0.828125 q 0,-0.78125 0.14063,-1.15625 0.20312,-0.515625 0.67187,-0.828125 0.48438,-0.328125 1.34375,-0.328125 0.5625,0 1.23438,0.140625 l -0.20313,1.140625 q -0.40625,-0.07813 -0.76562,-0.07813 -0.60938,0 -0.85938,0.265625 -0.25,0.25 -0.25,0.953125 l 0,0.71875 1.51563,0 0,1.03125 -1.51563,0 0,6.75 -1.3125,0 z m 4.07196,0 0,-6.75 -1.15625,0 0,-1.03125 1.15625,0 0,-0.828125 q 0,-0.78125 0.14063,-1.15625 0.20312,-0.515625 0.67187,-0.828125 0.48438,-0.328125 1.34375,-0.328125 0.5625,0 1.23438,0.140625 l -0.20313,1.140625 q -0.40625,-0.07813 -0.76562,-0.07813 -0.60938,0 -0.85938,0.265625 -0.25,0.25 -0.25,0.953125 l 0,0.71875 1.51563,0 0,1.03125 -1.51563,0 0,6.75 -1.3125,0 z m 3.24384,-2.328125 1.29687,-0.203125 q 0.10938,0.78125 0.60938,1.203125 0.5,0.421875 1.40625,0.421875 0.90625,0 1.34375,-0.359375 0.4375,-0.375 0.4375,-0.875 0,-0.453125 -0.39063,-0.703125 -0.26562,-0.1875 -1.34375,-0.453125 -1.45312,-0.359375 -2.01562,-0.625 -0.54688,-0.28125 -0.84375,-0.75 -0.28125,-0.46875 -0.28125,-1.046875 0,-0.515625 0.23437,-0.953125 0.23438,-0.453125 0.64063,-0.734375 0.3125,-0.234375 0.84375,-0.390625 0.53125,-0.15625 1.14062,-0.15625 0.90625,0 1.59375,0.265625 0.70313,0.265625 1.03125,0.71875 0.32813,0.4375 0.45313,1.203125 l -1.28125,0.171875 q -0.0937,-0.609375 -0.51563,-0.9375 -0.42187,-0.34375 -1.1875,-0.34375 -0.90625,0 -1.29687,0.3125 -0.39063,0.296875 -0.39063,0.703125 0,0.25 0.15625,0.453125 0.17188,0.21875 0.51563,0.359375 0.1875,0.0625 1.15625,0.328125 1.40625,0.375 1.95312,0.609375 0.5625,0.234375 0.875,0.703125 0.3125,0.453125 0.3125,1.125 0,0.65625 -0.39062,1.234375 -0.375,0.578125 -1.10938,0.90625 -0.71875,0.3125 -1.64062,0.3125 -1.51563,0 -2.3125,-0.625 -0.78125,-0.625 -1,-1.875 z m 13.17187,-0.171875 1.35938,0.15625 q -0.3125,1.203125 -1.1875,1.859375 -0.875,0.65625 -2.23438,0.65625 -1.70312,0 -2.70312,-1.046875 -1,-1.046875 -1,-2.953125 0,-1.953125 1.01562,-3.03125 1.01563,-1.09375 2.625,-1.09375 1.5625,0 2.54688,1.0625 0.98437,1.0625 0.98437,2.984375 0,0.125 0,0.359375 l -5.8125,0 q 0.0781,1.28125 0.71875,1.96875 0.65625,0.671875 1.64063,0.671875 0.71875,0 1.23437,-0.375 0.51563,-0.390625 0.8125,-1.21875 z m -4.32812,-2.140625 4.34375,0 q -0.0937,-0.984375 -0.5,-1.46875 -0.625,-0.765625 -1.625,-0.765625 -0.92188,0 -1.54688,0.609375 -0.60937,0.609375 -0.67187,1.625 z m 10.04175,3.46875 0.1875,1.15625 q -0.5625,0.125 -1,0.125 -0.71875,0 -1.125,-0.234375 -0.39063,-0.234375 -0.54688,-0.59375 -0.15625,-0.375 -0.15625,-1.5625 l 0,-4.46875 -0.96875,0 0,-1.03125 0.96875,0 0,-1.921875 1.3125,-0.796875 0,2.71875 1.32813,0 0,1.03125 -1.32813,0 0,4.546875 q 0,0.5625 0.0625,0.734375 0.0781,0.15625 0.23438,0.25 0.15625,0.09375 0.4375,0.09375 0.23437,0 0.59375,-0.04687 z m 4.89392,-4.125 q 0,-1.90625 0.39062,-3.0625 0.39063,-1.15625 1.15625,-1.78125 0.78125,-0.640625 1.95313,-0.640625 0.85937,0 1.51562,0.359375 0.65625,0.34375 1.07813,1 0.42187,0.640625 0.65625,1.59375 0.25,0.9375 0.25,2.53125 0,1.890625 -0.39063,3.0625 -0.39062,1.15625 -1.17187,1.796875 -0.76563,0.625 -1.9375,0.625 -1.54688,0 -2.4375,-1.125 -1.0625,-1.328125 -1.0625,-4.359375 z m 1.35937,0 q 0,2.640625 0.60938,3.515625 0.625,0.875 1.53125,0.875 0.90625,0 1.51562,-0.875 0.625,-0.875 0.625,-3.515625 0,-2.65625 -0.625,-3.515625 -0.60937,-0.875 -1.53125,-0.875 -0.90625,0 -1.45312,0.765625 -0.67188,0.984375 -0.67188,3.625 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path39" d="m 401.66299,77.721842 1.4173,177.007868"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:8, 6" inkscape:connector-curvature="0" id="path41" d="m 401.66299,77.721842 1.4173,177.007868"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path43" d="m 638.76776,77.721842 1.4173,177.007868"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:8, 6" inkscape:connector-curvature="0" id="path45" d="m 638.76776,77.721842 1.4173,177.007868"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path47" d="m 39.539299,116.064 0,0 c 0,-12.48946 1.32431,-22.614168 2.95793,-22.614168 l 173.706191,0 c 1.63361,0 2.95792,-10.12471 2.95792,-22.614178 l 0,0 c 0,5.99765 0.31164,11.749657 0.86636,15.990638 0.55472,4.24098 1.3071,6.62354 2.09158,6.62354 l 173.70618,0 c 1.63361,0 2.95792,10.124708 2.95792,22.614168 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path49" d="m 39.539299,116.064 0,0 c 0,-12.48946 1.32431,-22.614168 2.95793,-22.614168 l 173.706191,0 c 1.63361,0 2.95792,-10.12471 2.95792,-22.614178 l 0,0 c 0,5.99765 0.31164,11.749657 0.86636,15.990638 0.55472,4.24098 1.3071,6.62354 2.09158,6.62354 l 173.70618,0 c 1.63361,0 2.95792,10.124708 2.95792,22.614168"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6" inkscape:connector-curvature="0" id="path51" d="m 39.539299,116.064 0,0 c 0,-12.48946 1.32431,-22.614168 2.95793,-22.614168 l 173.706191,0 c 1.63361,0 2.95792,-10.12471 2.95792,-22.614178 l 0,0 c 0,5.99765 0.31164,11.749657 0.86636,15.990638 0.55472,4.24098 1.3071,6.62354 2.09158,6.62354 l 173.70618,0 c 1.63361,0 2.95792,10.124708 2.95792,22.614168"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path53" d="m 405.97396,116.064 0,0 c 0,-12.48946 1.32431,-22.614168 2.95795,-22.614168 l 107.59595,0 c 1.6336,0 2.95788,-10.12471 2.95788,-22.614178 l 0,0 c 0,5.99765 0.31165,11.749657 0.8664,15.990638 0.55468,4.24098 1.30706,6.62354 2.09155,6.62354 l 107.59595,0 c 1.63361,0 2.95795,10.124708 2.95795,22.614168 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path55" d="m 405.97396,116.064 0,0 c 0,-12.48946 1.32431,-22.614168 2.95795,-22.614168 l 107.59595,0 c 1.6336,0 2.95788,-10.12471 2.95788,-22.614178 l 0,0 c 0,5.99765 0.31165,11.749657 0.8664,15.990638 0.55468,4.24098 1.30706,6.62354 2.09155,6.62354 l 107.59595,0 c 1.63361,0 2.95795,10.124708 2.95795,22.614168"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6" inkscape:connector-curvature="0" id="path57" d="m 405.97396,116.064 0,0 c 0,-12.48946 1.32431,-22.614168 2.95795,-22.614168 l 107.59595,0 c 1.6336,0 2.95788,-10.12471 2.95788,-22.614178 l 0,0 c 0,5.99765 0.31165,11.749657 0.8664,15.990638 0.55468,4.24098 1.30706,6.62354 2.09155,6.62354 l 107.59595,0 c 1.63361,0 2.95795,10.124708 2.95795,22.614168"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path59" d="m 645.98672,116.064 0,0 c 0,-12.48946 1.32428,-22.614168 2.95795,-22.614168 l 88.90301,0 c 1.63361,0 2.95795,-10.12471 2.95795,-22.614178 l 0,0 c 0,5.99765 0.31164,11.749657 0.86633,15.990638 0.55475,4.24098 1.30707,6.62354 2.09162,6.62354 l 88.90301,0 c 1.63361,0 2.95795,10.124708 2.95795,22.614168 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path61" d="m 645.98672,116.064 0,0 c 0,-12.48946 1.32428,-22.614168 2.95795,-22.614168 l 88.90301,0 c 1.63361,0 2.95795,-10.12471 2.95795,-22.614178 l 0,0 c 0,5.99765 0.31164,11.749657 0.86633,15.990638 0.55475,4.24098 1.30707,6.62354 2.09162,6.62354 l 88.90301,0 c 1.63361,0 2.95795,10.124708 2.95795,22.614168"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6" inkscape:connector-curvature="0" id="path63" d="m 645.98672,116.064 0,0 c 0,-12.48946 1.32428,-22.614168 2.95795,-22.614168 l 88.90301,0 c 1.63361,0 2.95795,-10.12471 2.95795,-22.614178 l 0,0 c 0,5.99765 0.31164,11.749657 0.86633,15.990638 0.55475,4.24098 1.30707,6.62354 2.09162,6.62354 l 88.90301,0 c 1.63361,0 2.95795,10.124708 2.95795,22.614168"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path65" d="m 135.81821,31.466587 168.15749,0 0,26.58268 -168.15749,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path67" d="m 176.91802,48.740422 1.65625,-0.265625 q 0.14063,1 0.76563,1.53125 0.64062,0.515625 1.78125,0.515625 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.890625 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.796871 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.609375 -0.35938,-1.328125 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.484375 0.67188,-0.203125 1.4375,-0.203125 1.17188,0 2.04688,0.34375 0.875,0.328125 1.28125,0.90625 0.42187,0.5625 0.57812,1.515625 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.171875 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.390625 -0.48438,0.375 -0.48438,0.875 0,0.328125 0.20313,0.59375 0.20312,0.265625 0.64062,0.4375 0.25,0.09375 1.46875,0.4375 1.76563,0.46875 2.46875,0.765625 0.70313,0.296875 1.09375,0.874996 0.40625,0.578125 0.40625,1.4375 0,0.828125 -0.48437,1.578125 -0.48438,0.734375 -1.40625,1.140625 -0.92188,0.390625 -2.07813,0.390625 -1.92187,0 -2.9375,-0.796875 -1,-0.796875 -1.28125,-2.359375 z m 16.75,-0.234375 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42188,-1.328125 -1.26562,-1.328125 -1.26562,-3.734375 0,-2.484371 1.26562,-3.859371 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.796875 0,0.140621 -0.0156,0.437496 l -7.34375,0 q 0.0937,1.625 0.92187,2.484375 0.82813,0.859375 2.0625,0.859375 0.90625,0 1.54688,-0.46875 0.65625,-0.484375 1.04687,-1.546875 z m -5.48437,-2.703121 5.5,0 q -0.10938,-1.234375 -0.625,-1.859375 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.765625 -0.85937,2.046875 z m 8.81323,6.687496 1.60937,0.25 q 0.10938,0.75 0.57813,1.09375 0.60937,0.453125 1.6875,0.453125 1.17187,0 1.79687,-0.46875 0.625,-0.453125 0.85938,-1.28125 0.125,-0.515625 0.10937,-2.15625 -1.09375,1.296875 -2.71875,1.296875 -2.03125,0 -3.15625,-1.46875 -1.10937,-1.46875 -1.10937,-3.515621 0,-1.40625 0.51562,-2.59375 0.51563,-1.203125 1.48438,-1.84375 0.96875,-0.65625 2.26562,-0.65625 1.75,0 2.875,1.40625 l 0,-1.1875 1.54688,0 0,8.515621 q 0,2.3125 -0.46875,3.265625 -0.46875,0.96875 -1.48438,1.515625 -1.01562,0.5625 -2.5,0.5625 -1.76562,0 -2.85937,-0.796875 -1.07813,-0.796875 -1.03125,-2.390625 z m 1.375,-5.921871 q 0,1.953121 0.76562,2.843746 0.78125,0.890625 1.9375,0.890625 1.14063,0 1.92188,-0.890625 0.78125,-0.890625 0.78125,-2.781246 0,-1.8125 -0.8125,-2.71875 -0.79688,-0.921875 -1.92188,-0.921875 -1.10937,0 -1.89062,0.90625 -0.78125,0.890625 -0.78125,2.671875 z m 9.29757,5.109371 0,-9.859371 1.5,0 0,1.390625 q 0.45313,-0.71875 1.21875,-1.15625 0.78125,-0.453125 1.76563,-0.453125 1.09375,0 1.79687,0.453125 0.70313,0.453125 0.98438,1.28125 1.17187,-1.734375 3.04687,-1.734375 1.46875,0 2.25,0.8125 0.79688,0.8125 0.79688,2.5 l 0,6.765621 -1.67188,0 0,-6.203121 q 0,-1 -0.15625,-1.4375 -0.15625,-0.453125 -0.59375,-0.71875 -0.42187,-0.265625 -1,-0.265625 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 l 0,5.718746 -1.67187,0 0,-6.406246 q 0,-1.109375 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.359375 -0.85938,1.078125 -0.26562,0.71875 -0.26562,2.0625 l 0,5.109371 -1.67188,0 z m 22.29081,-3.171875 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42187,-1.328125 -1.26563,-1.328125 -1.26563,-3.734375 0,-2.484371 1.26563,-3.859371 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.796875 0,0.140621 -0.0156,0.437496 l -7.34375,0 q 0.0937,1.625 0.92188,2.484375 0.82812,0.859375 2.0625,0.859375 0.90625,0 1.54687,-0.46875 0.65625,-0.484375 1.04688,-1.546875 z m -5.48438,-2.703121 5.5,0 q -0.10937,-1.234375 -0.625,-1.859375 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.765625 -0.85938,2.046875 z m 9.11011,5.874996 0,-9.859371 1.5,0 0,1.40625 q 1.09375,-1.625 3.14062,-1.625 0.89063,0 1.64063,0.328125 0.75,0.3125 1.10937,0.84375 0.375,0.515625 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.062496 -1.67187,0 0,-5.999996 q 0,-1.015625 -0.20313,-1.515625 -0.1875,-0.515625 -0.6875,-0.8125 -0.5,-0.296875 -1.17187,-0.296875 -1.0625,0 -1.84375,0.671875 -0.76563,0.671875 -0.76563,2.578125 l 0,5.374996 -1.67187,0 z m 14.03195,-1.5 0.23437,1.484375 q -0.70312,0.140625 -1.26562,0.140625 -0.90625,0 -1.40625,-0.28125 -0.5,-0.296875 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.984375 l 0,-5.656246 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.749996 q 0,0.71875 0.0781,0.921875 0.0937,0.203125 0.29688,0.328125 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.07813 z m 6.24161,-5.203121 q 0,-2.421875 0.5,-3.890625 0.5,-1.46875 1.46875,-2.265625 0.98437,-0.796875 2.46875,-0.796875 1.09375,0 1.92187,0.4375 0.82813,0.4375 1.35938,1.28125 0.54687,0.828125 0.84375,2.015625 0.3125,1.1875 0.3125,3.21875 0,2.390621 -0.5,3.859371 -0.48438,1.46875 -1.46875,2.28125 -0.96875,0.796875 -2.46875,0.796875 -1.96875,0 -3.07813,-1.40625 -1.35937,-1.703125 -1.35937,-5.531246 z m 1.71875,0 q 0,3.343746 0.78125,4.453121 0.79687,1.109375 1.9375,1.109375 1.15625,0 1.9375,-1.109375 0.78125,-1.125 0.78125,-4.453121 0,-3.359375 -0.78125,-4.46875 -0.78125,-1.109375 -1.95313,-1.109375 -1.15625,0 -1.82812,0.984375 -0.875,1.234375 -0.875,4.59375 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path69" d="m 436.15093,26.588646 168.15744,0 0,45.228344 -168.15744,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path71" d="m 477.25076,53.185312 1.65625,-0.265625 q 0.14062,1 0.76562,1.53125 0.64063,0.515625 1.78125,0.515625 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.890625 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.796875 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.609375 -0.35937,-1.328125 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.937496 0.39062,-0.28125 1.0625,-0.484375 0.67187,-0.203125 1.4375,-0.203125 1.17187,0 2.04687,0.34375 0.875,0.328125 1.28125,0.906246 0.42188,0.5625 0.57813,1.515625 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.171875 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.390625 -0.48437,0.375 -0.48437,0.875 0,0.328125 0.20312,0.59375 0.20313,0.265625 0.64063,0.4375 0.25,0.09375 1.46875,0.4375 1.76562,0.46875 2.46875,0.765625 0.70312,0.296875 1.09375,0.875 0.40625,0.578125 0.40625,1.4375 0,0.828125 -0.48438,1.578125 -0.48437,0.734375 -1.40625,1.140625 -0.92187,0.390625 -2.07812,0.390625 -1.92188,0 -2.9375,-0.796875 -1,-0.796875 -1.28125,-2.359375 z m 16.75,-0.234375 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42187,-1.328125 -1.26563,-1.328125 -1.26563,-3.734375 0,-2.484375 1.26563,-3.859375 1.28125,-1.374996 3.32812,-1.374996 1.98438,0 3.23438,1.343746 1.25,1.34375 1.25,3.796875 0,0.140625 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.484375 0.82812,0.859375 2.0625,0.859375 0.90625,0 1.54687,-0.46875 0.65625,-0.484375 1.04688,-1.546875 z m -5.48438,-2.703125 5.5,0 q -0.10937,-1.234375 -0.625,-1.859375 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.765625 -0.85938,2.046875 z m 8.81318,6.6875 1.60937,0.25 q 0.10938,0.75 0.57813,1.09375 0.60937,0.453125 1.6875,0.453125 1.17187,0 1.79687,-0.46875 0.625,-0.453125 0.85938,-1.28125 0.125,-0.515625 0.10937,-2.15625 -1.09375,1.296875 -2.71875,1.296875 -2.03125,0 -3.15625,-1.46875 -1.10937,-1.46875 -1.10937,-3.515625 0,-1.40625 0.51562,-2.59375 0.51563,-1.203125 1.48438,-1.843746 0.96875,-0.65625 2.26562,-0.65625 1.75,0 2.875,1.406246 l 0,-1.187496 1.54688,0 0,8.515621 q 0,2.3125 -0.46875,3.265625 -0.46875,0.96875 -1.48438,1.515625 -1.01562,0.5625 -2.5,0.5625 -1.76562,0 -2.85937,-0.796875 -1.07813,-0.796875 -1.03125,-2.390625 z m 1.375,-5.921875 q 0,1.953125 0.76562,2.84375 0.78125,0.890625 1.9375,0.890625 1.14063,0 1.92188,-0.890625 0.78125,-0.890625 0.78125,-2.78125 0,-1.8125 -0.8125,-2.71875 -0.79688,-0.921875 -1.92188,-0.921875 -1.10937,0 -1.89062,0.90625 -0.78125,0.890625 -0.78125,2.671875 z m 9.2976,5.109375 0,-9.859371 1.5,0 0,1.390621 q 0.45313,-0.71875 1.21875,-1.156246 0.78125,-0.453125 1.76563,-0.453125 1.09375,0 1.79687,0.453125 0.70313,0.453121 0.98438,1.281246 1.17187,-1.734371 3.04687,-1.734371 1.46875,0 2.25,0.812496 0.79688,0.8125 0.79688,2.5 l 0,6.765625 -1.67188,0 0,-6.203125 q 0,-1 -0.15625,-1.4375 -0.15625,-0.453125 -0.59375,-0.71875 -0.42187,-0.265625 -1,-0.265625 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 l 0,5.71875 -1.67187,0 0,-6.40625 q 0,-1.109375 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.359375 -0.85938,1.078125 -0.26562,0.71875 -0.26562,2.0625 l 0,5.109375 -1.67188,0 z m 22.29084,-3.171875 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42187,-1.328125 -1.26563,-1.328125 -1.26563,-3.734375 0,-2.484375 1.26563,-3.859375 1.28125,-1.374996 3.32812,-1.374996 1.98438,0 3.23438,1.343746 1.25,1.34375 1.25,3.796875 0,0.140625 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.484375 0.82812,0.859375 2.0625,0.859375 0.90625,0 1.54687,-0.46875 0.65625,-0.484375 1.04688,-1.546875 z m -5.48438,-2.703125 5.5,0 q -0.10937,-1.234375 -0.625,-1.859375 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.765625 -0.85938,2.046875 z m 9.11005,5.875 0,-9.859371 1.5,0 0,1.406246 q 1.09375,-1.624996 3.14062,-1.624996 0.89063,0 1.64063,0.328125 0.75,0.3125 1.10937,0.843746 0.375,0.515625 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67187,0 0,-6 q 0,-1.015625 -0.20313,-1.515625 -0.1875,-0.515625 -0.6875,-0.8125 -0.5,-0.296875 -1.17187,-0.296875 -1.0625,0 -1.84375,0.671875 -0.76563,0.671875 -0.76563,2.578125 l 0,5.375 -1.67187,0 z m 14.03198,-1.5 0.23437,1.484375 q -0.70312,0.140625 -1.26562,0.140625 -0.90625,0 -1.40625,-0.28125 -0.5,-0.296875 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.984375 l 0,-5.65625 -1.23438,0 0,-1.312496 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.312496 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.921875 0.0937,0.203125 0.29688,0.328125 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.07813 z m 12.53851,1.5 -1.67187,0 0,-10.640621 q -0.59375,0.578125 -1.57813,1.15625 -0.98437,0.562496 -1.76562,0.859371 l 0,-1.624996 q 1.40625,-0.65625 2.45312,-1.59375 1.04688,-0.9375 1.48438,-1.8125 l 1.07812,0 0,13.656246 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path73" d="m 661.75973,26.588646 168.15747,0 0,45.228344 -168.15747,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path75" d="m 702.85952,53.185312 1.65625,-0.265625 q 0.14062,1 0.76562,1.53125 0.64063,0.515625 1.78125,0.515625 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.890625 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.796875 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.609375 -0.35937,-1.328125 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.937496 0.39062,-0.28125 1.0625,-0.484375 0.67187,-0.203125 1.4375,-0.203125 1.17187,0 2.04687,0.34375 0.875,0.328125 1.28125,0.906246 0.42188,0.5625 0.57813,1.515625 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.171875 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.390625 -0.48437,0.375 -0.48437,0.875 0,0.328125 0.20312,0.59375 0.20313,0.265625 0.64063,0.4375 0.25,0.09375 1.46875,0.4375 1.76562,0.46875 2.46875,0.765625 0.70312,0.296875 1.09375,0.875 0.40625,0.578125 0.40625,1.4375 0,0.828125 -0.48438,1.578125 -0.48437,0.734375 -1.40625,1.140625 -0.92187,0.390625 -2.07812,0.390625 -1.92188,0 -2.9375,-0.796875 -1,-0.796875 -1.28125,-2.359375 z m 16.75,-0.234375 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42187,-1.328125 -1.26563,-1.328125 -1.26563,-3.734375 0,-2.484375 1.26563,-3.859375 1.28125,-1.374996 3.32812,-1.374996 1.98438,0 3.23438,1.343746 1.25,1.34375 1.25,3.796875 0,0.140625 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92188,2.484375 0.82812,0.859375 2.0625,0.859375 0.90625,0 1.54687,-0.46875 0.65625,-0.484375 1.04688,-1.546875 z m -5.48438,-2.703125 5.5,0 q -0.10937,-1.234375 -0.625,-1.859375 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.765625 -0.85938,2.046875 z m 8.81324,6.6875 1.60937,0.25 q 0.10938,0.75 0.57813,1.09375 0.60937,0.453125 1.6875,0.453125 1.17187,0 1.79687,-0.46875 0.625,-0.453125 0.85938,-1.28125 0.125,-0.515625 0.10937,-2.15625 -1.09375,1.296875 -2.71875,1.296875 -2.03125,0 -3.15625,-1.46875 -1.10937,-1.46875 -1.10937,-3.515625 0,-1.40625 0.51562,-2.59375 0.51563,-1.203125 1.48438,-1.843746 0.96875,-0.65625 2.26562,-0.65625 1.75,0 2.875,1.406246 l 0,-1.187496 1.54688,0 0,8.515621 q 0,2.3125 -0.46875,3.265625 -0.46875,0.96875 -1.48438,1.515625 -1.01562,0.5625 -2.5,0.5625 -1.76562,0 -2.85937,-0.796875 -1.07813,-0.796875 -1.03125,-2.390625 z m 1.375,-5.921875 q 0,1.953125 0.76562,2.84375 0.78125,0.890625 1.9375,0.890625 1.14063,0 1.92188,-0.890625 0.78125,-0.890625 0.78125,-2.78125 0,-1.8125 -0.8125,-2.71875 -0.79688,-0.921875 -1.92188,-0.921875 -1.10937,0 -1.89062,0.90625 -0.78125,0.890625 -0.78125,2.671875 z m 9.2976,5.109375 0,-9.859371 1.5,0 0,1.390621 q 0.45313,-0.71875 1.21875,-1.156246 0.78125,-0.453125 1.76563,-0.453125 1.09375,0 1.79687,0.453125 0.70313,0.453121 0.98438,1.281246 1.17187,-1.734371 3.04687,-1.734371 1.46875,0 2.25,0.812496 0.79688,0.8125 0.79688,2.5 l 0,6.765625 -1.67188,0 0,-6.203125 q 0,-1 -0.15625,-1.4375 -0.15625,-0.453125 -0.59375,-0.71875 -0.42187,-0.265625 -1,-0.265625 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 l 0,5.71875 -1.67187,0 0,-6.40625 q 0,-1.109375 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.359375 -0.85938,1.078125 -0.26562,0.71875 -0.26562,2.0625 l 0,5.109375 -1.67188,0 z m 22.29077,-3.171875 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42188,-1.328125 -1.26562,-1.328125 -1.26562,-3.734375 0,-2.484375 1.26562,-3.859375 1.28125,-1.374996 3.32813,-1.374996 1.98437,0 3.23437,1.343746 1.25,1.34375 1.25,3.796875 0,0.140625 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.484375 0.82813,0.859375 2.0625,0.859375 0.90625,0 1.54688,-0.46875 0.65625,-0.484375 1.04687,-1.546875 z m -5.48437,-2.703125 5.5,0 q -0.10938,-1.234375 -0.625,-1.859375 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.765625 -0.85937,2.046875 z m 9.11011,5.875 0,-9.859371 1.5,0 0,1.406246 q 1.09375,-1.624996 3.14062,-1.624996 0.89063,0 1.64063,0.328125 0.75,0.3125 1.10937,0.843746 0.375,0.515625 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67187,0 0,-6 q 0,-1.015625 -0.20313,-1.515625 -0.1875,-0.515625 -0.6875,-0.8125 -0.5,-0.296875 -1.17187,-0.296875 -1.0625,0 -1.84375,0.671875 -0.76563,0.671875 -0.76563,2.578125 l 0,5.375 -1.67187,0 z m 14.03198,-1.5 0.23437,1.484375 q -0.70312,0.140625 -1.26562,0.140625 -0.90625,0 -1.40625,-0.28125 -0.5,-0.296875 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.984375 l 0,-5.65625 -1.23438,0 0,-1.312496 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.312496 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.921875 0.0937,0.203125 0.29688,0.328125 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.07813 z m 15.02283,-0.109375 0,1.609375 -8.98438,0 q -0.0156,-0.609375 0.1875,-1.15625 0.34375,-0.921875 1.09375,-1.8125 0.76563,-0.890625 2.1875,-2.0625 2.21875,-1.8125 3,-2.875 0.78125,-1.0625 0.78125,-2.015621 0,-0.984375 -0.71875,-1.671875 -0.70312,-0.6875 -1.84375,-0.6875 -1.20312,0 -1.9375,0.734375 -0.71875,0.71875 -0.71875,2 l -1.71875,-0.171875 q 0.17188,-1.921875 1.32813,-2.921875 1.15625,-1.015625 3.09375,-1.015625 1.95312,0 3.09375,1.09375 1.14062,1.078125 1.14062,2.6875 0,0.812496 -0.34375,1.609371 -0.32812,0.78125 -1.10937,1.65625 -0.76563,0.859375 -2.5625,2.390625 -1.5,1.265625 -1.9375,1.71875 -0.42188,0.4375 -0.70313,0.890625 l 6.67188,0 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path77" d="m 38.102299,262.58801 149.417311,0 0,35.33856 -149.417311,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path79" d="m 108.34605,287.17731 0,-13.59375 1.79687,0 0,11.98437 6.70313,0 0,1.60938 -8.5,0 z m 18.54759,-1.60938 0,1.60938 -8.98437,0 q -0.0156,-0.60938 0.1875,-1.15625 0.34375,-0.92188 1.09375,-1.8125 0.76562,-0.89063 2.1875,-2.0625 2.21875,-1.8125 3,-2.875 0.78125,-1.0625 0.78125,-2.01563 0,-0.98437 -0.71875,-1.67187 -0.70313,-0.6875 -1.84375,-0.6875 -1.20313,0 -1.9375,0.73437 -0.71875,0.71875 -0.71875,2 l -1.71875,-0.17187 q 0.17187,-1.92188 1.32812,-2.92188 1.15625,-1.01562 3.09375,-1.01562 1.95313,0 3.09375,1.09375 1.14063,1.07812 1.14063,2.6875 0,0.8125 -0.34375,1.60937 -0.32813,0.78125 -1.10938,1.65625 -0.76562,0.85938 -2.5625,2.39063 -1.5,1.26562 -1.9375,1.71875 -0.42187,0.4375 -0.70312,0.89062 l 6.67187,0 z m 6.62152,-3.3125 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.68822,4.92188 0,-8.54688 -1.48438,0 0,-1.3125 1.48438,0 0,-1.04687 q 0,-0.98438 0.17187,-1.46875 0.23438,-0.65625 0.84375,-1.04688 0.60938,-0.40625 1.70313,-0.40625 0.70312,0 1.5625,0.15625 l -0.25,1.46875 q -0.51563,-0.0937 -0.98438,-0.0937 -0.76562,0 -1.07812,0.32813 -0.3125,0.3125 -0.3125,1.20312 l 0,0.90625 1.92187,0 0,1.3125 -1.92187,0 0,8.54688 -1.65625,0 z m 5.1833,0 0,-8.54688 -1.48437,0 0,-1.3125 1.48437,0 0,-1.04687 q 0,-0.98438 0.17188,-1.46875 0.23437,-0.65625 0.84375,-1.04688 0.60937,-0.40625 1.70312,-0.40625 0.70313,0 1.5625,0.15625 l -0.25,1.46875 q -0.51562,-0.0937 -0.98437,-0.0937 -0.76563,0 -1.07813,0.32813 -0.3125,0.3125 -0.3125,1.20312 l 0,0.90625 1.92188,0 0,1.3125 -1.92188,0 0,8.54688 -1.65625,0 z m 4.10518,-2.9375 1.65625,-0.26563 q 0.14063,1 0.76563,1.53125 0.64062,0.51563 1.78125,0.51563 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89063 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60938 -0.35938,-1.32813 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48437 0.67188,-0.20313 1.4375,-0.20313 1.17188,0 2.04688,0.34375 0.875,0.32813 1.28125,0.90625 0.42187,0.5625 0.57812,1.51563 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39063 -0.48438,0.375 -0.48438,0.875 0,0.32812 0.20313,0.59375 0.20312,0.26562 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76562 0.70313,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48437,1.57813 -0.48438,0.73437 -1.40625,1.14062 -0.92188,0.39063 -2.07813,0.39063 -1.92187,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 16.75,-0.23438 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 12.76634,4.375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 l 0,-5.65625 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path81" d="m 38.102299,303.88791 149.417311,0 0,35.33859 -149.417311,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path83" d="m 108.34605,328.4772 0,-13.59375 1.79687,0 0,11.98438 6.70313,0 0,1.60937 -8.5,0 z m 9.78197,-3.59375 1.67187,-0.21875 q 0.28125,1.42188 0.96875,2.04688 0.70313,0.625 1.6875,0.625 1.1875,0 2,-0.8125 0.8125,-0.82813 0.8125,-2.03125 0,-1.14063 -0.76562,-1.89063 -0.75,-0.75 -1.90625,-0.75 -0.46875,0 -1.17188,0.1875 l 0.1875,-1.46875 q 0.15625,0.0156 0.26563,0.0156 1.0625,0 1.90625,-0.54688 0.85937,-0.5625 0.85937,-1.71875 0,-0.92187 -0.625,-1.51562 -0.60937,-0.60938 -1.59375,-0.60938 -0.96875,0 -1.625,0.60938 -0.64062,0.60937 -0.82812,1.84375 l -1.67188,-0.29688 q 0.29688,-1.6875 1.375,-2.60937 1.09375,-0.92188 2.71875,-0.92188 1.10938,0 2.04688,0.48438 0.9375,0.46875 1.42187,1.29687 0.5,0.82813 0.5,1.75 0,0.89063 -0.46875,1.60938 -0.46875,0.71875 -1.40625,1.15625 1.21875,0.26562 1.875,1.15625 0.67188,0.875 0.67188,2.1875 0,1.78125 -1.29688,3.01562 -1.29687,1.23438 -3.28125,1.23438 -1.79687,0 -2.98437,-1.0625 -1.17188,-1.0625 -1.34375,-2.76563 z m 15.38714,-1.32812 q 0,-2.73438 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32812 1.29688,3.67187 0,1.90625 -0.57813,3 -0.5625,1.07813 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32812 -1.28125,-1.32813 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89062 0.82813,2.82812 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95312 0.82813,-2.89062 0,-1.82813 -0.82813,-2.76563 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82813 z m 9.68822,4.92187 0,-8.54687 -1.48438,0 0,-1.3125 1.48438,0 0,-1.04688 q 0,-0.98437 0.17187,-1.46875 0.23438,-0.65625 0.84375,-1.04687 0.60938,-0.40625 1.70313,-0.40625 0.70312,0 1.5625,0.15625 l -0.25,1.46875 q -0.51563,-0.0937 -0.98438,-0.0937 -0.76562,0 -1.07812,0.32812 -0.3125,0.3125 -0.3125,1.20313 l 0,0.90625 1.92187,0 0,1.3125 -1.92187,0 0,8.54687 -1.65625,0 z m 5.1833,0 0,-8.54687 -1.48437,0 0,-1.3125 1.48437,0 0,-1.04688 q 0,-0.98437 0.17188,-1.46875 0.23437,-0.65625 0.84375,-1.04687 0.60937,-0.40625 1.70312,-0.40625 0.70313,0 1.5625,0.15625 l -0.25,1.46875 q -0.51562,-0.0937 -0.98437,-0.0937 -0.76563,0 -1.07813,0.32812 -0.3125,0.3125 -0.3125,1.20313 l 0,0.90625 1.92188,0 0,1.3125 -1.92188,0 0,8.54687 -1.65625,0 z m 4.10518,-2.9375 1.65625,-0.26562 q 0.14063,1 0.76563,1.53125 0.64062,0.51562 1.78125,0.51562 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89062 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79688 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60937 -0.35938,-1.32812 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48438 0.67188,-0.20312 1.4375,-0.20312 1.17188,0 2.04688,0.34375 0.875,0.32812 1.28125,0.90625 0.42187,0.5625 0.57812,1.51562 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17187 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39062 -0.48438,0.375 -0.48438,0.875 0,0.32813 0.20313,0.59375 0.20312,0.26563 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76563 0.70313,0.29687 1.09375,0.875 0.40625,0.57812 0.40625,1.4375 0,0.82812 -0.48437,1.57812 -0.48438,0.73438 -1.40625,1.14063 -0.92188,0.39062 -2.07813,0.39062 -1.92187,0 -2.9375,-0.79687 -1,-0.79688 -1.28125,-2.35938 z m 16.75,-0.23437 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82812 -2.8125,0.82812 -2.15625,0 -3.42188,-1.32812 -1.26562,-1.32813 -1.26562,-3.73438 0,-2.48437 1.26562,-3.85937 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79687 0,0.14063 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48438 0.82813,0.85937 2.0625,0.85937 0.90625,0 1.54688,-0.46875 0.65625,-0.48437 1.04687,-1.54687 z m -5.48437,-2.70313 5.5,0 q -0.10938,-1.23437 -0.625,-1.85937 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76562 -0.85937,2.04687 z m 12.76634,4.375 0.23437,1.48438 q -0.70312,0.14062 -1.26562,0.14062 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29687 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98437 l 0,-5.65625 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92187 0.0937,0.20313 0.29688,0.32813 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path85" d="m 38.102299,345.18784 149.417311,0 0,35.33856 -149.417311,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path87" d="m 108.34605,369.77713 0,-13.59375 1.79687,0 0,11.98437 6.70313,0 0,1.60938 -8.5,0 z m 15.12572,0 0,-3.25 -5.90625,0 0,-1.53125 6.21875,-8.8125 1.35937,0 0,8.8125 1.84375,0 0,1.53125 -1.84375,0 0,3.25 -1.67187,0 z m 0,-4.78125 0,-6.14063 -4.25,6.14063 4.25,0 z m 10.04339,-0.14063 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.68822,4.92188 0,-8.54688 -1.48438,0 0,-1.3125 1.48438,0 0,-1.04687 q 0,-0.98438 0.17187,-1.46875 0.23438,-0.65625 0.84375,-1.04688 0.60938,-0.40625 1.70313,-0.40625 0.70312,0 1.5625,0.15625 l -0.25,1.46875 q -0.51563,-0.0937 -0.98438,-0.0937 -0.76562,0 -1.07812,0.32813 -0.3125,0.3125 -0.3125,1.20312 l 0,0.90625 1.92187,0 0,1.3125 -1.92187,0 0,8.54688 -1.65625,0 z m 5.1833,0 0,-8.54688 -1.48437,0 0,-1.3125 1.48437,0 0,-1.04687 q 0,-0.98438 0.17188,-1.46875 0.23437,-0.65625 0.84375,-1.04688 0.60937,-0.40625 1.70312,-0.40625 0.70313,0 1.5625,0.15625 l -0.25,1.46875 q -0.51562,-0.0937 -0.98437,-0.0937 -0.76563,0 -1.07813,0.32813 -0.3125,0.3125 -0.3125,1.20312 l 0,0.90625 1.92188,0 0,1.3125 -1.92188,0 0,8.54688 -1.65625,0 z m 4.10518,-2.9375 1.65625,-0.26563 q 0.14063,1 0.76563,1.53125 0.64062,0.51563 1.78125,0.51563 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89063 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60938 -0.35938,-1.32813 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48437 0.67188,-0.20313 1.4375,-0.20313 1.17188,0 2.04688,0.34375 0.875,0.32813 1.28125,0.90625 0.42187,0.5625 0.57812,1.51563 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39063 -0.48438,0.375 -0.48438,0.875 0,0.32812 0.20313,0.59375 0.20312,0.26562 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76562 0.70313,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48437,1.57813 -0.48438,0.73437 -1.40625,1.14062 -0.92188,0.39063 -2.07813,0.39063 -1.92187,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 16.75,-0.23438 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 12.76634,4.375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 l 0,-5.65625 -1.23438,0 0,-1.3125 1.23438,0 0,-2.4375 1.65625,-1 0,3.4375 1.6875,0 0,1.3125 -1.6875,0 0,5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path89" d="m 177.49119,280.27246 25.85826,0"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path91" d="m 177.49119,280.27246 25.85826,0"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path93" d="m 204.79416,282.25464 0,-62.92914"/>
- <path style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path95" d="m 204.79416,282.25464 0,-50.92914"/>
- <path style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt" inkscape:connector-curvature="0" id="path97" d="m 208.09762,231.3255 -3.30347,-9.07619 -3.30346,9.07619 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path99" d="m 178.92817,321.58788 47.40157,0"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path101" d="m 178.92817,321.58788 47.40157,0"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path103" d="m 226.34911,321.58788 1.41733,-102.26773"/>
- <path style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path105" d="m 226.34914,321.58788 1.25101,-90.26886"/>
- <path style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt" inkscape:connector-curvature="0" id="path107" d="m 230.90331,231.36481 -3.17737,-9.12111 -3.42892,9.02954 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path109" d="m 178.92817,360.93658 71.84251,0"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path111" d="m 178.92817,360.93658 71.84251,0"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path113" d="m 250.7781,360.92108 0,-141.5748"/>
- <path style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path115" d="m 250.77813,360.92111 0,-129.57481"/>
- <path style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt" inkscape:connector-curvature="0" id="path117" d="m 254.0816,231.3463 -3.30347,-9.0762 -3.30346,9.0762 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path119" d="M 345.5974,36.406467 210.51079,117.03637"/>
- <path style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path121" d="M 345.5974,36.406462 220.8149,110.88612"/>
- <path style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt" inkscape:connector-curvature="0" id="path123" d="m 219.12179,108.04952 -6.1004,7.48835 9.4866,-1.81515 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path125" d="m 401.66299,225.2215 0,0 c 0,9.75848 -1.31842,17.66928 -2.94476,17.66928 l -61.08686,0 c -1.62634,0 -2.94476,7.91083 -2.94476,17.66931 l 0,0 c 0,-9.75848 -1.31842,-17.66931 -2.94476,-17.66931 l -61.08686,0 c -1.62634,0 -2.94476,-7.9108 -2.94476,-17.66928 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path127" d="m 401.66299,225.2215 0,0 c 0,9.75848 -1.31842,17.66928 -2.94476,17.66928 l -61.08686,0 c -1.62634,0 -2.94476,7.91083 -2.94476,17.66931 l 0,0 c 0,-9.75848 -1.31842,-17.66931 -2.94476,-17.66931 l -61.08686,0 c -1.62634,0 -2.94476,-7.9108 -2.94476,-17.66928"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path129" d="m 401.66299,225.2215 0,0 c 0,9.75848 -1.31842,17.66928 -2.94476,17.66928 l -61.08686,0 c -1.62634,0 -2.94476,7.91083 -2.94476,17.66931 l 0,0 c 0,-9.75848 -1.31842,-17.66931 -2.94476,-17.66931 l -61.08686,0 c -1.62634,0 -2.94476,-7.9108 -2.94476,-17.66928"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path131" d="m 282.56686,262.58801 109.19687,0 0,35.33856 -109.19687,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path133" d="m 310.25552,284.23981 1.65625,-0.26563 q 0.14063,1 0.76563,1.53125 0.64062,0.51563 1.78125,0.51563 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89063 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60938 -0.35938,-1.32813 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48437 0.67188,-0.20313 1.4375,-0.20313 1.17188,0 2.04688,0.34375 0.875,0.32813 1.28125,0.90625 0.42187,0.5625 0.57812,1.51563 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39063 -0.48438,0.375 -0.48438,0.875 0,0.32812 0.20313,0.59375 0.20312,0.26562 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76562 0.70313,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48437,1.57813 -0.48438,0.73437 -1.40625,1.14062 -0.92188,0.39063 -2.07813,0.39063 -1.92187,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 16.75,-0.23438 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 8.8132,6.6875 1.60937,0.25 q 0.10938,0.75 0.57813,1.09375 0.60937,0.45312 1.6875,0.45312 1.17187,0 1.79687,-0.46875 0.625,-0.45312 0.85938,-1.28125 0.125,-0.51562 0.10937,-2.15625 -1.09375,1.29688 -2.71875,1.29688 -2.03125,0 -3.15625,-1.46875 -1.10937,-1.46875 -1.10937,-3.51563 0,-1.40625 0.51562,-2.59375 0.51563,-1.20312 1.48438,-1.84375 0.96875,-0.65625 2.26562,-0.65625 1.75,0 2.875,1.40625 l 0,-1.1875 1.54688,0 0,8.51563 q 0,2.3125 -0.46875,3.26562 -0.46875,0.96875 -1.48438,1.51563 -1.01562,0.5625 -2.5,0.5625 -1.76562,0 -2.85937,-0.79688 -1.07813,-0.79687 -1.03125,-2.39062 z m 1.375,-5.92188 q 0,1.95313 0.76562,2.84375 0.78125,0.89063 1.9375,0.89063 1.14063,0 1.92188,-0.89063 0.78125,-0.89062 0.78125,-2.78125 0,-1.8125 -0.8125,-2.71875 -0.79688,-0.92187 -1.92188,-0.92187 -1.10937,0 -1.89062,0.90625 -0.78125,0.89062 -0.78125,2.67187 z m 9.26635,5.10938 0,-13.59375 1.67188,0 0,13.59375 -1.67188,0 z m 10.92606,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 l -7.34375,0 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 5.5,0 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.1101,5.875 0,-9.85938 1.5,0 0,1.40625 q 1.09375,-1.625 3.14063,-1.625 0.89062,0 1.64062,0.32813 0.75,0.3125 1.10938,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 l 0,6.0625 -1.67188,0 0,-6 q 0,-1.01563 -0.20312,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17188,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76562,0.67188 -0.76562,2.57813 l 0,5.375 -1.67188,0 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path135" d="m 5.5706286,286.64816 189.6377914,0 0,20.8819 -189.6377914,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path137" d="m 22.508129,299.01285 q 0,1.40625 -1.015625,2.40625 -1,0.98437 -2.421875,0.98437 -1.4375,0 -2.4375,-1 -1,-1 -1,-2.39062 0,-1.40625 1,-2.40625 1,-1 2.4375,-1 1.421875,0 2.421875,1 1.015625,0.98437 1.015625,2.40625 z m -0.625,0 q 0,-1.15625 -0.828125,-1.96875 -0.8125,-0.8125 -1.984375,-0.8125 -1.171875,0 -2,0.8125 -0.828125,0.8125 -0.828125,1.96875 0,1.14062 0.828125,1.96875 0.828125,0.8125 2,0.8125 1.171875,0 1.984375,-0.8125 0.828125,-0.8125 0.828125,-1.96875 z m 9.20459,-6.03125 0,8.57812 0.8125,0 q 0.23437,0 0.32812,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32812,0.0781 l -1.4375,0 0,-1.21875 q -1.0625,1.45312 -2.71875,1.45312 -0.82813,0 -1.59375,-0.4375 -0.765625,-0.4375 -1.21875,-1.25 -0.4375,-0.82812 -0.4375,-1.70312 0,-0.875 0.4375,-1.6875 0.453125,-0.82813 1.21875,-1.26563 0.76562,-0.45312 1.60937,-0.45312 1.60938,0 2.70313,1.46875 l 0,-3.46875 -0.8125,0 q -0.23438,0 -0.32813,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.32813,-0.0937 l 1.4375,0 z m -0.625,6.03125 q 0,-1.17188 -0.79688,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.89062,0.8125 -0.796875,0.79687 -0.796875,1.96875 0,1.15625 0.796875,1.96875 0.79687,0.8125 1.89062,0.8125 1.09375,0 1.875,-0.8125 0.79688,-0.8125 0.79688,-1.96875 z m 4.29834,-3.1875 0,1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 l 0,3.71875 1.48437,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.9375,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 10.07959,7.46875 -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 0,1.125 q 0.54687,-0.67188 1.17188,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67188,-1.34375 l 0,3.71875 1.48438,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.93751,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32813,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90626,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78126,0.75 1.90626,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 7.75147,3.35938 0,-0.89063 q -1.34375,1.125 -2.85938,1.125 -1.10937,0 -1.73437,-0.54687 -0.60938,-0.5625 -0.60938,-1.375 0,-0.89063 0.8125,-1.5625 0.82813,-0.67188 2.39063,-0.67188 0.42187,0 0.92187,0.0625 0.5,0.0469 1.07813,0.17188 l 0,-1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01563,0.42187 -0.23437,0.0625 -0.29687,0.0625 -0.10938,0 -0.20313,-0.0781 -0.0781,-0.0937 -0.0781,-0.21875 0,-0.125 0.0781,-0.20313 0.0937,-0.10937 0.82813,-0.29687 1.14062,-0.3125 1.71875,-0.3125 1.17187,0 1.8125,0.57812 0.65625,0.57813 0.65625,1.29688 l 0,4.07812 0.82812,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -1.45312,0 z m 0,-3.0625 q -0.42188,-0.125 -0.90625,-0.17188 -0.48438,-0.0625 -1.01563,-0.0625 -1.34375,0 -2.10937,0.57813 -0.5625,0.42187 -0.5625,1.03125 0,0.54687 0.4375,0.9375 0.4375,0.375 1.26562,0.375 0.79688,0 1.48438,-0.3125 0.6875,-0.32813 1.40625,-1.01563 l 0,-1.35937 z m 9.79834,-2.65625 0,-0.20313 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.32812 l 0,1.39063 q 0,0.21875 -0.0937,0.32812 -0.0781,0.0937 -0.21875,0.0937 -0.125,0 -0.21875,-0.0781 -0.0781,-0.0937 -0.0937,-0.29688 -0.0312,-0.51562 -0.67188,-0.98437 -0.64062,-0.46875 -1.73437,-0.46875 -1.375,0 -2.07813,0.85937 -0.70312,0.85938 -0.70312,1.95313 0,1.20312 0.78125,1.98437 0.78125,0.76563 2.03125,0.76563 0.70312,0 1.45312,-0.26563 0.75,-0.26562 1.34375,-0.84375 0.15625,-0.15625 0.26563,-0.15625 0.125,0 0.20312,0.0937 0.0937,0.0781 0.0937,0.20313 0,0.3125 -0.73437,0.79687 -1.20313,0.78125 -2.65625,0.78125 -1.48438,0 -2.45313,-0.9375 -0.95312,-0.95312 -0.95312,-2.40625 0,-1.48437 0.96875,-2.46875 0.98437,-0.98437 2.46875,-0.98437 1.42187,0 2.375,0.84375 z m 5.18896,2.98437 0,2.73438 -1.4375,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.95312 -0.82813,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 l 1.4375,0 0,5.67187 2.60938,-2.20312 -0.3125,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.96875,0 q 0.23437,0 0.32812,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32812,0.0781 l -0.70313,0 -2.40625,2 3.04688,3.10937 0.70312,0 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 l -1.98437,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0781 0.32813,-0.0781 l 0.42187,0 -2.64062,-2.71875 -0.70313,0.59375 z m 13.57959,-0.29687 -6.26562,0 q 0.15625,1.20312 1,1.9375 0.84375,0.71875 2.07812,0.71875 0.6875,0 1.4375,-0.21875 0.75,-0.23438 1.23438,-0.60938 0.14062,-0.10937 0.23437,-0.10937 0.125,0 0.20313,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10938,0.23437 -0.35937,0.375 -1.26562,0.6875 -0.89063,0.3125 -1.82813,0.3125 -1.59375,0 -2.65625,-1.03125 -1.04687,-1.03125 -1.04687,-2.5 0,-1.34375 0.98437,-2.29687 1,-0.96875 2.46875,-0.96875 1.5,0 2.46875,0.98437 0.98438,0.98438 0.96875,2.54688 z m -0.625,-0.60938 q -0.17187,-1.03125 -0.95312,-1.65625 -0.78125,-0.64062 -1.85938,-0.64062 -1.07812,0 -1.85937,0.625 -0.76563,0.625 -0.96875,1.67187 l 5.64062,0 z m 5.03272,-2.70312 3.343751,0 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -3.343751,0 0,4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.265631,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.078121,0 -1.718751,-0.5 -0.64062,-0.5 -0.64062,-1.35937 l 0,-4.09375 -1.125,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 l 1.125,0 0,-1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,1.8125 z m 14.360841,10.45312 -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 5.22021,-13.29687 0,8.57812 2.42188,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -5.45313,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 2.42188,0 0,-7.95312 -1.78125,0 q -0.21875,0 -0.32813,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.10938,-0.0937 0.32813,-0.0937 l 2.39062,0 z m 6.04834,8.57812 4.71875,0 0,-0.25 q 0,-0.21875 0.0781,-0.3125 0.0937,-0.0937 0.23437,-0.0937 0.14063,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,0.85938 -5.95312,0 0,-0.90625 q 1.875,-1.6875 3.65625,-3.4375 0.82812,-0.8125 1.125,-1.1875 0.3125,-0.375 0.42187,-0.65625 0.10938,-0.29688 0.10938,-0.59375 0,-0.79688 -0.64063,-1.40625 -0.625,-0.60938 -1.53125,-0.60938 -0.79687,0 -1.42187,0.46875 -0.625,0.46875 -0.8125,1.14063 -0.0469,0.17187 -0.10938,0.23437 -0.0781,0.0625 -0.20312,0.0625 -0.125,0 -0.21875,-0.0781 -0.0781,-0.0781 -0.0781,-0.20313 0,-0.34375 0.39063,-0.9375 0.39062,-0.60937 1.0625,-0.95312 0.67187,-0.34375 1.39062,-0.34375 1.14063,0 1.96875,0.79687 0.82813,0.79688 0.82813,1.8125 0,0.42188 -0.14063,0.78125 -0.125,0.34375 -0.46875,0.76563 -0.32812,0.42187 -1.1875,1.26562 -2.17187,2.14063 -3.53125,3.32813 l 0,0.0469 z m 15.73584,4.71875 -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 0,1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 l 0,3.71875 1.48437,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.9375,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 4.72022,-2.98437 3.34375,0 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -3.34375,0 0,4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.26563,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.35937 l 0,-4.09375 -1.125,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 l 1.125,0 0,-1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,1.8125 z m 9.53271,0 0,1.54687 q 1.20313,-1.07812 1.79688,-1.39062 0.59375,-0.3125 1.10937,-0.3125 0.54688,0 1.01563,0.375 0.46875,0.375 0.46875,0.5625 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.21875,0.0781 -0.0781,0 -0.14063,-0.0156 -0.0469,-0.0312 -0.1875,-0.17187 -0.25,-0.25 -0.4375,-0.34375 -0.1875,-0.0937 -0.375,-0.0937 -0.40625,0 -0.98437,0.32812 -0.5625,0.3125 -1.95313,1.5625 l 0,3.375 2.71875,0 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 l -4.82812,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.21875 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 l 1.5,0 0,-5.125 -1.14063,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0781,-0.21875 0.0937,-0.0937 0.32812,-0.0937 l 1.75,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path139" d="m 171.11117,305.32535 q -1.09375,-1.375 -1.85938,-3.21875 -0.75,-1.84375 -0.75,-3.82813 0,-1.73437 0.5625,-3.34375 0.65625,-1.84375 2.04688,-3.6875 l 0.9375,0 q -0.89063,1.53125 -1.17188,2.17188 -0.45312,1.01562 -0.70312,2.10937 -0.3125,1.375 -0.3125,2.76563 0,3.51562 2.1875,7.03125 l -0.9375,0 z m 3.2244,0 -0.95313,0 q 2.1875,-3.51563 2.1875,-7.03125 0,-1.39063 -0.3125,-2.73438 -0.25,-1.10937 -0.6875,-2.10937 -0.29687,-0.65625 -1.1875,-2.20313 l 0.95313,0 q 1.375,1.84375 2.03125,3.6875 0.5625,1.60938 0.5625,3.34375 0,1.98438 -0.76563,3.82813 -0.75,1.84375 -1.82812,3.21875 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path141" d="m 5.5706286,330.82141 189.6377914,0 0,20.88187 -189.6377914,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path143" d="m 22.508129,343.1861 q 0,1.40625 -1.015625,2.40625 -1,0.98437 -2.421875,0.98437 -1.4375,0 -2.4375,-1 -1,-1 -1,-2.39062 0,-1.40625 1,-2.40625 1,-1 2.4375,-1 1.421875,0 2.421875,1 1.015625,0.98437 1.015625,2.40625 z m -0.625,0 q 0,-1.15625 -0.828125,-1.96875 -0.8125,-0.8125 -1.984375,-0.8125 -1.171875,0 -2,0.8125 -0.828125,0.8125 -0.828125,1.96875 0,1.14062 0.828125,1.96875 0.828125,0.8125 2,0.8125 1.171875,0 1.984375,-0.8125 0.828125,-0.8125 0.828125,-1.96875 z m 9.20459,-6.03125 0,8.57812 0.8125,0 q 0.23437,0 0.32812,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32812,0.0781 l -1.4375,0 0,-1.21875 q -1.0625,1.45312 -2.71875,1.45312 -0.82813,0 -1.59375,-0.4375 -0.765625,-0.4375 -1.21875,-1.25 -0.4375,-0.82812 -0.4375,-1.70312 0,-0.875 0.4375,-1.6875 0.453125,-0.82813 1.21875,-1.26563 0.76562,-0.45312 1.60937,-0.45312 1.60938,0 2.70313,1.46875 l 0,-3.46875 -0.8125,0 q -0.23438,0 -0.32813,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.32813,-0.0937 l 1.4375,0 z m -0.625,6.03125 q 0,-1.17188 -0.79688,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.89062,0.8125 -0.796875,0.79687 -0.796875,1.96875 0,1.15625 0.796875,1.96875 0.79687,0.8125 1.89062,0.8125 1.09375,0 1.875,-0.8125 0.79688,-0.8125 0.79688,-1.96875 z m 4.29834,-3.1875 0,1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 l 0,3.71875 1.48437,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.9375,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 10.07959,7.46875 -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 0,1.125 q 0.54687,-0.67188 1.17188,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67188,-1.34375 l 0,3.71875 1.48438,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.93751,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32813,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90626,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78126,0.75 1.90626,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 7.75147,3.35938 0,-0.89063 q -1.34375,1.125 -2.85938,1.125 -1.10937,0 -1.73437,-0.54687 -0.60938,-0.5625 -0.60938,-1.375 0,-0.89063 0.8125,-1.5625 0.82813,-0.67188 2.39063,-0.67188 0.42187,0 0.92187,0.0625 0.5,0.0469 1.07813,0.17188 l 0,-1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01563,0.42187 -0.23437,0.0625 -0.29687,0.0625 -0.10938,0 -0.20313,-0.0781 -0.0781,-0.0937 -0.0781,-0.21875 0,-0.125 0.0781,-0.20313 0.0937,-0.10937 0.82813,-0.29687 1.14062,-0.3125 1.71875,-0.3125 1.17187,0 1.8125,0.57812 0.65625,0.57813 0.65625,1.29688 l 0,4.07812 0.82812,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -1.45312,0 z m 0,-3.0625 q -0.42188,-0.125 -0.90625,-0.17188 -0.48438,-0.0625 -1.01563,-0.0625 -1.34375,0 -2.10937,0.57813 -0.5625,0.42187 -0.5625,1.03125 0,0.54687 0.4375,0.9375 0.4375,0.375 1.26562,0.375 0.79688,0 1.48438,-0.3125 0.6875,-0.32813 1.40625,-1.01563 l 0,-1.35937 z m 9.79834,-2.65625 0,-0.20313 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.32812 l 0,1.39063 q 0,0.21875 -0.0937,0.32812 -0.0781,0.0937 -0.21875,0.0937 -0.125,0 -0.21875,-0.0781 -0.0781,-0.0937 -0.0937,-0.29688 -0.0312,-0.51562 -0.67188,-0.98437 -0.64062,-0.46875 -1.73437,-0.46875 -1.375,0 -2.07813,0.85937 -0.70312,0.85938 -0.70312,1.95313 0,1.20312 0.78125,1.98437 0.78125,0.76563 2.03125,0.76563 0.70312,0 1.45312,-0.26563 0.75,-0.26562 1.34375,-0.84375 0.15625,-0.15625 0.26563,-0.15625 0.125,0 0.20312,0.0937 0.0937,0.0781 0.0937,0.20313 0,0.3125 -0.73437,0.79687 -1.20313,0.78125 -2.65625,0.78125 -1.48438,0 -2.45313,-0.9375 -0.95312,-0.95312 -0.95312,-2.40625 0,-1.48437 0.96875,-2.46875 0.98437,-0.98437 2.46875,-0.98437 1.42187,0 2.375,0.84375 z m 5.18896,2.98437 0,2.73438 -1.4375,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.95312 -0.82813,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 l 1.4375,0 0,5.67187 2.60938,-2.20312 -0.3125,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.96875,0 q 0.23437,0 0.32812,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32812,0.0781 l -0.70313,0 -2.40625,2 3.04688,3.10937 0.70312,0 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 l -1.98437,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0781 0.32813,-0.0781 l 0.42187,0 -2.64062,-2.71875 -0.70313,0.59375 z m 13.57959,-0.29687 -6.26562,0 q 0.15625,1.20312 1,1.9375 0.84375,0.71875 2.07812,0.71875 0.6875,0 1.4375,-0.21875 0.75,-0.23438 1.23438,-0.60938 0.14062,-0.10937 0.23437,-0.10937 0.125,0 0.20313,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10938,0.23437 -0.35937,0.375 -1.26562,0.6875 -0.89063,0.3125 -1.82813,0.3125 -1.59375,0 -2.65625,-1.03125 -1.04687,-1.03125 -1.04687,-2.5 0,-1.34375 0.98437,-2.29687 1,-0.96875 2.46875,-0.96875 1.5,0 2.46875,0.98437 0.98438,0.98438 0.96875,2.54688 z m -0.625,-0.60938 q -0.17187,-1.03125 -0.95312,-1.65625 -0.78125,-0.64062 -1.85938,-0.64062 -1.07812,0 -1.85937,0.625 -0.76563,0.625 -0.96875,1.67187 l 5.64062,0 z m 5.03272,-2.70312 3.343751,0 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -3.343751,0 0,4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.265631,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.078121,0 -1.718751,-0.5 -0.64062,-0.5 -0.64062,-1.35937 l 0,-4.09375 -1.125,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 l 1.125,0 0,-1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,1.8125 z m 14.360841,10.45312 -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 5.22021,-13.29687 0,8.57812 2.42188,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -5.45313,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 2.42188,0 0,-7.95312 -1.78125,0 q -0.21875,0 -0.32813,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.10938,-0.0937 0.32813,-0.0937 l 2.39062,0 z m 6.04834,8.57812 4.71875,0 0,-0.25 q 0,-0.21875 0.0781,-0.3125 0.0937,-0.0937 0.23437,-0.0937 0.14063,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,0.85938 -5.95312,0 0,-0.90625 q 1.875,-1.6875 3.65625,-3.4375 0.82812,-0.8125 1.125,-1.1875 0.3125,-0.375 0.42187,-0.65625 0.10938,-0.29688 0.10938,-0.59375 0,-0.79688 -0.64063,-1.40625 -0.625,-0.60938 -1.53125,-0.60938 -0.79687,0 -1.42187,0.46875 -0.625,0.46875 -0.8125,1.14063 -0.0469,0.17187 -0.10938,0.23437 -0.0781,0.0625 -0.20312,0.0625 -0.125,0 -0.21875,-0.0781 -0.0781,-0.0781 -0.0781,-0.20313 0,-0.34375 0.39063,-0.9375 0.39062,-0.60937 1.0625,-0.95312 0.67187,-0.34375 1.39062,-0.34375 1.14063,0 1.96875,0.79687 0.82813,0.79688 0.82813,1.8125 0,0.42188 -0.14063,0.78125 -0.125,0.34375 -0.46875,0.76563 -0.32812,0.42187 -1.1875,1.26562 -2.17187,2.14063 -3.53125,3.32813 l 0,0.0469 z m 15.73584,4.71875 -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 0,1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 l 0,3.71875 1.48437,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.9375,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 4.72022,-2.98437 3.34375,0 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -3.34375,0 0,4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.26563,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.35937 l 0,-4.09375 -1.125,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 l 1.125,0 0,-1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,1.8125 z m 9.53271,0 0,1.54687 q 1.20313,-1.07812 1.79688,-1.39062 0.59375,-0.3125 1.10937,-0.3125 0.54688,0 1.01563,0.375 0.46875,0.375 0.46875,0.5625 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.21875,0.0781 -0.0781,0 -0.14063,-0.0156 -0.0469,-0.0312 -0.1875,-0.17187 -0.25,-0.25 -0.4375,-0.34375 -0.1875,-0.0937 -0.375,-0.0937 -0.40625,0 -0.98437,0.32812 -0.5625,0.3125 -1.95313,1.5625 l 0,3.375 2.71875,0 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 l -4.82812,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.21875 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 l 1.5,0 0,-5.125 -1.14063,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0781,-0.21875 0.0937,-0.0937 0.32812,-0.0937 l 1.75,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path145" d="m 171.11117,349.4986 q -1.09375,-1.375 -1.85938,-3.21875 -0.75,-1.84375 -0.75,-3.82813 0,-1.73437 0.5625,-3.34375 0.65625,-1.84375 2.04688,-3.6875 l 0.9375,0 q -0.89063,1.53125 -1.17188,2.17188 -0.45312,1.01562 -0.70312,2.10937 -0.3125,1.375 -0.3125,2.76563 0,3.51562 2.1875,7.03125 l -0.9375,0 z m 3.2244,0 -0.95313,0 q 2.1875,-3.51563 2.1875,-7.03125 0,-1.39063 -0.3125,-2.73438 -0.25,-1.10937 -0.6875,-2.10937 -0.29687,-0.65625 -1.1875,-2.20313 l 0.95313,0 q 1.375,1.84375 2.03125,3.6875 0.5625,1.60938 0.5625,3.34375 0,1.98438 -0.76563,3.82813 -0.75,1.84375 -1.82812,3.21875 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path147" d="m 5.5706286,372.4697 189.6377914,0 0,20.8819 -189.6377914,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path149" d="m 22.508129,384.83438 q 0,1.40625 -1.015625,2.40625 -1,0.98437 -2.421875,0.98437 -1.4375,0 -2.4375,-1 -1,-1 -1,-2.39062 0,-1.40625 1,-2.40625 1,-1 2.4375,-1 1.421875,0 2.421875,1 1.015625,0.98437 1.015625,2.40625 z m -0.625,0 q 0,-1.15625 -0.828125,-1.96875 -0.8125,-0.8125 -1.984375,-0.8125 -1.171875,0 -2,0.8125 -0.828125,0.8125 -0.828125,1.96875 0,1.14062 0.828125,1.96875 0.828125,0.8125 2,0.8125 1.171875,0 1.984375,-0.8125 0.828125,-0.8125 0.828125,-1.96875 z m 9.20459,-6.03125 0,8.57812 0.8125,0 q 0.23437,0 0.32812,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32812,0.0781 l -1.4375,0 0,-1.21875 q -1.0625,1.45312 -2.71875,1.45312 -0.82813,0 -1.59375,-0.4375 -0.765625,-0.4375 -1.21875,-1.25 -0.4375,-0.82812 -0.4375,-1.70312 0,-0.875 0.4375,-1.6875 0.453125,-0.82813 1.21875,-1.26563 0.76562,-0.45312 1.60937,-0.45312 1.60938,0 2.70313,1.46875 l 0,-3.46875 -0.8125,0 q -0.23438,0 -0.32813,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.32813,-0.0937 l 1.4375,0 z m -0.625,6.03125 q 0,-1.17188 -0.79688,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.89062,0.8125 -0.796875,0.79687 -0.796875,1.96875 0,1.15625 0.796875,1.96875 0.79687,0.8125 1.89062,0.8125 1.09375,0 1.875,-0.8125 0.79688,-0.8125 0.79688,-1.96875 z m 4.29834,-3.1875 0,1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 l 0,3.71875 1.48437,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.9375,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 10.07959,7.46875 -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 0,1.125 q 0.54687,-0.67188 1.17188,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67188,-1.34375 l 0,3.71875 1.48438,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.93751,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32813,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90626,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78126,0.75 1.90626,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 7.75147,3.35938 0,-0.89063 q -1.34375,1.125 -2.85938,1.125 -1.10937,0 -1.73437,-0.54687 -0.60938,-0.5625 -0.60938,-1.375 0,-0.89063 0.8125,-1.5625 0.82813,-0.67188 2.39063,-0.67188 0.42187,0 0.92187,0.0625 0.5,0.0469 1.07813,0.17188 l 0,-1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01563,0.42187 -0.23437,0.0625 -0.29687,0.0625 -0.10938,0 -0.20313,-0.0781 -0.0781,-0.0937 -0.0781,-0.21875 0,-0.125 0.0781,-0.20313 0.0937,-0.10937 0.82813,-0.29687 1.14062,-0.3125 1.71875,-0.3125 1.17187,0 1.8125,0.57812 0.65625,0.57813 0.65625,1.29688 l 0,4.07812 0.82812,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -1.45312,0 z m 0,-3.0625 q -0.42188,-0.125 -0.90625,-0.17188 -0.48438,-0.0625 -1.01563,-0.0625 -1.34375,0 -2.10937,0.57813 -0.5625,0.42187 -0.5625,1.03125 0,0.54687 0.4375,0.9375 0.4375,0.375 1.26562,0.375 0.79688,0 1.48438,-0.3125 0.6875,-0.32813 1.40625,-1.01563 l 0,-1.35937 z m 9.79834,-2.65625 0,-0.20313 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.32812 l 0,1.39063 q 0,0.21875 -0.0937,0.32812 -0.0781,0.0937 -0.21875,0.0937 -0.125,0 -0.21875,-0.0781 -0.0781,-0.0937 -0.0937,-0.29688 -0.0312,-0.51562 -0.67188,-0.98437 -0.64062,-0.46875 -1.73437,-0.46875 -1.375,0 -2.07813,0.85937 -0.70312,0.85938 -0.70312,1.95313 0,1.20312 0.78125,1.98437 0.78125,0.76563 2.03125,0.76563 0.70312,0 1.45312,-0.26563 0.75,-0.26562 1.34375,-0.84375 0.15625,-0.15625 0.26563,-0.15625 0.125,0 0.20312,0.0937 0.0937,0.0781 0.0937,0.20313 0,0.3125 -0.73437,0.79687 -1.20313,0.78125 -2.65625,0.78125 -1.48438,0 -2.45313,-0.9375 -0.95312,-0.95312 -0.95312,-2.40625 0,-1.48437 0.96875,-2.46875 0.98437,-0.98437 2.46875,-0.98437 1.42187,0 2.375,0.84375 z m 5.18896,2.98437 0,2.73438 -1.4375,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.95312 -0.82813,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 l 1.4375,0 0,5.67187 2.60938,-2.20312 -0.3125,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.96875,0 q 0.23437,0 0.32812,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32812,0.0781 l -0.70313,0 -2.40625,2 3.04688,3.10937 0.70312,0 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 l -1.98437,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0781 0.32813,-0.0781 l 0.42187,0 -2.64062,-2.71875 -0.70313,0.59375 z m 13.57959,-0.29687 -6.26562,0 q 0.15625,1.20312 1,1.9375 0.84375,0.71875 2.07812,0.71875 0.6875,0 1.4375,-0.21875 0.75,-0.23438 1.23438,-0.60938 0.14062,-0.10937 0.23437,-0.10937 0.125,0 0.20313,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10938,0.23437 -0.35937,0.375 -1.26562,0.6875 -0.89063,0.3125 -1.82813,0.3125 -1.59375,0 -2.65625,-1.03125 -1.04687,-1.03125 -1.04687,-2.5 0,-1.34375 0.98437,-2.29687 1,-0.96875 2.46875,-0.96875 1.5,0 2.46875,0.98437 0.98438,0.98438 0.96875,2.54688 z m -0.625,-0.60938 q -0.17187,-1.03125 -0.95312,-1.65625 -0.78125,-0.64062 -1.85938,-0.64062 -1.07812,0 -1.85937,0.625 -0.76563,0.625 -0.96875,1.67187 l 5.64062,0 z m 5.03272,-2.70312 3.343751,0 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -3.343751,0 0,4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.265631,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.078121,0 -1.718751,-0.5 -0.64062,-0.5 -0.64062,-1.35937 l 0,-4.09375 -1.125,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 l 1.125,0 0,-1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,1.8125 z M 113.17904,392.1 l -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 5.22021,-13.29687 0,8.57812 2.42188,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -5.45313,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 2.42188,0 0,-7.95312 -1.78125,0 q -0.21875,0 -0.32813,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.10938,-0.0937 0.32813,-0.0937 l 2.39062,0 z m 6.04834,8.57812 4.71875,0 0,-0.25 q 0,-0.21875 0.0781,-0.3125 0.0937,-0.0937 0.23437,-0.0937 0.14063,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,0.85938 -5.95312,0 0,-0.90625 q 1.875,-1.6875 3.65625,-3.4375 0.82812,-0.8125 1.125,-1.1875 0.3125,-0.375 0.42187,-0.65625 0.10938,-0.29688 0.10938,-0.59375 0,-0.79688 -0.64063,-1.40625 -0.625,-0.60938 -1.53125,-0.60938 -0.79687,0 -1.42187,0.46875 -0.625,0.46875 -0.8125,1.14063 -0.0469,0.17187 -0.10938,0.23437 -0.0781,0.0625 -0.20312,0.0625 -0.125,0 -0.21875,-0.0781 -0.0781,-0.0781 -0.0781,-0.20313 0,-0.34375 0.39063,-0.9375 0.39062,-0.60937 1.0625,-0.95312 0.67187,-0.34375 1.39062,-0.34375 1.14063,0 1.96875,0.79687 0.82813,0.79688 0.82813,1.8125 0,0.42188 -0.14063,0.78125 -0.125,0.34375 -0.46875,0.76563 -0.32812,0.42187 -1.1875,1.26562 -2.17187,2.14063 -3.53125,3.32813 l 0,0.0469 z m 15.73584,4.71875 -8.1875,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 8.1875,0 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 0,1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 l 0,3.71875 1.48437,0 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 l -2.9375,0 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 l 0.82813,0 0,-7.9375 -0.82813,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 l 1.45313,0 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 4.72022,-2.98437 3.34375,0 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 l -3.34375,0 0,4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.26563,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.35937 l 0,-4.09375 -1.125,0 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 l 1.125,0 0,-1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 l 0,1.8125 z m 9.53271,0 0,1.54687 q 1.20313,-1.07812 1.79688,-1.39062 0.59375,-0.3125 1.10937,-0.3125 0.54688,0 1.01563,0.375 0.46875,0.375 0.46875,0.5625 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.21875,0.0781 -0.0781,0 -0.14063,-0.0156 -0.0469,-0.0312 -0.1875,-0.17187 -0.25,-0.25 -0.4375,-0.34375 -0.1875,-0.0937 -0.375,-0.0937 -0.40625,0 -0.98437,0.32812 -0.5625,0.3125 -1.95313,1.5625 l 0,3.375 2.71875,0 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 l -4.82812,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.21875 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 l 1.5,0 0,-5.125 -1.14063,0 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0781,-0.21875 0.0937,-0.0937 0.32812,-0.0937 l 1.75,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path151" d="m 171.11117,391.14688 q -1.09375,-1.375 -1.85938,-3.21875 -0.75,-1.84375 -0.75,-3.82813 0,-1.73437 0.5625,-3.34375 0.65625,-1.84375 2.04688,-3.6875 l 0.9375,0 q -0.89063,1.53125 -1.17188,2.17188 -0.45312,1.01562 -0.70312,2.10937 -0.3125,1.375 -0.3125,2.76563 0,3.51562 2.1875,7.03125 l -0.9375,0 z m 3.2244,0 -0.95313,0 q 2.1875,-3.51563 2.1875,-7.03125 0,-1.39063 -0.3125,-2.73438 -0.25,-1.10937 -0.6875,-2.10937 -0.29687,-0.65625 -1.1875,-2.20313 l 0.95313,0 q 1.375,1.84375 2.03125,3.6875 0.5625,1.60938 0.5625,3.34375 0,1.98438 -0.76563,3.82813 -0.75,1.84375 -1.82812,3.21875 z"/>
- <path style="fill:#b6d7a8;fill-rule:nonzero" inkscape:connector-curvature="0" id="path153" d="m 0.99995859,425.37296 21.74803241,-21.74805 0,10.87403 239.417309,0 0,21.74804 -239.417309,0 0,10.874 z"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path155" d="m 0.99995859,425.37296 21.74803241,-21.74805 0,10.87403 239.417309,0 0,21.74804 -239.417309,0 0,10.874 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path157" d="m 29.342729,427.85794 q 0,1.5 -1.07812,2.57813 -1.0625,1.0625 -2.57813,1.0625 -1.53125,0 -2.609375,-1.0625 -1.0625,-1.07813 -1.0625,-2.57813 0,-1.5 1.0625,-2.5625 1.078125,-1.0625 2.609375,-1.0625 1.51563,0 2.57813,1.0625 1.07812,1.0625 1.07812,2.5625 z m -0.65625,0 q 0,-1.23437 -0.89062,-2.09375 -0.875,-0.875 -2.125,-0.875 -1.250005,0 -2.125005,0.875 -0.875,0.875 -0.875,2.09375 0,1.21875 0.875,2.09375 0.875,0.875 2.125005,0.875 1.25,0 2.125,-0.85937 0.89062,-0.875 0.89062,-2.10938 z m 9.80469,-6.4375 0,9.15625 0.875,0 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.34375,0.0937 l -1.53125,0 0,-1.3125 q -1.14063,1.57813 -2.90625,1.57813 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48438 -1.29687,-1.35938 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79687 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48438 1.71875,-0.48438 1.71875,0 2.89063,1.5625 l 0,-3.70312 -0.875,0 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.35938,-0.0937 l 1.53125,0 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10937 -0.84375,-0.85938 -2.01563,-0.85938 -1.17187,0 -2.01562,0.85938 -0.84375,0.85937 -0.84375,2.10937 0,1.25 0.84375,2.10938 0.84375,0.85937 2.01562,0.85937 1.17188,0 2.01563,-0.85937 0.84375,-0.85938 0.84375,-2.10938 z m 4.57031,-3.39062 0,1.1875 q 0.59375,-0.70313 1.26563,-1.0625 0.67187,-0.35938 1.57812,-0.35938 0.96875,0 1.78125,0.45313 0.82813,0.45312 1.28125,1.26562 0.45313,0.79688 0.45313,1.6875 0,1.42188 -1.01563,2.42188 -1.01562,1 -2.48437,1 -1.76563,0 -2.85938,-1.42188 l 0,3.95313 1.59375,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -3.125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.46875 -0.875,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 5.6875,3.17187 q 0,-1.125 -0.82812,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20313,0 -2.03125,0.8125 -0.82813,0.8125 -0.82813,1.9375 0,1.14063 0.82813,1.95313 0.82812,0.8125 2.03125,0.8125 1.17187,0 2,-0.8125 0.82812,-0.8125 0.82812,-1.95313 z m 10.7578,7.98438 -8.73436,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 l 8.73436,0 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 z m 2.75782,-11.15625 0,1.1875 q 0.59375,-0.70313 1.26562,-1.0625 0.67188,-0.35938 1.57813,-0.35938 0.96875,0 1.78125,0.45313 0.82812,0.45312 1.28125,1.26562 0.45312,0.79688 0.45312,1.6875 0,1.42188 -1.01562,2.42188 -1.01563,1 -2.48438,1 -1.76562,0 -2.85937,-1.42188 l 0,3.95313 1.59375,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -3.125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.46875 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 5.6875,3.17187 q 0,-1.125 -0.82813,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20312,0 -2.03125,0.8125 -0.82812,0.8125 -0.82812,1.9375 0,1.14063 0.82812,1.95313 0.82813,0.8125 2.03125,0.8125 1.17188,0 2,-0.8125 0.82813,-0.8125 0.82813,-1.95313 z m 8.27343,3.59375 0,-0.95312 q -1.42187,1.21875 -3.04687,1.21875 -1.1875,0 -1.85938,-0.59375 -0.65625,-0.60938 -0.65625,-1.48438 0,-0.95312 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45313,0 0.98438,0.0625 0.53125,0.0625 1.14062,0.1875 l 0,-1.0625 q 0,-0.54687 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76562,0 -2.14062,0.45313 -0.25,0.0781 -0.32813,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23437 0,-0.14063 0.0781,-0.21875 0.10938,-0.10938 0.875,-0.3125 1.21875,-0.32813 1.84375,-0.32813 1.25,0 1.9375,0.60938 0.70313,0.60937 0.70313,1.39062 l 0,4.34375 0.875,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -1.54688,0 z m 0,-3.26562 q -0.45312,-0.14063 -0.96875,-0.20313 -0.51562,-0.0625 -1.09375,-0.0625 -1.42187,0 -2.23437,0.625 -0.60938,0.45313 -0.60938,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35938,0.40625 0.84375,0 1.57812,-0.32812 0.73438,-0.34375 1.5,-1.09375 l 0,-1.4375 z m 10.46094,-2.84375 0,-0.21875 q 0,-0.23438 0.0937,-0.32813 0.0937,-0.10937 0.23438,-0.10937 0.14062,0 0.23437,0.10937 0.0937,0.0937 0.0937,0.32813 l 0,1.48437 q 0,0.25 -0.0937,0.35938 -0.0937,0.0937 -0.23437,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0781,-0.0937 -0.0937,-0.29688 -0.0469,-0.5625 -0.73437,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45313,0 -2.21875,0.92188 -0.75,0.90625 -0.75,2.09375 0,1.26562 0.82812,2.09375 0.84375,0.82812 2.17188,0.82812 0.76562,0 1.54687,-0.28125 0.79688,-0.28125 1.4375,-0.90625 0.17188,-0.15625 0.29688,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79688,0.85938 -1.26562,0.84375 -2.82812,0.84375 -1.59375,0 -2.60938,-1.01563 -1.01562,-1.01562 -1.01562,-2.57812 0,-1.57813 1.03125,-2.625 1.04687,-1.04688 2.64062,-1.04688 1.5,0 2.53125,0.89063 z m 5.52344,3.1875 0,2.92187 -1.53125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.48437 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 0,6.04688 2.79687,-2.34375 -0.34375,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 2.10938,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -0.76563,0 -2.5625,2.14062 3.25,3.3125 0.75,0 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.34375,0.0937 l -2.125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 0.46875,0 -2.82812,-2.90625 -0.75,0.64063 z m 14.492191,-0.3125 -6.687501,0 q 0.17187,1.28125 1.062501,2.0625 0.89062,0.76562 2.21875,0.76562 0.73437,0 1.53125,-0.23437 0.8125,-0.25 1.3125,-0.64063 0.15625,-0.125 0.26562,-0.125 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.14062 -0.125,0.26562 -0.375,0.39063 -1.34375,0.73438 -0.95312,0.34375 -1.95312,0.34375 -1.6875,0 -2.828131,-1.10938 -1.125,-1.10937 -1.125,-2.6875 0,-1.42187 1.0625,-2.4375 1.062501,-1.03125 2.625001,-1.03125 1.60938,0 2.64063,1.04688 1.04687,1.04687 1.03125,2.71875 z m -0.67188,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76563 -0.82812,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98437,0.67188 -0.828131,0.67187 -1.031251,1.78125 l 6.015621,0 z m 5.36719,-2.875 3.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45312,0.95312 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20312 1.20313,-0.45312 0.15625,-0.10938 0.26562,-0.10938 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26562 -1.21875,0.57812 -0.95313,0.29688 -1.84375,0.29688 -1.14063,0 -1.82813,-0.54688 -0.67187,-0.54687 -0.67187,-1.45312 l 0,-4.375 -1.21875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23438 0.0937,-0.32813 0.0937,-0.10937 0.23437,-0.10937 0.14063,0 0.23438,0.10937 0.0937,0.0937 0.0937,0.32813 l 0,1.9375 z m 15.32031,11.15625 -8.73437,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 l 8.73437,0 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 z m 8.78906,-7.625 -6.6875,0 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76562 2.21875,0.76562 0.73438,0 1.53125,-0.23437 0.8125,-0.25 1.3125,-0.64063 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.14062 -0.125,0.26562 -0.375,0.39063 -1.34375,0.73438 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10938 -1.125,-1.10937 -1.125,-2.6875 0,-1.42187 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04688 1.04688,1.04687 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76563 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67188 -0.82812,0.67187 -1.03125,1.78125 l 6.01563,0 z m 7.16406,0.34375 3.01563,2.89062 q 0.29687,0 0.375,0.0312 0.0781,0.0156 0.125,0.10938 0.0625,0.0781 0.0625,0.1875 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -2.10938,0 q -0.25,0 -0.35937,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10937,-0.0937 0.35937,-0.0937 l 1.07813,0 -2.54688,-2.45312 -2.54687,2.45312 1.09375,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -2.125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.10938 0.0469,-0.1875 0.0625,-0.0937 0.14063,-0.10938 0.0781,-0.0312 0.375,-0.0312 l 3,-2.89062 -2.67188,-2.5625 q -0.28125,0 -0.35937,-0.0312 -0.0625,-0.0312 -0.125,-0.10938 -0.0625,-0.0937 -0.0625,-0.1875 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 l 1.78125,0 q 0.25,0 0.34375,0.0937 0.0937,0.0937 0.0937,0.23437 0,0.14063 -0.0937,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -0.78125,0 2.21875,2.14062 2.21875,-2.14062 -0.78125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 1.79688,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.0937 -0.0625,0.1875 -0.0625,0.0781 -0.14063,0.10938 -0.0625,0.0312 -0.34375,0.0312 l -2.6875,2.5625 z m 7.80469,-3.21875 3.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45312,0.95312 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20312 1.20313,-0.45312 0.15625,-0.10938 0.26562,-0.10938 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26562 -1.21875,0.57812 -0.95313,0.29688 -1.84375,0.29688 -1.14063,0 -1.82813,-0.54688 -0.67187,-0.54687 -0.67187,-1.45312 l 0,-4.375 -1.21875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23438 0.0937,-0.32813 0.0937,-0.10937 0.23437,-0.10937 0.14063,0 0.23438,0.10937 0.0937,0.0937 0.0937,0.32813 l 0,1.9375 z m 14.50781,3.53125 -6.6875,0 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76562 2.21875,0.76562 0.73438,0 1.53125,-0.23437 0.8125,-0.25 1.3125,-0.64063 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.14062 -0.125,0.26562 -0.375,0.39063 -1.34375,0.73438 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10938 -1.125,-1.10937 -1.125,-2.6875 0,-1.42187 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04688 1.04688,1.04687 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76563 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67188 -0.82812,0.67187 -1.03125,1.78125 l 6.01563,0 z m 4.60156,-2.875 0,0.98437 q 0.6875,-0.6875 1.23437,-0.95312 0.5625,-0.26563 1.25,-0.26563 0.75,0 1.375,0.3125 0.4375,0.23438 0.78125,0.78125 0.35938,0.54688 0.35938,1.10938 l 0,4.14062 0.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -1.76563,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 0.54688,0 0,-4.03125 q 0,-0.6875 -0.51563,-1.17187 -0.5,-0.48438 -1.34375,-0.48438 -0.65625,0 -1.14062,0.26563 -0.46875,0.26562 -1.34375,1.29687 l 0,4.125 0.73437,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 l -2.14062,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 0.75,0 0,-5.45312 -0.5625,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 z m 14.9297,-3.04688 0,9.15625 0.875,0 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.34375,0.0937 l -1.53125,0 0,-1.3125 q -1.14064,1.57813 -2.90626,1.57813 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48438 -1.29687,-1.35938 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79687 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48438 1.71875,-0.48438 1.71875,0 2.89064,1.5625 l 0,-3.70312 -0.87501,0 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.35938,-0.0937 l 1.53126,0 z m -0.65625,6.4375 q 0,-1.25 -0.84376,-2.10937 -0.84375,-0.85938 -2.01563,-0.85938 -1.17187,0 -2.01562,0.85938 -0.84375,0.85937 -0.84375,2.10937 0,1.25 0.84375,2.10938 0.84375,0.85937 2.01562,0.85937 1.17188,0 2.01563,-0.85937 0.84376,-0.85938 0.84376,-2.10938 z m 11.41407,7.76563 -8.73438,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 l 8.73438,0 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 z m 3.07031,-14.20313 0,4.04688 q 0.625,-0.6875 1.20312,-0.95313 0.57813,-0.28125 1.28125,-0.28125 0.76563,0 1.29688,0.26563 0.54687,0.26562 0.90625,0.82812 0.35937,0.5625 0.35937,1.17188 l 0,4.07812 0.73438,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -2.14063,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 0.73438,0 0,-4.03125 q 0,-0.70312 -0.51563,-1.17187 -0.5,-0.48438 -1.42187,-0.48438 -0.71875,0 -1.21875,0.34375 -0.375,0.25 -1.21875,1.1875 l 0,4.15625 0.75,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -2.14063,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 0.73438,0 0,-8.48437 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 15.32031,6.57813 -6.6875,0 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76562 2.21875,0.76562 0.73438,0 1.53125,-0.23437 0.8125,-0.25 1.3125,-0.64063 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.14062 -0.125,0.26562 -0.375,0.39063 -1.34375,0.73438 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10938 -1.125,-1.10937 -1.125,-2.6875 0,-1.42187 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04688 1.04688,1.04687 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76563 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67188 -0.82812,0.67187 -1.03125,1.78125 l 6.01563,0 z m 8.60156,3.89062 0,-0.95312 q -1.42188,1.21875 -3.04688,1.21875 -1.1875,0 -1.85937,-0.59375 -0.65625,-0.60938 -0.65625,-1.48438 0,-0.95312 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45312,0 0.98437,0.0625 0.53125,0.0625 1.14063,0.1875 l 0,-1.0625 q 0,-0.54687 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76563,0 -2.14063,0.45313 -0.25,0.0781 -0.32812,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23437 0,-0.14063 0.0781,-0.21875 0.10937,-0.10938 0.875,-0.3125 1.21875,-0.32813 1.84375,-0.32813 1.25,0 1.9375,0.60938 0.70312,0.60937 0.70312,1.39062 l 0,4.34375 0.875,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 l -1.54687,0 z m 0,-3.26562 q -0.45313,-0.14063 -0.96875,-0.20313 -0.51563,-0.0625 -1.09375,-0.0625 -1.42188,0 -2.23438,0.625 -0.60937,0.45313 -0.60937,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35937,0.40625 0.84375,0 1.57813,-0.32812 0.73437,-0.34375 1.5,-1.09375 l 0,-1.4375 z m 10.92969,-6.54688 0,9.15625 0.875,0 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.34375,0.0937 l -1.53125,0 0,-1.3125 q -1.14063,1.57813 -2.90625,1.57813 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48438 -1.29687,-1.35938 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79687 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48438 1.71875,-0.48438 1.71875,0 2.89063,1.5625 l 0,-3.70312 -0.875,0 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.35938,-0.0937 l 1.53125,0 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10937 -0.84375,-0.85938 -2.01563,-0.85938 -1.17187,0 -2.01562,0.85938 -0.84375,0.85937 -0.84375,2.10937 0,1.25 0.84375,2.10938 0.84375,0.85937 2.01562,0.85937 1.17188,0 2.01563,-0.85937 0.84375,-0.85938 0.84375,-2.10938 z m 6.97656,-0.51562 q 0,-0.90625 0.23437,-1.90625 0.23438,-1.01563 0.89063,-2.32813 0.67187,-1.32812 0.96875,-1.59375 0.0937,-0.0937 0.20312,-0.0937 0.14063,0 0.23438,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.0781 -0.0625,0.17187 -0.85937,1.57813 -1.23437,2.85938 -0.35938,1.28125 -0.35938,2.5625 0,1.28125 0.35938,2.5625 0.375,1.28125 1.23437,2.85937 0.0625,0.0937 0.0625,0.17188 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.23438,0.0937 -0.10937,0 -0.20312,-0.0781 -0.28125,-0.26563 -0.9375,-1.5625 -0.65625,-1.29688 -0.90625,-2.28125 -0.25,-1 -0.25,-2 z m 9.86719,0 q 0,0.90625 -0.23438,1.90625 -0.23437,1 -0.90625,2.32812 -0.65625,1.32813 -0.96875,1.59375 -0.0937,0.0937 -0.20312,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.0781 0.0469,-0.17188 0.85937,-1.57812 1.21875,-2.85937 0.375,-1.28125 0.375,-2.5625 0,-1.28125 -0.375,-2.5625 -0.35938,-1.28125 -1.21875,-2.85938 -0.0469,-0.0937 -0.0469,-0.17187 0,-0.14063 0.0937,-0.23438 0.0937,-0.0937 0.23438,-0.0937 0.10937,0 0.20312,0.0937 0.29688,0.26563 0.95313,1.5625 0.65625,1.28125 0.90625,2.28125 0.25,0.98438 0.25,1.98438 z"/>
- <path style="fill:#b6d7a8;fill-rule:nonzero" inkscape:connector-curvature="0" id="path159" d="m 612.10232,479.49585 21.74805,-21.74802 0,10.87403 234.8504,0 0,21.74801 -234.8504,0 0,10.874 z"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path161" d="m 612.10232,479.49585 21.74805,-21.74802 0,10.87403 234.8504,0 0,21.74801 -234.8504,0 0,10.874 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path163" d="m 640.44509,481.98088 q 0,1.5 -1.07812,2.57812 -1.0625,1.0625 -2.57813,1.0625 -1.53125,0 -2.60937,-1.0625 -1.0625,-1.07812 -1.0625,-2.57812 0,-1.5 1.0625,-2.5625 1.07812,-1.0625 2.60937,-1.0625 1.51563,0 2.57813,1.0625 1.07812,1.0625 1.07812,2.5625 z m -0.65625,0 q 0,-1.23438 -0.89062,-2.09375 -0.875,-0.875 -2.125,-0.875 -1.25,0 -2.125,0.875 -0.875,0.875 -0.875,2.09375 0,1.21875 0.875,2.09375 0.875,0.875 2.125,0.875 1.25,0 2.125,-0.85938 0.89062,-0.875 0.89062,-2.10937 z m 9.80469,-6.4375 0,9.15625 0.875,0 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -1.53125,0 0,-1.3125 q -1.14063,1.57812 -2.90625,1.57812 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48437 -1.29687,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89063,1.5625 l 0,-3.70313 -0.875,0 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.35938,-0.0937 l 1.53125,0 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01563,-0.85937 -1.17187,0 -2.01562,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01562,0.85938 1.17188,0 2.01563,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 4.57031,-3.39063 0,1.1875 q 0.59375,-0.70312 1.26563,-1.0625 0.67187,-0.35937 1.57812,-0.35937 0.96875,0 1.78125,0.45312 0.82813,0.45313 1.28125,1.26563 0.45313,0.79687 0.45313,1.6875 0,1.42187 -1.01563,2.42187 -1.01562,1 -2.48437,1 -1.76563,0 -2.85938,-1.42187 l 0,3.95312 1.59375,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 l -3.125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.46875 -0.875,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 5.6875,3.17188 q 0,-1.125 -0.82812,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20313,0 -2.03125,0.8125 -0.82813,0.8125 -0.82813,1.9375 0,1.14062 0.82813,1.95312 0.82812,0.8125 2.03125,0.8125 1.17187,0 2,-0.8125 0.82812,-0.8125 0.82812,-1.95312 z m 10.75781,7.98437 -8.73437,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 l 8.73437,0 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 z m 2.75782,-11.15625 0,1.1875 q 0.59375,-0.70312 1.26562,-1.0625 0.67188,-0.35937 1.57813,-0.35937 0.96875,0 1.78125,0.45312 0.82812,0.45313 1.28125,1.26563 0.45312,0.79687 0.45312,1.6875 0,1.42187 -1.01562,2.42187 -1.01563,1 -2.48438,1 -1.76562,0 -2.85937,-1.42187 l 0,3.95312 1.59375,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.46875 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 5.6875,3.17188 q 0,-1.125 -0.82813,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20312,0 -2.03125,0.8125 -0.82812,0.8125 -0.82812,1.9375 0,1.14062 0.82812,1.95312 0.82813,0.8125 2.03125,0.8125 1.17188,0 2,-0.8125 0.82813,-0.8125 0.82813,-1.95312 z m 8.27343,3.59375 0,-0.95313 q -1.42187,1.21875 -3.04687,1.21875 -1.1875,0 -1.85938,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45313,0 0.98438,0.0625 0.53125,0.0625 1.14062,0.1875 l 0,-1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76562,0 -2.14062,0.45312 -0.25,0.0781 -0.32813,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10938,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70313,0.60938 0.70313,1.39063 l 0,4.34375 0.875,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -1.54688,0 z m 0,-3.26563 q -0.45312,-0.14062 -0.96875,-0.20312 -0.51562,-0.0625 -1.09375,-0.0625 -1.42187,0 -2.23437,0.625 -0.60938,0.45312 -0.60938,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35938,0.40625 0.84375,0 1.57812,-0.32813 0.73438,-0.34375 1.5,-1.09375 l 0,-1.4375 z m 10.46094,-2.84375 0,-0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23437,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73437,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45313,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82812,2.09375 0.84375,0.82813 2.17188,0.82813 0.76562,0 1.54687,-0.28125 0.79688,-0.28125 1.4375,-0.90625 0.17188,-0.15625 0.29688,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79688,0.85937 -1.26562,0.84375 -2.82812,0.84375 -1.59375,0 -2.60938,-1.01562 -1.01562,-1.01563 -1.01562,-2.57813 0,-1.57812 1.03125,-2.625 1.04687,-1.04687 2.64062,-1.04687 1.5,0 2.53125,0.89062 z m 5.52344,3.1875 0,2.92188 -1.53125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.48438 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 0,6.04687 2.79687,-2.34375 -0.34375,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 2.10938,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -0.76563,0 -2.5625,2.14063 3.25,3.3125 0.75,0 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -2.125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 0.46875,0 -2.82812,-2.90625 -0.75,0.64062 z m 14.49219,-0.3125 -6.6875,0 q 0.17187,1.28125 1.0625,2.0625 0.89062,0.76563 2.21875,0.76563 0.73437,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26562,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95312,0.34375 -1.95312,0.34375 -1.6875,0 -2.82813,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60938,0 2.64063,1.04687 1.04687,1.04688 1.03125,2.71875 z m -0.67188,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82812,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98437,0.67187 -0.82813,0.67188 -1.03125,1.78125 l 6.01562,0 z m 5.36719,-2.875 3.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 l 0,-4.375 -1.21875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.9375 z m 15.32031,11.15625 -8.73437,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 l 8.73437,0 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 z m 3.88281,-11.15625 3.5625,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45313,0.95313 0.46875,0.375 1.34375,0.375 0.67187,0 1.4375,-0.1875 0.78125,-0.20313 1.20312,-0.45313 0.15625,-0.10937 0.26563,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10938,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95312,0.29687 -1.84375,0.29687 -1.14062,0 -1.82812,-0.54687 -0.67188,-0.54688 -0.67188,-1.45313 l 0,-4.375 -1.21875,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.9375 z m 10.16407,0 0,1.65625 q 1.28125,-1.15625 1.92187,-1.48437 0.64063,-0.34375 1.17188,-0.34375 0.59375,0 1.09375,0.40625 0.5,0.39062 0.5,0.59375 0,0.14062 -0.0937,0.25 -0.0937,0.0937 -0.25,0.0937 -0.0781,0 -0.14063,-0.0312 -0.0469,-0.0312 -0.1875,-0.17188 -0.28125,-0.28125 -0.48437,-0.375 -0.20313,-0.10937 -0.39063,-0.10937 -0.4375,0 -1.04687,0.34375 -0.59375,0.34375 -2.09375,1.6875 l 0,3.59375 2.90625,0 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -5.14063,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.21875 0.0937,-0.0937 0.34375,-0.0937 l 1.57813,0 0,-5.46875 -1.20313,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.0937,-0.0937 0.34375,-0.0937 l 1.85938,0 z m 12.63281,6.76563 0,-0.96875 q -1.34375,1.23437 -2.90625,1.23437 -0.95313,0 -1.45313,-0.53125 -0.65625,-0.6875 -0.65625,-1.60937 l 0,-4.23438 -0.875,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 1.53125,0 0,4.89063 q 0,0.64062 0.40625,1.0625 0.40625,0.40625 1.01563,0.40625 1.60937,0 2.9375,-1.46875 l 0,-4.23438 -1.20313,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 1.85938,0 0,6.10938 0.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -1.21875,0 z m 5.24219,-6.76563 0,0.98438 q 0.6875,-0.6875 1.23437,-0.95313 0.5625,-0.26562 1.25,-0.26562 0.75,0 1.375,0.3125 0.4375,0.23437 0.78125,0.78125 0.35938,0.54687 0.35938,1.10937 l 0,4.14063 0.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -1.76563,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 0.54688,0 0,-4.03125 q 0,-0.6875 -0.51563,-1.17188 -0.5,-0.48437 -1.34375,-0.48437 -0.65625,0 -1.14062,0.26562 -0.46875,0.26563 -1.34375,1.29688 l 0,4.125 0.73437,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -2.14062,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.75,0 0,-5.45313 -0.5625,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 z m 14.46093,0.65625 0,-0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23437,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73437,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45313,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82812,2.09375 0.84375,0.82813 2.17188,0.82813 0.76562,0 1.54687,-0.28125 0.79688,-0.28125 1.4375,-0.90625 0.17188,-0.15625 0.29688,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79688,0.85937 -1.26562,0.84375 -2.82812,0.84375 -1.59375,0 -2.60938,-1.01562 -1.01562,-1.01563 -1.01562,-2.57813 0,-1.57812 1.03125,-2.625 1.04687,-1.04687 2.64062,-1.04687 1.5,0 2.53125,0.89062 z m 11.22657,10.5 -8.73438,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 l 8.73438,0 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 3.88281,-11.15625 3.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 l 0,-4.375 -1.21875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.9375 z m 12.83594,6.76563 0,-0.95313 q -1.42188,1.21875 -3.04688,1.21875 -1.1875,0 -1.85937,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45312,0 0.98437,0.0625 0.53125,0.0625 1.14063,0.1875 l 0,-1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76563,0 -2.14063,0.45312 -0.25,0.0781 -0.32812,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10937,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70312,0.60938 0.70312,1.39063 l 0,4.34375 0.875,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -1.54687,0 z m 0,-3.26563 q -0.45313,-0.14062 -0.96875,-0.20312 -0.51563,-0.0625 -1.09375,-0.0625 -1.42188,0 -2.23438,0.625 -0.60937,0.45312 -0.60937,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35937,0.40625 0.84375,0 1.57813,-0.32813 0.73437,-0.34375 1.5,-1.09375 l 0,-1.4375 z m 8.03906,-6.875 0,1.70313 -0.96875,0 0,-1.70313 0.96875,0 z m 0.0312,3.375 0,6.10938 2.57812,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -5.8125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 2.57813,0 0,-5.45313 -1.92188,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 2.57813,0 z m 9.58594,-3.04687 0,9.15625 2.57812,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -5.8125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 2.57813,0 0,-8.48438 -1.89063,0 q -0.23437,0 -0.34375,-0.0937 -0.10937,-0.0937 -0.10937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 l 2.54688,0 z m 9.19531,5.92187 q 0,-0.90625 0.23437,-1.90625 0.23438,-1.01562 0.89063,-2.32812 0.67187,-1.32813 0.96875,-1.59375 0.0937,-0.0937 0.20312,-0.0937 0.14063,0 0.23438,0.0937 0.10937,0.0937 0.10937,0.23437 0,0.0781 -0.0625,0.17188 -0.85937,1.57812 -1.23437,2.85937 -0.35938,1.28125 -0.35938,2.5625 0,1.28125 0.35938,2.5625 0.375,1.28125 1.23437,2.85938 0.0625,0.0937 0.0625,0.17187 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.23438,0.0937 -0.10937,0 -0.20312,-0.0781 -0.28125,-0.26562 -0.9375,-1.5625 -0.65625,-1.29687 -0.90625,-2.28125 -0.25,-1 -0.25,-2 z m 9.86719,0 q 0,0.90625 -0.23438,1.90625 -0.23437,1 -0.90625,2.32813 -0.65625,1.32812 -0.96875,1.59375 -0.0937,0.0937 -0.20312,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.0781 0.0469,-0.17187 0.85937,-1.57813 1.21875,-2.85938 0.375,-1.28125 0.375,-2.5625 0,-1.28125 -0.375,-2.5625 -0.35938,-1.28125 -1.21875,-2.85937 -0.0469,-0.0937 -0.0469,-0.17188 0,-0.14062 0.0937,-0.23437 0.0937,-0.0937 0.23438,-0.0937 0.10937,0 0.20312,0.0937 0.29688,0.26562 0.95313,1.5625 0.65625,1.28125 0.90625,2.28125 0.25,0.98437 0.25,1.98437 z"/>
- <path style="fill:#b6d7a8;fill-rule:nonzero" inkscape:connector-curvature="0" id="path165" d="m 870.97262,420.86068 -21.74805,21.74805 0,-10.87403 -234.8504,0 0,-21.74804 234.8504,0 0,-10.874 z"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path167" d="m 870.97262,420.86068 -21.74805,21.74805 0,-10.87403 -234.8504,0 0,-21.74804 234.8504,0 0,-10.874 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path169" d="m 613.0682,409.07056 261.16534,0 0,20.8819 -261.16534,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path171" d="m 636.9009,421.99652 q 0,1.5 -1.07813,2.57812 -1.0625,1.0625 -2.57812,1.0625 -1.53125,0 -2.60938,-1.0625 -1.0625,-1.07812 -1.0625,-2.57812 0,-1.5 1.0625,-2.5625 1.07813,-1.0625 2.60938,-1.0625 1.51562,0 2.57812,1.0625 1.07813,1.0625 1.07813,2.5625 z m -0.65625,0 q 0,-1.23438 -0.89063,-2.09375 -0.875,-0.875 -2.125,-0.875 -1.25,0 -2.125,0.875 -0.875,0.875 -0.875,2.09375 0,1.21875 0.875,2.09375 0.875,0.875 2.125,0.875 1.25,0 2.125,-0.85938 0.89063,-0.875 0.89063,-2.10937 z m 9.80469,-6.4375 0,9.15625 0.875,0 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -1.53125,0 0,-1.3125 q -1.14063,1.57812 -2.90625,1.57812 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48437 -1.29687,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89063,1.5625 l 0,-3.70313 -0.875,0 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.35938,-0.0937 l 1.53125,0 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01563,-0.85937 -1.17187,0 -2.01562,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01562,0.85938 1.17188,0 2.01563,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 4.57031,-3.39063 0,1.1875 q 0.59375,-0.70312 1.26562,-1.0625 0.67188,-0.35937 1.57813,-0.35937 0.96875,0 1.78125,0.45312 0.82812,0.45313 1.28125,1.26563 0.45312,0.79687 0.45312,1.6875 0,1.42187 -1.01562,2.42187 -1.01563,1 -2.48438,1 -1.76562,0 -2.85937,-1.42187 l 0,3.95312 1.59375,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.46875 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 5.6875,3.17188 q 0,-1.125 -0.82813,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20312,0 -2.03125,0.8125 -0.82812,0.8125 -0.82812,1.9375 0,1.14062 0.82812,1.95312 0.82813,0.8125 2.03125,0.8125 1.17188,0 2,-0.8125 0.82813,-0.8125 0.82813,-1.95312 z m 10.75781,7.98437 -8.73437,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 l 8.73437,0 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 z m 2.75781,-11.15625 0,1.1875 q 0.59375,-0.70312 1.26563,-1.0625 0.67187,-0.35937 1.57812,-0.35937 0.96875,0 1.78125,0.45312 0.82813,0.45313 1.28125,1.26563 0.45313,0.79687 0.45313,1.6875 0,1.42187 -1.01563,2.42187 -1.01562,1 -2.48437,1 -1.76563,0 -2.85938,-1.42187 l 0,3.95312 1.59375,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 l -3.125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.46875 -0.875,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 5.6875,3.17188 q 0,-1.125 -0.82812,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20313,0 -2.03125,0.8125 -0.82813,0.8125 -0.82813,1.9375 0,1.14062 0.82813,1.95312 0.82812,0.8125 2.03125,0.8125 1.17187,0 2,-0.8125 0.82812,-0.8125 0.82812,-1.95312 z m 8.27344,3.59375 0,-0.95313 q -1.42187,1.21875 -3.04687,1.21875 -1.1875,0 -1.85938,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45313,0 0.98438,0.0625 0.53125,0.0625 1.14062,0.1875 l 0,-1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76562,0 -2.14062,0.45312 -0.25,0.0781 -0.32813,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10938,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70313,0.60938 0.70313,1.39063 l 0,4.34375 0.875,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -1.54688,0 z m 0,-3.26563 q -0.45312,-0.14062 -0.96875,-0.20312 -0.51562,-0.0625 -1.09375,-0.0625 -1.42187,0 -2.23437,0.625 -0.60938,0.45312 -0.60938,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35938,0.40625 0.84375,0 1.57812,-0.32813 0.73438,-0.34375 1.5,-1.09375 l 0,-1.4375 z m 10.46094,-2.84375 0,-0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23438,0.0937 -0.14062,0 -0.23437,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73438,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45312,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82813,2.09375 0.84375,0.82813 2.17187,0.82813 0.76563,0 1.54688,-0.28125 0.79687,-0.28125 1.4375,-0.90625 0.17187,-0.15625 0.29687,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79687,0.85937 -1.26563,0.84375 -2.82813,0.84375 -1.59375,0 -2.60937,-1.01562 -1.01563,-1.01563 -1.01563,-2.57813 0,-1.57812 1.03125,-2.625 1.04688,-1.04687 2.64063,-1.04687 1.5,0 2.53125,0.89062 z m 5.52344,3.1875 0,2.92188 -1.53125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.48438 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 0,6.04687 2.79687,-2.34375 -0.34375,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 2.10938,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -0.76563,0 -2.5625,2.14063 3.25,3.3125 0.75,0 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -2.125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 0.46875,0 -2.82812,-2.90625 -0.75,0.64062 z m 14.49218,-0.3125 -6.6875,0 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76563 2.21875,0.76563 0.73438,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04687 1.04688,1.04688 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67187 -0.82812,0.67188 -1.03125,1.78125 l 6.01563,0 z m 5.36719,-2.875 3.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 l 0,-4.375 -1.21875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.9375 z m 15.32031,11.15625 -8.73438,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 l 8.73438,0 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 8.78906,-7.625 -6.6875,0 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76563 2.21875,0.76563 0.73438,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04687 1.04688,1.04688 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67187 -0.82812,0.67188 -1.03125,1.78125 l 6.01563,0 z m 7.16406,0.34375 3.01562,2.89063 q 0.29688,0 0.375,0.0312 0.0781,0.0156 0.125,0.10937 0.0625,0.0781 0.0625,0.1875 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -2.10937,0 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.35938,-0.0937 l 1.07812,0 -2.54687,-2.45313 -2.54688,2.45313 1.09375,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -2.125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.10937 0.0469,-0.1875 0.0625,-0.0937 0.14062,-0.10937 0.0781,-0.0312 0.375,-0.0312 l 3,-2.89063 -2.67187,-2.5625 q -0.28125,0 -0.35938,-0.0312 -0.0625,-0.0312 -0.125,-0.10937 -0.0625,-0.0937 -0.0625,-0.1875 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.35938,-0.0937 l 1.78125,0 q 0.25,0 0.34375,0.0937 0.0937,0.0937 0.0937,0.23438 0,0.14062 -0.0937,0.23437 -0.0937,0.0937 -0.34375,0.0937 l -0.78125,0 2.21875,2.14063 2.21875,-2.14063 -0.78125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.79687,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.0937 -0.0625,0.1875 -0.0625,0.0781 -0.14062,0.10937 -0.0625,0.0312 -0.34375,0.0312 l -2.6875,2.5625 z m 7.80469,-3.21875 3.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 l 0,-4.375 -1.21875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.9375 z m 14.50781,3.53125 -6.6875,0 q 0.17187,1.28125 1.0625,2.0625 0.89062,0.76563 2.21875,0.76563 0.73437,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26562,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95312,0.34375 -1.95312,0.34375 -1.6875,0 -2.82813,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60938,0 2.64063,1.04687 1.04687,1.04688 1.03125,2.71875 z m -0.67188,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82812,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98437,0.67187 -0.82813,0.67188 -1.03125,1.78125 l 6.01562,0 z m 4.60157,-2.875 0,0.98438 q 0.6875,-0.6875 1.23437,-0.95313 0.5625,-0.26562 1.25,-0.26562 0.75,0 1.375,0.3125 0.4375,0.23437 0.78125,0.78125 0.35938,0.54687 0.35938,1.10937 l 0,4.14063 0.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -1.76563,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 0.54688,0 0,-4.03125 q 0,-0.6875 -0.51563,-1.17188 -0.5,-0.48437 -1.34375,-0.48437 -0.65625,0 -1.14062,0.26562 -0.46875,0.26563 -1.34375,1.29688 l 0,4.125 0.73437,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -2.14062,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.75,0 0,-5.45313 -0.5625,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 z m 14.92968,-3.04687 0,9.15625 0.875,0 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -1.53125,0 0,-1.3125 q -1.14062,1.57812 -2.90625,1.57812 -0.89062,0 -1.70312,-0.46875 -0.8125,-0.48437 -1.29688,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48438,-0.875 1.29688,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89062,1.5625 l 0,-3.70313 -0.875,0 q -0.25,0 -0.35937,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 l 1.53125,0 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01562,-0.85937 -1.17188,0 -2.01563,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01563,0.85938 1.17187,0 2.01562,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 11.41407,7.76562 -8.73438,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 l 8.73438,0 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 3.88281,-11.15625 3.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 l 0,-4.375 -1.21875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.9375 z m 12.83594,6.76563 0,-0.95313 q -1.42188,1.21875 -3.04688,1.21875 -1.1875,0 -1.85937,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45312,0 0.98437,0.0625 0.53125,0.0625 1.14063,0.1875 l 0,-1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76563,0 -2.14063,0.45312 -0.25,0.0781 -0.32812,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10937,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70312,0.60938 0.70312,1.39063 l 0,4.34375 0.875,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -1.54687,0 z m 0,-3.26563 q -0.45313,-0.14062 -0.96875,-0.20312 -0.51563,-0.0625 -1.09375,-0.0625 -1.42188,0 -2.23438,0.625 -0.60937,0.45312 -0.60937,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35937,0.40625 0.84375,0 1.57813,-0.32813 0.73437,-0.34375 1.5,-1.09375 l 0,-1.4375 z m 8.03906,-6.875 0,1.70313 -0.96875,0 0,-1.70313 0.96875,0 z m 0.0312,3.375 0,6.10938 2.57812,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -5.8125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 2.57813,0 0,-5.45313 -1.92188,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 2.57813,0 z m 9.58594,-3.04687 0,9.15625 2.57812,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -5.8125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 2.57813,0 0,-8.48438 -1.89063,0 q -0.23437,0 -0.34375,-0.0937 -0.10937,-0.0937 -0.10937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 l 2.54688,0 z m 9.19531,5.92187 q 0,-0.90625 0.23437,-1.90625 0.23438,-1.01562 0.89063,-2.32812 0.67187,-1.32813 0.96875,-1.59375 0.0937,-0.0937 0.20312,-0.0937 0.14063,0 0.23438,0.0937 0.10937,0.0937 0.10937,0.23437 0,0.0781 -0.0625,0.17188 -0.85937,1.57812 -1.23437,2.85937 -0.35938,1.28125 -0.35938,2.5625 0,1.28125 0.35938,2.5625 0.375,1.28125 1.23437,2.85938 0.0625,0.0937 0.0625,0.17187 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.23438,0.0937 -0.10937,0 -0.20312,-0.0781 -0.28125,-0.26562 -0.9375,-1.5625 -0.65625,-1.29687 -0.90625,-2.28125 -0.25,-1 -0.25,-2 z m 9.86719,0 q 0,0.90625 -0.23438,1.90625 -0.23437,1 -0.90625,2.32813 -0.65625,1.32812 -0.96875,1.59375 -0.0937,0.0937 -0.20312,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.0781 0.0469,-0.17187 0.85937,-1.57813 1.21875,-2.85938 0.375,-1.28125 0.375,-2.5625 0,-1.28125 -0.375,-2.5625 -0.35938,-1.28125 -1.21875,-2.85937 -0.0469,-0.0937 -0.0469,-0.17188 0,-0.14062 0.0937,-0.23437 0.0937,-0.0937 0.23438,-0.0937 0.10937,0 0.20312,0.0937 0.29688,0.26562 0.95313,1.5625 0.65625,1.28125 0.90625,2.28125 0.25,0.98437 0.25,1.98437 z"/>
- <path style="fill:#b6d7a8;fill-rule:nonzero" inkscape:connector-curvature="0" id="path173" d="m 262.16531,474.99191 -21.74802,21.74805 0,-10.87403 -234.8503974,0 0,-21.74801 234.8503974,0 0,-10.87403 z"/>
- <path style="fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" inkscape:connector-curvature="0" id="path175" d="m 262.16531,474.99191 -21.74802,21.74805 0,-10.87403 -234.8503974,0 0,-21.74801 234.8503974,0 0,-10.87403 z"/>
- <path style="fill:#000000;fill-opacity:0;fill-rule:nonzero" inkscape:connector-curvature="0" id="path177" d="m 12.425155,465.58774 246.362185,0 0,20.88187 -246.362185,0 z"/>
- <path style="fill:#000000;fill-rule:nonzero" inkscape:connector-curvature="0" id="path179" d="m 29.893909,478.51368 q 0,1.5 -1.07813,2.57812 -1.0625,1.0625 -2.57812,1.0625 -1.531254,0 -2.609379,-1.0625 -1.0625,-1.07812 -1.0625,-2.57812 0,-1.5 1.0625,-2.5625 1.078125,-1.0625 2.609379,-1.0625 1.51562,0 2.57812,1.0625 1.07813,1.0625 1.07813,2.5625 z m -0.65625,0 q 0,-1.23438 -0.89063,-2.09375 -0.875,-0.875 -2.125,-0.875 -1.249999,0 -2.124999,0.875 -0.875,0.875 -0.875,2.09375 0,1.21875 0.875,2.09375 0.875,0.875 2.124999,0.875 1.25,0 2.125,-0.85938 0.89063,-0.875 0.89063,-2.10937 z m 9.80468,-6.4375 0,9.15625 0.875,0 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -1.53125,0 0,-1.3125 q -1.14062,1.57812 -2.90625,1.57812 -0.89062,0 -1.70312,-0.46875 -0.8125,-0.48437 -1.29688,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48438,-0.875 1.29688,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89062,1.5625 l 0,-3.70313 -0.875,0 q -0.25,0 -0.35937,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 l 1.53125,0 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01562,-0.85937 -1.17188,0 -2.01563,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01563,0.85938 1.17187,0 2.01562,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 4.57032,-3.39063 0,1.1875 q 0.59375,-0.70312 1.26562,-1.0625 0.67188,-0.35937 1.57813,-0.35937 0.96875,0 1.78125,0.45312 0.82812,0.45313 1.28125,1.26563 0.45312,0.79687 0.45312,1.6875 0,1.42187 -1.01562,2.42187 -1.01563,1 -2.48438,1 -1.76562,0 -2.85937,-1.42187 l 0,3.95312 1.59375,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.46875 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 5.6875,3.17188 q 0,-1.125 -0.82813,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20312,0 -2.03125,0.8125 -0.82812,0.8125 -0.82812,1.9375 0,1.14062 0.82812,1.95312 0.82813,0.8125 2.03125,0.8125 1.17188,0 2,-0.8125 0.82813,-0.8125 0.82813,-1.95312 z m 10.75782,7.98437 -8.73439,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 l 8.73439,0 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 2.75781,-11.15625 0,1.1875 q 0.59375,-0.70312 1.26562,-1.0625 0.67188,-0.35937 1.57813,-0.35937 0.96875,0 1.78125,0.45312 0.82812,0.45313 1.28125,1.26563 0.45312,0.79687 0.45312,1.6875 0,1.42187 -1.01562,2.42187 -1.01563,1 -2.48438,1 -1.76562,0 -2.85937,-1.42187 l 0,3.95312 1.59375,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.46875 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 5.6875,3.17188 q 0,-1.125 -0.82813,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20312,0 -2.03125,0.8125 -0.82812,0.8125 -0.82812,1.9375 0,1.14062 0.82812,1.95312 0.82813,0.8125 2.03125,0.8125 1.17188,0 2,-0.8125 0.82813,-0.8125 0.82813,-1.95312 z m 8.27344,3.59375 0,-0.95313 q -1.42188,1.21875 -3.04688,1.21875 -1.1875,0 -1.85937,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45312,0 0.98437,0.0625 0.53125,0.0625 1.14063,0.1875 l 0,-1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76563,0 -2.14063,0.45312 -0.25,0.0781 -0.32812,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10937,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70312,0.60938 0.70312,1.39063 l 0,4.34375 0.875,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -1.54687,0 z m 0,-3.26563 q -0.45313,-0.14062 -0.96875,-0.20312 -0.51563,-0.0625 -1.09375,-0.0625 -1.42188,0 -2.23438,0.625 -0.60937,0.45312 -0.60937,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35937,0.40625 0.84375,0 1.57813,-0.32813 0.73437,-0.34375 1.5,-1.09375 l 0,-1.4375 z m 10.46093,-2.84375 0,-0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23437,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73437,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45313,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82812,2.09375 0.84375,0.82813 2.17188,0.82813 0.76562,0 1.54687,-0.28125 0.79688,-0.28125 1.4375,-0.90625 0.17188,-0.15625 0.29688,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79688,0.85937 -1.26562,0.84375 -2.82812,0.84375 -1.59375,0 -2.60938,-1.01562 -1.01562,-1.01563 -1.01562,-2.57813 0,-1.57812 1.03125,-2.625 1.04687,-1.04687 2.64062,-1.04687 1.5,0 2.53125,0.89062 z m 5.52344,3.1875 0,2.92188 -1.53125,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 0.875,0 0,-8.48438 -0.875,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 1.53125,0 0,6.04687 2.79688,-2.34375 -0.34375,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 2.10937,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 l -0.76562,0 -2.5625,2.14063 3.25,3.3125 0.75,0 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -2.125,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.46875,0 -2.82813,-2.90625 -0.75,0.64062 z m 14.492191,-0.3125 -6.687501,0 q 0.171871,1.28125 1.062501,2.0625 0.89062,0.76563 2.21875,0.76563 0.73437,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26562,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95312,0.34375 -1.95312,0.34375 -1.6875,0 -2.82813,-1.10937 -1.125001,-1.10938 -1.125001,-2.6875 0,-1.42188 1.062501,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60938,0 2.64063,1.04687 1.04687,1.04688 1.03125,2.71875 z m -0.67188,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82812,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98437,0.67187 -0.82813,0.67188 -1.031251,1.78125 l 6.015621,0 z m 5.36719,-2.875 3.5625,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45313,0.95313 0.46875,0.375 1.34375,0.375 0.67187,0 1.4375,-0.1875 0.78125,-0.20313 1.20312,-0.45313 0.15625,-0.10937 0.26563,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10938,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95312,0.29687 -1.84375,0.29687 -1.14062,0 -1.82812,-0.54687 -0.67188,-0.54688 -0.67188,-1.45313 l 0,-4.375 -1.21875,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.9375 z m 15.32031,11.15625 -8.73437,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 l 8.73437,0 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 z m 3.88282,-11.15625 3.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 l -3.5625,0 0,4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 l 0,-4.375 -1.21875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 0,-1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.9375 z m 10.16406,0 0,1.65625 q 1.28125,-1.15625 1.92187,-1.48437 0.64063,-0.34375 1.17188,-0.34375 0.59375,0 1.09375,0.40625 0.5,0.39062 0.5,0.59375 0,0.14062 -0.0937,0.25 -0.0937,0.0937 -0.25,0.0937 -0.0781,0 -0.14063,-0.0312 -0.0469,-0.0312 -0.1875,-0.17188 -0.28125,-0.28125 -0.48437,-0.375 -0.20313,-0.10937 -0.39063,-0.10937 -0.4375,0 -1.04687,0.34375 -0.59375,0.34375 -2.09375,1.6875 l 0,3.59375 2.90625,0 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -5.14063,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.21875 0.0937,-0.0937 0.34375,-0.0937 l 1.57813,0 0,-5.46875 -1.20313,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.0937,-0.0937 0.34375,-0.0937 l 1.85938,0 z m 12.63281,6.76563 0,-0.96875 q -1.34375,1.23437 -2.90625,1.23437 -0.95312,0 -1.45312,-0.53125 -0.65625,-0.6875 -0.65625,-1.60937 l 0,-4.23438 -0.875,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.53125,0 0,4.89063 q 0,0.64062 0.40625,1.0625 0.40625,0.40625 1.01562,0.40625 1.60938,0 2.9375,-1.46875 l 0,-4.23438 -1.20312,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.85937,0 0,6.10938 0.5625,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -1.21875,0 z m 5.24219,-6.76563 0,0.98438 q 0.6875,-0.6875 1.23437,-0.95313 0.5625,-0.26562 1.25,-0.26562 0.75,0 1.375,0.3125 0.4375,0.23437 0.78125,0.78125 0.35938,0.54687 0.35938,1.10937 l 0,4.14063 0.5625,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -1.76563,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 0.54688,0 0,-4.03125 q 0,-0.6875 -0.51563,-1.17188 -0.5,-0.48437 -1.34375,-0.48437 -0.65625,0 -1.14062,0.26562 -0.46875,0.26563 -1.34375,1.29688 l 0,4.125 0.73437,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -2.14062,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.75,0 0,-5.45313 -0.5625,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 l 1.21875,0 z m 14.46094,0.65625 0,-0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 l 0,1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23438,0.0937 -0.14062,0 -0.23437,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73438,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45312,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82813,2.09375 0.84375,0.82813 2.17187,0.82813 0.76563,0 1.54688,-0.28125 0.79687,-0.28125 1.4375,-0.90625 0.17187,-0.15625 0.29687,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79687,0.85937 -1.26563,0.84375 -2.82813,0.84375 -1.59375,0 -2.60937,-1.01562 -1.01563,-1.01563 -1.01563,-2.57813 0,-1.57812 1.03125,-2.625 1.04688,-1.04687 2.64063,-1.04687 1.5,0 2.53125,0.89062 z m 11.22656,10.5 -8.73438,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 l 8.73438,0 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 3.07031,-14.20312 0,4.04687 q 0.625,-0.6875 1.20313,-0.95312 0.57812,-0.28125 1.28125,-0.28125 0.76562,0 1.29687,0.26562 0.54688,0.26563 0.90625,0.82813 0.35938,0.5625 0.35938,1.17187 l 0,4.07813 0.73437,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -2.14062,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.73437,0 0,-4.03125 q 0,-0.70313 -0.51562,-1.17188 -0.5,-0.48437 -1.42188,-0.48437 -0.71875,0 -1.21875,0.34375 -0.375,0.25 -1.21875,1.1875 l 0,4.15625 0.75,0 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 l -2.14062,0 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 l 0.73437,0 0,-8.48438 -0.875,0 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 l 1.53125,0 z m 15.32031,6.57812 -6.6875,0 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76563 2.21875,0.76563 0.73438,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04687 1.04688,1.04688 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67187 -0.82812,0.67188 -1.03125,1.78125 l 6.01563,0 z m 8.60156,3.89063 0,-0.95313 q -1.42187,1.21875 -3.04687,1.21875 -1.1875,0 -1.85938,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45313,0 0.98438,0.0625 0.53125,0.0625 1.14062,0.1875 l 0,-1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76562,0 -2.14062,0.45312 -0.25,0.0781 -0.32813,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10938,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70313,0.60938 0.70313,1.39063 l 0,4.34375 0.875,0 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 l -1.54688,0 z m 0,-3.26563 q -0.45312,-0.14062 -0.96875,-0.20312 -0.51562,-0.0625 -1.09375,-0.0625 -1.42187,0 -2.23437,0.625 -0.60938,0.45312 -0.60938,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35938,0.40625 0.84375,0 1.57812,-0.32813 0.73438,-0.34375 1.5,-1.09375 l 0,-1.4375 z m 10.92969,-6.54687 0,9.15625 0.875,0 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 l -1.53125,0 0,-1.3125 q -1.14063,1.57812 -2.90625,1.57812 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48437 -1.29687,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89063,1.5625 l 0,-3.70313 -0.875,0 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.35938,-0.0937 l 1.53125,0 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01563,-0.85937 -1.17187,0 -2.01562,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01562,0.85938 1.17188,0 2.01563,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 6.97656,-0.51563 q 0,-0.90625 0.23438,-1.90625 0.23437,-1.01562 0.89062,-2.32812 0.67188,-1.32813 0.96875,-1.59375 0.0937,-0.0937 0.20313,-0.0937 0.14062,0 0.23437,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.0781 -0.0625,0.17188 -0.85938,1.57812 -1.23438,2.85937 -0.35937,1.28125 -0.35937,2.5625 0,1.28125 0.35937,2.5625 0.375,1.28125 1.23438,2.85938 0.0625,0.0937 0.0625,0.17187 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.23437,0.0937 -0.10938,0 -0.20313,-0.0781 -0.28125,-0.26562 -0.9375,-1.5625 -0.65625,-1.29687 -0.90625,-2.28125 -0.25,-1 -0.25,-2 z m 9.86719,0 q 0,0.90625 -0.23438,1.90625 -0.23437,1 -0.90625,2.32813 -0.65625,1.32812 -0.96875,1.59375 -0.0937,0.0937 -0.20312,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.0781 0.0469,-0.17187 0.85937,-1.57813 1.21875,-2.85938 0.375,-1.28125 0.375,-2.5625 0,-1.28125 -0.375,-2.5625 -0.35938,-1.28125 -1.21875,-2.85937 -0.0469,-0.0937 -0.0469,-0.17188 0,-0.14062 0.0937,-0.23437 0.0937,-0.0937 0.23438,-0.0937 0.10937,0 0.20312,0.0937 0.29688,0.26562 0.95313,1.5625 0.65625,1.28125 0.90625,2.28125 0.25,0.98437 0.25,1.98437 z"/>
+ <g clip-path="url(#g242026819a_0_105.0)" id="g177">
+ <path d="M 0,0 H 960 V 540 H 0 Z" id="path5" inkscape:connector-curvature="0" style="fill:#ffffff;fill-rule:evenodd"/>
+ <path d="m 205.7618,140.18097 h 491.4331 v 82.55118 H 205.7618 Z" id="path7" inkscape:connector-curvature="0" style="fill:#b6d7a8;fill-rule:evenodd"/>
+ <path d="m 205.7618,140.18097 h 491.4331 v 82.55118 H 205.7618 Z" id="path9" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 404.4981,181.1578 v -13.64063 h 1.53125 v 1.28125 q 0.53125,-0.75 1.20313,-1.125 0.6875,-0.375 1.64062,-0.375 1.26563,0 2.23438,0.65625 0.96875,0.64063 1.45312,1.82813 0.5,1.1875 0.5,2.59375 0,1.51562 -0.54687,2.73437 -0.54688,1.20313 -1.57813,1.84375 -1.03125,0.64063 -2.17187,0.64063 -0.84375,0 -1.51563,-0.34375 -0.65625,-0.35938 -1.07812,-0.89063 v 4.79688 z m 1.51563,-8.65625 q 0,1.90625 0.76562,2.8125 0.78125,0.90625 1.875,0.90625 1.10938,0 1.89063,-0.9375 0.79687,-0.9375 0.79687,-2.92188 0,-1.875 -0.78125,-2.8125 -0.76562,-0.9375 -1.84375,-0.9375 -1.0625,0 -1.89062,1 -0.8125,1 -0.8125,2.89063 z m 15.29757,3.65625 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 h -1.75 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 z m 10.51635,1.32812 1.64063,0.21875 q -0.26563,1.6875 -1.375,2.65625 -1.10938,0.95313 -2.73438,0.95313 -2.01562,0 -3.25,-1.3125 -1.21875,-1.32813 -1.21875,-3.79688 0,-1.59375 0.51563,-2.78125 0.53125,-1.20312 1.60937,-1.79687 1.09375,-0.60938 2.35938,-0.60938 1.60937,0 2.625,0.8125 1.01562,0.8125 1.3125,2.3125 l -1.625,0.25 q -0.23438,-1 -0.82813,-1.5 -0.59375,-0.5 -1.42187,-0.5 -1.26563,0 -2.0625,0.90625 -0.78125,0.90625 -0.78125,2.85938 0,1.98437 0.76562,2.89062 0.76563,0.89063 1.98438,0.89063 0.98437,0 1.64062,-0.59375 0.65625,-0.60938 0.84375,-1.85938 z m 2.90625,3.60938 V 163.7828 h 1.67188 v 7.75 l 3.95312,-4.01563 h 2.15625 l -3.76562,3.65625 4.14062,6.20313 h -2.0625 l -3.25,-5.03125 -1.17187,1.125 v 3.90625 z m 16.0625,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 h 5.5 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 12.76633,4.375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 v -5.65625 h -1.23438 v -1.3125 h 1.23438 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.3125 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z m 13.10098,1.5 v -1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 v -4.875 h 1.65625 v 13.59375 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 15.70386,3.70313 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 h -1.75 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 z m 7.73511,3.4375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 v -5.65625 h -1.23438 v -1.3125 h 1.23438 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.3125 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z m 7.96454,0.28125 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 h -1.75 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 z" id="path11" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 334.0672,203.37656 q -1.375,-1.75 -2.32812,-4.07813 -0.95313,-2.34375 -0.95313,-4.84375 0,-2.21875 0.70313,-4.23437 0.84375,-2.34375 2.57812,-4.67188 h 1.20313 q -1.125,1.92188 -1.48438,2.75 -0.5625,1.28125 -0.89062,2.67188 -0.40625,1.73437 -0.40625,3.48437 0,4.46875 2.78125,8.92188 z m 3.02518,-4 v -13.59375 h 1.67187 v 4.875 q 1.17188,-1.35938 2.95313,-1.35938 1.09375,0 1.89062,0.4375 0.8125,0.42188 1.15625,1.1875 0.35938,0.76563 0.35938,2.20313 v 6.25 h -1.67188 v -6.25 q 0,-1.25 -0.54687,-1.8125 -0.54688,-0.57813 -1.53125,-0.57813 -0.75,0 -1.40625,0.39063 -0.64063,0.375 -0.92188,1.04687 -0.28125,0.65625 -0.28125,1.8125 v 5.39063 z m 17.12573,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 h 5.5 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 15.54758,4.65625 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 h -1.75 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 z m 10.46948,4.9375 v -1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 v -4.875 h 1.65625 v 13.59375 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 16.01633,1.75 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42187,-1.32813 -1.26563,-1.32812 -1.26563,-3.73437 0,-2.48438 1.26563,-3.85938 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92188,2.48437 0.82812,0.85938 2.0625,0.85938 0.90625,0 1.54687,-0.46875 0.65625,-0.48438 1.04688,-1.54688 z m -5.48438,-2.70312 h 5.5 q -0.10937,-1.23438 -0.625,-1.85938 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.76563 -0.85938,2.04688 z m 9.09448,5.875 v -9.85938 h 1.5 v 1.5 q 0.57813,-1.04687 1.0625,-1.375 0.48438,-0.34375 1.07813,-0.34375 0.84375,0 1.71875,0.54688 l -0.57813,1.54687 q -0.60937,-0.35937 -1.23437,-0.35937 -0.54688,0 -0.98438,0.32812 -0.42187,0.32813 -0.60937,0.90625 -0.28125,0.89063 -0.28125,1.95313 v 5.15625 z m 5.55643,-2.9375 1.65625,-0.26563 q 0.14062,1 0.76562,1.53125 0.64063,0.51563 1.78125,0.51563 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.89063 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.60938 -0.35937,-1.32813 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.9375 0.39062,-0.28125 1.0625,-0.48437 0.67187,-0.20313 1.4375,-0.20313 1.17187,0 2.04687,0.34375 0.875,0.32813 1.28125,0.90625 0.42188,0.5625 0.57813,1.51563 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.39063 -0.48437,0.375 -0.48437,0.875 0,0.32812 0.20312,0.59375 0.20313,0.26562 0.64063,0.4375 0.25,0.0937 1.46875,0.4375 1.76562,0.46875 2.46875,0.76562 0.70312,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48438,1.57813 -0.48437,0.73437 -1.40625,1.14062 -0.92187,0.39063 -2.07812,0.39063 -1.92188,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 18.69891,0.73437 v -3.71875 h -3.70312 v -1.5625 h 3.70312 v -3.70312 h 1.57813 v 3.70312 h 3.6875 v 1.5625 h -3.6875 v 3.71875 z m 12.56266,5.98438 v -13.64063 h 1.53125 v 1.28125 q 0.53125,-0.75 1.20312,-1.125 0.6875,-0.375 1.64063,-0.375 1.26562,0 2.23437,0.65625 0.96875,0.64063 1.45313,1.82813 0.5,1.1875 0.5,2.59375 0,1.51562 -0.54688,2.73437 -0.54687,1.20313 -1.57812,1.84375 -1.03125,0.64063 -2.17188,0.64063 -0.84375,0 -1.51562,-0.34375 -0.65625,-0.35938 -1.07813,-0.89063 v 4.79688 z m 1.51562,-8.65625 q 0,1.90625 0.76563,2.8125 0.78125,0.90625 1.875,0.90625 1.10937,0 1.89062,-0.9375 0.79688,-0.9375 0.79688,-2.92188 0,-1.875 -0.78125,-2.8125 -0.76563,-0.9375 -1.84375,-0.9375 -1.0625,0 -1.89063,1 -0.8125,1 -0.8125,2.89063 z m 15.29758,3.65625 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 h -1.75 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 z m 4.00074,8.73437 -0.17188,-1.5625 q 0.54688,0.14063 0.95313,0.14063 0.54687,0 0.875,-0.1875 0.34375,-0.1875 0.5625,-0.51563 0.15625,-0.25 0.5,-1.25 0.0469,-0.14062 0.15625,-0.40625 l -3.73438,-9.875 h 1.79688 l 2.04687,5.71875 q 0.40625,1.07813 0.71875,2.28125 0.28125,-1.15625 0.6875,-2.25 l 2.09375,-5.75 h 1.67188 l -3.75,10.03125 q -0.59375,1.625 -0.9375,2.23438 -0.4375,0.82812 -1.01563,1.20312 -0.57812,0.39063 -1.375,0.39063 -0.48437,0 -1.07812,-0.20313 z m 9.375,-3.79687 v -13.59375 h 1.67187 v 13.59375 z m 3.55105,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 15.71948,3.70313 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.48438,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32813,-1.32813 0.32812,-0.59375 0.85937,-0.95312 0.53125,-0.35938 1.20313,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.64063,-0.23438 q 0.23438,-1.04687 0.73438,-1.6875 0.51562,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 h -1.75 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 z m 10.46948,4.9375 v -1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17187,0 -2.17187,-0.64063 -0.98438,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48437,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98438,-0.64063 2.20313,-0.64063 0.89062,0 1.57812,0.375 0.70313,0.375 1.14063,0.98438 v -4.875 h 1.65625 v 13.59375 z m -5.28125,-4.92188 q 0,1.89063 0.79688,2.82813 0.8125,0.9375 1.89062,0.9375 1.09375,0 1.85938,-0.89063 0.76562,-0.89062 0.76562,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92187,-0.95312 -1.10938,0 -1.85938,0.90625 -0.75,0.90625 -0.75,2.85937 z m 17.96527,2.71875 v -3.71875 h -3.70312 v -1.5625 h 3.70312 v -3.70312 h 1.57813 v 3.70312 h 3.6875 v 1.5625 h -3.6875 v 3.71875 z m 16.21884,0.70313 0.23438,1.48437 q -0.70313,0.14063 -1.26563,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70312,-0.75 -0.20313,-0.46875 -0.20313,-1.98438 v -5.65625 h -1.23434 v -1.3125 h 1.23434 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.3125 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29687,0.32812 0.20313,0.125 0.57813,0.125 0.26562,0 0.73437,-0.0781 z m 1.51142,1.5 v -9.85938 h 1.5 v 1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 v 5.15625 z m 12.66583,-1.21875 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 h -1.75 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 z m 4.09449,-6.75 v -1.90625 h 1.67187 v 1.90625 z m 0,11.6875 v -9.85938 h 1.67187 v 9.85938 z m 4.0979,0 v -13.59375 h 1.67187 v 13.59375 z m 10.92608,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 h 5.5 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.09448,5.875 v -9.85938 h 1.5 v 1.5 q 0.57813,-1.04687 1.0625,-1.375 0.48438,-0.34375 1.07813,-0.34375 0.84375,0 1.71875,0.54688 l -0.57813,1.54687 q -0.60937,-0.35937 -1.23437,-0.35937 -0.54688,0 -0.98438,0.32812 -0.42187,0.32813 -0.60937,0.90625 -0.28125,0.89063 -0.28125,1.95313 v 5.15625 z m 5.5564,-2.9375 1.65625,-0.26563 q 0.14062,1 0.76562,1.53125 0.64063,0.51563 1.78125,0.51563 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.89063 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.60938 -0.35937,-1.32813 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.9375 0.39062,-0.28125 1.0625,-0.48437 0.67187,-0.20313 1.4375,-0.20313 1.17187,0 2.04687,0.34375 0.875,0.32813 1.28125,0.90625 0.42188,0.5625 0.57813,1.51563 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.39063 -0.48437,0.375 -0.48437,0.875 0,0.32812 0.20312,0.59375 0.20313,0.26562 0.64063,0.4375 0.25,0.0937 1.46875,0.4375 1.76562,0.46875 2.46875,0.76562 0.70312,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48438,1.57813 -0.48437,0.73437 -1.40625,1.14062 -0.92187,0.39063 -2.07812,0.39063 -1.92188,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 11.09375,6.9375 h -1.1875 q 2.76562,-4.45313 2.76562,-8.92188 0,-1.73437 -0.39062,-3.45312 -0.32813,-1.39063 -0.89063,-2.67188 -0.35937,-0.84375 -1.48437,-2.78125 h 1.1875 q 1.75,2.32813 2.57812,4.67188 0.71875,2.01562 0.71875,4.23437 0,2.5 -0.96875,4.84375 -0.95312,2.32813 -2.32812,4.07813 z" id="path13" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 40.506943,140.18097 H 197.16836 v 82.55118 H 40.506943 Z" id="path15" inkscape:connector-curvature="0" style="fill:#b6d7a8;fill-rule:evenodd"/>
+ <path d="M 40.506943,140.18097 H 197.16836 v 82.55118 H 40.506943 Z" id="path17" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6"/>
+ <path d="m 78.08376,188.37656 v -13.59375 h 1.671875 v 4.875 q 1.171875,-1.35938 2.953125,-1.35938 1.09375,0 1.890625,0.4375 0.8125,0.42188 1.15625,1.1875 0.359375,0.76563 0.359375,2.20313 v 6.25 h -1.671875 v -6.25 q 0,-1.25 -0.546875,-1.8125 -0.546875,-0.57813 -1.53125,-0.57813 -0.75,0 -1.40625,0.39063 -0.640625,0.375 -0.921875,1.04687 -0.28125,0.65625 -0.28125,1.8125 v 5.39063 z m 17.125717,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.515625,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.421875,-1.32813 -1.265625,-1.32812 -1.265625,-3.73437 0,-2.48438 1.265625,-3.85938 1.28125,-1.375 3.328125,-1.375 1.984375,0 3.234375,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.01563,0.4375 h -7.34375 q 0.09375,1.625 0.921875,2.48437 0.828125,0.85938 2.0625,0.85938 0.90625,0 1.546875,-0.46875 0.65625,-0.48438 1.046875,-1.54688 z m -5.484375,-2.70312 h 5.5 q -0.109375,-1.23438 -0.625,-1.85938 -0.796875,-0.96875 -2.078125,-0.96875 -1.140625,0 -1.9375,0.78125 -0.78125,0.76563 -0.859375,2.04688 z m 15.547588,4.65625 q -0.9375,0.79687 -1.79687,1.125 -0.85938,0.3125 -1.84375,0.3125 -1.60938,0 -2.484376,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.328125,-1.32813 0.328125,-0.59375 0.859375,-0.95312 0.53125,-0.35938 1.203126,-0.54688 0.5,-0.14062 1.48437,-0.25 2.03125,-0.25 2.98438,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64063,-0.5625 -1.90625,-0.5625 -1.17188,0 -1.73438,0.40625 -0.5625,0.40625 -0.82812,1.46875 l -1.640626,-0.23438 q 0.234375,-1.04687 0.734375,-1.6875 0.515625,-0.64062 1.468751,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26562,0 2.04687,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51563,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10937,0.60938 0.4375,1.17188 h -1.75 q -0.26563,-0.51563 -0.32813,-1.21875 z m -0.14062,-3.71875 q -0.90625,0.35937 -2.73438,0.625 -1.03125,0.14062 -1.45312,0.32812 -0.42188,0.1875 -0.65625,0.54688 -0.23438,0.35937 -0.23438,0.79687 0,0.67188 0.5,1.125 0.51563,0.4375 1.48438,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10937,-1.15625 0.26563,-0.57813 0.26563,-1.67188 z m 10.46947,4.9375 v -1.25 q -0.9375,1.46875 -2.75,1.46875 -1.17188,0 -2.17188,-0.64063 -0.98437,-0.65625 -1.53125,-1.8125 -0.53125,-1.17187 -0.53125,-2.6875 0,-1.46875 0.48438,-2.67187 0.5,-1.20313 1.46875,-1.84375 0.98437,-0.64063 2.20312,-0.64063 0.89063,0 1.57813,0.375 0.70312,0.375 1.14062,0.98438 v -4.875 h 1.65625 v 13.59375 z m -5.28125,-4.92188 q 0,1.89063 0.79687,2.82813 0.8125,0.9375 1.89063,0.9375 1.09375,0 1.85937,-0.89063 0.76563,-0.89062 0.76563,-2.73437 0,-2.01563 -0.78125,-2.95313 -0.78125,-0.95312 -1.92188,-0.95312 -1.10937,0 -1.85937,0.90625 -0.75,0.90625 -0.75,2.85937 z m 9.25071,4.92188 v -9.85938 h 1.5 v 1.5 q 0.57813,-1.04687 1.0625,-1.375 0.48438,-0.34375 1.07813,-0.34375 0.84375,0 1.71875,0.54688 l -0.57813,1.54687 q -0.60937,-0.35937 -1.23437,-0.35937 -0.54688,0 -0.98438,0.32812 -0.42187,0.32813 -0.60937,0.90625 -0.28125,0.89063 -0.28125,1.95313 v 5.15625 z m 5.6033,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29687,1.32813 1.29687,3.67188 0,1.90625 -0.57812,3 -0.5625,1.07812 -1.65625,1.6875 -1.07813,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82812,-0.95313 0.82812,-2.89063 0,-1.82812 -0.82812,-2.76562 -0.82813,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 8.65696,0 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.28197,4.92188 v -9.85938 h 1.5 v 1.39063 q 0.45313,-0.71875 1.21875,-1.15625 0.78125,-0.45313 1.76563,-0.45313 1.09375,0 1.79687,0.45313 0.70313,0.45312 0.98438,1.28125 1.17187,-1.73438 3.04687,-1.73438 1.46875,0 2.25,0.8125 0.79688,0.8125 0.79688,2.5 v 6.76563 h -1.67188 v -6.20313 q 0,-1 -0.15625,-1.4375 -0.15625,-0.45312 -0.59375,-0.71875 -0.42187,-0.26562 -1,-0.26562 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 v 5.71875 h -1.67187 v -6.40625 q 0,-1.10938 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.35937 -0.85938,1.07812 -0.26562,0.71875 -0.26562,2.0625 v 5.10938 z" id="path19" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 705.8034,140.18097 h 127.87402 v 82.55118 H 705.8034 Z" id="path21" inkscape:connector-curvature="0" style="fill:#b6d7a8;fill-rule:evenodd"/>
+ <path d="m 705.8034,140.18097 h 127.87402 v 82.55118 H 705.8034 Z" id="path23" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6"/>
+ <path d="m 741.46985,186.87656 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 v -5.65625 h -1.23438 v -1.3125 h 1.23438 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.3125 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z m 7.96454,0.28125 q -0.9375,0.79687 -1.79688,1.125 -0.85937,0.3125 -1.84375,0.3125 -1.60937,0 -2.48437,-0.78125 -0.875,-0.79688 -0.875,-2.03125 0,-0.73438 0.32812,-1.32813 0.32813,-0.59375 0.85938,-0.95312 0.53125,-0.35938 1.20312,-0.54688 0.5,-0.14062 1.48438,-0.25 2.03125,-0.25 2.98437,-0.57812 0,-0.34375 0,-0.4375 0,-1.01563 -0.46875,-1.4375 -0.64062,-0.5625 -1.90625,-0.5625 -1.17187,0 -1.73437,0.40625 -0.5625,0.40625 -0.82813,1.46875 l -1.64062,-0.23438 q 0.23437,-1.04687 0.73437,-1.6875 0.51563,-0.64062 1.46875,-0.98437 0.96875,-0.35938 2.25,-0.35938 1.26563,0 2.04688,0.29688 0.78125,0.29687 1.15625,0.75 0.375,0.45312 0.51562,1.14062 0.0937,0.42188 0.0937,1.53125 v 2.23438 q 0,2.32812 0.0937,2.95312 0.10938,0.60938 0.4375,1.17188 h -1.75 q -0.26562,-0.51563 -0.32812,-1.21875 z m -0.14063,-3.71875 q -0.90625,0.35937 -2.73437,0.625 -1.03125,0.14062 -1.45313,0.32812 -0.42187,0.1875 -0.65625,0.54688 -0.23437,0.35937 -0.23437,0.79687 0,0.67188 0.5,1.125 0.51562,0.4375 1.48437,0.4375 0.96875,0 1.71875,-0.42187 0.75,-0.4375 1.10938,-1.15625 0.26562,-0.57813 0.26562,-1.67188 z m 4.09449,-6.75 v -1.90625 h 1.67187 v 1.90625 z m 0,11.6875 v -9.85938 h 1.67187 v 9.85938 z m 4.09796,0 v -13.59375 h 1.67187 v 13.59375 z m 4.16046,0 v -9.85938 h 1.5 v 1.5 q 0.57812,-1.04687 1.0625,-1.375 0.48437,-0.34375 1.07812,-0.34375 0.84375,0 1.71875,0.54688 l -0.57812,1.54687 q -0.60938,-0.35937 -1.23438,-0.35937 -0.54687,0 -0.98437,0.32812 -0.42188,0.32813 -0.60938,0.90625 -0.28125,0.89063 -0.28125,1.95313 v 5.15625 z m 5.60327,-4.92188 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 8.65698,0 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.28198,4.92188 v -9.85938 h 1.5 v 1.39063 q 0.45313,-0.71875 1.21875,-1.15625 0.78125,-0.45313 1.76563,-0.45313 1.09375,0 1.79687,0.45313 0.70313,0.45312 0.98438,1.28125 1.17187,-1.73438 3.04687,-1.73438 1.46875,0 2.25,0.8125 0.79688,0.8125 0.79688,2.5 v 6.76563 h -1.67188 v -6.20313 q 0,-1 -0.15625,-1.4375 -0.15625,-0.45312 -0.59375,-0.71875 -0.42187,-0.26562 -1,-0.26562 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 v 5.71875 h -1.67187 v -6.40625 q 0,-1.10938 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.35937 -0.85938,1.07812 -0.26562,0.71875 -0.26562,2.0625 v 5.10938 z" id="path25" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 320.72168,17.225918 h 718.51962 v 26.58268 H 320.72168 Z" id="path27" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 337.65918,32.441006 q 0,1.40625 -1.01563,2.40625 -1,0.984375 -2.42187,0.984375 -1.4375,0 -2.4375,-1 -1,-1 -1,-2.390625 0,-1.40625 1,-2.40625 1,-1 2.4375,-1 1.42187,0 2.42187,1 1.01563,0.984375 1.01563,2.40625 z m -0.625,0 q 0,-1.15625 -0.82813,-1.96875 -0.8125,-0.8125 -1.98437,-0.8125 -1.17188,0 -2,0.8125 -0.82813,0.8125 -0.82813,1.96875 0,1.140625 0.82813,1.96875 0.82812,0.8125 2,0.8125 1.17187,0 1.98437,-0.8125 0.82813,-0.8125 0.82813,-1.96875 z m 9.20459,-6.03125 v 8.578125 h 0.8125 q 0.23437,0 0.32812,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.32812,0.07813 h -1.4375 v -1.21875 q -1.0625,1.453125 -2.71875,1.453125 -0.82813,0 -1.59375,-0.4375 -0.76563,-0.4375 -1.21875,-1.25 -0.4375,-0.828125 -0.4375,-1.703125 0,-0.875 0.4375,-1.6875 0.45312,-0.828125 1.21875,-1.265625 0.76562,-0.453125 1.60937,-0.453125 1.60938,0 2.70313,1.46875 v -3.46875 h -0.8125 q -0.23438,0 -0.32813,-0.09375 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.125 0.0937,-0.203125 0.0937,-0.09375 0.32813,-0.09375 z m -0.625,6.03125 q 0,-1.171875 -0.79688,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.89062,0.8125 -0.79688,0.796875 -0.79688,1.96875 0,1.15625 0.79688,1.96875 0.79687,0.8125 1.89062,0.8125 1.09375,0 1.875,-0.8125 0.79688,-0.8125 0.79688,-1.96875 z m 4.29834,-3.1875 v 1.125 q 0.54687,-0.671875 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.421875 0.78125,0.421875 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.328125 -0.95312,2.265625 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 v 3.71875 h 1.48437 q 0.21875,0 0.3125,0.07813 0.10938,0.07813 0.10938,0.21875 0,0.140625 -0.10938,0.21875 -0.0937,0.09375 -0.3125,0.09375 h -2.9375 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.07813 -0.0937,-0.21875 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 h 0.82813 v -7.9375 h -0.82813 q -0.21875,0 -0.3125,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.0937,-0.09375 0.3125,-0.09375 z m 5.32812,2.984375 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.765625 -1.875,-0.765625 -1.125,0 -1.90625,0.765625 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.828125 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.765625 0.78125,-1.828125 z m 10.07959,7.46875 h -8.1875 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.07813 -0.0937,-0.21875 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 h 8.1875 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.21875 -0.0937,0.09375 -0.3125,0.09375 z m 2.59522,-10.453125 v 1.125 q 0.54687,-0.671875 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.421875 0.78125,0.421875 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.328125 -0.95312,2.265625 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 v 3.71875 h 1.48437 q 0.21875,0 0.3125,0.07813 0.10938,0.07813 0.10938,0.21875 0,0.140625 -0.10938,0.21875 -0.0937,0.09375 -0.3125,0.09375 h -2.9375 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.07813 -0.0937,-0.21875 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 h 0.82813 v -7.9375 h -0.82813 q -0.21875,0 -0.3125,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.0937,-0.09375 0.3125,-0.09375 z m 5.32812,2.984375 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.765625 -1.875,-0.765625 -1.125,0 -1.90625,0.765625 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.828125 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.765625 0.78125,-1.828125 z m 7.75147,3.359375 v -0.890625 q -1.34375,1.125 -2.85938,1.125 -1.10937,0 -1.73437,-0.546875 -0.60938,-0.5625 -0.60938,-1.375 0,-0.890625 0.8125,-1.5625 0.82813,-0.671875 2.39063,-0.671875 0.42187,0 0.92187,0.0625 0.5,0.04687 1.07813,0.171875 v -1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01563,0.421875 -0.23437,0.0625 -0.29687,0.0625 -0.10938,0 -0.20313,-0.07813 -0.0781,-0.09375 -0.0781,-0.21875 0,-0.125 0.0781,-0.203125 0.0937,-0.109375 0.82813,-0.296875 1.14062,-0.3125 1.71875,-0.3125 1.17187,0 1.8125,0.578125 0.65625,0.578125 0.65625,1.296875 v 4.078125 h 0.82812 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 z m 0,-3.0625 q -0.42188,-0.125 -0.90625,-0.171875 -0.48438,-0.0625 -1.01563,-0.0625 -1.34375,0 -2.10937,0.578125 -0.5625,0.421875 -0.5625,1.03125 0,0.546875 0.4375,0.9375 0.4375,0.375 1.26562,0.375 0.79688,0 1.48438,-0.3125 0.6875,-0.328125 1.40625,-1.015625 z m 9.79834,-2.65625 v -0.203125 q 0,-0.234375 0.0937,-0.328125 0.0937,-0.09375 0.21875,-0.09375 0.14062,0 0.21875,0.09375 0.0937,0.09375 0.0937,0.328125 v 1.390625 q 0,0.21875 -0.0937,0.328125 -0.0781,0.09375 -0.21875,0.09375 -0.125,0 -0.21875,-0.07813 -0.0781,-0.09375 -0.0937,-0.296875 -0.0312,-0.515625 -0.67188,-0.984375 -0.64062,-0.46875 -1.73437,-0.46875 -1.375,0 -2.07813,0.859375 -0.70312,0.859375 -0.70312,1.953125 0,1.203125 0.78125,1.984375 0.78125,0.765625 2.03125,0.765625 0.70312,0 1.45312,-0.265625 0.75,-0.265625 1.34375,-0.84375 0.15625,-0.15625 0.26563,-0.15625 0.125,0 0.20312,0.09375 0.0937,0.07813 0.0937,0.203125 0,0.3125 -0.73437,0.796875 -1.20313,0.78125 -2.65625,0.78125 -1.48438,0 -2.45313,-0.9375 -0.95312,-0.953125 -0.95312,-2.40625 0,-1.484375 0.96875,-2.46875 0.98437,-0.984375 2.46875,-0.984375 1.42187,0 2.375,0.84375 z m 5.18896,2.984375 v 2.734375 h -1.4375 q -0.21875,0 -0.3125,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 h 0.82813 v -7.953125 h -0.82813 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.125 0.0937,-0.203125 0.0937,-0.09375 0.3125,-0.09375 h 1.4375 v 5.671875 l 2.60938,-2.203125 h -0.3125 q -0.21875,0 -0.3125,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.0937,-0.09375 0.3125,-0.09375 h 1.96875 q 0.23437,0 0.32812,0.09375 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.32812,0.07813 h -0.70313 l -2.40625,2 3.04688,3.109375 h 0.70312 q 0.23438,0 0.32813,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.32813,0.07813 h -1.98437 q -0.21875,0 -0.32813,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.10938,-0.07813 0.32813,-0.07813 h 0.42187 l -2.64062,-2.71875 z m 13.57959,-0.296875 h -6.26562 q 0.15625,1.203125 1,1.9375 0.84375,0.71875 2.07812,0.71875 0.6875,0 1.4375,-0.21875 0.75,-0.234375 1.23438,-0.609375 0.14062,-0.109375 0.23437,-0.109375 0.125,0 0.20313,0.09375 0.0937,0.09375 0.0937,0.21875 0,0.125 -0.10938,0.234375 -0.35937,0.375 -1.26562,0.6875 -0.89063,0.3125 -1.82813,0.3125 -1.59375,0 -2.65625,-1.03125 -1.04687,-1.03125 -1.04687,-2.5 0,-1.34375 0.98437,-2.296875 1,-0.96875 2.46875,-0.96875 1.5,0 2.46875,0.984375 0.98438,0.984375 0.96875,2.546875 z m -0.625,-0.609375 q -0.17187,-1.03125 -0.95312,-1.65625 -0.78125,-0.640625 -1.85938,-0.640625 -1.07812,0 -1.85937,0.625 -0.76563,0.625 -0.96875,1.671875 z m 5.03272,-2.703125 h 3.34375 q 0.21875,0 0.3125,0.09375 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 h -3.34375 v 4.09375 q 0,0.53125 0.42187,0.890625 0.4375,0.359375 1.26563,0.359375 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.421875 0.15625,-0.09375 0.25,-0.09375 0.10937,0 0.20312,0.09375 0.0937,0.09375 0.0937,0.21875 0,0.109375 -0.0937,0.203125 -0.23437,0.234375 -1.14062,0.515625 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.359375 v -4.09375 h -1.125 q -0.21875,0 -0.32813,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.10938,-0.09375 0.32813,-0.09375 h 1.125 v -1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.09375 0.21875,-0.09375 0.14062,0 0.21875,0.09375 0.0937,0.09375 0.0937,0.3125 z m 14.36084,10.453125 h -8.1875 q -0.21875,0 -0.3125,-0.09375 -0.0937,-0.07813 -0.0937,-0.21875 0,-0.140625 0.0937,-0.21875 0.0937,-0.07813 0.3125,-0.07813 h 8.1875 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.21875 -0.0937,0.09375 -0.3125,0.09375 z m 7.92334,-13.296875 v 8.578125 h 0.8125 q 0.23437,0 0.32812,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.32812,0.07813 h -1.4375 v -1.21875 q -1.0625,1.453125 -2.71875,1.453125 -0.82813,0 -1.59375,-0.4375 -0.76563,-0.4375 -1.21875,-1.25 -0.4375,-0.828125 -0.4375,-1.703125 0,-0.875 0.4375,-1.6875 0.45312,-0.828125 1.21875,-1.265625 0.76562,-0.453125 1.60937,-0.453125 1.60938,0 2.70313,1.46875 v -3.46875 h -0.8125 q -0.23438,0 -0.32813,-0.09375 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.125 0.0937,-0.203125 0.0937,-0.09375 0.32813,-0.09375 z m -0.625,6.03125 q 0,-1.171875 -0.79688,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.89062,0.8125 -0.79688,0.796875 -0.79688,1.96875 0,1.15625 0.79688,1.96875 0.79687,0.8125 1.89062,0.8125 1.09375,0 1.875,-0.8125 0.79688,-0.8125 0.79688,-1.96875 z m 8.37646,3.15625 v -0.890625 q -1.34375,1.125 -2.85937,1.125 -1.10938,0 -1.73438,-0.546875 -0.60937,-0.5625 -0.60937,-1.375 0,-0.890625 0.8125,-1.5625 0.82812,-0.671875 2.39062,-0.671875 0.42188,0 0.92188,0.0625 0.5,0.04687 1.07812,0.171875 v -1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01562,0.421875 -0.23438,0.0625 -0.29688,0.0625 -0.10937,0 -0.20312,-0.07813 -0.0781,-0.09375 -0.0781,-0.21875 0,-0.125 0.0781,-0.203125 0.0937,-0.109375 0.82812,-0.296875 1.14063,-0.3125 1.71875,-0.3125 1.17188,0 1.8125,0.578125 0.65625,0.578125 0.65625,1.296875 v 4.078125 h 0.82813 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 z m 0,-3.0625 q -0.42187,-0.125 -0.90625,-0.171875 -0.48437,-0.0625 -1.01562,-0.0625 -1.34375,0 -2.10938,0.578125 -0.5625,0.421875 -0.5625,1.03125 0,0.546875 0.4375,0.9375 0.4375,0.375 1.26563,0.375 0.79687,0 1.48437,-0.3125 0.6875,-0.328125 1.40625,-1.015625 z m 5.97022,-3.28125 h 3.34375 q 0.21875,0 0.3125,0.09375 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 h -3.34375 v 4.09375 q 0,0.53125 0.42187,0.890625 0.4375,0.359375 1.26563,0.359375 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.421875 0.15625,-0.09375 0.25,-0.09375 0.10937,0 0.20312,0.09375 0.0937,0.09375 0.0937,0.21875 0,0.109375 -0.0937,0.203125 -0.23437,0.234375 -1.14062,0.515625 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.359375 v -4.09375 h -1.125 q -0.21875,0 -0.32813,-0.07813 -0.0937,-0.09375 -0.0937,-0.234375 0,-0.140625 0.0937,-0.21875 0.10938,-0.09375 0.32813,-0.09375 h 1.125 v -1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.09375 0.21875,-0.09375 0.14062,0 0.21875,0.09375 0.0937,0.09375 0.0937,0.3125 z m 12.03271,6.34375 v -0.890625 q -1.34375,1.125 -2.85937,1.125 -1.10938,0 -1.73438,-0.546875 -0.60937,-0.5625 -0.60937,-1.375 0,-0.890625 0.8125,-1.5625 0.82812,-0.671875 2.39062,-0.671875 0.42188,0 0.92188,0.0625 0.5,0.04687 1.07812,0.171875 v -1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.01562,0.421875 -0.23438,0.0625 -0.29688,0.0625 -0.10937,0 -0.20312,-0.07813 -0.0781,-0.09375 -0.0781,-0.21875 0,-0.125 0.0781,-0.203125 0.0937,-0.109375 0.82812,-0.296875 1.14063,-0.3125 1.71875,-0.3125 1.17188,0 1.8125,0.578125 0.65625,0.578125 0.65625,1.296875 v 4.078125 h 0.82813 q 0.21875,0 0.3125,0.07813 0.0937,0.07813 0.0937,0.21875 0,0.140625 -0.0937,0.234375 -0.0937,0.07813 -0.3125,0.07813 z m 0,-3.0625 q -0.42187,-0.125 -0.90625,-0.171875 -0.48437,-0.0625 -1.01562,-0.0625 -1.34375,0 -2.10938,0.578125 -0.5625,0.421875 -0.5625,1.03125 0,0.546875 0.4375,0.9375 0.4375,0.375 1.26563,0.375 0.79687,0 1.48437,-0.3125 0.6875,-0.328125 1.40625,-1.015625 z m 7.17334,-0.578125 q 0,-0.84375 0.21875,-1.78125 0.21875,-0.953125 0.82813,-2.1875 0.625,-1.25 0.92187,-1.5 0.0781,-0.07813 0.1875,-0.07813 0.125,0 0.21875,0.09375 0.0937,0.07813 0.0937,0.203125 0,0.07813 -0.0469,0.15625 -0.8125,1.484375 -1.15625,2.6875 -0.34375,1.203125 -0.34375,2.40625 0,1.203125 0.34375,2.40625 0.34375,1.203125 1.15625,2.671875 0.0469,0.09375 0.0469,0.15625 0,0.125 -0.0937,0.21875 -0.0937,0.09375 -0.21875,0.09375 -0.10937,0 -0.1875,-0.07813 -0.28125,-0.25 -0.89062,-1.46875 -0.60938,-1.203125 -0.84375,-2.125 -0.23438,-0.9375 -0.23438,-1.875 z m 9.25147,0 q 0,0.84375 -0.23438,1.78125 -0.21875,0.9375 -0.84375,2.171875 -0.60937,1.25 -0.90625,1.5 -0.0781,0.09375 -0.1875,0.09375 -0.125,0 -0.21875,-0.09375 -0.0937,-0.09375 -0.0937,-0.21875 0,-0.0625 0.0469,-0.15625 0.8125,-1.46875 1.15625,-2.671875 0.34375,-1.203125 0.34375,-2.40625 0,-1.203125 -0.34375,-2.40625 -0.34375,-1.203125 -1.15625,-2.6875 -0.0469,-0.07813 -0.0469,-0.15625 0,-0.125 0.0937,-0.203125 0.0937,-0.09375 0.21875,-0.09375 0.10938,0 0.1875,0.07813 0.28125,0.25 0.89063,1.453125 0.625,1.203125 0.85937,2.140625 0.23438,0.9375 0.23438,1.875 z" id="path29" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 499.66992,29.284756 h -7.09375 v -1.234375 h 7.09375 z m 0,3.265625 h -7.09375 v -1.234375 h 7.09375 z" id="path31" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 515.37103,34.64413 q -0.73437,0.609375 -1.40625,0.875 -0.67187,0.25 -1.45312,0.25 -1.28125,0 -1.96875,-0.625 -0.6875,-0.625 -0.6875,-1.59375 0,-0.578125 0.25,-1.046875 0.26562,-0.46875 0.6875,-0.75 0.42187,-0.296875 0.95312,-0.4375 0.375,-0.109375 1.17188,-0.203125 1.59375,-0.1875 2.34375,-0.453125 0.0156,-0.265625 0.0156,-0.34375 0,-0.8125 -0.375,-1.140625 -0.51562,-0.4375 -1.5,-0.4375 -0.9375,0 -1.39062,0.328125 -0.4375,0.3125 -0.64063,1.140625 l -1.29687,-0.171875 q 0.17187,-0.828125 0.57812,-1.328125 0.40625,-0.515625 1.17188,-0.78125 0.76562,-0.28125 1.76562,-0.28125 1,0 1.60938,0.234375 0.625,0.234375 0.92187,0.59375 0.29688,0.34375 0.40625,0.890625 0.0625,0.34375 0.0625,1.21875 v 1.75 q 0,1.84375 0.0781,2.328125 0.0937,0.484375 0.34375,0.9375 h -1.375 q -0.20313,-0.40625 -0.26563,-0.953125 z m -0.10937,-2.953125 q -0.71875,0.296875 -2.15625,0.5 -0.8125,0.125 -1.15625,0.265625 -0.32813,0.140625 -0.51563,0.421875 -0.17187,0.28125 -0.17187,0.625 0,0.53125 0.39062,0.890625 0.40625,0.34375 1.17188,0.34375 0.76562,0 1.35937,-0.328125 0.59375,-0.34375 0.875,-0.921875 0.20313,-0.4375 0.20313,-1.3125 z m 8.22924,3.90625 V 34.61288 q -0.73437,1.15625 -2.17187,1.15625 -0.92188,0 -1.70313,-0.5 -0.78125,-0.515625 -1.21875,-1.4375 -0.42187,-0.921875 -0.42187,-2.109375 0,-1.171875 0.39062,-2.109375 0.39063,-0.953125 1.15625,-1.453125 0.78125,-0.515625 1.73438,-0.515625 0.70312,0 1.25,0.296875 0.5625,0.296875 0.90625,0.765625 v -3.84375 h 1.3125 v 10.734375 z m -4.15625,-3.875 q 0,1.484375 0.625,2.234375 0.625,0.734375 1.48438,0.734375 0.85937,0 1.46875,-0.703125 0.60937,-0.71875 0.60937,-2.15625 0,-1.609375 -0.625,-2.34375 -0.60937,-0.75 -1.51562,-0.75 -0.875,0 -1.46875,0.71875 -0.57813,0.71875 -0.57813,2.265625 z m 12.30738,3.875 V 34.61288 q -0.73438,1.15625 -2.17188,1.15625 -0.92187,0 -1.70312,-0.5 -0.78125,-0.515625 -1.21875,-1.4375 -0.42188,-0.921875 -0.42188,-2.109375 0,-1.171875 0.39063,-2.109375 0.39062,-0.953125 1.15625,-1.453125 0.78125,-0.515625 1.73437,-0.515625 0.70313,0 1.25,0.296875 0.5625,0.296875 0.90625,0.765625 v -3.84375 h 1.3125 v 10.734375 z m -4.15625,-3.875 q 0,1.484375 0.625,2.234375 0.625,0.734375 1.48437,0.734375 0.85938,0 1.46875,-0.703125 0.60938,-0.71875 0.60938,-2.15625 0,-1.609375 -0.625,-2.34375 -0.60938,-0.75 -1.51563,-0.75 -0.875,0 -1.46875,0.71875 -0.57812,0.71875 -0.57812,2.265625 z m 7.24481,3.875 v -7.78125 h 1.1875 v 1.1875 q 0.45312,-0.828125 0.84375,-1.09375 0.39062,-0.265625 0.84375,-0.265625 0.67187,0 1.35937,0.421875 l -0.45312,1.21875 q -0.48438,-0.28125 -0.96875,-0.28125 -0.4375,0 -0.78125,0.265625 -0.34375,0.25 -0.48438,0.71875 -0.21875,0.703125 -0.21875,1.53125 v 4.078125 z m 10.22442,-2.5 1.35938,0.15625 q -0.3125,1.203125 -1.1875,1.859375 -0.875,0.65625 -2.23438,0.65625 -1.70312,0 -2.70312,-1.046875 -1,-1.046875 -1,-2.953125 0,-1.953125 1.01562,-3.03125 1.01563,-1.09375 2.625,-1.09375 1.5625,0 2.54688,1.0625 0.98437,1.0625 0.98437,2.984375 0,0.125 0,0.359375 h -5.8125 q 0.0781,1.28125 0.71875,1.96875 0.65625,0.671875 1.64063,0.671875 0.71875,0 1.23437,-0.375 0.51563,-0.390625 0.8125,-1.21875 z m -4.32812,-2.140625 h 4.34375 q -0.0937,-0.984375 -0.5,-1.46875 -0.625,-0.765625 -1.625,-0.765625 -0.92188,0 -1.54688,0.609375 -0.60937,0.609375 -0.67187,1.625 z m 6.6355,2.3125 1.29687,-0.203125 q 0.10938,0.78125 0.60938,1.203125 0.5,0.421875 1.40625,0.421875 0.90625,0 1.34375,-0.359375 0.4375,-0.375 0.4375,-0.875 0,-0.453125 -0.39063,-0.703125 -0.26562,-0.1875 -1.34375,-0.453125 -1.45312,-0.359375 -2.01562,-0.625 -0.54688,-0.28125 -0.84375,-0.75 -0.28125,-0.46875 -0.28125,-1.046875 0,-0.515625 0.23437,-0.953125 0.23438,-0.453125 0.64063,-0.734375 0.3125,-0.234375 0.84375,-0.390625 0.53125,-0.15625 1.14062,-0.15625 0.90625,0 1.59375,0.265625 0.70313,0.265625 1.03125,0.71875 0.32813,0.4375 0.45313,1.203125 l -1.28125,0.171875 q -0.0937,-0.609375 -0.51563,-0.9375 -0.42187,-0.34375 -1.1875,-0.34375 -0.90625,0 -1.29687,0.3125 -0.39063,0.296875 -0.39063,0.703125 0,0.25 0.15625,0.453125 0.17188,0.21875 0.51563,0.359375 0.1875,0.0625 1.15625,0.328125 1.40625,0.375 1.95312,0.609375 0.5625,0.234375 0.875,0.703125 0.3125,0.453125 0.3125,1.125 0,0.65625 -0.39062,1.234375 -0.375,0.578125 -1.10938,0.90625 -0.71875,0.3125 -1.64062,0.3125 -1.51563,0 -2.3125,-0.625 -0.78125,-0.625 -1,-1.875 z m 7.32812,0 1.29688,-0.203125 q 0.10937,0.78125 0.60937,1.203125 0.5,0.421875 1.40625,0.421875 0.90625,0 1.34375,-0.359375 0.4375,-0.375 0.4375,-0.875 0,-0.453125 -0.39062,-0.703125 -0.26563,-0.1875 -1.34375,-0.453125 -1.45313,-0.359375 -2.01563,-0.625 -0.54687,-0.28125 -0.84375,-0.75 -0.28125,-0.46875 -0.28125,-1.046875 0,-0.515625 0.23438,-0.953125 0.23437,-0.453125 0.64062,-0.734375 0.3125,-0.234375 0.84375,-0.390625 0.53125,-0.15625 1.14063,-0.15625 0.90625,0 1.59375,0.265625 0.70312,0.265625 1.03125,0.71875 0.32812,0.4375 0.45312,1.203125 l -1.28125,0.171875 q -0.0937,-0.609375 -0.51562,-0.9375 -0.42188,-0.34375 -1.1875,-0.34375 -0.90625,0 -1.29688,0.3125 -0.39062,0.296875 -0.39062,0.703125 0,0.25 0.15625,0.453125 0.17187,0.21875 0.51562,0.359375 0.1875,0.0625 1.15625,0.328125 1.40625,0.375 1.95313,0.609375 0.5625,0.234375 0.875,0.703125 0.3125,0.453125 0.3125,1.125 0,0.65625 -0.39063,1.234375 -0.375,0.578125 -1.10937,0.90625 -0.71875,0.3125 -1.64063,0.3125 -1.51562,0 -2.3125,-0.625 -0.78125,-0.625 -1,-1.875 z m 12.92188,1.375 q -0.73438,0.609375 -1.40625,0.875 -0.67188,0.25 -1.45313,0.25 -1.28125,0 -1.96875,-0.625 -0.6875,-0.625 -0.6875,-1.59375 0,-0.578125 0.25,-1.046875 0.26563,-0.46875 0.6875,-0.75 0.42188,-0.296875 0.95313,-0.4375 0.375,-0.109375 1.17187,-0.203125 1.59375,-0.1875 2.34375,-0.453125 0.0156,-0.265625 0.0156,-0.34375 0,-0.8125 -0.375,-1.140625 -0.51563,-0.4375 -1.5,-0.4375 -0.9375,0 -1.39063,0.328125 -0.4375,0.3125 -0.64062,1.140625 l -1.29688,-0.171875 q 0.17188,-0.828125 0.57813,-1.328125 0.40625,-0.515625 1.17187,-0.78125 0.76563,-0.28125 1.76563,-0.28125 1,0 1.60937,0.234375 0.625,0.234375 0.92188,0.59375 0.29687,0.34375 0.40625,0.890625 0.0625,0.34375 0.0625,1.21875 v 1.75 q 0,1.84375 0.0781,2.328125 0.0937,0.484375 0.34375,0.9375 h -1.375 q -0.20312,-0.40625 -0.26562,-0.953125 z m -0.10938,-2.953125 q -0.71875,0.296875 -2.15625,0.5 -0.8125,0.125 -1.15625,0.265625 -0.32812,0.140625 -0.51562,0.421875 -0.17188,0.28125 -0.17188,0.625 0,0.53125 0.39063,0.890625 0.40625,0.34375 1.17187,0.34375 0.76563,0 1.35938,-0.328125 0.59375,-0.34375 0.875,-0.921875 0.20312,-0.4375 0.20312,-1.3125 z m 4.40106,3.90625 h -1.21875 V 24.86288 h 1.3125 v 3.828125 q 0.84375,-1.046875 2.14063,-1.046875 0.71875,0 1.35937,0.296875 0.64063,0.28125 1.04688,0.8125 0.42187,0.515625 0.65625,1.265625 0.23437,0.734375 0.23437,1.578125 0,2 -1,3.09375 -0.98437,1.078125 -2.375,1.078125 -1.375,0 -2.15625,-1.140625 z m -0.0156,-3.953125 q 0,1.40625 0.39062,2.03125 0.60938,1.015625 1.67188,1.015625 0.875,0 1.5,-0.75 0.625,-0.75 0.625,-2.234375 0,-1.53125 -0.60938,-2.25 -0.59375,-0.734375 -1.45312,-0.734375 -0.85938,0 -1.5,0.75 -0.625,0.75 -0.625,2.171875 z m 6.96362,-5.265625 V 24.86288 h 1.3125 v 1.515625 z m 0,9.21875 v -7.78125 h 1.3125 v 7.78125 z m 3.20929,0 V 24.86288 h 1.32813 v 10.734375 z m 3.30304,-9.21875 V 24.86288 h 1.3125 v 1.515625 z m 0,9.21875 v -7.78125 h 1.3125 v 7.78125 z m 6.1311,-1.171875 0.1875,1.15625 q -0.5625,0.125 -1,0.125 -0.71875,0 -1.125,-0.234375 -0.39062,-0.234375 -0.54687,-0.59375 -0.15625,-0.375 -0.15625,-1.5625 v -4.46875 h -0.96875 v -1.03125 h 0.96875 V 25.89413 l 1.3125,-0.796875 v 2.71875 h 1.32812 v 1.03125 h -1.32812 v 4.546875 q 0,0.5625 0.0625,0.734375 0.0781,0.15625 0.23437,0.25 0.15625,0.09375 0.4375,0.09375 0.23438,0 0.59375,-0.04687 z m 1.13453,4.171875 -0.15625,-1.234375 q 0.4375,0.109375 0.75,0.109375 0.45312,0 0.70312,-0.15625 0.26563,-0.140625 0.4375,-0.40625 0.125,-0.1875 0.40625,-0.96875 0.0312,-0.109375 0.10938,-0.328125 l -2.95313,-7.796875 h 1.42188 l 1.625,4.5 q 0.3125,0.859375 0.5625,1.8125 0.23437,-0.90625 0.54687,-1.78125 l 1.65625,-4.53125 h 1.32813 l -2.96875,7.90625 q -0.46875,1.28125 -0.73438,1.765625 -0.35937,0.65625 -0.8125,0.953125 -0.45312,0.3125 -1.07812,0.3125 -0.375,0 -0.84375,-0.15625 z m 14.33758,-4.171875 0.1875,1.15625 q -0.5625,0.125 -1,0.125 -0.71875,0 -1.125,-0.234375 -0.39062,-0.234375 -0.54687,-0.59375 -0.15625,-0.375 -0.15625,-1.5625 v -4.46875 h -0.96875 v -1.03125 h 0.96875 V 25.89413 l 1.3125,-0.796875 v 2.71875 h 1.32812 v 1.03125 h -1.32812 v 4.546875 q 0,0.5625 0.0625,0.734375 0.0781,0.15625 0.23437,0.25 0.15625,0.09375 0.4375,0.09375 0.23438,0 0.59375,-0.04687 z m 0.69696,-2.71875 q 0,-2.15625 1.20313,-3.203125 1,-0.859375 2.4375,-0.859375 1.60937,0 2.625,1.046875 1.01562,1.046875 1.01562,2.90625 0,1.5 -0.45312,2.359375 -0.4375,0.859375 -1.3125,1.34375 -0.85938,0.46875 -1.875,0.46875 -1.625,0 -2.64063,-1.046875 -1,-1.046875 -1,-3.015625 z m 1.35938,0 q 0,1.5 0.64062,2.25 0.65625,0.734375 1.64063,0.734375 0.98437,0 1.64062,-0.75 0.65625,-0.75 0.65625,-2.28125 0,-1.4375 -0.65625,-2.171875 -0.65625,-0.75 -1.64062,-0.75 -0.98438,0 -1.64063,0.734375 -0.64062,0.734375 -0.64062,2.234375 z m 11.34808,6.875 V 27.816005 h 1.20313 v 1.015625 q 0.42187,-0.59375 0.95312,-0.890625 0.54688,-0.296875 1.3125,-0.296875 0.98438,0 1.75,0.515625 0.76563,0.515625 1.14063,1.453125 0.39062,0.921875 0.39062,2.03125 0,1.203125 -0.42187,2.15625 -0.42188,0.953125 -1.25,1.46875 -0.8125,0.5 -1.71875,0.5 -0.65625,0 -1.1875,-0.265625 -0.51563,-0.28125 -0.84375,-0.71875 v 3.796875 z m 1.20313,-6.828125 q 0,1.5 0.60937,2.21875 0.60938,0.71875 1.46875,0.71875 0.875,0 1.5,-0.734375 0.625,-0.75 0.625,-2.3125 0,-1.484375 -0.60937,-2.21875 -0.60938,-0.75 -1.45313,-0.75 -0.84375,0 -1.5,0.796875 -0.64062,0.78125 -0.64062,2.28125 z m 12.02612,2.890625 q -0.73438,0.609375 -1.40625,0.875 -0.67188,0.25 -1.45313,0.25 -1.28125,0 -1.96875,-0.625 -0.6875,-0.625 -0.6875,-1.59375 0,-0.578125 0.25,-1.046875 0.26563,-0.46875 0.6875,-0.75 0.42188,-0.296875 0.95313,-0.4375 0.375,-0.109375 1.17187,-0.203125 1.59375,-0.1875 2.34375,-0.453125 0.0156,-0.265625 0.0156,-0.34375 0,-0.8125 -0.375,-1.140625 -0.51563,-0.4375 -1.5,-0.4375 -0.9375,0 -1.39063,0.328125 -0.4375,0.3125 -0.64062,1.140625 l -1.29688,-0.171875 q 0.17188,-0.828125 0.57813,-1.328125 0.40625,-0.515625 1.17187,-0.78125 0.76563,-0.28125 1.76563,-0.28125 1,0 1.60937,0.234375 0.625,0.234375 0.92188,0.59375 0.29687,0.34375 0.40625,0.890625 0.0625,0.34375 0.0625,1.21875 v 1.75 q 0,1.84375 0.0781,2.328125 0.0937,0.484375 0.34375,0.9375 h -1.375 q -0.20312,-0.40625 -0.26562,-0.953125 z m -0.10938,-2.953125 q -0.71875,0.296875 -2.15625,0.5 -0.8125,0.125 -1.15625,0.265625 -0.32812,0.140625 -0.51562,0.421875 -0.17188,0.28125 -0.17188,0.625 0,0.53125 0.39063,0.890625 0.40625,0.34375 1.17187,0.34375 0.76563,0 1.35938,-0.328125 0.59375,-0.34375 0.875,-0.921875 0.20312,-0.4375 0.20312,-1.3125 z m 8.2605,1.0625 1.29688,0.15625 q -0.20313,1.34375 -1.09375,2.109375 -0.875,0.75 -2.14063,0.75 -1.59375,0 -2.5625,-1.03125 -0.96875,-1.046875 -0.96875,-3 0,-1.265625 0.40625,-2.203125 0.42188,-0.953125 1.26563,-1.421875 0.85937,-0.46875 1.85937,-0.46875 1.26563,0 2.07813,0.640625 0.8125,0.640625 1.03125,1.8125 l -1.28125,0.203125 q -0.1875,-0.78125 -0.65625,-1.171875 -0.45313,-0.40625 -1.10938,-0.40625 -1,0 -1.625,0.71875 -0.625,0.71875 -0.625,2.265625 0,1.5625 0.59375,2.28125 0.60938,0.703125 1.57813,0.703125 0.78125,0 1.29687,-0.46875 0.51563,-0.484375 0.65625,-1.46875 z m 2.26563,2.84375 V 24.86288 h 1.3125 v 6.125 l 3.125,-3.171875 h 1.70312 l -2.96875,2.890625 3.26563,4.890625 h -1.625 l -2.5625,-3.984375 -0.9375,0.90625 v 3.078125 z m 12.64062,-2.5 1.35938,0.15625 q -0.3125,1.203125 -1.1875,1.859375 -0.875,0.65625 -2.23438,0.65625 -1.70312,0 -2.70312,-1.046875 -1,-1.046875 -1,-2.953125 0,-1.953125 1.01562,-3.03125 1.01563,-1.09375 2.625,-1.09375 1.5625,0 2.54688,1.0625 0.98437,1.0625 0.98437,2.984375 0,0.125 0,0.359375 h -5.8125 q 0.0781,1.28125 0.71875,1.96875 0.65625,0.671875 1.64063,0.671875 0.71875,0 1.23437,-0.375 0.51563,-0.390625 0.8125,-1.21875 z m -4.32812,-2.140625 h 4.34375 q -0.0937,-0.984375 -0.5,-1.46875 -0.625,-0.765625 -1.625,-0.765625 -0.92188,0 -1.54688,0.609375 -0.60937,0.609375 -0.67187,1.625 z m 10.04168,3.46875 0.1875,1.15625 q -0.5625,0.125 -1,0.125 -0.71875,0 -1.125,-0.234375 -0.39062,-0.234375 -0.54687,-0.59375 -0.15625,-0.375 -0.15625,-1.5625 v -4.46875 h -0.96875 v -1.03125 h 0.96875 V 25.89413 l 1.3125,-0.796875 v 2.71875 h 1.32812 v 1.03125 h -1.32812 v 4.546875 q 0,0.5625 0.0625,0.734375 0.0781,0.15625 0.23437,0.25 0.15625,0.09375 0.4375,0.09375 0.23438,0 0.59375,-0.04687 z m 4.76899,-2.71875 q 0,-2.15625 1.20312,-3.203125 1,-0.859375 2.4375,-0.859375 1.60938,0 2.625,1.046875 1.01563,1.046875 1.01563,2.90625 0,1.5 -0.45313,2.359375 -0.4375,0.859375 -1.3125,1.34375 -0.85937,0.46875 -1.875,0.46875 -1.625,0 -2.64062,-1.046875 -1,-1.046875 -1,-3.015625 z m 1.35937,0 q 0,1.5 0.64063,2.25 0.65625,0.734375 1.64062,0.734375 0.98438,0 1.64063,-0.75 0.65625,-0.75 0.65625,-2.28125 0,-1.4375 -0.65625,-2.171875 -0.65625,-0.75 -1.64063,-0.75 -0.98437,0 -1.64062,0.734375 -0.64063,0.734375 -0.64063,2.234375 z m 7.58862,3.890625 v -6.75 h -1.15625 v -1.03125 h 1.15625 V 26.98788 q 0,-0.78125 0.14063,-1.15625 0.20312,-0.515625 0.67187,-0.828125 0.48438,-0.328125 1.34375,-0.328125 0.5625,0 1.23438,0.140625 l -0.20313,1.140625 q -0.40625,-0.07813 -0.76562,-0.07813 -0.60938,0 -0.85938,0.265625 -0.25,0.25 -0.25,0.953125 V 27.816 h 1.51563 v 1.03125 h -1.51563 v 6.75 z m 4.07196,0 v -6.75 h -1.15625 v -1.03125 h 1.15625 V 26.98788 q 0,-0.78125 0.14063,-1.15625 0.20312,-0.515625 0.67187,-0.828125 0.48438,-0.328125 1.34375,-0.328125 0.5625,0 1.23438,0.140625 l -0.20313,1.140625 q -0.40625,-0.07813 -0.76562,-0.07813 -0.60938,0 -0.85938,0.265625 -0.25,0.25 -0.25,0.953125 V 27.816 h 1.51563 v 1.03125 h -1.51563 v 6.75 z m 3.24384,-2.328125 1.29687,-0.203125 q 0.10938,0.78125 0.60938,1.203125 0.5,0.421875 1.40625,0.421875 0.90625,0 1.34375,-0.359375 0.4375,-0.375 0.4375,-0.875 0,-0.453125 -0.39063,-0.703125 -0.26562,-0.1875 -1.34375,-0.453125 -1.45312,-0.359375 -2.01562,-0.625 -0.54688,-0.28125 -0.84375,-0.75 -0.28125,-0.46875 -0.28125,-1.046875 0,-0.515625 0.23437,-0.953125 0.23438,-0.453125 0.64063,-0.734375 0.3125,-0.234375 0.84375,-0.390625 0.53125,-0.15625 1.14062,-0.15625 0.90625,0 1.59375,0.265625 0.70313,0.265625 1.03125,0.71875 0.32813,0.4375 0.45313,1.203125 l -1.28125,0.171875 q -0.0937,-0.609375 -0.51563,-0.9375 -0.42187,-0.34375 -1.1875,-0.34375 -0.90625,0 -1.29687,0.3125 -0.39063,0.296875 -0.39063,0.703125 0,0.25 0.15625,0.453125 0.17188,0.21875 0.51563,0.359375 0.1875,0.0625 1.15625,0.328125 1.40625,0.375 1.95312,0.609375 0.5625,0.234375 0.875,0.703125 0.3125,0.453125 0.3125,1.125 0,0.65625 -0.39062,1.234375 -0.375,0.578125 -1.10938,0.90625 -0.71875,0.3125 -1.64062,0.3125 -1.51563,0 -2.3125,-0.625 -0.78125,-0.625 -1,-1.875 z m 13.17187,-0.171875 1.35938,0.15625 q -0.3125,1.203125 -1.1875,1.859375 -0.875,0.65625 -2.23438,0.65625 -1.70312,0 -2.70312,-1.046875 -1,-1.046875 -1,-2.953125 0,-1.953125 1.01562,-3.03125 1.01563,-1.09375 2.625,-1.09375 1.5625,0 2.54688,1.0625 0.98437,1.0625 0.98437,2.984375 0,0.125 0,0.359375 h -5.8125 q 0.0781,1.28125 0.71875,1.96875 0.65625,0.671875 1.64063,0.671875 0.71875,0 1.23437,-0.375 0.51563,-0.390625 0.8125,-1.21875 z m -4.32812,-2.140625 h 4.34375 q -0.0937,-0.984375 -0.5,-1.46875 -0.625,-0.765625 -1.625,-0.765625 -0.92188,0 -1.54688,0.609375 -0.60937,0.609375 -0.67187,1.625 z m 10.04175,3.46875 0.1875,1.15625 q -0.5625,0.125 -1,0.125 -0.71875,0 -1.125,-0.234375 -0.39063,-0.234375 -0.54688,-0.59375 -0.15625,-0.375 -0.15625,-1.5625 v -4.46875 h -0.96875 v -1.03125 h 0.96875 V 25.89413 l 1.3125,-0.796875 v 2.71875 h 1.32813 v 1.03125 h -1.32813 v 4.546875 q 0,0.5625 0.0625,0.734375 0.0781,0.15625 0.23438,0.25 0.15625,0.09375 0.4375,0.09375 0.23437,0 0.59375,-0.04687 z m 4.89392,-4.125 q 0,-1.90625 0.39062,-3.0625 0.39063,-1.15625 1.15625,-1.78125 0.78125,-0.640625 1.95313,-0.640625 0.85937,0 1.51562,0.359375 0.65625,0.34375 1.07813,1 0.42187,0.640625 0.65625,1.59375 0.25,0.9375 0.25,2.53125 0,1.890625 -0.39063,3.0625 -0.39062,1.15625 -1.17187,1.796875 -0.76563,0.625 -1.9375,0.625 -1.54688,0 -2.4375,-1.125 -1.0625,-1.328125 -1.0625,-4.359375 z m 1.35937,0 q 0,2.640625 0.60938,3.515625 0.625,0.875 1.53125,0.875 0.90625,0 1.51562,-0.875 0.625,-0.875 0.625,-3.515625 0,-2.65625 -0.625,-3.515625 -0.60937,-0.875 -1.53125,-0.875 -0.90625,0 -1.45312,0.765625 -0.67188,0.984375 -0.67188,3.625 z" id="path33" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 404.06763,94.94776 1.4173,177.00787" id="path35" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 404.06763,94.94776 1.4173,177.00787" id="path37" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:8, 6"/>
+ <path d="m 641.1724,94.94776 1.4173,177.00787" id="path39" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 641.1724,94.94776 1.4173,177.00787" id="path41" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:8, 6"/>
+ <path d="m 41.94394,133.28992 v 0 c 0,-12.48946 1.32431,-22.61417 2.957935,-22.61417 H 218.60806 c 1.63362,0 2.95793,-10.12471 2.95793,-22.614178 v 0 c 0,5.99765 0.31164,11.749657 0.86636,15.990638 0.55472,4.24098 1.30708,6.62354 2.09158,6.62354 h 173.70618 c 1.63361,0 2.95792,10.12471 2.95792,22.61417 z" id="path43" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 41.94394,133.28992 v 0 c 0,-12.48946 1.32431,-22.61417 2.957935,-22.61417 H 218.60806 c 1.63362,0 2.95793,-10.12471 2.95793,-22.614178 v 0 c 0,5.99765 0.31164,11.749657 0.86636,15.990638 0.55472,4.24098 1.30708,6.62354 2.09158,6.62354 h 173.70618 c 1.63361,0 2.95792,10.12471 2.95792,22.61417" id="path45" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 41.94394,133.28992 v 0 c 0,-12.48946 1.32431,-22.61417 2.957935,-22.61417 H 218.60806 c 1.63362,0 2.95793,-10.12471 2.95793,-22.614178 v 0 c 0,5.99765 0.31164,11.749657 0.86636,15.990638 0.55472,4.24098 1.30708,6.62354 2.09158,6.62354 h 173.70618 c 1.63361,0 2.95792,10.12471 2.95792,22.61417" id="path47" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6"/>
+ <path d="m 408.3786,133.28992 v 0 c 0,-12.48946 1.32431,-22.61417 2.95795,-22.61417 H 518.9325 c 1.6336,0 2.95788,-10.12471 2.95788,-22.614178 v 0 c 0,5.99765 0.31165,11.749657 0.8664,15.990638 0.55468,4.24098 1.30706,6.62354 2.09155,6.62354 h 107.59595 c 1.63361,0 2.95795,10.12471 2.95795,22.61417 z" id="path49" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 408.3786,133.28992 v 0 c 0,-12.48946 1.32431,-22.61417 2.95795,-22.61417 H 518.9325 c 1.6336,0 2.95788,-10.12471 2.95788,-22.614178 v 0 c 0,5.99765 0.31165,11.749657 0.8664,15.990638 0.55468,4.24098 1.30706,6.62354 2.09155,6.62354 h 107.59595 c 1.63361,0 2.95795,10.12471 2.95795,22.61417" id="path51" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 408.3786,133.28992 v 0 c 0,-12.48946 1.32431,-22.61417 2.95795,-22.61417 H 518.9325 c 1.6336,0 2.95788,-10.12471 2.95788,-22.614178 v 0 c 0,5.99765 0.31165,11.749657 0.8664,15.990638 0.55468,4.24098 1.30706,6.62354 2.09155,6.62354 h 107.59595 c 1.63361,0 2.95795,10.12471 2.95795,22.61417" id="path53" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6"/>
+ <path d="m 648.39136,133.28992 v 0 c 0,-12.48946 1.32428,-22.61417 2.95795,-22.61417 h 88.90301 c 1.63361,0 2.95795,-10.12471 2.95795,-22.614178 v 0 c 0,5.99765 0.31164,11.749657 0.86633,15.990638 0.55475,4.24098 1.30707,6.62354 2.09162,6.62354 h 88.90301 c 1.63361,0 2.95795,10.12471 2.95795,22.61417 z" id="path55" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 648.39136,133.28992 v 0 c 0,-12.48946 1.32428,-22.61417 2.95795,-22.61417 h 88.90301 c 1.63361,0 2.95795,-10.12471 2.95795,-22.614178 v 0 c 0,5.99765 0.31164,11.749657 0.86633,15.990638 0.55475,4.24098 1.30707,6.62354 2.09162,6.62354 h 88.90301 c 1.63361,0 2.95795,10.12471 2.95795,22.61417" id="path57" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 648.39136,133.28992 v 0 c 0,-12.48946 1.32428,-22.61417 2.95795,-22.61417 h 88.90301 c 1.63361,0 2.95795,-10.12471 2.95795,-22.614178 v 0 c 0,5.99765 0.31164,11.749657 0.86633,15.990638 0.55475,4.24098 1.30707,6.62354 2.09162,6.62354 h 88.90301 c 1.63361,0 2.95795,10.12471 2.95795,22.61417" id="path59" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:2, 6"/>
+ <path d="m 138.22285,48.692505 h 168.15749 v 26.58268 H 138.22285 Z" id="path61" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 179.32266,65.96634 1.65625,-0.265625 q 0.14063,1 0.76563,1.53125 0.64062,0.515625 1.78125,0.515625 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.890625 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.796871 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.609375 -0.35938,-1.328125 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.484375 0.67188,-0.203125 1.4375,-0.203125 1.17188,0 2.04688,0.34375 0.875,0.328125 1.28125,0.90625 0.42187,0.5625 0.57812,1.515625 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.171875 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.390625 -0.48438,0.375 -0.48438,0.875 0,0.328125 0.20313,0.59375 0.20312,0.265625 0.64062,0.4375 0.25,0.09375 1.46875,0.4375 1.76563,0.46875 2.46875,0.765625 0.70313,0.296875 1.09375,0.874996 0.40625,0.578125 0.40625,1.4375 0,0.828125 -0.48437,1.578125 -0.48438,0.734375 -1.40625,1.140625 -0.92188,0.390625 -2.07813,0.390625 -1.92187,0 -2.9375,-0.796875 -1,-0.796875 -1.28125,-2.359375 z m 16.75,-0.234375 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42188,-1.328125 -1.26562,-1.328125 -1.26562,-3.734375 0,-2.484371 1.26562,-3.859371 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.796875 0,0.140621 -0.0156,0.437496 h -7.34375 q 0.0937,1.625 0.92187,2.484375 0.82813,0.859375 2.0625,0.859375 0.90625,0 1.54688,-0.46875 0.65625,-0.484375 1.04687,-1.546875 z m -5.48437,-2.703121 h 5.5 q -0.10938,-1.234375 -0.625,-1.859375 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.765625 -0.85937,2.046875 z m 8.81321,6.687496 1.60938,0.25 q 0.10937,0.75 0.57812,1.09375 0.60938,0.453125 1.6875,0.453125 1.17188,0 1.79688,-0.46875 0.625,-0.453125 0.85937,-1.28125 0.125,-0.515625 0.10938,-2.15625 -1.09375,1.296875 -2.71875,1.296875 -2.03125,0 -3.15625,-1.46875 -1.10938,-1.46875 -1.10938,-3.515621 0,-1.40625 0.51563,-2.59375 0.51562,-1.203125 1.48437,-1.84375 0.96875,-0.65625 2.26563,-0.65625 1.75,0 2.875,1.40625 v -1.1875 h 1.54687 v 8.515621 q 0,2.3125 -0.46875,3.265625 -0.46875,0.96875 -1.48437,1.515625 -1.01563,0.5625 -2.5,0.5625 -1.76563,0 -2.85938,-0.796875 -1.07812,-0.796875 -1.03125,-2.390625 z m 1.375,-5.921871 q 0,1.953121 0.76563,2.843746 0.78125,0.890625 1.9375,0.890625 1.14062,0 1.92187,-0.890625 0.78125,-0.890625 0.78125,-2.781246 0,-1.8125 -0.8125,-2.71875 -0.79687,-0.921875 -1.92187,-0.921875 -1.10938,0 -1.89063,0.90625 -0.78125,0.890625 -0.78125,2.671875 z m 9.29759,5.109371 v -9.859371 h 1.5 v 1.390625 q 0.45313,-0.71875 1.21875,-1.15625 0.78125,-0.453125 1.76563,-0.453125 1.09375,0 1.79687,0.453125 0.70313,0.453125 0.98438,1.28125 1.17187,-1.734375 3.04687,-1.734375 1.46875,0 2.25,0.8125 0.79688,0.8125 0.79688,2.5 v 6.765621 h -1.67188 v -6.203121 q 0,-1 -0.15625,-1.4375 -0.15625,-0.453125 -0.59375,-0.71875 -0.42187,-0.265625 -1,-0.265625 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 v 5.718746 h -1.67187 v -6.406246 q 0,-1.109375 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.359375 -0.85938,1.078125 -0.26562,0.71875 -0.26562,2.0625 v 5.109371 z m 22.29081,-3.171875 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42187,-1.328125 -1.26563,-1.328125 -1.26563,-3.734375 0,-2.484371 1.26563,-3.859371 1.28125,-1.375 3.32812,-1.375 1.98438,0 3.23438,1.34375 1.25,1.34375 1.25,3.796875 0,0.140621 -0.0156,0.437496 h -7.34375 q 0.0937,1.625 0.92188,2.484375 0.82812,0.859375 2.0625,0.859375 0.90625,0 1.54687,-0.46875 0.65625,-0.484375 1.04688,-1.546875 z m -5.48438,-2.703121 h 5.5 q -0.10937,-1.234375 -0.625,-1.859375 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.765625 -0.85938,2.046875 z m 9.11009,5.874996 v -9.859371 h 1.5 v 1.40625 q 1.09375,-1.625 3.14063,-1.625 0.89062,0 1.64062,0.328125 0.75,0.3125 1.10938,0.84375 0.375,0.515625 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 v 6.062496 h -1.67188 v -5.999996 q 0,-1.015625 -0.20312,-1.515625 -0.1875,-0.515625 -0.6875,-0.8125 -0.5,-0.296875 -1.17188,-0.296875 -1.0625,0 -1.84375,0.671875 -0.76562,0.671875 -0.76562,2.578125 v 5.374996 z m 14.03197,-1.5 0.23438,1.484375 q -0.70313,0.140625 -1.26563,0.140625 -0.90625,0 -1.40625,-0.28125 -0.5,-0.296875 -0.70312,-0.75 -0.20313,-0.46875 -0.20313,-1.984375 v -5.656246 h -1.23437 v -1.3125 h 1.23437 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.3125 h -1.6875 v 5.749996 q 0,0.71875 0.0781,0.921875 0.0937,0.203125 0.29687,0.328125 0.20313,0.125 0.57813,0.125 0.26562,0 0.73437,-0.07813 z m 6.24161,-5.203121 q 0,-2.421875 0.5,-3.890625 0.5,-1.46875 1.46875,-2.265625 0.98437,-0.796875 2.46875,-0.796875 1.09375,0 1.92187,0.4375 0.82813,0.4375 1.35938,1.28125 0.54687,0.828125 0.84375,2.015625 0.3125,1.1875 0.3125,3.21875 0,2.390621 -0.5,3.859371 -0.48438,1.46875 -1.46875,2.28125 -0.96875,0.796875 -2.46875,0.796875 -1.96875,0 -3.07813,-1.40625 -1.35937,-1.703125 -1.35937,-5.531246 z m 1.71875,0 q 0,3.343746 0.78125,4.453121 0.79687,1.109375 1.9375,1.109375 1.15625,0 1.9375,-1.109375 0.78125,-1.125 0.78125,-4.453121 0,-3.359375 -0.78125,-4.46875 -0.78125,-1.109375 -1.95313,-1.109375 -1.15625,0 -1.82812,0.984375 -0.875,1.234375 -0.875,4.59375 z" id="path63" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 438.55557,43.814564 H 606.71301 V 89.042908 H 438.55557 Z" id="path65" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 479.65536,70.41123 1.65625,-0.265625 q 0.14062,1 0.76562,1.53125 0.64063,0.515625 1.78125,0.515625 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.890625 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.796875 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.609375 -0.35937,-1.328125 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.937496 0.39062,-0.28125 1.0625,-0.484375 0.67187,-0.203125 1.4375,-0.203125 1.17187,0 2.04687,0.34375 0.875,0.328125 1.28125,0.906246 0.42188,0.5625 0.57813,1.515625 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.171875 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.390625 -0.48437,0.375 -0.48437,0.875 0,0.328125 0.20312,0.59375 0.20313,0.265625 0.64063,0.4375 0.25,0.09375 1.46875,0.4375 1.76562,0.46875 2.46875,0.765625 0.70312,0.296875 1.09375,0.875 0.40625,0.578125 0.40625,1.4375 0,0.828125 -0.48438,1.578125 -0.48437,0.734375 -1.40625,1.140625 -0.92187,0.390625 -2.07812,0.390625 -1.92188,0 -2.9375,-0.796875 -1,-0.796875 -1.28125,-2.359375 z m 16.75,-0.234375 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42187,-1.328125 -1.26563,-1.328125 -1.26563,-3.734375 0,-2.484375 1.26563,-3.859375 1.28125,-1.374996 3.32812,-1.374996 1.98438,0 3.23438,1.343746 1.25,1.34375 1.25,3.796875 0,0.140625 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92188,2.484375 0.82812,0.859375 2.0625,0.859375 0.90625,0 1.54687,-0.46875 0.65625,-0.484375 1.04688,-1.546875 z m -5.48438,-2.703125 h 5.5 q -0.10937,-1.234375 -0.625,-1.859375 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.765625 -0.85938,2.046875 z m 8.81324,6.6875 1.60937,0.25 q 0.10938,0.75 0.57813,1.09375 0.60937,0.453125 1.6875,0.453125 1.17187,0 1.79687,-0.46875 0.625,-0.453125 0.85938,-1.28125 0.125,-0.515625 0.10937,-2.15625 -1.09375,1.296875 -2.71875,1.296875 -2.03125,0 -3.15625,-1.46875 -1.10937,-1.46875 -1.10937,-3.515625 0,-1.40625 0.51562,-2.59375 0.51563,-1.203125 1.48438,-1.843746 0.96875,-0.65625 2.26562,-0.65625 1.75,0 2.875,1.406246 v -1.187496 h 1.54688 v 8.515621 q 0,2.3125 -0.46875,3.265625 -0.46875,0.96875 -1.48438,1.515625 -1.01562,0.5625 -2.5,0.5625 -1.76562,0 -2.85937,-0.796875 -1.07813,-0.796875 -1.03125,-2.390625 z m 1.375,-5.921875 q 0,1.953125 0.76562,2.84375 0.78125,0.890625 1.9375,0.890625 1.14063,0 1.92188,-0.890625 0.78125,-0.890625 0.78125,-2.78125 0,-1.8125 -0.8125,-2.71875 -0.79688,-0.921875 -1.92188,-0.921875 -1.10937,0 -1.89062,0.90625 -0.78125,0.890625 -0.78125,2.671875 z m 9.29757,5.109375 v -9.859371 h 1.5 v 1.390621 q 0.45313,-0.71875 1.21875,-1.156246 0.78125,-0.453125 1.76563,-0.453125 1.09375,0 1.79687,0.453125 0.70313,0.453121 0.98438,1.281246 1.17187,-1.734371 3.04687,-1.734371 1.46875,0 2.25,0.812496 0.79688,0.8125 0.79688,2.5 v 6.765625 h -1.67188 v -6.203125 q 0,-1 -0.15625,-1.4375 -0.15625,-0.453125 -0.59375,-0.71875 -0.42187,-0.265625 -1,-0.265625 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 v 5.71875 h -1.67187 v -6.40625 q 0,-1.109375 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.359375 -0.85938,1.078125 -0.26562,0.71875 -0.26562,2.0625 v 5.109375 z m 22.29084,-3.171875 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42187,-1.328125 -1.26563,-1.328125 -1.26563,-3.734375 0,-2.484375 1.26563,-3.859375 1.28125,-1.374996 3.32812,-1.374996 1.98438,0 3.23438,1.343746 1.25,1.34375 1.25,3.796875 0,0.140625 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92188,2.484375 0.82812,0.859375 2.0625,0.859375 0.90625,0 1.54687,-0.46875 0.65625,-0.484375 1.04688,-1.546875 z m -5.48438,-2.703125 h 5.5 q -0.10937,-1.234375 -0.625,-1.859375 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.765625 -0.85938,2.046875 z m 9.11005,5.875 v -9.859371 h 1.5 v 1.406246 q 1.09375,-1.624996 3.14062,-1.624996 0.89063,0 1.64063,0.328125 0.75,0.3125 1.10937,0.843746 0.375,0.515625 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 v 6.0625 H 542.667 v -6 q 0,-1.015625 -0.20313,-1.515625 -0.1875,-0.515625 -0.6875,-0.8125 -0.5,-0.296875 -1.17187,-0.296875 -1.0625,0 -1.84375,0.671875 -0.76563,0.671875 -0.76563,2.578125 v 5.375 z m 14.03198,-1.5 0.23437,1.484375 q -0.70312,0.140625 -1.26562,0.140625 -0.90625,0 -1.40625,-0.28125 -0.5,-0.296875 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.984375 v -5.65625 h -1.23438 v -1.312496 h 1.23438 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.312496 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.921875 0.0937,0.203125 0.29688,0.328125 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.07813 z m 12.53851,1.5 h -1.67187 V 62.708109 q -0.59375,0.578125 -1.57813,1.15625 -0.98437,0.562496 -1.76562,0.859371 v -1.624996 q 1.40625,-0.65625 2.45312,-1.59375 1.04688,-0.9375 1.48438,-1.8125 h 1.07812 z" id="path67" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 664.16437,43.814564 H 832.32184 V 89.042908 H 664.16437 Z" id="path69" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 705.26416,70.41123 1.65625,-0.265625 q 0.14062,1 0.76562,1.53125 0.64063,0.515625 1.78125,0.515625 1.15625,0 1.70313,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48438,-0.890625 -0.34375,-0.21875 -1.70312,-0.5625 -1.84375,-0.46875 -2.5625,-0.796875 -0.70313,-0.34375 -1.07813,-0.9375 -0.35937,-0.609375 -0.35937,-1.328125 0,-0.65625 0.29687,-1.21875 0.3125,-0.5625 0.82813,-0.937496 0.39062,-0.28125 1.0625,-0.484375 0.67187,-0.203125 1.4375,-0.203125 1.17187,0 2.04687,0.34375 0.875,0.328125 1.28125,0.906246 0.42188,0.5625 0.57813,1.515625 l -1.625,0.21875 q -0.10938,-0.75 -0.65625,-1.171875 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64063,0.390625 -0.48437,0.375 -0.48437,0.875 0,0.328125 0.20312,0.59375 0.20313,0.265625 0.64063,0.4375 0.25,0.09375 1.46875,0.4375 1.76562,0.46875 2.46875,0.765625 0.70312,0.296875 1.09375,0.875 0.40625,0.578125 0.40625,1.4375 0,0.828125 -0.48438,1.578125 -0.48437,0.734375 -1.40625,1.140625 -0.92187,0.390625 -2.07812,0.390625 -1.92188,0 -2.9375,-0.796875 -1,-0.796875 -1.28125,-2.359375 z m 16.75,-0.234375 1.71875,0.21875 q -0.40625,1.5 -1.51563,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42187,-1.328125 -1.26563,-1.328125 -1.26563,-3.734375 0,-2.484375 1.26563,-3.859375 1.28125,-1.374996 3.32812,-1.374996 1.98438,0 3.23438,1.343746 1.25,1.34375 1.25,3.796875 0,0.140625 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92188,2.484375 0.82812,0.859375 2.0625,0.859375 0.90625,0 1.54687,-0.46875 0.65625,-0.484375 1.04688,-1.546875 z m -5.48438,-2.703125 h 5.5 q -0.10937,-1.234375 -0.625,-1.859375 -0.79687,-0.96875 -2.07812,-0.96875 -1.14063,0 -1.9375,0.78125 -0.78125,0.765625 -0.85938,2.046875 z m 8.81324,6.6875 1.60937,0.25 q 0.10938,0.75 0.57813,1.09375 0.60937,0.453125 1.6875,0.453125 1.17187,0 1.79687,-0.46875 0.625,-0.453125 0.85938,-1.28125 0.125,-0.515625 0.10937,-2.15625 -1.09375,1.296875 -2.71875,1.296875 -2.03125,0 -3.15625,-1.46875 -1.10937,-1.46875 -1.10937,-3.515625 0,-1.40625 0.51562,-2.59375 0.51563,-1.203125 1.48438,-1.843746 0.96875,-0.65625 2.26562,-0.65625 1.75,0 2.875,1.406246 v -1.187496 h 1.54688 v 8.515621 q 0,2.3125 -0.46875,3.265625 -0.46875,0.96875 -1.48438,1.515625 -1.01562,0.5625 -2.5,0.5625 -1.76562,0 -2.85937,-0.796875 -1.07813,-0.796875 -1.03125,-2.390625 z m 1.375,-5.921875 q 0,1.953125 0.76562,2.84375 0.78125,0.890625 1.9375,0.890625 1.14063,0 1.92188,-0.890625 0.78125,-0.890625 0.78125,-2.78125 0,-1.8125 -0.8125,-2.71875 -0.79688,-0.921875 -1.92188,-0.921875 -1.10937,0 -1.89062,0.90625 -0.78125,0.890625 -0.78125,2.671875 z m 9.2976,5.109375 v -9.859371 h 1.5 v 1.390621 q 0.45313,-0.71875 1.21875,-1.156246 0.78125,-0.453125 1.76563,-0.453125 1.09375,0 1.79687,0.453125 0.70313,0.453121 0.98438,1.281246 1.17187,-1.734371 3.04687,-1.734371 1.46875,0 2.25,0.812496 0.79688,0.8125 0.79688,2.5 v 6.765625 h -1.67188 v -6.203125 q 0,-1 -0.15625,-1.4375 -0.15625,-0.453125 -0.59375,-0.71875 -0.42187,-0.265625 -1,-0.265625 -1.03125,0 -1.71875,0.6875 -0.6875,0.6875 -0.6875,2.21875 v 5.71875 H 741.875 v -6.40625 q 0,-1.109375 -0.40625,-1.65625 -0.40625,-0.5625 -1.34375,-0.5625 -0.70313,0 -1.3125,0.375 -0.59375,0.359375 -0.85938,1.078125 -0.26562,0.71875 -0.26562,2.0625 v 5.109375 z m 22.29077,-3.171875 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.828125 -2.8125,0.828125 -2.15625,0 -3.42188,-1.328125 -1.26562,-1.328125 -1.26562,-3.734375 0,-2.484375 1.26562,-3.859375 1.28125,-1.374996 3.32813,-1.374996 1.98437,0 3.23437,1.343746 1.25,1.34375 1.25,3.796875 0,0.140625 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92187,2.484375 0.82813,0.859375 2.0625,0.859375 0.90625,0 1.54688,-0.46875 0.65625,-0.484375 1.04687,-1.546875 z m -5.48437,-2.703125 h 5.5 q -0.10938,-1.234375 -0.625,-1.859375 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.765625 -0.85937,2.046875 z m 9.11011,5.875 v -9.859371 h 1.5 v 1.406246 q 1.09375,-1.624996 3.14062,-1.624996 0.89063,0 1.64063,0.328125 0.75,0.3125 1.10937,0.843746 0.375,0.515625 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 v 6.0625 h -1.67187 v -6 q 0,-1.015625 -0.20313,-1.515625 -0.1875,-0.515625 -0.6875,-0.8125 -0.5,-0.296875 -1.17187,-0.296875 -1.0625,0 -1.84375,0.671875 -0.76563,0.671875 -0.76563,2.578125 v 5.375 z m 14.03198,-1.5 0.23437,1.484375 q -0.70312,0.140625 -1.26562,0.140625 -0.90625,0 -1.40625,-0.28125 -0.5,-0.296875 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.984375 v -5.65625 h -1.23438 v -1.312496 h 1.23438 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.312496 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.921875 0.0937,0.203125 0.29688,0.328125 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.07813 z m 15.02283,-0.109375 v 1.609375 h -8.98438 q -0.0156,-0.609375 0.1875,-1.15625 0.34375,-0.921875 1.09375,-1.8125 0.76563,-0.890625 2.1875,-2.0625 2.21875,-1.8125 3,-2.875 0.78125,-1.0625 0.78125,-2.015621 0,-0.984375 -0.71875,-1.671875 -0.70312,-0.6875 -1.84375,-0.6875 -1.20312,0 -1.9375,0.734375 -0.71875,0.71875 -0.71875,2 l -1.71875,-0.171875 q 0.17188,-1.921875 1.32813,-2.921875 1.15625,-1.015625 3.09375,-1.015625 1.95312,0 3.09375,1.09375 1.14062,1.078125 1.14062,2.6875 0,0.812496 -0.34375,1.609371 -0.32812,0.78125 -1.10937,1.65625 -0.76563,0.859375 -2.5625,2.390625 -1.5,1.265625 -1.9375,1.71875 -0.42188,0.4375 -0.70313,0.890625 z" id="path71" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 40.506943,279.81393 H 189.92427 v 35.33856 H 40.506943 Z" id="path73" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 110.75069,304.40323 v -13.59375 h 1.79688 v 11.98437 h 6.70312 v 1.60938 z m 18.54759,-1.60938 v 1.60938 h -8.98437 q -0.0156,-0.60938 0.1875,-1.15625 0.34375,-0.92188 1.09375,-1.8125 0.76562,-0.89063 2.1875,-2.0625 2.21875,-1.8125 3,-2.875 0.78125,-1.0625 0.78125,-2.01563 0,-0.98437 -0.71875,-1.67187 -0.70313,-0.6875 -1.84375,-0.6875 -1.20313,0 -1.9375,0.73437 -0.71875,0.71875 -0.71875,2 l -1.71875,-0.17187 q 0.17187,-1.92188 1.32812,-2.92188 1.15625,-1.01562 3.09375,-1.01562 1.95313,0 3.09375,1.09375 1.14063,1.07812 1.14063,2.6875 0,0.8125 -0.34375,1.60937 -0.32813,0.78125 -1.10938,1.65625 -0.76562,0.85938 -2.5625,2.39063 -1.5,1.26562 -1.9375,1.71875 -0.42187,0.4375 -0.70312,0.89062 z m 6.62152,-3.3125 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.68822,4.92188 v -8.54688 h -1.48438 v -1.3125 h 1.48438 v -1.04687 q 0,-0.98438 0.17187,-1.46875 0.23438,-0.65625 0.84375,-1.04688 0.60938,-0.40625 1.70313,-0.40625 0.70312,0 1.5625,0.15625 l -0.25,1.46875 q -0.51563,-0.0937 -0.98438,-0.0937 -0.76562,0 -1.07812,0.32813 -0.3125,0.3125 -0.3125,1.20312 v 0.90625 h 1.92187 v 1.3125 h -1.92187 v 8.54688 z m 5.1833,0 v -8.54688 h -1.48437 v -1.3125 h 1.48437 v -1.04687 q 0,-0.98438 0.17188,-1.46875 0.23437,-0.65625 0.84375,-1.04688 0.60937,-0.40625 1.70312,-0.40625 0.70313,0 1.5625,0.15625 l -0.25,1.46875 q -0.51562,-0.0937 -0.98437,-0.0937 -0.76563,0 -1.07813,0.32813 -0.3125,0.3125 -0.3125,1.20312 v 0.90625 h 1.92188 v 1.3125 h -1.92188 v 8.54688 z m 4.10518,-2.9375 1.65625,-0.26563 q 0.14063,1 0.76563,1.53125 0.64062,0.51563 1.78125,0.51563 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89063 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60938 -0.35938,-1.32813 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48437 0.67188,-0.20313 1.4375,-0.20313 1.17188,0 2.04688,0.34375 0.875,0.32813 1.28125,0.90625 0.42187,0.5625 0.57812,1.51563 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39063 -0.48438,0.375 -0.48438,0.875 0,0.32812 0.20313,0.59375 0.20312,0.26562 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76562 0.70313,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48437,1.57813 -0.48438,0.73437 -1.40625,1.14062 -0.92188,0.39063 -2.07813,0.39063 -1.92187,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 16.75,-0.23438 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 h 5.5 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 12.76634,4.375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 v -5.65625 h -1.23438 v -1.3125 h 1.23438 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.3125 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z" id="path75" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 40.506943,321.11383 H 189.92427 v 35.33859 H 40.506943 Z" id="path77" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 110.75069,345.70312 v -13.59375 h 1.79688 v 11.98438 h 6.70312 v 1.60937 z m 9.78197,-3.59375 1.67187,-0.21875 q 0.28125,1.42188 0.96875,2.04688 0.70313,0.625 1.6875,0.625 1.1875,0 2,-0.8125 0.8125,-0.82813 0.8125,-2.03125 0,-1.14063 -0.76562,-1.89063 -0.75,-0.75 -1.90625,-0.75 -0.46875,0 -1.17188,0.1875 l 0.1875,-1.46875 q 0.15625,0.0156 0.26563,0.0156 1.0625,0 1.90625,-0.54688 0.85937,-0.5625 0.85937,-1.71875 0,-0.92187 -0.625,-1.51562 -0.60937,-0.60938 -1.59375,-0.60938 -0.96875,0 -1.625,0.60938 -0.64062,0.60937 -0.82812,1.84375 l -1.67188,-0.29688 q 0.29688,-1.6875 1.375,-2.60937 1.09375,-0.92188 2.71875,-0.92188 1.10938,0 2.04688,0.48438 0.9375,0.46875 1.42187,1.29687 0.5,0.82813 0.5,1.75 0,0.89063 -0.46875,1.60938 -0.46875,0.71875 -1.40625,1.15625 1.21875,0.26562 1.875,1.15625 0.67188,0.875 0.67188,2.1875 0,1.78125 -1.29688,3.01562 -1.29687,1.23438 -3.28125,1.23438 -1.79687,0 -2.98437,-1.0625 -1.17188,-1.0625 -1.34375,-2.76563 z m 15.38714,-1.32812 q 0,-2.73438 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32812 1.29688,3.67187 0,1.90625 -0.57813,3 -0.5625,1.07813 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32812 -1.28125,-1.32813 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89062 0.82813,2.82812 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95312 0.82813,-2.89062 0,-1.82813 -0.82813,-2.76563 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82813 z m 9.68822,4.92187 v -8.54687 h -1.48438 v -1.3125 h 1.48438 v -1.04688 q 0,-0.98437 0.17187,-1.46875 0.23438,-0.65625 0.84375,-1.04687 0.60938,-0.40625 1.70313,-0.40625 0.70312,0 1.5625,0.15625 l -0.25,1.46875 q -0.51563,-0.0937 -0.98438,-0.0937 -0.76562,0 -1.07812,0.32812 -0.3125,0.3125 -0.3125,1.20313 v 0.90625 h 1.92187 v 1.3125 h -1.92187 v 8.54687 z m 5.1833,0 v -8.54687 h -1.48437 v -1.3125 h 1.48437 v -1.04688 q 0,-0.98437 0.17188,-1.46875 0.23437,-0.65625 0.84375,-1.04687 0.60937,-0.40625 1.70312,-0.40625 0.70313,0 1.5625,0.15625 l -0.25,1.46875 q -0.51562,-0.0937 -0.98437,-0.0937 -0.76563,0 -1.07813,0.32812 -0.3125,0.3125 -0.3125,1.20313 v 0.90625 h 1.92188 v 1.3125 h -1.92188 v 8.54687 z m 4.10518,-2.9375 1.65625,-0.26562 q 0.14063,1 0.76563,1.53125 0.64062,0.51562 1.78125,0.51562 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89062 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79688 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60937 -0.35938,-1.32812 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48438 0.67188,-0.20312 1.4375,-0.20312 1.17188,0 2.04688,0.34375 0.875,0.32812 1.28125,0.90625 0.42187,0.5625 0.57812,1.51562 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17187 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39062 -0.48438,0.375 -0.48438,0.875 0,0.32813 0.20313,0.59375 0.20312,0.26563 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76563 0.70313,0.29687 1.09375,0.875 0.40625,0.57812 0.40625,1.4375 0,0.82812 -0.48437,1.57812 -0.48438,0.73438 -1.40625,1.14063 -0.92188,0.39062 -2.07813,0.39062 -1.92187,0 -2.9375,-0.79687 -1,-0.79688 -1.28125,-2.35938 z m 16.75,-0.23437 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82812 -2.8125,0.82812 -2.15625,0 -3.42188,-1.32812 -1.26562,-1.32813 -1.26562,-3.73438 0,-2.48437 1.26562,-3.85937 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79687 0,0.14063 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92187,2.48438 0.82813,0.85937 2.0625,0.85937 0.90625,0 1.54688,-0.46875 0.65625,-0.48437 1.04687,-1.54687 z m -5.48437,-2.70313 h 5.5 q -0.10938,-1.23437 -0.625,-1.85937 Q 171.959,337 170.67775,337 q -1.14062,0 -1.9375,0.78125 -0.78125,0.76562 -0.85937,2.04687 z m 12.76634,4.375 0.23437,1.48438 q -0.70312,0.14062 -1.26562,0.14062 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29687 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98437 v -5.65625 h -1.23438 v -1.3125 h 1.23438 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.3125 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.92187 0.0937,0.20313 0.29688,0.32813 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z" id="path79" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 40.506943,362.41376 H 189.92427 v 35.33856 H 40.506943 Z" id="path81" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="M 110.75069,387.00305 V 373.4093 h 1.79688 v 11.98437 h 6.70312 v 1.60938 z m 15.12572,0 v -3.25 h -5.90625 v -1.53125 l 6.21875,-8.8125 h 1.35937 v 8.8125 h 1.84375 v 1.53125 h -1.84375 v 3.25 z m 0,-4.78125 v -6.14063 l -4.25,6.14063 z m 10.04339,-0.14063 q 0,-2.73437 1.53125,-4.0625 1.26563,-1.09375 3.09375,-1.09375 2.03125,0 3.3125,1.34375 1.29688,1.32813 1.29688,3.67188 0,1.90625 -0.57813,3 -0.5625,1.07812 -1.65625,1.6875 -1.07812,0.59375 -2.375,0.59375 -2.0625,0 -3.34375,-1.32813 -1.28125,-1.32812 -1.28125,-3.8125 z m 1.71875,0 q 0,1.89063 0.82813,2.82813 0.82812,0.9375 2.07812,0.9375 1.25,0 2.0625,-0.9375 0.82813,-0.95313 0.82813,-2.89063 0,-1.82812 -0.82813,-2.76562 -0.82812,-0.9375 -2.0625,-0.9375 -1.25,0 -2.07812,0.9375 -0.82813,0.9375 -0.82813,2.82812 z m 9.68822,4.92188 v -8.54688 h -1.48438 v -1.3125 h 1.48438 v -1.04687 q 0,-0.98438 0.17187,-1.46875 0.23438,-0.65625 0.84375,-1.04688 0.60938,-0.40625 1.70313,-0.40625 0.70312,0 1.5625,0.15625 l -0.25,1.46875 q -0.51563,-0.0937 -0.98438,-0.0937 -0.76562,0 -1.07812,0.32813 -0.3125,0.3125 -0.3125,1.20312 v 0.90625 h 1.92187 v 1.3125 h -1.92187 v 8.54688 z m 5.1833,0 v -8.54688 h -1.48437 v -1.3125 h 1.48437 v -1.04687 q 0,-0.98438 0.17188,-1.46875 0.23437,-0.65625 0.84375,-1.04688 0.60937,-0.40625 1.70312,-0.40625 0.70313,0 1.5625,0.15625 l -0.25,1.46875 q -0.51562,-0.0937 -0.98437,-0.0937 -0.76563,0 -1.07813,0.32813 -0.3125,0.3125 -0.3125,1.20312 v 0.90625 h 1.92188 v 1.3125 h -1.92188 v 8.54688 z m 4.10518,-2.9375 1.65625,-0.26563 q 0.14063,1 0.76563,1.53125 0.64062,0.51563 1.78125,0.51563 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89063 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60938 -0.35938,-1.32813 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48437 0.67188,-0.20313 1.4375,-0.20313 1.17188,0 2.04688,0.34375 0.875,0.32813 1.28125,0.90625 0.42187,0.5625 0.57812,1.51563 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39063 -0.48438,0.375 -0.48438,0.875 0,0.32812 0.20313,0.59375 0.20312,0.26562 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76562 0.70313,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48437,1.57813 -0.48438,0.73437 -1.40625,1.14062 -0.92188,0.39063 -2.07813,0.39063 -1.92187,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 16.75,-0.23438 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 h 5.5 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 12.76634,4.375 0.23437,1.48437 q -0.70312,0.14063 -1.26562,0.14063 -0.90625,0 -1.40625,-0.28125 -0.5,-0.29688 -0.70313,-0.75 -0.20312,-0.46875 -0.20312,-1.98438 v -5.65625 h -1.23438 v -1.3125 h 1.23438 v -2.4375 l 1.65625,-1 v 3.4375 h 1.6875 v 1.3125 h -1.6875 v 5.75 q 0,0.71875 0.0781,0.92188 0.0937,0.20312 0.29688,0.32812 0.20312,0.125 0.57812,0.125 0.26563,0 0.73438,-0.0781 z" id="path83" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 179.89583,297.49838 h 25.85826" id="path85" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 179.89583,297.49838 h 25.85826" id="path87" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="M 207.19879,299.48056 V 236.55142" id="path89" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="M 207.19879,299.48056 V 248.55142" id="path91" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 210.50226,248.55142 -3.30347,-9.07619 -3.30345,9.07619 z" id="path93" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"/>
+ <path d="m 181.33281,338.8138 h 47.40158" id="path95" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 181.33281,338.8138 h 47.40158" id="path97" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 228.75377,338.8138 1.41731,-102.26773" id="path99" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 228.75377,338.8138 1.25102,-90.26886" id="path101" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 233.30795,248.59073 -3.17737,-9.12111 -3.42892,9.02954 z" id="path103" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"/>
+ <path d="m 181.33281,378.1625 h 71.84251" id="path105" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 181.33281,378.1625 h 71.84251" id="path107" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="M 253.18275,378.147 V 236.5722" id="path109" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="M 253.18277,378.14703 V 248.57222" id="path111" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 256.48624,248.57222 -3.30347,-9.0762 -3.30346,9.0762 z" id="path113" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"/>
+ <path d="M 348.00204,53.632385 212.91542,134.26229" id="path115" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="M 348.00204,53.63238 223.21952,128.11204" id="path117" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 221.52643,125.27544 -6.1004,7.48835 9.4866,-1.81515 z" id="path119" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt"/>
+ <path d="m 404.06763,242.44742 v 0 c 0,9.75848 -1.31842,17.66928 -2.94476,17.66928 h -61.08686 c -1.62634,0 -2.94476,7.91083 -2.94476,17.66931 v 0 c 0,-9.75848 -1.31842,-17.66931 -2.94476,-17.66931 h -61.08686 c -1.62634,0 -2.94476,-7.9108 -2.94476,-17.66928 z" id="path121" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 404.06763,242.44742 v 0 c 0,9.75848 -1.31842,17.66928 -2.94476,17.66928 h -61.08686 c -1.62634,0 -2.94476,7.91083 -2.94476,17.66931 v 0 c 0,-9.75848 -1.31842,-17.66931 -2.94476,-17.66931 h -61.08686 c -1.62634,0 -2.94476,-7.9108 -2.94476,-17.66928" id="path123" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 404.06763,242.44742 v 0 c 0,9.75848 -1.31842,17.66928 -2.94476,17.66928 h -61.08686 c -1.62634,0 -2.94476,7.91083 -2.94476,17.66931 v 0 c 0,-9.75848 -1.31842,-17.66931 -2.94476,-17.66931 h -61.08686 c -1.62634,0 -2.94476,-7.9108 -2.94476,-17.66928" id="path125" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 284.9715,279.81393 h 109.19687 v 35.33856 H 284.9715 Z" id="path127" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 312.66016,301.46573 1.65625,-0.26563 q 0.14063,1 0.76563,1.53125 0.64062,0.51563 1.78125,0.51563 1.15625,0 1.70312,-0.46875 0.5625,-0.46875 0.5625,-1.09375 0,-0.5625 -0.48437,-0.89063 -0.34375,-0.21875 -1.70313,-0.5625 -1.84375,-0.46875 -2.5625,-0.79687 -0.70312,-0.34375 -1.07812,-0.9375 -0.35938,-0.60938 -0.35938,-1.32813 0,-0.65625 0.29688,-1.21875 0.3125,-0.5625 0.82812,-0.9375 0.39063,-0.28125 1.0625,-0.48437 0.67188,-0.20313 1.4375,-0.20313 1.17188,0 2.04688,0.34375 0.875,0.32813 1.28125,0.90625 0.42187,0.5625 0.57812,1.51563 l -1.625,0.21875 q -0.10937,-0.75 -0.65625,-1.17188 -0.53125,-0.4375 -1.5,-0.4375 -1.15625,0 -1.64062,0.39063 -0.48438,0.375 -0.48438,0.875 0,0.32812 0.20313,0.59375 0.20312,0.26562 0.64062,0.4375 0.25,0.0937 1.46875,0.4375 1.76563,0.46875 2.46875,0.76562 0.70313,0.29688 1.09375,0.875 0.40625,0.57813 0.40625,1.4375 0,0.82813 -0.48437,1.57813 -0.48438,0.73437 -1.40625,1.14062 -0.92188,0.39063 -2.07813,0.39063 -1.92187,0 -2.9375,-0.79688 -1,-0.79687 -1.28125,-2.35937 z m 16.75,-0.23438 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 h 5.5 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 8.8132,6.6875 1.60937,0.25 q 0.10938,0.75 0.57813,1.09375 0.60937,0.45312 1.6875,0.45312 1.17187,0 1.79687,-0.46875 0.625,-0.45312 0.85938,-1.28125 0.125,-0.51562 0.10937,-2.15625 -1.09375,1.29688 -2.71875,1.29688 -2.03125,0 -3.15625,-1.46875 -1.10937,-1.46875 -1.10937,-3.51563 0,-1.40625 0.51562,-2.59375 0.51563,-1.20312 1.48438,-1.84375 0.96875,-0.65625 2.26562,-0.65625 1.75,0 2.875,1.40625 v -1.1875 h 1.54688 v 8.51563 q 0,2.3125 -0.46875,3.26562 -0.46875,0.96875 -1.48438,1.51563 -1.01562,0.5625 -2.5,0.5625 -1.76562,0 -2.85937,-0.79688 -1.07813,-0.79687 -1.03125,-2.39062 z m 1.375,-5.92188 q 0,1.95313 0.76562,2.84375 0.78125,0.89063 1.9375,0.89063 1.14063,0 1.92188,-0.89063 0.78125,-0.89062 0.78125,-2.78125 0,-1.8125 -0.8125,-2.71875 -0.79688,-0.92187 -1.92188,-0.92187 -1.10937,0 -1.89062,0.90625 -0.78125,0.89062 -0.78125,2.67187 z m 9.26635,5.10938 v -13.59375 h 1.67188 v 13.59375 z m 10.92606,-3.17188 1.71875,0.21875 q -0.40625,1.5 -1.51562,2.34375 -1.09375,0.82813 -2.8125,0.82813 -2.15625,0 -3.42188,-1.32813 -1.26562,-1.32812 -1.26562,-3.73437 0,-2.48438 1.26562,-3.85938 1.28125,-1.375 3.32813,-1.375 1.98437,0 3.23437,1.34375 1.25,1.34375 1.25,3.79688 0,0.14062 -0.0156,0.4375 h -7.34375 q 0.0937,1.625 0.92187,2.48437 0.82813,0.85938 2.0625,0.85938 0.90625,0 1.54688,-0.46875 0.65625,-0.48438 1.04687,-1.54688 z m -5.48437,-2.70312 h 5.5 q -0.10938,-1.23438 -0.625,-1.85938 -0.79688,-0.96875 -2.07813,-0.96875 -1.14062,0 -1.9375,0.78125 -0.78125,0.76563 -0.85937,2.04688 z m 9.1101,5.875 v -9.85938 h 1.5 v 1.40625 q 1.09375,-1.625 3.14063,-1.625 0.89062,0 1.64062,0.32813 0.75,0.3125 1.10938,0.84375 0.375,0.51562 0.53125,1.21875 0.0937,0.46875 0.0937,1.625 v 6.0625 h -1.67188 v -6 q 0,-1.01563 -0.20312,-1.51563 -0.1875,-0.51562 -0.6875,-0.8125 -0.5,-0.29687 -1.17188,-0.29687 -1.0625,0 -1.84375,0.67187 -0.76562,0.67188 -0.76562,2.57813 v 5.375 z" id="path129" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 7.975276,303.87408 H 197.61307 v 20.8819 H 7.975276 Z" id="path131" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 24.912777,316.23877 q 0,1.40625 -1.015625,2.40625 -1,0.98437 -2.421875,0.98437 -1.4375,0 -2.4375,-1 -1,-1 -1,-2.39062 0,-1.40625 1,-2.40625 1,-1 2.4375,-1 1.421875,0 2.421875,1 1.015625,0.98437 1.015625,2.40625 z m -0.625,0 q 0,-1.15625 -0.828125,-1.96875 -0.8125,-0.8125 -1.984375,-0.8125 -1.171875,0 -2,0.8125 -0.828125,0.8125 -0.828125,1.96875 0,1.14062 0.828125,1.96875 0.828125,0.8125 2,0.8125 1.171875,0 1.984375,-0.8125 0.828125,-0.8125 0.828125,-1.96875 z m 9.20459,-6.03125 v 8.57812 h 0.8125 q 0.234375,0 0.328125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -1.4375 v -1.21875 q -1.0625,1.45312 -2.71875,1.45312 -0.828125,0 -1.59375,-0.4375 -0.765625,-0.4375 -1.21875,-1.25 -0.4375,-0.82812 -0.4375,-1.70312 0,-0.875 0.4375,-1.6875 0.453125,-0.82813 1.21875,-1.26563 0.765625,-0.45312 1.609375,-0.45312 1.609375,0 2.703125,1.46875 v -3.46875 h -0.8125 q -0.234375,0 -0.328125,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.125 0.09375,-0.20312 0.09375,-0.0937 0.328125,-0.0937 z m -0.625,6.03125 q 0,-1.17188 -0.796875,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.890625,0.8125 -0.796875,0.79687 -0.796875,1.96875 0,1.15625 0.796875,1.96875 0.796875,0.8125 1.890625,0.8125 1.09375,0 1.875,-0.8125 0.796875,-0.8125 0.796875,-1.96875 z m 4.29834,-3.1875 v 1.125 q 0.546875,-0.67188 1.171875,-1 0.625,-0.34375 1.484375,-0.34375 0.90625,0 1.671875,0.42187 0.78125,0.42188 1.203125,1.1875 0.421875,0.75 0.421875,1.59375 0,1.32813 -0.953125,2.26563 -0.953125,0.9375 -2.328125,0.9375 -1.65625,0 -2.671875,-1.34375 v 3.71875 h 1.484375 q 0.21875,0 0.3125,0.0781 0.109375,0.0781 0.109375,0.21875 0,0.14063 -0.109375,0.21875 -0.09375,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.9375 h -0.828125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 z m 5.328125,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.765625,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.765625,0.75 -0.765625,1.8125 0,1.0625 0.765625,1.82813 0.78125,0.75 1.90625,0.75 1.109375,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 10.07959,7.46875 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14063 -0.09375,0.21875 -0.09375,0.0937 -0.3125,0.0937 z m 2.595215,-10.45312 v 1.125 q 0.546875,-0.67188 1.171875,-1 0.625,-0.34375 1.484375,-0.34375 0.90625,0 1.671875,0.42187 0.78125,0.42188 1.203125,1.1875 0.421875,0.75 0.421875,1.59375 0,1.32813 -0.953125,2.26563 -0.953125,0.9375 -2.328125,0.9375 -1.65625,0 -2.671875,-1.34375 v 3.71875 h 1.484375 q 0.21875,0 0.3125,0.0781 0.109375,0.0781 0.109375,0.21875 0,0.14063 -0.109375,0.21875 -0.09375,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.9375 h -0.828125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 z m 5.328125,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.765625,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.765625,0.75 -0.765625,1.8125 0,1.0625 0.765625,1.82813 0.78125,0.75 1.90625,0.75 1.109375,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 7.751461,3.35938 v -0.89063 q -1.34375,1.125 -2.859375,1.125 -1.109375,0 -1.734371,-0.54687 -0.609375,-0.5625 -0.609375,-1.375 0,-0.89063 0.8125,-1.5625 0.828121,-0.67188 2.390621,-0.67188 0.421875,0 0.921875,0.0625 0.5,0.0469 1.078125,0.17188 v -1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.015625,0.42187 -0.234375,0.0625 -0.296875,0.0625 -0.109371,0 -0.203121,-0.0781 -0.07813,-0.0937 -0.07813,-0.21875 0,-0.125 0.07813,-0.20313 0.09375,-0.10937 0.828121,-0.29687 1.140625,-0.3125 1.71875,-0.3125 1.171875,0 1.8125,0.57812 0.65625,0.57813 0.65625,1.29688 v 4.07812 h 0.828125 q 0.21875,0 0.3125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.3125,0.0781 z m 0,-3.0625 q -0.421875,-0.125 -0.90625,-0.17188 -0.484375,-0.0625 -1.015625,-0.0625 -1.34375,0 -2.109375,0.57813 -0.562496,0.42187 -0.562496,1.03125 0,0.54687 0.437496,0.9375 0.4375,0.375 1.265625,0.375 0.796875,0 1.484375,-0.3125 0.6875,-0.32813 1.40625,-1.01563 z m 9.79834,-2.65625 v -0.20313 q 0,-0.23437 0.09375,-0.32812 0.09375,-0.0937 0.21875,-0.0937 0.140625,0 0.21875,0.0937 0.09375,0.0937 0.09375,0.32812 v 1.39063 q 0,0.21875 -0.09375,0.32812 -0.07813,0.0937 -0.21875,0.0937 -0.125,0 -0.21875,-0.0781 -0.07813,-0.0937 -0.09375,-0.29688 -0.03125,-0.51562 -0.671875,-0.98437 -0.640625,-0.46875 -1.734375,-0.46875 -1.375,0 -2.078125,0.85937 -0.703125,0.85938 -0.703125,1.95313 0,1.20312 0.78125,1.98437 0.78125,0.76563 2.03125,0.76563 0.703125,0 1.453125,-0.26563 0.75,-0.26562 1.34375,-0.84375 0.15625,-0.15625 0.265625,-0.15625 0.125,0 0.203125,0.0937 0.09375,0.0781 0.09375,0.20313 0,0.3125 -0.734375,0.79687 -1.203125,0.78125 -2.65625,0.78125 -1.484375,0 -2.453125,-0.9375 -0.953125,-0.95312 -0.953125,-2.40625 0,-1.48437 0.96875,-2.46875 0.984375,-0.98437 2.46875,-0.98437 1.421875,0 2.375,0.84375 z m 5.188965,2.98437 v 2.73438 h -1.4375 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.95312 h -0.828125 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.125 0.09375,-0.20312 0.09375,-0.0937 0.3125,-0.0937 h 1.4375 v 5.67187 l 2.609375,-2.20312 h -0.3125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 h 1.96875 q 0.234375,0 0.328125,0.0937 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -0.703125 l -2.40625,2 3.046875,3.10937 h 0.703125 q 0.234375,0 0.328125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -1.984375 q -0.21875,0 -0.328125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.109375,-0.0781 0.328125,-0.0781 h 0.421875 l -2.640625,-2.71875 z m 13.57959,-0.29687 h -6.265625 q 0.15625,1.20312 1,1.9375 0.84375,0.71875 2.078125,0.71875 0.6875,0 1.4375,-0.21875 0.75,-0.23438 1.234375,-0.60938 0.140625,-0.10937 0.234375,-0.10937 0.125,0 0.203125,0.0937 0.09375,0.0937 0.09375,0.21875 0,0.125 -0.109375,0.23437 -0.359375,0.375 -1.265625,0.6875 -0.890625,0.3125 -1.828125,0.3125 -1.59375,0 -2.65625,-1.03125 -1.046875,-1.03125 -1.046875,-2.5 0,-1.34375 0.984375,-2.29687 1,-0.96875 2.46875,-0.96875 1.5,0 2.46875,0.98437 0.984375,0.98438 0.96875,2.54688 z m -0.625,-0.60938 q -0.171875,-1.03125 -0.953125,-1.65625 -0.78125,-0.64062 -1.859375,-0.64062 -1.078125,0 -1.859375,0.625 -0.765625,0.625 -0.96875,1.67187 z m 5.032712,-2.70312 h 3.34375 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -3.34375 v 4.09375 q 0,0.53125 0.42188,0.89062 0.4375,0.35938 1.26562,0.35938 0.625,0 1.34375,-0.1875 0.73438,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10938,0 0.20313,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23438,0.23437 -1.14063,0.51562 -0.90625,0.28125 -1.73437,0.28125 -1.07813,0 -1.71875,-0.5 -0.64063,-0.5 -0.64063,-1.35937 v -4.09375 h -1.124997 q -0.21875,0 -0.328125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.109375,-0.0937 0.328125,-0.0937 h 1.124997 v -1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14063,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 z m 14.36084,10.45312 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 5.22022,-13.29687 v 8.57812 h 2.42187 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -5.45312 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 2.42187 v -7.95312 h -1.78125 q -0.21875,0 -0.32812,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.10937,-0.0937 0.32812,-0.0937 z m 6.04834,8.57812 h 4.71876 v -0.25 q 0,-0.21875 0.0781,-0.3125 0.0937,-0.0937 0.23438,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 v 0.85938 h -5.95314 v -0.90625 q 1.87501,-1.6875 3.65626,-3.4375 0.82813,-0.8125 1.125,-1.1875 0.3125,-0.375 0.42188,-0.65625 0.10937,-0.29688 0.10937,-0.59375 0,-0.79688 -0.64062,-1.40625 -0.625,-0.60938 -1.53125,-0.60938 -0.79688,0 -1.42189,0.46875 -0.625,0.46875 -0.8125,1.14063 -0.0469,0.17187 -0.10937,0.23437 -0.0781,0.0625 -0.20313,0.0625 -0.125,0 -0.21875,-0.0781 -0.0781,-0.0781 -0.0781,-0.20313 0,-0.34375 0.39062,-0.9375 0.39063,-0.60937 1.0625,-0.95312 0.67189,-0.34375 1.39064,-0.34375 1.14062,0 1.96875,0.79687 0.82812,0.79688 0.82812,1.8125 0,0.42188 -0.14062,0.78125 -0.125,0.34375 -0.46875,0.76563 -0.32813,0.42187 -1.1875,1.26562 -2.17188,2.14063 -3.53126,3.32813 z m 15.73584,4.71875 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 v 1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 v 3.71875 h 1.48437 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 0.82813 v -7.9375 h -0.82813 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 4.72022,-2.98437 h 3.34375 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -3.34375 v 4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.26563,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.35937 v -4.09375 h -1.125 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 h 1.125 v -1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 z m 9.53271,0 v 1.54687 q 1.20313,-1.07812 1.79688,-1.39062 0.59375,-0.3125 1.10937,-0.3125 0.54688,0 1.01563,0.375 0.46875,0.375 0.46875,0.5625 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.21875,0.0781 -0.0781,0 -0.14063,-0.0156 -0.0469,-0.0312 -0.1875,-0.17187 -0.25,-0.25 -0.4375,-0.34375 -0.1875,-0.0937 -0.375,-0.0937 -0.40625,0 -0.98437,0.32812 -0.5625,0.3125 -1.95313,1.5625 v 3.375 h 2.71875 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 h -4.82812 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.21875 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 h 1.5 v -5.125 h -1.14063 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0781,-0.21875 0.0937,-0.0937 0.32812,-0.0937 z" id="path133" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 173.51581,322.55127 q -1.09375,-1.375 -1.85938,-3.21875 -0.75,-1.84375 -0.75,-3.82813 0,-1.73437 0.5625,-3.34375 0.65625,-1.84375 2.04688,-3.6875 h 0.9375 q -0.89063,1.53125 -1.17188,2.17188 -0.45312,1.01562 -0.70312,2.10937 -0.3125,1.375 -0.3125,2.76563 0,3.51562 2.1875,7.03125 z m 3.2244,0 h -0.95313 q 2.1875,-3.51563 2.1875,-7.03125 0,-1.39063 -0.3125,-2.73438 -0.25,-1.10937 -0.6875,-2.10937 -0.29687,-0.65625 -1.1875,-2.20313 h 0.95313 q 1.375,1.84375 2.03125,3.6875 0.5625,1.60938 0.5625,3.34375 0,1.98438 -0.76563,3.82813 -0.75,1.84375 -1.82812,3.21875 z" id="path135" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 7.975276,348.04733 H 197.61307 V 368.9292 H 7.975276 Z" id="path137" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 24.912777,360.41202 q 0,1.40625 -1.015625,2.40625 -1,0.98437 -2.421875,0.98437 -1.4375,0 -2.4375,-1 -1,-1 -1,-2.39062 0,-1.40625 1,-2.40625 1,-1 2.4375,-1 1.421875,0 2.421875,1 1.015625,0.98437 1.015625,2.40625 z m -0.625,0 q 0,-1.15625 -0.828125,-1.96875 -0.8125,-0.8125 -1.984375,-0.8125 -1.171875,0 -2,0.8125 -0.828125,0.8125 -0.828125,1.96875 0,1.14062 0.828125,1.96875 0.828125,0.8125 2,0.8125 1.171875,0 1.984375,-0.8125 0.828125,-0.8125 0.828125,-1.96875 z m 9.20459,-6.03125 v 8.57812 h 0.8125 q 0.234375,0 0.328125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -1.4375 v -1.21875 q -1.0625,1.45312 -2.71875,1.45312 -0.828125,0 -1.59375,-0.4375 -0.765625,-0.4375 -1.21875,-1.25 -0.4375,-0.82812 -0.4375,-1.70312 0,-0.875 0.4375,-1.6875 0.453125,-0.82813 1.21875,-1.26563 0.765625,-0.45312 1.609375,-0.45312 1.609375,0 2.703125,1.46875 v -3.46875 h -0.8125 q -0.234375,0 -0.328125,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.125 0.09375,-0.20312 0.09375,-0.0937 0.328125,-0.0937 z m -0.625,6.03125 q 0,-1.17188 -0.796875,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.890625,0.8125 -0.796875,0.79687 -0.796875,1.96875 0,1.15625 0.796875,1.96875 0.796875,0.8125 1.890625,0.8125 1.09375,0 1.875,-0.8125 0.796875,-0.8125 0.796875,-1.96875 z m 4.29834,-3.1875 v 1.125 q 0.546875,-0.67188 1.171875,-1 0.625,-0.34375 1.484375,-0.34375 0.90625,0 1.671875,0.42187 0.78125,0.42188 1.203125,1.1875 0.421875,0.75 0.421875,1.59375 0,1.32813 -0.953125,2.26563 -0.953125,0.9375 -2.328125,0.9375 -1.65625,0 -2.671875,-1.34375 v 3.71875 h 1.484375 q 0.21875,0 0.3125,0.0781 0.109375,0.0781 0.109375,0.21875 0,0.14063 -0.109375,0.21875 -0.09375,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.9375 h -0.828125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 z m 5.328125,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.765625,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.765625,0.75 -0.765625,1.8125 0,1.0625 0.765625,1.82813 0.78125,0.75 1.90625,0.75 1.109375,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 10.07959,7.46875 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14063 -0.09375,0.21875 -0.09375,0.0937 -0.3125,0.0937 z m 2.595215,-10.45312 v 1.125 q 0.546875,-0.67188 1.171875,-1 0.625,-0.34375 1.484375,-0.34375 0.90625,0 1.671875,0.42187 0.78125,0.42188 1.203125,1.1875 0.421875,0.75 0.421875,1.59375 0,1.32813 -0.953125,2.26563 -0.953125,0.9375 -2.328125,0.9375 -1.65625,0 -2.671875,-1.34375 v 3.71875 h 1.484375 q 0.21875,0 0.3125,0.0781 0.109375,0.0781 0.109375,0.21875 0,0.14063 -0.109375,0.21875 -0.09375,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.9375 h -0.828125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 z m 5.328125,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.765625,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.765625,0.75 -0.765625,1.8125 0,1.0625 0.765625,1.82813 0.78125,0.75 1.90625,0.75 1.109375,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 7.751461,3.35938 v -0.89063 q -1.34375,1.125 -2.859375,1.125 -1.109375,0 -1.734371,-0.54687 -0.609375,-0.5625 -0.609375,-1.375 0,-0.89063 0.8125,-1.5625 0.828121,-0.67188 2.390621,-0.67188 0.421875,0 0.921875,0.0625 0.5,0.0469 1.078125,0.17188 v -1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.015625,0.42187 -0.234375,0.0625 -0.296875,0.0625 -0.109371,0 -0.203121,-0.0781 -0.07813,-0.0937 -0.07813,-0.21875 0,-0.125 0.07813,-0.20313 0.09375,-0.10937 0.828121,-0.29687 1.140625,-0.3125 1.71875,-0.3125 1.171875,0 1.8125,0.57812 0.65625,0.57813 0.65625,1.29688 v 4.07812 h 0.828125 q 0.21875,0 0.3125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.3125,0.0781 z m 0,-3.0625 q -0.421875,-0.125 -0.90625,-0.17188 -0.484375,-0.0625 -1.015625,-0.0625 -1.34375,0 -2.109375,0.57813 -0.562496,0.42187 -0.562496,1.03125 0,0.54687 0.437496,0.9375 0.4375,0.375 1.265625,0.375 0.796875,0 1.484375,-0.3125 0.6875,-0.32813 1.40625,-1.01563 z m 9.79834,-2.65625 v -0.20313 q 0,-0.23437 0.09375,-0.32812 0.09375,-0.0937 0.21875,-0.0937 0.140625,0 0.21875,0.0937 0.09375,0.0937 0.09375,0.32812 v 1.39063 q 0,0.21875 -0.09375,0.32812 -0.07813,0.0937 -0.21875,0.0937 -0.125,0 -0.21875,-0.0781 -0.07813,-0.0937 -0.09375,-0.29688 -0.03125,-0.51562 -0.671875,-0.98437 -0.640625,-0.46875 -1.734375,-0.46875 -1.375,0 -2.078125,0.85937 -0.703125,0.85938 -0.703125,1.95313 0,1.20312 0.78125,1.98437 0.78125,0.76563 2.03125,0.76563 0.703125,0 1.453125,-0.26563 0.75,-0.26562 1.34375,-0.84375 0.15625,-0.15625 0.265625,-0.15625 0.125,0 0.203125,0.0937 0.09375,0.0781 0.09375,0.20313 0,0.3125 -0.734375,0.79687 -1.203125,0.78125 -2.65625,0.78125 -1.484375,0 -2.453125,-0.9375 -0.953125,-0.95312 -0.953125,-2.40625 0,-1.48437 0.96875,-2.46875 0.984375,-0.98437 2.46875,-0.98437 1.421875,0 2.375,0.84375 z m 5.188965,2.98437 v 2.73438 h -1.4375 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.95312 h -0.828125 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.125 0.09375,-0.20312 0.09375,-0.0937 0.3125,-0.0937 h 1.4375 v 5.67187 l 2.609375,-2.20312 h -0.3125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 h 1.96875 q 0.234375,0 0.328125,0.0937 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -0.703125 l -2.40625,2 3.046875,3.10937 h 0.703125 q 0.234375,0 0.328125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -1.984375 q -0.21875,0 -0.328125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.109375,-0.0781 0.328125,-0.0781 h 0.421875 l -2.640625,-2.71875 z m 13.57959,-0.29687 h -6.265625 q 0.15625,1.20312 1,1.9375 0.84375,0.71875 2.078125,0.71875 0.6875,0 1.4375,-0.21875 0.75,-0.23438 1.234375,-0.60938 0.140625,-0.10937 0.234375,-0.10937 0.125,0 0.203125,0.0937 0.09375,0.0937 0.09375,0.21875 0,0.125 -0.109375,0.23437 -0.359375,0.375 -1.265625,0.6875 -0.890625,0.3125 -1.828125,0.3125 -1.59375,0 -2.65625,-1.03125 -1.046875,-1.03125 -1.046875,-2.5 0,-1.34375 0.984375,-2.29687 1,-0.96875 2.46875,-0.96875 1.5,0 2.46875,0.98437 0.984375,0.98438 0.96875,2.54688 z m -0.625,-0.60938 q -0.171875,-1.03125 -0.953125,-1.65625 -0.78125,-0.64062 -1.859375,-0.64062 -1.078125,0 -1.859375,0.625 -0.765625,0.625 -0.96875,1.67187 z m 5.032712,-2.70312 h 3.34375 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -3.34375 v 4.09375 q 0,0.53125 0.42188,0.89062 0.4375,0.35938 1.26562,0.35938 0.625,0 1.34375,-0.1875 0.73438,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10938,0 0.20313,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23438,0.23437 -1.14063,0.51562 -0.90625,0.28125 -1.73437,0.28125 -1.07813,0 -1.71875,-0.5 -0.64063,-0.5 -0.64063,-1.35937 v -4.09375 h -1.124997 q -0.21875,0 -0.328125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.109375,-0.0937 0.328125,-0.0937 h 1.124997 v -1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14063,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 z m 14.36084,10.45312 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 5.22022,-13.29687 v 8.57812 h 2.42187 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -5.45312 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 2.42187 v -7.95312 h -1.78125 q -0.21875,0 -0.32812,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.10937,-0.0937 0.32812,-0.0937 z m 9.95459,4.1875 q 0.84375,0.375 1.28125,1.04687 0.45313,0.65625 0.45313,1.375 0,1.10938 -0.89063,1.95313 -0.89062,0.84375 -2.25,0.84375 -0.78125,0 -1.64063,-0.32813 -0.84375,-0.34375 -1.1875,-0.70312 -0.10937,-0.10938 -0.10937,-0.25 0,-0.10938 0.0781,-0.1875 0.0937,-0.0937 0.21875,-0.0937 0.10938,0 0.26563,0.10937 1.125,0.84375 2.39063,0.84375 1.07812,0 1.79687,-0.67187 0.71875,-0.67188 0.71875,-1.5 0,-0.54688 -0.35937,-1.0625 -0.34375,-0.53125 -1.01563,-0.82813 -0.67187,-0.3125 -1.34375,-0.3125 -0.21875,0 -0.32812,-0.0781 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.21875 0.0937,-0.0937 0.28125,-0.0937 l 0.53125,0.0156 q 0.82812,0 1.35937,-0.5 0.54688,-0.51563 0.54688,-1.17188 0,-0.6875 -0.57813,-1.21875 -0.5625,-0.53125 -1.46875,-0.53125 -0.64062,0 -1.17187,0.21875 -0.53126,0.21875 -0.85938,0.60938 -0.10938,0.14062 -0.17188,0.17187 -0.0625,0.0312 -0.14062,0.0312 -0.125,0 -0.21875,-0.0781 -0.0781,-0.0937 -0.0781,-0.20313 0,-0.29687 0.625,-0.75 0.89063,-0.60937 2.01563,-0.60937 1.17188,0 1.90625,0.70312 0.75,0.6875 0.75,1.65625 0,0.60938 -0.35937,1.17188 -0.35938,0.54687 -1.04688,0.875 z m 11.82959,9.10937 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 v 1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 v 3.71875 h 1.48437 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 0.82813 v -7.9375 h -0.82813 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 4.72022,-2.98437 h 3.34375 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -3.34375 v 4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.26563,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.35937 v -4.09375 h -1.125 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 h 1.125 v -1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 z m 9.53271,0 v 1.54687 q 1.20313,-1.07812 1.79688,-1.39062 0.59375,-0.3125 1.10937,-0.3125 0.54688,0 1.01563,0.375 0.46875,0.375 0.46875,0.5625 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.21875,0.0781 -0.0781,0 -0.14063,-0.0156 -0.0469,-0.0312 -0.1875,-0.17187 -0.25,-0.25 -0.4375,-0.34375 -0.1875,-0.0937 -0.375,-0.0937 -0.40625,0 -0.98437,0.32812 -0.5625,0.3125 -1.95313,1.5625 v 3.375 h 2.71875 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 h -4.82812 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.21875 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 h 1.5 v -5.125 h -1.14063 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0781,-0.21875 0.0937,-0.0937 0.32812,-0.0937 z" id="path139" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 173.51581,366.72452 q -1.09375,-1.375 -1.85938,-3.21875 -0.75,-1.84375 -0.75,-3.82813 0,-1.73437 0.5625,-3.34375 0.65625,-1.84375 2.04688,-3.6875 h 0.9375 q -0.89063,1.53125 -1.17188,2.17188 -0.45312,1.01562 -0.70312,2.10937 -0.3125,1.375 -0.3125,2.76563 0,3.51562 2.1875,7.03125 z m 3.2244,0 h -0.95313 q 2.1875,-3.51563 2.1875,-7.03125 0,-1.39063 -0.3125,-2.73438 -0.25,-1.10937 -0.6875,-2.10937 -0.29687,-0.65625 -1.1875,-2.20313 h 0.95313 q 1.375,1.84375 2.03125,3.6875 0.5625,1.60938 0.5625,3.34375 0,1.98438 -0.76563,3.82813 -0.75,1.84375 -1.82812,3.21875 z" id="path141" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 7.975276,389.69562 H 197.61307 v 20.8819 H 7.975276 Z" id="path143" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 24.912777,402.0603 q 0,1.40625 -1.015625,2.40625 -1,0.98437 -2.421875,0.98437 -1.4375,0 -2.4375,-1 -1,-1 -1,-2.39062 0,-1.40625 1,-2.40625 1,-1 2.4375,-1 1.421875,0 2.421875,1 1.015625,0.98437 1.015625,2.40625 z m -0.625,0 q 0,-1.15625 -0.828125,-1.96875 -0.8125,-0.8125 -1.984375,-0.8125 -1.171875,0 -2,0.8125 -0.828125,0.8125 -0.828125,1.96875 0,1.14062 0.828125,1.96875 0.828125,0.8125 2,0.8125 1.171875,0 1.984375,-0.8125 0.828125,-0.8125 0.828125,-1.96875 z m 9.20459,-6.03125 v 8.57812 h 0.8125 q 0.234375,0 0.328125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -1.4375 v -1.21875 q -1.0625,1.45312 -2.71875,1.45312 -0.828125,0 -1.59375,-0.4375 -0.765625,-0.4375 -1.21875,-1.25 -0.4375,-0.82812 -0.4375,-1.70312 0,-0.875 0.4375,-1.6875 0.453125,-0.82813 1.21875,-1.26563 0.765625,-0.45312 1.609375,-0.45312 1.609375,0 2.703125,1.46875 v -3.46875 h -0.8125 q -0.234375,0 -0.328125,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.125 0.09375,-0.20312 0.09375,-0.0937 0.328125,-0.0937 z m -0.625,6.03125 q 0,-1.17188 -0.796875,-1.96875 -0.78125,-0.8125 -1.875,-0.8125 -1.09375,0 -1.890625,0.8125 -0.796875,0.79687 -0.796875,1.96875 0,1.15625 0.796875,1.96875 0.796875,0.8125 1.890625,0.8125 1.09375,0 1.875,-0.8125 0.796875,-0.8125 0.796875,-1.96875 z m 4.29834,-3.1875 v 1.125 q 0.546875,-0.67188 1.171875,-1 0.625,-0.34375 1.484375,-0.34375 0.90625,0 1.671875,0.42187 0.78125,0.42188 1.203125,1.1875 0.421875,0.75 0.421875,1.59375 0,1.32813 -0.953125,2.26563 -0.953125,0.9375 -2.328125,0.9375 -1.65625,0 -2.671875,-1.34375 v 3.71875 h 1.484375 q 0.21875,0 0.3125,0.0781 0.109375,0.0781 0.109375,0.21875 0,0.14063 -0.109375,0.21875 -0.09375,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.9375 h -0.828125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 z m 5.328125,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.765625,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.765625,0.75 -0.765625,1.8125 0,1.0625 0.765625,1.82813 0.78125,0.75 1.90625,0.75 1.109375,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 10.07959,7.46875 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14063 -0.09375,0.21875 -0.09375,0.0937 -0.3125,0.0937 z m 2.595215,-10.45312 v 1.125 q 0.546875,-0.67188 1.171875,-1 0.625,-0.34375 1.484375,-0.34375 0.90625,0 1.671875,0.42187 0.78125,0.42188 1.203125,1.1875 0.421875,0.75 0.421875,1.59375 0,1.32813 -0.953125,2.26563 -0.953125,0.9375 -2.328125,0.9375 -1.65625,0 -2.671875,-1.34375 v 3.71875 h 1.484375 q 0.21875,0 0.3125,0.0781 0.109375,0.0781 0.109375,0.21875 0,0.14063 -0.109375,0.21875 -0.09375,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0781 -0.09375,-0.21875 0,-0.14062 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.9375 h -0.828125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 z m 5.328125,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.765625,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.765625,0.75 -0.765625,1.8125 0,1.0625 0.765625,1.82813 0.78125,0.75 1.90625,0.75 1.109375,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 7.751461,3.35938 v -0.89063 q -1.34375,1.125 -2.859375,1.125 -1.109375,0 -1.734371,-0.54687 -0.609375,-0.5625 -0.609375,-1.375 0,-0.89063 0.8125,-1.5625 0.828121,-0.67188 2.390621,-0.67188 0.421875,0 0.921875,0.0625 0.5,0.0469 1.078125,0.17188 v -1 q 0,-0.5 -0.46875,-0.875 -0.46875,-0.375 -1.40625,-0.375 -0.71875,0 -2.015625,0.42187 -0.234375,0.0625 -0.296875,0.0625 -0.109371,0 -0.203121,-0.0781 -0.07813,-0.0937 -0.07813,-0.21875 0,-0.125 0.07813,-0.20313 0.09375,-0.10937 0.828121,-0.29687 1.140625,-0.3125 1.71875,-0.3125 1.171875,0 1.8125,0.57812 0.65625,0.57813 0.65625,1.29688 v 4.07812 h 0.828125 q 0.21875,0 0.3125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.3125,0.0781 z m 0,-3.0625 q -0.421875,-0.125 -0.90625,-0.17188 -0.484375,-0.0625 -1.015625,-0.0625 -1.34375,0 -2.109375,0.57813 -0.562496,0.42187 -0.562496,1.03125 0,0.54687 0.437496,0.9375 0.4375,0.375 1.265625,0.375 0.796875,0 1.484375,-0.3125 0.6875,-0.32813 1.40625,-1.01563 z m 9.79834,-2.65625 v -0.20313 q 0,-0.23437 0.09375,-0.32812 0.09375,-0.0937 0.21875,-0.0937 0.140625,0 0.21875,0.0937 0.09375,0.0937 0.09375,0.32812 v 1.39063 q 0,0.21875 -0.09375,0.32812 -0.07813,0.0937 -0.21875,0.0937 -0.125,0 -0.21875,-0.0781 -0.07813,-0.0937 -0.09375,-0.29688 -0.03125,-0.51562 -0.671875,-0.98437 -0.640625,-0.46875 -1.734375,-0.46875 -1.375,0 -2.078125,0.85937 -0.703125,0.85938 -0.703125,1.95313 0,1.20312 0.78125,1.98437 0.78125,0.76563 2.03125,0.76563 0.703125,0 1.453125,-0.26563 0.75,-0.26562 1.34375,-0.84375 0.15625,-0.15625 0.265625,-0.15625 0.125,0 0.203125,0.0937 0.09375,0.0781 0.09375,0.20313 0,0.3125 -0.734375,0.79687 -1.203125,0.78125 -2.65625,0.78125 -1.484375,0 -2.453125,-0.9375 -0.953125,-0.95312 -0.953125,-2.40625 0,-1.48437 0.96875,-2.46875 0.984375,-0.98437 2.46875,-0.98437 1.421875,0 2.375,0.84375 z m 5.188965,2.98437 v 2.73438 h -1.4375 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0781 0.3125,-0.0781 h 0.828125 v -7.95312 h -0.828125 q -0.21875,0 -0.3125,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.125 0.09375,-0.20312 0.09375,-0.0937 0.3125,-0.0937 h 1.4375 v 5.67187 l 2.609375,-2.20312 h -0.3125 q -0.21875,0 -0.3125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.09375,-0.0937 0.3125,-0.0937 h 1.96875 q 0.234375,0 0.328125,0.0937 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -0.703125 l -2.40625,2 3.046875,3.10937 h 0.703125 q 0.234375,0 0.328125,0.0781 0.09375,0.0781 0.09375,0.21875 0,0.14062 -0.09375,0.23437 -0.09375,0.0781 -0.328125,0.0781 h -1.984375 q -0.21875,0 -0.328125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.109375,-0.0781 0.328125,-0.0781 h 0.421875 l -2.640625,-2.71875 z m 13.57959,-0.29687 h -6.265625 q 0.15625,1.20312 1,1.9375 0.84375,0.71875 2.078125,0.71875 0.6875,0 1.4375,-0.21875 0.75,-0.23438 1.234375,-0.60938 0.140625,-0.10937 0.234375,-0.10937 0.125,0 0.203125,0.0937 0.09375,0.0937 0.09375,0.21875 0,0.125 -0.109375,0.23437 -0.359375,0.375 -1.265625,0.6875 -0.890625,0.3125 -1.828125,0.3125 -1.59375,0 -2.65625,-1.03125 -1.046875,-1.03125 -1.046875,-2.5 0,-1.34375 0.984375,-2.29687 1,-0.96875 2.46875,-0.96875 1.5,0 2.46875,0.98437 0.984375,0.98438 0.96875,2.54688 z m -0.625,-0.60938 q -0.171875,-1.03125 -0.953125,-1.65625 -0.78125,-0.64062 -1.859375,-0.64062 -1.078125,0 -1.859375,0.625 -0.765625,0.625 -0.96875,1.67187 z m 5.032712,-2.70312 h 3.34375 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -3.34375 v 4.09375 q 0,0.53125 0.42188,0.89062 0.4375,0.35938 1.26562,0.35938 0.625,0 1.34375,-0.1875 0.73438,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10938,0 0.20313,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23438,0.23437 -1.14063,0.51562 -0.90625,0.28125 -1.73437,0.28125 -1.07813,0 -1.71875,-0.5 -0.64063,-0.5 -0.64063,-1.35937 v -4.09375 h -1.124997 q -0.21875,0 -0.328125,-0.0781 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.21875 0.109375,-0.0937 0.328125,-0.0937 h 1.124997 v -1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14063,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 z m 14.36084,10.45312 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 5.22022,-13.29687 v 8.57812 h 2.42187 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -5.45312 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 2.42187 v -7.95312 h -1.78125 q -0.21875,0 -0.32812,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.20312 0.10937,-0.0937 0.32812,-0.0937 z m 9.82959,6.60937 h -4.07813 v -0.70312 l 3.42188,-5.90625 h 1.28125 v 6 h 0.51563 q 0.23437,0 0.32812,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.125 -0.0937,0.21875 -0.0937,0.0781 -0.32812,0.0781 h -0.51563 v 1.96875 h 0.51563 q 0.23437,0 0.32812,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32812,0.0781 h -2.28125 q -0.23438,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0781 0.32813,-0.0781 h 1.14062 z m 0,-0.60937 v -5.375 h -0.3125 l -3.10938,5.375 z m 11.95459,7.29687 h -8.1875 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 8.1875 q 0.21875,0 0.3125,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14063 -0.0937,0.21875 -0.0937,0.0937 -0.3125,0.0937 z m 2.59522,-10.45312 v 1.125 q 0.54687,-0.67188 1.17187,-1 0.625,-0.34375 1.48438,-0.34375 0.90625,0 1.67187,0.42187 0.78125,0.42188 1.20313,1.1875 0.42187,0.75 0.42187,1.59375 0,1.32813 -0.95312,2.26563 -0.95313,0.9375 -2.32813,0.9375 -1.65625,0 -2.67187,-1.34375 v 3.71875 h 1.48437 q 0.21875,0 0.3125,0.0781 0.10938,0.0781 0.10938,0.21875 0,0.14063 -0.10938,0.21875 -0.0937,0.0937 -0.3125,0.0937 h -2.9375 q -0.21875,0 -0.3125,-0.0937 -0.0937,-0.0781 -0.0937,-0.21875 0,-0.14062 0.0937,-0.21875 0.0937,-0.0781 0.3125,-0.0781 h 0.82813 v -7.9375 h -0.82813 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.0937,-0.0937 0.3125,-0.0937 z m 5.32812,2.98437 q 0,-1.0625 -0.78125,-1.8125 -0.76562,-0.76562 -1.875,-0.76562 -1.125,0 -1.90625,0.76562 -0.76562,0.75 -0.76562,1.8125 0,1.0625 0.76562,1.82813 0.78125,0.75 1.90625,0.75 1.10938,0 1.875,-0.75 0.78125,-0.76563 0.78125,-1.82813 z m 4.72022,-2.98437 h 3.34375 q 0.21875,0 0.3125,0.0937 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.3125,0.0781 h -3.34375 v 4.09375 q 0,0.53125 0.42187,0.89062 0.4375,0.35938 1.26563,0.35938 0.625,0 1.34375,-0.1875 0.73437,-0.1875 1.125,-0.42188 0.15625,-0.0937 0.25,-0.0937 0.10937,0 0.20312,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.10938 -0.0937,0.20313 -0.23437,0.23437 -1.14062,0.51562 -0.90625,0.28125 -1.73438,0.28125 -1.07812,0 -1.71875,-0.5 -0.64062,-0.5 -0.64062,-1.35937 v -4.09375 h -1.125 q -0.21875,0 -0.32813,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.21875 0.10938,-0.0937 0.32813,-0.0937 h 1.125 v -1.8125 q 0,-0.21875 0.0937,-0.3125 0.0937,-0.0937 0.21875,-0.0937 0.14062,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.3125 z m 9.53271,0 v 1.54687 q 1.20313,-1.07812 1.79688,-1.39062 0.59375,-0.3125 1.10937,-0.3125 0.54688,0 1.01563,0.375 0.46875,0.375 0.46875,0.5625 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.21875,0.0781 -0.0781,0 -0.14063,-0.0156 -0.0469,-0.0312 -0.1875,-0.17187 -0.25,-0.25 -0.4375,-0.34375 -0.1875,-0.0937 -0.375,-0.0937 -0.40625,0 -0.98437,0.32812 -0.5625,0.3125 -1.95313,1.5625 v 3.375 h 2.71875 q 0.23438,0 0.32813,0.0781 0.0937,0.0781 0.0937,0.21875 0,0.14062 -0.0937,0.23437 -0.0937,0.0781 -0.32813,0.0781 h -4.82812 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.21875 0,-0.125 0.0937,-0.20312 0.0937,-0.0937 0.3125,-0.0937 h 1.5 v -5.125 h -1.14063 q -0.21875,0 -0.3125,-0.0781 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0781,-0.21875 0.0937,-0.0937 0.32812,-0.0937 z" id="path145" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 173.51581,408.3728 q -1.09375,-1.375 -1.85938,-3.21875 -0.75,-1.84375 -0.75,-3.82813 0,-1.73437 0.5625,-3.34375 0.65625,-1.84375 2.04688,-3.6875 h 0.9375 q -0.89063,1.53125 -1.17188,2.17188 -0.45312,1.01562 -0.70312,2.10937 -0.3125,1.375 -0.3125,2.76563 0,3.51562 2.1875,7.03125 z m 3.2244,0 h -0.95313 q 2.1875,-3.51563 2.1875,-7.03125 0,-1.39063 -0.3125,-2.73438 -0.25,-1.10937 -0.6875,-2.10937 -0.29687,-0.65625 -1.1875,-2.20313 h 0.95313 q 1.375,1.84375 2.03125,3.6875 0.5625,1.60938 0.5625,3.34375 0,1.98438 -0.76563,3.82813 -0.75,1.84375 -1.82812,3.21875 z" id="path147" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="M 3.4045997,442.59888 25.152632,420.85083 v 10.87403 H 264.56994 V 453.4729 H 25.152632 v 10.874 z" id="path149" inkscape:connector-curvature="0" style="fill:#b6d7a8;fill-rule:evenodd"/>
+ <path d="M 3.4045997,442.59888 25.152632,420.85083 v 10.87403 H 264.56994 V 453.4729 H 25.152632 v 10.874 z" id="path151" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 31.747366,445.08386 q 0,1.5 -1.078125,2.57813 -1.0625,1.0625 -2.578125,1.0625 -1.53125,0 -2.609375,-1.0625 -1.0625,-1.07813 -1.0625,-2.57813 0,-1.5 1.0625,-2.5625 1.078125,-1.0625 2.609375,-1.0625 1.515625,0 2.578125,1.0625 1.078125,1.0625 1.078125,2.5625 z m -0.65625,0 q 0,-1.23437 -0.890625,-2.09375 -0.875,-0.875 -2.125,-0.875 -1.25,0 -2.125,0.875 -0.875,0.875 -0.875,2.09375 0,1.21875 0.875,2.09375 0.875,0.875 2.125,0.875 1.25,0 2.125,-0.85937 0.890625,-0.875 0.890625,-2.10938 z m 9.804686,-6.4375 v 9.15625 h 0.875 q 0.25,0 0.34375,0.0937 0.109375,0.0781 0.109375,0.23438 0,0.14062 -0.109375,0.23437 -0.09375,0.0937 -0.34375,0.0937 h -1.53125 v -1.3125 q -1.140625,1.57813 -2.90625,1.57813 -0.890625,0 -1.703125,-0.46875 -0.8125,-0.48438 -1.296875,-1.35938 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79687 0.484375,-0.875 1.296875,-1.34375 0.8125,-0.48438 1.71875,-0.48438 1.71875,0 2.890625,1.5625 v -3.70312 h -0.875 q -0.25,0 -0.359375,-0.0937 -0.09375,-0.0937 -0.09375,-0.25 0,-0.14063 0.09375,-0.23438 0.109375,-0.0937 0.359375,-0.0937 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10937 -0.84375,-0.85938 -2.015625,-0.85938 -1.171875,0 -2.015625,0.85938 -0.84375,0.85937 -0.84375,2.10937 0,1.25 0.84375,2.10938 0.84375,0.85937 2.015625,0.85937 1.171875,0 2.015625,-0.85937 0.84375,-0.85938 0.84375,-2.10938 z m 4.570313,-3.39062 v 1.1875 q 0.59375,-0.70313 1.265625,-1.0625 0.671875,-0.35938 1.578125,-0.35938 0.96875,0 1.78125,0.45313 0.828125,0.45312 1.28125,1.26562 0.453125,0.79688 0.453125,1.6875 0,1.42188 -1.015625,2.42188 -1.015625,1 -2.484375,1 -1.765625,0 -2.859375,-1.42188 v 3.95313 h 1.59375 q 0.234375,0 0.328125,0.0937 0.109375,0.0937 0.109375,0.23437 0,0.14063 -0.109375,0.23438 -0.09375,0.0937 -0.328125,0.0937 h -3.125 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0781 -0.09375,-0.23438 0,-0.14062 0.09375,-0.23437 0.109375,-0.0937 0.34375,-0.0937 h 0.875 v -8.46875 h -0.875 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.14062 0.09375,-0.23437 0.109375,-0.0937 0.34375,-0.0937 z m 5.6875,3.17187 q 0,-1.125 -0.828125,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.203125,0 -2.03125,0.8125 -0.828125,0.8125 -0.828125,1.9375 0,1.14063 0.828125,1.95313 0.828125,0.8125 2.03125,0.8125 1.171875,0 2,-0.8125 0.828125,-0.8125 0.828125,-1.95313 z m 10.757812,7.98438 h -8.734375 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.15625 0.09375,-0.25 0.109375,-0.0781 0.34375,-0.0781 h 8.734375 q 0.234375,0 0.328125,0.0781 0.109375,0.0937 0.109375,0.25 0,0.14063 -0.109375,0.23438 -0.09375,0.0937 -0.328125,0.0937 z m 2.757816,-11.15625 v 1.1875 q 0.59375,-0.70313 1.265625,-1.0625 0.671875,-0.35938 1.578125,-0.35938 0.96875,0 1.78125,0.45313 0.828125,0.45312 1.28125,1.26562 0.453125,0.79688 0.453125,1.6875 0,1.42188 -1.015625,2.42188 -1.015625,1 -2.484375,1 -1.765625,0 -2.859375,-1.42188 v 3.95313 h 1.59375 q 0.234375,0 0.328125,0.0937 0.109375,0.0937 0.109375,0.23437 0,0.14063 -0.109375,0.23438 -0.09375,0.0937 -0.328125,0.0937 H 62.48174 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0781 -0.09375,-0.23438 0,-0.14062 0.09375,-0.23437 0.109375,-0.0937 0.34375,-0.0937 h 0.875 v -8.46875 h -0.875 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.14062 0.09375,-0.23437 0.109375,-0.0937 0.34375,-0.0937 z m 5.6875,3.17187 q 0,-1.125 -0.828125,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.203125,0 -2.03125,0.8125 -0.828125,0.8125 -0.828125,1.9375 0,1.14063 0.828125,1.95313 0.828125,0.8125 2.03125,0.8125 1.171875,0 2,-0.8125 0.828125,-0.8125 0.828125,-1.95313 z m 8.273438,3.59375 v -0.95312 q -1.421875,1.21875 -3.046875,1.21875 -1.1875,0 -1.859375,-0.59375 -0.65625,-0.60938 -0.65625,-1.48438 0,-0.95312 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.453125,0 0.984375,0.0625 0.53125,0.0625 1.140625,0.1875 v -1.0625 q 0,-0.54687 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.765625,0 -2.140625,0.45313 -0.25,0.0781 -0.328125,0.0781 -0.125,0 -0.21875,-0.0937 -0.07813,-0.0937 -0.07813,-0.23437 0,-0.14063 0.07813,-0.21875 0.109375,-0.10938 0.875,-0.3125 1.21875,-0.32813 1.84375,-0.32813 1.25,0 1.9375,0.60938 0.703125,0.60937 0.703125,1.39062 v 4.34375 h 0.875 q 0.234375,0 0.328125,0.0937 0.109375,0.0781 0.109375,0.23438 0,0.14062 -0.109375,0.23437 -0.09375,0.0937 -0.328125,0.0937 z m 0,-3.26562 q -0.453125,-0.14063 -0.96875,-0.20313 -0.515625,-0.0625 -1.09375,-0.0625 -1.421875,0 -2.234375,0.625 -0.609375,0.45313 -0.609375,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.359375,0.40625 0.84375,0 1.578125,-0.32812 0.734375,-0.34375 1.5,-1.09375 z m 10.460937,-2.84375 v -0.21875 q 0,-0.23438 0.09375,-0.32813 0.09375,-0.10937 0.234375,-0.10937 0.140625,0 0.234375,0.10937 0.09375,0.0937 0.09375,0.32813 v 1.48437 q 0,0.25 -0.09375,0.35938 -0.09375,0.0937 -0.234375,0.0937 -0.140625,0 -0.234375,-0.0937 -0.07813,-0.0937 -0.09375,-0.29688 -0.04687,-0.5625 -0.734375,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.453125,0 -2.21875,0.92188 -0.75,0.90625 -0.75,2.09375 0,1.26562 0.828125,2.09375 0.84375,0.82812 2.171875,0.82812 0.765625,0 1.546875,-0.28125 0.796875,-0.28125 1.4375,-0.90625 0.171875,-0.15625 0.296875,-0.15625 0.125,0 0.21875,0.0937 0.09375,0.0937 0.09375,0.21875 0,0.34375 -0.796875,0.85938 -1.265625,0.84375 -2.828125,0.84375 -1.59375,0 -2.609375,-1.01563 -1.015625,-1.01562 -1.015625,-2.57812 0,-1.57813 1.03125,-2.625 1.046875,-1.04688 2.640625,-1.04688 1.5,0 2.53125,0.89063 z m 5.523438,3.1875 v 2.92187 h -1.53125 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.15625 0.09375,-0.23438 0.109375,-0.0937 0.34375,-0.0937 h 0.875 v -8.48437 h -0.875 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.25 0,-0.14063 0.09375,-0.23438 0.109375,-0.0937 0.34375,-0.0937 h 1.53125 v 6.04688 l 2.796875,-2.34375 h -0.34375 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.14062 0.09375,-0.23437 0.109375,-0.0937 0.34375,-0.0937 h 2.109375 q 0.234375,0 0.328125,0.0937 0.109375,0.0937 0.109375,0.23437 0,0.14063 -0.109375,0.23438 -0.09375,0.0937 -0.328125,0.0937 h -0.765625 l -2.5625,2.14062 3.25,3.3125 h 0.75 q 0.25,0 0.34375,0.0937 0.109375,0.0781 0.109375,0.23438 0,0.14062 -0.109375,0.23437 -0.09375,0.0937 -0.34375,0.0937 h -2.125 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.15625 0.09375,-0.23438 0.109375,-0.0937 0.34375,-0.0937 h 0.46875 l -2.828125,-2.90625 z m 14.492184,-0.3125 h -6.6875 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76562 2.21875,0.76562 0.73438,0 1.53125,-0.23437 0.8125,-0.25 1.3125,-0.64063 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.14062 -0.125,0.26562 -0.375,0.39063 -1.34375,0.73438 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10938 -1.125,-1.10937 -1.125,-2.6875 0,-1.42187 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04688 1.04688,1.04687 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76563 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67188 -0.82812,0.67187 -1.03125,1.78125 z m 5.36719,-2.875 h 3.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45312,0.95312 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20312 1.20313,-0.45312 0.15625,-0.10938 0.26562,-0.10938 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26562 -1.21875,0.57812 -0.95313,0.29688 -1.84375,0.29688 -1.14063,0 -1.82813,-0.54688 -0.67187,-0.54687 -0.67187,-1.45312 v -4.375 h -1.21875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23438 0.0937,-0.32813 0.0937,-0.10937 0.23437,-0.10937 0.14063,0 0.23438,0.10937 0.0937,0.0937 0.0937,0.32813 z m 15.3203,11.15625 h -8.73437 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 h 8.73437 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 z m 8.78906,-7.625 h -6.6875 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76562 2.21875,0.76562 0.73438,0 1.53125,-0.23437 0.8125,-0.25 1.3125,-0.64063 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.14062 -0.125,0.26562 -0.375,0.39063 -1.34375,0.73438 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10938 -1.125,-1.10937 -1.125,-2.6875 0,-1.42187 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04688 1.04688,1.04687 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76563 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67188 -0.82812,0.67187 -1.03125,1.78125 z m 7.16406,0.34375 3.01563,2.89062 q 0.29687,0 0.375,0.0312 0.0781,0.0156 0.125,0.10938 0.0625,0.0781 0.0625,0.1875 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -2.10938 q -0.25,0 -0.35937,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10937,-0.0937 0.35937,-0.0937 h 1.07813 l -2.54688,-2.45312 -2.54687,2.45312 h 1.09375 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -2.125 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.10938 0.0469,-0.1875 0.0625,-0.0937 0.14063,-0.10938 0.0781,-0.0312 0.375,-0.0312 l 3,-2.89062 -2.67188,-2.5625 q -0.28125,0 -0.35937,-0.0312 -0.0625,-0.0312 -0.125,-0.10938 -0.0625,-0.0937 -0.0625,-0.1875 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 h 1.78125 q 0.25,0 0.34375,0.0937 0.0937,0.0937 0.0937,0.23437 0,0.14063 -0.0937,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -0.78125 l 2.21875,2.14062 2.21875,-2.14062 h -0.78125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 1.79688 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.0937 -0.0625,0.1875 -0.0625,0.0781 -0.14063,0.10938 -0.0625,0.0312 -0.34375,0.0312 z m 7.80469,-3.21875 h 3.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45312,0.95312 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20312 1.20313,-0.45312 0.15625,-0.10938 0.26562,-0.10938 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26562 -1.21875,0.57812 -0.95313,0.29688 -1.84375,0.29688 -1.14063,0 -1.82813,-0.54688 -0.67187,-0.54687 -0.67187,-1.45312 v -4.375 H 149.677 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23438 0.0937,-0.32813 0.0937,-0.10937 0.23437,-0.10937 0.14063,0 0.23438,0.10937 0.0937,0.0937 0.0937,0.32813 z m 14.50781,3.53125 h -6.6875 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76562 2.21875,0.76562 0.73438,0 1.53125,-0.23437 0.8125,-0.25 1.3125,-0.64063 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.14062 -0.125,0.26562 -0.375,0.39063 -1.34375,0.73438 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10938 -1.125,-1.10937 -1.125,-2.6875 0,-1.42187 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04688 1.04688,1.04687 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76563 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67188 -0.82812,0.67187 -1.03125,1.78125 z m 4.60156,-2.875 v 0.98437 q 0.6875,-0.6875 1.23437,-0.95312 0.5625,-0.26563 1.25,-0.26563 0.75,0 1.375,0.3125 0.4375,0.23438 0.78125,0.78125 0.35938,0.54688 0.35938,1.10938 v 4.14062 h 0.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -1.76563 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 0.54688 v -4.03125 q 0,-0.6875 -0.51563,-1.17187 -0.5,-0.48438 -1.34375,-0.48438 -0.65625,0 -1.14062,0.26563 -0.46875,0.26562 -1.34375,1.29687 v 4.125 h 0.73437 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 h -2.14062 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 0.75 v -5.45312 h -0.5625 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 z m 14.92969,-3.04688 v 9.15625 h 0.875 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.34375,0.0937 h -1.53125 v -1.3125 q -1.14063,1.57813 -2.90625,1.57813 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48438 -1.29687,-1.35938 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79687 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48438 1.71875,-0.48438 1.71875,0 2.89063,1.5625 v -3.70312 h -0.875 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.35938,-0.0937 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10937 -0.84375,-0.85938 -2.01563,-0.85938 -1.17187,0 -2.01562,0.85938 -0.84375,0.85937 -0.84375,2.10937 0,1.25 0.84375,2.10938 0.84375,0.85937 2.01562,0.85937 1.17188,0 2.01563,-0.85937 0.84375,-0.85938 0.84375,-2.10938 z m 11.41406,7.76563 h -8.73438 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 h 8.73438 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 z m 3.07031,-14.20313 v 4.04688 q 0.625,-0.6875 1.20313,-0.95313 0.57812,-0.28125 1.28125,-0.28125 0.76562,0 1.29687,0.26563 0.54688,0.26562 0.90625,0.82812 0.35938,0.5625 0.35938,1.17188 v 4.07812 h 0.73437 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 h -2.14062 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 0.73437 v -4.03125 q 0,-0.70312 -0.51562,-1.17187 -0.5,-0.48438 -1.42188,-0.48438 -0.71875,0 -1.21875,0.34375 -0.375,0.25 -1.21875,1.1875 v 4.15625 h 0.75 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 h -2.14062 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 0.73437 v -8.48437 h -0.875 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 z m 15.32031,6.57813 h -6.6875 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76562 2.21875,0.76562 0.73438,0 1.53125,-0.23437 0.8125,-0.25 1.3125,-0.64063 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10938 0.0937,0.0937 0.0937,0.21875 0,0.14062 -0.125,0.26562 -0.375,0.39063 -1.34375,0.73438 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10938 -1.125,-1.10937 -1.125,-2.6875 0,-1.42187 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04688 1.04688,1.04687 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76563 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67188 -0.82812,0.67187 -1.03125,1.78125 z m 8.60156,3.89062 v -0.95312 q -1.42187,1.21875 -3.04687,1.21875 -1.1875,0 -1.85938,-0.59375 -0.65625,-0.60938 -0.65625,-1.48438 0,-0.95312 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45313,0 0.98438,0.0625 0.53125,0.0625 1.14062,0.1875 v -1.0625 q 0,-0.54687 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76562,0 -2.14062,0.45313 -0.25,0.0781 -0.32813,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23437 0,-0.14063 0.0781,-0.21875 0.10938,-0.10938 0.875,-0.3125 1.21875,-0.32813 1.84375,-0.32813 1.25,0 1.9375,0.60938 0.70313,0.60937 0.70313,1.39062 v 4.34375 h 0.875 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 0,-3.26562 q -0.45312,-0.14063 -0.96875,-0.20313 -0.51562,-0.0625 -1.09375,-0.0625 -1.42187,0 -2.23437,0.625 -0.60938,0.45313 -0.60938,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35938,0.40625 0.84375,0 1.57812,-0.32812 0.73438,-0.34375 1.5,-1.09375 z m 10.92969,-6.54688 v 9.15625 h 0.875 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.34375,0.0937 h -1.53125 v -1.3125 q -1.14063,1.57813 -2.90625,1.57813 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48438 -1.29687,-1.35938 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79687 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48438 1.71875,-0.48438 1.71875,0 2.89063,1.5625 v -3.70312 h -0.875 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.35938,-0.0937 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10937 -0.84375,-0.85938 -2.01563,-0.85938 -1.17187,0 -2.01562,0.85938 -0.84375,0.85937 -0.84375,2.10937 0,1.25 0.84375,2.10938 0.84375,0.85937 2.01562,0.85937 1.17188,0 2.01563,-0.85937 0.84375,-0.85938 0.84375,-2.10938 z m 6.97656,-0.51562 q 0,-0.90625 0.23438,-1.90625 0.23437,-1.01563 0.89062,-2.32813 0.67188,-1.32812 0.96875,-1.59375 0.0937,-0.0937 0.20313,-0.0937 0.14062,0 0.23437,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.0781 -0.0625,0.17187 -0.85938,1.57813 -1.23438,2.85938 -0.35937,1.28125 -0.35937,2.5625 0,1.28125 0.35937,2.5625 0.375,1.28125 1.23438,2.85937 0.0625,0.0937 0.0625,0.17188 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.23437,0.0937 -0.10938,0 -0.20313,-0.0781 -0.28125,-0.26563 -0.9375,-1.5625 -0.65625,-1.29688 -0.90625,-2.28125 -0.25,-1 -0.25,-2 z m 9.86719,0 q 0,0.90625 -0.23438,1.90625 -0.23437,1 -0.90625,2.32812 -0.65625,1.32813 -0.96875,1.59375 -0.0937,0.0937 -0.20312,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.0781 0.0469,-0.17188 0.85937,-1.57812 1.21875,-2.85937 0.375,-1.28125 0.375,-2.5625 0,-1.28125 -0.375,-2.5625 -0.35938,-1.28125 -1.21875,-2.85938 -0.0469,-0.0937 -0.0469,-0.17187 0,-0.14063 0.0937,-0.23438 0.0937,-0.0937 0.23438,-0.0937 0.10937,0 0.20312,0.0937 0.29688,0.26563 0.95313,1.5625 0.65625,1.28125 0.90625,2.28125 0.25,0.98438 0.25,1.98438 z" id="path153" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 614.50696,496.72177 21.74805,-21.74802 v 10.87403 h 234.8504 v 21.74801 h -234.8504 v 10.874 z" id="path155" inkscape:connector-curvature="0" style="fill:#b6d7a8;fill-rule:evenodd"/>
+ <path d="m 614.50696,496.72177 21.74805,-21.74802 v 10.87403 h 234.8504 v 21.74801 h -234.8504 v 10.874 z" id="path157" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 642.84973,499.2068 q 0,1.5 -1.07812,2.57812 -1.0625,1.0625 -2.57813,1.0625 -1.53125,0 -2.60937,-1.0625 -1.0625,-1.07812 -1.0625,-2.57812 0,-1.5 1.0625,-2.5625 1.07812,-1.0625 2.60937,-1.0625 1.51563,0 2.57813,1.0625 1.07812,1.0625 1.07812,2.5625 z m -0.65625,0 q 0,-1.23438 -0.89062,-2.09375 -0.875,-0.875 -2.125,-0.875 -1.25,0 -2.125,0.875 -0.875,0.875 -0.875,2.09375 0,1.21875 0.875,2.09375 0.875,0.875 2.125,0.875 1.25,0 2.125,-0.85938 0.89062,-0.875 0.89062,-2.10937 z m 9.80469,-6.4375 v 9.15625 h 0.875 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -1.53125 v -1.3125 q -1.14063,1.57812 -2.90625,1.57812 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48437 -1.29687,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89063,1.5625 v -3.70313 h -0.875 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.35938,-0.0937 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01563,-0.85937 -1.17187,0 -2.01562,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01562,0.85938 1.17188,0 2.01563,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 4.57031,-3.39063 v 1.1875 q 0.59375,-0.70312 1.26563,-1.0625 0.67187,-0.35937 1.57812,-0.35937 0.96875,0 1.78125,0.45312 0.82813,0.45313 1.28125,1.26563 0.45313,0.79687 0.45313,1.6875 0,1.42187 -1.01563,2.42187 -1.01562,1 -2.48437,1 -1.76563,0 -2.85938,-1.42187 v 3.95312 h 1.59375 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 h -3.125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 0.875 v -8.46875 h -0.875 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 z m 5.6875,3.17188 q 0,-1.125 -0.82812,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20313,0 -2.03125,0.8125 -0.82813,0.8125 -0.82813,1.9375 0,1.14062 0.82813,1.95312 0.82812,0.8125 2.03125,0.8125 1.17187,0 2,-0.8125 0.82812,-0.8125 0.82812,-1.95312 z m 10.75781,7.98437 h -8.73437 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 h 8.73437 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 z m 2.75782,-11.15625 v 1.1875 q 0.59375,-0.70312 1.26562,-1.0625 0.67188,-0.35937 1.57813,-0.35937 0.96875,0 1.78125,0.45312 0.82812,0.45313 1.28125,1.26563 0.45312,0.79687 0.45312,1.6875 0,1.42187 -1.01562,2.42187 -1.01563,1 -2.48438,1 -1.76562,0 -2.85937,-1.42187 v 3.95312 h 1.59375 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -3.125 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 0.875 v -8.46875 h -0.875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 z m 5.6875,3.17188 q 0,-1.125 -0.82813,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20312,0 -2.03125,0.8125 -0.82812,0.8125 -0.82812,1.9375 0,1.14062 0.82812,1.95312 0.82813,0.8125 2.03125,0.8125 1.17188,0 2,-0.8125 0.82813,-0.8125 0.82813,-1.95312 z m 8.27343,3.59375 v -0.95313 q -1.42187,1.21875 -3.04687,1.21875 -1.1875,0 -1.85938,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45313,0 0.98438,0.0625 0.53125,0.0625 1.14062,0.1875 v -1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76562,0 -2.14062,0.45312 -0.25,0.0781 -0.32813,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10938,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70313,0.60938 0.70313,1.39063 v 4.34375 h 0.875 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 z m 0,-3.26563 q -0.45312,-0.14062 -0.96875,-0.20312 -0.51562,-0.0625 -1.09375,-0.0625 -1.42187,0 -2.23437,0.625 -0.60938,0.45312 -0.60938,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35938,0.40625 0.84375,0 1.57812,-0.32813 0.73438,-0.34375 1.5,-1.09375 z m 10.46094,-2.84375 v -0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 v 1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23437,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73437,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45313,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82812,2.09375 0.84375,0.82813 2.17188,0.82813 0.76562,0 1.54687,-0.28125 0.79688,-0.28125 1.4375,-0.90625 0.17188,-0.15625 0.29688,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79688,0.85937 -1.26562,0.84375 -2.82812,0.84375 -1.59375,0 -2.60938,-1.01562 -1.01562,-1.01563 -1.01562,-2.57813 0,-1.57812 1.03125,-2.625 1.04687,-1.04687 2.64062,-1.04687 1.5,0 2.53125,0.89062 z m 5.52344,3.1875 v 2.92188 h -1.53125 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 0.875 v -8.48438 h -0.875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 1.53125 v 6.04687 l 2.79687,-2.34375 h -0.34375 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 2.10938 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -0.76563 l -2.5625,2.14063 3.25,3.3125 h 0.75 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -2.125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 0.46875 l -2.82812,-2.90625 z m 14.49219,-0.3125 h -6.6875 q 0.17187,1.28125 1.0625,2.0625 0.89062,0.76563 2.21875,0.76563 0.73437,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26562,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95312,0.34375 -1.95312,0.34375 -1.6875,0 -2.82813,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60938,0 2.64063,1.04687 1.04687,1.04688 1.03125,2.71875 z m -0.67188,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82812,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98437,0.67187 -0.82813,0.67188 -1.03125,1.78125 z m 5.36719,-2.875 h 3.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 v -4.375 h -1.21875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 z m 15.32031,11.15625 h -8.73437 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 h 8.73437 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 z m 3.88281,-11.15625 h 3.5625 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45313,0.95313 0.46875,0.375 1.34375,0.375 0.67187,0 1.4375,-0.1875 0.78125,-0.20313 1.20312,-0.45313 0.15625,-0.10937 0.26563,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10938,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95312,0.29687 -1.84375,0.29687 -1.14062,0 -1.82812,-0.54687 -0.67188,-0.54688 -0.67188,-1.45313 v -4.375 h -1.21875 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 z m 10.16407,0 v 1.65625 q 1.28125,-1.15625 1.92187,-1.48437 0.64063,-0.34375 1.17188,-0.34375 0.59375,0 1.09375,0.40625 0.5,0.39062 0.5,0.59375 0,0.14062 -0.0937,0.25 -0.0937,0.0937 -0.25,0.0937 -0.0781,0 -0.14063,-0.0312 -0.0469,-0.0312 -0.1875,-0.17188 -0.28125,-0.28125 -0.48437,-0.375 -0.20313,-0.10937 -0.39063,-0.10937 -0.4375,0 -1.04687,0.34375 -0.59375,0.34375 -2.09375,1.6875 v 3.59375 h 2.90625 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -5.14063 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.21875 0.0937,-0.0937 0.34375,-0.0937 h 1.57813 v -5.46875 h -1.20313 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.0937,-0.0937 0.34375,-0.0937 z m 12.63281,6.76563 v -0.96875 q -1.34375,1.23437 -2.90625,1.23437 -0.95313,0 -1.45313,-0.53125 -0.65625,-0.6875 -0.65625,-1.60937 v -4.23438 h -0.875 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 1.53125 v 4.89063 q 0,0.64062 0.40625,1.0625 0.40625,0.40625 1.01563,0.40625 1.60937,0 2.9375,-1.46875 v -4.23438 h -1.20313 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 1.85938 v 6.10938 h 0.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 z m 5.24219,-6.76563 v 0.98438 q 0.6875,-0.6875 1.23437,-0.95313 0.5625,-0.26562 1.25,-0.26562 0.75,0 1.375,0.3125 0.4375,0.23437 0.78125,0.78125 0.35938,0.54687 0.35938,1.10937 v 4.14063 h 0.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 h -1.76563 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 0.54688 v -4.03125 q 0,-0.6875 -0.51563,-1.17188 -0.5,-0.48437 -1.34375,-0.48437 -0.65625,0 -1.14062,0.26562 -0.46875,0.26563 -1.34375,1.29688 v 4.125 h 0.73437 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -2.14062 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 0.75 v -5.45313 h -0.5625 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 z m 14.46093,0.65625 v -0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 v 1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23437,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73437,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45313,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82812,2.09375 0.84375,0.82813 2.17188,0.82813 0.76562,0 1.54687,-0.28125 0.79688,-0.28125 1.4375,-0.90625 0.17188,-0.15625 0.29688,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79688,0.85937 -1.26562,0.84375 -2.82812,0.84375 -1.59375,0 -2.60938,-1.01562 -1.01562,-1.01563 -1.01562,-2.57813 0,-1.57812 1.03125,-2.625 1.04687,-1.04687 2.64062,-1.04687 1.5,0 2.53125,0.89062 z m 11.22657,10.5 h -8.73438 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 h 8.73438 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 3.88281,-11.15625 h 3.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 v -4.375 h -1.21875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 z m 12.83594,6.76563 v -0.95313 q -1.42188,1.21875 -3.04688,1.21875 -1.1875,0 -1.85937,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45312,0 0.98437,0.0625 0.53125,0.0625 1.14063,0.1875 v -1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76563,0 -2.14063,0.45312 -0.25,0.0781 -0.32812,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10937,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70312,0.60938 0.70312,1.39063 v 4.34375 h 0.875 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 z m 0,-3.26563 q -0.45313,-0.14062 -0.96875,-0.20312 -0.51563,-0.0625 -1.09375,-0.0625 -1.42188,0 -2.23438,0.625 -0.60937,0.45312 -0.60937,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35937,0.40625 0.84375,0 1.57813,-0.32813 0.73437,-0.34375 1.5,-1.09375 z m 8.03906,-6.875 v 1.70313 h -0.96875 v -1.70313 z m 0.0312,3.375 v 6.10938 h 2.57812 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -5.8125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 2.57813 v -5.45313 h -1.92188 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 z m 9.58594,-3.04687 v 9.15625 h 2.57812 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -5.8125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 2.57813 v -8.48438 h -1.89063 q -0.23437,0 -0.34375,-0.0937 -0.10937,-0.0937 -0.10937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 z m 9.19531,5.92187 q 0,-0.90625 0.23437,-1.90625 0.23438,-1.01562 0.89063,-2.32812 0.67187,-1.32813 0.96875,-1.59375 0.0937,-0.0937 0.20312,-0.0937 0.14063,0 0.23438,0.0937 0.10937,0.0937 0.10937,0.23437 0,0.0781 -0.0625,0.17188 -0.85937,1.57812 -1.23437,2.85937 -0.35938,1.28125 -0.35938,2.5625 0,1.28125 0.35938,2.5625 0.375,1.28125 1.23437,2.85938 0.0625,0.0937 0.0625,0.17187 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.23438,0.0937 -0.10937,0 -0.20312,-0.0781 -0.28125,-0.26562 -0.9375,-1.5625 -0.65625,-1.29687 -0.90625,-2.28125 -0.25,-1 -0.25,-2 z m 9.86719,0 q 0,0.90625 -0.23438,1.90625 -0.23437,1 -0.90625,2.32813 -0.65625,1.32812 -0.96875,1.59375 -0.0937,0.0937 -0.20312,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.0781 0.0469,-0.17187 0.85937,-1.57813 1.21875,-2.85938 0.375,-1.28125 0.375,-2.5625 0,-1.28125 -0.375,-2.5625 -0.35938,-1.28125 -1.21875,-2.85937 -0.0469,-0.0937 -0.0469,-0.17188 0,-0.14062 0.0937,-0.23437 0.0937,-0.0937 0.23438,-0.0937 0.10937,0 0.20312,0.0937 0.29688,0.26562 0.95313,1.5625 0.65625,1.28125 0.90625,2.28125 0.25,0.98437 0.25,1.98437 z" id="path159" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 873.37726,438.0866 -21.74805,21.74805 v -10.87403 h -234.8504 v -21.74804 h 234.8504 v -10.874 z" id="path161" inkscape:connector-curvature="0" style="fill:#b6d7a8;fill-rule:evenodd"/>
+ <path d="m 873.37726,438.0866 -21.74805,21.74805 v -10.87403 h -234.8504 v -21.74804 h 234.8504 v -10.874 z" id="path163" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="m 615.47284,426.29648 h 261.16534 v 20.8819 H 615.47284 Z" id="path165" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 639.30554,439.22244 q 0,1.5 -1.07813,2.57812 -1.0625,1.0625 -2.57812,1.0625 -1.53125,0 -2.60938,-1.0625 -1.0625,-1.07812 -1.0625,-2.57812 0,-1.5 1.0625,-2.5625 1.07813,-1.0625 2.60938,-1.0625 1.51562,0 2.57812,1.0625 1.07813,1.0625 1.07813,2.5625 z m -0.65625,0 q 0,-1.23438 -0.89063,-2.09375 -0.875,-0.875 -2.125,-0.875 -1.25,0 -2.125,0.875 -0.875,0.875 -0.875,2.09375 0,1.21875 0.875,2.09375 0.875,0.875 2.125,0.875 1.25,0 2.125,-0.85938 0.89063,-0.875 0.89063,-2.10937 z m 9.80469,-6.4375 v 9.15625 h 0.875 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -1.53125 v -1.3125 q -1.14063,1.57812 -2.90625,1.57812 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48437 -1.29687,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89063,1.5625 v -3.70313 h -0.875 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.35938,-0.0937 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01563,-0.85937 -1.17187,0 -2.01562,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01562,0.85938 1.17188,0 2.01563,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 4.57031,-3.39063 v 1.1875 q 0.59375,-0.70312 1.26562,-1.0625 0.67188,-0.35937 1.57813,-0.35937 0.96875,0 1.78125,0.45312 0.82812,0.45313 1.28125,1.26563 0.45312,0.79687 0.45312,1.6875 0,1.42187 -1.01562,2.42187 -1.01563,1 -2.48438,1 -1.76562,0 -2.85937,-1.42187 v 3.95312 h 1.59375 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -3.125 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 0.875 v -8.46875 h -0.875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 z m 5.6875,3.17188 q 0,-1.125 -0.82813,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20312,0 -2.03125,0.8125 -0.82812,0.8125 -0.82812,1.9375 0,1.14062 0.82812,1.95312 0.82813,0.8125 2.03125,0.8125 1.17188,0 2,-0.8125 0.82813,-0.8125 0.82813,-1.95312 z m 10.75781,7.98437 h -8.73437 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10937,-0.0781 0.34375,-0.0781 h 8.73437 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 z m 2.75781,-11.15625 v 1.1875 q 0.59375,-0.70312 1.26563,-1.0625 0.67187,-0.35937 1.57812,-0.35937 0.96875,0 1.78125,0.45312 0.82813,0.45313 1.28125,1.26563 0.45313,0.79687 0.45313,1.6875 0,1.42187 -1.01563,2.42187 -1.01562,1 -2.48437,1 -1.76563,0 -2.85938,-1.42187 v 3.95312 h 1.59375 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 h -3.125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0781 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 0.875 v -8.46875 h -0.875 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 z m 5.6875,3.17188 q 0,-1.125 -0.82812,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.20313,0 -2.03125,0.8125 -0.82813,0.8125 -0.82813,1.9375 0,1.14062 0.82813,1.95312 0.82812,0.8125 2.03125,0.8125 1.17187,0 2,-0.8125 0.82812,-0.8125 0.82812,-1.95312 z m 8.27344,3.59375 v -0.95313 q -1.42187,1.21875 -3.04687,1.21875 -1.1875,0 -1.85938,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45313,0 0.98438,0.0625 0.53125,0.0625 1.14062,0.1875 v -1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76562,0 -2.14062,0.45312 -0.25,0.0781 -0.32813,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10938,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70313,0.60938 0.70313,1.39063 v 4.34375 h 0.875 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 z m 0,-3.26563 q -0.45312,-0.14062 -0.96875,-0.20312 -0.51562,-0.0625 -1.09375,-0.0625 -1.42187,0 -2.23437,0.625 -0.60938,0.45312 -0.60938,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35938,0.40625 0.84375,0 1.57812,-0.32813 0.73438,-0.34375 1.5,-1.09375 z m 10.46094,-2.84375 v -0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 v 1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23438,0.0937 -0.14062,0 -0.23437,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73438,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45312,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82813,2.09375 0.84375,0.82813 2.17187,0.82813 0.76563,0 1.54688,-0.28125 0.79687,-0.28125 1.4375,-0.90625 0.17187,-0.15625 0.29687,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79687,0.85937 -1.26563,0.84375 -2.82813,0.84375 -1.59375,0 -2.60937,-1.01562 -1.01563,-1.01563 -1.01563,-2.57813 0,-1.57812 1.03125,-2.625 1.04688,-1.04687 2.64063,-1.04687 1.5,0 2.53125,0.89062 z m 5.52344,3.1875 v 2.92188 h -1.53125 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 0.875 v -8.48438 h -0.875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 1.53125 v 6.04687 l 2.79687,-2.34375 h -0.34375 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 2.10938 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -0.76563 l -2.5625,2.14063 3.25,3.3125 h 0.75 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -2.125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 0.46875 l -2.82812,-2.90625 z m 14.49218,-0.3125 h -6.6875 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76563 2.21875,0.76563 0.73438,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04687 1.04688,1.04688 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67187 -0.82812,0.67188 -1.03125,1.78125 z m 5.36719,-2.875 h 3.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 v -4.375 h -1.21875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 z m 15.32031,11.15625 h -8.73438 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 h 8.73438 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 8.78906,-7.625 h -6.6875 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76563 2.21875,0.76563 0.73438,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04687 1.04688,1.04688 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67187 -0.82812,0.67188 -1.03125,1.78125 z m 7.16406,0.34375 3.01562,2.89063 q 0.29688,0 0.375,0.0312 0.0781,0.0156 0.125,0.10937 0.0625,0.0781 0.0625,0.1875 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -2.10937 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.35938,-0.0937 h 1.07812 l -2.54687,-2.45313 -2.54688,2.45313 h 1.09375 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -2.125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.10937 0.0469,-0.1875 0.0625,-0.0937 0.14062,-0.10937 0.0781,-0.0312 0.375,-0.0312 l 3,-2.89063 -2.67187,-2.5625 q -0.28125,0 -0.35938,-0.0312 -0.0625,-0.0312 -0.125,-0.10937 -0.0625,-0.0937 -0.0625,-0.1875 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.35938,-0.0937 h 1.78125 q 0.25,0 0.34375,0.0937 0.0937,0.0937 0.0937,0.23438 0,0.14062 -0.0937,0.23437 -0.0937,0.0937 -0.34375,0.0937 h -0.78125 l 2.21875,2.14063 2.21875,-2.14063 h -0.78125 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.79687 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.0937 -0.0625,0.1875 -0.0625,0.0781 -0.14062,0.10937 -0.0625,0.0312 -0.34375,0.0312 z m 7.80469,-3.21875 h 3.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 v -4.375 h -1.21875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 z m 14.50781,3.53125 h -6.6875 q 0.17187,1.28125 1.0625,2.0625 0.89062,0.76563 2.21875,0.76563 0.73437,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26562,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95312,0.34375 -1.95312,0.34375 -1.6875,0 -2.82813,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60938,0 2.64063,1.04687 1.04687,1.04688 1.03125,2.71875 z m -0.67188,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82812,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98437,0.67187 -0.82813,0.67188 -1.03125,1.78125 z m 4.60157,-2.875 v 0.98438 q 0.6875,-0.6875 1.23437,-0.95313 0.5625,-0.26562 1.25,-0.26562 0.75,0 1.375,0.3125 0.4375,0.23437 0.78125,0.78125 0.35938,0.54687 0.35938,1.10937 v 4.14063 h 0.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 h -1.76563 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 0.54688 v -4.03125 q 0,-0.6875 -0.51563,-1.17188 -0.5,-0.48437 -1.34375,-0.48437 -0.65625,0 -1.14062,0.26562 -0.46875,0.26563 -1.34375,1.29688 v 4.125 h 0.73437 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -2.14062 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 0.75 v -5.45313 h -0.5625 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 z m 14.92968,-3.04687 v 9.15625 h 0.875 q 0.25,0 0.34375,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -1.53125 v -1.3125 q -1.14062,1.57812 -2.90625,1.57812 -0.89062,0 -1.70312,-0.46875 -0.8125,-0.48437 -1.29688,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48438,-0.875 1.29688,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89062,1.5625 v -3.70313 h -0.875 q -0.25,0 -0.35937,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01562,-0.85937 -1.17188,0 -2.01563,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01563,0.85938 1.17187,0 2.01562,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 11.41407,7.76562 h -8.73438 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 h 8.73438 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 3.88281,-11.15625 h 3.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 v -4.375 h -1.21875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 z m 12.83594,6.76563 v -0.95313 q -1.42188,1.21875 -3.04688,1.21875 -1.1875,0 -1.85937,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45312,0 0.98437,0.0625 0.53125,0.0625 1.14063,0.1875 v -1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76563,0 -2.14063,0.45312 -0.25,0.0781 -0.32812,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10937,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70312,0.60938 0.70312,1.39063 v 4.34375 h 0.875 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 z m 0,-3.26563 q -0.45313,-0.14062 -0.96875,-0.20312 -0.51563,-0.0625 -1.09375,-0.0625 -1.42188,0 -2.23438,0.625 -0.60937,0.45312 -0.60937,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35937,0.40625 0.84375,0 1.57813,-0.32813 0.73437,-0.34375 1.5,-1.09375 z m 8.03906,-6.875 v 1.70313 h -0.96875 v -1.70313 z m 0.0312,3.375 v 6.10938 h 2.57812 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -5.8125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 2.57813 v -5.45313 h -1.92188 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 z m 9.58594,-3.04687 v 9.15625 h 2.57812 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -5.8125 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 2.57813 v -8.48438 h -1.89063 q -0.23437,0 -0.34375,-0.0937 -0.10937,-0.0937 -0.10937,-0.25 0,-0.14062 0.0937,-0.23437 0.10937,-0.0937 0.35937,-0.0937 z m 9.19531,5.92187 q 0,-0.90625 0.23437,-1.90625 0.23438,-1.01562 0.89063,-2.32812 0.67187,-1.32813 0.96875,-1.59375 0.0937,-0.0937 0.20312,-0.0937 0.14063,0 0.23438,0.0937 0.10937,0.0937 0.10937,0.23437 0,0.0781 -0.0625,0.17188 -0.85937,1.57812 -1.23437,2.85937 -0.35938,1.28125 -0.35938,2.5625 0,1.28125 0.35938,2.5625 0.375,1.28125 1.23437,2.85938 0.0625,0.0937 0.0625,0.17187 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.23438,0.0937 -0.10937,0 -0.20312,-0.0781 -0.28125,-0.26562 -0.9375,-1.5625 -0.65625,-1.29687 -0.90625,-2.28125 -0.25,-1 -0.25,-2 z m 9.86719,0 q 0,0.90625 -0.23438,1.90625 -0.23437,1 -0.90625,2.32813 -0.65625,1.32812 -0.96875,1.59375 -0.0937,0.0937 -0.20312,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.0781 0.0469,-0.17187 0.85937,-1.57813 1.21875,-2.85938 0.375,-1.28125 0.375,-2.5625 0,-1.28125 -0.375,-2.5625 -0.35938,-1.28125 -1.21875,-2.85937 -0.0469,-0.0937 -0.0469,-0.17188 0,-0.14062 0.0937,-0.23437 0.0937,-0.0937 0.23438,-0.0937 0.10937,0 0.20312,0.0937 0.29688,0.26562 0.95313,1.5625 0.65625,1.28125 0.90625,2.28125 0.25,0.98437 0.25,1.98437 z" id="path167" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ <path d="m 264.56995,492.21783 -21.74803,21.74805 V 503.09185 H 7.971528 V 481.34384 H 242.82192 v -10.87403 z" id="path169" inkscape:connector-curvature="0" style="fill:#b6d7a8;fill-rule:evenodd"/>
+ <path d="m 264.56995,492.21783 -21.74803,21.74805 V 503.09185 H 7.971528 V 481.34384 H 242.82192 v -10.87403 z" id="path171" inkscape:connector-curvature="0" style="fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"/>
+ <path d="M 14.829797,482.81366 H 261.19198 v 20.88187 H 14.829797 Z" id="path173" inkscape:connector-curvature="0" style="fill:#000000;fill-opacity:0;fill-rule:evenodd"/>
+ <path d="m 32.298546,495.7396 q 0,1.5 -1.078125,2.57812 -1.0625,1.0625 -2.578125,1.0625 -1.53125,0 -2.609375,-1.0625 -1.0625,-1.07812 -1.0625,-2.57812 0,-1.5 1.0625,-2.5625 1.078125,-1.0625 2.609375,-1.0625 1.515625,0 2.578125,1.0625 1.078125,1.0625 1.078125,2.5625 z m -0.65625,0 q 0,-1.23438 -0.890625,-2.09375 -0.875,-0.875 -2.125,-0.875 -1.25,0 -2.125,0.875 -0.875,0.875 -0.875,2.09375 0,1.21875 0.875,2.09375 0.875,0.875 2.125,0.875 1.25,0 2.125,-0.85938 0.890625,-0.875 0.890625,-2.10937 z m 9.804688,-6.4375 v 9.15625 h 0.875 q 0.25,0 0.34375,0.0937 0.109375,0.0781 0.109375,0.23437 0,0.14063 -0.109375,0.23438 -0.09375,0.0937 -0.34375,0.0937 h -1.53125 v -1.3125 q -1.140625,1.57812 -2.90625,1.57812 -0.890625,0 -1.703125,-0.46875 -0.8125,-0.48437 -1.296875,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.484375,-0.875 1.296875,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.890625,1.5625 v -3.70313 h -0.875 q -0.25,0 -0.359375,-0.0937 -0.09375,-0.0937 -0.09375,-0.25 0,-0.14062 0.09375,-0.23437 0.109375,-0.0937 0.359375,-0.0937 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.015625,-0.85937 -1.171875,0 -2.015625,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.015625,0.85938 1.171875,0 2.015625,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 4.570312,-3.39063 v 1.1875 q 0.59375,-0.70312 1.265625,-1.0625 0.671875,-0.35937 1.578125,-0.35937 0.96875,0 1.78125,0.45312 0.828125,0.45313 1.28125,1.26563 0.453125,0.79687 0.453125,1.6875 0,1.42187 -1.015625,2.42187 -1.015625,1 -2.484375,1 -1.765625,0 -2.859375,-1.42187 v 3.95312 h 1.59375 q 0.234375,0 0.328125,0.0937 0.109375,0.0937 0.109375,0.23438 0,0.14062 -0.109375,0.23437 -0.09375,0.0937 -0.328125,0.0937 h -3.125 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0781 -0.09375,-0.23437 0,-0.14063 0.09375,-0.23438 0.109375,-0.0937 0.34375,-0.0937 h 0.875 v -8.46875 h -0.875 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.23438 0.109375,-0.0937 0.34375,-0.0937 z m 5.6875,3.17188 q 0,-1.125 -0.828125,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.203125,0 -2.03125,0.8125 -0.828125,0.8125 -0.828125,1.9375 0,1.14062 0.828125,1.95312 0.828125,0.8125 2.03125,0.8125 1.171875,0 2,-0.8125 0.828125,-0.8125 0.828125,-1.95312 z m 10.757813,7.98437 h -8.734375 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.15625 0.09375,-0.25 0.109375,-0.0781 0.34375,-0.0781 h 8.734375 q 0.234375,0 0.328125,0.0781 0.109375,0.0937 0.109375,0.25 0,0.14062 -0.109375,0.23437 -0.09375,0.0937 -0.328125,0.0937 z m 2.757812,-11.15625 v 1.1875 q 0.59375,-0.70312 1.265625,-1.0625 0.671875,-0.35937 1.578125,-0.35937 0.96875,0 1.78125,0.45312 0.828125,0.45313 1.28125,1.26563 0.453125,0.79687 0.453125,1.6875 0,1.42187 -1.015625,2.42187 -1.015625,1 -2.484375,1 -1.765625,0 -2.859375,-1.42187 v 3.95312 h 1.59375 q 0.234375,0 0.328125,0.0937 0.109375,0.0937 0.109375,0.23438 0,0.14062 -0.109375,0.23437 -0.09375,0.0937 -0.328125,0.0937 h -3.125 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0781 -0.09375,-0.23437 0,-0.14063 0.09375,-0.23438 0.109375,-0.0937 0.34375,-0.0937 h 0.875 v -8.46875 h -0.875 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.23438 0.109375,-0.0937 0.34375,-0.0937 z m 5.6875,3.17188 q 0,-1.125 -0.828125,-1.9375 -0.8125,-0.8125 -2,-0.8125 -1.203125,0 -2.03125,0.8125 -0.828125,0.8125 -0.828125,1.9375 0,1.14062 0.828125,1.95312 0.828125,0.8125 2.03125,0.8125 1.171875,0 2,-0.8125 0.828125,-0.8125 0.828125,-1.95312 z m 8.273438,3.59375 v -0.95313 q -1.421875,1.21875 -3.046875,1.21875 -1.1875,0 -1.859375,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.453125,0 0.984375,0.0625 0.53125,0.0625 1.140625,0.1875 v -1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.765625,0 -2.140625,0.45312 -0.25,0.0781 -0.328125,0.0781 -0.125,0 -0.21875,-0.0937 -0.07813,-0.0937 -0.07813,-0.23438 0,-0.14062 0.07813,-0.21875 0.109375,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.703125,0.60938 0.703125,1.39063 v 4.34375 h 0.875 q 0.234375,0 0.328125,0.0937 0.109375,0.0781 0.109375,0.23437 0,0.14063 -0.109375,0.23438 -0.09375,0.0937 -0.328125,0.0937 z m 0,-3.26563 q -0.453125,-0.14062 -0.96875,-0.20312 -0.515625,-0.0625 -1.09375,-0.0625 -1.421875,0 -2.234375,0.625 -0.609375,0.45312 -0.609375,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.359375,0.40625 0.84375,0 1.578125,-0.32813 0.734375,-0.34375 1.5,-1.09375 z m 10.460937,-2.84375 v -0.21875 q 0,-0.23437 0.09375,-0.32812 0.09375,-0.10938 0.234375,-0.10938 0.140625,0 0.234375,0.10938 0.09375,0.0937 0.09375,0.32812 v 1.48438 q 0,0.25 -0.09375,0.35937 -0.09375,0.0937 -0.234375,0.0937 -0.140625,0 -0.234375,-0.0937 -0.07813,-0.0937 -0.09375,-0.29687 -0.04687,-0.5625 -0.734375,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.453125,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.828125,2.09375 0.84375,0.82813 2.171875,0.82813 0.765625,0 1.546875,-0.28125 0.796875,-0.28125 1.4375,-0.90625 0.171875,-0.15625 0.296875,-0.15625 0.125,0 0.21875,0.0937 0.09375,0.0937 0.09375,0.21875 0,0.34375 -0.796875,0.85937 -1.265625,0.84375 -2.828125,0.84375 -1.59375,0 -2.609375,-1.01562 -1.015625,-1.01563 -1.015625,-2.57813 0,-1.57812 1.03125,-2.625 1.046875,-1.04687 2.640625,-1.04687 1.5,0 2.53125,0.89062 z m 5.523438,3.1875 v 2.92188 h -1.53125 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.15625 0.09375,-0.23437 0.109375,-0.0937 0.34375,-0.0937 h 0.875 v -8.48438 h -0.875 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.25 0,-0.14062 0.09375,-0.23437 0.109375,-0.0937 0.34375,-0.0937 h 1.53125 v 6.04687 l 2.796875,-2.34375 h -0.34375 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23437 0,-0.14063 0.09375,-0.23438 0.109375,-0.0937 0.34375,-0.0937 h 2.109375 q 0.234375,0 0.328125,0.0937 0.109375,0.0937 0.109375,0.23438 0,0.14062 -0.109375,0.23437 -0.09375,0.0937 -0.328125,0.0937 h -0.765625 l -2.5625,2.14063 3.25,3.3125 h 0.75 q 0.25,0 0.343751,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.09375,0.0937 -0.343751,0.0937 h -2.125 q -0.234375,0 -0.34375,-0.0937 -0.09375,-0.0937 -0.09375,-0.23438 0,-0.15625 0.09375,-0.23437 0.109375,-0.0937 0.34375,-0.0937 h 0.46875 l -2.828125,-2.90625 z m 14.492186,-0.3125 h -6.6875 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76563 2.21875,0.76563 0.73438,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04687 1.04688,1.04688 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67187 -0.82812,0.67188 -1.03125,1.78125 z m 5.36718,-2.875 h 3.5625 q 0.23438,0 0.32813,0.0937 0.10937,0.0937 0.10937,0.23438 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45313,0.95313 0.46875,0.375 1.34375,0.375 0.67187,0 1.4375,-0.1875 0.78125,-0.20313 1.20312,-0.45313 0.15625,-0.10937 0.26563,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10938,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95312,0.29687 -1.84375,0.29687 -1.14062,0 -1.82812,-0.54687 -0.67188,-0.54688 -0.67188,-1.45313 v -4.375 h -1.21875 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10938,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23438,-0.10938 0.14062,0 0.23437,0.10938 0.0937,0.0937 0.0937,0.32812 z m 15.32032,11.15625 h -8.73438 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 h 8.73438 q 0.23438,0 0.32813,0.0781 0.10937,0.0937 0.10937,0.25 0,0.14062 -0.10937,0.23437 -0.0937,0.0937 -0.32813,0.0937 z m 3.88282,-11.15625 h 3.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0937 0.10938,0.23438 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 h -3.5625 v 4.375 q 0,0.5625 0.45312,0.95313 0.46875,0.375 1.34375,0.375 0.67188,0 1.4375,-0.1875 0.78125,-0.20313 1.20313,-0.45313 0.15625,-0.10937 0.26562,-0.10937 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.125 -0.10937,0.21875 -0.25,0.26563 -1.21875,0.57813 -0.95313,0.29687 -1.84375,0.29687 -1.14063,0 -1.82813,-0.54687 -0.67187,-0.54688 -0.67187,-1.45313 v -4.375 h -1.21875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.21875 v -1.9375 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 z m 10.16406,0 v 1.65625 q 1.28125,-1.15625 1.92187,-1.48437 0.64063,-0.34375 1.17188,-0.34375 0.59375,0 1.09375,0.40625 0.5,0.39062 0.5,0.59375 0,0.14062 -0.0937,0.25 -0.0937,0.0937 -0.25,0.0937 -0.0781,0 -0.14063,-0.0312 -0.0469,-0.0312 -0.1875,-0.17188 -0.28125,-0.28125 -0.48437,-0.375 -0.20313,-0.10937 -0.39063,-0.10937 -0.4375,0 -1.04687,0.34375 -0.59375,0.34375 -2.09375,1.6875 v 3.59375 h 2.90625 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -5.14063 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.125 0.0937,-0.21875 0.0937,-0.0937 0.34375,-0.0937 h 1.57813 v -5.46875 h -1.20313 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.0937,-0.0937 0.34375,-0.0937 z m 12.63281,6.76563 v -0.96875 q -1.34375,1.23437 -2.90625,1.23437 -0.95312,0 -1.45312,-0.53125 -0.65625,-0.6875 -0.65625,-1.60937 v -4.23438 h -0.875 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.53125 v 4.89063 q 0,0.64062 0.40625,1.0625 0.40625,0.40625 1.01562,0.40625 1.60938,0 2.9375,-1.46875 v -4.23438 h -1.20312 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 h 1.85937 v 6.10938 h 0.5625 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 z m 5.24219,-6.76563 v 0.98438 q 0.6875,-0.6875 1.23437,-0.95313 0.5625,-0.26562 1.25,-0.26562 0.75,0 1.375,0.3125 0.4375,0.23437 0.78125,0.78125 0.35938,0.54687 0.35938,1.10937 v 4.14063 h 0.5625 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 h -1.76563 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 h 0.54688 v -4.03125 q 0,-0.6875 -0.51563,-1.17188 -0.5,-0.48437 -1.34375,-0.48437 -0.65625,0 -1.14062,0.26562 -0.46875,0.26563 -1.34375,1.29688 v 4.125 h 0.73437 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -2.14062 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 0.75 v -5.45313 h -0.5625 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.14063 0.0937,-0.23438 0.10937,-0.0937 0.34375,-0.0937 z m 14.46094,0.65625 v -0.21875 q 0,-0.23437 0.0937,-0.32812 0.0937,-0.10938 0.23437,-0.10938 0.14063,0 0.23438,0.10938 0.0937,0.0937 0.0937,0.32812 v 1.48438 q 0,0.25 -0.0937,0.35937 -0.0937,0.0937 -0.23438,0.0937 -0.14062,0 -0.23437,-0.0937 -0.0781,-0.0937 -0.0937,-0.29687 -0.0469,-0.5625 -0.73438,-1.0625 -0.6875,-0.5 -1.84375,-0.5 -1.45312,0 -2.21875,0.92187 -0.75,0.90625 -0.75,2.09375 0,1.26563 0.82813,2.09375 0.84375,0.82813 2.17187,0.82813 0.76563,0 1.54688,-0.28125 0.79687,-0.28125 1.4375,-0.90625 0.17187,-0.15625 0.29687,-0.15625 0.125,0 0.21875,0.0937 0.0937,0.0937 0.0937,0.21875 0,0.34375 -0.79687,0.85937 -1.26563,0.84375 -2.82813,0.84375 -1.59375,0 -2.60937,-1.01562 -1.01563,-1.01563 -1.01563,-2.57813 0,-1.57812 1.03125,-2.625 1.04688,-1.04687 2.64063,-1.04687 1.5,0 2.53125,0.89062 z m 11.22656,10.5 h -8.73438 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23437 0,-0.15625 0.0937,-0.25 0.10938,-0.0781 0.34375,-0.0781 h 8.73438 q 0.23437,0 0.32812,0.0781 0.10938,0.0937 0.10938,0.25 0,0.14062 -0.10938,0.23437 -0.0937,0.0937 -0.32812,0.0937 z m 3.07031,-14.20312 v 4.04687 q 0.625,-0.6875 1.20313,-0.95312 0.57812,-0.28125 1.28125,-0.28125 0.76562,0 1.29687,0.26562 0.54688,0.26563 0.90625,0.82813 0.35938,0.5625 0.35938,1.17187 v 4.07813 h 0.73437 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -2.14062 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 0.73437 v -4.03125 q 0,-0.70313 -0.51562,-1.17188 -0.5,-0.48437 -1.42188,-0.48437 -0.71875,0 -1.21875,0.34375 -0.375,0.25 -1.21875,1.1875 v 4.15625 h 0.75 q 0.23438,0 0.32813,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.32813,0.0937 h -2.14062 q -0.23438,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.15625 0.0937,-0.23437 0.10937,-0.0937 0.34375,-0.0937 h 0.73437 v -8.48438 h -0.875 q -0.23437,0 -0.34375,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.34375,-0.0937 z m 15.32031,6.57812 h -6.6875 q 0.17188,1.28125 1.0625,2.0625 0.89063,0.76563 2.21875,0.76563 0.73438,0 1.53125,-0.23438 0.8125,-0.25 1.3125,-0.64062 0.15625,-0.125 0.26563,-0.125 0.125,0 0.21875,0.10937 0.0937,0.0937 0.0937,0.21875 0,0.14063 -0.125,0.26563 -0.375,0.39062 -1.34375,0.73437 -0.95313,0.34375 -1.95313,0.34375 -1.6875,0 -2.82812,-1.10937 -1.125,-1.10938 -1.125,-2.6875 0,-1.42188 1.0625,-2.4375 1.0625,-1.03125 2.625,-1.03125 1.60937,0 2.64062,1.04687 1.04688,1.04688 1.03125,2.71875 z m -0.67187,-0.65625 q -0.1875,-1.09375 -1.03125,-1.76562 -0.82813,-0.6875 -1.96875,-0.6875 -1.15625,0 -1.98438,0.67187 -0.82812,0.67188 -1.03125,1.78125 z m 8.60156,3.89063 v -0.95313 q -1.42187,1.21875 -3.04687,1.21875 -1.1875,0 -1.85938,-0.59375 -0.65625,-0.60937 -0.65625,-1.48437 0,-0.95313 0.875,-1.65625 0.875,-0.71875 2.5625,-0.71875 0.45313,0 0.98438,0.0625 0.53125,0.0625 1.14062,0.1875 v -1.0625 q 0,-0.54688 -0.5,-0.9375 -0.5,-0.40625 -1.5,-0.40625 -0.76562,0 -2.14062,0.45312 -0.25,0.0781 -0.32813,0.0781 -0.125,0 -0.21875,-0.0937 -0.0781,-0.0937 -0.0781,-0.23438 0,-0.14062 0.0781,-0.21875 0.10938,-0.10937 0.875,-0.3125 1.21875,-0.32812 1.84375,-0.32812 1.25,0 1.9375,0.60937 0.70313,0.60938 0.70313,1.39063 v 4.34375 h 0.875 q 0.23437,0 0.32812,0.0937 0.10938,0.0781 0.10938,0.23437 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.32812,0.0937 z m 0,-3.26563 q -0.45312,-0.14062 -0.96875,-0.20312 -0.51562,-0.0625 -1.09375,-0.0625 -1.42187,0 -2.23437,0.625 -0.60938,0.45312 -0.60938,1.09375 0,0.59375 0.46875,1 0.46875,0.40625 1.35938,0.40625 0.84375,0 1.57812,-0.32813 0.73438,-0.34375 1.5,-1.09375 z m 10.92969,-6.54687 v 9.15625 h 0.875 q 0.25,0 0.34375,0.0937 0.10937,0.0781 0.10937,0.23437 0,0.14063 -0.10937,0.23438 -0.0937,0.0937 -0.34375,0.0937 h -1.53125 v -1.3125 q -1.14063,1.57812 -2.90625,1.57812 -0.89063,0 -1.70313,-0.46875 -0.8125,-0.48437 -1.29687,-1.35937 -0.46875,-0.875 -0.46875,-1.8125 0,-0.9375 0.46875,-1.79688 0.48437,-0.875 1.29687,-1.34375 0.8125,-0.48437 1.71875,-0.48437 1.71875,0 2.89063,1.5625 v -3.70313 h -0.875 q -0.25,0 -0.35938,-0.0937 -0.0937,-0.0937 -0.0937,-0.25 0,-0.14062 0.0937,-0.23437 0.10938,-0.0937 0.35938,-0.0937 z m -0.65625,6.4375 q 0,-1.25 -0.84375,-2.10938 -0.84375,-0.85937 -2.01563,-0.85937 -1.17187,0 -2.01562,0.85937 -0.84375,0.85938 -0.84375,2.10938 0,1.25 0.84375,2.10937 0.84375,0.85938 2.01562,0.85938 1.17188,0 2.01563,-0.85938 0.84375,-0.85937 0.84375,-2.10937 z m 6.97656,-0.51563 q 0,-0.90625 0.23438,-1.90625 0.23437,-1.01562 0.89062,-2.32812 0.67188,-1.32813 0.96875,-1.59375 0.0937,-0.0937 0.20313,-0.0937 0.14062,0 0.23437,0.0937 0.10938,0.0937 0.10938,0.23437 0,0.0781 -0.0625,0.17188 -0.85938,1.57812 -1.23438,2.85937 -0.35937,1.28125 -0.35937,2.5625 0,1.28125 0.35937,2.5625 0.375,1.28125 1.23438,2.85938 0.0625,0.0937 0.0625,0.17187 0,0.14063 -0.10938,0.23438 -0.0937,0.0937 -0.23437,0.0937 -0.10938,0 -0.20313,-0.0781 -0.28125,-0.26562 -0.9375,-1.5625 -0.65625,-1.29687 -0.90625,-2.28125 -0.25,-1 -0.25,-2 z m 9.86719,0 q 0,0.90625 -0.23438,1.90625 -0.23437,1 -0.90625,2.32813 -0.65625,1.32812 -0.96875,1.59375 -0.0937,0.0937 -0.20312,0.0937 -0.14063,0 -0.23438,-0.0937 -0.0937,-0.0937 -0.0937,-0.23438 0,-0.0781 0.0469,-0.17187 0.85937,-1.57813 1.21875,-2.85938 0.375,-1.28125 0.375,-2.5625 0,-1.28125 -0.375,-2.5625 -0.35938,-1.28125 -1.21875,-2.85937 -0.0469,-0.0937 -0.0469,-0.17188 0,-0.14062 0.0937,-0.23437 0.0937,-0.0937 0.23438,-0.0937 0.10937,0 0.20312,0.0937 0.29688,0.26562 0.95313,1.5625 0.65625,1.28125 0.90625,2.28125 0.25,0.98437 0.25,1.98437 z" id="path175" inkscape:connector-curvature="0" style="fill:#000000;fill-rule:nonzero"/>
+ </g>
</svg>
diff --git a/doc/users-guide/users-guide-crypto.adoc b/doc/users-guide/users-guide-crypto.adoc
index c18e369..029f47b 100644
--- a/doc/users-guide/users-guide-crypto.adoc
+++ b/doc/users-guide/users-guide-crypto.adoc
@@ -1,8 +1,10 @@
== Cryptographic services
-ODP provides APIs to perform cryptographic operations required by various
-communication protocols (_e.g.,_ IPsec). ODP cryptographic APIs are session
-based.
+ODP provides APIs to perform cryptographic operations required by
+applications. ODP cryptographic APIs are session based and provide
+cryptographic algorithm offload services. ODP also offers cryptographic
+protocol offload services for protocols such as IPsec using a different set
+of APIs. This section covers the main crypto APIs.
ODP provides APIs for following cryptographic services:
@@ -11,6 +13,11 @@ ODP provides APIs for following cryptographic services:
* Random number generation
* Crypto capability inquiries
+Ciphering and authentication services are accessible via two complementary
+sets of related APIs. The original ODP crypto APIs, and a newer
+_packet-oriented_ set of crypto APIs that are designed to be consistent with
+the protocol-aware cryptographic services offered by the IPsec API set.
+
=== Crypto Sessions
To apply a cryptographic operation to a packet a session must be created. All
@@ -29,18 +36,40 @@ Other Session parameters include algorithms, keys, initialization vector
(optional), encode or decode, output queue for async mode and output packet
pool for allocation of an output packet if required.
+The parameters that describe the characteristics of a crypto session are
+encoded in the `odp_crypto_session_param_t` struct that is passed to the
+`odp_crypto_session_create()` API. A successful call returns an
+`odp_crypto_session_t` object that in turn is passed as an input parameter to
+crypto operation calls.
+
+When an application is finished with a crypto session the
+`odp_crypto_session_destroy()` API is used to release the resources associated
+with an `odp_crypto_session_t`.
+
=== Crypto operations
After session creation, a cryptographic operation can be applied to a packet
-using the `odp_crypto_operation()` API. Applications may indicate a preference
-for synchronous or asynchronous processing in the session's `pref_mode`
-parameter. However crypto operations may complete synchronously even if an
-asynchronous preference is indicated, and applications must examine the
-`posted` output parameter from `odp_crypto_operation()` to determine whether
-the operation has completed or if an `ODP_EVENT_CRYPTO_COMPL` notification is
-expected. In the case of an async operation, the `posted` output parameter
-will be set to true.
-
+in one of two ways.
+
+==== Parameter-based Crypto Operations
+This is the original ODP support for cryptographic operations. The
+`odp_crypto_operation()` API takes an input `odp_crypto_op_param_t` struct
+that describes the cryptographic operation to be performed. This struct
+contains the session to use as well as the input packet the operation is to be
+performed on. The caller may either specify an output packet to receive the
+operation results or may request that the ODP implementation allocate a new
+packet to receive these results from the output pool associated with the
+`odp_crypto_session_t`. If the input packet is also used as the output packet,
+then an "in place" operation is requested.
+
+When using the `odp_crypto_operation()` API. Applications may indicate a
+preference for synchronous or asynchronous processing in the session's
+`pref_mode` parameter. However crypto operations may complete synchronously
+even if an asynchronous preference is indicated, and applications must examine
+the `posted` output parameter from `odp_crypto_operation()` to determine
+whether the operation has completed or if an `ODP_EVENT_CRYPTO_COMPL`
+notification is expected. In the case of an async operation, the `posted`
+output parameter will be set to true.
The operation arguments specify for each packet the areas that are to be
encrypted or decrypted and authenticated. Also, there is an option of overriding
@@ -61,6 +90,73 @@ session’s completion queue, which can be accessed directly or via the ODP
scheduler. The completion event contains the status of the operation and the
result. The application has the responsibility to free the completion event.
+Upon receipt of an `ODP_EVENT_CRYPTO_COMPL` event, the
+`odp_crypto_compl_result()` API is used to retrieve the
+`odp_crypto_op_result_t` associated with the event. This result struct in turn
+contains:
+
+* An indication of the success or failure of the crypto operation
+* The user context associated with the event
+* The output `odp_packet_t`.
+* The `odp_crypto_op_status_t` for the requested cipher operation
+* The `odp_crypto_op_status_t` for the requested authentication operation
+
+==== Packet-based Crypto Operations
+To simplify the original cryptographic operation request API, as well as to
+be more flexible and consistent with the protocol-aware APIs introduced for
+IPsec support, a newer packet-oriented set of cryptographic operation
+APIs is also provided. Applications may use either API set, but going forward
+it is expected that these newer APIs will be the focus of continued
+development.
+
+Instead of a single `odp_crypto_operation()` API, the packet-based form
+provides two APIs: `odp_crypto_op()` is the synchronous form while
+`odp_crypto_op_enq()` is the asynchronous form. To check which of these are
+supported by the ODP implementation, examine the `sync_mode` and `async_mode`
+fields in the `odp_crypto_capability_t` struct returned by the
+`odp_crypto_capability()` API.
+
+Both forms take an input array of packets, an optional output array of packets
+to receive the results, and an array of `odp_crypto_packet_op_param_t` structs
+that describe the operation to be performed on each input packet. As with the
+original APIs, the output array may be the same packets to request in-place
+operation, or may be specified as `ODP_PACKET_INVALID` to request that ODP
+allocate output packets from the pool associated with the
+`odp_crypto_session_t` being used.
+
+The key differences between the `odp_crypto_op_param_t` used by the original
+APIs and the `odp_crypto_packet_op_param_t` used by the new APIs are:
+
+* The original API takes a single `odp_crypto_op_param_t` since it operates on
+a single packet whereas the new forms take an array of
+`odp_crypto_packet_op_param_t` structs, one for each input packet.
+
+* The `odp_crypto_packet_op_param_t` does not contain any packet information
+since the input and output packets are supplied as API parameters rather than
+being encoded in this struct.
+
+* The `odp_crypto_packet_op_param_t` does not contain a user context field.
+
+In addition, the `odp_crypto_session_t` field `op_mode` is used instead of
+the `pref_mode` field when the packet-oriented APIs are used. If the
+`op_mode` is set to `ODP_CRYPTO_SYNC` then the synchronous form of the API
+must be used and if `op_mode` is set to `ODP_CRYPTO_ASYNC` then the
+asynchronous form of the API must be used. It is an error to attempt to use
+a form of the API not properly matched to the mode of the crypto session.
+
+The output of a packet-based crypto operation is an `odp_packet_t` (one for
+each input packet) that is returned either synchronously or
+asynchronously. Asynchronous return is in the form of `ODP_EVENT_PACKET`
+events that have event subtype `ODP_EVENT_PACKET_CRYPTO`. The packet
+associated with such events is obtained via the
+`odp_crypto_packet_from_event()` API. The `odp_crypto_result()` API, in turn,
+retrieves the `odp_crypto_packet_result_t` from this `odp_packet_t` that
+contains:
+
+* An indication of whether the crypto packet operation was successful or not
+* The `odp_crypto_op_status_t` for the requested cipher operation
+* The `odp_crypto_op_status_t` for the requested authentication operation
+
=== Random number Generation
ODP provides two APIs to generate various kinds of random data bytes. Random
diff --git a/example/Makefile.inc b/example/Makefile.inc
index 5595091..419bebd 100644
--- a/example/Makefile.inc
+++ b/example/Makefile.inc
@@ -1,7 +1,6 @@
-include $(top_srcdir)/platform/@with_platform@/Makefile.inc
LIB = $(top_builddir)/lib
-LDADD = $(LIB)/lib$(ODP_LIB_STR).la $(LIB)/libodphelper.la $(DPDK_PMDS) $(OPENSSL_LIBS)
-AM_CFLAGS += \
+LDADD = $(LIB)/lib$(ODP_LIB_STR).la $(LIB)/libodphelper.la $(DPDK_PMDS)
+AM_CFLAGS = \
-I$(srcdir) \
-I$(top_srcdir)/example \
-I$(top_srcdir)/platform/@with_platform@/include \
@@ -9,6 +8,7 @@ AM_CFLAGS += \
-I$(top_srcdir)/include/odp/arch/@ARCH_ABI@ \
-I$(top_srcdir)/helper/include \
-I$(top_builddir)/platform/@with_platform@/include \
+ -I$(top_srcdir)/platform/@with_platform@/arch/@ARCH_DIR@ \
-I$(top_builddir)/include
-AM_LDFLAGS += -L$(LIB)
+AM_LDFLAGS = -L$(LIB)
diff --git a/example/ddf_ifs/Makefile.am b/example/ddf_ifs/Makefile.am
index aa892ac..c5f7d62 100644
--- a/example/ddf_ifs/Makefile.am
+++ b/example/ddf_ifs/Makefile.am
@@ -1,6 +1,6 @@
LIB = $(top_builddir)/lib
-AM_CPPFLAGS += -I$(srcdir) \
+AM_CPPFLAGS = -I$(srcdir) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/platform/@with_platform@/include \
-I$(top_srcdir)/platform/@with_platform@/arch/@ARCH_DIR@
diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c
index 02282e8..7319224 100644
--- a/example/generator/odp_generator.c
+++ b/example/generator/odp_generator.c
@@ -47,6 +47,7 @@
typedef struct {
odp_pktio_t pktio;
+ odp_pktio_config_t config;
odp_pktout_queue_t pktout[MAX_WORKERS];
unsigned pktout_count;
} interface_t;
@@ -92,7 +93,16 @@ static struct {
/** * Thread specific arguments
*/
typedef struct {
- odp_pktout_queue_t pktout; /**< Packet output queue to use*/
+ union {
+ struct {
+ odp_pktout_queue_t pktout; /**< Packet output queue */
+ odp_pktout_config_opt_t *pktout_cfg; /**< Packet output config*/
+ } tx;
+ struct {
+ interface_t *ifs; /**< Interfaces array */
+ int ifs_count; /**< Interfaces array size */
+ } rx;
+ };
odp_pool_t pool; /**< Pool for packet IO */
odp_timer_pool_t tp; /**< Timer pool handle */
odp_queue_t tq; /**< Queue for timeouts */
@@ -117,6 +127,11 @@ static args_t *args;
/** Barrier to sync threads execution */
static odp_barrier_t barrier;
+/** Packet processing function types */
+typedef odp_packet_t (*setup_pkt_ref_fn_t)(odp_pool_t,
+ odp_pktout_config_opt_t *);
+typedef int (*setup_pkt_fn_t)(odp_packet_t, odp_pktout_config_opt_t *);
+
/* helper funcs */
static void parse_args(int argc, char *argv[], appl_args_t *appl_args);
static void print_info(char *progname, appl_args_t *appl_args);
@@ -137,6 +152,7 @@ static void millisleep(uint32_t ms,
uint64_t ticks = odp_timer_ns_to_tick(tp, 1000000ULL * ms);
odp_event_t ev = odp_timeout_to_event(tmo);
int rc = odp_timer_set_rel(tim, ticks, &ev);
+
if (rc != ODP_TIMER_SUCCESS)
EXAMPLE_ABORT("odp_timer_set_rel() failed\n");
/* Spin waiting for timeout event */
@@ -187,14 +203,84 @@ static int scan_ip(char *buf, unsigned int *paddr)
}
/**
+ * Setup array of reference packets
+ *
+ * @param pool Packet pool
+ * @param pktout_cfg Interface output configuration
+ * @param pkt_ref_array Packet array
+ * @param pkt_ref_array_size Packet array size
+ * @param setup_ref Packet setup function
+ * @return 0 success, -1 failed
+*/
+static int setup_pkt_ref_array(odp_pool_t pool,
+ odp_pktout_config_opt_t *pktout_cfg,
+ odp_packet_t *pkt_ref_array,
+ int pkt_ref_array_size,
+ setup_pkt_ref_fn_t setup_ref)
+{
+ int i;
+
+ for (i = 0; i < pkt_ref_array_size; i++) {
+ pkt_ref_array[i] = (*setup_ref)(pool, pktout_cfg);
+ if (pkt_ref_array[i] == ODP_PACKET_INVALID)
+ break;
+ }
+
+ if (i < pkt_ref_array_size) {
+ odp_packet_free_multi(pkt_ref_array, i);
+ return -1;
+ }
+ return 0;
+}
+
+/**
+ * Setup array of packets
+ *
+ * @param pktout_cfg Interface output configuration
+ * @param pkt_ref_array Reference packet array
+ * @param pkt_array Packet array
+ * @param pkt_array_size Packet array size
+ * @param setup_pkt Packet setup function
+ * @return 0 success, -1 failed
+*/
+static int setup_pkt_array(odp_pktout_config_opt_t *pktout_cfg,
+ odp_packet_t *pkt_ref_array,
+ odp_packet_t *pkt_array,
+ int pkt_array_size,
+ setup_pkt_fn_t setup_pkt)
+{
+ int i;
+
+ for (i = 0; i < pkt_array_size; i++) {
+ if ((*setup_pkt)(pkt_ref_array[i], pktout_cfg))
+ break;
+
+ pkt_array[i] = odp_packet_ref_static(pkt_ref_array[i]);
+ if (pkt_array[i] == ODP_PACKET_INVALID)
+ break;
+ }
+ if (i < pkt_array_size) {
+ if (i)
+ odp_packet_free_multi(pkt_array, i - 1);
+
+ return -1;
+ }
+ return 0;
+}
+
+/**
* set up an udp packet reference
*
* @param pool Buffer pool to create packet in
+ * @param pktout_cfg Interface output configuration
*
- * @return Handle of created packet
+ *
+ * @retval Handle of created packet
* @retval ODP_PACKET_INVALID Packet could not be created
+ *
*/
-static odp_packet_t setup_udp_pkt_ref(odp_pool_t pool)
+static odp_packet_t setup_udp_pkt_ref(odp_pool_t pool,
+ odp_pktout_config_opt_t *pktout_cfg)
{
odp_packet_t pkt;
char *buf;
@@ -238,8 +324,10 @@ static odp_packet_t setup_udp_pkt_ref(odp_pool_t pool)
udp->src_port = odp_cpu_to_be_16(args->appl.srcport);
udp->dst_port = odp_cpu_to_be_16(args->appl.dstport);
udp->length = odp_cpu_to_be_16(args->appl.payload + ODPH_UDPHDR_LEN);
- udp->chksum = 0;
- udp->chksum = odph_ipv4_udp_chksum(pkt);
+ if (!pktout_cfg->bit.udp_chksum) {
+ udp->chksum = 0;
+ udp->chksum = odph_ipv4_udp_chksum(pkt);
+ }
return pkt;
}
@@ -247,48 +335,49 @@ static odp_packet_t setup_udp_pkt_ref(odp_pool_t pool)
/**
* set up an udp packet
*
- * @param pool Buffer pool to create packet in
- * @param pkt_ref Reference UDP packet
+ * @param pkt Reference UDP packet
+ * @param pktout_cfg Interface output configuration
*
- * @return Handle of created packet
- * @retval ODP_PACKET_INVALID Packet could not be created
+ * @return Success/Failed
+ * @retval 0 on success, -1 on fail
*/
-static odp_packet_t pack_udp_pkt(odp_pool_t pool, odp_packet_t pkt_ref)
+static int setup_udp_pkt(odp_packet_t pkt, odp_pktout_config_opt_t *pktout_cfg)
{
- odp_packet_t pkt;
char *buf;
odph_ipv4hdr_t *ip;
unsigned short seq;
- pkt = odp_packet_alloc(pool, args->appl.payload + ODPH_UDPHDR_LEN +
- ODPH_IPV4HDR_LEN + ODPH_ETHHDR_LEN);
-
- if (pkt == ODP_PACKET_INVALID)
- return pkt;
-
buf = (char *)odp_packet_data(pkt);
- odp_memcpy(buf, odp_packet_data(pkt_ref),
- args->appl.payload + ODPH_UDPHDR_LEN +
- ODPH_IPV4HDR_LEN + ODPH_ETHHDR_LEN);
/*Update IP ID and checksum*/
ip = (odph_ipv4hdr_t *)(buf + ODPH_ETHHDR_LEN);
seq = odp_atomic_fetch_add_u64(&counters.seq, 1) % 0xFFFF;
ip->id = odp_cpu_to_be_16(seq);
- ip->chksum = odph_chksum(ip, ODPH_IPV4HDR_LEN);
+ if (!pktout_cfg->bit.ipv4_chksum) {
+ ip->chksum = 0;
+ ip->chksum = odph_chksum(ip, ODPH_IPV4HDR_LEN);
+ }
- return pkt;
+ if (pktout_cfg->bit.ipv4_chksum || pktout_cfg->bit.udp_chksum) {
+ odp_packet_l2_offset_set(pkt, 0);
+ odp_packet_l3_offset_set(pkt, ODPH_ETHHDR_LEN);
+ odp_packet_l4_offset_set(pkt, ODPH_ETHHDR_LEN +
+ ODPH_IPV4HDR_LEN);
+ }
+ return 0;
}
/**
* Set up an icmp packet reference
*
* @param pool Buffer pool to create packet in
+ * @param pktout_cfg Interface output configuration
*
* @return Handle of created packet
* @retval ODP_PACKET_INVALID Packet could not be created
*/
-static odp_packet_t setup_icmp_pkt_ref(odp_pool_t pool)
+static odp_packet_t setup_icmp_pkt_ref(odp_pool_t pool,
+ odp_pktout_config_opt_t *pktout_cfg)
{
odp_packet_t pkt;
char *buf;
@@ -296,6 +385,8 @@ static odp_packet_t setup_icmp_pkt_ref(odp_pool_t pool)
odph_ipv4hdr_t *ip;
odph_icmphdr_t *icmp;
+ (void)pktout_cfg;
+
args->appl.payload = 56;
pkt = odp_packet_alloc(pool, args->appl.payload + ODPH_ICMPHDR_LEN +
ODPH_IPV4HDR_LEN + ODPH_ETHHDR_LEN);
@@ -338,15 +429,15 @@ static odp_packet_t setup_icmp_pkt_ref(odp_pool_t pool)
/**
* Set up an icmp packet
*
- * @param pool Buffer pool to create packet in
- * @param pkt_ref Reference ICMP packet
+ * @param pkt Reference ICMP packet
+ * @param pktout_cfg Interface output configuration
*
- * @return Handle of created packet
- * @retval ODP_PACKET_INVALID Packet could not be created
+ * @return Success/Failed
+ * @retval 0 on success, -1 on fail
*/
-static odp_packet_t pack_icmp_pkt(odp_pool_t pool, odp_packet_t pkt_ref)
+static int setup_icmp_pkt(odp_packet_t pkt,
+ odp_pktout_config_opt_t *pktout_cfg)
{
- odp_packet_t pkt;
char *buf;
odph_ipv4hdr_t *ip;
odph_icmphdr_t *icmp;
@@ -354,22 +445,16 @@ static odp_packet_t pack_icmp_pkt(odp_pool_t pool, odp_packet_t pkt_ref)
uint8_t *tval_d;
unsigned short seq;
- pkt = odp_packet_alloc(pool, args->appl.payload + ODPH_ICMPHDR_LEN +
- ODPH_IPV4HDR_LEN + ODPH_ETHHDR_LEN);
-
- if (pkt == ODP_PACKET_INVALID)
- return pkt;
-
buf = (char *)odp_packet_data(pkt);
- odp_memcpy(buf, odp_packet_data(pkt_ref),
- args->appl.payload + ODPH_ICMPHDR_LEN +
- ODPH_IPV4HDR_LEN + ODPH_ETHHDR_LEN);
/* ip */
ip = (odph_ipv4hdr_t *)(buf + ODPH_ETHHDR_LEN);
seq = odp_atomic_fetch_add_u64(&counters.seq, 1) % 0xffff;
ip->id = odp_cpu_to_be_16(seq);
- ip->chksum = odph_chksum(ip, ODPH_IPV4HDR_LEN);
+ if (!pktout_cfg->bit.ipv4_chksum) {
+ ip->chksum = 0;
+ ip->chksum = odph_chksum(ip, ODPH_IPV4HDR_LEN);
+ }
/* icmp */
icmp = (odph_icmphdr_t *)(buf + ODPH_ETHHDR_LEN + ODPH_IPV4HDR_LEN);
@@ -383,7 +468,14 @@ static odp_packet_t pack_icmp_pkt(odp_pool_t pool, odp_packet_t pkt_ref)
icmp->chksum = 0;
icmp->chksum = odph_chksum(icmp, args->appl.payload + ODPH_ICMPHDR_LEN);
- return pkt;
+ if (pktout_cfg->bit.ipv4_chksum) {
+ odp_packet_l2_offset_set(pkt, 0);
+ odp_packet_l3_offset_set(pkt, ODPH_ETHHDR_LEN);
+ odp_packet_l4_offset_set(pkt, ODPH_ETHHDR_LEN +
+ ODPH_IPV4HDR_LEN);
+ }
+
+ return 0;
}
/**
@@ -423,6 +515,22 @@ static int create_pktio(const char *dev, odp_pool_t pool,
dev);
return -1;
}
+ odp_pktio_config_init(&itf->config);
+ itf->config.pktin.bit.ipv4_chksum = capa.config.pktin.bit.ipv4_chksum;
+ itf->config.pktin.bit.udp_chksum = capa.config.pktin.bit.udp_chksum;
+ itf->config.pktin.bit.drop_ipv4_err =
+ capa.config.pktin.bit.drop_ipv4_err;
+ itf->config.pktin.bit.drop_udp_err = capa.config.pktin.bit.drop_udp_err;
+
+ itf->config.pktout.bit.ipv4_chksum = capa.config.pktout.bit.ipv4_chksum;
+ itf->config.pktout.bit.udp_chksum = capa.config.pktout.bit.udp_chksum;
+
+ if (odp_pktio_config(itf->pktio, &itf->config)) {
+ EXAMPLE_ERR("Error: Failed to set interface configuration %s\n",
+ dev);
+ return -1;
+ }
+
if (num_rx_queues > capa.max_input_queues)
num_rx_queues = capa.max_input_queues;
@@ -480,33 +588,42 @@ static int create_pktio(const char *dev, odp_pool_t pool,
static int gen_send_thread(void *arg)
{
int thr;
- int ret, i;
+ int ret = 0;
thread_args_t *thr_args;
odp_pktout_queue_t pktout;
+ odp_pktout_config_opt_t *pktout_cfg;
+ odp_packet_t pkt_ref_array[MAX_UDP_TX_BURST];
odp_packet_t pkt_array[MAX_UDP_TX_BURST];
int pkt_array_size;
int burst_start, burst_size;
- odp_packet_t pkt_ref = ODP_PACKET_INVALID;
+ setup_pkt_ref_fn_t setup_pkt_ref = NULL;
+ setup_pkt_fn_t setup_pkt = NULL;
thr = odp_thread_id();
thr_args = arg;
+ pktout = thr_args->tx.pktout;
+ pktout_cfg = thr_args->tx.pktout_cfg;
- pktout = thr_args->pktout;
-
+ /* Create reference packets*/
if (args->appl.mode == APPL_MODE_UDP) {
- pkt_ref = setup_udp_pkt_ref(thr_args->pool);
pkt_array_size = args->appl.udp_tx_burst;
+ setup_pkt_ref = setup_udp_pkt_ref;
+ setup_pkt = setup_udp_pkt;
} else if (args->appl.mode == APPL_MODE_PING) {
- pkt_ref = setup_icmp_pkt_ref(thr_args->pool);
pkt_array_size = 1;
+ setup_pkt_ref = setup_icmp_pkt_ref;
+ setup_pkt = setup_icmp_pkt;
} else {
EXAMPLE_ERR(" [%02i] Error: invalid processing mode %d\n",
thr, args->appl.mode);
return -1;
}
- if (pkt_ref == ODP_PACKET_INVALID) {
- EXAMPLE_ERR(" [%2i] Error: reference packet creation failed\n",
- thr);
+
+ if (setup_pkt_ref_array(thr_args->pool, pktout_cfg,
+ pkt_ref_array, pkt_array_size,
+ setup_pkt_ref)) {
+ EXAMPLE_ERR("[%02i] Error: failed to create"
+ " reference packets\n", thr);
return -1;
}
@@ -520,30 +637,15 @@ static int gen_send_thread(void *arg)
(unsigned int)args->appl.number)
break;
- if (args->appl.mode == APPL_MODE_UDP) {
- for (i = 0; i < pkt_array_size; i++) {
- pkt_array[i] = pack_udp_pkt(thr_args->pool,
- pkt_ref);
- if (!odp_packet_is_valid(pkt_array[i]))
- break;
- }
- if (i != pkt_array_size) {
- EXAMPLE_ERR(" [%2i] alloc_multi failed\n",
- thr);
- odp_packet_free_multi(pkt_array, i);
- break;
- }
- } else if (args->appl.mode == APPL_MODE_PING) {
- pkt_array[0] = pack_icmp_pkt(thr_args->pool, pkt_ref);
- if (!odp_packet_is_valid(pkt_array[0])) {
- EXAMPLE_ERR(" [%2i] alloc_single failed\n",
- thr);
- break;
- }
- } else {
+ /* Setup TX burst*/
+ if (setup_pkt_array(pktout_cfg, pkt_ref_array, pkt_array,
+ pkt_array_size, setup_pkt)) {
+ EXAMPLE_ERR("[%02i] Error: failed to setup packets\n",
+ thr);
break;
}
+ /* Send TX burst*/
for (burst_start = 0, burst_size = pkt_array_size;;) {
ret = odp_pktout_send(pktout, &pkt_array[burst_start],
burst_size);
@@ -573,7 +675,6 @@ static int gen_send_thread(void *arg)
thr_args->tim,
thr_args->tq,
thr_args->tmo_ev);
-
}
}
@@ -591,7 +692,8 @@ static int gen_send_thread(void *arg)
args->appl.timeout--;
}
}
- odp_packet_free(pkt_ref);
+
+ odp_packet_free_multi(pkt_ref_array, pkt_array_size);
return 0;
}
@@ -682,12 +784,15 @@ static void print_pkts(int thr, odp_packet_t pkt_tbl[], unsigned len)
static int gen_recv_thread(void *arg)
{
int thr;
+ thread_args_t *thr_args;
odp_packet_t pkts[MAX_RX_BURST], pkt;
odp_event_t events[MAX_RX_BURST];
int pkt_cnt, ev_cnt, i;
+ interface_t *itfs, *itf;
thr = odp_thread_id();
- (void)arg;
+ thr_args = (thread_args_t *)arg;
+ itfs = thr_args->rx.ifs;
printf(" [%02i] created mode: RECEIVE\n", thr);
odp_barrier_wait(&barrier);
@@ -706,6 +811,21 @@ static int gen_recv_thread(void *arg)
continue;
for (i = 0, pkt_cnt = 0; i < ev_cnt; i++) {
pkt = odp_packet_from_event(events[i]);
+ itf = &itfs[odp_pktio_index(odp_packet_input(pkt))];
+
+ if (odp_packet_has_ipv4(pkt)) {
+ if (itf->config.pktin.bit.ipv4_chksum) {
+ if (odp_packet_has_l3_error(pkt))
+ printf("HW detected L3 error\n");
+ }
+ }
+
+ if (odp_packet_has_udp(pkt)) {
+ if (itf->config.pktin.bit.udp_chksum) {
+ if (odp_packet_has_l4_error(pkt))
+ printf("HW detected L4 error\n");
+ }
+ }
/* Drop packets with errors */
if (odp_unlikely(odp_packet_has_error(pkt))) {
@@ -715,9 +835,11 @@ static int gen_recv_thread(void *arg)
pkts[pkt_cnt++] = pkt;
}
- print_pkts(thr, pkts, pkt_cnt);
+ if (pkt_cnt) {
+ print_pkts(thr, pkts, pkt_cnt);
- odp_packet_free_multi(pkts, pkt_cnt);
+ odp_packet_free_multi(pkts, pkt_cnt);
+ }
}
return 0;
@@ -729,11 +851,12 @@ static int gen_recv_thread(void *arg)
*/
static void print_global_stats(int num_workers)
{
- odp_time_t cur, wait, next;
+ odp_time_t cur, wait, next, left;
uint64_t pkts_snd = 0, pkts_snd_prev = 0;
uint64_t pps_snd = 0, maximum_pps_snd = 0;
uint64_t pkts_rcv = 0, pkts_rcv_prev = 0;
uint64_t pps_rcv = 0, maximum_pps_rcv = 0;
+ uint64_t stall;
int verbose_interval = 20;
odp_thrmask_t thrd_mask;
@@ -750,8 +873,15 @@ static void print_global_stats(int num_workers)
}
cur = odp_time_local();
- if (odp_time_cmp(next, cur) > 0)
+ if (odp_time_cmp(next, cur) > 0) {
+ left = odp_time_diff(next, cur);
+ stall = odp_time_to_ns(left);
+ if (stall / ODP_TIME_SEC_IN_NS)
+ sleep(1);
+ else
+ usleep(stall / ODP_TIME_USEC_IN_NS);
continue;
+ }
next = odp_time_sum(cur, wait);
switch (args->appl.mode) {
@@ -978,7 +1108,8 @@ int main(int argc, char *argv[])
EXAMPLE_ERR("queue_create failed\n");
abort();
}
- (void)args->thread[1].pktout; /* Not used*/
+ args->thread[1].rx.ifs = ifs;
+ args->thread[1].rx.ifs_count = args->appl.if_count;
args->thread[1].pool = pool;
args->thread[1].tp = tp;
args->thread[1].tq = tq;
@@ -1007,7 +1138,8 @@ int main(int argc, char *argv[])
EXAMPLE_ERR("queue_create failed\n");
abort();
}
- args->thread[0].pktout = ifs[0].pktout[0];
+ args->thread[0].tx.pktout = ifs[0].pktout[0];
+ args->thread[0].tx.pktout_cfg = &ifs[0].config.pktout;
args->thread[0].pool = pool;
args->thread[0].tp = tp;
args->thread[0].tq = tq;
@@ -1039,15 +1171,19 @@ int main(int argc, char *argv[])
int (*thr_run_func)(void *);
int if_idx, pktout_idx;
- if (args->appl.mode == APPL_MODE_RCV)
- (void)args->thread[i].pktout; /*not used*/
- else {
+ if (args->appl.mode == APPL_MODE_RCV) {
+ args->thread[i].rx.ifs = ifs;
+ args->thread[i].rx.ifs_count =
+ args->appl.if_count;
+ } else {
if_idx = i % args->appl.if_count;
pktout_idx = (i / args->appl.if_count) %
ifs[if_idx].pktout_count;
- args->thread[i].pktout =
+ args->thread[i].tx.pktout =
ifs[if_idx].pktout[pktout_idx];
+ args->thread[i].tx.pktout_cfg =
+ &ifs[if_idx].config.pktout;
}
tq = odp_queue_create("", NULL);
if (tq == ODP_QUEUE_INVALID) {
@@ -1091,7 +1227,6 @@ int main(int argc, char *argv[])
odph_odpthreads_create(&thread_tbl[i],
&thd_mask, &thr_params);
cpu = odp_cpumask_next(&cpumask, cpu);
-
}
}
@@ -1139,7 +1274,6 @@ int main(int argc, char *argv[])
return 0;
}
-
/**
* Parse and store the command line arguments
*
diff --git a/example/m4/configure.m4 b/example/m4/configure.m4
index 270aa89..208c5d6 100644
--- a/example/m4/configure.m4
+++ b/example/m4/configure.m4
@@ -1,14 +1,11 @@
##########################################################################
# Enable/disable test-example
##########################################################################
-test_example=no
AC_ARG_ENABLE([test-example],
- [ --enable-test-example run basic test against examples],
- [if test "x$enableval" = "xyes"; then
- test_example=yes
- else
- test_example=no
- fi])
+ [AS_HELP_STRING([--enable-test-example], [run basic test against examples])],
+ [test_example=$enableval],
+ [test_example=yes])
+AM_CONDITIONAL([test_example], [test x$test_example = xyes ])
AC_CONFIG_FILES([example/classifier/Makefile
example/generator/Makefile
diff --git a/frameworks/modular/odp_module.c b/frameworks/modular/odp_module.c
index 89b7cb0..475bcd5 100644
--- a/frameworks/modular/odp_module.c
+++ b/frameworks/modular/odp_module.c
@@ -6,6 +6,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#include <stdio.h>
#include <errno.h>
#include "odp_module.h"
diff --git a/helper/.gitignore b/helper/.gitignore
deleted file mode 100644
index f282c15..0000000
--- a/helper/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-config.h.in
-config.h
-stamp-h1
diff --git a/helper/Makefile.am b/helper/Makefile.am
index 2c5452d..bf75b46 100644
--- a/helper/Makefile.am
+++ b/helper/Makefile.am
@@ -1,17 +1,16 @@
-include $(top_srcdir)/platform/@with_platform@/Makefile.inc
-
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = $(top_builddir)/pkgconfig/libodphelper.pc
LIB = $(top_builddir)/lib
-AM_CFLAGS += -I$(srcdir)/include
-AM_CFLAGS += -I$(top_srcdir)/platform/@with_platform@/include
-AM_CFLAGS += -I$(top_srcdir)/include
-AM_CFLAGS += -I$(top_srcdir)/include/odp/arch/@ARCH_ABI@
-AM_CFLAGS += -I$(top_builddir)/platform/@with_platform@/include
-AM_CFLAGS += -I$(top_builddir)/include
+AM_CPPFLAGS = -I$(srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/platform/@with_platform@/include
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/include/odp/arch/@ARCH_ABI@
+AM_CPPFLAGS += -I$(top_builddir)/platform/@with_platform@/include
+AM_CPPFLAGS += -I$(top_srcdir)/platform/@with_platform@/arch/@ARCH_DIR@
+AM_CPPFLAGS += -I$(top_builddir)/include
-AM_LDFLAGS += -version-number '$(ODPHELPER_LIBSO_VERSION)'
+AM_LDFLAGS = -version-number '$(ODPHELPER_LIBSO_VERSION)'
helperincludedir = $(includedir)/odp/helper/
helperinclude_HEADERS = \
@@ -42,8 +41,8 @@ helperlinuxinclude_HEADERS = \
endif
noinst_HEADERS = \
- $(srcdir)/odph_debug.h \
- $(srcdir)/odph_list_internal.h
+ $(srcdir)/include/odph_debug.h \
+ $(srcdir)/include/odph_list_internal.h
__LIB__libodphelper_la_SOURCES = \
eth.c \
diff --git a/helper/chksum.c b/helper/chksum.c
index ae70d97..f8303b4 100644
--- a/helper/chksum.c
+++ b/helper/chksum.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp.h>
#include <odp/helper/ip.h>
#include <odp/helper/udp.h>
diff --git a/helper/cuckootable.c b/helper/cuckootable.c
index 3280091..adce187 100644
--- a/helper/cuckootable.c
+++ b/helper/cuckootable.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
/*-
* BSD LICENSE
*
diff --git a/helper/eth.c b/helper/eth.c
index 9a151fa..b7c2c6b 100644
--- a/helper/eth.c
+++ b/helper/eth.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/helper/eth.h>
#include <stdio.h>
diff --git a/helper/hashtable.c b/helper/hashtable.c
index f26b18b..e0761c3 100644
--- a/helper/hashtable.c
+++ b/helper/hashtable.c
@@ -3,6 +3,9 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+
+#include <config.h>
+
#include <stdio.h>
#include <string.h>
#include <malloc.h>
diff --git a/helper/include/odp/helper/chksum.h b/helper/include/odp/helper/chksum.h
index 520e927..1bf950c 100644
--- a/helper/include/odp/helper/chksum.h
+++ b/helper/include/odp/helper/chksum.h
@@ -40,7 +40,7 @@ typedef enum {
* @param buffer calculate chksum for buffer
* @param len buffer length
*
- * @return checksum value in host cpu order
+ * @return checksum value in network order
*/
static inline odp_u16sum_t odph_chksum(void *buffer, int len)
{
diff --git a/helper/include/odp/helper/ip.h b/helper/include/odp/helper/ip.h
index 91776fa..c6eb9d7 100644
--- a/helper/include/odp/helper/ip.h
+++ b/helper/include/odp/helper/ip.h
@@ -74,6 +74,9 @@ extern "C" {
/** @internal Returns true if IPv4 packet is a fragment */
#define ODPH_IPV4HDR_IS_FRAGMENT(frag_offset) ((frag_offset) & 0x3fff)
+/** @internal Checksum offset in IPv4 header */
+#define ODPH_IPV4HDR_CSUM_OFFSET 10
+
/** IPv4 header */
typedef struct ODP_PACKED {
uint8_t ver_ihl; /**< Version / Header length */
@@ -93,6 +96,41 @@ ODP_STATIC_ASSERT(sizeof(odph_ipv4hdr_t) == ODPH_IPV4HDR_LEN,
"ODPH_IPV4HDR_T__SIZE_ERROR");
/**
+ * Calculate IPv4 header checksum
+ *
+ * @param pkt The packet to be checksummed
+ * @param offset Offset into pkt of start of IP header
+ * @param ip Pointer to IPv4 header to be checksummed
+ * @param[out] chksum Field to receive checksum results
+ *
+ * @retval 0 On success
+ * @retval <0 On failure
+ */
+static inline int odph_ipv4_csum(odp_packet_t pkt,
+ uint32_t offset,
+ odph_ipv4hdr_t *ip,
+ odp_u16sum_t *chksum)
+{
+ unsigned nleft = ODPH_IPV4HDR_IHL(ip->ver_ihl) * 4;
+ uint16_t buf[nleft / 2];
+ int res;
+
+ if (odp_unlikely(nleft < sizeof(*ip)))
+ return -1;
+ ip->chksum = 0;
+ memcpy(buf, ip, sizeof(*ip));
+ res = odp_packet_copy_to_mem(pkt, offset + sizeof(*ip),
+ nleft - sizeof(*ip),
+ buf + sizeof(*ip) / 2);
+ if (odp_unlikely(res < 0))
+ return res;
+
+ *chksum = odph_chksum(buf, nleft);
+
+ return 0;
+}
+
+/**
* Check if IPv4 checksum is valid
*
* @param pkt ODP packet
@@ -102,49 +140,57 @@ ODP_STATIC_ASSERT(sizeof(odph_ipv4hdr_t) == ODPH_IPV4HDR_LEN,
static inline int odph_ipv4_csum_valid(odp_packet_t pkt)
{
uint32_t offset;
- odp_u16be_t res = 0;
- uint16_t *w;
- int nleft = sizeof(odph_ipv4hdr_t);
+ int res;
odph_ipv4hdr_t ip;
- odp_u16be_t chksum;
+ odp_u16sum_t chksum, cur_chksum;
offset = odp_packet_l3_offset(pkt);
if (offset == ODP_PACKET_OFFSET_INVALID)
return 0;
- odp_packet_copy_to_mem(pkt, offset, sizeof(odph_ipv4hdr_t), &ip);
+ res = odp_packet_copy_to_mem(pkt, offset, sizeof(odph_ipv4hdr_t), &ip);
+ if (odp_unlikely(res < 0))
+ return 0;
- w = (uint16_t *)(void *)&ip;
chksum = ip.chksum;
- ip.chksum = 0x0;
- res = odph_chksum(w, nleft);
- return (res == chksum) ? 1 : 0;
+ res = odph_ipv4_csum(pkt, offset, &ip, &cur_chksum);
+ if (odp_unlikely(res < 0))
+ return 0;
+
+ return (cur_chksum == chksum) ? 1 : 0;
}
/**
* Calculate and fill in IPv4 checksum
*
- * @note when using this api to populate data destined for the wire
- * odp_cpu_to_be_16() can be used to remove sparse warnings
- *
* @param pkt ODP packet
*
- * @return IPv4 checksum in host cpu order, or 0 on failure
+ * @retval 0 on success
+ * @retval <0 on failure
*/
-static inline odp_u16sum_t odph_ipv4_csum_update(odp_packet_t pkt)
+static inline int odph_ipv4_csum_update(odp_packet_t pkt)
{
- uint16_t *w;
- odph_ipv4hdr_t *ip;
- int nleft = sizeof(odph_ipv4hdr_t);
+ uint32_t offset;
+ odph_ipv4hdr_t ip;
+ odp_u16sum_t chksum;
+ int res;
- ip = (odph_ipv4hdr_t *)odp_packet_l3_ptr(pkt, NULL);
- if (ip == NULL)
- return 0;
+ offset = odp_packet_l3_offset(pkt);
+ if (offset == ODP_PACKET_OFFSET_INVALID)
+ return -1;
+
+ res = odp_packet_copy_to_mem(pkt, offset, sizeof(ip), &ip);
+ if (odp_unlikely(res < 0))
+ return res;
+
+ res = odph_ipv4_csum(pkt, offset, &ip, &chksum);
+ if (odp_unlikely(res < 0))
+ return res;
- w = (uint16_t *)(void *)ip;
- ip->chksum = odph_chksum(w, nleft);
- return ip->chksum;
+ return odp_packet_copy_from_mem(pkt,
+ offset + ODPH_IPV4HDR_CSUM_OFFSET,
+ 2, &chksum);
}
/** IPv6 version */
diff --git a/helper/odph_debug.h b/helper/include/odph_debug.h
index 36c743c..36c743c 100644
--- a/helper/odph_debug.h
+++ b/helper/include/odph_debug.h
diff --git a/helper/odph_list_internal.h b/helper/include/odph_list_internal.h
index 9e532b0..f870ee3 100644
--- a/helper/odph_list_internal.h
+++ b/helper/include/odph_list_internal.h
@@ -18,18 +18,30 @@
extern "C" {
#endif
+/** List object */
typedef struct odph_list_object {
- struct odph_list_object *next, *prev;
+ /** Next element in list */
+ struct odph_list_object *next;
+
+ /** Previous element in list */
+ struct odph_list_object *prev;
} odph_list_object;
+/** Head of list */
typedef odph_list_object odph_list_head;
+/**
+ * @internal Intiailize list head element
+ *
+ * @param list List object to be initialized
+ */
static inline void ODPH_INIT_LIST_HEAD(odph_list_object *list)
{
list->next = list;
list->prev = list;
}
+/** @internal Inline function @param new @param prev @param next */
static inline void __odph_list_add(odph_list_object *new,
odph_list_object *prev,
odph_list_object *next)
@@ -40,17 +52,20 @@ static inline void __odph_list_add(odph_list_object *new,
prev->next = new;
}
+/** @internal Inline function @param new @param head */
static inline void odph_list_add(odph_list_object *new, odph_list_object *head)
{
__odph_list_add(new, head, head->next);
}
+/** @internal Inline function @param new @param head */
static inline void odph_list_add_tail(struct odph_list_object *new,
odph_list_object *head)
{
__odph_list_add(new, head->prev, head);
}
+/** @internal Inline function @param prev @param next */
static inline void __odph_list_del(struct odph_list_object *prev,
odph_list_object *next)
{
@@ -58,20 +73,24 @@ static inline void __odph_list_del(struct odph_list_object *prev,
prev->next = next;
}
+/** @internal Inline function @param entry */
static inline void odph_list_del(struct odph_list_object *entry)
{
__odph_list_del(entry->prev, entry->next);
ODPH_INIT_LIST_HEAD(entry);
}
+/** @internal Inline function @param head @return */
static inline int odph_list_empty(const struct odph_list_object *head)
{
return head->next == head;
}
+/** @internal */
#define container_of(ptr, type, list_node) \
((type *)(void *)((char *)ptr - offsetof(type, list_node)))
+/** @internal */
#define ODPH_LIST_FOR_EACH(pos, list_head, type, list_node) \
for (pos = container_of((list_head)->next, type, list_node); \
&pos->list_node != (list_head); \
@@ -82,4 +101,3 @@ static inline int odph_list_empty(const struct odph_list_object *head)
#endif
#endif
-
diff --git a/helper/ip.c b/helper/ip.c
index eb73e5a..463a45d 100644
--- a/helper/ip.c
+++ b/helper/ip.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/helper/ip.h>
#include <stdio.h>
diff --git a/helper/iplookuptable.c b/helper/iplookuptable.c
index ac7d058..a579fcb 100644
--- a/helper/iplookuptable.c
+++ b/helper/iplookuptable.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#include <string.h>
#include <stdint.h>
#include <errno.h>
diff --git a/helper/lineartable.c b/helper/lineartable.c
index dd4a599..112f2e5 100644
--- a/helper/lineartable.c
+++ b/helper/lineartable.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#include <stdio.h>
#include <string.h>
#include <malloc.h>
diff --git a/helper/linux/thread.c b/helper/linux/thread.c
index 52d4efc..94ab83a 100644
--- a/helper/linux/thread.c
+++ b/helper/linux/thread.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
diff --git a/helper/m4/configure.m4 b/helper/m4/configure.m4
index 343f5e3..2e2943d 100644
--- a/helper/m4/configure.m4
+++ b/helper/m4/configure.m4
@@ -1,12 +1,11 @@
##########################################################################
# Enable/disable test-helper
##########################################################################
-test_helper=no
AC_ARG_ENABLE([test-helper],
- [ --enable-test-helper run test in helper/test],
- [if test "x$enableval" = "xyes"; then
- test_helper=yes
- fi])
+ [AS_HELP_STRING([--enable-test-helper], [run test in helper/test])],
+ [test_helper=$enableval],
+ [test_helper=yes])
+AM_CONDITIONAL([test_helper], [test x$test_helper = xyes ])
##########################################################################
# Enable/disable helper-ext
diff --git a/helper/test/Makefile.am b/helper/test/Makefile.am
index a679e19..7498db7 100644
--- a/helper/test/Makefile.am
+++ b/helper/test/Makefile.am
@@ -1,5 +1,3 @@
-include $(top_srcdir)/platform/@with_platform@/Makefile.inc
-
LIB = $(top_builddir)/lib
#in the following line, the libs using the symbols should come before
@@ -13,13 +11,14 @@ INCFLAGS = \
-I$(top_srcdir)/include \
-I$(top_srcdir)/include/odp/arch/@ARCH_ABI@ \
-I$(top_srcdir)/platform/@with_platform@/include \
+ -I$(top_srcdir)/platform/@with_platform@/arch/@ARCH_DIR@ \
-I$(top_builddir)/include \
-I$(top_srcdir)/helper
ODP_PLATFORM=${with_platform}
-AM_CFLAGS += $(INCFLAGS)
-AM_LDFLAGS += -static
+AM_CPPFLAGS = $(INCFLAGS)
+AM_LDFLAGS = -static
EXECUTABLES = chksum$(EXEEXT) \
cuckootable$(EXEEXT) \
@@ -45,15 +44,13 @@ if test_helper
TESTS = $(EXECUTABLES) $(TESTSCRIPTS)
endif
-dist_bin_SCRIPTS =
-
test_PROGRAMS = $(EXECUTABLES) $(COMPILE_ONLY)
-EXTRA_DIST = odpthreads_as_processes odpthreads_as_pthreads
+dist_check_SCRIPTS = odpthreads_as_processes odpthreads_as_pthreads
-dist_chksum_SOURCES = chksum.c
-dist_cuckootable_SOURCES = cuckootable.c
-dist_odpthreads_SOURCES = odpthreads.c
-dist_parse_SOURCES = parse.c
-dist_table_SOURCES = table.c
-dist_iplookuptable_SOURCES = iplookuptable.c
+chksum_SOURCES = chksum.c
+cuckootable_SOURCES = cuckootable.c
+odpthreads_SOURCES = odpthreads.c
+parse_SOURCES = parse.c
+table_SOURCES = table.c
+iplookuptable_SOURCES = iplookuptable.c
diff --git a/helper/test/chksum.c b/helper/test/chksum.c
index 1beae47..9eb7ee0 100644
--- a/helper/test/chksum.c
+++ b/helper/test/chksum.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include "odph_debug.h"
#include <odp_api.h>
#include <odp/helper/odph_api.h>
@@ -108,9 +110,17 @@ int main(int argc ODPH_UNUSED, char *argv[] ODPH_UNUSED)
ODPH_IPV4HDR_LEN);
ip->proto = ODPH_IPPROTO_UDP;
ip->id = odp_cpu_to_be_16(1);
- ip->chksum = 0;
odp_packet_has_ipv4_set(test_packet, 1);
- odph_ipv4_csum_update(test_packet);
+ if (odph_ipv4_csum_update(test_packet) < 0)
+ status = -1;
+
+ if (!odph_ipv4_csum_valid(test_packet))
+ status = -1;
+
+ printf("IP chksum = 0x%x\n", odp_be_to_cpu_16(ip->chksum));
+
+ if (odp_be_to_cpu_16(ip->chksum) != 0x3965)
+ status = -1;
/* udp */
odp_packet_l4_offset_set(test_packet, ODPH_ETHHDR_LEN
diff --git a/helper/test/cuckootable.c b/helper/test/cuckootable.c
index be65591..ebe7916 100644
--- a/helper/test/cuckootable.c
+++ b/helper/test/cuckootable.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/*-
* BSD LICENSE
*
diff --git a/helper/test/iplookuptable.c b/helper/test/iplookuptable.c
index b5d774c..e56e22c 100644
--- a/helper/test/iplookuptable.c
+++ b/helper/test/iplookuptable.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <stdio.h>
#include <stdint.h>
#include <string.h>
diff --git a/helper/test/linux/process.c b/helper/test/linux/process.c
index e08ef86..12504d0 100644
--- a/helper/test/linux/process.c
+++ b/helper/test/linux/process.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odph_debug.h>
#include <odp_api.h>
#include <odp/helper/linux/pthread.h>
@@ -56,9 +58,10 @@ int main(int argc ODPH_UNUSED, char *argv[] ODPH_UNUSED)
cpu = odp_cpumask_first(&cpu_mask);
printf("the first CPU: %i\n", cpu);
- /* reserve cpu 0 for the control plane so remove it from
- * the default mask */
- odp_cpumask_clr(&cpu_mask, 0);
+ /* If possible, remove CPU 0 from the default mask to reserve it for the
+ * control plane. */
+ if (num_workers > 1)
+ odp_cpumask_clr(&cpu_mask, 0);
num_workers = odp_cpumask_count(&cpu_mask);
(void)odp_cpumask_to_str(&cpu_mask, cpumaskstr, sizeof(cpumaskstr));
printf("new cpu mask: %s\n", cpumaskstr);
diff --git a/helper/test/linux/pthread.c b/helper/test/linux/pthread.c
index 2bec0d1..a50df02 100644
--- a/helper/test/linux/pthread.c
+++ b/helper/test/linux/pthread.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odph_debug.h>
#include <odp_api.h>
#include <odp/helper/linux/pthread.h>
@@ -56,9 +58,10 @@ int main(int argc ODPH_UNUSED, char *argv[] ODPH_UNUSED)
cpu = odp_cpumask_first(&cpu_mask);
printf("the first CPU: %i\n", cpu);
- /* reserve cpu 0 for the control plane so remove it from
- * the default mask */
- odp_cpumask_clr(&cpu_mask, 0);
+ /* If possible, remove CPU 0 from the default mask to reserve it for the
+ * control plane. */
+ if (num_workers > 1)
+ odp_cpumask_clr(&cpu_mask, 0);
num_workers = odp_cpumask_count(&cpu_mask);
(void)odp_cpumask_to_str(&cpu_mask, cpumaskstr, sizeof(cpumaskstr));
printf("new cpu mask: %s\n", cpumaskstr);
diff --git a/helper/test/odpthreads.c b/helper/test/odpthreads.c
index 219e1b6..9ac269e 100644
--- a/helper/test/odpthreads.c
+++ b/helper/test/odpthreads.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/*
* This program tests the ability of the linux helper to create ODP threads,
* either implemented as linux pthreads or as linux processes, depending on
@@ -126,9 +128,10 @@ int main(int argc, char *argv[])
cpu = odp_cpumask_first(&cpu_mask);
printf("the first CPU: %i\n", cpu);
- /* reserve cpu 0 for the control plane so remove it from
- * the default mask */
- odp_cpumask_clr(&cpu_mask, 0);
+ /* If possible, remove CPU 0 from the default mask to reserve it for the
+ * control plane. */
+ if (num_workers > 1)
+ odp_cpumask_clr(&cpu_mask, 0);
num_workers = odp_cpumask_count(&cpu_mask);
(void)odp_cpumask_to_str(&cpu_mask, cpumaskstr, sizeof(cpumaskstr));
printf("new cpu mask: %s\n", cpumaskstr);
diff --git a/helper/test/parse.c b/helper/test/parse.c
index 0429f2c..d5f7b25 100644
--- a/helper/test/parse.c
+++ b/helper/test/parse.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odph_debug.h>
#include <odp_api.h>
diff --git a/helper/test/table.c b/helper/test/table.c
index ac454da..b3d17e1 100644
--- a/helper/test/table.c
+++ b/helper/test/table.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier:BSD-3-Clause
*/
+#include "config.h"
+
#include <odph_debug.h>
#include <odp/helper/odph_api.h>
#include <odp_api.h>
diff --git a/helper/threads.c b/helper/threads.c
index cb747e5..3b648c3 100644
--- a/helper/threads.c
+++ b/helper/threads.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
diff --git a/include/odp/api/spec/crypto.h b/include/odp/api/spec/crypto.h
index 3b8e9dd..7dcb712 100644
--- a/include/odp/api/spec/crypto.h
+++ b/include/odp/api/spec/crypto.h
@@ -648,11 +648,12 @@ int odp_crypto_auth_capability(odp_auth_alg_t auth,
*
* Create a crypto session according to the session parameters. Use
* odp_crypto_session_param_init() to initialize parameters into their
- * default values.
+ * default values. If call ends up with an error no new session will be
+ * created.
*
- * @param param Session parameters
- * @param session Created session else ODP_CRYPTO_SESSION_INVALID
- * @param status Failure code if unsuccessful
+ * @param param Session parameters
+ * @param[out] session Created session else ODP_CRYPTO_SESSION_INVALID
+ * @param[out] status Failure code if unsuccessful
*
* @retval 0 on success
* @retval <0 on failure
diff --git a/include/odp/api/spec/event.h b/include/odp/api/spec/event.h
index 2ad3ce8..f924973 100644
--- a/include/odp/api/spec/event.h
+++ b/include/odp/api/spec/event.h
@@ -77,6 +77,10 @@ extern "C" {
* List of event subtypes:
* - ODP_EVENT_PACKET_BASIC
* - Packet event (odp_packet_t) with basic packet metadata
+ * - ODP_EVENT_PACKET_CRYPTO
+ * - Packet event (odp_packet_t) generated as a result of a Crypto
+ * operation. It contains crypto specific metadata in addition to the
+ * basic packet metadata.
* - ODP_EVENT_PACKET_IPSEC
* - Packet event (odp_packet_t) generated as a result of an IPsec
* operation. It contains IPSEC specific metadata in addition to the basic
diff --git a/include/odp/api/spec/ipsec.h b/include/odp/api/spec/ipsec.h
index 7085bc0..5631989 100644
--- a/include/odp/api/spec/ipsec.h
+++ b/include/odp/api/spec/ipsec.h
@@ -156,7 +156,9 @@ typedef struct odp_ipsec_inbound_config_t {
odp_ipsec_proto_layer_t parse;
/** Flags to control IPSEC payload data checks up to the selected parse
- * level. */
+ * level. Checksum checking status can be queried for each packet with
+ * odp_packet_l3_chksum_status() and odp_packet_l4_chksum_status().
+ */
union {
/** Mapping for individual bits */
struct {
@@ -191,10 +193,12 @@ typedef struct odp_ipsec_inbound_config_t {
*/
typedef struct odp_ipsec_outbound_config_t {
/** Flags to control L3/L4 checksum insertion as part of outbound
- * packet processing. Packet must have set with valid L3/L4 offsets.
- * Checksum configuration is ignored for packets that checksum cannot
- * be computed for (e.g. IPv4 fragments). Application may use a packet
- * metadata flag to disable checksum insertion per packet bases.
+ * packet processing. These flags control checksum insertion (for the
+ * payload packet) in the same way as the checksum flags in
+ * odp_pktout_config_opt_t control checksum insertion when sending
+ * packets out through a pktio interface. Also packet checksum override
+ * functions (e.g. odp_packet_l4_chksum_insert()) can be used in
+ * the same way.
*/
union {
/** Mapping for individual bits */
@@ -710,7 +714,7 @@ typedef struct odp_ipsec_sa_param_t {
*
* This is the maximum length of IP packets that
* outbound IPSEC operations may produce. The value may
- * be updated later with odp_ipsec_mtu_update().
+ * be updated later with odp_ipsec_sa_mtu_update().
*/
uint32_t mtu;
@@ -1477,7 +1481,7 @@ int odp_ipsec_status(odp_ipsec_status_t *status, odp_event_t event);
* @retval 0 On success
* @retval <0 On failure
*/
-int odp_ipsec_mtu_update(odp_ipsec_sa_t sa, uint32_t mtu);
+int odp_ipsec_sa_mtu_update(odp_ipsec_sa_t sa, uint32_t mtu);
/**
* Get user defined SA context pointer
diff --git a/include/odp/api/spec/packet.h b/include/odp/api/spec/packet.h
index 95f5349..c498e2e 100644
--- a/include/odp/api/spec/packet.h
+++ b/include/odp/api/spec/packet.h
@@ -83,6 +83,22 @@ typedef struct odp_packet_data_range {
} odp_packet_data_range_t;
+/**
+ * Checksum check status in packet
+ */
+typedef enum odp_packet_chksum_status_t {
+ /** Checksum was not checked. Checksum check was not attempted or
+ * the attempt failed. */
+ ODP_PACKET_CHKSUM_UNKNOWN = 0,
+
+ /** Checksum was checked and it was not correct */
+ ODP_PACKET_CHKSUM_BAD,
+
+ /** Checksum was checked and it was correct */
+ ODP_PACKET_CHKSUM_OK
+
+} odp_packet_chksum_status_t;
+
/*
*
* Alloc and free
@@ -1378,12 +1394,44 @@ uint32_t odp_packet_l4_offset(odp_packet_t pkt);
int odp_packet_l4_offset_set(odp_packet_t pkt, uint32_t offset);
/**
+ * Layer 3 checksum check status
+ *
+ * Returns the result of the latest layer 3 checksum check done for the packet.
+ * The status tells if checksum check was attempted and the result of the
+ * attempt. It depends on packet input (or IPSEC) configuration, packet content
+ * and implementation capabilities if checksum check is attempted for a packet.
+ *
+ * @param pkt Packet handle
+ *
+ * @return L3 checksum check status
+ */
+odp_packet_chksum_status_t odp_packet_l3_chksum_status(odp_packet_t pkt);
+
+/**
+ * Layer 4 checksum check status
+ *
+ * Returns the result of the latest layer 4 checksum check done for the packet.
+ * The status tells if checksum check was attempted and the result of the
+ * attempt. It depends on packet input (or IPSEC) configuration, packet content
+ * and implementation capabilities if checksum check is attempted for a packet.
+ *
+ * @param pkt Packet handle
+ *
+ * @return L4 checksum check status
+ */
+odp_packet_chksum_status_t odp_packet_l4_chksum_status(odp_packet_t pkt);
+
+/**
* Layer 3 checksum insertion override
*
* Override checksum insertion configuration per packet. This per packet setting
* overrides a higher level configuration for checksum insertion into a L3
* header during packet output processing.
*
+ * Calling this function is always allowed but the checksum will not be
+ * inserted if the packet is output through a pktio that does not have
+ * the relevant pktout chksum bit set in the pktio capability.
+ *
* @param pkt Packet handle
* @param l3 0: do not insert L3 checksum
* 1: insert L3 checksum
@@ -1397,6 +1445,10 @@ void odp_packet_l3_chksum_insert(odp_packet_t pkt, int l3);
* overrides a higher level configuration for checksum insertion into a L4
* header during packet output processing.
*
+ * Calling this function is always allowed but the checksum will not be
+ * inserted if the packet is output through a pktio that does not have
+ * the relevant pktout chksum bit set in the pktio capability.
+ *
* @param pkt Packet handle
* @param l4 0: do not insert L4 checksum
* 1: insert L4 checksum
diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index d42cebf..b56a520 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -256,11 +256,27 @@ typedef struct odp_pktio_param_t {
* belong to time synchronization protocol (PTP).
*
* Packet input checksum checking may be enabled or disabled. When it is
- * enabled, implementation will verify checksum correctness on incoming packets
- * and depending on drop configuration either deliver erroneous packets with
- * appropriate flags set (e.g. odp_packet_has_l3_error()) or drop those.
- * When packet dropping is enabled, application will never receive a packet
- * with the specified error and may avoid to check the error flag.
+ * enabled, implementation will attempt to verify checksum correctness on
+ * incoming packets and depending on drop configuration either deliver erroneous
+ * packets with appropriate flags set (e.g. odp_packet_has_l3_error(),
+ * odp_packet_l3_chksum_status()) or drop those. When packet dropping is
+ * enabled, application will never receive a packet with the specified error
+ * and may avoid to check the error flag.
+ *
+ * If checksum checking is enabled, IPv4 header checksum checking is always
+ * done for packets that do not have IP options and L4 checksum checking
+ * is done for unfragmented packets that do not have IPv4 options or IPv6
+ * extension headers. In other cases checksum checking may or may not
+ * be done. For example, L4 checksum of fragmented packets is typically
+ * not checked.
+ *
+ * IPv4 checksum checking may be enabled only when parsing level is
+ * ODP_PKTIO_PARSER_LAYER_L3 or higher. Similarly, L4 level checksum checking
+ * may be enabled only with parsing level ODP_PKTIO_PARSER_LAYER_L4 or higher.
+ *
+ * Whether checksum checking was done and whether a checksum was correct
+ * can be queried for each received packet with odp_packet_l3_chksum_status()
+ * and odp_packet_l4_chksum_status().
*/
typedef union odp_pktin_config_opt_t {
/** Option flags */
@@ -314,13 +330,27 @@ typedef union odp_pktin_config_opt_t {
* Packet output configuration options listed in a bit field structure. Packet
* output checksum insertion may be enabled or disabled. When it is enabled,
* implementation will calculate and insert checksum into every outgoing packet
- * by default. Application may use a packet metadata flag to disable checksum
- * insertion per packet bases. For correct operation, packet metadata must
- * provide valid offsets for the appropriate protocols. For example, UDP
- * checksum calculation needs both L3 and L4 offsets (to access IP and UDP
- * headers). When application (e.g. a switch) does not modify L3/L4 data and
- * thus checksum does not need to be updated, output checksum insertion should
- * be disabled for optimal performance.
+ * by default. Application may disable checksum insertion (e.g.
+ * odp_packet_l4_chksum_insert()) on per packet basis. For correct operation,
+ * packet metadata must provide valid offsets for the appropriate protocols.
+ * For example, UDP checksum calculation needs both L3 and L4 offsets (to access
+ * IP and UDP headers). When application (e.g. a switch) does not modify L3/L4
+ * data and thus checksum does not need to be updated, output checksum insertion
+ * should be disabled for optimal performance.
+ *
+ * Packet flags (odp_packet_has_*()) are ignored for the purpose of checksum
+ * insertion in packet output.
+ *
+ * UDP, TCP and SCTP checksum insertion must not be requested for IP fragments.
+ * Use checksum override function (odp_packet_l4_chksum_insert()) to disable
+ * checksumming when sending a fragment through a packet IO interface that has
+ * the relevant L4 checksum insertion enabled.
+ *
+ * Result of checksum insertion at packet output is undefined if the protocol
+ * headers required for checksum calculation are not well formed. Packet must
+ * contain at least as many data bytes after L3/L4 offsets as the headers
+ * indicate. Other data bytes of the packet are ignored for the checksum
+ * insertion.
*/
typedef union odp_pktout_config_opt_t {
/** Option flags */
@@ -889,6 +919,11 @@ uint64_t odp_pktin_wait_time(uint64_t nsec);
* is less than 'num', the remaining packets at the end of packets[] array
* are not consumed, and the caller has to take care of them.
*
+ * Entire packet data is sent out (odp_packet_len() bytes of data, starting from
+ * odp_packet_data()). All other packet metadata is ignored unless otherwise
+ * specified e.g. for protocol offload purposes. Link protocol specific frame
+ * checksum and padding are added to frames before transmission.
+ *
* @param queue Packet output queue handle for sending packets
* @param packets[] Array of packets to send
* @param num Number of packets to send
diff --git a/include/odp/api/spec/pool.h b/include/odp/api/spec/pool.h
index 6fc5b6b..221798e 100644
--- a/include/odp/api/spec/pool.h
+++ b/include/odp/api/spec/pool.h
@@ -97,6 +97,13 @@ typedef struct odp_pool_capability_t {
* packet input and user allocated packets.*/
uint32_t min_headroom;
+ /** Maximum packet level headroom length in bytes
+ *
+ * The maximum value of packet pool headroom parameter
+ * that can be configured. This value applies to both ODP
+ * packet input and user allocated packets.*/
+ uint32_t max_headroom;
+
/** Minimum packet level tailroom length in bytes
*
* The minimum number of tailroom bytes that newly created
@@ -214,6 +221,13 @@ typedef struct odp_pool_param_t {
defined by pool capability pkt.max_uarea_size.
Specify as 0 if no user area is needed. */
uint32_t uarea_size;
+
+ /** Minimum Headroom size in bytes. Each newly allocated
+ packet from the pool must have at least this much
+ headroom. The maximum value is defined by pool
+ capability pkt.max_headroom.
+ Use zero if headroom is not needed. */
+ uint32_t headroom;
} pkt;
/** Parameters for timeout pools */
diff --git a/include/odp/api/spec/queue.h b/include/odp/api/spec/queue.h
index 9dd0a56..73598be 100644
--- a/include/odp/api/spec/queue.h
+++ b/include/odp/api/spec/queue.h
@@ -106,7 +106,7 @@ typedef struct odp_queue_capability_t {
uint32_t max_queues;
/** Maximum number of ordered locks per queue */
- unsigned max_ordered_locks;
+ uint32_t max_ordered_locks;
/** Maximum number of scheduling groups */
unsigned max_sched_groups;
@@ -393,10 +393,11 @@ odp_schedule_group_t odp_queue_sched_group(odp_queue_t queue);
*
* @param queue Queue handle
*
- * @return Number of ordered locks associated with this ordered queue
- * @retval <0 Specified queue is not ordered
+ * @return Number of ordered locks associated with this ordered queue
+ * @retval 0 Specified queue is not ordered or no ordered lock associated
+ * with the ordered queue.
*/
-int odp_queue_lock_count(odp_queue_t queue);
+uint32_t odp_queue_lock_count(odp_queue_t queue);
/**
* Get printable value for an odp_queue_t
diff --git a/include/odp/api/spec/schedule.h b/include/odp/api/spec/schedule.h
index 8244746..fe2300d 100644
--- a/include/odp/api/spec/schedule.h
+++ b/include/odp/api/spec/schedule.h
@@ -347,12 +347,15 @@ int odp_schedule_group_info(odp_schedule_group_t group,
* be protected by its own ordered lock. This promotes maximum parallelism by
* allowing order to maintained on a more granular basis. If an ordered lock
* is used multiple times in the same ordered context results are undefined.
+ * Only one ordered lock can be active in an ordered context at any given time.
+ * Results are undefined when multiple ordered locks are acquired in nested
+ * fashion within the same ordered context.
*
* @param lock_index Index of the ordered lock in the current context to be
* acquired. Must be in the range 0..odp_queue_lock_count()
* - 1
*/
-void odp_schedule_order_lock(unsigned lock_index);
+void odp_schedule_order_lock(uint32_t lock_index);
/**
* Release ordered context lock
@@ -365,7 +368,28 @@ void odp_schedule_order_lock(unsigned lock_index);
* hold this lock. Must be in the range
* 0..odp_queue_lock_count() - 1
*/
-void odp_schedule_order_unlock(unsigned lock_index);
+void odp_schedule_order_unlock(uint32_t lock_index);
+
+/**
+ * Release existing ordered context lock and acquire a new lock
+ *
+ * This call is valid only when holding an ordered synchronization context.
+ * Release a previously locked ordered context lock and acquire a new ordered
+ * context lock. The operation is equivalent to application calling first
+ * odp_schedule_order_unlock(unlock_index) and then
+ * odp_schedule_order_lock(lock_index). The same constraints apply with this
+ * call as with those two.
+ *
+ * @param unlock_index Index of the acquired ordered lock in the current
+ * context to be released.
+ * @param lock_index Index of the ordered lock in the current context to be
+ * acquired. Must be in the range
+ * 0...odp_queue_lock_count() - 1.
+ *
+ * @see odp_schedule_order_lock(), odp_schedule_order_unlock()
+ *
+ */
+void odp_schedule_order_unlock_lock(uint32_t unlock_index, uint32_t lock_index);
/**
* @}
diff --git a/include/odp/api/spec/schedule_types.h b/include/odp/api/spec/schedule_types.h
index 8a4e42c..397f98f 100644
--- a/include/odp/api/spec/schedule_types.h
+++ b/include/odp/api/spec/schedule_types.h
@@ -146,7 +146,7 @@ typedef struct odp_schedule_param_t {
/** Ordered lock count for this queue
*
* Default value is 0. */
- unsigned lock_count;
+ uint32_t lock_count;
} odp_schedule_param_t;
/**
diff --git a/include/odp/api/spec/timer.h b/include/odp/api/spec/timer.h
index b76f565..17daafc 100644
--- a/include/odp/api/spec/timer.h
+++ b/include/odp/api/spec/timer.h
@@ -99,12 +99,36 @@ typedef enum {
* Timer pool parameters are used when creating and querying timer pools.
*/
typedef struct {
- uint64_t res_ns; /**< Timeout resolution in nanoseconds */
- uint64_t min_tmo; /**< Minimum relative timeout in nanoseconds */
- uint64_t max_tmo; /**< Maximum relative timeout in nanoseconds */
- uint32_t num_timers; /**< (Minimum) number of supported timers */
- int priv; /**< Shared (false) or private (true) timer pool */
- odp_timer_clk_src_t clk_src; /**< Clock source for timers */
+ /** Timeout resolution in nanoseconds. Timer pool must serve timeouts
+ * with this or higher resolution. The minimum valid value (highest
+ * resolution) is defined by timer capability 'highest_res_ns'. */
+ uint64_t res_ns;
+
+ /** Minimum relative timeout in nanoseconds. All requested timeouts
+ * will be at least this many nanoseconds after the current
+ * time of the timer pool. Timer set functions return an error, if too
+ * short timeout was requested. The value may be also less than
+ * 'res_ns'. */
+ uint64_t min_tmo;
+
+ /** Maximum relative timeout in nanoseconds. All requested timeouts
+ * will be at most this many nanoseconds after the current
+ * time of the timer pool. Timer set functions return an error, if too
+ * long timeout was requested. */
+ uint64_t max_tmo;
+
+ /** Number of timers needed. Application will create in maximum this
+ * many concurrent timers from the timer pool. */
+ uint32_t num_timers;
+
+ /** Thread private timer pool. When zero, multiple thread may use the
+ * timer pool concurrently. When non-zero, only single thread uses the
+ * timer pool (concurrently). */
+ int priv;
+
+ /** Clock source for timers */
+ odp_timer_clk_src_t clk_src;
+
} odp_timer_pool_param_t;
/**
diff --git a/include/odp/arch/default/api/abi/packet.h b/include/odp/arch/default/api/abi/packet.h
index 4aac75b..15cf081 100644
--- a/include/odp/arch/default/api/abi/packet.h
+++ b/include/odp/arch/default/api/abi/packet.h
@@ -28,7 +28,7 @@ typedef _odp_abi_packet_seg_t *odp_packet_seg_t;
#define ODP_PACKET_INVALID ((odp_packet_t)0xffffffff)
#define ODP_PACKET_SEG_INVALID ((odp_packet_seg_t)0xffffffff)
-#define ODP_PACKET_OFFSET_INVALID (0x0fffffff)
+#define ODP_PACKET_OFFSET_INVALID 0xffff
typedef enum {
ODP_PACKET_GREEN = 0,
diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
index c3a8d69..ca36397 100644
--- a/m4/ax_check_compile_flag.m4
+++ b/m4/ax_check_compile_flag.m4
@@ -4,7 +4,7 @@
#
# SYNOPSIS
#
-# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
#
# DESCRIPTION
#
@@ -19,6 +19,8 @@
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
# force the compiler to issue an error when a bad flag is given.
#
+# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
#
@@ -53,19 +55,19 @@
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
-#serial 2
+#serial 4
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
-[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
-AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
+AS_VAR_IF(CACHEVAR,yes,
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
diff --git a/platform/Makefile.inc b/platform/Makefile.inc
index 1621d98..5acc8bf 100644
--- a/platform/Makefile.inc
+++ b/platform/Makefile.inc
@@ -7,14 +7,11 @@ pkgconfig_DATA = $(top_builddir)/pkgconfig/libodp-linux.pc
VPATH = $(srcdir) $(builddir)
-AM_LDFLAGS += -version-number '$(ODP_LIBSO_VERSION)'
+AM_LDFLAGS = -version-number '$(ODP_LIBSO_VERSION)'
-AM_CFLAGS += "-DGIT_HASH=$(VERSION)"
+AM_CFLAGS = "-DGIT_HASH=$(VERSION)"
AM_CFLAGS += $(VISIBILITY_CFLAGS)
-#The implementation will need to retain the deprecated implementation
-AM_CFLAGS += -Wno-deprecated-declarations
-
AM_CFLAGS += @PTHREAD_CFLAGS@
odpapispecincludedir= $(includedir)/odp/api/spec
diff --git a/platform/linux-dpdk/Makefile.am b/platform/linux-dpdk/Makefile.am
index cb0d722..ad3afec 100644
--- a/platform/linux-dpdk/Makefile.am
+++ b/platform/linux-dpdk/Makefile.am
@@ -8,23 +8,26 @@ if ARCH_IS_X86
PLAT_CFLAGS += -msse4.2
endif
-if DPDK_DEFAULT_DIR
-PLAT_CFLAGS += -include /usr/include/dpdk/rte_config.h
-else
+if SDK_INSTALL_PATH_
PLAT_CFLAGS += -include $(SDK_INSTALL_PATH)/include/rte_config.h
+else
+PLAT_CFLAGS += -include /usr/include/dpdk/rte_config.h
endif
-AM_CFLAGS += $(PLAT_CFLAGS)
-AM_CFLAGS += -I$(srcdir)/include
-AM_CFLAGS += -I$(top_srcdir)/platform/linux-generic/include
-AM_CFLAGS += -I$(top_srcdir)/frameworks/modular
-AM_CFLAGS += -I$(top_srcdir)/include/odp/arch/@ARCH_ABI@
-AM_CFLAGS += -I$(top_srcdir)/include
-AM_CFLAGS += -I$(top_builddir)/include
-AM_CFLAGS += -Iinclude
-AM_CFLAGS += -DSYSCONFDIR=\"@sysconfdir@\"
-AM_CFLAGS += -D_ODP_PKTIO_IPC
+AM_CPPFLAGS = $(PLAT_CFLAGS)
+AM_CPPFLAGS += -I$(top_srcdir)/platform/linux-dpdk/include
+AM_CPPFLAGS += -I$(top_srcdir)/platform/linux-generic/include
+AM_CPPFLAGS += -I$(srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/frameworks/modular
+AM_CPPFLAGS += -I$(top_srcdir)/include/odp/arch/@ARCH_ABI@
+AM_CPPFLAGS += -I$(top_builddir)/include
+AM_CPPFLAGS += -Iinclude
+AM_CPPFLAGS += -I$(srcdir)
+AM_CPPFLAGS += -I$(top_srcdir)/platform/$(with_platform)/arch/$(ARCH_DIR)
+AM_CPPFLAGS += -DSYSCONFDIR=\"@sysconfdir@\"
+AM_CPPFLAGS += $(DPDK_CPPFLAGS)
AM_CPPFLAGS += $(OPENSSL_CPPFLAGS)
AM_CPPFLAGS += $(LIBCONFIG_CFLAGS)
diff --git a/platform/linux-dpdk/buffer/dpdk.c b/platform/linux-dpdk/buffer/dpdk.c
index 346549e..704468e 100644
--- a/platform/linux-dpdk/buffer/dpdk.c
+++ b/platform/linux-dpdk/buffer/dpdk.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#include <odp/api/buffer.h>
#include <odp_buffer_internal.h>
#include <odp_buffer_inlines.h>
diff --git a/platform/linux-dpdk/include/odp_packet_io_internal.h b/platform/linux-dpdk/include/odp_packet_io_internal.h
index ec1d0c2..10760ca 100644
--- a/platform/linux-dpdk/include/odp_packet_io_internal.h
+++ b/platform/linux-dpdk/include/odp_packet_io_internal.h
@@ -144,6 +144,9 @@ int single_recv_queue(pktio_entry_t *entry, int index, odp_packet_t packets[],
int single_send_queue(pktio_entry_t *entry, int index,
const odp_packet_t packets[], int num);
+int pktin_poll_one(int pktio_index,
+ int rx_queue,
+ odp_event_t evt_tbl[]);
int pktin_poll(int pktio_index, int num_queue, int index[]);
void pktio_stop_finalize(int pktio_index);
diff --git a/platform/linux-dpdk/m4/configure.m4 b/platform/linux-dpdk/m4/configure.m4
index 428ecc8..b08136b 100644
--- a/platform/linux-dpdk/m4/configure.m4
+++ b/platform/linux-dpdk/m4/configure.m4
@@ -91,13 +91,13 @@ m4_include([platform/linux-dpdk/m4/odp_schedule.m4])
# DPDK build variables
##########################################################################
DPDK_DRIVER_DIR=/usr/lib/$(uname -m)-linux-gnu
-AS_CASE($host_cpu, [x86_64], [AM_CPPFLAGS="$AM_CPPFLAGS -msse4.2"])
-if test ${DPDK_DEFAULT_DIR} = 1; then
- AM_CPPFLAGS="$AM_CPPFLAGS -I/usr/include/dpdk"
+AS_CASE($host_cpu, [x86_64], [DPDK_CPPFLAGS="$DPDK_CPPFLAGS -msse4.2"])
+if test "x${SDK_INSTALL_PATH}" = "x"; then
+ DPDK_CPPFLAGS="$DPDK_CPPFLAGS -I/usr/include/dpdk"
else
DPDK_DRIVER_DIR=$SDK_INSTALL_PATH/lib
- AM_CPPFLAGS="$AM_CPPFLAGS -I$SDK_INSTALL_PATH/include"
- AM_LDFLAGS="$AM_LDFLAGS -L$SDK_INSTALL_PATH/lib"
+ DPDK_CPPFLAGS="$DPDK_CPPFLAGS -I$SDK_INSTALL_PATH/include"
+ DPDK_LDFLAGS="$DPDK_CPPFLAGS -L$SDK_INSTALL_PATH/lib"
fi
# Check if we should link against the static or dynamic DPDK library
@@ -112,8 +112,8 @@ AC_ARG_ENABLE([shared-dpdk],
##########################################################################
OLD_LDFLAGS=$LDFLAGS
OLD_CPPFLAGS=$CPPFLAGS
-LDFLAGS="$AM_LDFLAGS $LDFLAGS"
-CPPFLAGS="$AM_CPPFLAGS $CPPFLAGS -pthread"
+LDFLAGS="$DPDK_LDFLAGS $LDFLAGS"
+CPPFLAGS="$DPDK_CPPFLAGS $CPPFLAGS -pthread"
##########################################################################
# Check for DPDK availability
@@ -121,16 +121,13 @@ CPPFLAGS="$AM_CPPFLAGS $CPPFLAGS -pthread"
AC_CHECK_HEADERS([rte_config.h], [],
[AC_MSG_FAILURE(["can't find DPDK headers"])])
-AC_SEARCH_LIBS([rte_eal_init], [dpdk], [],
- [AC_MSG_ERROR([DPDK libraries required])], [-ldl])
-
##########################################################################
# In case of static linking DPDK pmd drivers are not linked unless the
# --whole-archive option is used. No spaces are allowed between the
# --whole-arhive flags.
##########################################################################
if test "x$shared_dpdk" = "xtrue"; then
- LIBS="$LIBS -Wl,--no-as-needed,-ldpdk,-as-needed -ldl -lm -lpcap"
+ DPDK_LIBS="-Wl,--no-as-needed,-ldpdk,-as-needed -ldl -lm -lpcap"
else
AS_VAR_SET([DPDK_PMDS], [-Wl,--whole-archive,])
@@ -146,8 +143,6 @@ else
AS_VAR_APPEND([DPDK_PMDS], [--no-whole-archive])
DPDK_LIBS="-L$DPDK_DRIVER_DIR -ldpdk -lpthread -ldl -lm -lpcap"
- AC_SUBST([DPDK_CPPFLAGS])
- AC_SUBST([DPDK_LIBS])
AC_SUBST([DPDK_PMDS])
fi
@@ -157,5 +152,9 @@ fi
LDFLAGS=$OLD_LDFLAGS
CPPFLAGS=$OLD_CPPFLAGS
+AC_SUBST([DPDK_CPPFLAGS])
+AC_SUBST([DPDK_LDFLAGS])
+AC_SUBST([DPDK_LIBS])
+
AC_CONFIG_FILES([platform/linux-dpdk/Makefile
platform/linux-dpdk/include/odp/api/plat/static_inline.h])
diff --git a/platform/linux-dpdk/odp_crypto.c b/platform/linux-dpdk/odp_crypto.c
index 8235e1b..8e0f8a9 100644
--- a/platform/linux-dpdk/odp_crypto.c
+++ b/platform/linux-dpdk/odp_crypto.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/crypto.h>
#include <odp_internal.h>
#include <odp/api/atomic.h>
diff --git a/platform/linux-dpdk/odp_init.c b/platform/linux-dpdk/odp_init.c
index 1d1c451..81b6089 100644
--- a/platform/linux-dpdk/odp_init.c
+++ b/platform/linux-dpdk/odp_init.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <odp/api/init.h>
#include <odp_debug_internal.h>
diff --git a/platform/linux-dpdk/odp_packet.c b/platform/linux-dpdk/odp_packet.c
index b2860a7..cdfe281 100644
--- a/platform/linux-dpdk/odp_packet.c
+++ b/platform/linux-dpdk/odp_packet.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#include <odp/api/plat/packet_inlines.h>
#include <odp/api/packet.h>
#include <odp_packet_internal.h>
diff --git a/platform/linux-dpdk/pktio/dpdk.h b/platform/linux-dpdk/pktio/dpdk.h
index 064c5d8..2adf507 100644
--- a/platform/linux-dpdk/pktio/dpdk.h
+++ b/platform/linux-dpdk/pktio/dpdk.h
@@ -10,6 +10,8 @@
#include <stdint.h>
#include <net/if.h>
+#include <config.h>
+
#include <protocols/eth.h>
#include <odp/api/align.h>
#include <odp/api/debug.h>
diff --git a/platform/linux-dpdk/pktio/subsystem.c b/platform/linux-dpdk/pktio/subsystem.c
index 4ff15c8..985ae78 100644
--- a/platform/linux-dpdk/pktio/subsystem.c
+++ b/platform/linux-dpdk/pktio/subsystem.c
@@ -6,6 +6,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#include <odp_debug_internal.h>
#include <odp_packet_io_internal.h>
diff --git a/platform/linux-dpdk/pool/dpdk.c b/platform/linux-dpdk/pool/dpdk.c
index a9eca2f..3f08562 100644
--- a/platform/linux-dpdk/pool/dpdk.c
+++ b/platform/linux-dpdk/pool/dpdk.c
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
#include <odp/api/std_types.h>
#include <odp/api/pool.h>
#include <odp_pool_internal.h>
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am
index 7d1066f..539342d 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -2,19 +2,19 @@
#export CUSTOM_STR=https://git.linaro.org/lng/odp.git
include $(top_srcdir)/platform/Makefile.inc
-include $(top_srcdir)/platform/@with_platform@/Makefile.inc
lib_LTLIBRARIES = $(LIB)/libodp-linux.la
-AM_CFLAGS += -I$(srcdir)/include
-AM_CFLAGS += -I$(top_srcdir)/include
-AM_CFLAGS += -I$(top_srcdir)/frameworks/modular
-AM_CFLAGS += -I$(top_srcdir)/include/odp/arch/@ARCH_ABI@
-AM_CFLAGS += -I$(top_builddir)/include
-AM_CFLAGS += -I$(top_srcdir)/arch/@ARCH_DIR@
-AM_CFLAGS += -Iinclude
-AM_CFLAGS += -DSYSCONFDIR=\"@sysconfdir@\"
-AM_CFLAGS += -D_ODP_PKTIO_IPC
+AM_CPPFLAGS = -I$(srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/frameworks/modular
+AM_CPPFLAGS += -I$(top_srcdir)/include/odp/arch/@ARCH_ABI@
+AM_CPPFLAGS += -I$(top_builddir)/include
+AM_CPPFLAGS += -Iinclude
+AM_CPPFLAGS += -I$(top_srcdir)/platform/$(with_platform)/arch/$(ARCH_DIR)
+AM_CPPFLAGS += -I$(top_srcdir)/platform/$(with_platform)
+AM_CPPFLAGS += -Iinclude
+AM_CPPFLAGS += -DSYSCONFDIR=\"@sysconfdir@\"
AM_CPPFLAGS += $(OPENSSL_CPPFLAGS)
AM_CPPFLAGS += $(DPDK_CPPFLAGS)
@@ -219,8 +219,7 @@ noinst_HEADERS = \
${srcdir}/include/protocols/ipsec.h \
${srcdir}/include/protocols/tcp.h \
${srcdir}/include/protocols/thash.h \
- ${srcdir}/include/protocols/udp.h \
- ${srcdir}/Makefile.inc
+ ${srcdir}/include/protocols/udp.h
if ARCH_IS_ARM
noinst_HEADERS += ${srcdir}/arch/arm/odp_atomic.h \
diff --git a/platform/linux-generic/Makefile.inc b/platform/linux-generic/Makefile.inc
deleted file mode 100644
index 876519b..0000000
--- a/platform/linux-generic/Makefile.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-AM_CFLAGS += -I$(top_srcdir)/platform/$(with_platform)/arch/$(ARCH_DIR)
-AM_CXXFLAGS += -I$(top_srcdir)/platform/$(with_platform)/arch/$(ARCH_DIR)
diff --git a/platform/linux-generic/_fdserver.c b/platform/linux-generic/_fdserver.c
index d1b16f6..d15ddbe 100644
--- a/platform/linux-generic/_fdserver.c
+++ b/platform/linux-generic/_fdserver.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/*
* This file implements a file descriptor sharing server enabling
* sharing of file descriptors between processes, regardless of fork time.
diff --git a/platform/linux-generic/_ishm.c b/platform/linux-generic/_ishm.c
index b991af1..6e5bc61 100644
--- a/platform/linux-generic/_ishm.c
+++ b/platform/linux-generic/_ishm.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/* This file handles the internal shared memory: internal shared memory
* is memory which is sharable by all ODP threads regardless of how the
* ODP thread is implemented (pthread or process) and regardless of fork()
diff --git a/platform/linux-generic/_ishmphy.c b/platform/linux-generic/_ishmphy.c
index d519af6..76ec572 100644
--- a/platform/linux-generic/_ishmphy.c
+++ b/platform/linux-generic/_ishmphy.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/*
* This file handles the lower end of the ishm memory allocator:
* It performs the physical mappings.
diff --git a/platform/linux-generic/_ishmpool.c b/platform/linux-generic/_ishmpool.c
index 064d78e..f196a6d 100644
--- a/platform/linux-generic/_ishmpool.c
+++ b/platform/linux-generic/_ishmpool.c
@@ -41,6 +41,7 @@
* The second one regroups the functions needed by the slab allocator.
* The third section regroups the common functions exported externally.
*/
+#include "config.h"
#include <odp_posix_extensions.h>
#include <odp_internal.h>
diff --git a/platform/linux-generic/_modules.c b/platform/linux-generic/_modules.c
index b23c81f..1fdaf60 100644
--- a/platform/linux-generic/_modules.c
+++ b/platform/linux-generic/_modules.c
@@ -3,6 +3,7 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
#include <odp_config_internal.h>
diff --git a/platform/linux-generic/arch/arm/odp_cpu_arch.c b/platform/linux-generic/arch/arm/odp_cpu_arch.c
index 28ee508..6622e61 100644
--- a/platform/linux-generic/arch/arm/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/arm/odp_cpu_arch.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <stdlib.h>
diff --git a/platform/linux-generic/arch/arm/odp_sysinfo_parse.c b/platform/linux-generic/arch/arm/odp_sysinfo_parse.c
index 8ae2022..1e2c729 100644
--- a/platform/linux-generic/arch/arm/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/arm/odp_sysinfo_parse.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_internal.h>
#include <odp_debug_internal.h>
#include <string.h>
@@ -21,11 +23,6 @@ int cpuinfo_parser(FILE *file ODP_UNUSED, system_info_t *sysinfo)
return 0;
}
-uint64_t odp_cpu_hz_current(int id ODP_UNUSED)
-{
- return 0;
-}
-
void sys_info_print_arch(void)
{
}
diff --git a/platform/linux-generic/arch/default/odp_cpu_arch.c b/platform/linux-generic/arch/default/odp_cpu_arch.c
index c31f908..fab351f 100644
--- a/platform/linux-generic/arch/default/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/default/odp_cpu_arch.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <stdlib.h>
diff --git a/platform/linux-generic/arch/default/odp_sysinfo_parse.c b/platform/linux-generic/arch/default/odp_sysinfo_parse.c
index 8ae2022..1e2c729 100644
--- a/platform/linux-generic/arch/default/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/default/odp_sysinfo_parse.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_internal.h>
#include <odp_debug_internal.h>
#include <string.h>
@@ -21,11 +23,6 @@ int cpuinfo_parser(FILE *file ODP_UNUSED, system_info_t *sysinfo)
return 0;
}
-uint64_t odp_cpu_hz_current(int id ODP_UNUSED)
-{
- return 0;
-}
-
void sys_info_print_arch(void)
{
}
diff --git a/platform/linux-generic/arch/mips64/odp_cpu_arch.c b/platform/linux-generic/arch/mips64/odp_cpu_arch.c
index f7eafa0..143867e 100644
--- a/platform/linux-generic/arch/mips64/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/mips64/odp_cpu_arch.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/cpu.h>
#include <odp/api/hints.h>
#include <odp/api/system_info.h>
diff --git a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
index d6f75f2..5ed7a39 100644
--- a/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/mips64/odp_sysinfo_parse.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_internal.h>
#include <string.h>
@@ -58,11 +60,6 @@ int cpuinfo_parser(FILE *file, system_info_t *sysinfo)
return 0;
}
-uint64_t odp_cpu_hz_current(int id ODP_UNUSED)
-{
- return 0;
-}
-
void sys_info_print_arch(void)
{
}
diff --git a/platform/linux-generic/arch/powerpc/odp_cpu_arch.c b/platform/linux-generic/arch/powerpc/odp_cpu_arch.c
index c31f908..fab351f 100644
--- a/platform/linux-generic/arch/powerpc/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/powerpc/odp_cpu_arch.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <stdlib.h>
diff --git a/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c b/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
index bd4b9b4..02a83e5 100644
--- a/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/powerpc/odp_sysinfo_parse.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_internal.h>
#include <string.h>
@@ -57,11 +59,6 @@ int cpuinfo_parser(FILE *file, system_info_t *sysinfo)
return 0;
}
-uint64_t odp_cpu_hz_current(int id ODP_UNUSED)
-{
- return 0;
-}
-
void sys_info_print_arch(void)
{
}
diff --git a/platform/linux-generic/arch/x86/cpu_flags.c b/platform/linux-generic/arch/x86/cpu_flags.c
index a492a35..e46c4ff 100644
--- a/platform/linux-generic/arch/x86/cpu_flags.c
+++ b/platform/linux-generic/arch/x86/cpu_flags.c
@@ -37,7 +37,9 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include <arch/x86/cpu_flags.h>
+#include "config.h"
+
+#include <cpu_flags.h>
#include <odp_debug_internal.h>
#include <odp_time_internal.h>
#include <stdio.h>
diff --git a/platform/linux-generic/arch/x86/odp_cpu_arch.c b/platform/linux-generic/arch/x86/odp_cpu_arch.c
index b1da428..50fbbac 100644
--- a/platform/linux-generic/arch/x86/odp_cpu_arch.c
+++ b/platform/linux-generic/arch/x86/odp_cpu_arch.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <odp/api/cpu.h>
diff --git a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
index d77165a..55bbda8 100644
--- a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
+++ b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
@@ -4,8 +4,10 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_internal.h>
-#include <arch/x86/cpu_flags.h>
+#include <cpu_flags.h>
#include <string.h>
int cpuinfo_parser(FILE *file, system_info_t *sysinfo)
@@ -39,42 +41,6 @@ int cpuinfo_parser(FILE *file, system_info_t *sysinfo)
return 0;
}
-uint64_t odp_cpu_hz_current(int id)
-{
- char str[1024];
- FILE *file;
- int cpu;
- char *pos;
- double mhz = 0.0;
-
- file = fopen("/proc/cpuinfo", "rt");
-
- /* find the correct processor instance */
- while (fgets(str, sizeof(str), file) != NULL) {
- pos = strstr(str, "processor");
- if (pos) {
- if (sscanf(pos, "processor : %d", &cpu) == 1)
- if (cpu == id)
- break;
- }
- }
-
- /* extract the cpu current speed */
- while (fgets(str, sizeof(str), file) != NULL) {
- pos = strstr(str, "cpu MHz");
- if (pos) {
- if (sscanf(pos, "cpu MHz : %lf", &mhz) == 1)
- break;
- }
- }
-
- fclose(file);
- if (mhz)
- return (uint64_t)(mhz * 1000000.0);
-
- return 0;
-}
-
void sys_info_print_arch(void)
{
cpu_flags_print_all();
diff --git a/platform/linux-generic/buffer/generic.c b/platform/linux-generic/buffer/generic.c
index c896e3d..3281119 100644
--- a/platform/linux-generic/buffer/generic.c
+++ b/platform/linux-generic/buffer/generic.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#include <odp/api/buffer.h>
#include <odp_pool_internal.h>
#include <odp_buffer_internal.h>
diff --git a/platform/linux-generic/drv_driver.c b/platform/linux-generic/drv_driver.c
index 3c918de..ecf75ab 100644
--- a/platform/linux-generic/drv_driver.c
+++ b/platform/linux-generic/drv_driver.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
+
#include <string.h>
#include <odp_config_internal.h>
diff --git a/platform/linux-generic/include/odp/api/plat/packet_inlines.h b/platform/linux-generic/include/odp/api/plat/packet_inlines.h
index 06b049f..1804fa6 100644
--- a/platform/linux-generic/include/odp/api/plat/packet_inlines.h
+++ b/platform/linux-generic/include/odp/api/plat/packet_inlines.h
@@ -50,31 +50,19 @@ static inline uint32_t _odp_packet_seg_len(odp_packet_t pkt)
/** @internal Inline function @param pkt @return */
static inline uint32_t _odp_packet_len(odp_packet_t pkt)
{
- uint32_t pkt_len = _odp_pkt_get(pkt, uint32_t, frame_len);
- void *ref_nxt = _odp_pkt_get(pkt, void *, ref_hdr);
- void *ref_pkt = (void *)pkt;
-
- while (ref_nxt) {
- pkt_len += _odp_pkt_get(ref_pkt, uint32_t, ref_len) -
- _odp_pkt_get(ref_pkt, uint32_t, ref_offset);
-
- ref_pkt = ref_nxt;
- ref_nxt = _odp_pkt_get(ref_nxt, void *, ref_hdr);
- }
-
- return pkt_len;
+ return _odp_pkt_get(pkt, uint32_t, frame_len);
}
/** @internal Inline function @param pkt @return */
static inline uint32_t _odp_packet_headroom(odp_packet_t pkt)
{
- return _odp_pkt_get(pkt, uint32_t, headroom);
+ return _odp_pkt_get(pkt, uint16_t, headroom);
}
/** @internal Inline function @param pkt @return */
static inline uint32_t _odp_packet_tailroom(odp_packet_t pkt)
{
- return _odp_pkt_get(pkt, uint32_t, tailroom);
+ return _odp_pkt_get(pkt, uint16_t, tailroom);
}
/** @internal Inline function @param pkt @return */
@@ -90,6 +78,12 @@ static inline odp_pktio_t _odp_packet_input(odp_packet_t pkt)
}
/** @internal Inline function @param pkt @return */
+static inline int _odp_packet_num_segs(odp_packet_t pkt)
+{
+ return _odp_pkt_get(pkt, uint8_t, segcount);
+}
+
+/** @internal Inline function @param pkt @return */
static inline void *_odp_packet_user_ptr(odp_packet_t pkt)
{
return _odp_pkt_get(pkt, void *, user_ptr);
@@ -128,8 +122,7 @@ static inline void *_odp_packet_head(odp_packet_t pkt)
/** @internal Inline function @param pkt @return */
static inline int _odp_packet_is_segmented(odp_packet_t pkt)
{
- return _odp_pkt_get(pkt, uint8_t, segcount) > 1 ||
- _odp_pkt_get(pkt, void *, ref_hdr) != NULL;
+ return _odp_pkt_get(pkt, uint8_t, segcount) > 1;
}
/** @internal Inline function @param pkt @return */
@@ -140,6 +133,23 @@ static inline odp_packet_seg_t _odp_packet_first_seg(odp_packet_t pkt)
return _odp_packet_seg_from_ndx(0);
}
+/** @internal Inline function @param pkt @return */
+static inline odp_packet_seg_t _odp_packet_last_seg(odp_packet_t pkt)
+{
+ return _odp_packet_seg_from_ndx(_odp_packet_num_segs(pkt) - 1);
+}
+
+/** @internal Inline function @param pkt @param seg @return */
+static inline odp_packet_seg_t _odp_packet_next_seg(odp_packet_t pkt,
+ odp_packet_seg_t seg)
+{
+ if (odp_unlikely(_odp_packet_seg_to_ndx(seg) >=
+ _odp_packet_seg_to_ndx(_odp_packet_last_seg(pkt))))
+ return ODP_PACKET_SEG_INVALID;
+
+ return seg + 1;
+}
+
/** @internal Inline function @param pkt @param offset @param len */
static inline void _odp_packet_prefetch(odp_packet_t pkt, uint32_t offset,
uint32_t len)
@@ -147,6 +157,12 @@ static inline void _odp_packet_prefetch(odp_packet_t pkt, uint32_t offset,
(void)pkt; (void)offset; (void)len;
}
+/** @internal Inline function @param pkt @return */
+static inline odp_buffer_t packet_to_buffer(odp_packet_t pkt)
+{
+ return (odp_buffer_t)pkt;
+}
+
/* Include inlined versions of API functions */
#include <odp/api/plat/static_inline.h>
#if ODP_ABI_COMPAT == 0
diff --git a/platform/linux-generic/include/odp/api/plat/packet_inlines_api.h b/platform/linux-generic/include/odp/api/plat/packet_inlines_api.h
index f818f82..233bc87 100644
--- a/platform/linux-generic/include/odp/api/plat/packet_inlines_api.h
+++ b/platform/linux-generic/include/odp/api/plat/packet_inlines_api.h
@@ -48,6 +48,11 @@ _ODP_INLINE odp_pktio_t odp_packet_input(odp_packet_t pkt)
return _odp_packet_input(pkt);
}
+_ODP_INLINE int odp_packet_num_segs(odp_packet_t pkt)
+{
+ return _odp_packet_num_segs(pkt);
+}
+
_ODP_INLINE void *odp_packet_user_ptr(odp_packet_t pkt)
{
return _odp_packet_user_ptr(pkt);
@@ -88,6 +93,17 @@ _ODP_INLINE odp_packet_seg_t odp_packet_first_seg(odp_packet_t pkt)
return _odp_packet_first_seg(pkt);
}
+_ODP_INLINE odp_packet_seg_t odp_packet_last_seg(odp_packet_t pkt)
+{
+ return _odp_packet_last_seg(pkt);
+}
+
+_ODP_INLINE odp_packet_seg_t odp_packet_next_seg(odp_packet_t pkt,
+ odp_packet_seg_t seg)
+{
+ return _odp_packet_next_seg(pkt, seg);
+}
+
_ODP_INLINE void odp_packet_prefetch(odp_packet_t pkt, uint32_t offset,
uint32_t len)
{
diff --git a/platform/linux-generic/include/odp/api/plat/packet_types.h b/platform/linux-generic/include/odp/api/plat/packet_types.h
index 1554c3a..68c6631 100644
--- a/platform/linux-generic/include/odp/api/plat/packet_types.h
+++ b/platform/linux-generic/include/odp/api/plat/packet_types.h
@@ -36,7 +36,7 @@ typedef ODP_HANDLE_T(odp_packet_t);
#define ODP_PACKET_INVALID _odp_cast_scalar(odp_packet_t, 0)
-#define ODP_PACKET_OFFSET_INVALID (0x0fffffff)
+#define ODP_PACKET_OFFSET_INVALID 0xffff
typedef uint8_t odp_packet_seg_t;
@@ -74,41 +74,33 @@ typedef enum {
/** @internal Packet header field offsets for inline functions */
typedef struct _odp_packet_inline_offset_t {
/** @internal field offset */
- size_t data;
+ uint16_t data;
/** @internal field offset */
- size_t seg_len;
+ uint16_t seg_len;
/** @internal field offset */
- size_t frame_len;
+ uint16_t frame_len;
/** @internal field offset */
- size_t headroom;
+ uint16_t headroom;
/** @internal field offset */
- size_t tailroom;
+ uint16_t tailroom;
/** @internal field offset */
- size_t unshared_len;
+ uint16_t pool;
/** @internal field offset */
- size_t ref_hdr;
+ uint16_t input;
/** @internal field offset */
- size_t ref_offset;
- /** *internal field offset */
- size_t ref_len;
+ uint16_t segcount;
/** @internal field offset */
- size_t pool;
+ uint16_t user_ptr;
/** @internal field offset */
- size_t input;
+ uint16_t user_area;
/** @internal field offset */
- size_t segcount;
+ uint16_t user_area_size;
/** @internal field offset */
- size_t user_ptr;
+ uint16_t flow_hash;
/** @internal field offset */
- size_t user_area;
+ uint16_t timestamp;
/** @internal field offset */
- size_t user_area_size;
- /** @internal field offset */
- size_t flow_hash;
- /** @internal field offset */
- size_t timestamp;
- /** @internal field offset */
- size_t input_flags;
+ uint16_t input_flags;
} _odp_packet_inline_offset_t;
diff --git a/platform/linux-generic/include/odp_buffer_internal.h b/platform/linux-generic/include/odp_buffer_internal.h
index 873822a..358c0e4 100644
--- a/platform/linux-generic/include/odp_buffer_internal.h
+++ b/platform/linux-generic/include/odp_buffer_internal.h
@@ -35,38 +35,56 @@ extern "C" {
#define BUFFER_BURST_SIZE CONFIG_BURST_SIZE
+typedef struct seg_entry_t {
+ void *hdr;
+ uint8_t *data;
+ uint32_t len;
+} seg_entry_t;
+
/* Common buffer header */
struct odp_buffer_hdr_t {
- /* Buffer index in the pool */
- uint32_t index;
- /* Initial buffer data pointer and length */
- uint8_t *base_data;
- uint8_t *buf_end;
+ /* Buffer index in the pool */
+ uint32_t index;
- /* Max data size */
- uint32_t size;
+ /* Total segment count */
+ uint16_t segcount;
/* Pool type */
int8_t type;
- /* Burst counts */
- uint8_t burst_num;
- uint8_t burst_first;
+ /* Number of seg[] entries used */
+ uint8_t num_seg;
+
+ /* Next header which continues the segment list */
+ void *next_seg;
- /* Segment count */
- uint8_t segcount;
+ /* Last header of the segment list */
+ void *last_seg;
+
+ /* Initial buffer data pointer */
+ uint8_t *base_data;
+
+ /* Pool pointer */
+ void *pool_ptr;
+
+ /* --- 40 bytes --- */
/* Segments */
- struct {
- void *hdr;
- uint8_t *data;
- uint32_t len;
- } seg[CONFIG_PACKET_MAX_SEGS];
+ seg_entry_t seg[CONFIG_PACKET_MAX_SEGS];
+
+ /* Burst counts */
+ uint8_t burst_num;
+ uint8_t burst_first;
/* Next buf in a list */
struct odp_buffer_hdr_t *next;
+ /* Burst table */
+ struct odp_buffer_hdr_t *burst[BUFFER_BURST_SIZE];
+
+ /* --- Mostly read only data --- */
+
/* User context pointer or u64 */
union {
uint64_t buf_u64;
@@ -74,23 +92,28 @@ struct odp_buffer_hdr_t {
const void *buf_cctx; /* const alias for ctx */
};
+ /* Reference count */
+ odp_atomic_u32_t ref_cnt;
+
+ /* Event type. Maybe different than pool type (crypto compl event) */
+ int8_t event_type;
+
+ /* Initial buffer tail pointer */
+ uint8_t *buf_end;
+
/* User area pointer */
void *uarea_addr;
/* User area size */
uint32_t uarea_size;
- /* Event type. Maybe different than pool type (crypto compl event) */
- int8_t event_type;
+ /* Max data size */
+ uint32_t size;
/* Event subtype. Should be ODP_EVENT_NO_SUBTYPE except packets. */
int8_t event_subtype;
- /* Burst table */
- struct odp_buffer_hdr_t *burst[BUFFER_BURST_SIZE];
-
- /* Used only if _ODP_PKTIO_IPC is set.
- * ipc mapped process can not walk over pointers,
+ /* ipc mapped process can not walk over pointers,
* offset has to be used */
uint64_t ipc_data_offset;
@@ -98,9 +121,6 @@ struct odp_buffer_hdr_t {
* inlining */
odp_pool_t pool_hdl;
- /* Pool pointer */
- void *pool_ptr;
-
/* Data or next header */
uint8_t data[0];
} ODP_ALIGNED_CACHE;
diff --git a/platform/linux-generic/include/odp_classification_internal.h b/platform/linux-generic/include/odp_classification_internal.h
index 208b0f5..8882a71 100644
--- a/platform/linux-generic/include/odp_classification_internal.h
+++ b/platform/linux-generic/include/odp_classification_internal.h
@@ -49,13 +49,6 @@ This function should be called during pktio initialization.
**/
int pktio_classifier_init(pktio_entry_t *pktio);
-void _odp_cls_update_hash_proto(cos_t *cos,
- odp_pktin_hash_proto_t hash_proto);
-
-uint32_t packet_rss_hash(odp_packet_hdr_t *pkt_hdr,
- odp_cls_hash_proto_t hash_proto,
- const uint8_t *base);
-
#ifdef __cplusplus
}
#endif
diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_internal.h
index 1fb3864..f81644b 100644
--- a/platform/linux-generic/include/odp_internal.h
+++ b/platform/linux-generic/include/odp_internal.h
@@ -148,6 +148,7 @@ int _odpdrv_driver_term_global(void);
int _odp_modules_init_global(void);
int cpuinfo_parser(FILE *file, system_info_t *sysinfo);
+uint64_t odp_cpufreq_id(const char *filename, int id);
uint64_t odp_cpu_hz_current(int id);
void sys_info_print_arch(void);
diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h
index 91fba1e..0972642 100644
--- a/platform/linux-generic/include/odp_packet_internal.h
+++ b/platform/linux-generic/include/odp_packet_internal.h
@@ -19,7 +19,6 @@ extern "C" {
#include <odp/api/align.h>
#include <odp/api/debug.h>
-#include <odp_debug_internal.h>
#include <odp_buffer_internal.h>
#include <odp_pool_internal.h>
#include <odp_buffer_inlines.h>
@@ -89,9 +88,14 @@ typedef struct {
error_flags_t error_flags;
output_flags_t output_flags;
- uint32_t l2_offset; /**< offset to L2 hdr, e.g. Eth */
- uint32_t l3_offset; /**< offset to L3 hdr, e.g. IPv4, IPv6 */
- uint32_t l4_offset; /**< offset to L4 hdr (TCP, UDP, SCTP, also ICMP) */
+ /* offset to L2 hdr, e.g. Eth */
+ uint16_t l2_offset;
+
+ /* offset to L3 hdr, e.g. IPv4, IPv6 */
+ uint16_t l3_offset;
+
+ /* offset to L4 hdr (TCP, UDP, SCTP, also ICMP) */
+ uint16_t l4_offset;
} packet_parser_t;
/* Packet extra data length */
@@ -107,7 +111,7 @@ typedef struct {
* packet_init(). Because of this any new fields added must be reviewed for
* initialization requirements.
*/
-typedef struct odp_packet_hdr_t {
+typedef struct {
/* common buffer header */
odp_buffer_hdr_t buf_hdr;
@@ -120,21 +124,10 @@ typedef struct odp_packet_hdr_t {
odp_pktio_t input;
uint32_t frame_len;
- uint32_t headroom;
- uint32_t tailroom;
-
- /* Fields used to support packet references */
- uint32_t unshared_len;
- /* Next pkt_hdr in reference chain */
- struct odp_packet_hdr_t *ref_hdr;
- /* Offset into next pkt_hdr that ref was created at */
- uint32_t ref_offset;
- /* frame_len in next pkt_hdr at time ref was created. This
- * allows original offset to be maintained when base pkt len
- * is changed */
- uint32_t ref_len;
- /* Incremented on refs, decremented on frees. */
- odp_atomic_u32_t ref_count;
+ uint32_t shared_len;
+
+ uint16_t headroom;
+ uint16_t tailroom;
/*
* Members below are not initialized by packet_init()
@@ -171,50 +164,6 @@ static inline odp_packet_hdr_t *odp_packet_hdr(odp_packet_t pkt)
return (odp_packet_hdr_t *)(uintptr_t)pkt;
}
-static inline odp_packet_hdr_t *packet_last_hdr(odp_packet_t pkt,
- uint32_t *offset)
-{
- odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
- odp_packet_hdr_t *prev_hdr = pkt_hdr;
- uint32_t ref_offset = 0;
-
- while (pkt_hdr->ref_hdr) {
- ref_offset = pkt_hdr->ref_offset;
- prev_hdr = pkt_hdr;
- pkt_hdr = pkt_hdr->ref_hdr;
- }
-
- if (offset) {
- if (prev_hdr != pkt_hdr)
- ref_offset += pkt_hdr->frame_len - prev_hdr->ref_len;
- *offset = ref_offset;
- }
-
- return pkt_hdr;
-}
-
-static inline odp_packet_hdr_t *packet_prev_hdr(odp_packet_hdr_t *pkt_hdr,
- odp_packet_hdr_t *cur_hdr,
- uint32_t *offset)
-{
- uint32_t ref_offset = 0;
- odp_packet_hdr_t *prev_hdr = pkt_hdr;
-
- while (pkt_hdr->ref_hdr != cur_hdr) {
- ref_offset = pkt_hdr->ref_offset;
- prev_hdr = pkt_hdr;
- pkt_hdr = pkt_hdr->ref_hdr;
- }
-
- if (offset) {
- if (prev_hdr != pkt_hdr)
- ref_offset += pkt_hdr->frame_len - prev_hdr->ref_len;
- *offset = ref_offset;
- }
-
- return pkt_hdr;
-}
-
static inline odp_packet_t packet_handle(odp_packet_hdr_t *pkt_hdr)
{
return (odp_packet_t)pkt_hdr;
@@ -230,9 +179,14 @@ static inline odp_packet_t packet_from_buf_hdr(odp_buffer_hdr_t *buf_hdr)
return (odp_packet_t)(odp_packet_hdr_t *)buf_hdr;
}
-static inline odp_buffer_t packet_to_buffer(odp_packet_t pkt)
+static inline seg_entry_t *seg_entry_last(odp_packet_hdr_t *hdr)
{
- return (odp_buffer_t)pkt;
+ odp_packet_hdr_t *last;
+ uint8_t last_seg;
+
+ last = hdr->buf_hdr.last_seg;
+ last_seg = last->buf_hdr.num_seg - 1;
+ return &last->buf_hdr.seg[last_seg];
}
/**
@@ -247,10 +201,13 @@ static inline void packet_init(odp_packet_hdr_t *pkt_hdr, uint32_t len)
seg_len = len;
pkt_hdr->buf_hdr.seg[0].len = len;
} else {
+ seg_entry_t *last;
+
seg_len = len - ((num - 1) * CONFIG_PACKET_MAX_SEG_LEN);
/* Last segment data length */
- pkt_hdr->buf_hdr.seg[num - 1].len = seg_len;
+ last = seg_entry_last(pkt_hdr);
+ last->len = seg_len;
}
pkt_hdr->p.input_flags.all = 0;
@@ -267,6 +224,7 @@ static inline void packet_init(odp_packet_hdr_t *pkt_hdr, uint32_t len)
* segment occupied by the allocated length.
*/
pkt_hdr->frame_len = len;
+ pkt_hdr->shared_len = 0;
pkt_hdr->headroom = CONFIG_PACKET_HEADROOM;
pkt_hdr->tailroom = CONFIG_PACKET_MAX_SEG_LEN - seg_len +
CONFIG_PACKET_TAILROOM;
@@ -274,9 +232,6 @@ static inline void packet_init(odp_packet_hdr_t *pkt_hdr, uint32_t len)
pkt_hdr->input = ODP_PKTIO_INVALID;
pkt_hdr->buf_hdr.event_subtype = ODP_EVENT_PACKET_BASIC;
- /* By default packet has no references */
- pkt_hdr->unshared_len = len;
- pkt_hdr->ref_hdr = NULL;
}
static inline void copy_packet_parser_metadata(odp_packet_hdr_t *src_hdr,
@@ -296,53 +251,21 @@ static inline void copy_packet_cls_metadata(odp_packet_hdr_t *src_hdr,
static inline void pull_tail(odp_packet_hdr_t *pkt_hdr, uint32_t len)
{
- int last = pkt_hdr->buf_hdr.segcount - 1;
+ seg_entry_t *last = seg_entry_last(pkt_hdr);
pkt_hdr->tailroom += len;
pkt_hdr->frame_len -= len;
- pkt_hdr->unshared_len -= len;
- pkt_hdr->buf_hdr.seg[last].len -= len;
+ last->len -= len;
}
static inline uint32_t packet_len(odp_packet_hdr_t *pkt_hdr)
{
- uint32_t pkt_len = pkt_hdr->frame_len;
- odp_packet_hdr_t *ref_hdr = pkt_hdr->ref_hdr;
-
- while (ref_hdr) {
- pkt_len += (pkt_hdr->ref_len - pkt_hdr->ref_offset);
- pkt_hdr = ref_hdr;
- ref_hdr = ref_hdr->ref_hdr;
- }
-
- return pkt_len;
-}
-
-static inline uint32_t packet_ref_count(odp_packet_hdr_t *pkt_hdr)
-{
- /* Breach the atomic type to do a peek at the ref count. This
- * is used to bypass atomic operations if ref_count == 1 for
- * performance reasons.
- */
- return pkt_hdr->ref_count.v;
-}
-
-static inline void packet_ref_count_set(odp_packet_hdr_t *pkt_hdr, uint32_t n)
-{
- /* Only used during init when there are no other possible
- * references to this pkt, so avoid the "atomic" overhead by
- * a controlled breach of the atomic type here. This saves
- * over 10% of the pathlength in routines like packet_alloc().
- */
- pkt_hdr->ref_count.v = n;
+ return pkt_hdr->frame_len;
}
static inline void packet_set_len(odp_packet_hdr_t *pkt_hdr, uint32_t len)
{
- ODP_ASSERT(packet_ref_count(pkt_hdr) == 1);
-
pkt_hdr->frame_len = len;
- pkt_hdr->unshared_len = len;
}
/* Forward declarations */
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index 9fe9aea..dacea47 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -18,6 +18,8 @@
extern "C" {
#endif
+#include <config.h>
+
#include <odp/api/spinlock.h>
#include <odp/api/ticketlock.h>
#include <odp_classification_datamodel.h>
@@ -151,6 +153,9 @@ int sock_stats_fd(pktio_entry_t *pktio_entry,
int fd);
int sock_stats_reset_fd(pktio_entry_t *pktio_entry, int fd);
+int pktin_poll_one(int pktio_index,
+ int rx_queue,
+ odp_event_t evt_tbl[]);
int pktin_poll(int pktio_index, int num_queue, int index[]);
void pktio_stop_finalize(int pktio_index);
diff --git a/platform/linux-generic/include/odp_pool_internal.h b/platform/linux-generic/include/odp_pool_internal.h
index bc7305c..35dd013 100644
--- a/platform/linux-generic/include/odp_pool_internal.h
+++ b/platform/linux-generic/include/odp_pool_internal.h
@@ -74,6 +74,7 @@ typedef struct pool_t {
uint8_t *uarea_base_addr;
/* Used by DPDK zero-copy pktio */
+ uint8_t mem_from_huge_pages;
pool_destroy_cb_fn ext_destroy;
void *ext_desc;
diff --git a/platform/linux-generic/include/odp_queue_scalable_internal.h b/platform/linux-generic/include/odp_queue_scalable_internal.h
index f15314b..ddc65f6 100644
--- a/platform/linux-generic/include/odp_queue_scalable_internal.h
+++ b/platform/linux-generic/include/odp_queue_scalable_internal.h
@@ -58,6 +58,8 @@ union queue_entry_u {
int _odp_queue_deq(sched_elem_t *q, odp_buffer_hdr_t *buf_hdr[], int num);
int _odp_queue_deq_sc(sched_elem_t *q, odp_event_t *evp, int num);
int _odp_queue_deq_mc(sched_elem_t *q, odp_event_t *evp, int num);
+int _odp_queue_enq_sp(sched_elem_t *q, odp_buffer_hdr_t *buf_hdr[], int num);
+queue_entry_t *qentry_from_ext(odp_queue_t handle);
/* Round up memory size to next cache line size to
* align all memory addresses on cache line boundary.
diff --git a/platform/linux-generic/include/odp_queue_subsystem.h b/platform/linux-generic/include/odp_queue_subsystem.h
index 2c62af3..601a254 100644
--- a/platform/linux-generic/include/odp_queue_subsystem.h
+++ b/platform/linux-generic/include/odp_queue_subsystem.h
@@ -41,7 +41,7 @@ ODP_SUBSYSTEM_API(queue, odp_schedule_sync_t, sched_type, odp_queue_t queue);
ODP_SUBSYSTEM_API(queue, odp_schedule_prio_t, sched_prio, odp_queue_t queue);
ODP_SUBSYSTEM_API(queue, odp_schedule_group_t, sched_group,
odp_queue_t queue);
-ODP_SUBSYSTEM_API(queue, int, lock_count, odp_queue_t queue);
+ODP_SUBSYSTEM_API(queue, uint32_t, lock_count, odp_queue_t queue);
ODP_SUBSYSTEM_API(queue, uint64_t, to_u64, odp_queue_t hdl);
ODP_SUBSYSTEM_API(queue, void, param_init, odp_queue_param_t *param);
ODP_SUBSYSTEM_API(queue, int, info, odp_queue_t queue,
diff --git a/platform/linux-generic/include/odp_schedule_if.h b/platform/linux-generic/include/odp_schedule_if.h
index 8f39eec..c7c5194 100644
--- a/platform/linux-generic/include/odp_schedule_if.h
+++ b/platform/linux-generic/include/odp_schedule_if.h
@@ -14,7 +14,7 @@
typedef struct schedule_fn_t {
int status_sync;
void (*pktio_start)(int pktio_index, int num_in_queue,
- int in_queue_idx[]);
+ int in_queue_idx[], odp_queue_t odpq[]);
int (*thr_add)(odp_schedule_group_t group, int thr);
int (*thr_rem)(odp_schedule_group_t group, int thr);
int (*num_grps)(void);
diff --git a/platform/linux-generic/include/odp_schedule_scalable.h b/platform/linux-generic/include/odp_schedule_scalable.h
index 8a2d70d..ac357b0 100644
--- a/platform/linux-generic/include/odp_schedule_scalable.h
+++ b/platform/linux-generic/include/odp_schedule_scalable.h
@@ -22,8 +22,12 @@
* constants, but not ODP_SCHED_PRIO_NUM. The current API for this
* is odp_schedule_num_prio(). The other schedulers also define
* this internally as NUM_PRIO.
+ *
+ * One additional priority level for idle pktin queues.
+ * This is only for internal use and not visible to the user.
*/
-#define ODP_SCHED_PRIO_NUM 8
+#define ODP_SCHED_PRIO_PKTIN 8
+#define ODP_SCHED_PRIO_NUM 9
typedef struct {
union {
@@ -55,14 +59,18 @@ typedef uint32_t ringidx_t;
#define ODP_NO_SCHED_QUEUE (ODP_SCHED_SYNC_ORDERED + 1)
typedef struct {
- struct llnode node; /* must be first */
+ struct llnode node;
sched_queue_t *schedq;
#ifdef CONFIG_QSCHST_LOCK
odp_ticketlock_t qschlock;
#endif
qschedstate_t qschst;
- uint16_t pop_deficit;
- uint16_t qschst_type;
+ uint8_t pop_deficit;
+ uint8_t qschst_type;
+ uint8_t pktio_idx;
+ uint8_t rx_queue;
+ uint16_t xoffset;
+ uint8_t sched_prio;
ringidx_t prod_read SPLIT_PC;
ringidx_t prod_write;
ringidx_t prod_mask;
@@ -80,6 +88,7 @@ typedef struct {
#define cons_ring prod_ring
#define cons_type qschst_type
#endif
+ odp_schedule_group_t sched_grp;
} sched_elem_t ODP_ALIGNED_CACHE;
/* Number of scheduling groups */
@@ -106,6 +115,8 @@ typedef struct {
typedef struct {
/* Atomic queue currently being processed or NULL */
sched_elem_t *atomq;
+ /* Schedq the currently processed queue was popped from */
+ sched_queue_t *src_schedq;
/* Current reorder context or NULL */
reorder_context_t *rctx;
uint8_t pause;
@@ -113,8 +124,6 @@ typedef struct {
uint8_t tidx;
uint8_t pad;
uint32_t dequeued; /* Number of events dequeued from atomic queue */
- uint16_t pktin_next; /* Next pktin tag to poll */
- uint16_t pktin_poll_cnts;
uint16_t ticket; /* Ticket for atomic queue or TICKET_INVALID */
uint16_t num_schedq;
uint16_t sg_sem; /* Set when sg_wanted is modified by other thread */
@@ -133,7 +142,7 @@ typedef struct {
void sched_update_enq(sched_elem_t *q, uint32_t actual);
void sched_update_enq_sp(sched_elem_t *q, uint32_t actual);
-sched_queue_t *schedq_from_sched_group(odp_schedule_group_t grp, uint32_t prio);
-void sched_group_xcount_dec(odp_schedule_group_t grp, uint32_t prio);
+sched_queue_t *sched_queue_add(odp_schedule_group_t grp, uint32_t prio);
+void sched_queue_rem(odp_schedule_group_t grp, uint32_t prio);
#endif /* ODP_SCHEDULE_SCALABLE_H */
diff --git a/platform/linux-generic/include/odp_schedule_scalable_ordered.h b/platform/linux-generic/include/odp_schedule_scalable_ordered.h
index 941304b..c493dea 100644
--- a/platform/linux-generic/include/odp_schedule_scalable_ordered.h
+++ b/platform/linux-generic/include/odp_schedule_scalable_ordered.h
@@ -79,7 +79,7 @@ typedef struct reorder_window {
uint32_t tail;
uint32_t turn;
uint32_t olock[CONFIG_QUEUE_MAX_ORD_LOCKS];
- uint16_t lock_count;
+ uint32_t lock_count;
/* Reorder contexts in this window */
reorder_context_t *ring[RWIN_SIZE];
} reorder_window_t;
@@ -115,17 +115,10 @@ reorder_window_t *rwin_alloc(_odp_ishm_pool_t *pool,
unsigned lock_count);
int rwin_free(_odp_ishm_pool_t *pool, reorder_window_t *rwin);
bool rwin_reserve(reorder_window_t *rwin, uint32_t *sn);
-void rwin_insert(reorder_window_t *rwin,
- reorder_context_t *rctx,
- uint32_t sn,
- void (*callback)(reorder_context_t *));
+bool rwin_reserve_sc(reorder_window_t *rwin, uint32_t *sn);
+void rwin_unreserve_sc(reorder_window_t *rwin, uint32_t sn);
void rctx_init(reorder_context_t *rctx, uint16_t idx,
reorder_window_t *rwin, uint32_t sn);
-void rctx_free(const reorder_context_t *rctx);
-void olock_unlock(const reorder_context_t *rctx, reorder_window_t *rwin,
- uint32_t lock_index);
-void olock_release(const reorder_context_t *rctx);
-void rctx_retire(reorder_context_t *first);
void rctx_release(reorder_context_t *rctx);
int rctx_save(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[], int num);
diff --git a/platform/linux-generic/include/odp_schedule_subsystem.h b/platform/linux-generic/include/odp_schedule_subsystem.h
index c3edef6..4b2f295 100644
--- a/platform/linux-generic/include/odp_schedule_subsystem.h
+++ b/platform/linux-generic/include/odp_schedule_subsystem.h
@@ -47,6 +47,8 @@ ODP_SUBSYSTEM_API(schedule, int, schedule_group_info,
odp_schedule_group_t group, odp_schedule_group_info_t *info);
ODP_SUBSYSTEM_API(schedule, void, schedule_order_lock, unsigned lock_index);
ODP_SUBSYSTEM_API(schedule, void, schedule_order_unlock, unsigned lock_index);
+ODP_SUBSYSTEM_API(schedule, void, schedule_order_unlock_lock,
+ uint32_t unlock_index, uint32_t lock_index);
typedef ODP_MODULE_CLASS(schedule) {
odp_module_base_t base;
@@ -65,6 +67,7 @@ typedef ODP_MODULE_CLASS(schedule) {
odp_api_proto(schedule, schedule_prefetch) schedule_prefetch;
odp_api_proto(schedule, schedule_order_lock) schedule_order_lock;
odp_api_proto(schedule, schedule_order_unlock) schedule_order_unlock;
+ odp_api_proto(schedule, schedule_order_unlock_lock) schedule_order_unlock_lock;
odp_api_proto(schedule, schedule_release_atomic)
schedule_release_atomic;
odp_api_proto(schedule, schedule_release_ordered)
diff --git a/platform/linux-generic/include/odp_timer_internal.h b/platform/linux-generic/include/odp_timer_internal.h
index 67ee9fe..0759f72 100644
--- a/platform/linux-generic/include/odp_timer_internal.h
+++ b/platform/linux-generic/include/odp_timer_internal.h
@@ -20,9 +20,6 @@
#include <odp_pool_internal.h>
#include <odp/api/timer.h>
-/* Minimum number of nanoseconds between checking timer pools. */
-#define CONFIG_TIMER_RUN_RATELIMIT_NS 100
-
/* Minimum number of scheduling rounds between checking timer pools. */
#define CONFIG_TIMER_RUN_RATELIMIT_ROUNDS 1
diff --git a/platform/linux-generic/m4/odp_dpdk.m4 b/platform/linux-generic/m4/odp_dpdk.m4
index cebf102..b655416 100644
--- a/platform/linux-generic/m4/odp_dpdk.m4
+++ b/platform/linux-generic/m4/odp_dpdk.m4
@@ -47,7 +47,11 @@ then
done
AS_VAR_APPEND([DPDK_PMDS], [--no-whole-archive])
- ODP_CFLAGS="$ODP_CFLAGS -DODP_PKTIO_DPDK -DODP_DPDK_ZERO_COPY=$zero_copy"
+ AC_DEFINE([ODP_PKTIO_DPDK], [1],
+ [Define to 1 to enable DPDK packet I/O support])
+ AC_DEFINE_UNQUOTED([ODP_DPDK_ZERO_COPY], [$zero_copy],
+ [Define to 1 to enable DPDK zero copy support])
+
DPDK_LIBS="-L$DPDK_PATH/lib -ldpdk -lpthread -ldl -lpcap -lm"
AC_SUBST([DPDK_CPPFLAGS])
AC_SUBST([DPDK_LIBS])
diff --git a/platform/linux-generic/m4/odp_netmap.m4 b/platform/linux-generic/m4/odp_netmap.m4
index dea8062..bd04824 100644
--- a/platform/linux-generic/m4/odp_netmap.m4
+++ b/platform/linux-generic/m4/odp_netmap.m4
@@ -31,7 +31,8 @@ if test x$netmap_support = xyes
then
AC_CHECK_HEADERS([net/netmap_user.h], [],
[AC_MSG_FAILURE(["can't find netmap header"])])
- ODP_CFLAGS="$ODP_CFLAGS -DODP_NETMAP"
+ AC_DEFINE([ODP_NETMAP], [1],
+ [Define to 1 to enable netmap IO support])
AC_SUBST([NETMAP_CPPFLAGS])
else
netmap_support=no
diff --git a/platform/linux-generic/m4/odp_pcap.m4 b/platform/linux-generic/m4/odp_pcap.m4
index d7295f2..0b5b8a2 100644
--- a/platform/linux-generic/m4/odp_pcap.m4
+++ b/platform/linux-generic/m4/odp_pcap.m4
@@ -9,7 +9,7 @@ AC_CHECK_HEADER(pcap/pcap.h,
[])
if test "$have_pcap" = "yes"; then
- ODP_CFLAGS="$AM_CFLAGS -DHAVE_PCAP"
+ AC_DEFINE([HAVE_PCAP], 1, [Define to 1 if you have pcap library])
PCAP_LIBS="-lpcap"
fi
diff --git a/platform/linux-generic/m4/odp_schedule.m4 b/platform/linux-generic/m4/odp_schedule.m4
index d862b8b..9c09d6c 100644
--- a/platform/linux-generic/m4/odp_schedule.m4
+++ b/platform/linux-generic/m4/odp_schedule.m4
@@ -1,44 +1,26 @@
-# Checks for --enable-schedule-sp and defines ODP_SCHEDULE_SP and adds
-# -DODP_SCHEDULE_SP to CFLAGS.
-AC_ARG_ENABLE(
- [schedule_sp],
- [AC_HELP_STRING([--enable-schedule-sp],
- [enable strict priority scheduler])],
- [if test "x$enableval" = xyes; then
- schedule_sp=true
- ODP_CFLAGS="$ODP_CFLAGS -DODP_SCHEDULE_SP"
- else
- schedule_sp=false
- fi],
- [schedule_sp=false])
-AM_CONDITIONAL([ODP_SCHEDULE_SP], [test x$schedule_sp = xtrue])
+AC_ARG_ENABLE([schedule-sp],
+ [ --enable-schedule-sp enable strict priority scheduler],
+ [if test x$enableval = xyes; then
+ schedule_sp_enabled=yes
+ AC_DEFINE([ODP_SCHEDULE_SP], [1],
+ [Define to 1 to enable strict priority scheduler])
+ fi])
+AM_CONDITIONAL([ODP_SCHEDULE_SP], [test x$schedule_sp_enabled = xyes])
-# Checks for --enable-schedule-iquery and defines ODP_SCHEDULE_IQUERY and adds
-# -DODP_SCHEDULE_IQUERY to CFLAGS.
-AC_ARG_ENABLE(
- [schedule_iquery],
- [AC_HELP_STRING([--enable-schedule-iquery],
- [enable interests query (sparse bitmap) scheduler])],
- [if test "x$enableval" = xyes; then
- schedule_iquery=true
- ODP_CFLAGS="$ODP_CFLAGS -DODP_SCHEDULE_IQUERY"
- else
- schedule_iquery=false
- fi],
- [schedule_iquery=false])
-AM_CONDITIONAL([ODP_SCHEDULE_IQUERY], [test x$schedule_iquery = xtrue])
+AC_ARG_ENABLE([schedule-iquery],
+ [ --enable-schedule-iquery enable interests query (sparse bitmap) scheduler],
+ [if test x$enableval = xyes; then
+ schedule_iquery_enabled=yes
+ AC_DEFINE([ODP_SCHEDULE_IQUERY], [1],
+ [Define to 1 to enable interests query scheduler])
+ fi])
+AM_CONDITIONAL([ODP_SCHEDULE_IQUERY], [test x$schedule_iquery_enabled = xyes])
-# Checks for --enable-schedule-scalable and defines ODP_SCHEDULE_SCALABLE and
-# adds -DODP_SCHEDULE_SCALABLE to CFLAGS.
-AC_ARG_ENABLE(
- [schedule_scalable],
- [AC_HELP_STRING([--enable-schedule-scalable],
- [enable scalable scheduler])],
- [if test "x$enableval" = xyes; then
- schedule_scalable=true
- ODP_CFLAGS="$ODP_CFLAGS -DODP_SCHEDULE_SCALABLE"
- else
- schedule_scalable=false
- fi],
- [schedule_scalable=false])
-AM_CONDITIONAL([ODP_SCHEDULE_SCALABLE], [test x$schedule_scalable = xtrue])
+AC_ARG_ENABLE([schedule_scalable],
+ [ --enable-schedule-scalable enable scalable scheduler],
+ [if test x$enableval = xyes; then
+ schedule_scalable_enabled=yes
+ AC_DEFINE([ODP_SCHEDULE_SCALABLE], [1],
+ [Define to 1 to enable scalable scheduler])
+ fi])
+AM_CONDITIONAL([ODP_SCHEDULE_SCALABLE], [test x$schedule_scalable_enabled = xyes])
diff --git a/platform/linux-generic/odp_atomic.c b/platform/linux-generic/odp_atomic.c
index 0e40cda..53123b6 100644
--- a/platform/linux-generic/odp_atomic.c
+++ b/platform/linux-generic/odp_atomic.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/atomic.h>
#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/atomic_inlines.h>
diff --git a/platform/linux-generic/odp_barrier.c b/platform/linux-generic/odp_barrier.c
index a2c6267..5eb354d 100644
--- a/platform/linux-generic/odp_barrier.c
+++ b/platform/linux-generic/odp_barrier.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/barrier.h>
#include <odp/api/sync.h>
#include <odp/api/cpu.h>
diff --git a/platform/linux-generic/odp_bitmap.c b/platform/linux-generic/odp_bitmap.c
index a29b9ef..b43c8fb 100644
--- a/platform/linux-generic/odp_bitmap.c
+++ b/platform/linux-generic/odp_bitmap.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <string.h>
#include <unistd.h>
#include <odp/api/std_types.h>
diff --git a/platform/linux-generic/odp_byteorder.c b/platform/linux-generic/odp_byteorder.c
index a344c53..a3d1f98 100644
--- a/platform/linux-generic/odp_byteorder.c
+++ b/platform/linux-generic/odp_byteorder.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/byteorder.h>
#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/byteorder_inlines.h>
diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c
index f9a82a2..a5cba56 100644
--- a/platform/linux-generic/odp_classification.c
+++ b/platform/linux-generic/odp_classification.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/classification.h>
#include <odp/api/align.h>
#include <odp/api/queue.h>
@@ -33,7 +35,7 @@ static cos_tbl_t *cos_tbl;
static pmr_tbl_t *pmr_tbl;
static _cls_queue_grp_tbl_t *queue_grp_tbl;
-const rss_key default_rss = {
+static const rss_key default_rss = {
.u8 = {
0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2,
0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0,
@@ -191,7 +193,8 @@ int odp_cls_capability(odp_cls_capability_t *capability)
return 0;
}
-void _odp_cls_update_hash_proto(cos_t *cos, odp_pktin_hash_proto_t hash_proto)
+static void _odp_cls_update_hash_proto(cos_t *cos,
+ odp_pktin_hash_proto_t hash_proto)
{
if (hash_proto.proto.ipv4 || hash_proto.proto.ipv4_tcp ||
hash_proto.proto.ipv4_udp)
@@ -934,6 +937,10 @@ static inline cos_t *cls_select_cos(pktio_entry_t *entry,
return cls->default_cos;
}
+static uint32_t packet_rss_hash(odp_packet_hdr_t *pkt_hdr,
+ odp_cls_hash_proto_t hash_proto,
+ const uint8_t *base);
+
/**
* Classify packet
*
@@ -989,9 +996,9 @@ int cls_classify_packet(pktio_entry_t *entry, const uint8_t *base,
return 0;
}
-uint32_t packet_rss_hash(odp_packet_hdr_t *pkt_hdr,
- odp_cls_hash_proto_t hash_proto,
- const uint8_t *base)
+static uint32_t packet_rss_hash(odp_packet_hdr_t *pkt_hdr,
+ odp_cls_hash_proto_t hash_proto,
+ const uint8_t *base)
{
thash_tuple_t tuple;
const _odp_ipv4hdr_t *ipv4;
diff --git a/platform/linux-generic/odp_cpu.c b/platform/linux-generic/odp_cpu.c
index 282defd..d208331 100644
--- a/platform/linux-generic/odp_cpu.c
+++ b/platform/linux-generic/odp_cpu.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/cpu.h>
#include <odp/api/hints.h>
diff --git a/platform/linux-generic/odp_cpumask.c b/platform/linux-generic/odp_cpumask.c
index 64559a6..ed5cb43 100644
--- a/platform/linux-generic/odp_cpumask.c
+++ b/platform/linux-generic/odp_cpumask.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <sched.h>
diff --git a/platform/linux-generic/odp_cpumask_task.c b/platform/linux-generic/odp_cpumask_task.c
index 10885ce..d05ae6d 100644
--- a/platform/linux-generic/odp_cpumask_task.c
+++ b/platform/linux-generic/odp_cpumask_task.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <sched.h>
diff --git a/platform/linux-generic/odp_crypto.c b/platform/linux-generic/odp_crypto.c
index af166c5..3174fee 100644
--- a/platform/linux-generic/odp_crypto.c
+++ b/platform/linux-generic/odp_crypto.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <odp/api/crypto.h>
#include <odp_internal.h>
@@ -17,6 +19,7 @@
#include <odp_debug_internal.h>
#include <odp/api/hints.h>
#include <odp/api/random.h>
+#include <odp/api/plat/packet_inlines.h>
#include <odp_packet_internal.h>
#include <string.h>
@@ -44,10 +47,14 @@ static const odp_crypto_cipher_capability_t cipher_capa_trides_cbc[] = {
{.key_len = 24, .iv_len = 8} };
static const odp_crypto_cipher_capability_t cipher_capa_aes_cbc[] = {
-{.key_len = 16, .iv_len = 16} };
+{.key_len = 16, .iv_len = 16},
+{.key_len = 24, .iv_len = 16},
+{.key_len = 32, .iv_len = 16} };
static const odp_crypto_cipher_capability_t cipher_capa_aes_gcm[] = {
-{.key_len = 16, .iv_len = 12} };
+{.key_len = 16, .iv_len = 12},
+{.key_len = 24, .iv_len = 12},
+{.key_len = 32, .iv_len = 12} };
/*
* Authentication algorithm capabilities
@@ -701,14 +708,11 @@ odp_crypto_session_create(odp_crypto_session_param_t *param,
odp_crypto_generic_session_t *session;
int aes_gcm = 0;
- /* Default to successful result */
- *status = ODP_CRYPTO_SES_CREATE_ERR_NONE;
-
/* Allocate memory for this session */
session = alloc_session();
if (NULL == session) {
*status = ODP_CRYPTO_SES_CREATE_ERR_ENOMEM;
- return -1;
+ goto err;
}
/* Copy parameters */
@@ -716,8 +720,8 @@ odp_crypto_session_create(odp_crypto_session_param_t *param,
if (session->p.iv.length > MAX_IV_LEN) {
ODP_DBG("Maximum IV length exceeded\n");
- free_session(session);
- return -1;
+ *status = ODP_CRYPTO_SES_CREATE_ERR_INV_CIPHER;
+ goto err;
}
/* Copy IV data */
@@ -741,23 +745,47 @@ odp_crypto_session_create(odp_crypto_session_param_t *param,
case ODP_CIPHER_ALG_3DES_CBC:
rc = process_cipher_param(session, EVP_des_ede3_cbc());
break;
- case ODP_CIPHER_ALG_AES_CBC:
#if ODP_DEPRECATED_API
case ODP_CIPHER_ALG_AES128_CBC:
+ if (param->cipher_key.length == 16)
+ rc = process_cipher_param(session, EVP_aes_128_cbc());
+ else
+ rc = -1;
+ break;
#endif
- rc = process_cipher_param(session, EVP_aes_128_cbc());
+ case ODP_CIPHER_ALG_AES_CBC:
+ if (param->cipher_key.length == 16)
+ rc = process_cipher_param(session, EVP_aes_128_cbc());
+ else if (param->cipher_key.length == 24)
+ rc = process_cipher_param(session, EVP_aes_192_cbc());
+ else if (param->cipher_key.length == 32)
+ rc = process_cipher_param(session, EVP_aes_256_cbc());
+ else
+ rc = -1;
break;
#if ODP_DEPRECATED_API
case ODP_CIPHER_ALG_AES128_GCM:
- if (param->auth_alg == ODP_AUTH_ALG_AES128_GCM)
- aes_gcm = 1;
- /* Fallthrough */
+ /* AES-GCM requires to do both auth and
+ * cipher at the same time */
+ if (param->auth_alg != ODP_AUTH_ALG_AES128_GCM)
+ rc = -1;
+ else if (param->cipher_key.length == 16)
+ rc = process_aes_gcm_param(session, EVP_aes_128_gcm());
+ else
+ rc = -1;
+ break;
#endif
case ODP_CIPHER_ALG_AES_GCM:
/* AES-GCM requires to do both auth and
* cipher at the same time */
- if (param->auth_alg == ODP_AUTH_ALG_AES_GCM || aes_gcm)
+ if (param->auth_alg != ODP_AUTH_ALG_AES_GCM)
+ rc = -1;
+ else if (param->cipher_key.length == 16)
rc = process_aes_gcm_param(session, EVP_aes_128_gcm());
+ else if (param->cipher_key.length == 24)
+ rc = process_aes_gcm_param(session, EVP_aes_192_gcm());
+ else if (param->cipher_key.length == 32)
+ rc = process_aes_gcm_param(session, EVP_aes_256_gcm());
else
rc = -1;
break;
@@ -768,8 +796,7 @@ odp_crypto_session_create(odp_crypto_session_param_t *param,
/* Check result */
if (rc) {
*status = ODP_CRYPTO_SES_CREATE_ERR_INV_CIPHER;
- free_session(session);
- return -1;
+ goto err;
}
aes_gcm = 0;
@@ -829,13 +856,20 @@ odp_crypto_session_create(odp_crypto_session_param_t *param,
/* Check result */
if (rc) {
*status = ODP_CRYPTO_SES_CREATE_ERR_INV_AUTH;
- free_session(session);
- return -1;
+ goto err;
}
/* We're happy */
*session_out = (intptr_t)session;
+ *status = ODP_CRYPTO_SES_CREATE_ERR_NONE;
return 0;
+
+err:
+ /* error status should be set at this moment */
+ if (session != NULL)
+ free_session(session);
+ *session_out = ODP_CRYPTO_SESSION_INVALID;
+ return -1;
}
int odp_crypto_session_destroy(odp_crypto_session_t session)
@@ -999,9 +1033,6 @@ int32_t odp_random_data(uint8_t *buf, uint32_t len, odp_random_kind_t kind)
switch (kind) {
case ODP_RANDOM_BASIC:
- RAND_pseudo_bytes(buf, len);
- return len;
-
case ODP_RANDOM_CRYPTO:
rc = RAND_bytes(buf, len);
return (1 == rc) ? (int)len /*success*/: -1 /*failure*/;
diff --git a/platform/linux-generic/odp_errno.c b/platform/linux-generic/odp_errno.c
index 408a4b9..57726d1 100644
--- a/platform/linux-generic/odp_errno.c
+++ b/platform/linux-generic/odp_errno.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/errno.h>
#include <odp_internal.h>
#include <string.h>
diff --git a/platform/linux-generic/odp_event.c b/platform/linux-generic/odp_event.c
index 23b410d..991d0e1 100644
--- a/platform/linux-generic/odp_event.c
+++ b/platform/linux-generic/odp_event.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/event.h>
#include <odp/api/buffer.h>
#include <odp/api/crypto.h>
diff --git a/platform/linux-generic/odp_hash.c b/platform/linux-generic/odp_hash.c
index 55876c3..4c7c83e 100644
--- a/platform/linux-generic/odp_hash.c
+++ b/platform/linux-generic/odp_hash.c
@@ -37,6 +37,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "config.h"
+
#include <odp/api/hash.h>
#include <odp/api/std_types.h>
diff --git a/platform/linux-generic/odp_impl.c b/platform/linux-generic/odp_impl.c
index 3fc2d6a..5b452fb 100644
--- a/platform/linux-generic/odp_impl.c
+++ b/platform/linux-generic/odp_impl.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/**
* @file
diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c
index d5a85d7..d267cc8 100644
--- a/platform/linux-generic/odp_init.c
+++ b/platform/linux-generic/odp_init.c
@@ -3,6 +3,9 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+
+#include "config.h"
+
#include <odp/api/init.h>
#include <odp_debug_internal.h>
#include <odp/api/debug.h>
diff --git a/platform/linux-generic/odp_ipsec.c b/platform/linux-generic/odp_ipsec.c
index c7eeb4e..04757e7 100644
--- a/platform/linux-generic/odp_ipsec.c
+++ b/platform/linux-generic/odp_ipsec.c
@@ -147,7 +147,7 @@ int odp_ipsec_status(odp_ipsec_status_t *status, odp_event_t event)
return -1;
}
-int odp_ipsec_mtu_update(odp_ipsec_sa_t sa, uint32_t mtu)
+int odp_ipsec_sa_mtu_update(odp_ipsec_sa_t sa, uint32_t mtu)
{
(void)sa;
(void)mtu;
diff --git a/platform/linux-generic/odp_name_table.c b/platform/linux-generic/odp_name_table.c
index b116904..3ff46b3 100644
--- a/platform/linux-generic/odp_name_table.c
+++ b/platform/linux-generic/odp_name_table.c
@@ -6,6 +6,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <stdint.h>
#include <string.h>
#include <malloc.h>
diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c
index bbad4bf..ff0cb8f 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/plat/packet_inlines.h>
#include <odp/api/packet.h>
#include <odp_packet_internal.h>
@@ -33,10 +35,6 @@ const _odp_packet_inline_offset_t _odp_packet_inline ODP_ALIGNED_CACHE = {
.frame_len = offsetof(odp_packet_hdr_t, frame_len),
.headroom = offsetof(odp_packet_hdr_t, headroom),
.tailroom = offsetof(odp_packet_hdr_t, tailroom),
- .unshared_len = offsetof(odp_packet_hdr_t, unshared_len),
- .ref_hdr = offsetof(odp_packet_hdr_t, ref_hdr),
- .ref_offset = offsetof(odp_packet_hdr_t, ref_offset),
- .ref_len = offsetof(odp_packet_hdr_t, ref_len),
.pool = offsetof(odp_packet_hdr_t, buf_hdr.pool_hdl),
.input = offsetof(odp_packet_hdr_t, input),
.segcount = offsetof(odp_packet_hdr_t, buf_hdr.segcount),
@@ -61,39 +59,125 @@ static inline odp_buffer_t buffer_handle(odp_packet_hdr_t *pkt_hdr)
return (odp_buffer_t)pkt_hdr;
}
-static inline void packet_ref_inc(odp_packet_hdr_t *pkt_hdr)
+static inline odp_packet_hdr_t *buf_to_packet_hdr(odp_buffer_t buf)
{
- odp_atomic_inc_u32(&pkt_hdr->ref_count);
+ return (odp_packet_hdr_t *)buf_hdl_to_hdr(buf);
}
-static inline uint32_t packet_ref_dec(odp_packet_hdr_t *pkt_hdr)
+odp_packet_t _odp_packet_from_buf_hdr(odp_buffer_hdr_t *buf_hdr)
{
- return odp_atomic_fetch_dec_u32(&pkt_hdr->ref_count);
+ return (odp_packet_t)buf_hdr;
}
-static inline odp_packet_hdr_t *buf_to_packet_hdr(odp_buffer_t buf)
+static inline seg_entry_t *seg_entry(odp_packet_hdr_t *hdr,
+ uint32_t seg_idx)
{
- return (odp_packet_hdr_t *)buf_hdl_to_hdr(buf);
+ uint32_t idx = 0;
+ uint8_t num_seg = hdr->buf_hdr.num_seg;
+
+ while (odp_unlikely(idx + num_seg - 1 < seg_idx)) {
+ idx += num_seg;
+ hdr = hdr->buf_hdr.next_seg;
+ num_seg = hdr->buf_hdr.num_seg;
+ }
+
+ idx = seg_idx - idx;
+
+ return &hdr->buf_hdr.seg[idx];
}
-odp_packet_t _odp_packet_from_buf_hdr(odp_buffer_hdr_t *buf_hdr)
+static inline void seg_entry_find_idx(odp_packet_hdr_t **p_hdr,
+ uint8_t *p_idx,
+ uint32_t find_idx)
{
- return (odp_packet_t)buf_hdr;
+ odp_packet_hdr_t *hdr = *p_hdr;
+ uint32_t idx = 0;
+ uint8_t num_seg = hdr->buf_hdr.num_seg;
+
+ while (odp_unlikely(idx + num_seg - 1 < find_idx)) {
+ idx += num_seg;
+ hdr = hdr->buf_hdr.next_seg;
+ num_seg = hdr->buf_hdr.num_seg;
+ }
+
+ idx = find_idx - idx;
+ *p_hdr = hdr;
+ *p_idx = idx;
+}
+
+/* Return pointer to the current segment entry and step cur_hdr / cur_idx
+ * forward.
+ */
+static inline seg_entry_t *seg_entry_next(odp_packet_hdr_t **cur_hdr,
+ uint8_t *cur_idx)
+{
+ odp_packet_hdr_t *hdr = *cur_hdr;
+ uint8_t idx = *cur_idx;
+ uint8_t num_seg = hdr->buf_hdr.num_seg;
+
+ if (idx == num_seg - 1) {
+ *cur_hdr = hdr->buf_hdr.next_seg;
+ *cur_idx = 0;
+ } else {
+ *cur_idx = idx + 1;
+ }
+
+ return &hdr->buf_hdr.seg[idx];
+}
+
+static inline void seg_entry_find_offset(odp_packet_hdr_t **p_hdr,
+ uint8_t *p_idx,
+ uint32_t *seg_offset,
+ uint32_t *seg_idx,
+ uint32_t offset)
+{
+ int i;
+ odp_packet_hdr_t *hdr, *cur_hdr;
+ uint8_t idx, cur_idx;
+ seg_entry_t *seg = NULL;
+ uint32_t seg_start = 0, seg_end = 0;
+ int seg_count;
+
+ hdr = *p_hdr;
+ cur_hdr = hdr;
+ idx = 0;
+ cur_idx = 0;
+ seg_count = hdr->buf_hdr.segcount;
+
+ for (i = 0; i < seg_count; i++) {
+ cur_hdr = hdr;
+ cur_idx = idx;
+ seg = seg_entry_next(&hdr, &idx);
+ seg_end += seg->len;
+
+ if (odp_likely(offset < seg_end))
+ break;
+
+ seg_start = seg_end;
+ }
+
+ *p_hdr = cur_hdr;
+ *p_idx = cur_idx;
+ *seg_offset = offset - seg_start;
+ *seg_idx = i;
}
static inline uint32_t packet_seg_len(odp_packet_hdr_t *pkt_hdr,
uint32_t seg_idx)
{
- return pkt_hdr->buf_hdr.seg[seg_idx].len;
+ seg_entry_t *seg = seg_entry(pkt_hdr, seg_idx);
+
+ return seg->len;
}
-static inline uint8_t *packet_seg_data(odp_packet_hdr_t *pkt_hdr,
- uint32_t seg_idx)
+static inline void *packet_seg_data(odp_packet_hdr_t *pkt_hdr, uint32_t seg_idx)
{
- return pkt_hdr->buf_hdr.seg[seg_idx].data;
+ seg_entry_t *seg = seg_entry(pkt_hdr, seg_idx);
+
+ return seg->data;
}
-static inline uint32_t packet_last_seg(odp_packet_hdr_t *pkt_hdr)
+static inline uint16_t packet_last_seg(odp_packet_hdr_t *pkt_hdr)
{
if (CONFIG_PACKET_MAX_SEGS == 1)
return 0;
@@ -103,14 +187,7 @@ static inline uint32_t packet_last_seg(odp_packet_hdr_t *pkt_hdr)
static inline uint32_t packet_first_seg_len(odp_packet_hdr_t *pkt_hdr)
{
- return packet_seg_len(pkt_hdr, 0);
-}
-
-static inline uint32_t packet_last_seg_len(odp_packet_hdr_t *pkt_hdr)
-{
- int last = packet_last_seg(pkt_hdr);
-
- return packet_seg_len(pkt_hdr, last);
+ return pkt_hdr->buf_hdr.seg[0].len;
}
static inline void *packet_data(odp_packet_hdr_t *pkt_hdr)
@@ -120,26 +197,27 @@ static inline void *packet_data(odp_packet_hdr_t *pkt_hdr)
static inline void *packet_tail(odp_packet_hdr_t *pkt_hdr)
{
- int last = packet_last_seg(pkt_hdr);
- uint32_t seg_len = pkt_hdr->buf_hdr.seg[last].len;
+ seg_entry_t *last_seg = seg_entry_last(pkt_hdr);
- return pkt_hdr->buf_hdr.seg[last].data + seg_len;
+ return last_seg->data + last_seg->len;
}
-static inline uint32_t seg_headroom(odp_packet_hdr_t *pkt_hdr, int seg)
+static inline uint32_t seg_headroom(odp_packet_hdr_t *pkt_hdr, int seg_idx)
{
- odp_buffer_hdr_t *hdr = pkt_hdr->buf_hdr.seg[seg].hdr;
+ seg_entry_t *seg = seg_entry(pkt_hdr, seg_idx);
+ odp_buffer_hdr_t *hdr = seg->hdr;
uint8_t *base = hdr->base_data;
- uint8_t *head = pkt_hdr->buf_hdr.seg[seg].data;
+ uint8_t *head = seg->data;
return CONFIG_PACKET_HEADROOM + (head - base);
}
-static inline uint32_t seg_tailroom(odp_packet_hdr_t *pkt_hdr, int seg)
+static inline uint32_t seg_tailroom(odp_packet_hdr_t *pkt_hdr, int seg_idx)
{
- uint32_t seg_len = pkt_hdr->buf_hdr.seg[seg].len;
- odp_buffer_hdr_t *hdr = pkt_hdr->buf_hdr.seg[seg].hdr;
- uint8_t *tail = pkt_hdr->buf_hdr.seg[seg].data + seg_len;
+ seg_entry_t *seg = seg_entry(pkt_hdr, seg_idx);
+
+ odp_buffer_hdr_t *hdr = seg->hdr;
+ uint8_t *tail = seg->data + seg->len;
return hdr->buf_end - tail;
}
@@ -148,7 +226,6 @@ static inline void push_head(odp_packet_hdr_t *pkt_hdr, uint32_t len)
{
pkt_hdr->headroom -= len;
pkt_hdr->frame_len += len;
- pkt_hdr->unshared_len += len;
pkt_hdr->buf_hdr.seg[0].data -= len;
pkt_hdr->buf_hdr.seg[0].len += len;
}
@@ -157,19 +234,17 @@ static inline void pull_head(odp_packet_hdr_t *pkt_hdr, uint32_t len)
{
pkt_hdr->headroom += len;
pkt_hdr->frame_len -= len;
- pkt_hdr->unshared_len -= len;
pkt_hdr->buf_hdr.seg[0].data += len;
pkt_hdr->buf_hdr.seg[0].len -= len;
}
static inline void push_tail(odp_packet_hdr_t *pkt_hdr, uint32_t len)
{
- int last = packet_last_seg(pkt_hdr);
+ seg_entry_t *last_seg = seg_entry_last(pkt_hdr);
pkt_hdr->tailroom -= len;
pkt_hdr->frame_len += len;
- pkt_hdr->unshared_len += len;
- pkt_hdr->buf_hdr.seg[last].len += len;
+ last_seg->len += len;
}
/* Copy all metadata for segmentation modification. Segment data and lengths
@@ -195,13 +270,12 @@ static inline void packet_seg_copy_md(odp_packet_hdr_t *dst,
dst->buf_hdr.uarea_addr = src->buf_hdr.uarea_addr;
dst->buf_hdr.uarea_size = src->buf_hdr.uarea_size;
- /* reference related metadata */
- dst->ref_len = src->ref_len;
- dst->unshared_len = src->unshared_len;
-
/* segmentation data is not copied:
* buf_hdr.seg[]
* buf_hdr.segcount
+ * buf_hdr.num_seg
+ * buf_hdr.next_seg
+ * buf_hdr.last_seg
*/
}
@@ -210,18 +284,10 @@ static inline void *packet_map(odp_packet_hdr_t *pkt_hdr,
{
void *addr;
uint32_t len;
- int seg = 0;
+ int seg_id = 0;
int seg_count = pkt_hdr->buf_hdr.segcount;
- /* Special processing for references */
- while (offset >= pkt_hdr->frame_len && pkt_hdr->ref_hdr) {
- offset -= (pkt_hdr->frame_len - pkt_hdr->ref_offset);
- offset += (pkt_hdr->ref_hdr->frame_len - pkt_hdr->ref_len);
- pkt_hdr = pkt_hdr->ref_hdr;
- seg_count = pkt_hdr->buf_hdr.segcount;
- }
-
- if (odp_unlikely(offset > pkt_hdr->frame_len))
+ if (odp_unlikely(offset >= pkt_hdr->frame_len))
return NULL;
if (odp_likely(CONFIG_PACKET_MAX_SEGS == 1 || seg_count == 1)) {
@@ -229,10 +295,14 @@ static inline void *packet_map(odp_packet_hdr_t *pkt_hdr,
len = pkt_hdr->buf_hdr.seg[0].len - offset;
} else {
int i;
+ seg_entry_t *seg = NULL;
uint32_t seg_start = 0, seg_end = 0;
+ odp_packet_hdr_t *hdr = pkt_hdr;
+ uint8_t idx = 0;
for (i = 0; i < seg_count; i++) {
- seg_end += pkt_hdr->buf_hdr.seg[i].len;
+ seg = seg_entry_next(&hdr, &idx);
+ seg_end += seg->len;
if (odp_likely(offset < seg_end))
break;
@@ -240,16 +310,16 @@ static inline void *packet_map(odp_packet_hdr_t *pkt_hdr,
seg_start = seg_end;
}
- addr = pkt_hdr->buf_hdr.seg[i].data + (offset - seg_start);
- len = pkt_hdr->buf_hdr.seg[i].len - (offset - seg_start);
- seg = i;
+ addr = seg->data + (offset - seg_start);
+ len = seg->len - (offset - seg_start);
+ seg_id = i;
}
if (seg_len)
*seg_len = len;
if (seg_idx)
- *seg_idx = seg;
+ *seg_idx = seg_id;
return addr;
}
@@ -263,52 +333,83 @@ void packet_parse_reset(odp_packet_hdr_t *pkt_hdr)
pkt_hdr->p.l2_offset = 0;
pkt_hdr->p.l3_offset = ODP_PACKET_OFFSET_INVALID;
pkt_hdr->p.l4_offset = ODP_PACKET_OFFSET_INVALID;
+}
+
+static inline void link_segments(odp_packet_hdr_t *pkt_hdr[], int num)
+{
+ int cur, i;
+ odp_packet_hdr_t *hdr;
+ odp_packet_hdr_t *head = pkt_hdr[0];
- /* Ensure dummy pkt hdrs used in I/O recv classification are valid */
- pkt_hdr->ref_hdr = NULL;
+ cur = 0;
+
+ while (1) {
+ hdr = pkt_hdr[cur];
+
+ for (i = 0; i < CONFIG_PACKET_MAX_SEGS; i++) {
+ odp_buffer_hdr_t *buf_hdr;
+
+ buf_hdr = &pkt_hdr[cur]->buf_hdr;
+ hdr->buf_hdr.seg[i].hdr = buf_hdr;
+ hdr->buf_hdr.seg[i].data = buf_hdr->base_data;
+ hdr->buf_hdr.seg[i].len = BASE_LEN;
+ cur++;
+
+ if (cur == num) {
+ /* Last segment */
+ hdr->buf_hdr.num_seg = i + 1;
+ hdr->buf_hdr.next_seg = NULL;
+ head->buf_hdr.last_seg = &hdr->buf_hdr;
+ return;
+ }
+ }
+
+ hdr->buf_hdr.num_seg = CONFIG_PACKET_MAX_SEGS;
+ hdr->buf_hdr.next_seg = pkt_hdr[cur];
+ }
}
static inline void init_segments(odp_packet_hdr_t *pkt_hdr[], int num)
{
odp_packet_hdr_t *hdr;
- int i;
/* First segment is the packet descriptor */
hdr = pkt_hdr[0];
hdr->buf_hdr.seg[0].data = hdr->buf_hdr.base_data;
hdr->buf_hdr.seg[0].len = BASE_LEN;
- packet_ref_count_set(hdr, 1);
/* Link segments */
if (CONFIG_PACKET_MAX_SEGS != 1) {
hdr->buf_hdr.segcount = num;
+ /* Defaults for single segment packet */
+ hdr->buf_hdr.num_seg = 1;
+ hdr->buf_hdr.next_seg = NULL;
+ hdr->buf_hdr.last_seg = &hdr->buf_hdr;
+
if (odp_unlikely(num > 1)) {
- for (i = 1; i < num; i++) {
- odp_buffer_hdr_t *buf_hdr;
-
- packet_ref_count_set(pkt_hdr[i], 1);
- buf_hdr = &pkt_hdr[i]->buf_hdr;
- hdr->buf_hdr.seg[i].hdr = buf_hdr;
- hdr->buf_hdr.seg[i].data = buf_hdr->base_data;
- hdr->buf_hdr.seg[i].len = BASE_LEN;
- }
+ link_segments(pkt_hdr, num);
+
}
}
}
static inline void reset_seg(odp_packet_hdr_t *pkt_hdr, int first, int num)
{
- odp_buffer_hdr_t *hdr;
+ odp_packet_hdr_t *hdr = pkt_hdr;
void *base;
int i;
+ seg_entry_t *seg;
+ uint8_t idx;
- for (i = first; i < first + num; i++) {
- hdr = pkt_hdr->buf_hdr.seg[i].hdr;
- base = hdr->base_data;
- pkt_hdr->buf_hdr.seg[i].len = BASE_LEN;
- pkt_hdr->buf_hdr.seg[i].data = base;
+ seg_entry_find_idx(&hdr, &idx, first);
+
+ for (i = 0; i < num; i++) {
+ base = hdr->buf_hdr.base_data;
+ seg = seg_entry_next(&hdr, &idx);
+ seg->len = BASE_LEN;
+ seg->data = base;
}
}
@@ -336,31 +437,11 @@ static inline int num_segments(uint32_t len)
static inline void add_all_segs(odp_packet_hdr_t *to, odp_packet_hdr_t *from)
{
- int i;
- int n = to->buf_hdr.segcount;
- int num = from->buf_hdr.segcount;
+ odp_packet_hdr_t *last = to->buf_hdr.last_seg;
- for (i = 0; i < num; i++) {
- to->buf_hdr.seg[n + i].hdr = from->buf_hdr.seg[i].hdr;
- to->buf_hdr.seg[n + i].data = from->buf_hdr.seg[i].data;
- to->buf_hdr.seg[n + i].len = from->buf_hdr.seg[i].len;
- }
-
- to->buf_hdr.segcount = n + num;
-}
-
-static inline void copy_num_segs(odp_packet_hdr_t *to, odp_packet_hdr_t *from,
- int first, int num)
-{
- int i;
-
- for (i = 0; i < num; i++) {
- to->buf_hdr.seg[i].hdr = from->buf_hdr.seg[first + i].hdr;
- to->buf_hdr.seg[i].data = from->buf_hdr.seg[first + i].data;
- to->buf_hdr.seg[i].len = from->buf_hdr.seg[first + i].len;
- }
-
- to->buf_hdr.segcount = num;
+ last->buf_hdr.next_seg = from;
+ to->buf_hdr.last_seg = from->buf_hdr.last_seg;
+ to->buf_hdr.segcount += from->buf_hdr.segcount;
}
static inline odp_packet_hdr_t *alloc_segments(pool_t *pool, int num)
@@ -406,97 +487,257 @@ static inline odp_packet_hdr_t *add_segments(odp_packet_hdr_t *pkt_hdr,
new_hdr->buf_hdr.seg[0].len = seg_len;
packet_seg_copy_md(new_hdr, pkt_hdr);
- new_hdr->frame_len = pkt_hdr->frame_len + len;
- new_hdr->unshared_len = pkt_hdr->unshared_len + len;
- new_hdr->headroom = pool->headroom + offset;
- new_hdr->tailroom = pkt_hdr->tailroom;
+ new_hdr->frame_len = pkt_hdr->frame_len + len;
+ new_hdr->headroom = pool->headroom + offset;
+ new_hdr->tailroom = pkt_hdr->tailroom;
+ new_hdr->shared_len = pkt_hdr->shared_len;
pkt_hdr = new_hdr;
} else {
- int last;
+ seg_entry_t *last_seg;
/* add into the tail */
add_all_segs(pkt_hdr, new_hdr);
/* adjust last segment length */
- last = packet_last_seg(pkt_hdr);
- pkt_hdr->buf_hdr.seg[last].len = seg_len;
+ last_seg = seg_entry_last(pkt_hdr);
+ last_seg->len = seg_len;
- pkt_hdr->frame_len += len;
- pkt_hdr->unshared_len += len;
- pkt_hdr->tailroom = pool->tailroom + offset;
+ pkt_hdr->frame_len += len;
+ pkt_hdr->tailroom = pool->tailroom + offset;
}
return pkt_hdr;
}
-static inline void free_bufs(odp_packet_hdr_t *pkt_hdr, int first, int num)
+static inline int seg_is_link(void *hdr)
{
- int i, nfree;
- odp_buffer_hdr_t *buf_hdr[num];
+ odp_packet_hdr_t *pkt_hdr = hdr;
- for (i = 0, nfree = 0; i < num; i++) {
- odp_packet_hdr_t *hdr = pkt_hdr->buf_hdr.seg[first + i].hdr;
+ return pkt_hdr != pkt_hdr->buf_hdr.seg[0].hdr;
+}
+
+static inline void buffer_ref_inc(odp_buffer_hdr_t *buf_hdr)
+{
+ uint32_t ref_cnt = odp_atomic_load_u32(&buf_hdr->ref_cnt);
- if (packet_ref_count(hdr) == 1 || packet_ref_dec(hdr) == 1) {
- ODP_ASSERT((packet_ref_count_set(hdr, 0), 1));
- buf_hdr[nfree++] = &hdr->buf_hdr;
+ /* First count increment after alloc */
+ if (odp_likely(ref_cnt) == 0)
+ odp_atomic_store_u32(&buf_hdr->ref_cnt, 2);
+ else
+ odp_atomic_inc_u32(&buf_hdr->ref_cnt);
+}
+
+static inline uint32_t buffer_ref_dec(odp_buffer_hdr_t *buf_hdr)
+{
+ return odp_atomic_fetch_dec_u32(&buf_hdr->ref_cnt);
+}
+
+static inline uint32_t buffer_ref(odp_buffer_hdr_t *buf_hdr)
+{
+ return odp_atomic_load_u32(&buf_hdr->ref_cnt);
+}
+
+static inline int is_multi_ref(uint32_t ref_cnt)
+{
+ return (ref_cnt > 1);
+}
+
+static inline void packet_ref_inc(odp_packet_hdr_t *pkt_hdr)
+{
+ seg_entry_t *seg;
+ int i;
+ int seg_count = pkt_hdr->buf_hdr.segcount;
+ odp_packet_hdr_t *hdr = pkt_hdr;
+ uint8_t idx = 0;
+
+ for (i = 0; i < seg_count; i++) {
+ seg = seg_entry_next(&hdr, &idx);
+ buffer_ref_inc(seg->hdr);
+ }
+}
+
+static inline void packet_free_multi(odp_buffer_hdr_t *hdr[], int num)
+{
+ int i;
+ uint32_t ref_cnt;
+ int num_ref = 0;
+
+ for (i = 0; i < num; i++) {
+ /* Zero when reference API has not been used */
+ ref_cnt = buffer_ref(hdr[i]);
+
+ if (odp_unlikely(ref_cnt)) {
+ ref_cnt = buffer_ref_dec(hdr[i]);
+
+ if (is_multi_ref(ref_cnt)) {
+ num_ref++;
+ continue;
+ }
+ }
+
+ /* Reset link header back to normal header */
+ if (odp_unlikely(seg_is_link(hdr[i])))
+ hdr[i]->seg[0].hdr = hdr[i];
+
+ /* Skip references and pack to be freed headers to array head */
+ if (odp_unlikely(num_ref))
+ hdr[i - num_ref] = hdr[i];
+
+ }
+
+ num -= num_ref;
+
+ if (odp_likely(num))
+ buffer_free_multi(hdr, num);
+}
+
+static inline void free_all_segments(odp_packet_hdr_t *pkt_hdr, int num)
+{
+ int i;
+ odp_buffer_hdr_t *buf_hdr[num + 1];
+
+ if (odp_likely(pkt_hdr->buf_hdr.num_seg == num)) {
+ for (i = 0; i < num; i++)
+ buf_hdr[i] = pkt_hdr->buf_hdr.seg[i].hdr;
+
+ if (odp_unlikely(seg_is_link(pkt_hdr))) {
+ buf_hdr[num] = &pkt_hdr->buf_hdr;
+ num++;
}
+ } else {
+ seg_entry_t *seg;
+ odp_buffer_hdr_t *link_hdr[num];
+ uint8_t idx = 0;
+ int links = 0;
+
+ for (i = 0; i < num; i++) {
+ /* Free also link headers */
+ if (odp_unlikely(idx == 0 && seg_is_link(pkt_hdr))) {
+ link_hdr[links] = &pkt_hdr->buf_hdr;
+ links++;
+ }
+
+ seg = seg_entry_next(&pkt_hdr, &idx);
+ buf_hdr[i] = seg->hdr;
+ }
+
+ if (odp_unlikely(links))
+ packet_free_multi(link_hdr, links);
}
- if (nfree > 0)
- buffer_free_multi(buf_hdr, nfree);
+ packet_free_multi(buf_hdr, num);
}
static inline odp_packet_hdr_t *free_segments(odp_packet_hdr_t *pkt_hdr,
int num, uint32_t free_len,
uint32_t pull_len, int head)
{
+ seg_entry_t *seg;
+ int i;
int num_remain = pkt_hdr->buf_hdr.segcount - num;
+ odp_packet_hdr_t *hdr = pkt_hdr;
+ odp_packet_hdr_t *last_hdr = pkt_hdr->buf_hdr.last_seg;
+ uint8_t idx;
+ uint8_t num_seg;
+ odp_buffer_hdr_t *buf_hdr[num];
+ odp_buffer_hdr_t *link_hdr[num];
+ odp_packet_hdr_t *tmp_hdr;
+ int links = 0;
if (head) {
odp_packet_hdr_t *new_hdr;
- int i, nfree;
- odp_buffer_hdr_t *buf_hdr[num];
- for (i = 0, nfree = 0; i < num; i++) {
- new_hdr = pkt_hdr->buf_hdr.seg[i].hdr;
+ idx = 0;
+ for (i = 0; i < num; i++) {
+ tmp_hdr = hdr;
+ seg = seg_entry_next(&hdr, &idx);
+ buf_hdr[i] = seg->hdr;
- if (packet_ref_count(new_hdr) == 1 ||
- packet_ref_dec(new_hdr) == 1) {
- ODP_ASSERT((packet_ref_count_set(new_hdr, 0),
- 1));
- buf_hdr[nfree++] = &new_hdr->buf_hdr;
+ /* Free link headers, if those become empty */
+ if (odp_unlikely(idx == 0 && seg_is_link(tmp_hdr))) {
+ link_hdr[links] = &tmp_hdr->buf_hdr;
+ links++;
}
}
- /* First remaining segment is the new packet descriptor */
- new_hdr = pkt_hdr->buf_hdr.seg[num].hdr;
+ /* The first remaining header is the new packet descriptor.
+ * Copy remaining segments from the last to-be-removed header
+ * to the new header. */
+ new_hdr = hdr->buf_hdr.seg[idx].hdr;
+ num_seg = hdr->buf_hdr.num_seg - idx;
+
+ new_hdr->buf_hdr.next_seg = hdr->buf_hdr.next_seg;
+
+ if (hdr == last_hdr)
+ new_hdr->buf_hdr.last_seg = new_hdr;
+ else
+ new_hdr->buf_hdr.last_seg = last_hdr;
+
+ new_hdr->buf_hdr.num_seg = num_seg;
+ new_hdr->buf_hdr.segcount = num_remain;
+
+ for (i = 0; i < num_seg; i++) {
+ seg = seg_entry_next(&hdr, &idx);
+ new_hdr->buf_hdr.seg[i] = *seg;
+ }
- copy_num_segs(new_hdr, pkt_hdr, num, num_remain);
packet_seg_copy_md(new_hdr, pkt_hdr);
/* Tailroom not changed */
- new_hdr->tailroom = pkt_hdr->tailroom;
- new_hdr->headroom = seg_headroom(new_hdr, 0);
- new_hdr->frame_len = pkt_hdr->frame_len - free_len;
- new_hdr->unshared_len = pkt_hdr->unshared_len - free_len;
+ new_hdr->tailroom = pkt_hdr->tailroom;
+
+ /* Link header does not have headroom */
+ if (seg_is_link(new_hdr))
+ new_hdr->headroom = 0;
+ else
+ new_hdr->headroom = seg_headroom(new_hdr, 0);
+
+ new_hdr->frame_len = pkt_hdr->frame_len - free_len;
+ new_hdr->shared_len = pkt_hdr->shared_len;
pull_head(new_hdr, pull_len);
pkt_hdr = new_hdr;
- if (nfree > 0)
- buffer_free_multi(buf_hdr, nfree);
+ if (odp_unlikely(links))
+ packet_free_multi(link_hdr, links);
+
+ packet_free_multi(buf_hdr, num);
} else {
- /* Free last 'num' bufs */
- free_bufs(pkt_hdr, num_remain, num);
+ /* Free last 'num' bufs.
+ * First, find the last remaining header. */
+ seg_entry_find_idx(&hdr, &idx, num_remain - 1);
+ last_hdr = hdr;
+ num_seg = idx + 1;
+
+ seg_entry_next(&hdr, &idx);
+
+ for (i = 0; i < num; i++) {
+ tmp_hdr = hdr;
+ seg = seg_entry_next(&hdr, &idx);
+ buf_hdr[i] = seg->hdr;
+
+ /* Free link headers, if those become empty */
+ if (odp_unlikely(idx == 0 && seg_is_link(tmp_hdr))) {
+ link_hdr[links] = &tmp_hdr->buf_hdr;
+ links++;
+ }
+ }
+
+ if (odp_unlikely(links))
+ packet_free_multi(link_hdr, links);
+
+ packet_free_multi(buf_hdr, num);
/* Head segment remains, no need to copy or update majority
* of the metadata. */
+ last_hdr->buf_hdr.num_seg = num_seg;
+ last_hdr->buf_hdr.next_seg = NULL;
+
+ pkt_hdr->buf_hdr.last_seg = last_hdr;
pkt_hdr->buf_hdr.segcount = num_remain;
pkt_hdr->frame_len -= free_len;
- pkt_hdr->unshared_len -= free_len;
pkt_hdr->tailroom = seg_tailroom(pkt_hdr, num_remain - 1);
pull_tail(pkt_hdr, pull_len);
@@ -603,80 +844,59 @@ int odp_packet_alloc_multi(odp_pool_t pool_hdl, uint32_t len,
return num;
}
-static inline void packet_free(odp_packet_hdr_t *pkt_hdr)
+void odp_packet_free(odp_packet_t pkt)
{
- odp_packet_hdr_t *ref_hdr;
- odp_buffer_hdr_t *buf_hdr;
- uint32_t ref_count;
- int num_seg;
-
- do {
- buf_hdr = &pkt_hdr->buf_hdr;
- ref_count = packet_ref_count(pkt_hdr);
- num_seg = pkt_hdr->buf_hdr.segcount;
- ref_hdr = pkt_hdr->ref_hdr;
- ODP_ASSERT(ref_count >= 1);
-
- if (odp_likely((CONFIG_PACKET_MAX_SEGS == 1 || num_seg == 1) &&
- ref_count == 1)) {
- ODP_ASSERT((packet_ref_count_set(pkt_hdr, 0), 1));
- buffer_free_multi(&buf_hdr, 1);
- } else {
- free_bufs(pkt_hdr, 0, num_seg);
- }
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+ int num_seg = pkt_hdr->buf_hdr.segcount;
- pkt_hdr = ref_hdr;
- } while (pkt_hdr);
-}
+ if (odp_likely(CONFIG_PACKET_MAX_SEGS == 1 || num_seg == 1)) {
+ odp_buffer_hdr_t *buf_hdr[2];
+ int num = 1;
-void odp_packet_free(odp_packet_t pkt)
-{
- packet_free(packet_hdr(pkt));
+ buf_hdr[0] = &pkt_hdr->buf_hdr;
+
+ if (odp_unlikely(seg_is_link(pkt_hdr))) {
+ num = 2;
+ buf_hdr[1] = pkt_hdr->buf_hdr.seg[0].hdr;
+ }
+
+ packet_free_multi(buf_hdr, num);
+ } else {
+ free_all_segments(pkt_hdr, num_seg);
+ }
}
void odp_packet_free_multi(const odp_packet_t pkt[], int num)
{
- odp_packet_hdr_t *pkt_hdr, *ref_hdr, *hdr;
- int nbufs = num * CONFIG_PACKET_MAX_SEGS * 2;
- odp_buffer_hdr_t *buf_hdr[nbufs];
- int num_seg;
- int i, j;
- uint32_t ref_count;
- int nfree = 0;
+ odp_buffer_hdr_t *buf_hdr[num];
+ odp_buffer_hdr_t *buf_hdr2[num];
+ int i;
+ int links = 0;
+ int num_freed = 0;
for (i = 0; i < num; i++) {
- pkt_hdr = packet_hdr(pkt[i]);
-
- do {
- num_seg = pkt_hdr->buf_hdr.segcount;
- ref_hdr = pkt_hdr->ref_hdr;
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt[i]);
+ int num_seg = pkt_hdr->buf_hdr.segcount;
- /* Make sure we have enough space for this pkt's segs */
- if (nfree + num_seg > nbufs) {
- buffer_free_multi(buf_hdr, nfree);
- nfree = 0;
- }
+ if (odp_unlikely(num_seg > 1)) {
+ free_all_segments(pkt_hdr, num_seg);
+ num_freed++;
+ continue;
+ }
- for (j = 0; j < num_seg; j++) {
- hdr = pkt_hdr->buf_hdr.seg[j].hdr;
- ref_count = packet_ref_count(hdr);
- ODP_ASSERT(ref_count >= 1);
-
- if (ref_count == 1 ||
- packet_ref_dec(hdr) == 1) {
- ODP_ASSERT
- ((packet_ref_count_set(hdr, 0),
- 1));
- buf_hdr[nfree++] = &hdr->buf_hdr;
- }
- }
+ if (odp_unlikely(seg_is_link(pkt_hdr))) {
+ buf_hdr2[links] = pkt_hdr->buf_hdr.seg[0].hdr;
+ links++;
+ }
- pkt_hdr = ref_hdr;
- } while (pkt_hdr);
+ buf_hdr[i - num_freed] = &pkt_hdr->buf_hdr;
}
- if (nfree > 0)
- buffer_free_multi(buf_hdr, nfree);
+ if (odp_unlikely(links))
+ packet_free_multi(buf_hdr2, links);
+
+ if (odp_likely(num - num_freed))
+ packet_free_multi(buf_hdr, num - num_freed);
}
int odp_packet_reset(odp_packet_t pkt, uint32_t len)
@@ -688,9 +908,6 @@ int odp_packet_reset(odp_packet_t pkt, uint32_t len)
if (odp_unlikely(len > (pool->max_seg_len * num)))
return -1;
- if (pkt_hdr->ref_hdr)
- packet_free(pkt_hdr->ref_hdr);
-
reset_seg(pkt_hdr, 0, num);
packet_init(pkt_hdr, len);
@@ -724,47 +941,13 @@ odp_event_t odp_packet_to_event(odp_packet_t pkt)
uint32_t odp_packet_buf_len(odp_packet_t pkt)
{
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- uint32_t buf_len = 0;
-
- do {
- buf_len += pkt_hdr->buf_hdr.size * pkt_hdr->buf_hdr.segcount;
- pkt_hdr = pkt_hdr->ref_hdr;
- } while (pkt_hdr);
-
- return buf_len;
-}
-
-uint32_t odp_packet_unshared_len(odp_packet_t pkt)
-{
- odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- uint32_t pkt_len = 0, offset = 0;
-
- if (packet_ref_count(pkt_hdr) == 1)
- pkt_hdr->unshared_len = pkt_hdr->frame_len;
-
- do {
- if (packet_ref_count(pkt_hdr) > 1) {
- if (offset == 0)
- pkt_len += pkt_hdr->unshared_len;
- break;
- }
-
- pkt_len += pkt_hdr->frame_len - offset;
- offset = pkt_hdr->ref_offset;
-
- if (pkt_hdr->ref_hdr)
- offset += (pkt_hdr->ref_hdr->frame_len -
- pkt_hdr->ref_len);
-
- pkt_hdr = pkt_hdr->ref_hdr;
- } while (pkt_hdr);
- return pkt_len;
+ return pkt_hdr->buf_hdr.size * pkt_hdr->buf_hdr.segcount;
}
void *odp_packet_tail(odp_packet_t pkt)
{
- odp_packet_hdr_t *pkt_hdr = packet_last_hdr(pkt, NULL);
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
return packet_tail(pkt_hdr);
}
@@ -780,166 +963,6 @@ void *odp_packet_push_head(odp_packet_t pkt, uint32_t len)
return packet_data(pkt_hdr);
}
-static inline uint32_t pack_seg_head(odp_packet_hdr_t *pkt_hdr, int seg)
-{
- odp_buffer_hdr_t *hdr = pkt_hdr->buf_hdr.seg[seg].hdr;
- uint32_t len = pkt_hdr->buf_hdr.seg[seg].len;
- uint8_t *src = pkt_hdr->buf_hdr.seg[seg].data;
- uint8_t *dst = hdr->base_data;
-
- if (dst != src) {
- memmove(dst, src, len);
- pkt_hdr->buf_hdr.seg[seg].data = dst;
- }
-
- return len;
-}
-
-static inline uint32_t pack_seg_tail(odp_packet_hdr_t *pkt_hdr, int seg)
-{
- odp_buffer_hdr_t *hdr = pkt_hdr->buf_hdr.seg[seg].hdr;
- uint32_t len = pkt_hdr->buf_hdr.seg[seg].len;
- uint8_t *src = pkt_hdr->buf_hdr.seg[seg].data;
- uint8_t *dst = hdr->base_data + BASE_LEN - len;
-
- if (dst != src) {
- memmove(dst, src, len);
- pkt_hdr->buf_hdr.seg[seg].data = dst;
- }
-
- return len;
-}
-
-static inline uint32_t fill_seg_head(odp_packet_hdr_t *pkt_hdr, int dst_seg,
- int src_seg, uint32_t max_len)
-{
- uint32_t len = pkt_hdr->buf_hdr.seg[src_seg].len;
- uint8_t *src = pkt_hdr->buf_hdr.seg[src_seg].data;
- uint32_t offset = pkt_hdr->buf_hdr.seg[dst_seg].len;
- uint8_t *dst = pkt_hdr->buf_hdr.seg[dst_seg].data + offset;
-
- if (len > max_len)
- len = max_len;
-
- memmove(dst, src, len);
-
- pkt_hdr->buf_hdr.seg[dst_seg].len += len;
- pkt_hdr->buf_hdr.seg[src_seg].len -= len;
- pkt_hdr->buf_hdr.seg[src_seg].data += len;
-
- if (pkt_hdr->buf_hdr.seg[src_seg].len == 0) {
- odp_buffer_hdr_t *hdr = pkt_hdr->buf_hdr.seg[src_seg].hdr;
-
- pkt_hdr->buf_hdr.seg[src_seg].data = hdr->base_data;
- }
-
- return len;
-}
-
-static inline uint32_t fill_seg_tail(odp_packet_hdr_t *pkt_hdr, int dst_seg,
- int src_seg, uint32_t max_len)
-{
- uint32_t src_len = pkt_hdr->buf_hdr.seg[src_seg].len;
- uint8_t *src = pkt_hdr->buf_hdr.seg[src_seg].data;
- uint8_t *dst = pkt_hdr->buf_hdr.seg[dst_seg].data;
- uint32_t len = src_len;
-
- if (len > max_len)
- len = max_len;
-
- src += src_len - len;
- dst -= len;
-
- memmove(dst, src, len);
-
- pkt_hdr->buf_hdr.seg[dst_seg].data -= len;
- pkt_hdr->buf_hdr.seg[dst_seg].len += len;
- pkt_hdr->buf_hdr.seg[src_seg].len -= len;
-
- if (pkt_hdr->buf_hdr.seg[src_seg].len == 0) {
- odp_buffer_hdr_t *hdr = pkt_hdr->buf_hdr.seg[src_seg].hdr;
-
- pkt_hdr->buf_hdr.seg[src_seg].data = hdr->base_data;
- }
-
- return len;
-}
-
-static inline int move_data_to_head(odp_packet_hdr_t *pkt_hdr, int segs)
-{
- int dst_seg, src_seg;
- uint32_t len, free_len;
- uint32_t moved = 0;
-
- for (dst_seg = 0; dst_seg < segs; dst_seg++) {
- len = pack_seg_head(pkt_hdr, dst_seg);
- moved += len;
-
- if (len == BASE_LEN)
- continue;
-
- free_len = BASE_LEN - len;
-
- for (src_seg = dst_seg + 1; CONFIG_PACKET_MAX_SEGS > 1 &&
- src_seg < segs; src_seg++) {
- len = fill_seg_head(pkt_hdr, dst_seg, src_seg,
- free_len);
- moved += len;
-
- if (len == free_len) {
- /* dst seg is full */
- break;
- }
-
- /* src seg is empty */
- free_len -= len;
- }
-
- if (moved == pkt_hdr->frame_len)
- break;
- }
-
- /* last segment which have data */
- return dst_seg;
-}
-
-static inline int move_data_to_tail(odp_packet_hdr_t *pkt_hdr, int segs)
-{
- int dst_seg, src_seg;
- uint32_t len, free_len;
- uint32_t moved = 0;
-
- for (dst_seg = segs - 1; dst_seg >= 0; dst_seg--) {
- len = pack_seg_tail(pkt_hdr, dst_seg);
- moved += len;
-
- if (len == BASE_LEN)
- continue;
-
- free_len = BASE_LEN - len;
-
- for (src_seg = dst_seg - 1; src_seg >= 0; src_seg--) {
- len = fill_seg_tail(pkt_hdr, dst_seg, src_seg,
- free_len);
- moved += len;
-
- if (len == free_len) {
- /* dst seg is full */
- break;
- }
-
- /* src seg is empty */
- free_len -= len;
- }
-
- if (moved == pkt_hdr->frame_len)
- break;
- }
-
- /* first segment which have data */
- return dst_seg;
-}
-
int odp_packet_extend_head(odp_packet_t *pkt, uint32_t len,
void **data_ptr, uint32_t *seg_len)
{
@@ -951,109 +974,32 @@ int odp_packet_extend_head(odp_packet_t *pkt, uint32_t len,
if (len > headroom) {
pool_t *pool = pkt_hdr->buf_hdr.pool_ptr;
int num;
- int segs;
+ void *ptr;
if (odp_unlikely((frame_len + len) > pool->max_len))
return -1;
- num = num_segments(len - headroom);
- segs = pkt_hdr->buf_hdr.segcount;
-
- if (odp_unlikely((segs + num) > CONFIG_PACKET_MAX_SEGS)) {
- /* Corner case: fail request if packet has
- * references since we cannot shuffle segments
- * since another thread may be accessing them
- * concurrently */
- if (packet_ref_count(pkt_hdr) > 1)
- return -1;
-
- /* Cannot directly add new segments */
- odp_packet_hdr_t *new_hdr;
- int new_segs = 0;
- int free_segs = 0;
- uint32_t offset;
-
- num = num_segments(frame_len + len);
-
- if (num > segs) {
- /* Allocate additional segments */
- new_segs = num - segs;
- new_hdr = alloc_segments(pool, new_segs);
+ num = num_segments(len - headroom);
+ push_head(pkt_hdr, headroom);
+ ptr = add_segments(pkt_hdr, pool, len - headroom, num, 1);
- if (new_hdr == NULL)
- return -1;
-
- } else if (num < segs) {
- free_segs = segs - num;
- }
-
- /* Pack all data to packet tail */
- move_data_to_tail(pkt_hdr, segs);
- reset_seg(pkt_hdr, 0, segs);
-
- if (new_segs) {
- add_all_segs(new_hdr, pkt_hdr);
- packet_seg_copy_md(new_hdr, pkt_hdr);
- segs += new_segs;
-
- pkt_hdr = new_hdr;
- *pkt = packet_handle(pkt_hdr);
- } else if (CONFIG_PACKET_MAX_SEGS > 1 && free_segs) {
- new_hdr = pkt_hdr->buf_hdr.seg[free_segs].hdr;
- packet_seg_copy_md(new_hdr, pkt_hdr);
-
- /* Free extra segs */
- free_bufs(pkt_hdr, 0, free_segs);
-
- segs -= free_segs;
- pkt_hdr = new_hdr;
- *pkt = packet_handle(pkt_hdr);
- }
-
- frame_len += len;
- offset = (segs * BASE_LEN) - frame_len;
-
- pkt_hdr->buf_hdr.seg[0].data += offset;
- pkt_hdr->buf_hdr.seg[0].len -= offset;
-
- pkt_hdr->buf_hdr.segcount = segs;
- pkt_hdr->frame_len = frame_len;
- pkt_hdr->unshared_len = frame_len;
- pkt_hdr->headroom = offset + pool->headroom;
- pkt_hdr->tailroom = pool->tailroom;
-
- /* Data was moved */
- ret = 1;
- } else {
- void *ptr;
-
- push_head(pkt_hdr, headroom);
- ptr = add_segments(pkt_hdr, pool, len - headroom,
- num, 1);
-
- if (ptr == NULL) {
- /* segment alloc failed, rollback changes */
- pull_head(pkt_hdr, headroom);
- return -1;
- }
-
- *pkt = packet_handle(ptr);
- pkt_hdr = ptr;
+ if (ptr == NULL) {
+ /* segment alloc failed, rollback changes */
+ pull_head(pkt_hdr, headroom);
+ return -1;
}
+
+ *pkt = packet_handle(ptr);
+ pkt_hdr = ptr;
} else {
push_head(pkt_hdr, len);
}
- if (data_ptr || seg_len) {
- uint32_t seg_ln = 0;
- void *data = packet_map(pkt_hdr, 0, &seg_ln, NULL);
-
- if (data_ptr)
- *data_ptr = data;
+ if (data_ptr)
+ *data_ptr = packet_data(pkt_hdr);
- if (seg_len)
- *seg_len = seg_ln;
- }
+ if (seg_len)
+ *seg_len = packet_first_seg_len(pkt_hdr);
return ret;
}
@@ -1065,8 +1011,6 @@ void *odp_packet_pull_head(odp_packet_t pkt, uint32_t len)
if (len > pkt_hdr->frame_len)
return NULL;
- ODP_ASSERT(len <= pkt_hdr->unshared_len);
-
pull_head(pkt_hdr, len);
return packet_data(pkt_hdr);
}
@@ -1074,35 +1018,15 @@ void *odp_packet_pull_head(odp_packet_t pkt, uint32_t len)
int odp_packet_trunc_head(odp_packet_t *pkt, uint32_t len,
void **data_ptr, uint32_t *seg_len_out)
{
- odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt), *nxt_hdr;
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
uint32_t seg_len = packet_first_seg_len(pkt_hdr);
- int ret = 0;
- if (len > packet_len(pkt_hdr))
+ if (len > pkt_hdr->frame_len)
return -1;
- ODP_ASSERT(len <= odp_packet_unshared_len(*pkt));
-
- /* Special processing for references */
- while (len >= pkt_hdr->frame_len && pkt_hdr->ref_hdr) {
- ODP_ASSERT(packet_ref_count(pkt_hdr) == 1);
- nxt_hdr = pkt_hdr->ref_hdr;
- len -= pkt_hdr->frame_len;
- len += pkt_hdr->ref_offset +
- (nxt_hdr->frame_len - pkt_hdr->ref_len);
- pkt_hdr->ref_hdr = NULL;
- packet_free(pkt_hdr);
- pkt_hdr = nxt_hdr;
- seg_len = packet_first_seg_len(pkt_hdr);
- *pkt = packet_handle(pkt_hdr);
- ret = 1;
- }
-
- if (CONFIG_PACKET_MAX_SEGS == 1 ||
- len < seg_len ||
- pkt_hdr->buf_hdr.segcount == 1) {
+ if (len < seg_len) {
pull_head(pkt_hdr, len);
- } else {
+ } else if (CONFIG_PACKET_MAX_SEGS != 1) {
int num = 0;
uint32_t pull_len = 0;
@@ -1117,29 +1041,23 @@ int odp_packet_trunc_head(odp_packet_t *pkt, uint32_t len,
*pkt = packet_handle(pkt_hdr);
}
- if (data_ptr || seg_len_out) {
- void *data_head = packet_map(pkt_hdr, 0, &seg_len, NULL);
-
- if (data_ptr)
- *data_ptr = data_head;
+ if (data_ptr)
+ *data_ptr = packet_data(pkt_hdr);
- if (seg_len_out)
- *seg_len_out = seg_len;
- }
+ if (seg_len_out)
+ *seg_len_out = packet_first_seg_len(pkt_hdr);
- return ret;
+ return 0;
}
void *odp_packet_push_tail(odp_packet_t pkt, uint32_t len)
{
- odp_packet_hdr_t *pkt_hdr = packet_last_hdr(pkt, NULL);
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
void *old_tail;
if (len > pkt_hdr->tailroom)
return NULL;
- ODP_ASSERT(packet_ref_count(pkt_hdr) == 1);
-
old_tail = packet_tail(pkt_hdr);
push_tail(pkt_hdr, len);
@@ -1149,86 +1067,28 @@ void *odp_packet_push_tail(odp_packet_t pkt, uint32_t len)
int odp_packet_extend_tail(odp_packet_t *pkt, uint32_t len,
void **data_ptr, uint32_t *seg_len_out)
{
- odp_packet_hdr_t *pkt_hdr = packet_last_hdr(*pkt, NULL);
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
uint32_t frame_len = pkt_hdr->frame_len;
uint32_t tailroom = pkt_hdr->tailroom;
uint32_t tail_off = frame_len;
int ret = 0;
- ODP_ASSERT(packet_ref_count(pkt_hdr) == 1);
-
if (len > tailroom) {
pool_t *pool = pkt_hdr->buf_hdr.pool_ptr;
int num;
- int segs;
+ void *ptr;
if (odp_unlikely((frame_len + len) > pool->max_len))
return -1;
- num = num_segments(len - tailroom);
- segs = pkt_hdr->buf_hdr.segcount;
-
- if (odp_unlikely((segs + num) > CONFIG_PACKET_MAX_SEGS)) {
- /* Cannot directly add new segments */
- odp_packet_hdr_t *new_hdr;
- int new_segs = 0;
- int free_segs = 0;
- uint32_t offset;
-
- num = num_segments(frame_len + len);
-
- if (num > segs) {
- /* Allocate additional segments */
- new_segs = num - segs;
- new_hdr = alloc_segments(pool, new_segs);
-
- if (new_hdr == NULL)
- return -1;
-
- } else if (num < segs) {
- free_segs = segs - num;
- }
-
- /* Pack all data to packet head */
- move_data_to_head(pkt_hdr, segs);
- reset_seg(pkt_hdr, 0, segs);
-
- if (new_segs) {
- /* Add new segs */
- add_all_segs(pkt_hdr, new_hdr);
- segs += new_segs;
- } else if (free_segs) {
- /* Free extra segs */
- free_bufs(pkt_hdr, segs - free_segs, free_segs);
-
- segs -= free_segs;
- }
-
- frame_len += len;
- offset = (segs * BASE_LEN) - frame_len;
-
- pkt_hdr->buf_hdr.seg[segs - 1].len -= offset;
-
- pkt_hdr->buf_hdr.segcount = segs;
- pkt_hdr->frame_len = frame_len;
- pkt_hdr->headroom = pool->headroom;
- pkt_hdr->tailroom = offset + pool->tailroom;
-
- /* Data was moved */
- ret = 1;
- } else {
- void *ptr;
+ num = num_segments(len - tailroom);
+ push_tail(pkt_hdr, tailroom);
+ ptr = add_segments(pkt_hdr, pool, len - tailroom, num, 0);
- push_tail(pkt_hdr, tailroom);
-
- ptr = add_segments(pkt_hdr, pool, len - tailroom,
- num, 0);
-
- if (ptr == NULL) {
- /* segment alloc failed, rollback changes */
- pull_tail(pkt_hdr, tailroom);
- return -1;
- }
+ if (ptr == NULL) {
+ /* segment alloc failed, rollback changes */
+ pull_tail(pkt_hdr, tailroom);
+ return -1;
}
} else {
push_tail(pkt_hdr, len);
@@ -1243,11 +1103,11 @@ int odp_packet_extend_tail(odp_packet_t *pkt, uint32_t len,
void *odp_packet_pull_tail(odp_packet_t pkt, uint32_t len)
{
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+ seg_entry_t *last_seg = seg_entry_last(pkt_hdr);
- if (len > packet_last_seg_len(pkt_hdr))
+ if (len > last_seg->len)
return NULL;
- ODP_ASSERT(packet_ref_count(pkt_hdr) == 1);
pull_tail(pkt_hdr, len);
return packet_tail(pkt_hdr);
@@ -1258,34 +1118,19 @@ int odp_packet_trunc_tail(odp_packet_t *pkt, uint32_t len,
{
int last;
uint32_t seg_len;
- uint32_t offset;
- odp_packet_hdr_t *first_hdr = packet_hdr(*pkt);
- odp_packet_hdr_t *pkt_hdr, *prev_hdr;
+ seg_entry_t *last_seg;
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
- if (len > packet_len(first_hdr))
+ if (len > pkt_hdr->frame_len)
return -1;
- pkt_hdr = packet_last_hdr(*pkt, &offset);
-
- /* Special processing for references */
- while (len >= pkt_hdr->frame_len - offset && first_hdr->ref_hdr) {
- len -= (pkt_hdr->frame_len - offset);
- prev_hdr = packet_prev_hdr(first_hdr, pkt_hdr, &offset);
- ODP_ASSERT(packet_ref_count(prev_hdr) == 1);
- prev_hdr->ref_hdr = NULL;
- packet_free(pkt_hdr);
- pkt_hdr = prev_hdr;
- }
-
- ODP_ASSERT(packet_ref_count(pkt_hdr) == 1);
- last = packet_last_seg(pkt_hdr);
- seg_len = packet_seg_len(pkt_hdr, last);
+ last = packet_last_seg(pkt_hdr);
+ last_seg = seg_entry_last(pkt_hdr);
+ seg_len = last_seg->len;
- if (CONFIG_PACKET_MAX_SEGS == 1 ||
- len < seg_len ||
- pkt_hdr->buf_hdr.segcount == 1) {
+ if (len < seg_len) {
pull_tail(pkt_hdr, len);
- } else {
+ } else if (CONFIG_PACKET_MAX_SEGS != 1) {
int num = 0;
uint32_t pull_len = 0;
@@ -1432,46 +1277,6 @@ void odp_packet_ts_set(odp_packet_t pkt, odp_time_t timestamp)
pkt_hdr->p.input_flags.timestamp = 1;
}
-int odp_packet_num_segs(odp_packet_t pkt)
-{
- odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- uint32_t segcount = 0, i;
- uint32_t seg_offset = 0, offset;
-
- do {
- segcount += pkt_hdr->buf_hdr.segcount - seg_offset;
- offset = pkt_hdr->ref_offset;
- pkt_hdr = pkt_hdr->ref_hdr;
- if (pkt_hdr) {
- for (i = 0, seg_offset = 0;
- i < pkt_hdr->buf_hdr.segcount;
- i++, seg_offset++) {
- if (offset < pkt_hdr->buf_hdr.seg[i].len)
- break;
- offset -= pkt_hdr->buf_hdr.seg[i].len;
- }
- }
- } while (pkt_hdr);
-
- return segcount;
-}
-
-odp_packet_seg_t odp_packet_last_seg(odp_packet_t pkt)
-{
- return _odp_packet_seg_from_ndx(odp_packet_num_segs(pkt) - 1);
-}
-
-odp_packet_seg_t odp_packet_next_seg(odp_packet_t pkt, odp_packet_seg_t seg)
-{
- odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
-
- if (odp_unlikely(_odp_packet_seg_to_ndx(seg) >=
- packet_last_seg(pkt_hdr)))
- return ODP_PACKET_SEG_INVALID;
-
- return seg + 1;
-}
-
/*
*
* Segment level
@@ -1482,53 +1287,23 @@ odp_packet_seg_t odp_packet_next_seg(odp_packet_t pkt, odp_packet_seg_t seg)
void *odp_packet_seg_data(odp_packet_t pkt, odp_packet_seg_t seg)
{
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- uint32_t seg_offset = 0, offset = 0, i;
- uint32_t seg_ndx = _odp_packet_seg_to_ndx(seg);
-
- while (seg_ndx >= pkt_hdr->buf_hdr.segcount - seg_offset &&
- pkt_hdr->ref_hdr) {
- seg_ndx -= (pkt_hdr->buf_hdr.segcount - seg_offset);
- offset = pkt_hdr->ref_offset;
- pkt_hdr = pkt_hdr->ref_hdr;
- for (i = 0, seg_offset = 0;
- i < pkt_hdr->buf_hdr.segcount;
- i++, seg_offset++) {
- if (offset < pkt_hdr->buf_hdr.seg[i].len)
- break;
- offset -= pkt_hdr->buf_hdr.seg[i].len;
- }
- }
- if (odp_unlikely(seg_ndx + seg_offset >= pkt_hdr->buf_hdr.segcount))
+ if (odp_unlikely(_odp_packet_seg_to_ndx(seg) >=
+ pkt_hdr->buf_hdr.segcount))
return NULL;
- return packet_seg_data(pkt_hdr, seg_ndx + seg_offset) + offset;
+ return packet_seg_data(pkt_hdr, _odp_packet_seg_to_ndx(seg));
}
uint32_t odp_packet_seg_data_len(odp_packet_t pkt, odp_packet_seg_t seg)
{
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- uint32_t seg_offset = 0, offset = 0, i;
- uint32_t seg_ndx = _odp_packet_seg_to_ndx(seg);
-
- while (seg_ndx >= pkt_hdr->buf_hdr.segcount - seg_offset &&
- pkt_hdr->ref_hdr) {
- seg_ndx -= (pkt_hdr->buf_hdr.segcount - seg_offset);
- offset = pkt_hdr->ref_offset;
- pkt_hdr = pkt_hdr->ref_hdr;
- for (i = 0, seg_offset = 0;
- i < pkt_hdr->buf_hdr.segcount;
- i++, seg_offset++) {
- if (offset < pkt_hdr->buf_hdr.seg[i].len)
- break;
- offset -= pkt_hdr->buf_hdr.seg[i].len;
- }
- }
- if (odp_unlikely(seg_ndx + seg_offset >= pkt_hdr->buf_hdr.segcount))
+ if (odp_unlikely(_odp_packet_seg_to_ndx(seg) >=
+ pkt_hdr->buf_hdr.segcount))
return 0;
- return packet_seg_len(pkt_hdr, seg_ndx + seg_offset) - offset;
+ return packet_seg_len(pkt_hdr, _odp_packet_seg_to_ndx(seg));
}
/*
@@ -1549,8 +1324,6 @@ int odp_packet_add_data(odp_packet_t *pkt_ptr, uint32_t offset, uint32_t len)
if (offset > pktlen)
return -1;
- ODP_ASSERT(odp_packet_unshared_len(*pkt_ptr) >= offset);
-
newpkt = odp_packet_alloc(pool->pool_hdl, pktlen + len);
if (newpkt == ODP_PACKET_INVALID)
@@ -1574,15 +1347,13 @@ int odp_packet_rem_data(odp_packet_t *pkt_ptr, uint32_t offset, uint32_t len)
{
odp_packet_t pkt = *pkt_ptr;
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- uint32_t pktlen = packet_len(pkt_hdr);
+ uint32_t pktlen = pkt_hdr->frame_len;
pool_t *pool = pkt_hdr->buf_hdr.pool_ptr;
odp_packet_t newpkt;
- if (offset + len > pktlen)
+ if (offset > pktlen || offset + len > pktlen)
return -1;
- ODP_ASSERT(odp_packet_unshared_len(*pkt_ptr) >= offset + len);
-
newpkt = odp_packet_alloc(pool->pool_hdl, pktlen - len);
if (newpkt == ODP_PACKET_INVALID)
@@ -1616,8 +1387,6 @@ int odp_packet_align(odp_packet_t *pkt, uint32_t offset, uint32_t len,
if (align > ODP_CACHE_LINE_SIZE)
return -1;
- ODP_ASSERT(odp_packet_has_ref(*pkt) == 0);
-
if (seglen >= len) {
misalign = align <= 1 ? 0 :
ROUNDUP_ALIGN(uaddr, align) - uaddr;
@@ -1650,20 +1419,13 @@ int odp_packet_concat(odp_packet_t *dst, odp_packet_t src)
{
odp_packet_hdr_t *dst_hdr = packet_hdr(*dst);
odp_packet_hdr_t *src_hdr = packet_hdr(src);
- int dst_segs = dst_hdr->buf_hdr.segcount;
- int src_segs = src_hdr->buf_hdr.segcount;
pool_t *dst_pool = dst_hdr->buf_hdr.pool_ptr;
pool_t *src_pool = src_hdr->buf_hdr.pool_ptr;
uint32_t dst_len = dst_hdr->frame_len;
uint32_t src_len = src_hdr->frame_len;
- ODP_ASSERT(packet_ref_count(dst_hdr) == 1);
-
- /* Do a copy if resulting packet would be out of segments or packets
- * are from different pools or src is a reference. */
- if (odp_unlikely((dst_segs + src_segs) > CONFIG_PACKET_MAX_SEGS) ||
- odp_unlikely(dst_pool != src_pool) ||
- odp_unlikely(packet_ref_count(src_hdr) > 1)) {
+ /* Do a copy if packets are from different pools. */
+ if (odp_unlikely(dst_pool != src_pool)) {
if (odp_packet_extend_tail(dst, src_len, NULL, NULL) >= 0) {
(void)odp_packet_copy_from_pkt(*dst, dst_len,
src, 0, src_len);
@@ -1678,9 +1440,8 @@ int odp_packet_concat(odp_packet_t *dst, odp_packet_t src)
add_all_segs(dst_hdr, src_hdr);
- dst_hdr->frame_len = dst_len + src_len;
- dst_hdr->unshared_len = dst_len + src_len;
- dst_hdr->tailroom = src_hdr->tailroom;
+ dst_hdr->frame_len = dst_len + src_len;
+ dst_hdr->tailroom = src_hdr->tailroom;
/* Data was not moved in memory */
return 0;
@@ -1693,7 +1454,6 @@ int odp_packet_split(odp_packet_t *pkt, uint32_t len, odp_packet_t *tail)
if (len >= pktlen || tail == NULL)
return -1;
- ODP_ASSERT(odp_packet_unshared_len(*pkt) >= len);
*tail = odp_packet_copy_part(*pkt, len, pktlen - len,
odp_packet_pool(*pkt));
@@ -1704,109 +1464,6 @@ int odp_packet_split(odp_packet_t *pkt, uint32_t len, odp_packet_t *tail)
}
/*
- * References
- */
-
-static inline void packet_ref(odp_packet_hdr_t *pkt_hdr)
-{
- uint32_t i;
- odp_packet_hdr_t *hdr;
-
- do {
- for (i = 0; i < pkt_hdr->buf_hdr.segcount; i++) {
- hdr = pkt_hdr->buf_hdr.seg[i].hdr;
- packet_ref_inc(hdr);
- }
-
- pkt_hdr = pkt_hdr->ref_hdr;
- } while (pkt_hdr);
-}
-
-static inline odp_packet_t packet_splice(odp_packet_hdr_t *pkt_hdr,
- uint32_t offset,
- odp_packet_hdr_t *ref_hdr)
-{
- /* Catch attempted references to stale handles in debug builds */
- ODP_ASSERT(packet_ref_count(pkt_hdr) > 0);
-
- /* Splicing is from the last section of src pkt */
- while (ref_hdr->ref_hdr)
- ref_hdr = ref_hdr->ref_hdr;
-
- /* Find section where splice begins */
- while (offset >= pkt_hdr->frame_len && pkt_hdr->ref_hdr) {
- offset -= (pkt_hdr->frame_len - pkt_hdr->ref_offset);
- offset += (pkt_hdr->ref_hdr->frame_len - pkt_hdr->ref_len);
- pkt_hdr = pkt_hdr->ref_hdr;
- }
-
- ref_hdr->ref_hdr = pkt_hdr;
- ref_hdr->ref_offset = offset;
- ref_hdr->ref_len = pkt_hdr->frame_len;
-
- if (packet_ref_count(pkt_hdr) == 1 || offset < pkt_hdr->unshared_len)
- pkt_hdr->unshared_len = offset;
-
- packet_ref(pkt_hdr);
- return packet_handle(ref_hdr);
-}
-
-odp_packet_t odp_packet_ref_static(odp_packet_t pkt)
-{
- odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
-
- packet_ref(pkt_hdr);
- pkt_hdr->unshared_len = 0;
- return pkt;
-}
-
-odp_packet_t odp_packet_ref(odp_packet_t pkt, uint32_t offset)
-{
- odp_packet_t hdr;
- odp_packet_hdr_t *pkt_hdr;
-
- if (pkt == ODP_PACKET_INVALID)
- return ODP_PACKET_INVALID;
-
- pkt_hdr = packet_hdr(pkt);
- if (offset >= packet_len(pkt_hdr))
- return ODP_PACKET_INVALID;
-
- hdr = odp_packet_alloc(odp_packet_pool(pkt), 0);
-
- if (hdr == ODP_PACKET_INVALID)
- return ODP_PACKET_INVALID;
-
- return packet_splice(pkt_hdr, offset, packet_hdr(hdr));
-}
-
-odp_packet_t odp_packet_ref_pkt(odp_packet_t pkt, uint32_t offset,
- odp_packet_t hdr)
-{
- odp_packet_hdr_t *pkt_hdr;
-
- if (pkt == ODP_PACKET_INVALID ||
- hdr == ODP_PACKET_INVALID ||
- pkt == hdr)
- return ODP_PACKET_INVALID;
-
- ODP_ASSERT(odp_packet_has_ref(hdr) == 0);
-
- pkt_hdr = packet_hdr(pkt);
- if (offset >= packet_len(pkt_hdr))
- return ODP_PACKET_INVALID;
-
- return packet_splice(pkt_hdr, offset, packet_hdr(hdr));
-}
-
-int odp_packet_has_ref(odp_packet_t pkt)
-{
- odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
-
- return pkt_hdr->ref_hdr != NULL || packet_ref_count(pkt_hdr) > 1;
-}
-
-/*
*
* Copy
* ********************************************************
@@ -1815,7 +1472,8 @@ int odp_packet_has_ref(odp_packet_t pkt)
odp_packet_t odp_packet_copy(odp_packet_t pkt, odp_pool_t pool)
{
- uint32_t pktlen = odp_packet_len(pkt);
+ odp_packet_hdr_t *srchdr = packet_hdr(pkt);
+ uint32_t pktlen = srchdr->frame_len;
odp_packet_t newpkt = odp_packet_alloc(pool, pktlen);
if (newpkt != ODP_PACKET_INVALID) {
@@ -1854,7 +1512,7 @@ int odp_packet_copy_to_mem(odp_packet_t pkt, uint32_t offset,
uint8_t *dstaddr = (uint8_t *)dst;
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- if (offset + len > packet_len(pkt_hdr))
+ if (offset + len > pkt_hdr->frame_len)
return -1;
while (len > 0) {
@@ -1878,11 +1536,9 @@ int odp_packet_copy_from_mem(odp_packet_t pkt, uint32_t offset,
const uint8_t *srcaddr = (const uint8_t *)src;
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- if (offset + len > packet_len(pkt_hdr))
+ if (offset + len > pkt_hdr->frame_len)
return -1;
- ODP_ASSERT(odp_packet_unshared_len(pkt) >= offset + len);
-
while (len > 0) {
mapaddr = packet_map(pkt_hdr, offset, &seglen, NULL);
cpylen = len > seglen ? seglen : len;
@@ -1908,12 +1564,10 @@ int odp_packet_copy_from_pkt(odp_packet_t dst, uint32_t dst_offset,
uint32_t src_seglen = 0; /* GCC */
int overlap;
- if (dst_offset + len > packet_len(dst_hdr) ||
- src_offset + len > packet_len(src_hdr))
+ if (dst_offset + len > dst_hdr->frame_len ||
+ src_offset + len > src_hdr->frame_len)
return -1;
- ODP_ASSERT(odp_packet_unshared_len(dst) >= dst_offset + len);
-
overlap = (dst_hdr == src_hdr &&
((dst_offset <= src_offset &&
dst_offset + len >= src_offset) ||
@@ -2019,11 +1673,13 @@ int _odp_packet_cmp_data(odp_packet_t pkt, uint32_t offset,
* ********************************************************
*
*/
-
void odp_packet_print(odp_packet_t pkt)
{
odp_packet_seg_t seg;
- int max_len = 512;
+ seg_entry_t *seg_entry;
+ odp_packet_hdr_t *seg_hdr;
+ uint8_t idx;
+ int max_len = 1024;
char str[max_len];
int len = 0;
int n = max_len - 1;
@@ -2046,7 +1702,7 @@ void odp_packet_print(odp_packet_t pkt)
len += snprintf(&str[len], n - len,
" l4_offset %" PRIu32 "\n", hdr->p.l4_offset);
len += snprintf(&str[len], n - len,
- " frame_len %" PRIu32 "\n", packet_len(hdr));
+ " frame_len %" PRIu32 "\n", hdr->frame_len);
len += snprintf(&str[len], n - len,
" input %" PRIu64 "\n",
odp_pktio_to_u64(hdr->input));
@@ -2059,12 +1715,32 @@ void odp_packet_print(odp_packet_t pkt)
len += snprintf(&str[len], n - len,
" num_segs %i\n", odp_packet_num_segs(pkt));
+ seg_hdr = hdr;
+ idx = 0;
seg = odp_packet_first_seg(pkt);
while (seg != ODP_PACKET_SEG_INVALID) {
+ odp_buffer_hdr_t *buf_hdr;
+ odp_packet_hdr_t *tmp_hdr;
+
+ tmp_hdr = seg_hdr;
+ seg_entry = seg_entry_next(&seg_hdr, &idx);
+ buf_hdr = seg_entry->hdr;
+
len += snprintf(&str[len], n - len,
- " seg_len %" PRIu32 "\n",
- odp_packet_seg_data_len(pkt, seg));
+ " seg_len %-4" PRIu32 " seg_data %p ",
+ odp_packet_seg_data_len(pkt, seg),
+ odp_packet_seg_data(pkt, seg));
+ len += snprintf(&str[len], n - len, "ref_cnt %u",
+ buffer_ref(buf_hdr));
+ if (seg_is_link(tmp_hdr)) {
+ uint32_t ref;
+
+ ref = buffer_ref(&tmp_hdr->buf_hdr);
+ len += snprintf(&str[len], n - len, "L(%u)\n", ref);
+ } else {
+ len += snprintf(&str[len], n - len, "\n");
+ }
seg = odp_packet_next_seg(pkt, seg);
}
@@ -2450,6 +2126,170 @@ uint64_t odp_packet_seg_to_u64(odp_packet_seg_t hdl)
return _odp_pri(hdl);
}
+odp_packet_t odp_packet_ref_static(odp_packet_t pkt)
+{
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+
+ packet_ref_inc(pkt_hdr);
+ pkt_hdr->shared_len = pkt_hdr->frame_len;
+
+ return pkt;
+}
+
+odp_packet_t odp_packet_ref(odp_packet_t pkt, uint32_t offset)
+{
+ odp_packet_t ref;
+ odp_packet_hdr_t *link_hdr;
+ odp_packet_hdr_t *next_hdr;
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+ odp_packet_hdr_t *hdr = pkt_hdr;
+ seg_entry_t *seg;
+ uint32_t seg_idx = 0;
+ uint8_t idx = 0;
+ uint32_t seg_offset = 0;
+ int i, num_copy, segcount;
+ uint32_t len;
+
+ if (offset >= pkt_hdr->frame_len) {
+ ODP_DBG("offset too large\n");
+ return ODP_PACKET_INVALID;
+ }
+
+ /* Allocate link segment */
+ if (packet_alloc(pkt_hdr->buf_hdr.pool_ptr, 0, 1, 1, &ref) != 1) {
+ ODP_DBG("segment alloc failed\n");
+ return ODP_PACKET_INVALID;
+ }
+
+ link_hdr = packet_hdr(ref);
+
+ seg_entry_find_offset(&hdr, &idx, &seg_offset, &seg_idx, offset);
+ num_copy = hdr->buf_hdr.num_seg - idx;
+ segcount = pkt_hdr->buf_hdr.segcount;
+
+ /* In addition to segments, update reference count of
+ * an existing link header. */
+ if (seg_is_link(hdr))
+ buffer_ref_inc((odp_buffer_hdr_t *)hdr);
+
+ seg = seg_entry_next(&hdr, &idx);
+ link_hdr->buf_hdr.num_seg = 1;
+ link_hdr->buf_hdr.seg[0].hdr = seg->hdr;
+ link_hdr->buf_hdr.seg[0].data = seg->data + seg_offset;
+ link_hdr->buf_hdr.seg[0].len = seg->len - seg_offset;
+ buffer_ref_inc(seg->hdr);
+
+ for (i = 1; i < num_copy; i++) {
+ /* Update link header reference count */
+ if (idx == 0 && seg_is_link(hdr))
+ buffer_ref_inc((odp_buffer_hdr_t *)hdr);
+
+ seg = seg_entry_next(&hdr, &idx);
+
+ link_hdr->buf_hdr.num_seg++;
+ link_hdr->buf_hdr.seg[i].hdr = seg->hdr;
+ link_hdr->buf_hdr.seg[i].data = seg->data;
+ link_hdr->buf_hdr.seg[i].len = seg->len;
+ buffer_ref_inc(seg->hdr);
+ }
+
+ next_hdr = hdr;
+
+ /* Increment ref count for remaining segments */
+ for (i = seg_idx + num_copy; i < segcount; i++) {
+ /* Update link header reference count */
+ if (idx == 0 && seg_is_link(hdr))
+ buffer_ref_inc((odp_buffer_hdr_t *)hdr);
+
+ seg = seg_entry_next(&hdr, &idx);
+ buffer_ref_inc(seg->hdr);
+ }
+
+ len = pkt_hdr->frame_len - offset;
+ link_hdr->buf_hdr.next_seg = next_hdr;
+ link_hdr->buf_hdr.last_seg = pkt_hdr->buf_hdr.last_seg;
+ link_hdr->buf_hdr.segcount = segcount - seg_idx;
+ link_hdr->frame_len = len;
+ link_hdr->tailroom = pkt_hdr->tailroom;
+ link_hdr->shared_len = len;
+
+ /* Link header does not have headroom, it just points to other
+ * buffers. Zero length headroom ensures that head of the other buffer
+ * is not pushed through a reference. */
+ link_hdr->headroom = 0;
+
+ if (pkt_hdr->shared_len < len)
+ pkt_hdr->shared_len = len;
+
+ return ref;
+
+}
+
+odp_packet_t odp_packet_ref_pkt(odp_packet_t pkt, uint32_t offset,
+ odp_packet_t hdr)
+{
+ odp_packet_t ref;
+ int ret;
+ odp_packet_hdr_t *new_hdr;
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+ uint32_t len = pkt_hdr->frame_len;
+
+ ref = odp_packet_ref(pkt, offset);
+
+ if (ref == ODP_PACKET_INVALID) {
+ ODP_DBG("reference create failed\n");
+ return ODP_PACKET_INVALID;
+ }
+
+ ret = odp_packet_concat(&hdr, ref);
+
+ if (ret < 0) {
+ ODP_DBG("concat failed\n");
+ odp_packet_free(ref);
+ return ODP_PACKET_INVALID;
+ }
+
+ new_hdr = packet_hdr(hdr);
+ new_hdr->shared_len = len - offset;
+
+ return hdr;
+
+}
+
+int odp_packet_has_ref(odp_packet_t pkt)
+{
+ odp_buffer_hdr_t *buf_hdr;
+ seg_entry_t *seg;
+ int i;
+ uint32_t ref_cnt;
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+ int seg_count = pkt_hdr->buf_hdr.segcount;
+ odp_packet_hdr_t *hdr = pkt_hdr;
+ uint8_t idx = 0;
+
+ for (i = 0; i < seg_count; i++) {
+ seg = seg_entry_next(&hdr, &idx);
+ buf_hdr = seg->hdr;
+ ref_cnt = buffer_ref(buf_hdr);
+
+ if (is_multi_ref(ref_cnt))
+ return 1;
+ }
+
+ return 0;
+}
+
+uint32_t odp_packet_unshared_len(odp_packet_t pkt)
+{
+ odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
+ uint32_t len = pkt_hdr->frame_len;
+
+ if (odp_packet_has_ref(pkt))
+ return len - pkt_hdr->shared_len;
+
+ return len;
+}
+
/* Include non-inlined versions of API functions */
#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/packet_inlines_api.h>
diff --git a/platform/linux-generic/odp_packet_flags.c b/platform/linux-generic/odp_packet_flags.c
index 72df1ec..2e26ad6 100644
--- a/platform/linux-generic/odp_packet_flags.c
+++ b/platform/linux-generic/odp_packet_flags.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/plat/packet_flag_inlines.h>
#include <odp/api/packet_flags.h>
#include <odp_packet_internal.h>
diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c
index e023df1..9269f33 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -3,6 +3,9 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <odp/api/packet_io.h>
@@ -441,9 +444,11 @@ int odp_pktio_start(odp_pktio_t hdl)
unsigned i;
unsigned num = entry->s.num_in_queue;
int index[num];
+ odp_queue_t odpq[num];
for (i = 0; i < num; i++) {
index[i] = i;
+ odpq[i] = entry->s.in_queue[i].queue;
if (entry->s.in_queue[i].queue == ODP_QUEUE_INVALID) {
ODP_ERR("No input queue\n");
@@ -451,7 +456,7 @@ int odp_pktio_start(odp_pktio_t hdl)
}
}
- sched_fn->pktio_start(pktio_to_id(hdl), num, index);
+ sched_fn->pktio_start(pktio_to_id(hdl), num, index, odpq);
}
return res;
@@ -640,6 +645,52 @@ static int pktin_deq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[], int num)
return nbr;
}
+int pktin_poll_one(int pktio_index,
+ int rx_queue,
+ odp_event_t evt_tbl[QUEUE_MULTI_MAX])
+{
+ int num_rx, num_pkts, i;
+ pktio_entry_t *entry = pktio_entry_by_index(pktio_index);
+ odp_packet_t pkt;
+ odp_packet_hdr_t *pkt_hdr;
+ odp_buffer_hdr_t *buf_hdr;
+ odp_packet_t packets[QUEUE_MULTI_MAX];
+ queue_t queue;
+
+ if (odp_unlikely(entry->s.state != PKTIO_STATE_STARTED)) {
+ if (entry->s.state < PKTIO_STATE_ACTIVE ||
+ entry->s.state == PKTIO_STATE_STOP_PENDING)
+ return -1;
+
+ ODP_DBG("interface not started\n");
+ return 0;
+ }
+
+ ODP_ASSERT((unsigned)rx_queue < entry->s.num_in_queue);
+ num_pkts = entry->s.ops->recv(entry, rx_queue,
+ packets, QUEUE_MULTI_MAX);
+
+ num_rx = 0;
+ for (i = 0; i < num_pkts; i++) {
+ pkt = packets[i];
+ pkt_hdr = odp_packet_hdr(pkt);
+ if (odp_unlikely(pkt_hdr->p.input_flags.dst_queue)) {
+ queue = pkt_hdr->dst_queue;
+ buf_hdr = packet_to_buf_hdr(pkt);
+ if (queue_fn->enq_multi(queue, &buf_hdr, 1) < 0) {
+ /* Queue full? */
+ odp_packet_free(pkt);
+ __atomic_fetch_add(&entry->s.stats.in_discards,
+ 1,
+ __ATOMIC_RELAXED);
+ }
+ } else {
+ evt_tbl[num_rx++] = odp_packet_to_event(pkt);
+ }
+ }
+ return num_rx;
+}
+
int pktin_poll(int pktio_index, int num_queue, int index[])
{
odp_buffer_hdr_t *hdr_tbl[QUEUE_MULTI_MAX];
diff --git a/platform/linux-generic/odp_pkt_queue.c b/platform/linux-generic/odp_pkt_queue.c
index f108609..613e39d 100644
--- a/platform/linux-generic/odp_pkt_queue.c
+++ b/platform/linux-generic/odp_pkt_queue.c
@@ -6,6 +6,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <stdint.h>
#include <string.h>
#include <malloc.h>
diff --git a/platform/linux-generic/odp_queue_if.c b/platform/linux-generic/odp_queue_if.c
index f77405a..8137be5 100644
--- a/platform/linux-generic/odp_queue_if.c
+++ b/platform/linux-generic/odp_queue_if.c
@@ -3,6 +3,9 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+
+#include "config.h"
+
#include <odp_queue_if.h>
extern const queue_fn_t queue_scalable_fn;
diff --git a/platform/linux-generic/odp_rwlock.c b/platform/linux-generic/odp_rwlock.c
index 5bef13a..55d717e 100644
--- a/platform/linux-generic/odp_rwlock.c
+++ b/platform/linux-generic/odp_rwlock.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <stdbool.h>
#include <odp/api/atomic.h>
#include <odp/api/rwlock.h>
diff --git a/platform/linux-generic/odp_rwlock_recursive.c b/platform/linux-generic/odp_rwlock_recursive.c
index 6b02281..1f93df3 100644
--- a/platform/linux-generic/odp_rwlock_recursive.c
+++ b/platform/linux-generic/odp_rwlock_recursive.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/rwlock_recursive.h>
#include <odp/api/thread.h>
#include <string.h>
diff --git a/platform/linux-generic/odp_schedule_if.c b/platform/linux-generic/odp_schedule_if.c
index b06ab13..ea1efb4 100644
--- a/platform/linux-generic/odp_schedule_if.c
+++ b/platform/linux-generic/odp_schedule_if.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_schedule_if.h>
extern const schedule_fn_t schedule_sp_fn;
diff --git a/platform/linux-generic/odp_shared_memory.c b/platform/linux-generic/odp_shared_memory.c
index a6faff6..ccd25c8 100644
--- a/platform/linux-generic/odp_shared_memory.c
+++ b/platform/linux-generic/odp_shared_memory.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_config_internal.h>
#include <odp/api/debug.h>
#include <odp/api/std_types.h>
diff --git a/platform/linux-generic/odp_sorted_list.c b/platform/linux-generic/odp_sorted_list.c
index 8a1dc3a..df60424 100644
--- a/platform/linux-generic/odp_sorted_list.c
+++ b/platform/linux-generic/odp_sorted_list.c
@@ -6,6 +6,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <stdint.h>
#include <string.h>
#include <malloc.h>
diff --git a/platform/linux-generic/odp_spinlock.c b/platform/linux-generic/odp_spinlock.c
index cb0f053..8ce7b17 100644
--- a/platform/linux-generic/odp_spinlock.c
+++ b/platform/linux-generic/odp_spinlock.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/spinlock.h>
#include <odp/api/cpu.h>
#include <odp_atomic_internal.h>
diff --git a/platform/linux-generic/odp_spinlock_recursive.c b/platform/linux-generic/odp_spinlock_recursive.c
index 5ed481c..5293c04 100644
--- a/platform/linux-generic/odp_spinlock_recursive.c
+++ b/platform/linux-generic/odp_spinlock_recursive.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/spinlock_recursive.h>
#include <odp/api/thread.h>
diff --git a/platform/linux-generic/odp_std_clib.c b/platform/linux-generic/odp_std_clib.c
index 24df249..ed7c644 100644
--- a/platform/linux-generic/odp_std_clib.c
+++ b/platform/linux-generic/odp_std_clib.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/std_clib.h>
#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/std_clib_inlines.h>
diff --git a/platform/linux-generic/odp_sync.c b/platform/linux-generic/odp_sync.c
index b7eb503..7acdc92 100644
--- a/platform/linux-generic/odp_sync.c
+++ b/platform/linux-generic/odp_sync.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/sync.h>
#if ODP_ABI_COMPAT == 1
#include <odp/api/plat/sync_inlines.h>
diff --git a/platform/linux-generic/odp_system_info.c b/platform/linux-generic/odp_system_info.c
index 0495fb0..26f1cbe 100644
--- a/platform/linux-generic/odp_system_info.c
+++ b/platform/linux-generic/odp_system_info.c
@@ -11,6 +11,8 @@
* All rights reserved.
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <odp/api/system_info.h>
@@ -259,6 +261,30 @@ static char *get_hugepage_dir(uint64_t hugepage_sz)
}
/*
+ * Analysis of /sys/devices/system/cpu/cpu%d/cpufreq/ files
+ */
+uint64_t odp_cpufreq_id(const char *filename, int id)
+{
+ char path[256], buffer[256], *endptr = NULL;
+ FILE *file;
+ uint64_t ret = 0;
+
+ snprintf(path, sizeof(path),
+ "/sys/devices/system/cpu/cpu%d/cpufreq/%s", id, filename);
+
+ file = fopen(path, "r");
+ if (file == NULL)
+ return ret;
+
+ if (fgets(buffer, sizeof(buffer), file) != NULL)
+ ret = strtoull(buffer, &endptr, 0) * 1000;
+
+ fclose(file);
+
+ return ret;
+}
+
+/*
* Analysis of /sys/devices/system/cpu/ files
*/
static int systemcpu(system_info_t *sysinfo)
@@ -308,6 +334,7 @@ static int system_hp(hugepage_info_t *hugeinfo)
*/
int odp_system_info_init(void)
{
+ int i;
FILE *file;
memset(&odp_global_data.system_info, 0, sizeof(system_info_t));
@@ -324,6 +351,13 @@ int odp_system_info_init(void)
fclose(file);
+ for (i = 0; i < MAX_CPU_NUMBER; i++) {
+ uint64_t cpu_hz_max = odp_cpufreq_id("cpuinfo_max_freq", i);
+
+ if (cpu_hz_max)
+ odp_global_data.system_info.cpu_hz_max[i] = cpu_hz_max;
+ }
+
if (systemcpu(&odp_global_data.system_info)) {
ODP_ERR("systemcpu failed\n");
return -1;
@@ -349,6 +383,11 @@ int odp_system_info_term(void)
* Public access functions
*************************
*/
+uint64_t odp_cpu_hz_current(int id)
+{
+ return odp_cpufreq_id("cpuinfo_cur_freq", id);
+}
+
uint64_t odp_cpu_hz(void)
{
int id = sched_getcpu();
diff --git a/platform/linux-generic/odp_thread.c b/platform/linux-generic/odp_thread.c
index 33a8a7f..ffc247a 100644
--- a/platform/linux-generic/odp_thread.c
+++ b/platform/linux-generic/odp_thread.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <sched.h>
diff --git a/platform/linux-generic/odp_thrmask.c b/platform/linux-generic/odp_thrmask.c
index c176a5c..f214428 100644
--- a/platform/linux-generic/odp_thrmask.c
+++ b/platform/linux-generic/odp_thrmask.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/thrmask.h>
#include <odp/api/cpumask.h>
diff --git a/platform/linux-generic/odp_ticketlock.c b/platform/linux-generic/odp_ticketlock.c
index f73dd9a..0c94f8a 100644
--- a/platform/linux-generic/odp_ticketlock.c
+++ b/platform/linux-generic/odp_ticketlock.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/plat/ticketlock_inlines.h>
#include <odp/api/spec/ticketlock.h>
diff --git a/platform/linux-generic/odp_time.c b/platform/linux-generic/odp_time.c
index a831cc5..0df4682 100644
--- a/platform/linux-generic/odp_time.c
+++ b/platform/linux-generic/odp_time.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <time.h>
diff --git a/platform/linux-generic/odp_timer.c b/platform/linux-generic/odp_timer.c
index fdb4890..5ef38dd 100644
--- a/platform/linux-generic/odp_timer.c
+++ b/platform/linux-generic/odp_timer.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/**
* @file
*
@@ -75,6 +77,7 @@ static _odp_atomic_flag_t locks[NUM_LOCKS]; /* Multiple locks per cache line! */
/* Max timer resolution in nanoseconds */
static uint64_t highest_res_ns;
+static uint64_t min_res_ns = INT64_MAX;
/******************************************************************************
* Translation between timeout buffer and timeout header
@@ -742,6 +745,9 @@ unsigned _timer_run(void)
CONFIG_TIMER_RUN_RATELIMIT_ROUNDS;
odp_time_t now;
+ if (odp_atomic_load_u32(&num_timer_pools) == 0)
+ return 0;
+
/* Rate limit how often this thread checks the timer pools. */
if (CONFIG_TIMER_RUN_RATELIMIT_ROUNDS > 1) {
@@ -984,6 +990,13 @@ odp_timer_pool_create(const char *name,
__odp_errno = EINVAL;
return ODP_TIMER_POOL_INVALID;
}
+
+ if (min_res_ns > param->res_ns) {
+ min_res_ns = param->res_ns;
+ time_per_ratelimit_period =
+ odp_time_global_from_ns(min_res_ns / 2);
+ }
+
return odp_timer_pool_new(name, param);
}
@@ -1188,7 +1201,7 @@ int odp_timer_init_global(const odp_init_t *params)
!params->not_used.feat.timer;
time_per_ratelimit_period =
- odp_time_global_from_ns(CONFIG_TIMER_RUN_RATELIMIT_NS);
+ odp_time_global_from_ns(min_res_ns / 2);
if (!inline_timers) {
timer_res_init();
diff --git a/platform/linux-generic/odp_timer_wheel.c b/platform/linux-generic/odp_timer_wheel.c
index f2c802a..1d0640c 100644
--- a/platform/linux-generic/odp_timer_wheel.c
+++ b/platform/linux-generic/odp_timer_wheel.c
@@ -6,6 +6,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <stdint.h>
#include <string.h>
#include <malloc.h>
diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c
index 53e1047..6d95732 100644
--- a/platform/linux-generic/odp_traffic_mngr.c
+++ b/platform/linux-generic/odp_traffic_mngr.c
@@ -6,7 +6,11 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
+#ifndef _GNU_SOURCE
#define _GNU_SOURCE
+#endif
#include <stdint.h>
#include <string.h>
#include <malloc.h>
diff --git a/platform/linux-generic/odp_version.c b/platform/linux-generic/odp_version.c
index 7b704d0..84547ac 100644
--- a/platform/linux-generic/odp_version.c
+++ b/platform/linux-generic/odp_version.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/version.h>
const char *odp_version_api_str(void)
diff --git a/platform/linux-generic/odp_weak.c b/platform/linux-generic/odp_weak.c
index 0fbf664..e827300 100644
--- a/platform/linux-generic/odp_weak.c
+++ b/platform/linux-generic/odp_weak.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_internal.h>
#include <odp/api/debug.h>
#include <odp_debug_internal.h>
diff --git a/platform/linux-generic/pktio/common.c b/platform/linux-generic/pktio/common.c
index 611bb45..94add06 100644
--- a/platform/linux-generic/pktio/common.c
+++ b/platform/linux-generic/pktio/common.c
@@ -5,6 +5,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_packet_io_internal.h>
#include <odp_classification_internal.h>
#include <errno.h>
diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c
index 511c777..bbe8ddd 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#ifdef ODP_PKTIO_DPDK
#include <odp_posix_extensions.h>
@@ -30,6 +32,10 @@
#include <rte_mbuf.h>
#include <rte_mempool.h>
#include <rte_ethdev.h>
+#include <rte_ip.h>
+#include <rte_ip_frag.h>
+#include <rte_udp.h>
+#include <rte_tcp.h>
#include <rte_string_fns.h>
static inline pktio_ops_dpdk_data_t *
@@ -141,14 +147,13 @@ static void mbuf_init(struct rte_mempool *mp, struct rte_mbuf *mbuf,
{
void *buf_addr = pkt_hdr->buf_hdr.base_data - RTE_PKTMBUF_HEADROOM;
- rte_mem_lock_page(buf_addr);
-
memset(mbuf, 0, sizeof(struct rte_mbuf));
mbuf->priv_size = 0;
mbuf->buf_addr = buf_addr;
mbuf->buf_physaddr = rte_mem_virt2phy(buf_addr);
- if (odp_unlikely(mbuf->buf_physaddr == RTE_BAD_PHYS_ADDR))
+ if (odp_unlikely(mbuf->buf_physaddr == RTE_BAD_PHYS_ADDR ||
+ mbuf->buf_physaddr == 0))
ODP_ABORT("Failed to map virt addr to phy");
mbuf->buf_len = (uint16_t)rte_pktmbuf_data_room_size(mp);
@@ -175,6 +180,11 @@ static struct rte_mempool *mbuf_pool_create(const char *name,
unsigned num;
uint16_t data_room_size;
+ if (!(pool_entry->mem_from_huge_pages)) {
+ ODP_ERR("DPDK requires memory is allocated from huge pages\n");
+ return NULL;
+ }
+
num = pool_entry->num;
data_room_size = pool_entry->max_seg_len + CONFIG_PACKET_HEADROOM;
elt_size = sizeof(struct rte_mbuf) + (unsigned)data_room_size;
@@ -309,6 +319,44 @@ static struct rte_mempool_ops ops_stack = {
MEMPOOL_REGISTER_OPS(ops_stack);
+#define HAS_IP4_CSUM_FLAG(m, f) ((m->ol_flags & PKT_RX_IP_CKSUM_MASK) == f)
+#define HAS_L4_PROTO(m, proto) ((m->packet_type & RTE_PTYPE_L4_MASK) == proto)
+#define HAS_L4_CSUM_FLAG(m, f) ((m->ol_flags & PKT_RX_L4_CKSUM_MASK) == f)
+
+#define PKTIN_CSUM_BITS 0x1C
+
+static inline int pkt_set_ol_rx(odp_pktin_config_opt_t *pktin_cfg,
+ odp_packet_hdr_t *pkt_hdr,
+ struct rte_mbuf *mbuf)
+{
+ if (pktin_cfg->bit.ipv4_chksum &&
+ RTE_ETH_IS_IPV4_HDR(mbuf->packet_type) &&
+ HAS_IP4_CSUM_FLAG(mbuf, PKT_RX_IP_CKSUM_BAD)) {
+ if (pktin_cfg->bit.drop_ipv4_err)
+ return -1;
+
+ pkt_hdr->p.error_flags.ip_err = 1;
+ }
+
+ if (pktin_cfg->bit.udp_chksum &&
+ HAS_L4_PROTO(mbuf, RTE_PTYPE_L4_UDP) &&
+ HAS_L4_CSUM_FLAG(mbuf, PKT_RX_L4_CKSUM_BAD)) {
+ if (pktin_cfg->bit.drop_udp_err)
+ return -1;
+
+ pkt_hdr->p.error_flags.udp_err = 1;
+ } else if (pktin_cfg->bit.tcp_chksum &&
+ HAS_L4_PROTO(mbuf, RTE_PTYPE_L4_TCP) &&
+ HAS_L4_CSUM_FLAG(mbuf, PKT_RX_L4_CKSUM_BAD)) {
+ if (pktin_cfg->bit.drop_tcp_err)
+ return -1;
+
+ pkt_hdr->p.error_flags.tcp_err = 1;
+ }
+
+ return 0;
+}
+
static inline int mbuf_to_pkt(pktio_entry_t *pktio_entry,
odp_packet_t pkt_table[],
struct rte_mbuf *mbuf_table[],
@@ -323,6 +371,7 @@ static inline int mbuf_to_pkt(pktio_entry_t *pktio_entry,
int nb_pkts = 0;
int alloc_len, num;
odp_pool_t pool = __retrieve_op_data(pktio_entry)->pool;
+ odp_pktin_config_opt_t *pktin_cfg = &pktio_entry->s.config.pktin;
/* Allocate maximum sized packets */
alloc_len = __retrieve_op_data(pktio_entry)->data_room;
@@ -377,6 +426,14 @@ static inline int mbuf_to_pkt(pktio_entry_t *pktio_entry,
packet_set_ts(pkt_hdr, ts);
+ if (pktin_cfg->all_bits & PKTIN_CSUM_BITS) {
+ if (pkt_set_ol_rx(pktin_cfg, pkt_hdr, mbuf)) {
+ odp_packet_free(pkt);
+ rte_pktmbuf_free(mbuf);
+ continue;
+ }
+ }
+
pkt_table[nb_pkts++] = pkt;
rte_pktmbuf_free(mbuf);
@@ -393,6 +450,95 @@ fail:
return (i > 0 ? i : -1);
}
+static inline int check_proto(void *l3_hdr, odp_bool_t *l3_proto_v4,
+ uint8_t *l4_proto)
+{
+ uint8_t l3_proto_ver = _ODP_IPV4HDR_VER(*(uint8_t *)l3_hdr);
+
+ if (l3_proto_ver == _ODP_IPV4) {
+ struct ipv4_hdr *ip = (struct ipv4_hdr *)l3_hdr;
+
+ *l3_proto_v4 = 1;
+ if (!rte_ipv4_frag_pkt_is_fragmented(ip))
+ *l4_proto = ip->next_proto_id;
+ else
+ *l4_proto = 0;
+
+ return 0;
+ } else if (l3_proto_ver == _ODP_IPV6) {
+ struct ipv6_hdr *ipv6 = (struct ipv6_hdr *)l3_hdr;
+
+ *l3_proto_v4 = 0;
+ *l4_proto = ipv6->proto;
+ return 0;
+ }
+
+ return -1;
+}
+
+static inline uint16_t phdr_csum(odp_bool_t ipv4, void *l3_hdr,
+ uint64_t ol_flags)
+{
+ if (ipv4)
+ return rte_ipv4_phdr_cksum(l3_hdr, ol_flags);
+ else /*ipv6*/
+ return rte_ipv6_phdr_cksum(l3_hdr, ol_flags);
+}
+
+static inline void pkt_set_ol_tx(odp_pktout_config_opt_t *pktout_cfg,
+ odp_packet_hdr_t *pkt_hdr,
+ struct rte_mbuf *mbuf,
+ char *mbuf_data)
+{
+ void *l3_hdr, *l4_hdr;
+ uint8_t l4_proto;
+ odp_bool_t l3_proto_v4;
+ odp_bool_t ipv4_chksum_pkt, udp_chksum_pkt, tcp_chksum_pkt;
+ packet_parser_t *pkt_p = &pkt_hdr->p;
+
+ l3_hdr = (void *)(mbuf_data + pkt_p->l3_offset);
+
+ if (check_proto(l3_hdr, &l3_proto_v4, &l4_proto))
+ return;
+
+ ipv4_chksum_pkt = pktout_cfg->bit.ipv4_chksum && l3_proto_v4;
+ udp_chksum_pkt = pktout_cfg->bit.udp_chksum &&
+ (l4_proto == _ODP_IPPROTO_UDP);
+ tcp_chksum_pkt = pktout_cfg->bit.tcp_chksum &&
+ (l4_proto == _ODP_IPPROTO_TCP);
+
+ if (!ipv4_chksum_pkt && !udp_chksum_pkt && !tcp_chksum_pkt)
+ return;
+
+ mbuf->l2_len = pkt_p->l3_offset - pkt_p->l2_offset;
+ mbuf->l3_len = pkt_p->l4_offset - pkt_p->l3_offset;
+
+ if (l3_proto_v4)
+ mbuf->ol_flags = PKT_TX_IPV4;
+ else
+ mbuf->ol_flags = PKT_TX_IPV6;
+
+ if (ipv4_chksum_pkt) {
+ mbuf->ol_flags |= PKT_TX_IP_CKSUM;
+
+ ((struct ipv4_hdr *)l3_hdr)->hdr_checksum = 0;
+ }
+
+ l4_hdr = (void *)(mbuf_data + pkt_p->l4_offset);
+
+ if (udp_chksum_pkt) {
+ mbuf->ol_flags |= PKT_TX_UDP_CKSUM;
+
+ ((struct udp_hdr *)l4_hdr)->dgram_cksum =
+ phdr_csum(l3_proto_v4, l3_hdr, mbuf->ol_flags);
+ } else if (tcp_chksum_pkt) {
+ mbuf->ol_flags |= PKT_TX_TCP_CKSUM;
+
+ ((struct tcp_hdr *)l4_hdr)->cksum =
+ phdr_csum(l3_proto_v4, l3_hdr, mbuf->ol_flags);
+ }
+}
+
static inline int pkt_to_mbuf(pktio_entry_t *pktio_entry,
struct rte_mbuf *mbuf_table[],
const odp_packet_t pkt_table[], uint16_t num)
@@ -402,6 +548,7 @@ static inline int pkt_to_mbuf(pktio_entry_t *pktio_entry,
int i, j;
char *data;
uint16_t pkt_len;
+ odp_pktout_config_opt_t *pktout_cfg = &pktio_entry->s.config.pktout;
if (odp_unlikely((rte_pktmbuf_alloc_bulk(pkt_dpdk->pkt_pool,
mbuf_table, num)))) {
@@ -421,6 +568,11 @@ static inline int pkt_to_mbuf(pktio_entry_t *pktio_entry,
data = rte_pktmbuf_append(mbuf_table[i], pkt_len);
odp_packet_copy_to_mem(pkt_table[i], 0, pkt_len, data);
+
+ if (pktout_cfg->all_bits)
+ pkt_set_ol_tx(pktout_cfg,
+ odp_packet_hdr(pkt_table[i]),
+ mbuf_table[i], data);
}
return i;
@@ -444,6 +596,7 @@ static inline int mbuf_to_pkt_zero(pktio_entry_t *pktio_entry,
int i;
int nb_pkts = 0;
odp_pool_t pool = __retrieve_op_data(pktio_entry)->pool;
+ odp_pktin_config_opt_t *pktin_cfg = &pktio_entry->s.config.pktin;
for (i = 0; i < mbuf_num; i++) {
odp_packet_hdr_t parsed_hdr;
@@ -489,6 +642,13 @@ static inline int mbuf_to_pkt_zero(pktio_entry_t *pktio_entry,
packet_set_ts(pkt_hdr, ts);
+ if (pktin_cfg->all_bits & PKTIN_CSUM_BITS) {
+ if (pkt_set_ol_rx(pktin_cfg, pkt_hdr, mbuf)) {
+ rte_pktmbuf_free(mbuf);
+ continue;
+ }
+ }
+
pkt_table[nb_pkts++] = pkt;
}
@@ -498,13 +658,13 @@ static inline int mbuf_to_pkt_zero(pktio_entry_t *pktio_entry,
static inline int pkt_to_mbuf_zero(pktio_entry_t *pktio_entry,
struct rte_mbuf *mbuf_table[],
const odp_packet_t pkt_table[], uint16_t num,
- uint16_t *seg_count)
+ uint16_t *copy_count)
{
pktio_ops_dpdk_data_t *pkt_dpdk =
__retrieve_op_data(pktio_entry);
+ odp_pktout_config_opt_t *pktout_cfg = &pktio_entry->s.config.pktout;
int i;
-
- *seg_count = 0;
+ *copy_count = 0;
for (i = 0; i < num; i++) {
odp_packet_t pkt = pkt_table[i];
@@ -516,20 +676,34 @@ static inline int pkt_to_mbuf_zero(pktio_entry_t *pktio_entry,
if (odp_unlikely(pkt_len > pkt_dpdk->mtu))
goto fail;
- if (odp_likely(pkt_hdr->buf_hdr.segcount == 1)) {
- if (odp_unlikely(pkt_hdr->extra_type !=
- PKT_EXTRA_TYPE_DPDK))
- mbuf_init(pkt_dpdk->pkt_pool, mbuf, pkt_hdr);
-
+ if (odp_likely(pkt_hdr->buf_hdr.segcount == 1 &&
+ pkt_hdr->extra_type == PKT_EXTRA_TYPE_DPDK)) {
mbuf_update(mbuf, pkt_hdr, pkt_len);
+
+ if (pktout_cfg->all_bits)
+ pkt_set_ol_tx(pktout_cfg, pkt_hdr,
+ mbuf, odp_packet_data(pkt));
} else {
- /* Fall back to packet copy */
- if (odp_unlikely(pkt_to_mbuf(pktio_entry, &mbuf,
- &pkt, 1) != 1))
- goto fail;
- (*seg_count)++;
- }
+ pool_t *pool_entry = pkt_hdr->buf_hdr.pool_ptr;
+
+ if (pkt_hdr->buf_hdr.segcount != 1 ||
+ !pool_entry->mem_from_huge_pages) {
+ /* Fall back to packet copy */
+ if (odp_unlikely(pkt_to_mbuf(pktio_entry, &mbuf,
+ &pkt, 1) != 1))
+ goto fail;
+ (*copy_count)++;
+ } else {
+ mbuf_init(pkt_dpdk->pkt_pool, mbuf,
+ pkt_hdr);
+ mbuf_update(mbuf, pkt_hdr, pkt_len);
+ if (pktout_cfg->all_bits)
+ pkt_set_ol_tx(pktout_cfg, pkt_hdr,
+ mbuf,
+ odp_packet_data(pkt));
+ }
+ }
mbuf_table[i] = mbuf;
}
return i;
@@ -673,6 +847,7 @@ static int dpdk_setup_port(pktio_entry_t *pktio_entry)
pktio_ops_dpdk_data_t *pkt_dpdk =
__retrieve_op_data(pktio_entry);
struct rte_eth_rss_conf rss_conf;
+ uint16_t hw_ip_checksum = 0;
/* Always set some hash functions to enable DPDK RSS hash calculation */
if (pkt_dpdk->hash.all_bits == 0) {
@@ -682,12 +857,17 @@ static int dpdk_setup_port(pktio_entry_t *pktio_entry)
rss_conf_to_hash_proto(&rss_conf, &pkt_dpdk->hash);
}
+ if (pktio_entry->s.config.pktin.bit.ipv4_chksum ||
+ pktio_entry->s.config.pktin.bit.udp_chksum ||
+ pktio_entry->s.config.pktin.bit.tcp_chksum)
+ hw_ip_checksum = 1;
+
struct rte_eth_conf port_conf = {
.rxmode = {
.mq_mode = ETH_MQ_RX_RSS,
.split_hdr_size = 0,
.header_split = 0,
- .hw_ip_checksum = 0,
+ .hw_ip_checksum = hw_ip_checksum,
.hw_vlan_filter = 0,
.hw_strip_crc = 0,
.enable_scatter = 0,
@@ -908,6 +1088,11 @@ static void dpdk_init_capability(pktio_entry_t *pktio_entry,
pktio_ops_dpdk_data_t *pkt_dpdk =
__retrieve_op_data(pktio_entry);
odp_pktio_capability_t *capa = &pkt_dpdk->capa;
+ int ptype_cnt;
+ int ptype_l3_ipv4 = 0;
+ int ptype_l4_tcp = 0;
+ int ptype_l4_udp = 0;
+ uint32_t ptype_mask = RTE_PTYPE_L3_MASK | RTE_PTYPE_L4_MASK;
memset(dev_info, 0, sizeof(struct rte_eth_dev_info));
memset(capa, 0, sizeof(odp_pktio_capability_t));
@@ -919,9 +1104,58 @@ static void dpdk_init_capability(pktio_entry_t *pktio_entry,
PKTIO_MAX_QUEUES);
capa->set_op.op.promisc_mode = 1;
+ ptype_cnt = rte_eth_dev_get_supported_ptypes(pkt_dpdk->port_id,
+ ptype_mask, NULL, 0);
+ if (ptype_cnt > 0) {
+ uint32_t ptypes[ptype_cnt];
+ int i;
+
+ ptype_cnt = rte_eth_dev_get_supported_ptypes(pkt_dpdk->port_id,
+ ptype_mask, ptypes,
+ ptype_cnt);
+ for (i = 0; i < ptype_cnt; i++)
+ switch (ptypes[i]) {
+ case RTE_PTYPE_L3_IPV4:
+ /* Fall through */
+ case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
+ /* Fall through */
+ case RTE_PTYPE_L3_IPV4_EXT:
+ ptype_l3_ipv4 = 1;
+ break;
+ case RTE_PTYPE_L4_TCP:
+ ptype_l4_tcp = 1;
+ break;
+ case RTE_PTYPE_L4_UDP:
+ ptype_l4_udp = 1;
+ break;
+ }
+ }
+
odp_pktio_config_init(&capa->config);
capa->config.pktin.bit.ts_all = 1;
capa->config.pktin.bit.ts_ptp = 1;
+
+ capa->config.pktin.bit.ipv4_chksum = ptype_l3_ipv4 &&
+ (dev_info->rx_offload_capa & DEV_RX_OFFLOAD_IPV4_CKSUM) ? 1 : 0;
+ if (capa->config.pktin.bit.ipv4_chksum)
+ capa->config.pktin.bit.drop_ipv4_err = 1;
+
+ capa->config.pktin.bit.udp_chksum = ptype_l4_udp &&
+ (dev_info->rx_offload_capa & DEV_RX_OFFLOAD_UDP_CKSUM) ? 1 : 0;
+ if (capa->config.pktin.bit.udp_chksum)
+ capa->config.pktin.bit.drop_udp_err = 1;
+
+ capa->config.pktin.bit.tcp_chksum = ptype_l4_tcp &&
+ (dev_info->rx_offload_capa & DEV_RX_OFFLOAD_TCP_CKSUM) ? 1 : 0;
+ if (capa->config.pktin.bit.tcp_chksum)
+ capa->config.pktin.bit.drop_tcp_err = 1;
+
+ capa->config.pktout.bit.ipv4_chksum =
+ (dev_info->tx_offload_capa & DEV_TX_OFFLOAD_IPV4_CKSUM) ? 1 : 0;
+ capa->config.pktout.bit.udp_chksum =
+ (dev_info->tx_offload_capa & DEV_TX_OFFLOAD_UDP_CKSUM) ? 1 : 0;
+ capa->config.pktout.bit.tcp_chksum =
+ (dev_info->tx_offload_capa & DEV_TX_OFFLOAD_TCP_CKSUM) ? 1 : 0;
}
static int dpdk_open(odp_pktio_t id ODP_UNUSED,
@@ -1182,7 +1416,7 @@ static int dpdk_send(pktio_entry_t *pktio_entry, int index,
struct rte_mbuf *tx_mbufs[num];
pktio_ops_dpdk_data_t *pkt_dpdk =
__retrieve_op_data(pktio_entry);
- uint16_t seg_count = 0;
+ uint16_t copy_count = 0;
int tx_pkts;
int i;
int mbufs;
@@ -1192,7 +1426,7 @@ static int dpdk_send(pktio_entry_t *pktio_entry, int index,
if (ODP_DPDK_ZERO_COPY)
mbufs = pkt_to_mbuf_zero(pktio_entry, tx_mbufs, pkt_table, num,
- &seg_count);
+ &copy_count);
else
mbufs = pkt_to_mbuf(pktio_entry, tx_mbufs, pkt_table, num);
@@ -1206,11 +1440,11 @@ static int dpdk_send(pktio_entry_t *pktio_entry, int index,
odp_ticketlock_unlock(&pkt_dpdk->tx_lock[index]);
if (ODP_DPDK_ZERO_COPY) {
- /* Free copied segmented packets */
- if (odp_unlikely(seg_count)) {
+ /* Free copied packets */
+ if (odp_unlikely(copy_count)) {
uint16_t freed = 0;
- for (i = 0; i < mbufs && freed != seg_count; i++) {
+ for (i = 0; i < mbufs && freed != copy_count; i++) {
odp_packet_t pkt = pkt_table[i];
odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
diff --git a/platform/linux-generic/pktio/ethtool.c b/platform/linux-generic/pktio/ethtool.c
index ed2875c..b41ce44 100644
--- a/platform/linux-generic/pktio/ethtool.c
+++ b/platform/linux-generic/pktio/ethtool.c
@@ -4,10 +4,14 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/sockios.h>
-#include <linux/if.h>
#include <linux/ethtool.h>
#include <errno.h>
#include <net/if.h>
@@ -30,13 +34,13 @@ static struct ethtool_gstrings *get_stringset(int fd, struct ifreq *ifr)
sset_info.hdr.cmd = ETHTOOL_GSSET_INFO;
sset_info.hdr.reserved = 0;
sset_info.hdr.sset_mask = 1ULL << ETH_SS_STATS;
- ifr->ifr_data = &sset_info;
+ ifr->ifr_data = (void *)&sset_info;
if (ioctl(fd, SIOCETHTOOL, ifr) == 0) {
len = sset_info.hdr.sset_mask ? sset_info.hdr.data[0] : 0;
} else if (errno == EOPNOTSUPP && drvinfo_offset != 0) {
/* Fallback for old kernel versions */
drvinfo.cmd = ETHTOOL_GDRVINFO;
- ifr->ifr_data = &drvinfo;
+ ifr->ifr_data = (void *)&drvinfo;
if (ioctl(fd, SIOCETHTOOL, ifr)) {
__odp_errno = errno;
ODP_ERR("Cannot get stats information\n");
@@ -62,7 +66,7 @@ static struct ethtool_gstrings *get_stringset(int fd, struct ifreq *ifr)
strings->cmd = ETHTOOL_GSTRINGS;
strings->string_set = ETH_SS_STATS;
strings->len = len;
- ifr->ifr_data = strings;
+ ifr->ifr_data = (void *)strings;
if (ioctl(fd, SIOCETHTOOL, ifr)) {
__odp_errno = errno;
ODP_ERR("Cannot get stats information\n");
@@ -101,7 +105,7 @@ static int ethtool_stats(int fd, struct ifreq *ifr, odp_pktio_stats_t *stats)
estats->cmd = ETHTOOL_GSTATS;
estats->n_stats = n_stats;
- ifr->ifr_data = estats;
+ ifr->ifr_data = (void *)estats;
err = ioctl(fd, SIOCETHTOOL, ifr);
if (err < 0) {
__odp_errno = errno;
diff --git a/platform/linux-generic/pktio/ipc.c b/platform/linux-generic/pktio/ipc.c
index 14cd86e..5211d1e 100644
--- a/platform/linux-generic/pktio/ipc.c
+++ b/platform/linux-generic/pktio/ipc.c
@@ -3,6 +3,9 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+
+#include "config.h"
+
#include <odp_debug_internal.h>
#include <odp_packet_io_internal.h>
#include <odp/api/system_info.h>
diff --git a/platform/linux-generic/pktio/loopback.c b/platform/linux-generic/pktio/loopback.c
index 3d4c764..a3edc9d 100644
--- a/platform/linux-generic/pktio/loopback.c
+++ b/platform/linux-generic/pktio/loopback.c
@@ -5,6 +5,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_api.h>
#include <odp_packet_internal.h>
#include <odp_packet_io_internal.h>
@@ -58,7 +60,6 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
odp_buffer_hdr_t *hdr_tbl[QUEUE_MULTI_MAX];
queue_t queue;
odp_packet_hdr_t *pkt_hdr;
- odp_packet_hdr_t parsed_hdr;
odp_packet_t pkt;
odp_time_t ts_val;
odp_time_t *ts = NULL;
@@ -84,7 +85,7 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
pkt = packet_from_buf_hdr(hdr_tbl[i]);
pkt_len = odp_packet_len(pkt);
-
+ pkt_hdr = odp_packet_hdr(pkt);
if (pktio_cls_enabled(pktio_entry)) {
odp_packet_t new_pkt;
@@ -106,14 +107,16 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
} else {
pkt_addr = odp_packet_data(pkt);
}
+
ret = cls_classify_packet(pktio_entry, pkt_addr,
pkt_len, seg_len,
- &new_pool, &parsed_hdr);
+ &new_pool, pkt_hdr);
if (ret) {
failed++;
odp_packet_free(pkt);
continue;
}
+
if (new_pool != odp_packet_pool(pkt)) {
new_pkt = odp_packet_copy(pkt, new_pool);
@@ -125,21 +128,14 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
}
pkt = new_pkt;
}
- }
- pkt_hdr = odp_packet_hdr(pkt);
-
- pkt_hdr->input = pktio_entry->s.handle;
-
- if (pktio_cls_enabled(pktio_entry))
- copy_packet_cls_metadata(&parsed_hdr, pkt_hdr);
- else
+ } else {
packet_parse_layer(pkt_hdr,
pktio_entry->s.config.parser.layer);
+ }
packet_set_ts(pkt_hdr, ts);
-
+ pkt_hdr->input = pktio_entry->s.handle;
pktio_entry->s.stats.in_octets += pkt_len;
-
pkts[num_rx++] = pkt;
}
diff --git a/platform/linux-generic/pktio/netmap.c b/platform/linux-generic/pktio/netmap.c
index 07d6d9e..e2d4baa 100644
--- a/platform/linux-generic/pktio/netmap.c
+++ b/platform/linux-generic/pktio/netmap.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#ifdef ODP_NETMAP
#include <odp_posix_extensions.h>
diff --git a/platform/linux-generic/pktio/pcap.c b/platform/linux-generic/pktio/pcap.c
index 684c4e1..7808242 100644
--- a/platform/linux-generic/pktio/pcap.c
+++ b/platform/linux-generic/pktio/pcap.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/**
* @file
*
diff --git a/platform/linux-generic/pktio/ring.c b/platform/linux-generic/pktio/ring.c
index e3c73d1..3b708f7 100644
--- a/platform/linux-generic/pktio/ring.c
+++ b/platform/linux-generic/pktio/ring.c
@@ -69,6 +69,8 @@
*
***************************************************************************/
+#include "config.h"
+
#include <odp_api.h>
#include <fcntl.h>
#include <stdio.h>
@@ -98,8 +100,10 @@ static TAILQ_HEAD(, _ring) odp_ring_list;
switch (n & 0x3) { \
case 3: \
r->ring[idx++] = obj_table[i++]; \
+ /* fallthrough */ \
case 2: \
r->ring[idx++] = obj_table[i++]; \
+ /* fallthrough */ \
case 1: \
r->ring[idx++] = obj_table[i++]; \
} \
@@ -127,8 +131,10 @@ static TAILQ_HEAD(, _ring) odp_ring_list;
switch (n & 0x3) { \
case 3: \
obj_table[i++] = r->ring[idx++]; \
+ /* fallthrough */ \
case 2: \
obj_table[i++] = r->ring[idx++]; \
+ /* fallthrough */ \
case 1: \
obj_table[i++] = r->ring[idx++]; \
} \
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index c7c3c5a..55d2e27 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -5,6 +5,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <sys/socket.h>
@@ -698,7 +700,7 @@ static uint32_t _tx_pkt_to_iovec(odp_packet_t pkt,
struct iovec iovecs[MAX_SEGS])
{
uint32_t pkt_len = odp_packet_len(pkt);
- uint32_t offset = odp_packet_l2_offset(pkt);
+ uint32_t offset = 0;
uint32_t iov_count = 0;
while (offset < pkt_len) {
diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c
index 3dd03e6..09ad813 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -5,6 +5,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_posix_extensions.h>
#include <odp_packet_io_internal.h>
diff --git a/platform/linux-generic/pktio/sysfs.c b/platform/linux-generic/pktio/sysfs.c
index be0822d..c3d4fae 100644
--- a/platform/linux-generic/pktio/sysfs.c
+++ b/platform/linux-generic/pktio/sysfs.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp_api.h>
#include <odp_packet_io_internal.h>
#include <errno.h>
diff --git a/platform/linux-generic/pktio/tap.c b/platform/linux-generic/pktio/tap.c
index 090e51b..80a13d2 100644
--- a/platform/linux-generic/pktio/tap.c
+++ b/platform/linux-generic/pktio/tap.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
/**
* @file
*
diff --git a/platform/linux-generic/pool/generic.c b/platform/linux-generic/pool/generic.c
index c628eb1..520d8a6 100644
--- a/platform/linux-generic/pool/generic.c
+++ b/platform/linux-generic/pool/generic.c
@@ -4,10 +4,13 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/pool.h>
#include <odp/api/shared_memory.h>
#include <odp/api/align.h>
#include <odp/api/ticketlock.h>
+#include <odp/api/system_info.h>
#include <odp_pool_internal.h>
#include <odp_internal.h>
@@ -37,6 +40,9 @@ ODP_STATIC_ASSERT(CONFIG_POOL_CACHE_SIZE > (2 * CACHE_BURST),
ODP_STATIC_ASSERT(CONFIG_PACKET_SEG_LEN_MIN >= 256,
"ODP Segment size must be a minimum of 256 bytes");
+ODP_STATIC_ASSERT(CONFIG_PACKET_SEG_SIZE < 0xffff,
+ "Segment size must be less than 64k (16 bit offsets)");
+
pool_table_t *pool_tbl;
__thread pool_local_t local;
@@ -233,12 +239,17 @@ static void init_buffers(pool_t *pool)
/* Show user requested size through API */
buf_hdr->uarea_size = pool->params.pkt.uarea_size;
buf_hdr->segcount = 1;
+ buf_hdr->num_seg = 1;
+ buf_hdr->next_seg = NULL;
+ buf_hdr->last_seg = buf_hdr;
/* Pointer to data start (of the first segment) */
buf_hdr->seg[0].hdr = buf_hdr;
buf_hdr->seg[0].data = &data[offset];
buf_hdr->seg[0].len = pool->data_size;
+ odp_atomic_init_u32(&buf_hdr->ref_cnt, 0);
+
/* Store base values for fast init */
buf_hdr->base_data = buf_hdr->seg[0].data;
buf_hdr->buf_end = &data[offset + pool->data_size +
@@ -249,6 +260,22 @@ static void init_buffers(pool_t *pool)
}
}
+static bool shm_is_from_huge_pages(odp_shm_t shm)
+{
+ odp_shm_info_t info;
+ uint64_t huge_page_size = odp_sys_huge_page_size();
+
+ if (huge_page_size == 0)
+ return 0;
+
+ if (odp_shm_info(shm, &info)) {
+ ODP_ERR("Failed to fetch shm info\n");
+ return 0;
+ }
+
+ return (info.page_size >= huge_page_size);
+}
+
static odp_pool_t pool_create(const char *name, odp_pool_param_t *params,
uint32_t shmflags)
{
@@ -296,6 +323,10 @@ static odp_pool_t pool_create(const char *name, odp_pool_param_t *params,
break;
case ODP_POOL_PACKET:
+ if (params->pkt.headroom > CONFIG_PACKET_HEADROOM) {
+ ODP_ERR("Packet headroom size not supported.");
+ return ODP_POOL_INVALID;
+ }
headroom = CONFIG_PACKET_HEADROOM;
tailroom = CONFIG_PACKET_TAILROOM;
num = params->pkt.num;
@@ -374,6 +405,8 @@ static odp_pool_t pool_create(const char *name, odp_pool_param_t *params,
goto error;
}
+ pool->mem_from_huge_pages = shm_is_from_huge_pages(pool->shm);
+
pool->base_addr = odp_shm_addr(pool->shm);
pool->uarea_shm = ODP_SHM_INVALID;
@@ -484,10 +517,8 @@ static odp_pool_t generic_pool_create(const char *name,
if (check_params(params))
return ODP_POOL_INVALID;
-#ifdef _ODP_PKTIO_IPC
if (params && (params->type == ODP_POOL_PACKET))
shm_flags = ODP_SHM_PROC;
-#endif
return pool_create(name, params, shm_flags);
}
@@ -584,6 +615,7 @@ static int generic_pool_capability(odp_pool_capability_t *capa)
capa->pkt.max_len = CONFIG_PACKET_MAX_SEGS * max_seg_len;
capa->pkt.max_num = CONFIG_POOL_MAX_NUM;
capa->pkt.min_headroom = CONFIG_PACKET_HEADROOM;
+ capa->pkt.max_headroom = CONFIG_PACKET_HEADROOM;
capa->pkt.min_tailroom = CONFIG_PACKET_TAILROOM;
capa->pkt.max_segs_per_pkt = CONFIG_PACKET_MAX_SEGS;
capa->pkt.min_seg_len = max_seg_len;
@@ -636,6 +668,7 @@ static void generic_pool_print(odp_pool_t pool_hdl)
static void generic_pool_param_init(odp_pool_param_t *params)
{
memset(params, 0, sizeof(odp_pool_param_t));
+ params->pkt.headroom = CONFIG_PACKET_HEADROOM;
}
static uint64_t generic_pool_to_u64(odp_pool_t hdl)
diff --git a/platform/linux-generic/queue/generic.c b/platform/linux-generic/queue/generic.c
index 37f13d0..ab2b970 100644
--- a/platform/linux-generic/queue/generic.c
+++ b/platform/linux-generic/queue/generic.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/queue.h>
#include <odp_queue_internal.h>
#include <odp_queue_if.h>
@@ -175,12 +177,12 @@ static odp_schedule_group_t generic_queue_sched_group(odp_queue_t handle)
return handle_to_qentry(handle)->s.param.sched.group;
}
-static int generic_queue_lock_count(odp_queue_t handle)
+static uint32_t generic_queue_lock_count(odp_queue_t handle)
{
queue_entry_t *queue = handle_to_qentry(handle);
return queue->s.param.sched.sync == ODP_SCHED_SYNC_ORDERED ?
- (int)queue->s.param.sched.lock_count : -1;
+ queue->s.param.sched.lock_count : 0;
}
static odp_queue_t generic_queue_create(const char *name,
diff --git a/platform/linux-generic/queue/scalable.c b/platform/linux-generic/queue/scalable.c
index 020b790..00cd8da 100644
--- a/platform/linux-generic/queue/scalable.c
+++ b/platform/linux-generic/queue/scalable.c
@@ -5,6 +5,7 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
#include <odp/api/hints.h>
#include <odp/api/plat/ticketlock_inlines.h>
@@ -50,7 +51,7 @@ typedef struct queue_table_t {
} queue_table_t;
static queue_table_t *queue_tbl;
-_odp_ishm_pool_t *queue_shm_pool;
+static _odp_ishm_pool_t *queue_shm_pool;
static inline odp_queue_t queue_from_id(uint32_t queue_id)
{
@@ -70,6 +71,11 @@ static queue_entry_t *get_qentry(uint32_t queue_id)
return &queue_tbl->queue[queue_id];
}
+queue_entry_t *qentry_from_ext(odp_queue_t handle)
+{
+ return get_qentry(queue_to_id(handle));
+}
+
static int _odp_queue_disable_enq(sched_elem_t *q)
{
ringidx_t old_read, old_write, new_write;
@@ -170,9 +176,12 @@ static int queue_init(queue_entry_t *queue, const char *name,
goto rwin_create_failed;
}
}
+ sched_elem->sched_grp = param->sched.group;
+ sched_elem->sched_prio = param->sched.prio;
sched_elem->schedq =
- schedq_from_sched_group(param->sched.group,
- param->sched.prio);
+ sched_queue_add(param->sched.group, param->sched.prio);
+ ODP_ASSERT(sched_elem->schedq != NULL);
+
}
return 0;
@@ -333,12 +342,12 @@ static odp_schedule_group_t scalable_queue_sched_group(odp_queue_t handle)
return qentry_from_int(queue_from_ext(handle))->s.param.sched.group;
}
-static int scalable_queue_lock_count(odp_queue_t handle)
+static uint32_t scalable_queue_lock_count(odp_queue_t handle)
{
queue_entry_t *queue = qentry_from_int(queue_from_ext(handle));
return queue->s.param.sched.sync == ODP_SCHED_SYNC_ORDERED ?
- (int)queue->s.param.sched.lock_count : -1;
+ queue->s.param.sched.lock_count : 0;
}
static odp_queue_t scalable_queue_create(const char *name,
@@ -433,19 +442,20 @@ static int scalable_queue_destroy(odp_queue_t handle)
doze();
}
- /* Adjust the spread factor for the queues in the schedule group */
- if (queue->s.type == ODP_QUEUE_TYPE_SCHED)
- sched_group_xcount_dec(queue->s.param.sched.group,
- queue->s.param.sched.prio);
+ if (q->schedq != NULL) {
+ sched_queue_rem(q->sched_grp, q->sched_prio);
+ q->schedq = NULL;
+ }
_odp_ishm_pool_free(queue_shm_pool, q->prod_ring);
- if (queue->s.param.sched.sync == ODP_SCHED_SYNC_ORDERED) {
+ if (q->rwin != NULL) {
if (rwin_free(queue_shm_pool, q->rwin) < 0) {
ODP_ERR("Failed to free reorder window\n");
UNLOCK(&queue->s.lock);
return -1;
}
+ q->rwin = NULL;
}
queue->s.status = QUEUE_STATUS_FREE;
UNLOCK(&queue->s.lock);
@@ -554,11 +564,11 @@ static inline int _odp_queue_enq(sched_elem_t *q,
return actual;
}
-#else
+#endif
-static inline int _odp_queue_enq_sp(sched_elem_t *q,
- odp_buffer_hdr_t *buf_hdr[],
- int num)
+int _odp_queue_enq_sp(sched_elem_t *q,
+ odp_buffer_hdr_t *buf_hdr[],
+ int num)
{
ringidx_t old_read;
ringidx_t old_write;
@@ -602,7 +612,6 @@ static inline int _odp_queue_enq_sp(sched_elem_t *q,
return actual;
}
-#endif
static int _queue_enq_multi(queue_t handle, odp_buffer_hdr_t *buf_hdr[],
int num)
diff --git a/platform/linux-generic/queue/subsystem.c b/platform/linux-generic/queue/subsystem.c
index e4c66a2..5a88b2d 100644
--- a/platform/linux-generic/queue/subsystem.c
+++ b/platform/linux-generic/queue/subsystem.c
@@ -5,6 +5,9 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+
+#include <config.h>
+
#include <odp/api/queue.h>
#include <odp_internal.h>
#include <odp_debug_internal.h>
@@ -219,7 +222,7 @@ odp_schedule_group_t odp_queue_sched_group(odp_queue_t queue_hdl)
return mod->sched_group(queue_hdl);
}
-int odp_queue_lock_count(odp_queue_t queue_hdl)
+uint32_t odp_queue_lock_count(odp_queue_t queue_hdl)
{
odp_queue_module_t *mod =
odp_subsystem_active_module(queue, mod);
diff --git a/platform/linux-generic/schedule/generic.c b/platform/linux-generic/schedule/generic.c
index 36ed857..73fef40 100644
--- a/platform/linux-generic/schedule/generic.c
+++ b/platform/linux-generic/schedule/generic.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <string.h>
#include <odp/api/schedule.h>
#include <odp_schedule_if.h>
@@ -250,7 +252,7 @@ typedef struct {
int prio;
int queue_per_prio;
int sync;
- unsigned order_lock_count;
+ uint32_t order_lock_count;
} queue[ODP_CONFIG_QUEUES];
struct {
@@ -460,7 +462,7 @@ static inline int grp_update_tbl(void)
return num;
}
-static unsigned schedule_max_ordered_locks(void)
+static uint32_t schedule_max_ordered_locks(void)
{
return CONFIG_QUEUE_MAX_ORD_LOCKS;
}
@@ -587,7 +589,7 @@ static inline void free_pktio_cmd(pktio_cmd_t *cmd)
}
static void schedule_pktio_start(int pktio_index, int num_pktin,
- int pktin_idx[])
+ int pktin_idx[], odp_queue_t odpq[] ODP_UNUSED)
{
int i, idx;
pktio_cmd_t *cmd;
@@ -694,7 +696,7 @@ static inline void ordered_stash_release(void)
static inline void release_ordered(void)
{
uint32_t qi;
- unsigned i;
+ uint32_t i;
qi = sched_local.ordered.src_queue;
@@ -1095,7 +1097,7 @@ static void order_unlock(void)
{
}
-static void schedule_order_lock(unsigned lock_index)
+static void schedule_order_lock(uint32_t lock_index)
{
odp_atomic_u64_t *ord_lock;
uint32_t queue_index;
@@ -1122,7 +1124,7 @@ static void schedule_order_lock(unsigned lock_index)
}
}
-static void schedule_order_unlock(unsigned lock_index)
+static void schedule_order_unlock(uint32_t lock_index)
{
odp_atomic_u64_t *ord_lock;
uint32_t queue_index;
@@ -1139,6 +1141,13 @@ static void schedule_order_unlock(unsigned lock_index)
odp_atomic_store_rel_u64(ord_lock, sched_local.ordered.ctx + 1);
}
+static void schedule_order_unlock_lock(uint32_t unlock_index,
+ uint32_t lock_index)
+{
+ schedule_order_unlock(unlock_index);
+ schedule_order_lock(lock_index);
+}
+
static void schedule_pause(void)
{
sched_local.pause = 1;
@@ -1410,24 +1419,25 @@ odp_schedule_module_t schedule_generic = {
.init_local = schedule_init_local,
.term_local = schedule_term_local,
},
- .wait_time = schedule_wait_time,
- .schedule = schedule,
- .schedule_multi = schedule_multi,
- .schedule_pause = schedule_pause,
- .schedule_resume = schedule_resume,
- .schedule_release_atomic = schedule_release_atomic,
- .schedule_release_ordered = schedule_release_ordered,
- .schedule_prefetch = schedule_prefetch,
- .schedule_num_prio = schedule_num_prio,
- .schedule_group_create = schedule_group_create,
- .schedule_group_destroy = schedule_group_destroy,
- .schedule_group_lookup = schedule_group_lookup,
- .schedule_group_join = schedule_group_join,
- .schedule_group_leave = schedule_group_leave,
- .schedule_group_thrmask = schedule_group_thrmask,
- .schedule_group_info = schedule_group_info,
- .schedule_order_lock = schedule_order_lock,
- .schedule_order_unlock = schedule_order_unlock
+ .wait_time = schedule_wait_time,
+ .schedule = schedule,
+ .schedule_multi = schedule_multi,
+ .schedule_pause = schedule_pause,
+ .schedule_resume = schedule_resume,
+ .schedule_release_atomic = schedule_release_atomic,
+ .schedule_release_ordered = schedule_release_ordered,
+ .schedule_prefetch = schedule_prefetch,
+ .schedule_num_prio = schedule_num_prio,
+ .schedule_group_create = schedule_group_create,
+ .schedule_group_destroy = schedule_group_destroy,
+ .schedule_group_lookup = schedule_group_lookup,
+ .schedule_group_join = schedule_group_join,
+ .schedule_group_leave = schedule_group_leave,
+ .schedule_group_thrmask = schedule_group_thrmask,
+ .schedule_group_info = schedule_group_info,
+ .schedule_order_lock = schedule_order_lock,
+ .schedule_order_unlock = schedule_order_unlock,
+ .schedule_order_unlock_lock = schedule_order_unlock_lock
};
ODP_MODULE_CONSTRUCTOR(schedule_generic)
diff --git a/platform/linux-generic/schedule/iquery.c b/platform/linux-generic/schedule/iquery.c
index ac0d098..5de2298 100644
--- a/platform/linux-generic/schedule/iquery.c
+++ b/platform/linux-generic/schedule/iquery.c
@@ -4,6 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include "config.h"
+
#include <odp/api/schedule.h>
#include <odp_schedule_if.h>
#include <odp/api/align.h>
@@ -574,7 +576,10 @@ static inline void free_pktio_cmd(pktio_cmd_t *cmd)
odp_rwlock_write_unlock(&sched->pktio_poll.lock);
}
-static void schedule_pktio_start(int pktio, int count, int pktin[])
+static void schedule_pktio_start(int pktio,
+ int count,
+ int pktin[],
+ odp_queue_t odpq[] ODP_UNUSED)
{
int i, index;
pktio_cmd_t *cmd;
@@ -1150,7 +1155,7 @@ static inline void ordered_stash_release(void)
static inline void release_ordered(void)
{
uint32_t qi;
- unsigned i;
+ uint32_t i;
qi = thread_local.ordered.src_queue;
@@ -1252,7 +1257,7 @@ static void order_unlock(void)
{
}
-static void schedule_order_lock(unsigned lock_index)
+static void schedule_order_lock(uint32_t lock_index)
{
odp_atomic_u64_t *ord_lock;
uint32_t queue_index;
@@ -1279,7 +1284,7 @@ static void schedule_order_lock(unsigned lock_index)
}
}
-static void schedule_order_unlock(unsigned lock_index)
+static void schedule_order_unlock(uint32_t lock_index)
{
odp_atomic_u64_t *ord_lock;
uint32_t queue_index;
@@ -1296,7 +1301,14 @@ static void schedule_order_unlock(unsigned lock_index)
odp_atomic_store_rel_u64(ord_lock, thread_local.ordered.ctx + 1);
}
-static unsigned schedule_max_ordered_locks(void)
+static void schedule_order_unlock_lock(uint32_t unlock_index,
+ uint32_t lock_index)
+{
+ schedule_order_unlock(unlock_index);
+ schedule_order_lock(lock_index);
+}
+
+static uint32_t schedule_max_ordered_locks(void)
{
return CONFIG_QUEUE_MAX_ORD_LOCKS;
}
@@ -1371,7 +1383,8 @@ odp_schedule_module_t schedule_iquery = {
.schedule_group_thrmask = schedule_group_thrmask,
.schedule_group_info = schedule_group_info,
.schedule_order_lock = schedule_order_lock,
- .schedule_order_unlock = schedule_order_unlock
+ .schedule_order_unlock = schedule_order_unlock,
+ .schedule_order_unlock_lock = schedule_order_unlock_lock
};
ODP_MODULE_CONSTRUCTOR(schedule_iquery)
diff --git a/platform/linux-generic/schedule/scalable.c b/platform/linux-generic/schedule/scalable.c
index 0fba38a..2786573 100644
--- a/platform/linux-generic/schedule/scalable.c
+++ b/platform/linux-generic/schedule/scalable.c
@@ -5,6 +5,7 @@
*
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <config.h>
#include <odp/api/align.h>
#include <odp/api/atomic.h>
@@ -40,42 +41,17 @@
#define LOCK(a) _odp_ticketlock_lock((a))
#define UNLOCK(a) _odp_ticketlock_unlock((a))
-#define TAG_EMPTY 0U
-#define TAG_USED (1U << 15)
-#define TAG_BUSY (1U << 31)
-#define PKTIO_QUEUE_2_TAG(p, q) ((p) << 16 | (q) | TAG_USED)
-#define TAG_2_PKTIO(t) (((t) >> 16) & 0x7FFF)
-#define TAG_2_QUEUE(t) ((t) & 0x7FFF)
-#define TAG_IS_READY(t) (((t) & (TAG_USED | TAG_BUSY)) == TAG_USED)
-#define PKTIN_MAX (ODP_CONFIG_PKTIO_ENTRIES * PKTIO_MAX_QUEUES)
#define MAXTHREADS ATOM_BITSET_SIZE
+#define FLAG_PKTIN 0x80
+
static _odp_ishm_pool_t *sched_shm_pool;
-static uint32_t pktin_num;
-static uint32_t pktin_hi;
-static uint16_t pktin_count[ODP_CONFIG_PKTIO_ENTRIES];
-static uint32_t pktin_tags[PKTIN_MAX] ODP_ALIGNED_CACHE;
-
-#define __atomic_fetch_max(var, v, mo) do { \
- /* Evalulate 'v' once */ \
- __typeof__(v) tmp_v = (v); \
- __typeof__(*var) old_var = \
- __atomic_load_n((var), __ATOMIC_RELAXED); \
- while (tmp_v > old_var) { \
- /* Attempt to store 'v' in '*var' */ \
- if (__atomic_compare_exchange_n((var), &old_var, \
- tmp_v, true, (mo), \
- (mo))) \
- break; \
- } \
- /* v <= old_var, nothing to do */ \
- } while (0)
-
-ODP_STATIC_ASSERT(ODP_SCHED_PRIO_LOWEST == (ODP_SCHED_PRIO_NUM - 1),
+
+ODP_STATIC_ASSERT(ODP_SCHED_PRIO_LOWEST == (ODP_SCHED_PRIO_NUM - 2),
"lowest_prio_does_not_match_with_num_prios");
ODP_STATIC_ASSERT((ODP_SCHED_PRIO_NORMAL > 0) &&
- (ODP_SCHED_PRIO_NORMAL < (ODP_SCHED_PRIO_NUM - 1)),
+ (ODP_SCHED_PRIO_NORMAL < (ODP_SCHED_PRIO_NUM - 2)),
"normal_prio_is_not_between_highest_and_lowest");
ODP_STATIC_ASSERT(CHECK_IS_POWER2(ODP_CONFIG_QUEUES),
@@ -88,7 +64,7 @@ ODP_STATIC_ASSERT(CHECK_IS_POWER2(ODP_CONFIG_QUEUES),
static sched_group_mask_t sg_free;
static sched_group_t *sg_vec[MAX_SCHED_GROUP];
/* Group lock for MT-safe APIs */
-odp_spinlock_t sched_grp_lock;
+static odp_spinlock_t sched_grp_lock;
#define SCHED_GROUP_JOIN 0
#define SCHED_GROUP_LEAVE 1
@@ -99,9 +75,6 @@ odp_spinlock_t sched_grp_lock;
static sched_scalable_thread_state_t thread_state[MAXTHREADS];
__thread sched_scalable_thread_state_t *sched_ts;
-/*
- * Forward declarations.
- */
static int thread_state_init(int tidx)
{
sched_scalable_thread_state_t *ts;
@@ -110,13 +83,12 @@ static int thread_state_init(int tidx)
ODP_ASSERT(tidx < MAXTHREADS);
ts = &thread_state[tidx];
ts->atomq = NULL;
+ ts->src_schedq = NULL;
ts->rctx = NULL;
ts->pause = false;
ts->out_of_order = false;
ts->tidx = tidx;
ts->dequeued = 0;
- ts->pktin_next = 0;
- ts->pktin_poll_cnts = 0;
ts->ticket = TICKET_INVALID;
ts->priv_rvec_free = 0;
ts->rvec_free = (1ULL << TS_RVEC_SIZE) - 1;
@@ -539,7 +511,25 @@ static inline void sched_update_popd(sched_elem_t *elem)
}
#endif
-sched_queue_t *schedq_from_sched_group(odp_schedule_group_t grp, uint32_t prio)
+static void signal_threads_add(sched_group_t *sg, uint32_t sgi, uint32_t prio)
+{
+ sched_group_mask_t thrds = sg->thr_wanted;
+ uint32_t thr;
+
+ while (!bitset_is_null(thrds)) {
+ thr = bitset_ffs(thrds) - 1;
+ thrds = bitset_clr(thrds, thr);
+ /* Notify the thread about membership in this
+ * group/priority.
+ */
+ atom_bitset_set(&thread_state[thr].sg_wanted[prio],
+ sgi, __ATOMIC_RELEASE);
+ __atomic_store_n(&thread_state[thr].sg_sem, 1,
+ __ATOMIC_RE