2
0
mirror of https://github.com/boostorg/math.git synced 2026-01-19 04:22:09 +00:00

Merge branch 'autodiff' of https://github.com/pulver/math into autodiff

This commit is contained in:
John Maddock
2019-04-23 18:04:27 +01:00
24 changed files with 7582 additions and 2 deletions

Binary file not shown.

View File

@@ -0,0 +1,229 @@
[/ Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)]
[section:autodiff Automatic Differentiation]
[template autodiff_equation[name] '''<inlinemediaobject><imageobject><imagedata fileref="../equations/autodiff/'''[name]'''"></imagedata></imageobject></inlinemediaobject>''']
[h1:synopsis Synopsis]
#include <boost/math/differentiation/autodiff.hpp>
namespace boost { namespace math { namespace differentiation {
// Type for variables and constants.
template<typename RealType, size_t Order, size_t... Orders>
using autodiff_fvar = typename detail::nest_fvar<RealType,Order,Orders...>::type;
// Function returning a variable of differentiation.
template<typename RealType, size_t Order, size_t... Orders>
autodiff_fvar<RealType,Order,Orders...> make_fvar(const RealType& ca);
// Type of combined autodiff types.
template<typename RealType, typename... RealTypes>
using promote = typename detail::promote_args_n<RealType,RealTypes...>::type;
namespace detail {
// Single autodiff variable. Independent variables are created by nesting.
template<typename RealType, size_t Order>
class fvar
{
public:
// Query return value of function to get the derivatives.
template<typename... Orders>
get_type_at<RealType, sizeof...(Orders)-1> derivative(Orders... orders) const;
// All of the arithmetic and comparison operators are overloaded.
template<typename RealType2, size_t Order2>
fvar& operator+=(const fvar<RealType2,Order2>&);
fvar& operator+=(const root_type&);
// ...
};
// Standard math functions are overloaded and called via argument-dependent lookup (ADL).
template<typename RealType, size_t Order>
fvar<RealType,Order> floor(const fvar<RealType,Order>&);
template<typename RealType, size_t Order>
fvar<RealType,Order> exp(const fvar<RealType,Order>&);
// ...
} // namespace detail
} } } // namespace boost::math::differentiation
[h1:description Description]
Autodiff is a header-only C++ library that facilitates the [@https://en.wikipedia.org/wiki/Automatic_differentiation
automatic differentiation] (forward mode) of mathematical functions of single and multiple variables.
This implementation is based upon the [@https://en.wikipedia.org/wiki/Taylor_series Taylor series] expansion of
an analytic function /f/ at the point ['x[sub 0]]:
[/ Thanks to http://www.tlhiv.org/ltxpreview/ for LaTeX-to-SVG conversions. ]
[/ \Large\begin{align*}
f(x_0+\varepsilon) &= f(x_0) + f'(x_0)\varepsilon + \frac{f''(x_0)}{2!}\varepsilon^2 + \frac{f'''(x_0)}{3!}\varepsilon^3 + \cdots \\
&= \sum_{n=0}^N\frac{f^{(n)}(x_0)}{n!}\varepsilon^n + O\left(\varepsilon^{N+1}\right).
\end{align*} ]
[:[:[autodiff_equation taylor_series.svg]]]
The essential idea of autodiff is the replacement of numbers with polynomials in the evaluation of /f/. By inputting
the first-order polynomial ['x[sub 0]+\u03b5], the resulting polynomial in ['\u03b5] contains the function's
derivatives within the coefficients. Each coefficient is equal to a derivative of its respective order, divided
by the factorial of the order.
Assume one is interested in calculating the first /N/ derivatives of /f/ at ['x[sub 0]]. Then without any loss of
precision to the calculation of the derivatives, all terms ['O(\u03b5[super N+1])] that include powers of ['\u03b5]
greater than /N/ can be discarded, and under these truncation rules, /f/ provides a polynomial-to-polynomial
transformation:
[/ \Large$$f \qquad : \qquad x_0+\varepsilon \qquad \mapsto \qquad
\sum_{n=0}^Ny_n\varepsilon^n=\sum_{n=0}^N\frac{f^{(n)}(x_0)}{n!}\varepsilon^n.$$ ]
[:[:[autodiff_equation polynomial_transform.svg]]]
C++'s ability to overload operators and functions allows for the creation of a class `fvar` ([_f]orward-mode autodiff
[_var]iable) that represents polynomials in ['\u03b5]. Thus the same algorithm that calculates the numeric value of
['y[sub 0]=f(x[sub 0])] is also used to calculate the polynomial ['\u03a3[sub n]y[sub n]\u03b5[super n]=f(x[sub
0]+\u03b5)]. The derivatives are then found from the product of the respective factorial and coefficient:
[/ \Large$$\frac{d^nf}{dx^n}(x_0)=n!y_n.$$ ]
[:[:[autodiff_equation derivative_formula.svg]]]
[h1:examples Examples]
[h2:example-single-variable Example 1: Single-variable derivatives]
[h3 Calculate derivatives of ['f(x)=x[super 4]] at /x/=2.]
In this example, `autodiff_fvar<double,5>` is a data type that can hold a polynomial of up to degree 5, and
`make_fvar<double,5>(2)` represents the polynomial 2+['\u03b5]. Internally, this is modeled by a `std::array<double,6>`
whose elements `{2, 1, 0, 0, 0, 0}` correspond to the 6 coefficients of the polynomial upon initialization.
Its fourth power is a polynomial with coefficients `y = {16, 32, 24, 8, 1, 0}`. The derivatives are obtained
using the formula ['f[super (n)](2)=n!*y[n]].
#include <boost/math/differentiation/autodiff.hpp>
#include <iostream>
template<typename T>
T fourth_power(T x)
{
x *= x;
return x *= x;
}
int main()
{
using namespace boost::math::differentiation;
constexpr int Order=5; // The highest order derivative to be calculated.
const autodiff_fvar<double,Order> x = make_fvar<double,Order>(2.0); // Find derivatives at x=2.
const autodiff_fvar<double,Order> y = fourth_power(x);
for (int i=0 ; i<=Order ; ++i)
std::cout << "y.derivative("<<i<<") = " << y.derivative(i) << std::endl;
return 0;
}
/* Output:
y.derivative(0) = 16
y.derivative(1) = 32
y.derivative(2) = 48
y.derivative(3) = 48
y.derivative(4) = 24
y.derivative(5) = 0
*/
The above calculates
[/ \Large\begin{alignat*}{3}
{\tt y.derivative(0)} &=& f(2) =&& \left.x^4\right|_{x=2} &= 16\\
{\tt y.derivative(1)} &=& f'(2) =&& \left.4\cdot x^3\right|_{x=2} &= 32\\
{\tt y.derivative(2)} &=& f''(2) =&& \left.4\cdot 3\cdot x^2\right|_{x=2} &= 48\\
{\tt y.derivative(3)} &=& f'''(2) =&& \left.4\cdot 3\cdot2\cdot x\right|_{x=2} &= 48\\
{\tt y.derivative(4)} &=& f^{(4)}(2) =&& 4\cdot 3\cdot2\cdot1 &= 24\\
{\tt y.derivative(5)} &=& f^{(5)}(2) =&& 0 &
\end{alignat*} ]
[:[:[autodiff_equation example1.svg]]]
[h2:example-multiprecision
Example 2: Multi-variable mixed partial derivatives with multi-precision data type]
[/ \Large$\frac{\partial^{12}f}{\partial w^{3}\partial x^{2}\partial y^{4}\partial z^{3}}(11,12,13,14)$]
[/ \Large$f(w,x,y,z)=\exp\left(w\sin\left(\frac{x\log(y)}{z}\right)+\sqrt{\frac{wz}{xy}}\right)+\frac{w^2}{\tan(z)}$]
[h3 Calculate [autodiff_equation mixed12.svg] with a precision of about 50 decimal digits,
where [autodiff_equation example2f.svg].]
In this example, the data type `autodiff_fvar<cpp_bin_float_50,Nw,Nx,Ny,Nz>` represents a multivariate polynomial in
4 independent variables, where the highest powers of each are `Nw`, `Nx`, `Ny` and `Nz`. The underlying arithmetic
data type, aliased as `root_type`, is `boost::multiprecision::cpp_bin_float_50`. The internal data structure is
`std::array<std::array<std::array<std::array<cpp_bin_float_50,Nz+1>,Ny+1>,Nx+1>,Nw+1>`. The `root_type` is always
the first template parameter to `autodiff_fvar<...>` followed by the maximum derivative orders that are to be
calculated for each independent variable.
When variables are initialized with `make_fvar<...>()`, the position of the last derivative order given in the
template parameter pack determines which variable is taken to be independent. In other words, it determines which
of the 4 different polynomial variables ['\u03b5[sub w]], ['\u03b5[sub x]], ['\u03b5[sub y]], or ['\u03b5[sub z]]
are to be added to the constant term:
[/ \Large\begin{align*}
\texttt{make\_fvar<cpp\_bin\_float\_50,Nw>(11)} &= 11+\varepsilon_w \\
\texttt{make\_fvar<cpp\_bin\_float\_50,0,Nx>(12)} &= 12+\varepsilon_x \\
\texttt{make\_fvar<cpp\_bin\_float\_50,0,0,Ny>(13)} &= 13+\varepsilon_y \\
\texttt{make\_fvar<cpp\_bin\_float\_50,0,0,0,Nz>(14)} &= 14+\varepsilon_z
\end{align*}\]
[:[:[autodiff_equation example2make_fvar.svg]]]
Instances of different types are automatically promoted to the smallest multi-variable type that accommodates both
when they are combined (added, subtracted, multiplied, divided.)
#include <boost/math/differentiation/autodiff.hpp>
#include <boost/multiprecision/cpp_bin_float.hpp>
#include <iostream>
template<typename T>
T f(const T& w, const T& x, const T& y, const T& z)
{
using namespace std;
return exp(w*sin(x*log(y)/z) + sqrt(w*z/(x*y))) + w*w/tan(z);
}
int main()
{
using cpp_bin_float_50 = boost::multiprecision::cpp_bin_float_50;
using namespace boost::math::differentiation;
constexpr int Nw=3; // Max order of derivative to calculate for w
constexpr int Nx=2; // Max order of derivative to calculate for x
constexpr int Ny=4; // Max order of derivative to calculate for y
constexpr int Nz=3; // Max order of derivative to calculate for z
using var = autodiff_fvar<cpp_bin_float_50,Nw,Nx,Ny,Nz>;
const var w = make_fvar<cpp_bin_float_50,Nw>(11);
const var x = make_fvar<cpp_bin_float_50,0,Nx>(12);
const var y = make_fvar<cpp_bin_float_50,0,0,Ny>(13);
const var z = make_fvar<cpp_bin_float_50,0,0,0,Nz>(14);
const var v = f(w,x,y,z);
// Calculated from Mathematica symbolic differentiation. See multiprecision.nb for script.
const cpp_bin_float_50 answer("1976.319600747797717779881875290418720908121189218755");
std::cout << std::setprecision(std::numeric_limits<cpp_bin_float_50>::digits10)
<< "mathematica : " << answer << '\n'
<< "autodiff : " << v.derivative(Nw,Nx,Ny,Nz) << '\n'
<< "relative error: " << std::setprecision(3) << (v.derivative(Nw,Nx,Ny,Nz)/answer-1) << std::endl;
return 0;
}
/*
Output:
mathematica : 1976.3196007477977177798818752904187209081211892188
autodiff : 1976.3196007477977177798818752904187209081211892188
relative error: 2.67e-50
*/
[h1 Manual]
Additional details are in the [@../differentiation/autodiff.pdf autodiff manual].
[endsect]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96pt" height="31pt" viewBox="0 0 96 31" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d="M 7.21875 -9.59375 C 7.234375 -9.65625 7.265625 -9.734375 7.265625 -9.8125 C 7.265625 -9.953125 7.109375 -9.953125 7.078125 -9.953125 C 7.078125 -9.953125 6.375 -9.890625 6.296875 -9.890625 C 6.046875 -9.875 5.84375 -9.84375 5.578125 -9.828125 C 5.21875 -9.796875 5.125 -9.78125 5.125 -9.53125 C 5.125 -9.375 5.234375 -9.375 5.4375 -9.375 C 6.140625 -9.375 6.15625 -9.25 6.15625 -9.109375 C 6.15625 -9.015625 6.125 -8.90625 6.109375 -8.859375 L 5.234375 -5.375 C 5.078125 -5.75 4.6875 -6.328125 3.9375 -6.328125 C 2.328125 -6.328125 0.578125 -4.234375 0.578125 -2.109375 C 0.578125 -0.6875 1.40625 0.140625 2.375 0.140625 C 3.171875 0.140625 3.84375 -0.46875 4.25 -0.953125 C 4.390625 -0.09375 5.0625 0.140625 5.5 0.140625 C 5.921875 0.140625 6.265625 -0.109375 6.53125 -0.625 C 6.75 -1.125 6.953125 -2 6.953125 -2.046875 C 6.953125 -2.125 6.90625 -2.1875 6.8125 -2.1875 C 6.6875 -2.1875 6.671875 -2.109375 6.609375 -1.890625 C 6.390625 -1.046875 6.125 -0.140625 5.53125 -0.140625 C 5.125 -0.140625 5.09375 -0.515625 5.09375 -0.796875 C 5.09375 -0.859375 5.09375 -1.15625 5.1875 -1.5625 Z M 4.3125 -1.703125 C 4.25 -1.46875 4.25 -1.4375 4.046875 -1.15625 C 3.734375 -0.765625 3.09375 -0.140625 2.421875 -0.140625 C 1.84375 -0.140625 1.5 -0.671875 1.5 -1.515625 C 1.5 -2.3125 1.953125 -3.921875 2.21875 -4.515625 C 2.71875 -5.515625 3.390625 -6.03125 3.9375 -6.03125 C 4.890625 -6.03125 5.078125 -4.859375 5.078125 -4.75 C 5.078125 -4.734375 5.03125 -4.546875 5.015625 -4.515625 Z M 4.3125 -1.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 2.953125 -4.203125 C 2.984375 -4.28125 3.34375 -5 3.875 -5.46875 C 4.25 -5.8125 4.734375 -6.03125 5.296875 -6.03125 C 5.859375 -6.03125 6.0625 -5.609375 6.0625 -5.03125 C 6.0625 -4.21875 5.484375 -2.578125 5.1875 -1.8125 C 5.0625 -1.46875 4.984375 -1.28125 4.984375 -1.015625 C 4.984375 -0.375 5.4375 0.140625 6.125 0.140625 C 7.453125 0.140625 7.953125 -1.96875 7.953125 -2.046875 C 7.953125 -2.125 7.90625 -2.1875 7.8125 -2.1875 C 7.6875 -2.1875 7.671875 -2.140625 7.609375 -1.890625 C 7.265625 -0.71875 6.734375 -0.140625 6.171875 -0.140625 C 6.03125 -0.140625 5.796875 -0.15625 5.796875 -0.609375 C 5.796875 -0.96875 5.953125 -1.40625 6.03125 -1.609375 C 6.328125 -2.390625 6.921875 -4 6.921875 -4.8125 C 6.921875 -5.6875 6.421875 -6.328125 5.328125 -6.328125 C 4.0625 -6.328125 3.390625 -5.421875 3.125 -5.0625 C 3.078125 -5.875 2.5 -6.328125 1.859375 -6.328125 C 1.40625 -6.328125 1.09375 -6.046875 0.84375 -5.5625 C 0.59375 -5.046875 0.390625 -4.1875 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.65625 -4 0.671875 -4.015625 0.765625 -4.34375 C 0.984375 -5.21875 1.25 -6.03125 1.828125 -6.03125 C 2.15625 -6.03125 2.265625 -5.8125 2.265625 -5.375 C 2.265625 -5.0625 2.125 -4.5 2.015625 -4.0625 L 1.625 -2.515625 C 1.5625 -2.234375 1.40625 -1.59375 1.328125 -1.328125 C 1.234375 -0.96875 1.078125 -0.28125 1.078125 -0.21875 C 1.078125 -0.015625 1.234375 0.140625 1.453125 0.140625 C 1.625 0.140625 1.828125 0.0625 1.9375 -0.15625 C 1.96875 -0.234375 2.09375 -0.734375 2.171875 -1.015625 L 2.484375 -2.3125 Z M 2.953125 -4.203125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 3.765625 1.609375 C 3.390625 2.15625 2.828125 2.640625 2.125 2.640625 C 1.953125 2.640625 1.265625 2.609375 1.046875 1.953125 C 1.09375 1.96875 1.15625 1.96875 1.1875 1.96875 C 1.625 1.96875 1.90625 1.59375 1.90625 1.265625 C 1.90625 0.9375 1.640625 0.8125 1.421875 0.8125 C 1.1875 0.8125 0.6875 0.984375 0.6875 1.6875 C 0.6875 2.421875 1.3125 2.921875 2.125 2.921875 C 3.5625 2.921875 5 1.609375 5.40625 0.015625 L 6.8125 -5.578125 C 6.828125 -5.65625 6.859375 -5.734375 6.859375 -5.828125 C 6.859375 -6.03125 6.6875 -6.1875 6.46875 -6.1875 C 6.34375 -6.1875 6.03125 -6.125 5.921875 -5.6875 L 4.859375 -1.484375 C 4.796875 -1.21875 4.796875 -1.1875 4.671875 -1.03125 C 4.390625 -0.625 3.921875 -0.140625 3.234375 -0.140625 C 2.421875 -0.140625 2.359375 -0.9375 2.359375 -1.3125 C 2.359375 -2.140625 2.734375 -3.234375 3.125 -4.28125 C 3.28125 -4.6875 3.375 -4.890625 3.375 -5.171875 C 3.375 -5.78125 2.9375 -6.328125 2.234375 -6.328125 C 0.921875 -6.328125 0.390625 -4.25 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.671875 -4 0.6875 -4.0625 0.75 -4.265625 C 1.09375 -5.46875 1.640625 -6.03125 2.1875 -6.03125 C 2.328125 -6.03125 2.5625 -6.03125 2.5625 -5.5625 C 2.5625 -5.1875 2.40625 -4.78125 2.1875 -4.234375 C 1.484375 -2.359375 1.484375 -1.875 1.484375 -1.53125 C 1.484375 -0.171875 2.46875 0.140625 3.1875 0.140625 C 3.59375 0.140625 4.109375 0.015625 4.625 -0.515625 L 4.640625 -0.5 C 4.421875 0.34375 4.28125 0.90625 3.765625 1.609375 Z M 3.765625 1.609375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 2.640625 -0.6875 C 2.640625 -1.109375 2.296875 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.046875 1.25 -0.703125 C 1.25 -0.28125 1.59375 0 1.9375 0 C 2.359375 0 2.640625 -0.34375 2.640625 -0.6875 Z M 2.640625 -0.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d="M 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.203125 0.109375 1.375 0.03125 1.453125 -0.171875 C 1.453125 -0.1875 1.578125 -0.65625 1.640625 -0.90625 L 1.859375 -1.796875 C 1.90625 -2.03125 1.96875 -2.25 2.03125 -2.46875 C 2.0625 -2.640625 2.140625 -2.9375 2.15625 -2.96875 C 2.296875 -3.28125 2.828125 -4.1875 3.78125 -4.1875 C 4.234375 -4.1875 4.3125 -3.8125 4.3125 -3.484375 C 4.3125 -2.875 3.828125 -1.59375 3.671875 -1.171875 C 3.578125 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.921875 0.109375 4.390625 0.109375 C 5.328125 0.109375 5.6875 -1.34375 5.6875 -1.421875 C 5.6875 -1.53125 5.609375 -1.53125 5.578125 -1.53125 C 5.46875 -1.53125 5.46875 -1.5 5.421875 -1.34375 C 5.21875 -0.671875 4.890625 -0.109375 4.40625 -0.109375 C 4.234375 -0.109375 4.171875 -0.203125 4.171875 -0.4375 C 4.171875 -0.6875 4.25 -0.921875 4.34375 -1.140625 C 4.53125 -1.671875 4.953125 -2.765625 4.953125 -3.34375 C 4.953125 -4 4.53125 -4.40625 3.8125 -4.40625 C 2.90625 -4.40625 2.421875 -3.765625 2.25 -3.53125 C 2.203125 -4.09375 1.796875 -4.40625 1.328125 -4.40625 C 0.875 -4.40625 0.6875 -4.015625 0.59375 -3.84375 C 0.421875 -3.5 0.296875 -2.90625 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.78125 0.578125 -3 C 0.75 -3.703125 0.953125 -4.1875 1.3125 -4.1875 C 1.5 -4.1875 1.609375 -4.0625 1.609375 -3.734375 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.890625 Z M 0.875 -0.59375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-3">
<path style="stroke:none;" d="M 2.625 -9.578125 C 2.625 -10.046875 2.234375 -10.25 1.9375 -10.25 C 1.640625 -10.25 1.1875 -10.0625 1.234375 -9.453125 L 1.75 -2.890625 C 1.765625 -2.640625 1.796875 -2.578125 1.921875 -2.578125 C 2.0625 -2.578125 2.09375 -2.625 2.109375 -2.890625 Z M 2.625 -0.703125 C 2.625 -1.078125 2.3125 -1.390625 1.9375 -1.390625 C 1.53125 -1.390625 1.234375 -1.078125 1.234375 -0.6875 C 1.234375 -0.3125 1.546875 0 1.921875 0 C 2.328125 0 2.625 -0.3125 2.625 -0.703125 Z M 2.625 -0.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d="M 4.578125 -3.1875 C 4.578125 -3.984375 4.53125 -4.78125 4.1875 -5.515625 C 3.734375 -6.484375 2.90625 -6.640625 2.5 -6.640625 C 1.890625 -6.640625 1.171875 -6.375 0.75 -5.453125 C 0.4375 -4.765625 0.390625 -3.984375 0.390625 -3.1875 C 0.390625 -2.4375 0.421875 -1.546875 0.84375 -0.78125 C 1.265625 0.015625 2 0.21875 2.484375 0.21875 C 3.015625 0.21875 3.78125 0.015625 4.21875 -0.9375 C 4.53125 -1.625 4.578125 -2.40625 4.578125 -3.1875 Z M 2.484375 0 C 2.09375 0 1.5 -0.25 1.328125 -1.203125 C 1.21875 -1.796875 1.21875 -2.71875 1.21875 -3.3125 C 1.21875 -3.953125 1.21875 -4.609375 1.296875 -5.140625 C 1.484375 -6.328125 2.234375 -6.421875 2.484375 -6.421875 C 2.8125 -6.421875 3.46875 -6.234375 3.65625 -5.25 C 3.765625 -4.6875 3.765625 -3.9375 3.765625 -3.3125 C 3.765625 -2.5625 3.765625 -1.890625 3.65625 -1.25 C 3.5 -0.296875 2.9375 0 2.484375 0 Z M 2.484375 0 "/>
</symbol>
</g>
</defs>
<g id="surface1">
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.110938" y="10.7281"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="7.410158" y="5.51716"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="13.880858" y="10.7281"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1.09375 141.601562 L 223.515625 141.601562 " transform="matrix(0.1,0,0,-0.1,0,31)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.344922" y="30.267187"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="7.643932" y="30.267187"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="15.626922" y="26.126957"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="23.537862" y="20.430077"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="29.000752" y="20.430077"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="36.983952" y="22.580857"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="42.464812" y="20.430077"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="51.905845" y="20.430077"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="66.818712" y="20.430077"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="75.206602" y="20.430077"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="79.112462" y="20.430077"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="85.962072" y="22.580857"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="92.432772" y="20.430077"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,723 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="291pt" height="129pt" viewBox="0 0 291 129" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d="M 6.078125 -5.34375 L 6.453125 -5.34375 C 6.65625 -5.34375 7.046875 -5.34375 7.046875 -5.765625 C 7.046875 -6.1875 6.65625 -6.1875 6.453125 -6.1875 L 4.875 -6.1875 C 4.671875 -6.1875 4.28125 -6.1875 4.28125 -5.765625 C 4.28125 -5.34375 4.671875 -5.34375 4.875 -5.34375 L 5.234375 -5.34375 C 4.828125 -4.171875 4.015625 -1.78125 3.8125 -0.96875 L 3.796875 -0.96875 C 3.734375 -1.28125 3.671875 -1.4375 3.53125 -1.828125 L 2.1875 -5.34375 L 2.53125 -5.34375 C 2.71875 -5.34375 3.109375 -5.34375 3.109375 -5.765625 C 3.109375 -6.1875 2.71875 -6.1875 2.53125 -6.1875 L 0.953125 -6.1875 C 0.75 -6.1875 0.359375 -6.1875 0.359375 -5.765625 C 0.359375 -5.34375 0.75 -5.34375 0.953125 -5.34375 L 1.328125 -5.34375 L 3.34375 -0.1875 C 3.40625 -0.046875 3.40625 -0.015625 3.40625 0 C 3.40625 0.03125 3.03125 1.28125 2.8125 1.671875 C 2.71875 1.828125 2.359375 2.5 1.671875 2.421875 C 1.6875 2.375 1.734375 2.296875 1.734375 2.140625 C 1.734375 1.8125 1.5 1.578125 1.171875 1.578125 C 0.8125 1.578125 0.609375 1.828125 0.609375 2.15625 C 0.609375 2.703125 1.0625 3.265625 1.78125 3.265625 C 3.171875 3.265625 3.78125 1.421875 3.828125 1.3125 Z M 6.078125 -5.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 6 -8.171875 C 6 -8.625 5.90625 -8.765625 5.421875 -8.765625 L 4.46875 -8.765625 C 4.28125 -8.765625 3.90625 -8.765625 3.90625 -8.34375 C 3.90625 -7.9375 4.28125 -7.9375 4.46875 -7.9375 L 5.0625 -7.9375 L 5.0625 -5.546875 C 4.828125 -5.78125 4.25 -6.265625 3.375 -6.265625 C 1.84375 -6.265625 0.53125 -4.890625 0.53125 -3.078125 C 0.53125 -1.3125 1.765625 0.09375 3.234375 0.09375 C 4.171875 0.09375 4.796875 -0.46875 5.0625 -0.78125 C 5.0625 -0.1875 5.0625 0 5.640625 0 L 6.578125 0 C 6.78125 0 7.15625 0 7.15625 -0.421875 C 7.15625 -0.828125 6.78125 -0.828125 6.578125 -0.828125 L 6 -0.828125 Z M 5.0625 -2.71875 C 5.0625 -1.921875 4.40625 -0.75 3.328125 -0.75 C 2.296875 -0.75 1.46875 -1.796875 1.46875 -3.078125 C 1.46875 -4.453125 2.4375 -5.4375 3.453125 -5.4375 C 4.390625 -5.4375 5.0625 -4.59375 5.0625 -3.84375 Z M 5.0625 -2.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 5.96875 -2.75 C 6.265625 -2.75 6.546875 -2.75 6.546875 -3.28125 C 6.546875 -4.96875 5.59375 -6.3125 3.796875 -6.3125 C 2.140625 -6.3125 0.796875 -4.875 0.796875 -3.125 C 0.796875 -1.3125 2.25 0.09375 4.015625 0.09375 C 5.859375 0.09375 6.546875 -1.1875 6.546875 -1.5625 C 6.546875 -1.65625 6.515625 -1.96875 6.0625 -1.96875 C 5.796875 -1.96875 5.703125 -1.859375 5.625 -1.65625 C 5.265625 -0.8125 4.328125 -0.75 4.0625 -0.75 C 2.875 -0.75 1.921875 -1.65625 1.765625 -2.75 Z M 1.78125 -3.546875 C 1.96875 -4.765625 2.890625 -5.484375 3.796875 -5.484375 C 5.234375 -5.484375 5.53125 -4.265625 5.59375 -3.546875 Z M 1.78125 -3.546875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 3.09375 -2.71875 C 3.09375 -4.421875 4.296875 -5.4375 5.515625 -5.4375 C 5.59375 -5.4375 5.6875 -5.4375 5.75 -5.421875 C 5.796875 -4.90625 6.203125 -4.859375 6.296875 -4.859375 C 6.625 -4.859375 6.859375 -5.109375 6.859375 -5.421875 C 6.859375 -6.03125 6.25 -6.265625 5.53125 -6.265625 C 4.578125 -6.265625 3.765625 -5.84375 3.09375 -5.03125 L 3.09375 -5.59375 C 3.09375 -6.03125 3.015625 -6.1875 2.53125 -6.1875 L 1.078125 -6.1875 C 0.875 -6.1875 0.5 -6.1875 0.5 -5.765625 C 0.5 -5.34375 0.875 -5.34375 1.078125 -5.34375 L 2.171875 -5.34375 L 2.171875 -0.828125 L 1.078125 -0.828125 C 0.875 -0.828125 0.5 -0.828125 0.5 -0.421875 C 0.5 0 0.875 0 1.078125 0 L 4.609375 0 C 4.8125 0 5.171875 0 5.171875 -0.421875 C 5.171875 -0.828125 4.8125 -0.828125 4.609375 -0.828125 L 3.09375 -0.828125 Z M 3.09375 -2.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 4.328125 -8.140625 C 4.328125 -8.484375 4.046875 -8.78125 3.6875 -8.78125 C 3.328125 -8.78125 3.046875 -8.484375 3.046875 -8.140625 C 3.046875 -7.78125 3.328125 -7.484375 3.6875 -7.484375 C 4.046875 -7.484375 4.328125 -7.78125 4.328125 -8.140625 Z M 1.859375 -6.1875 C 1.65625 -6.1875 1.296875 -6.1875 1.296875 -5.765625 C 1.296875 -5.34375 1.65625 -5.34375 1.859375 -5.34375 L 3.40625 -5.34375 L 3.40625 -0.828125 L 1.765625 -0.828125 C 1.5625 -0.828125 1.171875 -0.828125 1.171875 -0.421875 C 1.171875 0 1.5625 0 1.765625 0 L 5.75 0 C 5.953125 0 6.328125 0 6.328125 -0.421875 C 6.328125 -0.828125 5.953125 -0.828125 5.75 -0.828125 L 4.328125 -0.828125 L 4.328125 -5.59375 C 4.328125 -6.03125 4.25 -6.1875 3.765625 -6.1875 Z M 1.859375 -6.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 6.078125 -5.34375 L 6.453125 -5.34375 C 6.65625 -5.34375 7.046875 -5.34375 7.046875 -5.765625 C 7.046875 -6.1875 6.65625 -6.1875 6.453125 -6.1875 L 4.875 -6.1875 C 4.671875 -6.1875 4.28125 -6.1875 4.28125 -5.765625 C 4.28125 -5.34375 4.671875 -5.34375 4.875 -5.34375 L 5.234375 -5.34375 L 3.6875 -0.734375 L 2.140625 -5.34375 L 2.5 -5.34375 C 2.703125 -5.34375 3.078125 -5.34375 3.078125 -5.765625 C 3.078125 -6.1875 2.703125 -6.1875 2.5 -6.1875 L 0.921875 -6.1875 C 0.71875 -6.1875 0.328125 -6.1875 0.328125 -5.765625 C 0.328125 -5.34375 0.71875 -5.34375 0.921875 -5.34375 L 1.296875 -5.34375 L 2.9375 -0.421875 C 3.09375 0.078125 3.40625 0.078125 3.6875 0.078125 C 3.953125 0.078125 4.28125 0.078125 4.4375 -0.421875 Z M 6.078125 -5.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 5.9375 -4.078125 C 5.9375 -5.15625 5.125 -6.3125 3.1875 -6.3125 C 2.578125 -6.3125 1.1875 -6.3125 1.1875 -5.328125 C 1.1875 -4.9375 1.46875 -4.71875 1.78125 -4.71875 C 1.859375 -4.71875 2.34375 -4.75 2.359375 -5.34375 C 2.359375 -5.421875 2.359375 -5.4375 2.671875 -5.46875 C 2.84375 -5.484375 3.03125 -5.484375 3.203125 -5.484375 C 3.53125 -5.484375 4.015625 -5.484375 4.484375 -5.125 C 5 -4.71875 5 -4.3125 5 -3.90625 C 4.15625 -3.875 3.328125 -3.8125 2.4375 -3.53125 C 1.71875 -3.28125 0.796875 -2.765625 0.796875 -1.796875 C 0.796875 -0.78125 1.703125 0.09375 3.046875 0.09375 C 3.5 0.09375 4.390625 0.015625 5.140625 -0.5 C 5.421875 -0.03125 6.140625 0 6.6875 0 C 7.03125 0 7.375 0 7.375 -0.421875 C 7.375 -0.828125 7 -0.828125 6.796875 -0.828125 C 6.421875 -0.828125 6.140625 -0.859375 5.9375 -0.953125 Z M 5 -1.890625 C 5 -1.5625 5 -1.265625 4.421875 -0.984375 C 3.921875 -0.75 3.234375 -0.75 3.203125 -0.75 C 2.359375 -0.75 1.734375 -1.203125 1.734375 -1.796875 C 1.734375 -2.640625 3.265625 -3.125 5 -3.125 Z M 5 -1.890625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 3.09375 -5.34375 L 5.421875 -5.34375 C 5.625 -5.34375 6 -5.34375 6 -5.765625 C 6 -6.1875 5.625 -6.1875 5.421875 -6.1875 L 3.09375 -6.1875 L 3.09375 -7.359375 C 3.09375 -7.609375 3.09375 -7.953125 2.640625 -7.953125 C 2.171875 -7.953125 2.171875 -7.609375 2.171875 -7.359375 L 2.171875 -6.1875 L 0.953125 -6.1875 C 0.75 -6.1875 0.359375 -6.1875 0.359375 -5.765625 C 0.359375 -5.34375 0.734375 -5.34375 0.9375 -5.34375 L 2.171875 -5.34375 L 2.171875 -1.734375 C 2.171875 -0.40625 3.078125 0.09375 4.109375 0.09375 C 4.890625 0.09375 6.3125 -0.296875 6.3125 -1.765625 C 6.3125 -2.046875 6.3125 -2.359375 5.84375 -2.359375 C 5.375 -2.359375 5.375 -2.046875 5.375 -1.75 C 5.359375 -0.890625 4.546875 -0.75 4.21875 -0.75 C 3.09375 -0.75 3.09375 -1.46875 3.09375 -1.8125 Z M 3.09375 -5.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 6.65625 -4.375 C 6.65625 -7.046875 5.234375 -8.9375 3.6875 -8.9375 C 2.125 -8.9375 0.71875 -7.015625 0.71875 -4.390625 C 0.71875 -1.71875 2.140625 0.171875 3.6875 0.171875 C 5.25 0.171875 6.65625 -1.75 6.65625 -4.375 Z M 3.6875 -0.65625 C 2.546875 -0.65625 1.65625 -2.390625 1.65625 -4.53125 C 1.65625 -6.671875 2.640625 -8.109375 3.6875 -8.109375 C 4.734375 -8.109375 5.71875 -6.671875 5.71875 -4.53125 C 5.71875 -2.40625 4.8125 -0.65625 3.6875 -0.65625 Z M 3.6875 -0.65625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 4.359375 -8.34375 C 4.359375 -8.5625 4.359375 -8.9375 3.9375 -8.9375 C 3.703125 -8.9375 3.609375 -8.8125 3.53125 -8.625 C 3.25 -8 2.78125 -7.25 2.015625 -7.1875 C 1.8125 -7.171875 1.5 -7.140625 1.5 -6.765625 C 1.5 -6.53125 1.65625 -6.359375 1.96875 -6.359375 C 2.765625 -6.359375 3.390625 -6.953125 3.421875 -6.984375 L 3.421875 -0.828125 L 2.171875 -0.828125 C 1.96875 -0.828125 1.578125 -0.828125 1.578125 -0.421875 C 1.578125 0 1.96875 0 2.171875 0 L 5.625 0 C 5.828125 0 6.203125 0 6.203125 -0.421875 C 6.203125 -0.828125 5.828125 -0.828125 5.625 -0.828125 L 4.359375 -0.828125 Z M 4.359375 -8.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 4.984375 -3.15625 C 5.1875 -3.328125 6.640625 -4.5625 6.640625 -6.15625 C 6.640625 -7.78125 5.296875 -8.9375 3.5 -8.9375 C 1.84375 -8.9375 0.734375 -7.6875 0.734375 -6.484375 C 0.734375 -5.875 1.234375 -5.84375 1.3125 -5.84375 C 1.578125 -5.84375 1.890625 -6.03125 1.890625 -6.421875 C 1.890625 -6.703125 1.796875 -6.78125 1.71875 -6.84375 C 1.921875 -7.609375 2.578125 -8.109375 3.40625 -8.109375 C 4.640625 -8.109375 5.703125 -7.40625 5.703125 -6.15625 C 5.703125 -5.03125 4.859375 -4.171875 4.09375 -3.5 L 0.9375 -0.765625 C 0.78125 -0.625 0.734375 -0.59375 0.734375 -0.421875 C 0.734375 0 1.125 0 1.3125 0 L 6.328125 0 C 6.640625 -0.09375 6.640625 -0.375 6.640625 -0.59375 L 6.640625 -0.890625 C 6.640625 -1.140625 6.640625 -1.484375 6.1875 -1.484375 C 5.703125 -1.484375 5.703125 -1.171875 5.703125 -0.828125 L 2.25 -0.828125 Z M 4.984375 -3.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 3.671875 -4.3125 C 5.15625 -4.3125 5.828125 -3.265625 5.828125 -2.5 C 5.828125 -1.546875 4.984375 -0.65625 3.734375 -0.65625 C 2.296875 -0.65625 1.65625 -1.4375 1.65625 -1.640625 C 1.65625 -1.65625 1.65625 -1.6875 1.671875 -1.703125 C 1.734375 -1.8125 1.78125 -1.921875 1.78125 -2.046875 C 1.78125 -2.359375 1.546875 -2.625 1.203125 -2.625 C 0.90625 -2.625 0.609375 -2.4375 0.609375 -2 C 0.609375 -0.75 1.984375 0.171875 3.734375 0.171875 C 5.53125 0.171875 6.75 -1.125 6.75 -2.484375 C 6.75 -3.21875 6.359375 -4.234375 5.09375 -4.78125 C 5.96875 -5.328125 6.359375 -6.1875 6.359375 -6.921875 C 6.359375 -8 5.28125 -8.9375 3.734375 -8.9375 C 2.140625 -8.9375 1.015625 -8.25 1.015625 -7.1875 C 1.015625 -6.71875 1.375 -6.5625 1.609375 -6.5625 C 1.859375 -6.5625 2.1875 -6.765625 2.1875 -7.15625 C 2.1875 -7.390625 2.0625 -7.515625 2.0625 -7.53125 C 2.5 -8.078125 3.484375 -8.109375 3.734375 -8.109375 C 4.703125 -8.109375 5.421875 -7.59375 5.421875 -6.90625 C 5.421875 -6.5 5.15625 -5.3125 3.640625 -5.203125 C 3.109375 -5.171875 2.890625 -5.15625 2.828125 -5.15625 C 2.53125 -5.125 2.46875 -4.9375 2.46875 -4.734375 C 2.46875 -4.3125 2.765625 -4.3125 3.015625 -4.3125 Z M 3.671875 -4.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 0.546875 -3.4375 C 0.421875 -3.25 0.421875 -3.234375 0.421875 -2.96875 C 0.421875 -2.46875 0.609375 -2.40625 0.984375 -2.40625 L 4.5 -2.40625 L 4.5 -0.828125 L 3.640625 -0.828125 C 3.4375 -0.828125 3.0625 -0.828125 3.0625 -0.421875 C 3.0625 0 3.4375 0 3.640625 0 L 6.171875 0 C 6.375 0 6.734375 0 6.734375 -0.421875 C 6.734375 -0.828125 6.375 -0.828125 6.171875 -0.828125 L 5.3125 -0.828125 L 5.3125 -2.40625 L 6.390625 -2.40625 C 6.578125 -2.40625 6.953125 -2.40625 6.953125 -2.828125 C 6.953125 -3.234375 6.578125 -3.234375 6.390625 -3.234375 L 5.3125 -3.234375 L 5.3125 -8.375 C 5.3125 -8.84375 5.203125 -8.96875 4.71875 -8.96875 L 4.390625 -8.96875 C 4.046875 -8.96875 3.96875 -8.953125 3.796875 -8.671875 Z M 1.375 -3.234375 L 4.5 -8.265625 L 4.5 -3.234375 Z M 1.375 -3.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 5.5625 -7.9375 C 5.765625 -7.9375 6.140625 -7.9375 6.140625 -8.34375 C 6.140625 -8.765625 5.765625 -8.765625 5.5625 -8.765625 L 1.84375 -8.765625 C 1.375 -8.765625 1.265625 -8.65625 1.265625 -8.203125 L 1.265625 -4.375 C 1.265625 -4.171875 1.265625 -3.8125 1.6875 -3.8125 C 1.921875 -3.8125 1.984375 -3.890625 2.09375 -4.03125 C 2.53125 -4.53125 3.15625 -4.765625 3.90625 -4.765625 C 5.015625 -4.765625 5.703125 -3.75 5.703125 -2.71875 C 5.703125 -1.5625 4.703125 -0.65625 3.5 -0.65625 C 2.75 -0.65625 2 -1.015625 1.734375 -1.6875 C 1.796875 -1.75 1.890625 -1.84375 1.890625 -2.109375 C 1.890625 -2.5 1.5625 -2.703125 1.3125 -2.703125 C 1.1875 -2.703125 0.734375 -2.625 0.734375 -2.0625 C 0.734375 -0.859375 1.921875 0.171875 3.5 0.171875 C 5.234375 0.171875 6.640625 -1.125 6.640625 -2.71875 C 6.640625 -4.171875 5.5625 -5.59375 3.90625 -5.59375 C 3.421875 -5.59375 2.796875 -5.515625 2.1875 -5.171875 L 2.1875 -7.9375 Z M 5.5625 -7.9375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d="M 2.640625 -0.6875 C 2.640625 -1.109375 2.296875 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.046875 1.25 -0.703125 C 1.25 -0.28125 1.59375 0 1.9375 0 C 2.359375 0 2.640625 -0.34375 2.640625 -0.6875 Z M 2.640625 -0.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-3">
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-4">
<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-5">
<path style="stroke:none;" d="M 1.765625 -4.984375 C 1.765625 -8.625 3.53125 -9.1875 4.296875 -9.1875 C 4.8125 -9.1875 5.328125 -9.03125 5.609375 -8.609375 C 5.4375 -8.609375 4.890625 -8.609375 4.890625 -8.015625 C 4.890625 -7.703125 5.109375 -7.4375 5.484375 -7.4375 C 5.84375 -7.4375 6.078125 -7.640625 6.078125 -8.0625 C 6.078125 -8.8125 5.53125 -9.53125 4.28125 -9.53125 C 2.484375 -9.53125 0.59375 -7.6875 0.59375 -4.53125 C 0.59375 -0.59375 2.3125 0.296875 3.53125 0.296875 C 5.09375 0.296875 6.421875 -1.0625 6.421875 -2.921875 C 6.421875 -4.828125 5.09375 -6.109375 3.65625 -6.109375 C 2.375 -6.109375 1.90625 -5 1.765625 -4.609375 Z M 3.53125 -0.09375 C 2.625 -0.09375 2.1875 -0.890625 2.0625 -1.1875 C 1.9375 -1.5625 1.796875 -2.265625 1.796875 -3.265625 C 1.796875 -4.40625 2.3125 -5.828125 3.59375 -5.828125 C 4.390625 -5.828125 4.8125 -5.296875 5.015625 -4.8125 C 5.25 -4.28125 5.25 -3.5625 5.25 -2.9375 C 5.25 -2.203125 5.25 -1.5625 4.984375 -1.015625 C 4.625 -0.328125 4.109375 -0.09375 3.53125 -0.09375 Z M 3.53125 -0.09375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-6">
<path style="stroke:none;" d="M 5.171875 -9.34375 C 5.171875 -9.609375 5.171875 -9.6875 4.984375 -9.6875 C 4.859375 -9.6875 4.8125 -9.6875 4.703125 -9.515625 L 0.390625 -2.8125 L 0.390625 -2.390625 L 4.15625 -2.390625 L 4.15625 -1.09375 C 4.15625 -0.5625 4.125 -0.421875 3.078125 -0.421875 L 2.796875 -0.421875 L 2.796875 0 C 3.125 -0.03125 4.265625 -0.03125 4.65625 -0.03125 C 5.0625 -0.03125 6.203125 -0.03125 6.546875 0 L 6.546875 -0.421875 L 6.25 -0.421875 C 5.21875 -0.421875 5.171875 -0.5625 5.171875 -1.09375 L 5.171875 -2.390625 L 6.625 -2.390625 L 6.625 -2.8125 L 5.171875 -2.8125 Z M 4.234375 -8.21875 L 4.234375 -2.8125 L 0.75 -2.8125 Z M 4.234375 -8.21875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-7">
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-8">
<path style="stroke:none;" d="M 4.28125 -5.171875 C 4.984375 -5.5625 6.03125 -6.21875 6.03125 -7.4375 C 6.03125 -8.671875 4.828125 -9.53125 3.515625 -9.53125 C 2.09375 -9.53125 0.96875 -8.484375 0.96875 -7.1875 C 0.96875 -6.703125 1.125 -6.203125 1.515625 -5.71875 C 1.671875 -5.53125 1.6875 -5.515625 2.703125 -4.8125 C 1.3125 -4.171875 0.59375 -3.21875 0.59375 -2.171875 C 0.59375 -0.640625 2.03125 0.296875 3.5 0.296875 C 5.09375 0.296875 6.421875 -0.875 6.421875 -2.375 C 6.421875 -3.84375 5.390625 -4.484375 4.28125 -5.171875 Z M 2.328125 -6.46875 C 2.140625 -6.59375 1.5625 -6.96875 1.5625 -7.671875 C 1.5625 -8.609375 2.53125 -9.1875 3.5 -9.1875 C 4.53125 -9.1875 5.453125 -8.453125 5.453125 -7.421875 C 5.453125 -6.546875 4.8125 -5.84375 3.984375 -5.375 Z M 3 -4.625 L 4.734375 -3.484375 C 5.109375 -3.234375 5.765625 -2.796875 5.765625 -1.921875 C 5.765625 -0.828125 4.65625 -0.09375 3.515625 -0.09375 C 2.296875 -0.09375 1.25 -0.96875 1.25 -2.171875 C 1.25 -3.28125 2.0625 -4.1875 3 -4.625 Z M 3 -4.625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-9">
<path style="stroke:none;" d="M 6.421875 -4.59375 C 6.421875 -5.78125 6.359375 -6.9375 5.84375 -8.03125 C 5.25 -9.21875 4.21875 -9.53125 3.515625 -9.53125 C 2.6875 -9.53125 1.65625 -9.125 1.140625 -7.9375 C 0.734375 -7.03125 0.59375 -6.140625 0.59375 -4.59375 C 0.59375 -3.203125 0.6875 -2.15625 1.203125 -1.140625 C 1.765625 -0.046875 2.75 0.296875 3.5 0.296875 C 4.75 0.296875 5.46875 -0.4375 5.875 -1.28125 C 6.390625 -2.359375 6.421875 -3.765625 6.421875 -4.59375 Z M 3.5 0.015625 C 3.046875 0.015625 2.109375 -0.25 1.84375 -1.8125 C 1.671875 -2.671875 1.671875 -3.765625 1.671875 -4.765625 C 1.671875 -5.9375 1.671875 -7 1.90625 -7.84375 C 2.15625 -8.8125 2.890625 -9.25 3.5 -9.25 C 4.046875 -9.25 4.875 -8.921875 5.15625 -7.6875 C 5.328125 -6.875 5.328125 -5.734375 5.328125 -4.765625 C 5.328125 -3.796875 5.328125 -2.71875 5.171875 -1.84375 C 4.90625 -0.265625 4 0.015625 3.5 0.015625 Z M 3.5 0.015625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d="M 2.9375 -1.640625 L 2.9375 -0.78125 C 2.9375 -0.421875 2.90625 -0.3125 2.171875 -0.3125 L 1.96875 -0.3125 L 1.96875 0 C 2.375 -0.03125 2.890625 -0.03125 3.3125 -0.03125 C 3.734375 -0.03125 4.25 -0.03125 4.671875 0 L 4.671875 -0.3125 L 4.453125 -0.3125 C 3.71875 -0.3125 3.703125 -0.421875 3.703125 -0.78125 L 3.703125 -1.640625 L 4.6875 -1.640625 L 4.6875 -1.953125 L 3.703125 -1.953125 L 3.703125 -6.484375 C 3.703125 -6.6875 3.703125 -6.75 3.53125 -6.75 C 3.453125 -6.75 3.421875 -6.75 3.34375 -6.625 L 0.28125 -1.953125 L 0.28125 -1.640625 Z M 2.984375 -1.953125 L 0.5625 -1.953125 L 2.984375 -5.671875 Z M 2.984375 -1.953125 "/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 6.84375 -3.265625 C 7 -3.265625 7.1875 -3.265625 7.1875 -3.453125 C 7.1875 -3.65625 7 -3.65625 6.859375 -3.65625 L 0.890625 -3.65625 C 0.75 -3.65625 0.5625 -3.65625 0.5625 -3.453125 C 0.5625 -3.265625 0.75 -3.265625 0.890625 -3.265625 Z M 6.859375 -1.328125 C 7 -1.328125 7.1875 -1.328125 7.1875 -1.53125 C 7.1875 -1.71875 7 -1.71875 6.84375 -1.71875 L 0.890625 -1.71875 C 0.75 -1.71875 0.5625 -1.71875 0.5625 -1.53125 C 0.5625 -1.328125 0.75 -1.328125 0.890625 -1.328125 Z M 6.859375 -1.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph3-2">
<path style="stroke:none;" d="M 1.265625 -0.765625 L 2.328125 -1.796875 C 3.875 -3.171875 4.46875 -3.703125 4.46875 -4.703125 C 4.46875 -5.84375 3.578125 -6.640625 2.359375 -6.640625 C 1.234375 -6.640625 0.5 -5.71875 0.5 -4.828125 C 0.5 -4.28125 1 -4.28125 1.03125 -4.28125 C 1.203125 -4.28125 1.546875 -4.390625 1.546875 -4.8125 C 1.546875 -5.0625 1.359375 -5.328125 1.015625 -5.328125 C 0.9375 -5.328125 0.921875 -5.328125 0.890625 -5.3125 C 1.109375 -5.96875 1.65625 -6.328125 2.234375 -6.328125 C 3.140625 -6.328125 3.5625 -5.515625 3.5625 -4.703125 C 3.5625 -3.90625 3.078125 -3.125 2.515625 -2.5 L 0.609375 -0.375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.203125 0 L 4.46875 -1.734375 L 4.234375 -1.734375 C 4.171875 -1.4375 4.109375 -1 4 -0.84375 C 3.9375 -0.765625 3.28125 -0.765625 3.0625 -0.765625 Z M 1.265625 -0.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-3">
<path style="stroke:none;" d="M 2.890625 -3.515625 C 3.703125 -3.78125 4.28125 -4.46875 4.28125 -5.265625 C 4.28125 -6.078125 3.40625 -6.640625 2.453125 -6.640625 C 1.453125 -6.640625 0.6875 -6.046875 0.6875 -5.28125 C 0.6875 -4.953125 0.90625 -4.765625 1.203125 -4.765625 C 1.5 -4.765625 1.703125 -4.984375 1.703125 -5.28125 C 1.703125 -5.765625 1.234375 -5.765625 1.09375 -5.765625 C 1.390625 -6.265625 2.046875 -6.390625 2.40625 -6.390625 C 2.828125 -6.390625 3.375 -6.171875 3.375 -5.28125 C 3.375 -5.15625 3.34375 -4.578125 3.09375 -4.140625 C 2.796875 -3.65625 2.453125 -3.625 2.203125 -3.625 C 2.125 -3.609375 1.890625 -3.59375 1.8125 -3.59375 C 1.734375 -3.578125 1.671875 -3.5625 1.671875 -3.46875 C 1.671875 -3.359375 1.734375 -3.359375 1.90625 -3.359375 L 2.34375 -3.359375 C 3.15625 -3.359375 3.53125 -2.6875 3.53125 -1.703125 C 3.53125 -0.34375 2.84375 -0.0625 2.40625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.984375 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.4375 0.21875 C 3.65625 0.21875 4.5625 -0.6875 4.5625 -1.703125 C 4.5625 -2.515625 3.921875 -3.296875 2.890625 -3.515625 Z M 2.890625 -3.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-4">
<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-5">
<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
</symbol>
<symbol overflow="visible" id="glyph3-6">
<path style="stroke:none;" d="M 4.46875 -2 C 4.46875 -3.1875 3.65625 -4.1875 2.578125 -4.1875 C 2.109375 -4.1875 1.671875 -4.03125 1.3125 -3.671875 L 1.3125 -5.625 C 1.515625 -5.5625 1.84375 -5.5 2.15625 -5.5 C 3.390625 -5.5 4.09375 -6.40625 4.09375 -6.53125 C 4.09375 -6.59375 4.0625 -6.640625 3.984375 -6.640625 C 3.984375 -6.640625 3.953125 -6.640625 3.90625 -6.609375 C 3.703125 -6.515625 3.21875 -6.3125 2.546875 -6.3125 C 2.15625 -6.3125 1.6875 -6.390625 1.21875 -6.59375 C 1.140625 -6.625 1.125 -6.625 1.109375 -6.625 C 1 -6.625 1 -6.546875 1 -6.390625 L 1 -3.4375 C 1 -3.265625 1 -3.1875 1.140625 -3.1875 C 1.21875 -3.1875 1.234375 -3.203125 1.28125 -3.265625 C 1.390625 -3.421875 1.75 -3.96875 2.5625 -3.96875 C 3.078125 -3.96875 3.328125 -3.515625 3.40625 -3.328125 C 3.5625 -2.953125 3.59375 -2.578125 3.59375 -2.078125 C 3.59375 -1.71875 3.59375 -1.125 3.34375 -0.703125 C 3.109375 -0.3125 2.734375 -0.0625 2.28125 -0.0625 C 1.5625 -0.0625 0.984375 -0.59375 0.8125 -1.171875 C 0.84375 -1.171875 0.875 -1.15625 0.984375 -1.15625 C 1.3125 -1.15625 1.484375 -1.40625 1.484375 -1.640625 C 1.484375 -1.890625 1.3125 -2.140625 0.984375 -2.140625 C 0.84375 -2.140625 0.5 -2.0625 0.5 -1.609375 C 0.5 -0.75 1.1875 0.21875 2.296875 0.21875 C 3.453125 0.21875 4.46875 -0.734375 4.46875 -2 Z M 4.46875 -2 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d="M 2.078125 8.375 C 2.078125 8.609375 2.078125 8.90625 2.375 8.90625 C 2.703125 8.90625 2.703125 8.625 2.703125 8.375 L 2.703125 0.234375 C 2.703125 0 2.703125 -0.296875 2.390625 -0.296875 C 2.078125 -0.296875 2.078125 -0.015625 2.078125 0.234375 Z M 2.078125 8.375 "/>
</symbol>
<symbol overflow="visible" id="glyph5-0">
<path style="stroke:none;" d="M 3.328125 -3.015625 C 3.390625 -3.265625 3.625 -4.1875 4.3125 -4.1875 C 4.359375 -4.1875 4.609375 -4.1875 4.8125 -4.0625 C 4.53125 -4 4.34375 -3.765625 4.34375 -3.515625 C 4.34375 -3.359375 4.453125 -3.171875 4.71875 -3.171875 C 4.9375 -3.171875 5.25 -3.34375 5.25 -3.75 C 5.25 -4.265625 4.671875 -4.40625 4.328125 -4.40625 C 3.75 -4.40625 3.40625 -3.875 3.28125 -3.65625 C 3.03125 -4.3125 2.5 -4.40625 2.203125 -4.40625 C 1.171875 -4.40625 0.59375 -3.125 0.59375 -2.875 C 0.59375 -2.765625 0.703125 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.796875 0.84375 -2.875 C 1.1875 -3.9375 1.84375 -4.1875 2.1875 -4.1875 C 2.375 -4.1875 2.71875 -4.09375 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.546875 2.1875 -1.140625 C 2.03125 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.953125 -0.109375 0.734375 -0.234375 C 0.984375 -0.296875 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.84375 -1.125 C 0.53125 -1.125 0.296875 -0.875 0.296875 -0.546875 C 0.296875 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.890625 0.109375 2.25 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.375 0.109375 4.9375 -1.171875 4.9375 -1.421875 C 4.9375 -1.53125 4.859375 -1.53125 4.828125 -1.53125 C 4.734375 -1.53125 4.71875 -1.484375 4.6875 -1.421875 C 4.359375 -0.34375 3.6875 -0.109375 3.375 -0.109375 C 2.984375 -0.109375 2.828125 -0.421875 2.828125 -0.765625 C 2.828125 -0.984375 2.875 -1.203125 2.984375 -1.640625 Z M 3.328125 -3.015625 "/>
</symbol>
<symbol overflow="visible" id="glyph6-0">
<path style="stroke:none;" d="M 2.515625 -4.734375 C 2.578125 -4.859375 2.609375 -4.9375 2.609375 -5.046875 C 2.609375 -5.328125 2.359375 -5.578125 2.046875 -5.578125 C 1.765625 -5.578125 1.578125 -5.390625 1.515625 -5.125 L 0.328125 -0.765625 C 0.328125 -0.75 0.296875 -0.640625 0.296875 -0.625 C 0.296875 -0.515625 0.546875 -0.453125 0.625 -0.453125 C 0.6875 -0.453125 0.703125 -0.484375 0.75 -0.609375 Z M 2.515625 -4.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph7-0">
<path style="stroke:none;" d="M 2.75 -3.578125 C 2.75 -4 2.40625 -4.34375 2 -4.34375 C 1.578125 -4.34375 1.234375 -4 1.234375 -3.578125 C 1.234375 -3.171875 1.578125 -2.828125 2 -2.828125 C 2.40625 -2.828125 2.75 -3.171875 2.75 -3.578125 Z M 2.75 -3.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph7-1">
<path style="stroke:none;" d="M 2.28125 -10.234375 C 2.28125 -10.5 2.28125 -10.75 2 -10.75 C 1.703125 -10.75 1.703125 -10.5 1.703125 -10.234375 L 1.703125 3.0625 C 1.703125 3.328125 1.703125 3.578125 2 3.578125 C 2.28125 3.578125 2.28125 3.328125 2.28125 3.0625 Z M 2.28125 -10.234375 "/>
</symbol>
</g>
</defs>
<g id="surface1">
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.596094" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="7.976174" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="11.882034" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="19.262043" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="26.642054" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="34.022064" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="41.402075" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="48.782086" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="56.162093" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="63.542101" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="70.922109" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="78.302116" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="85.682034" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="91.144924" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="98.525004" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="108.001975" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="132.148804" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="140.599974" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="146.06298" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="153.082984" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="162.542194" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="220.538274" y="13.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="228.521084" y="7.73512"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="234.001944" y="1.46207"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="234.001944" y="10.07496"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="238.780854" y="19.18277"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="244.477734" y="19.18277"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="252.226738" y="19.18277"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="261.694934" y="13.65699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-4" x="276.598871" y="13.65699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-5" x="283.618875" y="13.65699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.595934" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="7.976014" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="11.881874" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="19.261883" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="26.641894" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="34.021904" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="41.401915" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="48.781926" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="56.161933" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="63.541941" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="70.921949" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="78.301956" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="85.681874" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="91.144764" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="98.524844" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="108.001815" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="128.917844" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-0" x="137.369014" y="29.79411"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="140.608854" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="146.07186" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="153.091864" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="162.541692" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="203.15894" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="213.364754" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="220.537804" y="35.71599"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-3" x="228.521004" y="29.79411"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="234.001864" y="23.52106"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="234.001864" y="32.13395"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="238.780774" y="41.23278"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="244.477654" y="41.23278"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="252.226658" y="41.23278"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="261.694854" y="35.71598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-7" x="276.598791" y="35.71598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="283.618795" y="35.71598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.595854" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="7.975934" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="11.881794" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="19.261803" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="26.641814" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="34.021824" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="41.401835" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="48.781846" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="56.161853" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="63.541861" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="70.921869" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="78.301876" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="85.681794" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="91.144684" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="98.524764" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="108.001735" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="126.172764" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-0" x="134.623544" y="51.8531"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-0" x="137.359547" y="51.8531"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="140.608704" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="146.07171" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="153.091714" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="162.541542" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="185.770478" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="195.985304" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-7" x="203.158354" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="213.364254" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="220.537304" y="57.77498"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="228.520894" y="51.8531"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="234.001754" y="45.58005"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="234.001754" y="54.18396"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="238.780664" y="63.29177"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="244.477544" y="63.29177"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="252.226548" y="63.29177"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="261.694744" y="57.77497"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="276.598681" y="57.77497"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-8" x="283.618685" y="57.77497"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.595744" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="7.975824" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="11.881684" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="19.261693" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="26.641704" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="34.021714" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="41.401725" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="48.781736" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="56.161743" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="63.541751" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="70.921759" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="78.301766" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="85.681684" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-11" x="91.144574" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="98.524654" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="108.001625" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="123.436754" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-0" x="131.887534" y="73.91209"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-0" x="134.623537" y="73.91209"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-0" x="137.35954" y="73.91209"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="140.608624" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="146.07163" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="153.091634" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="162.541462" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="174.664524" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="184.870324" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-7" x="192.043374" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="202.258174" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="209.431224" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="219.646024" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="226.819074" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-1" x="234.801884" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="238.780404" y="83.91991"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="244.477284" y="83.91991"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="252.226288" y="83.91991"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="261.694484" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="276.598421" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-8" x="283.618425" y="79.83397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.595484" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="7.975564" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="11.881424" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="19.261433" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="26.641444" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="34.021454" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="41.401465" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="48.781476" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="56.161483" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="63.541491" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="70.921499" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="78.301506" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="85.681424" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-12" x="91.144314" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="98.524394" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="108.001365" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="118.927494" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-4" x="127.378274" y="96.67299"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="131.248271" y="96.67299"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-5" x="136.225269" y="96.67299"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="140.608374" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="146.07138" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="153.091384" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="162.541212" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="198.532241" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="208.738074" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-7" x="215.911124" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="226.125924" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="233.298974" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph7-0" x="243.504874" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-4" x="250.677924" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="261.693955" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="276.597892" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="283.617896" y="102.59487"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.595924" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="7.976004" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="11.881864" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="19.261873" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="26.641884" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="34.021894" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="41.401905" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="48.781916" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="56.161923" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="63.541931" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="70.921939" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="78.301946" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="85.681864" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="91.144754" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="98.524834" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="108.001805" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="118.927934" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-4" x="127.378714" y="119.42491"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-6" x="131.248711" y="119.42491"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-5" x="136.225709" y="119.42491"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="140.608814" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="146.07182" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="153.091824" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="162.541652" y="125.35577"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-9" x="250.678822" y="125.35577"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -0,0 +1,244 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="309pt" height="29pt" viewBox="0 0 309 29" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 4.9375 -0.875 C 5.25 -0.015625 6.140625 0.140625 6.6875 0.140625 C 7.78125 0.140625 8.421875 -0.796875 8.828125 -1.796875 C 9.15625 -2.625 9.6875 -4.515625 9.6875 -5.359375 C 9.6875 -6.234375 9.234375 -6.328125 9.109375 -6.328125 C 8.765625 -6.328125 8.453125 -5.984375 8.453125 -5.6875 C 8.453125 -5.515625 8.546875 -5.421875 8.625 -5.359375 C 8.75 -5.234375 9.125 -4.84375 9.125 -4.109375 C 9.125 -3.609375 8.71875 -2.265625 8.421875 -1.59375 C 8.015625 -0.71875 7.484375 -0.140625 6.734375 -0.140625 C 5.9375 -0.140625 5.6875 -0.75 5.6875 -1.40625 C 5.6875 -1.828125 5.8125 -2.328125 5.859375 -2.5625 L 6.46875 -4.984375 C 6.546875 -5.265625 6.671875 -5.765625 6.671875 -5.828125 C 6.671875 -6.03125 6.5 -6.1875 6.28125 -6.1875 C 5.859375 -6.1875 5.765625 -5.828125 5.6875 -5.484375 C 5.53125 -4.921875 4.9375 -2.5 4.875 -2.1875 C 4.8125 -1.9375 4.8125 -1.78125 4.8125 -1.46875 C 4.8125 -1.125 4.359375 -0.578125 4.34375 -0.546875 C 4.1875 -0.390625 3.953125 -0.140625 3.515625 -0.140625 C 2.375 -0.140625 2.375 -1.21875 2.375 -1.46875 C 2.375 -1.921875 2.484375 -2.546875 3.125 -4.265625 C 3.296875 -4.703125 3.375 -4.890625 3.375 -5.171875 C 3.375 -5.78125 2.9375 -6.328125 2.234375 -6.328125 C 0.921875 -6.328125 0.390625 -4.25 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.671875 -4 0.6875 -4.0625 0.75 -4.265625 C 1.109375 -5.515625 1.65625 -6.03125 2.1875 -6.03125 C 2.34375 -6.03125 2.5625 -6.03125 2.5625 -5.5625 C 2.5625 -5.5 2.5625 -5.1875 2.328125 -4.5625 C 1.65625 -2.765625 1.5 -2.1875 1.5 -1.640625 C 1.5 -0.125 2.734375 0.140625 3.46875 0.140625 C 3.71875 0.140625 4.359375 0.140625 4.9375 -0.875 Z M 4.9375 -0.875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 2.796875 0.0625 C 2.796875 -0.78125 2.53125 -1.390625 1.9375 -1.390625 C 1.484375 -1.390625 1.25 -1.015625 1.25 -0.703125 C 1.25 -0.390625 1.46875 0 1.953125 0 C 2.140625 0 2.296875 -0.0625 2.421875 -0.1875 C 2.453125 -0.21875 2.46875 -0.21875 2.484375 -0.21875 C 2.515625 -0.21875 2.515625 -0.015625 2.515625 0.0625 C 2.515625 0.53125 2.421875 1.46875 1.59375 2.390625 C 1.4375 2.5625 1.4375 2.59375 1.4375 2.625 C 1.4375 2.703125 1.5 2.765625 1.578125 2.765625 C 1.6875 2.765625 2.796875 1.703125 2.796875 0.0625 Z M 2.796875 0.0625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 3.765625 1.609375 C 3.390625 2.15625 2.828125 2.640625 2.125 2.640625 C 1.953125 2.640625 1.265625 2.609375 1.046875 1.953125 C 1.09375 1.96875 1.15625 1.96875 1.1875 1.96875 C 1.625 1.96875 1.90625 1.59375 1.90625 1.265625 C 1.90625 0.9375 1.640625 0.8125 1.421875 0.8125 C 1.1875 0.8125 0.6875 0.984375 0.6875 1.6875 C 0.6875 2.421875 1.3125 2.921875 2.125 2.921875 C 3.5625 2.921875 5 1.609375 5.40625 0.015625 L 6.8125 -5.578125 C 6.828125 -5.65625 6.859375 -5.734375 6.859375 -5.828125 C 6.859375 -6.03125 6.6875 -6.1875 6.46875 -6.1875 C 6.34375 -6.1875 6.03125 -6.125 5.921875 -5.6875 L 4.859375 -1.484375 C 4.796875 -1.21875 4.796875 -1.1875 4.671875 -1.03125 C 4.390625 -0.625 3.921875 -0.140625 3.234375 -0.140625 C 2.421875 -0.140625 2.359375 -0.9375 2.359375 -1.3125 C 2.359375 -2.140625 2.734375 -3.234375 3.125 -4.28125 C 3.28125 -4.6875 3.375 -4.890625 3.375 -5.171875 C 3.375 -5.78125 2.9375 -6.328125 2.234375 -6.328125 C 0.921875 -6.328125 0.390625 -4.25 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.671875 -4 0.6875 -4.0625 0.75 -4.265625 C 1.09375 -5.46875 1.640625 -6.03125 2.1875 -6.03125 C 2.328125 -6.03125 2.5625 -6.03125 2.5625 -5.5625 C 2.5625 -5.1875 2.40625 -4.78125 2.1875 -4.234375 C 1.484375 -2.359375 1.484375 -1.875 1.484375 -1.53125 C 1.484375 -0.171875 2.46875 0.140625 3.1875 0.140625 C 3.59375 0.140625 4.109375 0.015625 4.625 -0.515625 L 4.640625 -0.5 C 4.421875 0.34375 4.28125 0.90625 3.765625 1.609375 Z M 3.765625 1.609375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 1.828125 -1.15625 C 2.4375 -1.859375 2.9375 -2.3125 3.65625 -2.953125 C 4.515625 -3.703125 4.890625 -4.0625 5.09375 -4.28125 C 6.09375 -5.265625 6.59375 -6.09375 6.59375 -6.203125 C 6.59375 -6.328125 6.484375 -6.328125 6.453125 -6.328125 C 6.359375 -6.328125 6.328125 -6.265625 6.25 -6.171875 C 5.890625 -5.546875 5.546875 -5.25 5.171875 -5.25 C 4.875 -5.25 4.71875 -5.375 4.453125 -5.71875 C 4.140625 -6.078125 3.90625 -6.328125 3.484375 -6.328125 C 2.4375 -6.328125 1.8125 -5.015625 1.8125 -4.71875 C 1.8125 -4.671875 1.828125 -4.59375 1.953125 -4.59375 C 2.0625 -4.59375 2.078125 -4.640625 2.125 -4.75 C 2.359375 -5.328125 3.0625 -5.421875 3.328125 -5.421875 C 3.625 -5.421875 3.921875 -5.328125 4.21875 -5.1875 C 4.765625 -4.96875 4.984375 -4.96875 5.140625 -4.96875 C 5.234375 -4.96875 5.296875 -4.96875 5.359375 -4.984375 C 4.890625 -4.421875 4.109375 -3.734375 3.46875 -3.140625 L 2.015625 -1.8125 C 1.140625 -0.921875 0.609375 -0.078125 0.609375 0.03125 C 0.609375 0.109375 0.6875 0.140625 0.78125 0.140625 C 0.859375 0.140625 0.875 0.125 0.96875 -0.046875 C 1.203125 -0.40625 1.65625 -0.9375 2.1875 -0.9375 C 2.5 -0.9375 2.640625 -0.828125 2.921875 -0.46875 C 3.203125 -0.15625 3.4375 0.140625 3.90625 0.140625 C 5.3125 0.140625 6.109375 -1.671875 6.109375 -2.015625 C 6.109375 -2.0625 6.09375 -2.15625 5.953125 -2.15625 C 5.84375 -2.15625 5.828125 -2.09375 5.78125 -1.953125 C 5.46875 -1.109375 4.625 -0.765625 4.0625 -0.765625 C 3.765625 -0.765625 3.46875 -0.859375 3.171875 -0.984375 C 2.59375 -1.21875 2.4375 -1.21875 2.25 -1.21875 C 2.109375 -1.21875 1.953125 -1.21875 1.828125 -1.15625 Z M 1.828125 -1.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 5.5 -3.328125 C 5.8125 -3.328125 5.84375 -3.328125 5.84375 -3.59375 C 5.84375 -5.046875 5.0625 -6.390625 3.328125 -6.390625 C 1.6875 -6.390625 0.4375 -4.921875 0.4375 -3.140625 C 0.4375 -1.25 1.890625 0.140625 3.484375 0.140625 C 5.1875 0.140625 5.84375 -1.40625 5.84375 -1.703125 C 5.84375 -1.796875 5.765625 -1.84375 5.6875 -1.84375 C 5.5625 -1.84375 5.53125 -1.78125 5.515625 -1.703125 C 5.140625 -0.5 4.171875 -0.171875 3.578125 -0.171875 C 2.96875 -0.171875 1.515625 -0.578125 1.515625 -3.0625 L 1.515625 -3.328125 Z M 1.53125 -3.59375 C 1.65625 -5.859375 2.90625 -6.109375 3.3125 -6.109375 C 4.84375 -6.109375 4.9375 -4.09375 4.953125 -3.59375 Z M 1.53125 -3.59375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-4">
<path style="stroke:none;" d="M 4.015625 -3.390625 C 4.4375 -3.9375 5.03125 -4.703125 5.3125 -5 C 5.890625 -5.671875 6.5625 -5.765625 7.03125 -5.765625 L 7.03125 -6.1875 C 6.40625 -6.15625 6.390625 -6.15625 5.828125 -6.15625 C 5.28125 -6.15625 5.25 -6.15625 4.53125 -6.1875 L 4.53125 -5.765625 C 4.71875 -5.734375 4.953125 -5.65625 4.953125 -5.328125 C 4.953125 -5.078125 4.8125 -4.921875 4.734375 -4.8125 L 3.8125 -3.640625 L 2.703125 -5.125 C 2.65625 -5.171875 2.5625 -5.3125 2.5625 -5.40625 C 2.5625 -5.5 2.640625 -5.75 3.0625 -5.765625 L 3.0625 -6.1875 C 2.71875 -6.15625 1.984375 -6.15625 1.59375 -6.15625 C 1.125 -6.15625 1.09375 -6.15625 0.21875 -6.1875 L 0.21875 -5.765625 C 0.953125 -5.765625 1.21875 -5.734375 1.515625 -5.34375 L 3.203125 -3.15625 C 3.234375 -3.125 3.28125 -3.046875 3.28125 -3 C 3.28125 -2.953125 2.171875 -1.546875 2.015625 -1.359375 C 1.390625 -0.59375 0.765625 -0.4375 0.140625 -0.421875 L 0.140625 0 C 0.6875 -0.03125 0.71875 -0.03125 1.328125 -0.03125 C 1.875 -0.03125 1.90625 -0.03125 2.625 0 L 2.625 -0.421875 C 2.28125 -0.453125 2.21875 -0.671875 2.21875 -0.875 C 2.21875 -1.109375 2.328125 -1.21875 2.46875 -1.40625 C 2.6875 -1.703125 3.15625 -2.296875 3.5 -2.734375 L 4.671875 -1.203125 C 4.921875 -0.890625 4.921875 -0.859375 4.921875 -0.78125 C 4.921875 -0.65625 4.8125 -0.4375 4.421875 -0.421875 L 4.421875 0 C 4.796875 -0.03125 5.5 -0.03125 5.890625 -0.03125 C 6.375 -0.03125 6.390625 -0.03125 7.265625 0 L 7.265625 -0.421875 C 6.5 -0.421875 6.234375 -0.4375 5.890625 -0.90625 Z M 4.015625 -3.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-5">
<path style="stroke:none;" d="M 3.515625 2.359375 C 2.59375 2.359375 2.421875 2.359375 2.421875 1.71875 L 2.421875 -0.78125 C 2.6875 -0.421875 3.265625 0.140625 4.1875 0.140625 C 5.84375 0.140625 7.28125 -1.25 7.28125 -3.09375 C 7.28125 -4.921875 5.9375 -6.328125 4.375 -6.328125 C 3.109375 -6.328125 2.4375 -5.421875 2.390625 -5.359375 L 2.390625 -6.328125 L 0.40625 -6.171875 L 0.40625 -5.75 C 1.40625 -5.75 1.484375 -5.65625 1.484375 -5.015625 L 1.484375 1.71875 C 1.484375 2.359375 1.328125 2.359375 0.40625 2.359375 L 0.40625 2.78125 C 0.78125 2.75 1.546875 2.75 1.953125 2.75 C 2.359375 2.75 3.140625 2.75 3.515625 2.78125 Z M 2.421875 -4.578125 C 2.421875 -4.84375 2.421875 -4.859375 2.578125 -5.09375 C 3.015625 -5.734375 3.71875 -6.015625 4.265625 -6.015625 C 5.328125 -6.015625 6.203125 -4.703125 6.203125 -3.09375 C 6.203125 -1.390625 5.21875 -0.140625 4.109375 -0.140625 C 3.671875 -0.140625 3.25 -0.328125 2.96875 -0.609375 C 2.640625 -0.9375 2.421875 -1.21875 2.421875 -1.625 Z M 2.421875 -4.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-6">
<path style="stroke:none;" d="M 4.703125 -6.0625 C 4.703125 -6.328125 4.703125 -6.390625 4.5625 -6.390625 C 4.453125 -6.390625 4.171875 -6.078125 4.078125 -5.953125 C 3.625 -6.3125 3.1875 -6.390625 2.71875 -6.390625 C 0.984375 -6.390625 0.46875 -5.453125 0.46875 -4.65625 C 0.46875 -4.5 0.46875 -4 1.015625 -3.5 C 1.484375 -3.09375 1.96875 -3 2.625 -2.875 C 3.40625 -2.71875 3.59375 -2.671875 3.953125 -2.375 C 4.21875 -2.171875 4.40625 -1.84375 4.40625 -1.453125 C 4.40625 -0.828125 4.046875 -0.140625 2.78125 -0.140625 C 1.84375 -0.140625 1.140625 -0.6875 0.828125 -2.125 C 0.78125 -2.375 0.78125 -2.390625 0.765625 -2.40625 C 0.734375 -2.46875 0.671875 -2.46875 0.625 -2.46875 C 0.46875 -2.46875 0.46875 -2.390625 0.46875 -2.140625 L 0.46875 -0.1875 C 0.46875 0.078125 0.46875 0.140625 0.609375 0.140625 C 0.6875 0.140625 0.703125 0.125 0.953125 -0.171875 C 1.015625 -0.265625 1.015625 -0.296875 1.234375 -0.53125 C 1.78125 0.140625 2.546875 0.140625 2.796875 0.140625 C 4.296875 0.140625 5.046875 -0.6875 5.046875 -1.828125 C 5.046875 -2.59375 4.578125 -3.0625 4.453125 -3.1875 C 3.9375 -3.625 3.546875 -3.71875 2.59375 -3.890625 C 2.171875 -3.96875 1.125 -4.171875 1.125 -5.03125 C 1.125 -5.484375 1.421875 -6.140625 2.71875 -6.140625 C 4.28125 -6.140625 4.359375 -4.8125 4.390625 -4.359375 C 4.40625 -4.25 4.5 -4.25 4.546875 -4.25 C 4.703125 -4.25 4.703125 -4.3125 4.703125 -4.578125 Z M 4.703125 -6.0625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-7">
<path style="stroke:none;" d="M 2.5 -8.828125 C 2.5 -9.203125 2.1875 -9.53125 1.796875 -9.53125 C 1.421875 -9.53125 1.109375 -9.234375 1.109375 -8.84375 C 1.109375 -8.421875 1.453125 -8.140625 1.796875 -8.140625 C 2.234375 -8.140625 2.5 -8.515625 2.5 -8.828125 Z M 0.515625 -6.171875 L 0.515625 -5.75 C 1.4375 -5.75 1.5625 -5.671875 1.5625 -4.96875 L 1.5625 -1.0625 C 1.5625 -0.421875 1.40625 -0.421875 0.46875 -0.421875 L 0.46875 0 C 0.875 -0.03125 1.5625 -0.03125 1.984375 -0.03125 C 2.140625 -0.03125 2.96875 -0.03125 3.453125 0 L 3.453125 -0.421875 C 2.53125 -0.421875 2.46875 -0.484375 2.46875 -1.046875 L 2.46875 -6.328125 Z M 0.515625 -6.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-8">
<path style="stroke:none;" d="M 6.390625 -3.484375 C 6.390625 -4.8125 6.390625 -5.21875 6.046875 -5.6875 C 5.640625 -6.234375 4.96875 -6.328125 4.46875 -6.328125 C 3.078125 -6.328125 2.53125 -5.140625 2.421875 -4.84375 L 2.40625 -4.84375 L 2.40625 -6.328125 L 0.453125 -6.171875 L 0.453125 -5.75 C 1.4375 -5.75 1.546875 -5.65625 1.546875 -4.953125 L 1.546875 -1.0625 C 1.546875 -0.421875 1.390625 -0.421875 0.453125 -0.421875 L 0.453125 0 C 0.828125 -0.03125 1.609375 -0.03125 2.015625 -0.03125 C 2.421875 -0.03125 3.203125 -0.03125 3.578125 0 L 3.578125 -0.421875 C 2.65625 -0.421875 2.484375 -0.421875 2.484375 -1.0625 L 2.484375 -3.734375 C 2.484375 -5.234375 3.46875 -6.03125 4.359375 -6.03125 C 5.25 -6.03125 5.453125 -5.3125 5.453125 -4.4375 L 5.453125 -1.0625 C 5.453125 -0.421875 5.296875 -0.421875 4.359375 -0.421875 L 4.359375 0 C 4.734375 -0.03125 5.515625 -0.03125 5.90625 -0.03125 C 6.328125 -0.03125 7.09375 -0.03125 7.46875 0 L 7.46875 -0.421875 C 6.75 -0.421875 6.390625 -0.421875 6.390625 -0.84375 Z M 6.390625 -3.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-9">
<path style="stroke:none;" d="M 5.71875 -3.3125 L 9.6875 -3.3125 C 9.890625 -3.3125 10.140625 -3.3125 10.140625 -3.578125 C 10.140625 -3.84375 9.890625 -3.84375 9.6875 -3.84375 L 5.71875 -3.84375 L 5.71875 -7.796875 C 5.71875 -8 5.71875 -8.265625 5.46875 -8.265625 C 5.1875 -8.265625 5.1875 -8.015625 5.1875 -7.796875 L 5.1875 -3.84375 L 1.234375 -3.84375 C 1.03125 -3.84375 0.78125 -3.84375 0.78125 -3.578125 C 0.78125 -3.3125 1.015625 -3.3125 1.234375 -3.3125 L 5.1875 -3.3125 L 5.1875 0.640625 C 5.1875 0.84375 5.1875 1.109375 5.453125 1.109375 C 5.71875 1.109375 5.71875 0.859375 5.71875 0.640625 Z M 5.71875 -3.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d="M 7.390625 25.078125 C 7.421875 25.09375 7.546875 25.234375 7.5625 25.234375 L 7.875 25.234375 C 7.921875 25.234375 8.03125 25.21875 8.03125 25.09375 C 8.03125 25.03125 8 25 7.96875 24.953125 C 7.453125 24.4375 6.6875 23.65625 5.796875 22.078125 C 4.25 19.328125 3.671875 15.78125 3.671875 12.328125 C 3.671875 5.96875 5.484375 2.21875 7.984375 -0.3125 C 8.03125 -0.359375 8.03125 -0.40625 8.03125 -0.4375 C 8.03125 -0.578125 7.9375 -0.578125 7.765625 -0.578125 C 7.578125 -0.578125 7.546875 -0.578125 7.421875 -0.453125 C 6.046875 0.71875 4.515625 2.71875 3.53125 5.734375 C 2.90625 7.625 2.578125 9.9375 2.578125 12.328125 C 2.578125 15.71875 3.203125 19.5625 5.453125 22.890625 C 5.84375 23.453125 6.375 24.046875 6.375 24.046875 C 6.515625 24.234375 6.71875 24.453125 6.828125 24.5625 Z M 7.390625 25.078125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 5.96875 12.328125 C 5.96875 8.203125 5 3.828125 2.1875 0.609375 C 1.984375 0.375 1.453125 -0.1875 1.109375 -0.484375 C 1 -0.578125 0.96875 -0.578125 0.78125 -0.578125 C 0.640625 -0.578125 0.515625 -0.578125 0.515625 -0.4375 C 0.515625 -0.375 0.578125 -0.3125 0.609375 -0.28125 C 1.09375 0.21875 1.859375 1 2.75 2.578125 C 4.296875 5.328125 4.875 8.875 4.875 12.328125 C 4.875 18.546875 3.15625 22.34375 0.578125 24.96875 C 0.546875 25 0.515625 25.046875 0.515625 25.09375 C 0.515625 25.234375 0.640625 25.234375 0.78125 25.234375 C 0.96875 25.234375 1 25.234375 1.140625 25.109375 C 2.5 23.9375 4.03125 21.953125 5.015625 18.921875 C 5.65625 16.953125 5.96875 14.625 5.96875 12.328125 Z M 5.96875 12.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 6.65625 23.09375 L 3.578125 12.328125 L 1.578125 14.671875 L 1.8125 14.890625 L 2.78125 13.734375 L 6.078125 25.25 C 6.5625 25.25 6.5625 25.25 6.6875 24.90625 L 14.5625 0 C 14.625 -0.21875 14.625 -0.265625 14.625 -0.28125 C 14.625 -0.4375 14.515625 -0.578125 14.34375 -0.578125 C 14.125 -0.578125 14.078125 -0.390625 14.015625 -0.203125 Z M 6.65625 23.09375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d="M 3.328125 -3.015625 C 3.390625 -3.265625 3.625 -4.1875 4.3125 -4.1875 C 4.359375 -4.1875 4.609375 -4.1875 4.8125 -4.0625 C 4.53125 -4 4.34375 -3.765625 4.34375 -3.515625 C 4.34375 -3.359375 4.453125 -3.171875 4.71875 -3.171875 C 4.9375 -3.171875 5.25 -3.34375 5.25 -3.75 C 5.25 -4.265625 4.671875 -4.40625 4.328125 -4.40625 C 3.75 -4.40625 3.40625 -3.875 3.28125 -3.65625 C 3.03125 -4.3125 2.5 -4.40625 2.203125 -4.40625 C 1.171875 -4.40625 0.59375 -3.125 0.59375 -2.875 C 0.59375 -2.765625 0.703125 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.796875 0.84375 -2.875 C 1.1875 -3.9375 1.84375 -4.1875 2.1875 -4.1875 C 2.375 -4.1875 2.71875 -4.09375 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.546875 2.1875 -1.140625 C 2.03125 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.953125 -0.109375 0.734375 -0.234375 C 0.984375 -0.296875 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.84375 -1.125 C 0.53125 -1.125 0.296875 -0.875 0.296875 -0.546875 C 0.296875 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.890625 0.109375 2.25 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.375 0.109375 4.9375 -1.171875 4.9375 -1.421875 C 4.9375 -1.53125 4.859375 -1.53125 4.828125 -1.53125 C 4.734375 -1.53125 4.71875 -1.484375 4.6875 -1.421875 C 4.359375 -0.34375 3.6875 -0.109375 3.375 -0.109375 C 2.984375 -0.109375 2.828125 -0.421875 2.828125 -0.765625 C 2.828125 -0.984375 2.875 -1.203125 2.984375 -1.640625 Z M 3.328125 -3.015625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 4.84375 -3.796875 C 4.890625 -3.9375 4.890625 -3.953125 4.890625 -4.03125 C 4.890625 -4.203125 4.75 -4.296875 4.59375 -4.296875 C 4.5 -4.296875 4.34375 -4.234375 4.25 -4.09375 C 4.234375 -4.03125 4.140625 -3.734375 4.109375 -3.546875 C 4.03125 -3.296875 3.96875 -3.015625 3.90625 -2.75 L 3.453125 -0.953125 C 3.421875 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.828125 -0.109375 1.71875 -0.546875 1.71875 -0.921875 C 1.71875 -1.375 1.890625 -2 2.21875 -2.875 C 2.375 -3.28125 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.109375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.890625 1.234375 -4.1875 1.578125 -4.1875 C 1.65625 -4.1875 1.828125 -4.1875 1.828125 -3.875 C 1.828125 -3.625 1.71875 -3.359375 1.65625 -3.171875 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.296875 0.109375 C 2.6875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.171875 0.171875 3.046875 0.671875 2.65625 1.203125 C 2.390625 1.53125 2.015625 1.828125 1.5625 1.828125 C 1.421875 1.828125 0.96875 1.796875 0.796875 1.40625 C 0.953125 1.40625 1.09375 1.40625 1.21875 1.28125 C 1.328125 1.203125 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.0625 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.046875 1.5625 2.046875 C 2.578125 2.046875 3.609375 1.140625 3.890625 0.015625 Z M 4.84375 -3.796875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-2">
<path style="stroke:none;" d="M 1.328125 -0.828125 C 1.859375 -1.40625 2.15625 -1.65625 2.515625 -1.96875 C 2.515625 -1.96875 3.125 -2.5 3.484375 -2.859375 C 4.4375 -3.78125 4.65625 -4.265625 4.65625 -4.3125 C 4.65625 -4.40625 4.5625 -4.40625 4.546875 -4.40625 C 4.46875 -4.40625 4.453125 -4.390625 4.390625 -4.296875 C 4.09375 -3.8125 3.890625 -3.65625 3.65625 -3.65625 C 3.40625 -3.65625 3.296875 -3.8125 3.140625 -3.984375 C 2.953125 -4.203125 2.78125 -4.40625 2.453125 -4.40625 C 1.703125 -4.40625 1.25 -3.484375 1.25 -3.265625 C 1.25 -3.21875 1.28125 -3.15625 1.359375 -3.15625 C 1.453125 -3.15625 1.46875 -3.203125 1.5 -3.265625 C 1.6875 -3.734375 2.265625 -3.734375 2.34375 -3.734375 C 2.546875 -3.734375 2.734375 -3.671875 2.96875 -3.59375 C 3.375 -3.4375 3.484375 -3.4375 3.734375 -3.4375 C 3.375 -3.015625 2.546875 -2.296875 2.359375 -2.140625 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.53125 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.375 1.234375 -0.640625 1.5625 -0.640625 C 1.78125 -0.640625 1.890625 -0.546875 2.140625 -0.265625 C 2.296875 -0.046875 2.484375 0.109375 2.765625 0.109375 C 3.765625 0.109375 4.34375 -1.15625 4.34375 -1.421875 C 4.34375 -1.46875 4.296875 -1.53125 4.21875 -1.53125 C 4.125 -1.53125 4.109375 -1.46875 4.078125 -1.390625 C 3.84375 -0.75 3.203125 -0.5625 2.875 -0.5625 C 2.6875 -0.5625 2.5 -0.625 2.296875 -0.6875 C 1.953125 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.578125 -0.859375 1.421875 -0.859375 1.328125 -0.828125 Z M 1.328125 -0.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph3-3">
<path style="stroke:none;" d="M 4.609375 -3.375 C 4.65625 -3.59375 4.75 -3.96875 4.75 -4.03125 C 4.75 -4.203125 4.609375 -4.296875 4.46875 -4.296875 C 4.34375 -4.296875 4.171875 -4.21875 4.09375 -4.015625 C 4.0625 -3.953125 3.59375 -2.046875 3.53125 -1.78125 C 3.453125 -1.484375 3.4375 -1.3125 3.4375 -1.125 C 3.4375 -1.015625 3.4375 -1 3.453125 -0.953125 C 3.21875 -0.421875 2.921875 -0.109375 2.53125 -0.109375 C 1.734375 -0.109375 1.734375 -0.84375 1.734375 -1.015625 C 1.734375 -1.328125 1.78125 -1.71875 2.25 -2.953125 C 2.359375 -3.25 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.09375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.875 1.21875 -4.1875 1.578125 -4.1875 C 1.671875 -4.1875 1.828125 -4.171875 1.828125 -3.859375 C 1.828125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -1.984375 1.09375 -1.53125 1.09375 -1.140625 C 1.09375 -0.234375 1.75 0.109375 2.5 0.109375 C 2.671875 0.109375 3.140625 0.109375 3.53125 -0.59375 C 3.796875 0.046875 4.484375 0.109375 4.78125 0.109375 C 5.53125 0.109375 5.96875 -0.515625 6.234375 -1.109375 C 6.5625 -1.890625 6.890625 -3.234375 6.890625 -3.703125 C 6.890625 -4.25 6.625 -4.40625 6.453125 -4.40625 C 6.203125 -4.40625 5.953125 -4.140625 5.953125 -3.921875 C 5.953125 -3.796875 6.015625 -3.734375 6.09375 -3.65625 C 6.203125 -3.546875 6.453125 -3.296875 6.453125 -2.8125 C 6.453125 -2.46875 6.171875 -1.5 5.90625 -0.984375 C 5.65625 -0.453125 5.296875 -0.109375 4.8125 -0.109375 C 4.34375 -0.109375 4.078125 -0.40625 4.078125 -0.984375 C 4.078125 -1.25 4.140625 -1.5625 4.1875 -1.703125 Z M 4.609375 -3.375 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d="M 1.765625 -6.921875 L 0.328125 -6.8125 L 0.328125 -6.5 C 1.03125 -6.5 1.109375 -6.4375 1.109375 -5.9375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.4375 -0.03125 C 1.6875 -0.03125 2.171875 -0.015625 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 Z M 1.765625 -6.921875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 4.6875 -2.140625 C 4.6875 -3.40625 3.703125 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.28125 -3.375 0.28125 -2.140625 C 0.28125 -0.84375 1.3125 0.109375 2.484375 0.109375 C 3.6875 0.109375 4.6875 -0.875 4.6875 -2.140625 Z M 2.5 -0.140625 C 2.0625 -0.140625 1.625 -0.34375 1.359375 -0.8125 C 1.109375 -1.25 1.109375 -1.859375 1.109375 -2.21875 C 1.109375 -2.609375 1.109375 -3.140625 1.34375 -3.578125 C 1.609375 -4.03125 2.078125 -4.25 2.484375 -4.25 C 2.921875 -4.25 3.34375 -4.03125 3.609375 -3.59375 C 3.875 -3.171875 3.875 -2.59375 3.875 -2.21875 C 3.875 -1.859375 3.875 -1.3125 3.65625 -0.875 C 3.421875 -0.421875 2.984375 -0.140625 2.5 -0.140625 Z M 2.5 -0.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-2">
<path style="stroke:none;" d="M 2.21875 -1.71875 C 1.34375 -1.71875 1.34375 -2.71875 1.34375 -2.9375 C 1.34375 -3.203125 1.359375 -3.53125 1.5 -3.78125 C 1.578125 -3.890625 1.8125 -4.171875 2.21875 -4.171875 C 3.078125 -4.171875 3.078125 -3.1875 3.078125 -2.953125 C 3.078125 -2.6875 3.078125 -2.359375 2.921875 -2.109375 C 2.84375 -2 2.609375 -1.71875 2.21875 -1.71875 Z M 1.0625 -1.328125 C 1.0625 -1.359375 1.0625 -1.59375 1.21875 -1.796875 C 1.609375 -1.515625 2.03125 -1.484375 2.21875 -1.484375 C 3.140625 -1.484375 3.828125 -2.171875 3.828125 -2.9375 C 3.828125 -3.3125 3.671875 -3.671875 3.421875 -3.90625 C 3.78125 -4.25 4.140625 -4.296875 4.3125 -4.296875 C 4.34375 -4.296875 4.390625 -4.296875 4.421875 -4.28125 C 4.3125 -4.25 4.25 -4.140625 4.25 -4.015625 C 4.25 -3.84375 4.390625 -3.734375 4.546875 -3.734375 C 4.640625 -3.734375 4.828125 -3.796875 4.828125 -4.03125 C 4.828125 -4.203125 4.71875 -4.515625 4.328125 -4.515625 C 4.125 -4.515625 3.6875 -4.453125 3.265625 -4.046875 C 2.84375 -4.375 2.4375 -4.40625 2.21875 -4.40625 C 1.28125 -4.40625 0.59375 -3.71875 0.59375 -2.953125 C 0.59375 -2.515625 0.8125 -2.140625 1.0625 -1.921875 C 0.9375 -1.78125 0.75 -1.453125 0.75 -1.09375 C 0.75 -0.78125 0.890625 -0.40625 1.203125 -0.203125 C 0.59375 -0.046875 0.28125 0.390625 0.28125 0.78125 C 0.28125 1.5 1.265625 2.046875 2.484375 2.046875 C 3.65625 2.046875 4.6875 1.546875 4.6875 0.765625 C 4.6875 0.421875 4.5625 -0.09375 4.046875 -0.375 C 3.515625 -0.640625 2.9375 -0.640625 2.328125 -0.640625 C 2.078125 -0.640625 1.65625 -0.640625 1.578125 -0.65625 C 1.265625 -0.703125 1.0625 -1 1.0625 -1.328125 Z M 2.5 1.828125 C 1.484375 1.828125 0.796875 1.3125 0.796875 0.78125 C 0.796875 0.328125 1.171875 -0.046875 1.609375 -0.0625 L 2.203125 -0.0625 C 3.0625 -0.0625 4.171875 -0.0625 4.171875 0.78125 C 4.171875 1.328125 3.46875 1.828125 2.5 1.828125 Z M 2.5 1.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph4-3">
<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-4">
<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
</symbol>
<symbol overflow="visible" id="glyph4-5">
<path style="stroke:none;" d="M 1.71875 -3.984375 L 3.15625 -3.984375 L 3.15625 -4.296875 L 1.71875 -4.296875 L 1.71875 -6.125 L 1.46875 -6.125 C 1.46875 -5.3125 1.171875 -4.25 0.1875 -4.203125 L 0.1875 -3.984375 L 1.03125 -3.984375 L 1.03125 -1.234375 C 1.03125 -0.015625 1.96875 0.109375 2.328125 0.109375 C 3.03125 0.109375 3.3125 -0.59375 3.3125 -1.234375 L 3.3125 -1.796875 L 3.0625 -1.796875 L 3.0625 -1.25 C 3.0625 -0.515625 2.765625 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 Z M 1.71875 -3.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph4-6">
<path style="stroke:none;" d="M 3.3125 -0.75 C 3.359375 -0.359375 3.625 0.0625 4.09375 0.0625 C 4.3125 0.0625 4.921875 -0.078125 4.921875 -0.890625 L 4.921875 -1.453125 L 4.671875 -1.453125 L 4.671875 -0.890625 C 4.671875 -0.3125 4.421875 -0.25 4.3125 -0.25 C 3.984375 -0.25 3.9375 -0.703125 3.9375 -0.75 L 3.9375 -2.734375 C 3.9375 -3.15625 3.9375 -3.546875 3.578125 -3.921875 C 3.1875 -4.3125 2.6875 -4.46875 2.21875 -4.46875 C 1.390625 -4.46875 0.703125 -4 0.703125 -3.34375 C 0.703125 -3.046875 0.90625 -2.875 1.171875 -2.875 C 1.453125 -2.875 1.625 -3.078125 1.625 -3.328125 C 1.625 -3.453125 1.578125 -3.78125 1.109375 -3.78125 C 1.390625 -4.140625 1.875 -4.25 2.1875 -4.25 C 2.6875 -4.25 3.25 -3.859375 3.25 -2.96875 L 3.25 -2.609375 C 2.734375 -2.578125 2.046875 -2.546875 1.421875 -2.25 C 0.671875 -1.90625 0.421875 -1.390625 0.421875 -0.953125 C 0.421875 -0.140625 1.390625 0.109375 2.015625 0.109375 C 2.671875 0.109375 3.125 -0.296875 3.3125 -0.75 Z M 3.25 -2.390625 L 3.25 -1.390625 C 3.25 -0.453125 2.53125 -0.109375 2.078125 -0.109375 C 1.59375 -0.109375 1.1875 -0.453125 1.1875 -0.953125 C 1.1875 -1.5 1.609375 -2.328125 3.25 -2.390625 Z M 3.25 -2.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-7">
<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.8125 -0.3125 4.5625 -0.3125 4.5625 -0.609375 L 4.5625 -2.515625 C 4.5625 -3.375 4.5625 -3.671875 4.25 -4.03125 C 4.109375 -4.203125 3.78125 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph5-0">
<path style="stroke:none;" d="M 3.515625 -1.265625 L 3.28125 -1.265625 C 3.265625 -1.109375 3.1875 -0.703125 3.09375 -0.640625 C 3.046875 -0.59375 2.515625 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.109375 -1.4375 2.515625 -1.765625 C 3.03125 -2.171875 3.515625 -2.609375 3.515625 -3.265625 C 3.515625 -4.109375 2.78125 -4.625 1.890625 -4.625 C 1.03125 -4.625 0.4375 -4.015625 0.4375 -3.375 C 0.4375 -3.03125 0.734375 -2.984375 0.8125 -2.984375 C 0.96875 -2.984375 1.171875 -3.109375 1.171875 -3.359375 C 1.171875 -3.484375 1.125 -3.734375 0.765625 -3.734375 C 0.984375 -4.21875 1.453125 -4.375 1.78125 -4.375 C 2.484375 -4.375 2.84375 -3.828125 2.84375 -3.265625 C 2.84375 -2.65625 2.40625 -2.1875 2.1875 -1.9375 L 0.515625 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.3125 0 Z M 3.515625 -1.265625 "/>
</symbol>
</g>
</defs>
<g id="surface1">
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="-0.283984" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="8.167186" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="13.630076" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="24.060951" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="30.360956" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="38.343965" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="44.643783" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="52.005903" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="58.305907" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="65.469876" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="74.892934" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-3" x="89.805852" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-4" x="96.051856" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-5" x="103.467874" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="113.655776" y="1.3789"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="122.223746" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-6" x="135.048746" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-7" x="140.592751" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-8" x="144.49876" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="154.687046" y="1.3789"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="164.442906" y="10.36093"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="171.796036" y="10.36093"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="174.559032" y="10.36093"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-2" x="179.536031" y="10.36093"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-3" x="184.665946" y="10.36093"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="188.535836" y="10.36093"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-4" x="193.782716" y="10.36093"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1644.414062 152.890625 L 1976.601562 152.890625 " transform="matrix(0.1,0,0,-0.1,0,29)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="178.519" y="22.25"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="198.8588" y="1.3789"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-9" x="210.6127" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="224.7248" y="2.7922"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2390.703125 264.960938 L 2539.375 264.960938 " transform="matrix(0.1,0,0,-0.1,0,29)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-3" x="240.268" y="11.648"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="247.666043" y="11.648"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2402.695312 152.890625 L 2527.421875 152.890625 " transform="matrix(0.1,0,0,-0.1,0,29)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="241.033" y="22.25"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="246.729993" y="22.25"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="253.9303" y="1.3789"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-9" x="265.6932" y="17.3"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-3" x="288.6702" y="11.64805"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="296.06825" y="8.03907"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2810.039062 152.890625 L 3082.1875 152.890625 " transform="matrix(0.1,0,0,-0.1,0,29)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-5" x="281.002" y="22.25"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-6" x="284.871997" y="22.25"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-7" x="289.848995" y="22.25"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-3" x="295.393007" y="22.25"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="299.2629" y="22.25"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-4" x="304.33907" y="22.25"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,619 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="352pt" height="77pt" viewBox="0 0 352 77" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d="M 6.5 -4.34375 C 6.5 -4.65625 6.5 -6.265625 5.234375 -6.265625 C 4.734375 -6.265625 4.25 -6.03125 3.859375 -5.515625 C 3.765625 -5.71875 3.453125 -6.265625 2.765625 -6.265625 C 2.125 -6.265625 1.671875 -5.859375 1.5625 -5.71875 C 1.546875 -6.1875 1.25 -6.1875 0.984375 -6.1875 L 0.5625 -6.1875 C 0.359375 -6.1875 -0.015625 -6.1875 -0.015625 -5.765625 C -0.015625 -5.34375 0.3125 -5.34375 0.765625 -5.34375 L 0.765625 -0.828125 C 0.296875 -0.828125 -0.015625 -0.828125 -0.015625 -0.421875 C -0.015625 0 0.359375 0 0.5625 0 L 1.765625 0 C 1.96875 0 2.34375 0 2.34375 -0.421875 C 2.34375 -0.828125 2.015625 -0.828125 1.5625 -0.828125 L 1.5625 -3.46875 C 1.5625 -4.671875 2.078125 -5.4375 2.71875 -5.4375 C 3.109375 -5.4375 3.234375 -4.9375 3.234375 -4.265625 L 3.234375 -0.828125 C 2.984375 -0.828125 2.59375 -0.828125 2.59375 -0.421875 C 2.59375 0 2.984375 0 3.1875 0 L 4.234375 0 C 4.4375 0 4.8125 0 4.8125 -0.421875 C 4.8125 -0.828125 4.46875 -0.828125 4.03125 -0.828125 L 4.03125 -3.46875 C 4.03125 -4.671875 4.546875 -5.4375 5.171875 -5.4375 C 5.578125 -5.4375 5.6875 -4.9375 5.6875 -4.265625 L 5.6875 -0.828125 C 5.453125 -0.828125 5.0625 -0.828125 5.0625 -0.421875 C 5.0625 0 5.453125 0 5.65625 0 L 6.703125 0 C 6.90625 0 7.265625 0 7.265625 -0.421875 C 7.265625 -0.828125 6.9375 -0.828125 6.5 -0.828125 Z M 6.5 -4.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 5.9375 -4.078125 C 5.9375 -5.15625 5.125 -6.3125 3.1875 -6.3125 C 2.578125 -6.3125 1.1875 -6.3125 1.1875 -5.328125 C 1.1875 -4.9375 1.46875 -4.71875 1.78125 -4.71875 C 1.859375 -4.71875 2.34375 -4.75 2.359375 -5.34375 C 2.359375 -5.421875 2.359375 -5.4375 2.671875 -5.46875 C 2.84375 -5.484375 3.03125 -5.484375 3.203125 -5.484375 C 3.53125 -5.484375 4.015625 -5.484375 4.484375 -5.125 C 5 -4.71875 5 -4.3125 5 -3.90625 C 4.15625 -3.875 3.328125 -3.8125 2.4375 -3.53125 C 1.71875 -3.28125 0.796875 -2.765625 0.796875 -1.796875 C 0.796875 -0.78125 1.703125 0.09375 3.046875 0.09375 C 3.5 0.09375 4.390625 0.015625 5.140625 -0.5 C 5.421875 -0.03125 6.140625 0 6.6875 0 C 7.03125 0 7.375 0 7.375 -0.421875 C 7.375 -0.828125 7 -0.828125 6.796875 -0.828125 C 6.421875 -0.828125 6.140625 -0.859375 5.9375 -0.953125 Z M 5 -1.890625 C 5 -1.5625 5 -1.265625 4.421875 -0.984375 C 3.921875 -0.75 3.234375 -0.75 3.203125 -0.75 C 2.359375 -0.75 1.734375 -1.203125 1.734375 -1.796875 C 1.734375 -2.640625 3.265625 -3.125 5 -3.125 Z M 5 -1.890625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 4.046875 -3.65625 L 5.828125 -5.34375 L 6.25 -5.34375 C 6.453125 -5.34375 6.828125 -5.34375 6.828125 -5.765625 C 6.828125 -6.1875 6.453125 -6.1875 6.25 -6.1875 L 4.15625 -6.1875 C 3.953125 -6.1875 3.578125 -6.1875 3.578125 -5.765625 C 3.578125 -5.34375 3.953125 -5.34375 4.15625 -5.34375 L 4.65625 -5.34375 L 2.34375 -3.140625 L 2.34375 -8.171875 C 2.34375 -8.625 2.25 -8.765625 1.765625 -8.765625 L 0.890625 -8.765625 C 0.6875 -8.765625 0.296875 -8.765625 0.296875 -8.34375 C 0.296875 -7.9375 0.6875 -7.9375 0.890625 -7.9375 L 1.53125 -7.9375 L 1.53125 -0.828125 L 0.890625 -0.828125 C 0.6875 -0.828125 0.296875 -0.828125 0.296875 -0.421875 C 0.296875 0 0.6875 0 0.890625 0 L 2.984375 0 C 3.1875 0 3.578125 0 3.578125 -0.421875 C 3.578125 -0.828125 3.1875 -0.828125 2.984375 -0.828125 L 2.34375 -0.828125 L 2.34375 -2.03125 L 3.453125 -3.09375 L 5.15625 -0.828125 C 4.703125 -0.828125 4.359375 -0.828125 4.359375 -0.421875 C 4.359375 0 4.75 0 4.953125 0 L 6.5625 0 C 6.75 0 7.125 0 7.125 -0.421875 C 7.125 -0.828125 6.75 -0.828125 6.5625 -0.828125 L 6.171875 -0.828125 Z M 4.046875 -3.65625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 5.96875 -2.75 C 6.265625 -2.75 6.546875 -2.75 6.546875 -3.28125 C 6.546875 -4.96875 5.59375 -6.3125 3.796875 -6.3125 C 2.140625 -6.3125 0.796875 -4.875 0.796875 -3.125 C 0.796875 -1.3125 2.25 0.09375 4.015625 0.09375 C 5.859375 0.09375 6.546875 -1.1875 6.546875 -1.5625 C 6.546875 -1.65625 6.515625 -1.96875 6.0625 -1.96875 C 5.796875 -1.96875 5.703125 -1.859375 5.625 -1.65625 C 5.265625 -0.8125 4.328125 -0.75 4.0625 -0.75 C 2.875 -0.75 1.921875 -1.65625 1.765625 -2.75 Z M 1.78125 -3.546875 C 1.96875 -4.765625 2.890625 -5.484375 3.796875 -5.484375 C 5.234375 -5.484375 5.53125 -4.265625 5.59375 -3.546875 Z M 1.78125 -3.546875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 3.546875 -5.34375 L 5.28125 -5.34375 C 5.484375 -5.34375 5.859375 -5.34375 5.859375 -5.765625 C 5.859375 -6.1875 5.484375 -6.1875 5.28125 -6.1875 L 3.546875 -6.1875 L 3.546875 -6.90625 C 3.546875 -8.015625 4.546875 -8.015625 5 -8.015625 C 5 -7.984375 5.125 -7.453125 5.59375 -7.453125 C 5.828125 -7.453125 6.15625 -7.625 6.15625 -8.03125 C 6.15625 -8.84375 5.0625 -8.84375 4.84375 -8.84375 C 3.765625 -8.84375 2.609375 -8.234375 2.609375 -6.953125 L 2.609375 -6.1875 L 1.1875 -6.1875 C 0.984375 -6.1875 0.609375 -6.1875 0.609375 -5.765625 C 0.609375 -5.34375 0.96875 -5.34375 1.171875 -5.34375 L 2.609375 -5.34375 L 2.609375 -0.828125 L 1.25 -0.828125 C 1.046875 -0.828125 0.671875 -0.828125 0.671875 -0.421875 C 0.671875 0 1.046875 0 1.25 0 L 4.90625 0 C 5.109375 0 5.484375 0 5.484375 -0.421875 C 5.484375 -0.828125 5.109375 -0.828125 4.90625 -0.828125 L 3.546875 -0.828125 Z M 3.546875 -5.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 6.078125 -5.34375 L 6.453125 -5.34375 C 6.65625 -5.34375 7.046875 -5.34375 7.046875 -5.765625 C 7.046875 -6.1875 6.65625 -6.1875 6.453125 -6.1875 L 4.875 -6.1875 C 4.671875 -6.1875 4.28125 -6.1875 4.28125 -5.765625 C 4.28125 -5.34375 4.671875 -5.34375 4.875 -5.34375 L 5.234375 -5.34375 L 3.6875 -0.734375 L 2.140625 -5.34375 L 2.5 -5.34375 C 2.703125 -5.34375 3.078125 -5.34375 3.078125 -5.765625 C 3.078125 -6.1875 2.703125 -6.1875 2.5 -6.1875 L 0.921875 -6.1875 C 0.71875 -6.1875 0.328125 -6.1875 0.328125 -5.765625 C 0.328125 -5.34375 0.71875 -5.34375 0.921875 -5.34375 L 1.296875 -5.34375 L 2.9375 -0.421875 C 3.09375 0.078125 3.40625 0.078125 3.6875 0.078125 C 3.953125 0.078125 4.28125 0.078125 4.4375 -0.421875 Z M 6.078125 -5.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 3.09375 -2.71875 C 3.09375 -4.421875 4.296875 -5.4375 5.515625 -5.4375 C 5.59375 -5.4375 5.6875 -5.4375 5.75 -5.421875 C 5.796875 -4.90625 6.203125 -4.859375 6.296875 -4.859375 C 6.625 -4.859375 6.859375 -5.109375 6.859375 -5.421875 C 6.859375 -6.03125 6.25 -6.265625 5.53125 -6.265625 C 4.578125 -6.265625 3.765625 -5.84375 3.09375 -5.03125 L 3.09375 -5.59375 C 3.09375 -6.03125 3.015625 -6.1875 2.53125 -6.1875 L 1.078125 -6.1875 C 0.875 -6.1875 0.5 -6.1875 0.5 -5.765625 C 0.5 -5.34375 0.875 -5.34375 1.078125 -5.34375 L 2.171875 -5.34375 L 2.171875 -0.828125 L 1.078125 -0.828125 C 0.875 -0.828125 0.5 -0.828125 0.5 -0.421875 C 0.5 0 0.875 0 1.078125 0 L 4.609375 0 C 4.8125 0 5.171875 0 5.171875 -0.421875 C 5.171875 -0.828125 4.8125 -0.828125 4.609375 -0.828125 L 3.09375 -0.828125 Z M 3.09375 -2.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 6.28125 -7.03125 C 6.421875 -7.125 6.578125 -7.21875 6.578125 -7.46875 C 6.578125 -7.78125 6.328125 -7.953125 6.109375 -7.953125 L 6.078125 -7.9375 C 5.96875 -7.921875 5.9375 -7.921875 5.78125 -7.796875 L 1.0625 -4.8125 C 0.890625 -4.71875 0.78125 -4.5625 0.78125 -4.390625 C 0.78125 -4.125 0.953125 -4.03125 1.0625 -3.953125 L 5.765625 -0.96875 C 5.859375 -0.90625 5.984375 -0.8125 6.109375 -0.8125 C 6.328125 -0.8125 6.578125 -0.984375 6.578125 -1.296875 C 6.578125 -1.46875 6.5 -1.609375 6.34375 -1.703125 L 2.125 -4.375 Z M 6.28125 -7.03125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 6.546875 -1.5625 C 6.546875 -1.9375 6.1875 -1.9375 6.0625 -1.9375 C 5.734375 -1.9375 5.6875 -1.828125 5.609375 -1.625 C 5.296875 -0.828125 4.59375 -0.75 4.25 -0.75 C 3.03125 -0.75 2 -1.765625 2 -3.09375 C 2 -3.828125 2.40625 -5.484375 4.28125 -5.484375 C 4.671875 -5.484375 4.984375 -5.453125 5.109375 -5.4375 C 5.203125 -5.40625 5.21875 -5.390625 5.21875 -5.328125 C 5.265625 -4.734375 5.703125 -4.71875 5.796875 -4.71875 C 6.109375 -4.71875 6.390625 -4.9375 6.390625 -5.328125 C 6.390625 -6.3125 4.9375 -6.3125 4.296875 -6.3125 C 1.84375 -6.3125 1.0625 -4.296875 1.0625 -3.09375 C 1.0625 -1.34375 2.390625 0.09375 4.109375 0.09375 C 6.03125 0.09375 6.546875 -1.328125 6.546875 -1.5625 Z M 6.546875 -1.5625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 2.890625 3.1875 C 3.09375 3.1875 3.46875 3.1875 3.46875 2.765625 C 3.46875 2.359375 3.09375 2.359375 2.890625 2.359375 L 2.3125 2.359375 L 2.3125 -0.71875 C 2.65625 -0.328125 3.1875 0.09375 3.984375 0.09375 C 5.515625 0.09375 6.84375 -1.28125 6.84375 -3.09375 C 6.84375 -4.859375 5.640625 -6.265625 4.140625 -6.265625 C 3.09375 -6.265625 2.4375 -5.640625 2.3125 -5.5 C 2.3125 -5.96875 2.3125 -6.1875 1.734375 -6.1875 L 0.78125 -6.1875 C 0.59375 -6.1875 0.21875 -6.1875 0.21875 -5.765625 C 0.21875 -5.34375 0.59375 -5.34375 0.78125 -5.34375 L 1.375 -5.34375 L 1.375 2.359375 L 0.78125 2.359375 C 0.59375 2.359375 0.21875 2.359375 0.21875 2.765625 C 0.21875 3.1875 0.59375 3.1875 0.78125 3.1875 Z M 2.3125 -3.8125 C 2.3125 -4.640625 3.109375 -5.4375 4.046875 -5.4375 C 5.078125 -5.4375 5.90625 -4.390625 5.90625 -3.09375 C 5.90625 -1.71875 4.9375 -0.75 3.921875 -0.75 C 2.84375 -0.75 2.3125 -1.96875 2.3125 -2.6875 Z M 2.3125 -3.8125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 2.3125 -8.171875 C 2.3125 -8.625 2.21875 -8.765625 1.734375 -8.765625 L 0.78125 -8.765625 C 0.59375 -8.765625 0.21875 -8.765625 0.21875 -8.34375 C 0.21875 -7.9375 0.59375 -7.9375 0.78125 -7.9375 L 1.375 -7.9375 L 1.375 -0.59375 C 1.375 -0.328125 1.375 0 1.84375 0 C 2.3125 0 2.3125 -0.296875 2.3125 -0.71875 C 2.65625 -0.328125 3.1875 0.09375 3.984375 0.09375 C 5.515625 0.09375 6.84375 -1.28125 6.84375 -3.09375 C 6.84375 -4.859375 5.640625 -6.265625 4.140625 -6.265625 C 3.09375 -6.265625 2.4375 -5.640625 2.3125 -5.5 Z M 2.3125 -3.8125 C 2.3125 -4.640625 3.109375 -5.4375 4.046875 -5.4375 C 5.078125 -5.4375 5.90625 -4.390625 5.90625 -3.09375 C 5.90625 -1.71875 4.9375 -0.75 3.921875 -0.75 C 2.84375 -0.75 2.3125 -1.96875 2.3125 -2.6875 Z M 2.3125 -3.8125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 4.328125 -8.140625 C 4.328125 -8.484375 4.046875 -8.78125 3.6875 -8.78125 C 3.328125 -8.78125 3.046875 -8.484375 3.046875 -8.140625 C 3.046875 -7.78125 3.328125 -7.484375 3.6875 -7.484375 C 4.046875 -7.484375 4.328125 -7.78125 4.328125 -8.140625 Z M 1.859375 -6.1875 C 1.65625 -6.1875 1.296875 -6.1875 1.296875 -5.765625 C 1.296875 -5.34375 1.65625 -5.34375 1.859375 -5.34375 L 3.40625 -5.34375 L 3.40625 -0.828125 L 1.765625 -0.828125 C 1.5625 -0.828125 1.171875 -0.828125 1.171875 -0.421875 C 1.171875 0 1.5625 0 1.765625 0 L 5.75 0 C 5.953125 0 6.328125 0 6.328125 -0.421875 C 6.328125 -0.828125 5.953125 -0.828125 5.75 -0.828125 L 4.328125 -0.828125 L 4.328125 -5.59375 C 4.328125 -6.03125 4.25 -6.1875 3.765625 -6.1875 Z M 1.859375 -6.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 6 -4.203125 C 6 -5.609375 5.328125 -6.265625 4.15625 -6.265625 C 3.1875 -6.265625 2.546875 -5.71875 2.3125 -5.453125 C 2.3125 -5.984375 2.3125 -6.1875 1.734375 -6.1875 L 0.78125 -6.1875 C 0.59375 -6.1875 0.21875 -6.1875 0.21875 -5.765625 C 0.21875 -5.34375 0.59375 -5.34375 0.78125 -5.34375 L 1.375 -5.34375 L 1.375 -0.828125 L 0.78125 -0.828125 C 0.59375 -0.828125 0.21875 -0.828125 0.21875 -0.421875 C 0.21875 0 0.59375 0 0.78125 0 L 2.890625 0 C 3.09375 0 3.46875 0 3.46875 -0.421875 C 3.46875 -0.828125 3.09375 -0.828125 2.890625 -0.828125 L 2.3125 -0.828125 L 2.3125 -3.421875 C 2.3125 -4.8125 3.28125 -5.4375 4.0625 -5.4375 C 4.890625 -5.4375 5.0625 -4.96875 5.0625 -4.140625 L 5.0625 -0.828125 L 4.46875 -0.828125 C 4.28125 -0.828125 3.90625 -0.828125 3.90625 -0.421875 C 3.90625 0 4.28125 0 4.46875 0 L 6.578125 0 C 6.78125 0 7.15625 0 7.15625 -0.421875 C 7.15625 -0.828125 6.78125 -0.828125 6.578125 -0.828125 L 6 -0.828125 Z M 6 -4.203125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 4.15625 -8.171875 C 4.15625 -8.625 4.078125 -8.765625 3.578125 -8.765625 L 1.484375 -8.765625 C 1.28125 -8.765625 0.90625 -8.765625 0.90625 -8.34375 C 0.90625 -7.9375 1.28125 -7.9375 1.484375 -7.9375 L 3.234375 -7.9375 L 3.234375 -0.828125 L 1.484375 -0.828125 C 1.28125 -0.828125 0.90625 -0.828125 0.90625 -0.421875 C 0.90625 0 1.28125 0 1.484375 0 L 5.90625 0 C 6.109375 0 6.484375 0 6.484375 -0.421875 C 6.484375 -0.828125 6.109375 -0.828125 5.90625 -0.828125 L 4.15625 -0.828125 Z M 4.15625 -8.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke:none;" d="M 6.546875 -3.09375 C 6.546875 -4.890625 5.234375 -6.3125 3.6875 -6.3125 C 2.140625 -6.3125 0.828125 -4.890625 0.828125 -3.09375 C 0.828125 -1.296875 2.15625 0.09375 3.6875 0.09375 C 5.21875 0.09375 6.546875 -1.296875 6.546875 -3.09375 Z M 3.6875 -0.75 C 2.65625 -0.75 1.765625 -1.84375 1.765625 -3.203125 C 1.765625 -4.53125 2.6875 -5.484375 3.6875 -5.484375 C 4.6875 -5.484375 5.609375 -4.53125 5.609375 -3.203125 C 5.609375 -1.828125 4.71875 -0.75 3.6875 -0.75 Z M 3.6875 -0.75 "/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke:none;" d="M 3.09375 -5.34375 L 5.421875 -5.34375 C 5.625 -5.34375 6 -5.34375 6 -5.765625 C 6 -6.1875 5.625 -6.1875 5.421875 -6.1875 L 3.09375 -6.1875 L 3.09375 -7.359375 C 3.09375 -7.609375 3.09375 -7.953125 2.640625 -7.953125 C 2.171875 -7.953125 2.171875 -7.609375 2.171875 -7.359375 L 2.171875 -6.1875 L 0.953125 -6.1875 C 0.75 -6.1875 0.359375 -6.1875 0.359375 -5.765625 C 0.359375 -5.34375 0.734375 -5.34375 0.9375 -5.34375 L 2.171875 -5.34375 L 2.171875 -1.734375 C 2.171875 -0.40625 3.078125 0.09375 4.109375 0.09375 C 4.890625 0.09375 6.3125 -0.296875 6.3125 -1.765625 C 6.3125 -2.046875 6.3125 -2.359375 5.84375 -2.359375 C 5.375 -2.359375 5.375 -2.046875 5.375 -1.75 C 5.359375 -0.890625 4.546875 -0.75 4.21875 -0.75 C 3.09375 -0.75 3.09375 -1.46875 3.09375 -1.8125 Z M 3.09375 -5.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke:none;" d="M 5.5625 -7.9375 C 5.765625 -7.9375 6.140625 -7.9375 6.140625 -8.34375 C 6.140625 -8.765625 5.765625 -8.765625 5.5625 -8.765625 L 1.84375 -8.765625 C 1.375 -8.765625 1.265625 -8.65625 1.265625 -8.203125 L 1.265625 -4.375 C 1.265625 -4.171875 1.265625 -3.8125 1.6875 -3.8125 C 1.921875 -3.8125 1.984375 -3.890625 2.09375 -4.03125 C 2.53125 -4.53125 3.15625 -4.765625 3.90625 -4.765625 C 5.015625 -4.765625 5.703125 -3.75 5.703125 -2.71875 C 5.703125 -1.5625 4.703125 -0.65625 3.5 -0.65625 C 2.75 -0.65625 2 -1.015625 1.734375 -1.6875 C 1.796875 -1.75 1.890625 -1.84375 1.890625 -2.109375 C 1.890625 -2.5 1.5625 -2.703125 1.3125 -2.703125 C 1.1875 -2.703125 0.734375 -2.625 0.734375 -2.0625 C 0.734375 -0.859375 1.921875 0.171875 3.5 0.171875 C 5.234375 0.171875 6.640625 -1.125 6.640625 -2.71875 C 6.640625 -4.171875 5.5625 -5.59375 3.90625 -5.59375 C 3.421875 -5.59375 2.796875 -5.515625 2.1875 -5.171875 L 2.1875 -7.9375 Z M 5.5625 -7.9375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke:none;" d="M 6.65625 -4.375 C 6.65625 -7.046875 5.234375 -8.9375 3.6875 -8.9375 C 2.125 -8.9375 0.71875 -7.015625 0.71875 -4.390625 C 0.71875 -1.71875 2.140625 0.171875 3.6875 0.171875 C 5.25 0.171875 6.65625 -1.75 6.65625 -4.375 Z M 3.6875 -0.65625 C 2.546875 -0.65625 1.65625 -2.390625 1.65625 -4.53125 C 1.65625 -6.671875 2.640625 -8.109375 3.6875 -8.109375 C 4.734375 -8.109375 5.71875 -6.671875 5.71875 -4.53125 C 5.71875 -2.40625 4.8125 -0.65625 3.6875 -0.65625 Z M 3.6875 -0.65625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke:none;" d="M 3.953125 -0.046875 C 3.890625 0.40625 3.59375 0.953125 2.890625 1.1875 C 2.765625 1.21875 2.546875 1.296875 2.546875 1.5625 C 2.546875 1.75 2.765625 2 3 2 C 3.390625 2 4.8125 1.296875 4.8125 -0.265625 C 4.8125 -1.015625 4.328125 -1.625 3.703125 -1.625 C 3.171875 -1.625 2.890625 -1.203125 2.890625 -0.8125 C 2.890625 -0.34375 3.234375 0 3.6875 0 C 3.765625 0 3.875 -0.015625 3.953125 -0.046875 Z M 3.953125 -0.046875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-19">
<path style="stroke:none;" d="M 2.6875 -8.28125 C 2.515625 -8.765625 2.21875 -8.765625 1.921875 -8.765625 L 0.984375 -8.765625 C 0.78125 -8.765625 0.421875 -8.765625 0.421875 -8.34375 C 0.421875 -7.9375 0.78125 -7.9375 0.984375 -7.9375 L 1.3125 -7.9375 L 1.3125 -0.828125 L 0.984375 -0.828125 C 0.78125 -0.828125 0.421875 -0.828125 0.421875 -0.421875 C 0.421875 0 0.78125 0 0.984375 0 L 2.421875 0 C 2.625 0 3.015625 0 3.015625 -0.421875 C 3.015625 -0.828125 2.625 -0.828125 2.421875 -0.828125 L 2.109375 -0.828125 L 2.109375 -7.78125 L 2.125 -7.78125 C 2.171875 -7.609375 2.296875 -7.25 2.546875 -6.515625 L 4.6875 -0.484375 C 4.859375 0 5.15625 0 5.46875 0 C 5.890625 0 6.0625 -0.046875 6.0625 -0.59375 L 6.0625 -7.9375 L 6.390625 -7.9375 C 6.578125 -7.9375 6.953125 -7.9375 6.953125 -8.34375 C 6.953125 -8.765625 6.59375 -8.765625 6.390625 -8.765625 L 4.953125 -8.765625 C 4.75 -8.765625 4.359375 -8.765625 4.359375 -8.34375 C 4.359375 -7.9375 4.75 -7.9375 4.953125 -7.9375 L 5.265625 -7.9375 L 5.265625 -0.984375 L 5.25 -0.984375 C 5.203125 -1.140625 5.078125 -1.515625 4.8125 -2.25 Z M 2.6875 -8.28125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-20">
<path style="stroke:none;" d="M 6.453125 -5.34375 C 6.796875 -5.34375 7.15625 -5.34375 7.15625 -5.765625 C 7.15625 -6.1875 6.765625 -6.1875 6.5625 -6.1875 L 4.96875 -6.1875 C 4.765625 -6.1875 4.375 -6.1875 4.375 -5.765625 C 4.375 -5.34375 4.765625 -5.34375 4.96875 -5.34375 L 5.640625 -5.34375 L 4.921875 -0.96875 L 4.90625 -0.96875 C 4.84375 -1.34375 4.625 -2.15625 4.46875 -2.609375 C 4.21875 -3.546875 4.171875 -3.71875 3.703125 -3.71875 C 3.234375 -3.71875 3.1875 -3.546875 2.921875 -2.625 C 2.640625 -1.65625 2.53125 -1.234375 2.5 -0.96875 L 2.484375 -0.96875 L 1.734375 -5.34375 L 2.40625 -5.34375 C 2.609375 -5.34375 3 -5.34375 3 -5.765625 C 3 -6.1875 2.609375 -6.1875 2.40625 -6.1875 L 0.796875 -6.1875 C 0.609375 -6.1875 0.21875 -6.1875 0.21875 -5.765625 C 0.21875 -5.34375 0.578125 -5.34375 0.921875 -5.34375 L 1.78125 -0.46875 C 1.859375 0.03125 2.09375 0.078125 2.421875 0.078125 C 2.984375 0.078125 3.015625 -0.046875 3.296875 -1.03125 C 3.421875 -1.53125 3.65625 -2.328125 3.703125 -2.71875 L 3.71875 -2.71875 C 3.734375 -2.53125 3.796875 -2.125 4.109375 -1.015625 C 4.390625 -0.0625 4.421875 0.078125 4.96875 0.078125 C 5.203125 0.078125 5.5 0.078125 5.59375 -0.453125 Z M 6.453125 -5.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-21">
<path style="stroke:none;" d="M 6.3125 -3.9375 C 6.484375 -4.046875 6.578125 -4.203125 6.578125 -4.375 C 6.578125 -4.640625 6.421875 -4.734375 6.3125 -4.8125 L 1.609375 -7.796875 C 1.5 -7.859375 1.390625 -7.953125 1.265625 -7.953125 C 1.046875 -7.953125 0.78125 -7.78125 0.78125 -7.46875 C 0.78125 -7.21875 0.953125 -7.125 1.09375 -7.03125 L 5.25 -4.390625 L 1.09375 -1.734375 C 0.953125 -1.640625 0.78125 -1.546875 0.78125 -1.296875 C 0.78125 -0.984375 1.046875 -0.8125 1.265625 -0.8125 L 1.296875 -0.828125 C 1.40625 -0.84375 1.4375 -0.84375 1.59375 -0.96875 Z M 6.3125 -3.9375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-22">
<path style="stroke:none;" d="M 6.140625 0.8125 C 6.140625 0.625 6.03125 0.578125 5.84375 0.4375 C 3.859375 -0.9375 3.375 -2.984375 3.375 -4.375 C 3.375 -5.734375 3.828125 -7.796875 5.84375 -9.1875 C 6.03125 -9.34375 6.140625 -9.390625 6.140625 -9.578125 C 6.140625 -9.71875 6.0625 -9.953125 5.71875 -9.953125 C 5.359375 -9.953125 4.296875 -9.125 3.640625 -8.1875 C 2.84375 -7.078125 2.4375 -5.734375 2.4375 -4.375 C 2.4375 -2.78125 3.015625 -1.453125 3.609375 -0.609375 C 4.28125 0.3125 5.328125 1.1875 5.71875 1.1875 C 6.0625 1.1875 6.140625 0.953125 6.140625 0.8125 Z M 6.140625 0.8125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-23">
<path style="stroke:none;" d="M 4.359375 -8.34375 C 4.359375 -8.5625 4.359375 -8.9375 3.9375 -8.9375 C 3.703125 -8.9375 3.609375 -8.8125 3.53125 -8.625 C 3.25 -8 2.78125 -7.25 2.015625 -7.1875 C 1.8125 -7.171875 1.5 -7.140625 1.5 -6.765625 C 1.5 -6.53125 1.65625 -6.359375 1.96875 -6.359375 C 2.765625 -6.359375 3.390625 -6.953125 3.421875 -6.984375 L 3.421875 -0.828125 L 2.171875 -0.828125 C 1.96875 -0.828125 1.578125 -0.828125 1.578125 -0.421875 C 1.578125 0 1.96875 0 2.171875 0 L 5.625 0 C 5.828125 0 6.203125 0 6.203125 -0.421875 C 6.203125 -0.828125 5.828125 -0.828125 5.625 -0.828125 L 4.359375 -0.828125 Z M 4.359375 -8.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-24">
<path style="stroke:none;" d="M 4.9375 -4.375 C 4.9375 -5.5 4.65625 -6.9375 3.625 -8.328125 C 3.140625 -9 2.078125 -9.953125 1.65625 -9.953125 C 1.3125 -9.953125 1.234375 -9.703125 1.234375 -9.578125 C 1.234375 -9.40625 1.328125 -9.34375 1.59375 -9.171875 C 3.34375 -7.9375 4 -6.015625 4 -4.390625 C 4 -3.09375 3.578125 -0.984375 1.53125 0.4375 C 1.34375 0.5625 1.234375 0.625 1.234375 0.8125 C 1.234375 0.953125 1.3125 1.1875 1.65625 1.1875 C 2.015625 1.1875 3.0625 0.359375 3.734375 -0.578125 C 4.5625 -1.75 4.9375 -3.09375 4.9375 -4.375 Z M 4.9375 -4.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-25">
<path style="stroke:none;" d="M 4.046875 -3.1875 L 5.6875 -5.34375 L 6.203125 -5.34375 C 6.390625 -5.34375 6.765625 -5.34375 6.765625 -5.765625 C 6.765625 -6.1875 6.390625 -6.1875 6.203125 -6.1875 L 4.609375 -6.1875 C 4.40625 -6.1875 4.03125 -6.1875 4.03125 -5.765625 C 4.03125 -5.34375 4.375 -5.34375 4.71875 -5.34375 L 3.640625 -3.875 L 2.53125 -5.34375 C 2.875 -5.34375 3.21875 -5.34375 3.21875 -5.765625 C 3.21875 -6.1875 2.84375 -6.1875 2.640625 -6.1875 L 1.046875 -6.1875 C 0.84375 -6.1875 0.46875 -6.1875 0.46875 -5.765625 C 0.46875 -5.34375 0.84375 -5.34375 1.046875 -5.34375 L 1.546875 -5.34375 L 3.25 -3.1875 L 1.46875 -0.828125 L 0.96875 -0.828125 C 0.78125 -0.828125 0.390625 -0.828125 0.390625 -0.421875 C 0.390625 0 0.78125 0 0.96875 0 L 2.546875 0 C 2.75 0 3.125 0 3.125 -0.421875 C 3.125 -0.828125 2.796875 -0.828125 2.40625 -0.828125 L 3.640625 -2.640625 L 4.9375 -0.828125 C 4.578125 -0.828125 4.234375 -0.828125 4.234375 -0.421875 C 4.234375 0 4.609375 0 4.8125 0 L 6.390625 0 C 6.59375 0 6.96875 0 6.96875 -0.421875 C 6.96875 -0.828125 6.59375 -0.828125 6.390625 -0.828125 L 5.890625 -0.828125 Z M 4.046875 -3.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-26">
<path style="stroke:none;" d="M 4.984375 -3.15625 C 5.1875 -3.328125 6.640625 -4.5625 6.640625 -6.15625 C 6.640625 -7.78125 5.296875 -8.9375 3.5 -8.9375 C 1.84375 -8.9375 0.734375 -7.6875 0.734375 -6.484375 C 0.734375 -5.875 1.234375 -5.84375 1.3125 -5.84375 C 1.578125 -5.84375 1.890625 -6.03125 1.890625 -6.421875 C 1.890625 -6.703125 1.796875 -6.78125 1.71875 -6.84375 C 1.921875 -7.609375 2.578125 -8.109375 3.40625 -8.109375 C 4.640625 -8.109375 5.703125 -7.40625 5.703125 -6.15625 C 5.703125 -5.03125 4.859375 -4.171875 4.09375 -3.5 L 0.9375 -0.765625 C 0.78125 -0.625 0.734375 -0.59375 0.734375 -0.421875 C 0.734375 0 1.125 0 1.3125 0 L 6.328125 0 C 6.640625 -0.09375 6.640625 -0.375 6.640625 -0.59375 L 6.640625 -0.890625 C 6.640625 -1.140625 6.640625 -1.484375 6.1875 -1.484375 C 5.703125 -1.484375 5.703125 -1.171875 5.703125 -0.828125 L 2.25 -0.828125 Z M 4.984375 -3.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-27">
<path style="stroke:none;" d="M 6.078125 -5.34375 L 6.453125 -5.34375 C 6.65625 -5.34375 7.046875 -5.34375 7.046875 -5.765625 C 7.046875 -6.1875 6.65625 -6.1875 6.453125 -6.1875 L 4.875 -6.1875 C 4.671875 -6.1875 4.28125 -6.1875 4.28125 -5.765625 C 4.28125 -5.34375 4.671875 -5.34375 4.875 -5.34375 L 5.234375 -5.34375 C 4.828125 -4.171875 4.015625 -1.78125 3.8125 -0.96875 L 3.796875 -0.96875 C 3.734375 -1.28125 3.671875 -1.4375 3.53125 -1.828125 L 2.1875 -5.34375 L 2.53125 -5.34375 C 2.71875 -5.34375 3.109375 -5.34375 3.109375 -5.765625 C 3.109375 -6.1875 2.71875 -6.1875 2.53125 -6.1875 L 0.953125 -6.1875 C 0.75 -6.1875 0.359375 -6.1875 0.359375 -5.765625 C 0.359375 -5.34375 0.75 -5.34375 0.953125 -5.34375 L 1.328125 -5.34375 L 3.34375 -0.1875 C 3.40625 -0.046875 3.40625 -0.015625 3.40625 0 C 3.40625 0.03125 3.03125 1.28125 2.8125 1.671875 C 2.71875 1.828125 2.359375 2.5 1.671875 2.421875 C 1.6875 2.375 1.734375 2.296875 1.734375 2.140625 C 1.734375 1.8125 1.5 1.578125 1.171875 1.578125 C 0.8125 1.578125 0.609375 1.828125 0.609375 2.15625 C 0.609375 2.703125 1.0625 3.265625 1.78125 3.265625 C 3.171875 3.265625 3.78125 1.421875 3.828125 1.3125 Z M 6.078125 -5.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-28">
<path style="stroke:none;" d="M 3.671875 -4.3125 C 5.15625 -4.3125 5.828125 -3.265625 5.828125 -2.5 C 5.828125 -1.546875 4.984375 -0.65625 3.734375 -0.65625 C 2.296875 -0.65625 1.65625 -1.4375 1.65625 -1.640625 C 1.65625 -1.65625 1.65625 -1.6875 1.671875 -1.703125 C 1.734375 -1.8125 1.78125 -1.921875 1.78125 -2.046875 C 1.78125 -2.359375 1.546875 -2.625 1.203125 -2.625 C 0.90625 -2.625 0.609375 -2.4375 0.609375 -2 C 0.609375 -0.75 1.984375 0.171875 3.734375 0.171875 C 5.53125 0.171875 6.75 -1.125 6.75 -2.484375 C 6.75 -3.21875 6.359375 -4.234375 5.09375 -4.78125 C 5.96875 -5.328125 6.359375 -6.1875 6.359375 -6.921875 C 6.359375 -8 5.28125 -8.9375 3.734375 -8.9375 C 2.140625 -8.9375 1.015625 -8.25 1.015625 -7.1875 C 1.015625 -6.71875 1.375 -6.5625 1.609375 -6.5625 C 1.859375 -6.5625 2.1875 -6.765625 2.1875 -7.15625 C 2.1875 -7.390625 2.0625 -7.515625 2.0625 -7.53125 C 2.5 -8.078125 3.484375 -8.109375 3.734375 -8.109375 C 4.703125 -8.109375 5.421875 -7.59375 5.421875 -6.90625 C 5.421875 -6.5 5.15625 -5.3125 3.640625 -5.203125 C 3.109375 -5.171875 2.890625 -5.15625 2.828125 -5.15625 C 2.53125 -5.125 2.46875 -4.9375 2.46875 -4.734375 C 2.46875 -4.3125 2.765625 -4.3125 3.015625 -4.3125 Z M 3.671875 -4.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-29">
<path style="stroke:none;" d="M 6.40625 -5.234375 C 6.578125 -5.390625 6.640625 -5.453125 6.640625 -5.703125 C 6.640625 -6.1875 6.328125 -6.1875 6.046875 -6.1875 L 1.28125 -6.1875 C 0.796875 -6.1875 0.6875 -6.0625 0.6875 -5.59375 L 0.6875 -5.015625 C 0.6875 -4.765625 0.6875 -4.4375 1.140625 -4.4375 C 1.625 -4.4375 1.625 -4.75 1.625 -5.015625 L 1.625 -5.34375 L 5.25 -5.34375 L 0.6875 -0.953125 C 0.515625 -0.78125 0.453125 -0.734375 0.453125 -0.46875 C 0.453125 0 0.78125 0 1.046875 0 L 6.109375 0 C 6.578125 0 6.6875 -0.125 6.6875 -0.59375 L 6.6875 -1.3125 C 6.6875 -1.578125 6.6875 -1.90625 6.21875 -1.90625 C 5.75 -1.90625 5.75 -1.59375 5.75 -1.3125 L 5.75 -0.828125 L 1.84375 -0.828125 Z M 6.40625 -5.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-30">
<path style="stroke:none;" d="M 0.546875 -3.4375 C 0.421875 -3.25 0.421875 -3.234375 0.421875 -2.96875 C 0.421875 -2.46875 0.609375 -2.40625 0.984375 -2.40625 L 4.5 -2.40625 L 4.5 -0.828125 L 3.640625 -0.828125 C 3.4375 -0.828125 3.0625 -0.828125 3.0625 -0.421875 C 3.0625 0 3.4375 0 3.640625 0 L 6.171875 0 C 6.375 0 6.734375 0 6.734375 -0.421875 C 6.734375 -0.828125 6.375 -0.828125 6.171875 -0.828125 L 5.3125 -0.828125 L 5.3125 -2.40625 L 6.390625 -2.40625 C 6.578125 -2.40625 6.953125 -2.40625 6.953125 -2.828125 C 6.953125 -3.234375 6.578125 -3.234375 6.390625 -3.234375 L 5.3125 -3.234375 L 5.3125 -8.375 C 5.3125 -8.84375 5.203125 -8.96875 4.71875 -8.96875 L 4.390625 -8.96875 C 4.046875 -8.96875 3.96875 -8.953125 3.796875 -8.671875 Z M 1.375 -3.234375 L 4.5 -8.265625 L 4.5 -3.234375 Z M 1.375 -3.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 5.71875 -3.3125 L 9.6875 -3.3125 C 9.890625 -3.3125 10.140625 -3.3125 10.140625 -3.578125 C 10.140625 -3.84375 9.890625 -3.84375 9.6875 -3.84375 L 5.71875 -3.84375 L 5.71875 -7.796875 C 5.71875 -8 5.71875 -8.265625 5.46875 -8.265625 C 5.1875 -8.265625 5.1875 -8.015625 5.1875 -7.796875 L 5.1875 -3.84375 L 1.234375 -3.84375 C 1.03125 -3.84375 0.78125 -3.84375 0.78125 -3.578125 C 0.78125 -3.3125 1.015625 -3.3125 1.234375 -3.3125 L 5.1875 -3.3125 L 5.1875 0.640625 C 5.1875 0.84375 5.1875 1.109375 5.453125 1.109375 C 5.71875 1.109375 5.71875 0.859375 5.71875 0.640625 Z M 5.71875 -3.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-4">
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-5">
<path style="stroke:none;" d="M 5.171875 -9.34375 C 5.171875 -9.609375 5.171875 -9.6875 4.984375 -9.6875 C 4.859375 -9.6875 4.8125 -9.6875 4.703125 -9.515625 L 0.390625 -2.8125 L 0.390625 -2.390625 L 4.15625 -2.390625 L 4.15625 -1.09375 C 4.15625 -0.5625 4.125 -0.421875 3.078125 -0.421875 L 2.796875 -0.421875 L 2.796875 0 C 3.125 -0.03125 4.265625 -0.03125 4.65625 -0.03125 C 5.0625 -0.03125 6.203125 -0.03125 6.546875 0 L 6.546875 -0.421875 L 6.25 -0.421875 C 5.21875 -0.421875 5.171875 -0.5625 5.171875 -1.09375 L 5.171875 -2.390625 L 6.625 -2.390625 L 6.625 -2.8125 L 5.171875 -2.8125 Z M 4.234375 -8.21875 L 4.234375 -2.8125 L 0.75 -2.8125 Z M 4.234375 -8.21875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d="M 2 -3.265625 C 2.453125 -3.078125 2.9375 -3.078125 3.21875 -3.078125 C 3.578125 -3.078125 4.328125 -3.078125 4.328125 -3.5 C 4.328125 -3.765625 4.0625 -3.859375 3.328125 -3.859375 C 2.96875 -3.859375 2.53125 -3.8125 2.03125 -3.59375 C 1.59375 -3.8125 1.421875 -4.140625 1.421875 -4.453125 C 1.421875 -5.34375 2.828125 -5.859375 4.109375 -5.859375 C 4.34375 -5.859375 4.859375 -5.859375 5.46875 -5.421875 C 5.546875 -5.359375 5.59375 -5.328125 5.6875 -5.328125 C 5.859375 -5.328125 6.046875 -5.515625 6.046875 -5.6875 C 6.046875 -5.9375 5.21875 -6.484375 4.234375 -6.484375 C 2.625 -6.484375 1.109375 -5.515625 1.109375 -4.453125 C 1.109375 -3.9375 1.453125 -3.59375 1.6875 -3.421875 C 0.859375 -2.953125 0.375 -2.1875 0.375 -1.484375 C 0.375 -0.484375 1.265625 0.296875 2.640625 0.296875 C 4.53125 0.296875 5.296875 -0.96875 5.296875 -1.15625 C 5.296875 -1.234375 5.234375 -1.296875 5.15625 -1.296875 C 5.09375 -1.296875 5.0625 -1.25 5 -1.15625 C 4.84375 -0.890625 4.46875 -0.3125 2.765625 -0.3125 C 1.875 -0.3125 0.703125 -0.546875 0.703125 -1.5625 C 0.703125 -2.046875 1.0625 -2.78125 2 -3.265625 Z M 2.4375 -3.4375 C 2.828125 -3.578125 3.203125 -3.578125 3.296875 -3.578125 C 3.703125 -3.578125 3.765625 -3.546875 4 -3.484375 C 3.765625 -3.375 3.734375 -3.375 3.21875 -3.375 C 2.953125 -3.375 2.71875 -3.375 2.4375 -3.4375 Z M 2.4375 -3.4375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d="M 4.609375 -3.375 C 4.65625 -3.59375 4.75 -3.96875 4.75 -4.03125 C 4.75 -4.203125 4.609375 -4.296875 4.46875 -4.296875 C 4.34375 -4.296875 4.171875 -4.21875 4.09375 -4.015625 C 4.0625 -3.953125 3.59375 -2.046875 3.53125 -1.78125 C 3.453125 -1.484375 3.4375 -1.3125 3.4375 -1.125 C 3.4375 -1.015625 3.4375 -1 3.453125 -0.953125 C 3.21875 -0.421875 2.921875 -0.109375 2.53125 -0.109375 C 1.734375 -0.109375 1.734375 -0.84375 1.734375 -1.015625 C 1.734375 -1.328125 1.78125 -1.71875 2.25 -2.953125 C 2.359375 -3.25 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.09375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.875 1.21875 -4.1875 1.578125 -4.1875 C 1.671875 -4.1875 1.828125 -4.171875 1.828125 -3.859375 C 1.828125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -1.984375 1.09375 -1.53125 1.09375 -1.140625 C 1.09375 -0.234375 1.75 0.109375 2.5 0.109375 C 2.671875 0.109375 3.140625 0.109375 3.53125 -0.59375 C 3.796875 0.046875 4.484375 0.109375 4.78125 0.109375 C 5.53125 0.109375 5.96875 -0.515625 6.234375 -1.109375 C 6.5625 -1.890625 6.890625 -3.234375 6.890625 -3.703125 C 6.890625 -4.25 6.625 -4.40625 6.453125 -4.40625 C 6.203125 -4.40625 5.953125 -4.140625 5.953125 -3.921875 C 5.953125 -3.796875 6.015625 -3.734375 6.09375 -3.65625 C 6.203125 -3.546875 6.453125 -3.296875 6.453125 -2.8125 C 6.453125 -2.46875 6.171875 -1.5 5.90625 -0.984375 C 5.65625 -0.453125 5.296875 -0.109375 4.8125 -0.109375 C 4.34375 -0.109375 4.078125 -0.40625 4.078125 -0.984375 C 4.078125 -1.25 4.140625 -1.5625 4.1875 -1.703125 Z M 4.609375 -3.375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 3.328125 -3.015625 C 3.390625 -3.265625 3.625 -4.1875 4.3125 -4.1875 C 4.359375 -4.1875 4.609375 -4.1875 4.8125 -4.0625 C 4.53125 -4 4.34375 -3.765625 4.34375 -3.515625 C 4.34375 -3.359375 4.453125 -3.171875 4.71875 -3.171875 C 4.9375 -3.171875 5.25 -3.34375 5.25 -3.75 C 5.25 -4.265625 4.671875 -4.40625 4.328125 -4.40625 C 3.75 -4.40625 3.40625 -3.875 3.28125 -3.65625 C 3.03125 -4.3125 2.5 -4.40625 2.203125 -4.40625 C 1.171875 -4.40625 0.59375 -3.125 0.59375 -2.875 C 0.59375 -2.765625 0.703125 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.796875 0.84375 -2.875 C 1.1875 -3.9375 1.84375 -4.1875 2.1875 -4.1875 C 2.375 -4.1875 2.71875 -4.09375 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.546875 2.1875 -1.140625 C 2.03125 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.953125 -0.109375 0.734375 -0.234375 C 0.984375 -0.296875 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.84375 -1.125 C 0.53125 -1.125 0.296875 -0.875 0.296875 -0.546875 C 0.296875 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.890625 0.109375 2.25 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.375 0.109375 4.9375 -1.171875 4.9375 -1.421875 C 4.9375 -1.53125 4.859375 -1.53125 4.828125 -1.53125 C 4.734375 -1.53125 4.71875 -1.484375 4.6875 -1.421875 C 4.359375 -0.34375 3.6875 -0.109375 3.375 -0.109375 C 2.984375 -0.109375 2.828125 -0.421875 2.828125 -0.765625 C 2.828125 -0.984375 2.875 -1.203125 2.984375 -1.640625 Z M 3.328125 -3.015625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-2">
<path style="stroke:none;" d="M 4.84375 -3.796875 C 4.890625 -3.9375 4.890625 -3.953125 4.890625 -4.03125 C 4.890625 -4.203125 4.75 -4.296875 4.59375 -4.296875 C 4.5 -4.296875 4.34375 -4.234375 4.25 -4.09375 C 4.234375 -4.03125 4.140625 -3.734375 4.109375 -3.546875 C 4.03125 -3.296875 3.96875 -3.015625 3.90625 -2.75 L 3.453125 -0.953125 C 3.421875 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.828125 -0.109375 1.71875 -0.546875 1.71875 -0.921875 C 1.71875 -1.375 1.890625 -2 2.21875 -2.875 C 2.375 -3.28125 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.109375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.890625 1.234375 -4.1875 1.578125 -4.1875 C 1.65625 -4.1875 1.828125 -4.1875 1.828125 -3.875 C 1.828125 -3.625 1.71875 -3.359375 1.65625 -3.171875 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.296875 0.109375 C 2.6875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.171875 0.171875 3.046875 0.671875 2.65625 1.203125 C 2.390625 1.53125 2.015625 1.828125 1.5625 1.828125 C 1.421875 1.828125 0.96875 1.796875 0.796875 1.40625 C 0.953125 1.40625 1.09375 1.40625 1.21875 1.28125 C 1.328125 1.203125 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.0625 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.046875 1.5625 2.046875 C 2.578125 2.046875 3.609375 1.140625 3.890625 0.015625 Z M 4.84375 -3.796875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-3">
<path style="stroke:none;" d="M 1.328125 -0.828125 C 1.859375 -1.40625 2.15625 -1.65625 2.515625 -1.96875 C 2.515625 -1.96875 3.125 -2.5 3.484375 -2.859375 C 4.4375 -3.78125 4.65625 -4.265625 4.65625 -4.3125 C 4.65625 -4.40625 4.5625 -4.40625 4.546875 -4.40625 C 4.46875 -4.40625 4.453125 -4.390625 4.390625 -4.296875 C 4.09375 -3.8125 3.890625 -3.65625 3.65625 -3.65625 C 3.40625 -3.65625 3.296875 -3.8125 3.140625 -3.984375 C 2.953125 -4.203125 2.78125 -4.40625 2.453125 -4.40625 C 1.703125 -4.40625 1.25 -3.484375 1.25 -3.265625 C 1.25 -3.21875 1.28125 -3.15625 1.359375 -3.15625 C 1.453125 -3.15625 1.46875 -3.203125 1.5 -3.265625 C 1.6875 -3.734375 2.265625 -3.734375 2.34375 -3.734375 C 2.546875 -3.734375 2.734375 -3.671875 2.96875 -3.59375 C 3.375 -3.4375 3.484375 -3.4375 3.734375 -3.4375 C 3.375 -3.015625 2.546875 -2.296875 2.359375 -2.140625 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.53125 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.375 1.234375 -0.640625 1.5625 -0.640625 C 1.78125 -0.640625 1.890625 -0.546875 2.140625 -0.265625 C 2.296875 -0.046875 2.484375 0.109375 2.765625 0.109375 C 3.765625 0.109375 4.34375 -1.15625 4.34375 -1.421875 C 4.34375 -1.46875 4.296875 -1.53125 4.21875 -1.53125 C 4.125 -1.53125 4.109375 -1.46875 4.078125 -1.390625 C 3.84375 -0.75 3.203125 -0.5625 2.875 -0.5625 C 2.6875 -0.5625 2.5 -0.625 2.296875 -0.6875 C 1.953125 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.578125 -0.859375 1.421875 -0.859375 1.328125 -0.828125 Z M 1.328125 -0.828125 "/>
</symbol>
</g>
</defs>
<g id="surface1">
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="45.0648" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="52.444808" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="59.824815" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="67.204823" y="10.657"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 754.6875 665.46875 L 799.023438 665.46875 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="79.9039" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="87.283908" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="94.663915" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="102.043923" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="109.423936" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="116.80395" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="124.183952" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="131.563965" y="10.657"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1398.242188 665.46875 L 1442.617188 665.46875 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="144.281" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-11" x="151.661014" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-12" x="159.041015" y="10.657"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1673.046875 665.46875 L 1717.382812 665.46875 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="171.74" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="179.120014" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="186.500015" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="193.880029" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="201.26003" y="10.657"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2095.234375 665.46875 L 2139.609375 665.46875 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-16" x="213.968" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="221.348026" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="228.728052" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="236.108053" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-20" x="243.488079" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-21" x="250.868105" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-22" x="258.248131" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-23" x="265.628133" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-23" x="273.008158" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-24" x="280.388184" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="291.7731" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="306.686018" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="313.706022" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="323.92119" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="338.0333" y="10.657"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="344.60322" y="12.80778"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="30.29622" y="31.58198"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="37.676231" y="31.58198"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="45.056241" y="31.58198"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="52.436249" y="31.58198"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 606.992188 456.210938 L 651.367188 456.210938 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="65.1441" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="72.524108" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="79.904115" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="87.284123" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="94.66413" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="102.044138" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="109.424152" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="116.804165" y="31.582"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1250.664062 456.210938 L 1295.039062 456.210938 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="129.512" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-11" x="136.892014" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-12" x="144.272015" y="31.582"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1525.351562 456.210938 L 1569.726562 456.210938 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="156.98" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="164.360014" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="171.740015" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="179.120029" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="186.50003" y="31.582"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1947.617188 456.210938 L 1991.992188 456.210938 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-16" x="199.208" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="206.588026" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="213.968052" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="221.348053" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="228.728079" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="236.108105" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-25" x="243.488131" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-21" x="250.868133" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-22" x="258.248158" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-23" x="265.628184" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-26" x="273.00821" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-24" x="280.388212" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="291.7728" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="306.685718" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-3" x="313.705722" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="323.92089" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="338.033" y="31.582"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="344.60292" y="33.73278"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="15.53592" y="52.50698"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="22.915929" y="52.50698"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="30.29594" y="52.50698"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="37.67595" y="52.50698"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 459.375 246.953125 L 503.75 246.953125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="50.375" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="57.755008" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="65.135015" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="72.515023" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="79.89503" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="87.275038" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="94.655046" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="102.035053" y="52.507"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1102.96875 246.953125 L 1147.34375 246.953125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="114.752" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-11" x="122.132014" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-12" x="129.512015" y="52.507"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1377.734375 246.953125 L 1422.109375 246.953125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="142.211" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="149.591014" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="156.971015" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="164.351029" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="171.73103" y="52.507"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1799.921875 246.953125 L 1844.296875 246.953125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-16" x="184.439" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="191.819014" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="199.199015" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="206.579017" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="213.959043" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="221.339069" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="228.719094" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="236.099096" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-27" x="243.479122" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-21" x="250.859148" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-22" x="258.239174" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-23" x="265.619175" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-28" x="272.999201" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-24" x="280.379227" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="291.773" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="306.685918" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-4" x="313.705922" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="323.92109" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="338.0332" y="52.507"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-2" x="344.60312" y="54.65778"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.76712" y="73.42298"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="8.14713" y="73.42298"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="15.527139" y="73.42298"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="22.907148" y="73.42298"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 311.679688 37.8125 L 356.054688 37.8125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="35.6152" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="42.995211" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="50.375221" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="57.755229" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="65.135236" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="72.515244" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="79.895252" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-9" x="87.275259" y="73.42305"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 955.351562 37.8125 L 999.726562 37.8125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="99.9832" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-11" x="107.363214" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-12" x="114.743215" y="73.42305"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1230.039062 37.8125 L 1274.414062 37.8125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="127.451" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="134.831014" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="142.211015" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="149.591029" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="156.97103" y="73.42305"/>
</g>
<path style="fill:none;stroke-width:4.05;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1652.34375 37.8125 L 1696.71875 37.8125 " transform="matrix(0.1,0,0,-0.1,0,77)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-16" x="169.679" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="177.059014" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="184.439015" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="191.819029" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="199.19903" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="206.579056" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="213.959082" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="221.339084" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="228.71911" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="236.099136" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-29" x="243.479161" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-21" x="250.859163" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-22" x="258.239189" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-23" x="265.619215" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-30" x="272.999241" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-24" x="280.379242" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="291.773" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="306.685918" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-5" x="313.705922" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="323.92109" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="338.0332" y="73.42305"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-3" x="344.60273" y="75.57383"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 60 KiB

View File

@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="152pt" height="23pt" viewBox="0 0 152 23" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d="M 4.609375 -3.375 C 4.515625 -4 4.109375 -4.5625 3.328125 -4.5625 C 2.71875 -4.5625 2.078125 -4.390625 1.296875 -3.625 C 0.46875 -2.796875 0.40625 -1.859375 0.40625 -1.5625 C 0.40625 -0.9375 0.84375 0.21875 2.234375 0.21875 C 4.609375 0.21875 5.640625 -3.125 5.640625 -4.5625 C 5.640625 -6.140625 4.71875 -7.140625 3.484375 -7.140625 C 2.046875 -7.140625 1.578125 -5.84375 1.578125 -5.5625 C 1.578125 -5.421875 1.671875 -5.21875 1.96875 -5.21875 C 2.296875 -5.21875 2.5 -5.515625 2.5 -5.734375 C 2.5 -6.09375 2.1875 -6.09375 2.03125 -6.09375 C 2.46875 -6.828125 3.1875 -6.890625 3.46875 -6.890625 C 4.203125 -6.890625 4.890625 -6.375 4.890625 -5.078125 C 4.890625 -4.6875 4.828125 -4.1875 4.625 -3.375 Z M 2.265625 -0.0625 C 1.171875 -0.0625 1.171875 -1.09375 1.171875 -1.1875 C 1.171875 -1.453125 1.421875 -2.84375 1.828125 -3.453125 C 2.21875 -4.015625 2.71875 -4.34375 3.328125 -4.34375 C 4.421875 -4.34375 4.4375 -3.21875 4.4375 -3.015625 C 4.4375 -2.296875 3.796875 -0.0625 2.265625 -0.0625 Z M 2.265625 -0.0625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 3.65625 -3.984375 L 4.515625 -3.984375 C 4.71875 -3.984375 4.8125 -3.984375 4.8125 -4.1875 C 4.8125 -4.296875 4.71875 -4.296875 4.546875 -4.296875 L 3.71875 -4.296875 L 3.921875 -5.4375 C 3.96875 -5.640625 4.109375 -6.34375 4.171875 -6.46875 C 4.25 -6.65625 4.421875 -6.8125 4.640625 -6.8125 C 4.671875 -6.8125 4.9375 -6.8125 5.125 -6.625 C 4.6875 -6.59375 4.578125 -6.234375 4.578125 -6.09375 C 4.578125 -5.859375 4.765625 -5.734375 4.953125 -5.734375 C 5.21875 -5.734375 5.5 -5.96875 5.5 -6.34375 C 5.5 -6.796875 5.046875 -7.03125 4.640625 -7.03125 C 4.296875 -7.03125 3.671875 -6.84375 3.375 -5.859375 C 3.3125 -5.65625 3.28125 -5.546875 3.046875 -4.296875 L 2.359375 -4.296875 C 2.15625 -4.296875 2.046875 -4.296875 2.046875 -4.109375 C 2.046875 -3.984375 2.140625 -3.984375 2.328125 -3.984375 L 2.984375 -3.984375 L 2.25 -0.046875 C 2.0625 0.921875 1.890625 1.828125 1.375 1.828125 C 1.328125 1.828125 1.09375 1.828125 0.890625 1.640625 C 1.359375 1.609375 1.453125 1.25 1.453125 1.109375 C 1.453125 0.875 1.265625 0.75 1.078125 0.75 C 0.8125 0.75 0.53125 0.984375 0.53125 1.359375 C 0.53125 1.796875 0.96875 2.046875 1.375 2.046875 C 1.921875 2.046875 2.328125 1.453125 2.5 1.078125 C 2.828125 0.453125 3.046875 -0.75 3.0625 -0.828125 Z M 3.65625 -3.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 4.609375 -3.375 C 4.65625 -3.59375 4.75 -3.96875 4.75 -4.03125 C 4.75 -4.203125 4.609375 -4.296875 4.46875 -4.296875 C 4.34375 -4.296875 4.171875 -4.21875 4.09375 -4.015625 C 4.0625 -3.953125 3.59375 -2.046875 3.53125 -1.78125 C 3.453125 -1.484375 3.4375 -1.3125 3.4375 -1.125 C 3.4375 -1.015625 3.4375 -1 3.453125 -0.953125 C 3.21875 -0.421875 2.921875 -0.109375 2.53125 -0.109375 C 1.734375 -0.109375 1.734375 -0.84375 1.734375 -1.015625 C 1.734375 -1.328125 1.78125 -1.71875 2.25 -2.953125 C 2.359375 -3.25 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.09375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.875 1.21875 -4.1875 1.578125 -4.1875 C 1.671875 -4.1875 1.828125 -4.171875 1.828125 -3.859375 C 1.828125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -1.984375 1.09375 -1.53125 1.09375 -1.140625 C 1.09375 -0.234375 1.75 0.109375 2.5 0.109375 C 2.671875 0.109375 3.140625 0.109375 3.53125 -0.59375 C 3.796875 0.046875 4.484375 0.109375 4.78125 0.109375 C 5.53125 0.109375 5.96875 -0.515625 6.234375 -1.109375 C 6.5625 -1.890625 6.890625 -3.234375 6.890625 -3.703125 C 6.890625 -4.25 6.625 -4.40625 6.453125 -4.40625 C 6.203125 -4.40625 5.953125 -4.140625 5.953125 -3.921875 C 5.953125 -3.796875 6.015625 -3.734375 6.09375 -3.65625 C 6.203125 -3.546875 6.453125 -3.296875 6.453125 -2.8125 C 6.453125 -2.46875 6.171875 -1.5 5.90625 -0.984375 C 5.65625 -0.453125 5.296875 -0.109375 4.8125 -0.109375 C 4.34375 -0.109375 4.078125 -0.40625 4.078125 -0.984375 C 4.078125 -1.25 4.140625 -1.5625 4.1875 -1.703125 Z M 4.609375 -3.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 3.328125 -3.015625 C 3.390625 -3.265625 3.625 -4.1875 4.3125 -4.1875 C 4.359375 -4.1875 4.609375 -4.1875 4.8125 -4.0625 C 4.53125 -4 4.34375 -3.765625 4.34375 -3.515625 C 4.34375 -3.359375 4.453125 -3.171875 4.71875 -3.171875 C 4.9375 -3.171875 5.25 -3.34375 5.25 -3.75 C 5.25 -4.265625 4.671875 -4.40625 4.328125 -4.40625 C 3.75 -4.40625 3.40625 -3.875 3.28125 -3.65625 C 3.03125 -4.3125 2.5 -4.40625 2.203125 -4.40625 C 1.171875 -4.40625 0.59375 -3.125 0.59375 -2.875 C 0.59375 -2.765625 0.703125 -2.765625 0.71875 -2.765625 C 0.796875 -2.765625 0.828125 -2.796875 0.84375 -2.875 C 1.1875 -3.9375 1.84375 -4.1875 2.1875 -4.1875 C 2.375 -4.1875 2.71875 -4.09375 2.71875 -3.515625 C 2.71875 -3.203125 2.546875 -2.546875 2.1875 -1.140625 C 2.03125 -0.53125 1.671875 -0.109375 1.234375 -0.109375 C 1.171875 -0.109375 0.953125 -0.109375 0.734375 -0.234375 C 0.984375 -0.296875 1.203125 -0.5 1.203125 -0.78125 C 1.203125 -1.046875 0.984375 -1.125 0.84375 -1.125 C 0.53125 -1.125 0.296875 -0.875 0.296875 -0.546875 C 0.296875 -0.09375 0.78125 0.109375 1.21875 0.109375 C 1.890625 0.109375 2.25 -0.59375 2.265625 -0.640625 C 2.390625 -0.28125 2.75 0.109375 3.34375 0.109375 C 4.375 0.109375 4.9375 -1.171875 4.9375 -1.421875 C 4.9375 -1.53125 4.859375 -1.53125 4.828125 -1.53125 C 4.734375 -1.53125 4.71875 -1.484375 4.6875 -1.421875 C 4.359375 -0.34375 3.6875 -0.109375 3.375 -0.109375 C 2.984375 -0.109375 2.828125 -0.421875 2.828125 -0.765625 C 2.828125 -0.984375 2.875 -1.203125 2.984375 -1.640625 Z M 3.328125 -3.015625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 4.84375 -3.796875 C 4.890625 -3.9375 4.890625 -3.953125 4.890625 -4.03125 C 4.890625 -4.203125 4.75 -4.296875 4.59375 -4.296875 C 4.5 -4.296875 4.34375 -4.234375 4.25 -4.09375 C 4.234375 -4.03125 4.140625 -3.734375 4.109375 -3.546875 C 4.03125 -3.296875 3.96875 -3.015625 3.90625 -2.75 L 3.453125 -0.953125 C 3.421875 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.828125 -0.109375 1.71875 -0.546875 1.71875 -0.921875 C 1.71875 -1.375 1.890625 -2 2.21875 -2.875 C 2.375 -3.28125 2.421875 -3.390625 2.421875 -3.59375 C 2.421875 -4.03125 2.109375 -4.40625 1.609375 -4.40625 C 0.65625 -4.40625 0.296875 -2.953125 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.796875 0.5625 -2.953125 C 0.84375 -3.890625 1.234375 -4.1875 1.578125 -4.1875 C 1.65625 -4.1875 1.828125 -4.1875 1.828125 -3.875 C 1.828125 -3.625 1.71875 -3.359375 1.65625 -3.171875 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.296875 0.109375 C 2.6875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.171875 0.171875 3.046875 0.671875 2.65625 1.203125 C 2.390625 1.53125 2.015625 1.828125 1.5625 1.828125 C 1.421875 1.828125 0.96875 1.796875 0.796875 1.40625 C 0.953125 1.40625 1.09375 1.40625 1.21875 1.28125 C 1.328125 1.203125 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.0625 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.046875 1.5625 2.046875 C 2.578125 2.046875 3.609375 1.140625 3.890625 0.015625 Z M 4.84375 -3.796875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 1.328125 -0.828125 C 1.859375 -1.40625 2.15625 -1.65625 2.515625 -1.96875 C 2.515625 -1.96875 3.125 -2.5 3.484375 -2.859375 C 4.4375 -3.78125 4.65625 -4.265625 4.65625 -4.3125 C 4.65625 -4.40625 4.5625 -4.40625 4.546875 -4.40625 C 4.46875 -4.40625 4.453125 -4.390625 4.390625 -4.296875 C 4.09375 -3.8125 3.890625 -3.65625 3.65625 -3.65625 C 3.40625 -3.65625 3.296875 -3.8125 3.140625 -3.984375 C 2.953125 -4.203125 2.78125 -4.40625 2.453125 -4.40625 C 1.703125 -4.40625 1.25 -3.484375 1.25 -3.265625 C 1.25 -3.21875 1.28125 -3.15625 1.359375 -3.15625 C 1.453125 -3.15625 1.46875 -3.203125 1.5 -3.265625 C 1.6875 -3.734375 2.265625 -3.734375 2.34375 -3.734375 C 2.546875 -3.734375 2.734375 -3.671875 2.96875 -3.59375 C 3.375 -3.4375 3.484375 -3.4375 3.734375 -3.4375 C 3.375 -3.015625 2.546875 -2.296875 2.359375 -2.140625 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.53125 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.375 1.234375 -0.640625 1.5625 -0.640625 C 1.78125 -0.640625 1.890625 -0.546875 2.140625 -0.265625 C 2.296875 -0.046875 2.484375 0.109375 2.765625 0.109375 C 3.765625 0.109375 4.34375 -1.15625 4.34375 -1.421875 C 4.34375 -1.46875 4.296875 -1.53125 4.21875 -1.53125 C 4.125 -1.53125 4.109375 -1.46875 4.078125 -1.390625 C 3.84375 -0.75 3.203125 -0.5625 2.875 -0.5625 C 2.6875 -0.5625 2.5 -0.625 2.296875 -0.6875 C 1.953125 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.578125 -0.859375 1.421875 -0.859375 1.328125 -0.828125 Z M 1.328125 -0.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d="M 2.328125 -4.4375 C 2.328125 -4.625 2.328125 -4.625 2.125 -4.625 C 1.671875 -4.1875 1.046875 -4.1875 0.765625 -4.1875 L 0.765625 -3.9375 C 0.921875 -3.9375 1.390625 -3.9375 1.765625 -4.125 L 1.765625 -0.578125 C 1.765625 -0.34375 1.765625 -0.25 1.078125 -0.25 L 0.8125 -0.25 L 0.8125 0 C 0.9375 0 1.796875 -0.03125 2.046875 -0.03125 C 2.265625 -0.03125 3.140625 0 3.296875 0 L 3.296875 -0.25 L 3.03125 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.578125 Z M 2.328125 -4.4375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 3.515625 -1.265625 L 3.28125 -1.265625 C 3.265625 -1.109375 3.1875 -0.703125 3.09375 -0.640625 C 3.046875 -0.59375 2.515625 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.109375 -1.4375 2.515625 -1.765625 C 3.03125 -2.171875 3.515625 -2.609375 3.515625 -3.265625 C 3.515625 -4.109375 2.78125 -4.625 1.890625 -4.625 C 1.03125 -4.625 0.4375 -4.015625 0.4375 -3.375 C 0.4375 -3.03125 0.734375 -2.984375 0.8125 -2.984375 C 0.96875 -2.984375 1.171875 -3.109375 1.171875 -3.359375 C 1.171875 -3.484375 1.125 -3.734375 0.765625 -3.734375 C 0.984375 -4.21875 1.453125 -4.375 1.78125 -4.375 C 2.484375 -4.375 2.84375 -3.828125 2.84375 -3.265625 C 2.84375 -2.65625 2.40625 -2.1875 2.1875 -1.9375 L 0.515625 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.3125 0 Z M 3.515625 -1.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 1.90625 -2.328125 C 2.453125 -2.328125 2.84375 -1.953125 2.84375 -1.203125 C 2.84375 -0.34375 2.328125 -0.078125 1.9375 -0.078125 C 1.65625 -0.078125 1.03125 -0.15625 0.75 -0.578125 C 1.078125 -0.578125 1.15625 -0.8125 1.15625 -0.96875 C 1.15625 -1.1875 0.984375 -1.34375 0.765625 -1.34375 C 0.578125 -1.34375 0.375 -1.21875 0.375 -0.9375 C 0.375 -0.28125 1.09375 0.140625 1.9375 0.140625 C 2.90625 0.140625 3.578125 -0.515625 3.578125 -1.203125 C 3.578125 -1.75 3.140625 -2.296875 2.375 -2.453125 C 3.09375 -2.71875 3.359375 -3.234375 3.359375 -3.671875 C 3.359375 -4.21875 2.734375 -4.625 1.953125 -4.625 C 1.1875 -4.625 0.59375 -4.25 0.59375 -3.6875 C 0.59375 -3.453125 0.75 -3.328125 0.953125 -3.328125 C 1.171875 -3.328125 1.3125 -3.484375 1.3125 -3.671875 C 1.3125 -3.875 1.171875 -4.03125 0.953125 -4.046875 C 1.203125 -4.34375 1.671875 -4.421875 1.9375 -4.421875 C 2.25 -4.421875 2.6875 -4.265625 2.6875 -3.671875 C 2.6875 -3.375 2.59375 -3.046875 2.40625 -2.84375 C 2.1875 -2.578125 1.984375 -2.5625 1.640625 -2.53125 C 1.46875 -2.515625 1.453125 -2.515625 1.421875 -2.515625 C 1.40625 -2.515625 1.34375 -2.5 1.34375 -2.421875 C 1.34375 -2.328125 1.40625 -2.328125 1.53125 -2.328125 Z M 1.90625 -2.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 3.6875 -1.140625 L 3.6875 -1.390625 L 2.90625 -1.390625 L 2.90625 -4.5 C 2.90625 -4.640625 2.90625 -4.703125 2.765625 -4.703125 C 2.671875 -4.703125 2.640625 -4.703125 2.578125 -4.59375 L 0.265625 -1.390625 L 0.265625 -1.140625 L 2.328125 -1.140625 L 2.328125 -0.578125 C 2.328125 -0.328125 2.328125 -0.25 1.75 -0.25 L 1.5625 -0.25 L 1.5625 0 C 1.921875 -0.015625 2.359375 -0.03125 2.609375 -0.03125 C 2.875 -0.03125 3.3125 -0.015625 3.671875 0 L 3.671875 -0.25 L 3.484375 -0.25 C 2.90625 -0.25 2.90625 -0.328125 2.90625 -0.578125 L 2.90625 -1.140625 Z M 2.375 -3.9375 L 2.375 -1.390625 L 0.53125 -1.390625 Z M 2.375 -3.9375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-3">
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-4">
<path style="stroke:none;" d="M 5.171875 -9.34375 C 5.171875 -9.609375 5.171875 -9.6875 4.984375 -9.6875 C 4.859375 -9.6875 4.8125 -9.6875 4.703125 -9.515625 L 0.390625 -2.8125 L 0.390625 -2.390625 L 4.15625 -2.390625 L 4.15625 -1.09375 C 4.15625 -0.5625 4.125 -0.421875 3.078125 -0.421875 L 2.796875 -0.421875 L 2.796875 0 C 3.125 -0.03125 4.265625 -0.03125 4.65625 -0.03125 C 5.0625 -0.03125 6.203125 -0.03125 6.546875 0 L 6.546875 -0.421875 L 6.25 -0.421875 C 5.21875 -0.421875 5.171875 -0.5625 5.171875 -1.09375 L 5.171875 -2.390625 L 6.625 -2.390625 L 6.625 -2.8125 L 5.171875 -2.8125 Z M 4.234375 -8.21875 L 4.234375 -2.8125 L 0.75 -2.8125 Z M 4.234375 -8.21875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-5">
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d="M 2.796875 0.0625 C 2.796875 -0.78125 2.53125 -1.390625 1.9375 -1.390625 C 1.484375 -1.390625 1.25 -1.015625 1.25 -0.703125 C 1.25 -0.390625 1.46875 0 1.953125 0 C 2.140625 0 2.296875 -0.0625 2.421875 -0.1875 C 2.453125 -0.21875 2.46875 -0.21875 2.484375 -0.21875 C 2.515625 -0.21875 2.515625 -0.015625 2.515625 0.0625 C 2.515625 0.53125 2.421875 1.46875 1.59375 2.390625 C 1.4375 2.5625 1.4375 2.59375 1.4375 2.625 C 1.4375 2.703125 1.5 2.765625 1.578125 2.765625 C 1.6875 2.765625 2.796875 1.703125 2.796875 0.0625 Z M 2.796875 0.0625 "/>
</symbol>
</g>
</defs>
<g id="surface1">
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="23.116" y="8.9121"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="28.95702" y="5.29413"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="32.926023" y="5.29413"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="37.39882" y="8.9121"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.023438 112.890625 L 655.585938 112.890625 " transform="matrix(0.1,0,0,-0.1,0,23)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="0.903906" y="20.24297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="6.744922" y="20.24297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="14.143006" y="17.36289"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="18.616056" y="20.24297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="24.457072" y="20.24297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="30.153956" y="17.36289"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="34.627006" y="20.24297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="40.468024" y="20.24297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-3" x="45.714906" y="17.36289"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="50.178966" y="20.24297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="56.019981" y="20.24297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="61.096166" y="17.36289"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="66.757106" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="72.220112" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="79.240116" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="86.260206" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="92.560206" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="99.580216" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="106.600006" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="112.900006" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="119.92001" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="126.939806" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="133.239806" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-4" x="140.25981" y="15.29297"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-5" x="147.279826" y="15.29297"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="343pt" height="42pt" viewBox="0 0 343 42" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 2 -3.265625 C 2.453125 -3.078125 2.9375 -3.078125 3.21875 -3.078125 C 3.578125 -3.078125 4.328125 -3.078125 4.328125 -3.5 C 4.328125 -3.765625 4.0625 -3.859375 3.328125 -3.859375 C 2.96875 -3.859375 2.53125 -3.8125 2.03125 -3.59375 C 1.59375 -3.8125 1.421875 -4.140625 1.421875 -4.453125 C 1.421875 -5.34375 2.828125 -5.859375 4.109375 -5.859375 C 4.34375 -5.859375 4.859375 -5.859375 5.46875 -5.421875 C 5.546875 -5.359375 5.59375 -5.328125 5.6875 -5.328125 C 5.859375 -5.328125 6.046875 -5.515625 6.046875 -5.6875 C 6.046875 -5.9375 5.21875 -6.484375 4.234375 -6.484375 C 2.625 -6.484375 1.109375 -5.515625 1.109375 -4.453125 C 1.109375 -3.9375 1.453125 -3.59375 1.6875 -3.421875 C 0.859375 -2.953125 0.375 -2.1875 0.375 -1.484375 C 0.375 -0.484375 1.265625 0.296875 2.640625 0.296875 C 4.53125 0.296875 5.296875 -0.96875 5.296875 -1.15625 C 5.296875 -1.234375 5.234375 -1.296875 5.15625 -1.296875 C 5.09375 -1.296875 5.0625 -1.25 5 -1.15625 C 4.84375 -0.890625 4.46875 -0.3125 2.765625 -0.3125 C 1.875 -0.3125 0.703125 -0.546875 0.703125 -1.5625 C 0.703125 -2.046875 1.0625 -2.78125 2 -3.265625 Z M 2.4375 -3.4375 C 2.828125 -3.578125 3.203125 -3.578125 3.296875 -3.578125 C 3.703125 -3.578125 3.765625 -3.546875 4 -3.484375 C 3.765625 -3.375 3.734375 -3.375 3.21875 -3.375 C 2.953125 -3.375 2.71875 -3.375 2.4375 -3.4375 Z M 2.4375 -3.4375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 3.765625 1.609375 C 3.390625 2.15625 2.828125 2.640625 2.125 2.640625 C 1.953125 2.640625 1.265625 2.609375 1.046875 1.953125 C 1.09375 1.96875 1.15625 1.96875 1.1875 1.96875 C 1.625 1.96875 1.90625 1.59375 1.90625 1.265625 C 1.90625 0.9375 1.640625 0.8125 1.421875 0.8125 C 1.1875 0.8125 0.6875 0.984375 0.6875 1.6875 C 0.6875 2.421875 1.3125 2.921875 2.125 2.921875 C 3.5625 2.921875 5 1.609375 5.40625 0.015625 L 6.8125 -5.578125 C 6.828125 -5.65625 6.859375 -5.734375 6.859375 -5.828125 C 6.859375 -6.03125 6.6875 -6.1875 6.46875 -6.1875 C 6.34375 -6.1875 6.03125 -6.125 5.921875 -5.6875 L 4.859375 -1.484375 C 4.796875 -1.21875 4.796875 -1.1875 4.671875 -1.03125 C 4.390625 -0.625 3.921875 -0.140625 3.234375 -0.140625 C 2.421875 -0.140625 2.359375 -0.9375 2.359375 -1.3125 C 2.359375 -2.140625 2.734375 -3.234375 3.125 -4.28125 C 3.28125 -4.6875 3.375 -4.890625 3.375 -5.171875 C 3.375 -5.78125 2.9375 -6.328125 2.234375 -6.328125 C 0.921875 -6.328125 0.390625 -4.25 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.671875 -4 0.6875 -4.0625 0.75 -4.265625 C 1.09375 -5.46875 1.640625 -6.03125 2.1875 -6.03125 C 2.328125 -6.03125 2.5625 -6.03125 2.5625 -5.5625 C 2.5625 -5.1875 2.40625 -4.78125 2.1875 -4.234375 C 1.484375 -2.359375 1.484375 -1.875 1.484375 -1.53125 C 1.484375 -0.171875 2.46875 0.140625 3.1875 0.140625 C 3.59375 0.140625 4.109375 0.015625 4.625 -0.515625 L 4.640625 -0.5 C 4.421875 0.34375 4.28125 0.90625 3.765625 1.609375 Z M 3.765625 1.609375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 2.953125 -4.203125 C 2.984375 -4.28125 3.34375 -5 3.875 -5.46875 C 4.25 -5.8125 4.734375 -6.03125 5.296875 -6.03125 C 5.859375 -6.03125 6.0625 -5.609375 6.0625 -5.03125 C 6.0625 -4.21875 5.484375 -2.578125 5.1875 -1.8125 C 5.0625 -1.46875 4.984375 -1.28125 4.984375 -1.015625 C 4.984375 -0.375 5.4375 0.140625 6.125 0.140625 C 7.453125 0.140625 7.953125 -1.96875 7.953125 -2.046875 C 7.953125 -2.125 7.90625 -2.1875 7.8125 -2.1875 C 7.6875 -2.1875 7.671875 -2.140625 7.609375 -1.890625 C 7.265625 -0.71875 6.734375 -0.140625 6.171875 -0.140625 C 6.03125 -0.140625 5.796875 -0.15625 5.796875 -0.609375 C 5.796875 -0.96875 5.953125 -1.40625 6.03125 -1.609375 C 6.328125 -2.390625 6.921875 -4 6.921875 -4.8125 C 6.921875 -5.6875 6.421875 -6.328125 5.328125 -6.328125 C 4.0625 -6.328125 3.390625 -5.421875 3.125 -5.0625 C 3.078125 -5.875 2.5 -6.328125 1.859375 -6.328125 C 1.40625 -6.328125 1.09375 -6.046875 0.84375 -5.5625 C 0.59375 -5.046875 0.390625 -4.1875 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.65625 -4 0.671875 -4.015625 0.765625 -4.34375 C 0.984375 -5.21875 1.25 -6.03125 1.828125 -6.03125 C 2.15625 -6.03125 2.265625 -5.8125 2.265625 -5.375 C 2.265625 -5.0625 2.125 -4.5 2.015625 -4.0625 L 1.625 -2.515625 C 1.5625 -2.234375 1.40625 -1.59375 1.328125 -1.328125 C 1.234375 -0.96875 1.078125 -0.28125 1.078125 -0.21875 C 1.078125 -0.015625 1.234375 0.140625 1.453125 0.140625 C 1.625 0.140625 1.828125 0.0625 1.9375 -0.15625 C 1.96875 -0.234375 2.09375 -0.734375 2.171875 -1.015625 L 2.484375 -2.3125 Z M 2.953125 -4.203125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 2.640625 -0.6875 C 2.640625 -1.109375 2.296875 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.046875 1.25 -0.703125 C 1.25 -0.28125 1.59375 0 1.9375 0 C 2.359375 0 2.640625 -0.34375 2.640625 -0.6875 Z M 2.640625 -0.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d="M 2.640625 -5.5 C 2.640625 -5.875 2.3125 -6.1875 1.953125 -6.1875 C 1.53125 -6.1875 1.25 -5.859375 1.25 -5.5 C 1.25 -5.0625 1.609375 -4.796875 1.9375 -4.796875 C 2.328125 -4.796875 2.640625 -5.09375 2.640625 -5.5 Z M 2.640625 -0.703125 C 2.640625 -1.09375 2.3125 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.0625 1.25 -0.703125 C 1.25 -0.265625 1.609375 0 1.9375 0 C 2.328125 0 2.640625 -0.296875 2.640625 -0.703125 Z M 2.640625 -0.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 5.71875 -3.3125 L 9.6875 -3.3125 C 9.890625 -3.3125 10.140625 -3.3125 10.140625 -3.578125 C 10.140625 -3.84375 9.890625 -3.84375 9.6875 -3.84375 L 5.71875 -3.84375 L 5.71875 -7.796875 C 5.71875 -8 5.71875 -8.265625 5.46875 -8.265625 C 5.1875 -8.265625 5.1875 -8.015625 5.1875 -7.796875 L 5.1875 -3.84375 L 1.234375 -3.84375 C 1.03125 -3.84375 0.78125 -3.84375 0.78125 -3.578125 C 0.78125 -3.3125 1.015625 -3.3125 1.234375 -3.3125 L 5.1875 -3.3125 L 5.1875 0.640625 C 5.1875 0.84375 5.1875 1.109375 5.453125 1.109375 C 5.71875 1.109375 5.71875 0.859375 5.71875 0.640625 Z M 5.71875 -3.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-4">
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-5">
<path style="stroke:none;" d="M 2.625 -9.578125 C 2.625 -10.046875 2.234375 -10.25 1.9375 -10.25 C 1.640625 -10.25 1.1875 -10.0625 1.234375 -9.453125 L 1.75 -2.890625 C 1.765625 -2.640625 1.796875 -2.578125 1.921875 -2.578125 C 2.0625 -2.578125 2.09375 -2.625 2.109375 -2.890625 Z M 2.625 -0.703125 C 2.625 -1.078125 2.3125 -1.390625 1.9375 -1.390625 C 1.53125 -1.390625 1.234375 -1.078125 1.234375 -0.6875 C 1.234375 -0.3125 1.546875 0 1.921875 0 C 2.328125 0 2.625 -0.3125 2.625 -0.703125 Z M 2.625 -0.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d="M 4.578125 -3.1875 C 4.578125 -3.984375 4.53125 -4.78125 4.1875 -5.515625 C 3.734375 -6.484375 2.90625 -6.640625 2.5 -6.640625 C 1.890625 -6.640625 1.171875 -6.375 0.75 -5.453125 C 0.4375 -4.765625 0.390625 -3.984375 0.390625 -3.1875 C 0.390625 -2.4375 0.421875 -1.546875 0.84375 -0.78125 C 1.265625 0.015625 2 0.21875 2.484375 0.21875 C 3.015625 0.21875 3.78125 0.015625 4.21875 -0.9375 C 4.53125 -1.625 4.578125 -2.40625 4.578125 -3.1875 Z M 2.484375 0 C 2.09375 0 1.5 -0.25 1.328125 -1.203125 C 1.21875 -1.796875 1.21875 -2.71875 1.21875 -3.3125 C 1.21875 -3.953125 1.21875 -4.609375 1.296875 -5.140625 C 1.484375 -6.328125 2.234375 -6.421875 2.484375 -6.421875 C 2.8125 -6.421875 3.46875 -6.234375 3.65625 -5.25 C 3.765625 -4.6875 3.765625 -3.9375 3.765625 -3.3125 C 3.765625 -2.5625 3.765625 -1.890625 3.65625 -1.25 C 3.5 -0.296875 2.9375 0 2.484375 0 Z M 2.484375 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 6.84375 -3.265625 C 7 -3.265625 7.1875 -3.265625 7.1875 -3.453125 C 7.1875 -3.65625 7 -3.65625 6.859375 -3.65625 L 0.890625 -3.65625 C 0.75 -3.65625 0.5625 -3.65625 0.5625 -3.453125 C 0.5625 -3.265625 0.75 -3.265625 0.890625 -3.265625 Z M 6.859375 -1.328125 C 7 -1.328125 7.1875 -1.328125 7.1875 -1.53125 C 7.1875 -1.71875 7 -1.71875 6.84375 -1.71875 L 0.890625 -1.71875 C 0.75 -1.71875 0.5625 -1.71875 0.5625 -1.53125 C 0.5625 -1.328125 0.75 -1.328125 0.890625 -1.328125 Z M 6.859375 -1.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-3">
<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d="M 1.359375 -3.296875 C 1.453125 -3.296875 1.765625 -3.296875 1.765625 -3.578125 C 1.765625 -3.875 1.453125 -3.875 1.359375 -3.875 L 1.359375 -5.75 C 1.359375 -5.984375 1.359375 -6.25 1.078125 -6.25 C 0.78125 -6.25 0.78125 -5.984375 0.78125 -5.75 L 0.78125 -1.421875 C 0.78125 -1.1875 0.78125 -0.921875 1.078125 -0.921875 C 1.359375 -0.921875 1.359375 -1.1875 1.359375 -1.421875 Z M 1.359375 -3.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 11.96875 -3.296875 C 11.171875 -2.703125 10.78125 -2.109375 10.671875 -1.921875 C 10.03125 -0.9375 9.90625 -0.03125 9.90625 -0.015625 C 9.90625 0.15625 10.078125 0.15625 10.203125 0.15625 C 10.4375 0.15625 10.453125 0.125 10.515625 -0.125 C 10.84375 -1.53125 11.6875 -2.734375 13.3125 -3.40625 C 13.484375 -3.453125 13.53125 -3.484375 13.53125 -3.578125 C 13.53125 -3.6875 13.4375 -3.734375 13.40625 -3.75 C 12.78125 -3.984375 11.046875 -4.703125 10.5 -7.109375 C 10.453125 -7.28125 10.4375 -7.328125 10.203125 -7.328125 C 10.078125 -7.328125 9.90625 -7.328125 9.90625 -7.15625 C 9.90625 -7.125 10.046875 -6.21875 10.640625 -5.265625 C 10.9375 -4.828125 11.34375 -4.328125 11.96875 -3.875 L 1.3125 -3.875 C 1.046875 -3.875 0.78125 -3.875 0.78125 -3.578125 C 0.78125 -3.296875 1.046875 -3.296875 1.3125 -3.296875 Z M 11.96875 -3.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d="M 7.53125 -5.765625 C 7.640625 -6.15625 7.8125 -6.46875 8.609375 -6.5 C 8.65625 -6.5 8.78125 -6.515625 8.78125 -6.703125 C 8.78125 -6.703125 8.78125 -6.8125 8.65625 -6.8125 C 8.328125 -6.8125 7.96875 -6.78125 7.640625 -6.78125 C 7.3125 -6.78125 6.953125 -6.8125 6.625 -6.8125 C 6.5625 -6.8125 6.453125 -6.8125 6.453125 -6.609375 C 6.453125 -6.5 6.546875 -6.5 6.625 -6.5 C 7.203125 -6.484375 7.3125 -6.28125 7.3125 -6.0625 C 7.3125 -6.03125 7.28125 -5.875 7.28125 -5.859375 L 6.15625 -1.421875 L 3.953125 -6.625 C 3.875 -6.796875 3.875 -6.8125 3.640625 -6.8125 L 2.296875 -6.8125 C 2.109375 -6.8125 2.015625 -6.8125 2.015625 -6.609375 C 2.015625 -6.5 2.109375 -6.5 2.296875 -6.5 C 2.34375 -6.5 2.96875 -6.5 2.96875 -6.40625 L 1.640625 -1.0625 C 1.53125 -0.65625 1.359375 -0.34375 0.5625 -0.3125 C 0.5 -0.3125 0.390625 -0.296875 0.390625 -0.109375 C 0.390625 -0.046875 0.4375 0 0.515625 0 C 0.84375 0 1.1875 -0.03125 1.515625 -0.03125 C 1.859375 -0.03125 2.21875 0 2.546875 0 C 2.59375 0 2.71875 0 2.71875 -0.203125 C 2.71875 -0.296875 2.625 -0.3125 2.515625 -0.3125 C 1.9375 -0.328125 1.859375 -0.546875 1.859375 -0.75 C 1.859375 -0.8125 1.875 -0.875 1.90625 -0.984375 L 3.21875 -6.234375 C 3.265625 -6.1875 3.265625 -6.15625 3.3125 -6.0625 L 5.796875 -0.1875 C 5.859375 -0.015625 5.890625 0 5.984375 0 C 6.09375 0 6.09375 -0.03125 6.140625 -0.203125 Z M 7.53125 -5.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.203125 0.109375 1.375 0.03125 1.453125 -0.171875 C 1.453125 -0.1875 1.578125 -0.65625 1.640625 -0.90625 L 1.859375 -1.796875 C 1.90625 -2.03125 1.96875 -2.25 2.03125 -2.46875 C 2.0625 -2.640625 2.140625 -2.9375 2.15625 -2.96875 C 2.296875 -3.28125 2.828125 -4.1875 3.78125 -4.1875 C 4.234375 -4.1875 4.3125 -3.8125 4.3125 -3.484375 C 4.3125 -2.875 3.828125 -1.59375 3.671875 -1.171875 C 3.578125 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.921875 0.109375 4.390625 0.109375 C 5.328125 0.109375 5.6875 -1.34375 5.6875 -1.421875 C 5.6875 -1.53125 5.609375 -1.53125 5.578125 -1.53125 C 5.46875 -1.53125 5.46875 -1.5 5.421875 -1.34375 C 5.21875 -0.671875 4.890625 -0.109375 4.40625 -0.109375 C 4.234375 -0.109375 4.171875 -0.203125 4.171875 -0.4375 C 4.171875 -0.6875 4.25 -0.921875 4.34375 -1.140625 C 4.53125 -1.671875 4.953125 -2.765625 4.953125 -3.34375 C 4.953125 -4 4.53125 -4.40625 3.8125 -4.40625 C 2.90625 -4.40625 2.421875 -3.765625 2.25 -3.53125 C 2.203125 -4.09375 1.796875 -4.40625 1.328125 -4.40625 C 0.875 -4.40625 0.6875 -4.015625 0.59375 -3.84375 C 0.421875 -3.5 0.296875 -2.90625 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.78125 0.578125 -3 C 0.75 -3.703125 0.953125 -4.1875 1.3125 -4.1875 C 1.5 -4.1875 1.609375 -4.0625 1.609375 -3.734375 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.890625 Z M 0.875 -0.59375 "/>
</symbol>
<symbol overflow="visible" id="glyph5-0">
<path style="stroke:none;" d="M 18.15625 20.078125 L 19.890625 15.484375 L 19.53125 15.484375 C 18.984375 16.984375 17.453125 17.953125 15.8125 18.390625 C 15.5 18.453125 14.09375 18.828125 11.34375 18.828125 L 2.703125 18.828125 L 10 10.265625 C 10.09375 10.15625 10.125 10.109375 10.125 10.046875 C 10.125 10.015625 10.125 9.96875 10.03125 9.828125 L 3.34375 0.6875 L 11.203125 0.6875 C 13.125 0.6875 14.4375 0.890625 14.5625 0.921875 C 15.328125 1.03125 16.578125 1.28125 17.71875 2 C 18.078125 2.21875 19.046875 2.875 19.53125 4.03125 L 19.890625 4.03125 L 18.15625 0 L 1.203125 0 C 0.875 0 0.859375 0.015625 0.8125 0.09375 C 0.796875 0.140625 0.796875 0.421875 0.796875 0.578125 L 8.390625 10.953125 L 0.96875 19.671875 C 0.8125 19.84375 0.8125 19.90625 0.8125 19.921875 C 0.8125 20.078125 0.953125 20.078125 1.203125 20.078125 Z M 18.15625 20.078125 "/>
</symbol>
</g>
</defs>
<g id="surface1">
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="-0.232813" y="24.9"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="40.303087" y="24.9"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="76.285087" y="24.9"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="84.267897" y="27.05117"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="89.748757" y="24.9"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="100.674957" y="24.9"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="139.321057" y="24.9"/>
<use xlink:href="#glyph3-1" x="139.321057" y="24.9"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="191.565957" y="6.9629"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="185.751897" y="11.27384"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="186.760097" y="41.60394"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="192.736267" y="41.60394"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="200.485271" y="41.60394"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="208.863967" y="24.90004"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="215.712797" y="27.05121"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="222.192877" y="24.90004"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="228.762797" y="18.97816"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="239.229997" y="24.90004"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="259.956997" y="6.96294"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="254.142937" y="11.27388"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="255.142156" y="41.60398"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="261.118326" y="41.60398"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="268.86733" y="41.60398"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="278.442926" y="15.18918"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="286.894096" y="9.98723"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="290.764016" y="9.98723"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="296.740186" y="9.98723"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-3" x="301.131986" y="15.18918"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="306.594876" y="15.18918"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="314.578076" y="17.34895"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-4" x="320.058936" y="15.18918"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2784.414062 206.914062 L 3255.234375 206.914062 " transform="matrix(0.1,0,0,-0.1,0,42)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="295.84" y="34.73711"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-5" x="304.22789" y="34.73711"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="326.71029" y="24.9"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="333.28021" y="18.97812"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="339.76927" y="24.9"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,327 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="345pt" height="79pt" viewBox="0 0 345 79" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d="M 6.390625 -5.765625 C 6.6875 -5.765625 6.796875 -5.765625 6.796875 -6.03125 C 6.796875 -6.1875 6.6875 -6.1875 6.421875 -6.1875 L 5.265625 -6.1875 C 5.53125 -7.65625 5.734375 -8.671875 5.859375 -9.140625 C 5.9375 -9.484375 6.234375 -9.8125 6.609375 -9.8125 C 6.90625 -9.8125 7.21875 -9.6875 7.359375 -9.546875 C 6.796875 -9.5 6.625 -9.078125 6.625 -8.828125 C 6.625 -8.546875 6.84375 -8.375 7.109375 -8.375 C 7.40625 -8.375 7.828125 -8.625 7.828125 -9.171875 C 7.828125 -9.765625 7.234375 -10.09375 6.59375 -10.09375 C 5.984375 -10.09375 5.375 -9.640625 5.09375 -9.078125 C 4.828125 -8.578125 4.6875 -8.0625 4.359375 -6.1875 L 3.40625 -6.1875 C 3.125 -6.1875 2.984375 -6.1875 2.984375 -5.921875 C 2.984375 -5.765625 3.0625 -5.765625 3.359375 -5.765625 L 4.28125 -5.765625 C 4.015625 -4.4375 3.421875 -1.1875 3.09375 0.34375 C 2.859375 1.59375 2.640625 2.640625 1.921875 2.640625 C 1.875 2.640625 1.46875 2.640625 1.203125 2.359375 C 1.9375 2.3125 1.9375 1.671875 1.9375 1.65625 C 1.9375 1.375 1.71875 1.203125 1.453125 1.203125 C 1.15625 1.203125 0.734375 1.453125 0.734375 2 C 0.734375 2.609375 1.359375 2.921875 1.921875 2.921875 C 3.390625 2.921875 3.984375 0.296875 4.140625 -0.421875 C 4.40625 -1.515625 5.109375 -5.328125 5.171875 -5.765625 Z M 6.390625 -5.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 6.796875 -5.859375 C 6.34375 -5.765625 6.171875 -5.421875 6.171875 -5.15625 C 6.171875 -4.8125 6.4375 -4.6875 6.640625 -4.6875 C 7.078125 -4.6875 7.375 -5.0625 7.375 -5.453125 C 7.375 -6.046875 6.6875 -6.328125 6.078125 -6.328125 C 5.203125 -6.328125 4.71875 -5.46875 4.59375 -5.1875 C 4.265625 -6.265625 3.375 -6.328125 3.109375 -6.328125 C 1.65625 -6.328125 0.875 -4.453125 0.875 -4.125 C 0.875 -4.078125 0.9375 -4 1.03125 -4 C 1.140625 -4 1.171875 -4.09375 1.203125 -4.140625 C 1.6875 -5.734375 2.65625 -6.03125 3.0625 -6.03125 C 3.71875 -6.03125 3.84375 -5.4375 3.84375 -5.09375 C 3.84375 -4.78125 3.765625 -4.453125 3.578125 -3.765625 L 3.09375 -1.796875 C 2.890625 -0.9375 2.46875 -0.140625 1.703125 -0.140625 C 1.640625 -0.140625 1.28125 -0.140625 0.96875 -0.328125 C 1.484375 -0.4375 1.609375 -0.859375 1.609375 -1.03125 C 1.609375 -1.3125 1.390625 -1.484375 1.125 -1.484375 C 0.78125 -1.484375 0.40625 -1.1875 0.40625 -0.734375 C 0.40625 -0.125 1.078125 0.140625 1.6875 0.140625 C 2.375 0.140625 2.875 -0.40625 3.171875 -0.984375 C 3.40625 -0.140625 4.109375 0.140625 4.640625 0.140625 C 6.109375 0.140625 6.890625 -1.734375 6.890625 -2.046875 C 6.890625 -2.125 6.828125 -2.1875 6.734375 -2.1875 C 6.609375 -2.1875 6.59375 -2.109375 6.5625 -2 C 6.171875 -0.734375 5.328125 -0.140625 4.6875 -0.140625 C 4.1875 -0.140625 3.921875 -0.515625 3.921875 -1.109375 C 3.921875 -1.421875 3.96875 -1.65625 4.203125 -2.59375 L 4.703125 -4.546875 C 4.921875 -5.40625 5.40625 -6.03125 6.0625 -6.03125 C 6.09375 -6.03125 6.5 -6.03125 6.796875 -5.859375 Z M 6.796875 -5.859375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 2 -3.265625 C 2.453125 -3.078125 2.9375 -3.078125 3.21875 -3.078125 C 3.578125 -3.078125 4.328125 -3.078125 4.328125 -3.5 C 4.328125 -3.765625 4.0625 -3.859375 3.328125 -3.859375 C 2.96875 -3.859375 2.53125 -3.8125 2.03125 -3.59375 C 1.59375 -3.8125 1.421875 -4.140625 1.421875 -4.453125 C 1.421875 -5.34375 2.828125 -5.859375 4.109375 -5.859375 C 4.34375 -5.859375 4.859375 -5.859375 5.46875 -5.421875 C 5.546875 -5.359375 5.59375 -5.328125 5.6875 -5.328125 C 5.859375 -5.328125 6.046875 -5.515625 6.046875 -5.6875 C 6.046875 -5.9375 5.21875 -6.484375 4.234375 -6.484375 C 2.625 -6.484375 1.109375 -5.515625 1.109375 -4.453125 C 1.109375 -3.9375 1.453125 -3.59375 1.6875 -3.421875 C 0.859375 -2.953125 0.375 -2.1875 0.375 -1.484375 C 0.375 -0.484375 1.265625 0.296875 2.640625 0.296875 C 4.53125 0.296875 5.296875 -0.96875 5.296875 -1.15625 C 5.296875 -1.234375 5.234375 -1.296875 5.15625 -1.296875 C 5.09375 -1.296875 5.0625 -1.25 5 -1.15625 C 4.84375 -0.890625 4.46875 -0.3125 2.765625 -0.3125 C 1.875 -0.3125 0.703125 -0.546875 0.703125 -1.5625 C 0.703125 -2.046875 1.0625 -2.78125 2 -3.265625 Z M 2.4375 -3.4375 C 2.828125 -3.578125 3.203125 -3.578125 3.296875 -3.578125 C 3.703125 -3.578125 3.765625 -3.546875 4 -3.484375 C 3.765625 -3.375 3.734375 -3.375 3.21875 -3.375 C 2.953125 -3.375 2.71875 -3.375 2.4375 -3.4375 Z M 2.4375 -3.4375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 2.953125 -4.203125 C 2.984375 -4.28125 3.34375 -5 3.875 -5.46875 C 4.25 -5.8125 4.734375 -6.03125 5.296875 -6.03125 C 5.859375 -6.03125 6.0625 -5.609375 6.0625 -5.03125 C 6.0625 -4.21875 5.484375 -2.578125 5.1875 -1.8125 C 5.0625 -1.46875 4.984375 -1.28125 4.984375 -1.015625 C 4.984375 -0.375 5.4375 0.140625 6.125 0.140625 C 7.453125 0.140625 7.953125 -1.96875 7.953125 -2.046875 C 7.953125 -2.125 7.90625 -2.1875 7.8125 -2.1875 C 7.6875 -2.1875 7.671875 -2.140625 7.609375 -1.890625 C 7.265625 -0.71875 6.734375 -0.140625 6.171875 -0.140625 C 6.03125 -0.140625 5.796875 -0.15625 5.796875 -0.609375 C 5.796875 -0.96875 5.953125 -1.40625 6.03125 -1.609375 C 6.328125 -2.390625 6.921875 -4 6.921875 -4.8125 C 6.921875 -5.6875 6.421875 -6.328125 5.328125 -6.328125 C 4.0625 -6.328125 3.390625 -5.421875 3.125 -5.0625 C 3.078125 -5.875 2.5 -6.328125 1.859375 -6.328125 C 1.40625 -6.328125 1.09375 -6.046875 0.84375 -5.5625 C 0.59375 -5.046875 0.390625 -4.1875 0.390625 -4.125 C 0.390625 -4.078125 0.4375 -4 0.546875 -4 C 0.65625 -4 0.671875 -4.015625 0.765625 -4.34375 C 0.984375 -5.21875 1.25 -6.03125 1.828125 -6.03125 C 2.15625 -6.03125 2.265625 -5.8125 2.265625 -5.375 C 2.265625 -5.0625 2.125 -4.5 2.015625 -4.0625 L 1.625 -2.515625 C 1.5625 -2.234375 1.40625 -1.59375 1.328125 -1.328125 C 1.234375 -0.96875 1.078125 -0.28125 1.078125 -0.21875 C 1.078125 -0.015625 1.234375 0.140625 1.453125 0.140625 C 1.625 0.140625 1.828125 0.0625 1.9375 -0.15625 C 1.96875 -0.234375 2.09375 -0.734375 2.171875 -1.015625 L 2.484375 -2.3125 Z M 2.953125 -4.203125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 10.40625 -6.28125 C 10.40625 -8.65625 8.859375 -10.09375 6.859375 -10.09375 C 3.78125 -10.09375 0.6875 -6.796875 0.6875 -3.484375 C 0.6875 -1.234375 2.1875 0.296875 4.265625 0.296875 C 7.265625 0.296875 10.40625 -2.84375 10.40625 -6.28125 Z M 4.34375 -0.03125 C 3.171875 -0.03125 1.921875 -0.890625 1.921875 -3.125 C 1.921875 -4.4375 2.390625 -6.5625 3.578125 -8 C 4.625 -9.265625 5.828125 -9.78125 6.78125 -9.78125 C 8.046875 -9.78125 9.265625 -8.859375 9.265625 -6.796875 C 9.265625 -5.515625 8.71875 -3.53125 7.765625 -2.171875 C 6.71875 -0.703125 5.40625 -0.03125 4.34375 -0.03125 Z M 4.34375 -0.03125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 2.640625 -0.6875 C 2.640625 -1.109375 2.296875 -1.390625 1.953125 -1.390625 C 1.53125 -1.390625 1.25 -1.046875 1.25 -0.703125 C 1.25 -0.28125 1.59375 0 1.9375 0 C 2.359375 0 2.640625 -0.34375 2.640625 -0.6875 Z M 2.640625 -0.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d="M 4.65625 3.484375 C 4.65625 3.4375 4.65625 3.40625 4.421875 3.171875 C 2.984375 1.71875 2.1875 -0.640625 2.1875 -3.578125 C 2.1875 -6.359375 2.859375 -8.75 4.515625 -10.4375 C 4.65625 -10.578125 4.65625 -10.59375 4.65625 -10.640625 C 4.65625 -10.734375 4.59375 -10.75 4.53125 -10.75 C 4.34375 -10.75 3.171875 -9.71875 2.46875 -8.3125 C 1.734375 -6.875 1.40625 -5.328125 1.40625 -3.578125 C 1.40625 -2.296875 1.609375 -0.59375 2.359375 0.953125 C 3.203125 2.671875 4.375 3.59375 4.53125 3.59375 C 4.59375 3.59375 4.65625 3.578125 4.65625 3.484375 Z M 4.65625 3.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 5.71875 -3.3125 L 9.6875 -3.3125 C 9.890625 -3.3125 10.140625 -3.3125 10.140625 -3.578125 C 10.140625 -3.84375 9.890625 -3.84375 9.6875 -3.84375 L 5.71875 -3.84375 L 5.71875 -7.796875 C 5.71875 -8 5.71875 -8.265625 5.46875 -8.265625 C 5.1875 -8.265625 5.1875 -8.015625 5.1875 -7.796875 L 5.1875 -3.84375 L 1.234375 -3.84375 C 1.03125 -3.84375 0.78125 -3.84375 0.78125 -3.578125 C 0.78125 -3.3125 1.015625 -3.3125 1.234375 -3.3125 L 5.1875 -3.3125 L 5.1875 0.640625 C 5.1875 0.84375 5.1875 1.109375 5.453125 1.109375 C 5.71875 1.109375 5.71875 0.859375 5.71875 0.640625 Z M 5.71875 -3.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 4.046875 -3.578125 C 4.046875 -4.65625 3.90625 -6.4375 3.09375 -8.109375 C 2.25 -9.828125 1.078125 -10.75 0.921875 -10.75 C 0.859375 -10.75 0.78125 -10.734375 0.78125 -10.640625 C 0.78125 -10.59375 0.78125 -10.578125 1.03125 -10.328125 C 2.46875 -8.875 3.265625 -6.515625 3.265625 -3.578125 C 3.265625 -0.796875 2.59375 1.59375 0.9375 3.28125 C 0.78125 3.40625 0.78125 3.4375 0.78125 3.484375 C 0.78125 3.578125 0.859375 3.59375 0.921875 3.59375 C 1.109375 3.59375 2.28125 2.5625 2.984375 1.15625 C 3.71875 -0.296875 4.046875 -1.84375 4.046875 -3.578125 Z M 4.046875 -3.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 9.6875 -4.640625 C 9.890625 -4.640625 10.140625 -4.640625 10.140625 -4.90625 C 10.140625 -5.171875 9.890625 -5.171875 9.6875 -5.171875 L 1.234375 -5.171875 C 1.03125 -5.171875 0.78125 -5.171875 0.78125 -4.921875 C 0.78125 -4.640625 1.015625 -4.640625 1.234375 -4.640625 Z M 9.6875 -1.984375 C 9.890625 -1.984375 10.140625 -1.984375 10.140625 -2.234375 C 10.140625 -2.515625 9.890625 -2.515625 9.6875 -2.515625 L 1.234375 -2.515625 C 1.03125 -2.515625 0.78125 -2.515625 0.78125 -2.25 C 0.78125 -1.984375 1.015625 -1.984375 1.234375 -1.984375 Z M 9.6875 -1.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-4">
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-5">
<path style="stroke:none;" d="M 2.625 -9.578125 C 2.625 -10.046875 2.234375 -10.25 1.9375 -10.25 C 1.640625 -10.25 1.1875 -10.0625 1.234375 -9.453125 L 1.75 -2.890625 C 1.765625 -2.640625 1.796875 -2.578125 1.921875 -2.578125 C 2.0625 -2.578125 2.09375 -2.625 2.109375 -2.890625 Z M 2.625 -0.703125 C 2.625 -1.078125 2.3125 -1.390625 1.9375 -1.390625 C 1.53125 -1.390625 1.234375 -1.078125 1.234375 -0.6875 C 1.234375 -0.3125 1.546875 0 1.921875 0 C 2.328125 0 2.625 -0.3125 2.625 -0.703125 Z M 2.625 -0.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-6">
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d="M 4.578125 -3.1875 C 4.578125 -3.984375 4.53125 -4.78125 4.1875 -5.515625 C 3.734375 -6.484375 2.90625 -6.640625 2.5 -6.640625 C 1.890625 -6.640625 1.171875 -6.375 0.75 -5.453125 C 0.4375 -4.765625 0.390625 -3.984375 0.390625 -3.1875 C 0.390625 -2.4375 0.421875 -1.546875 0.84375 -0.78125 C 1.265625 0.015625 2 0.21875 2.484375 0.21875 C 3.015625 0.21875 3.78125 0.015625 4.21875 -0.9375 C 4.53125 -1.625 4.578125 -2.40625 4.578125 -3.1875 Z M 2.484375 0 C 2.09375 0 1.5 -0.25 1.328125 -1.203125 C 1.21875 -1.796875 1.21875 -2.71875 1.21875 -3.3125 C 1.21875 -3.953125 1.21875 -4.609375 1.296875 -5.140625 C 1.484375 -6.328125 2.234375 -6.421875 2.484375 -6.421875 C 2.8125 -6.421875 3.46875 -6.234375 3.65625 -5.25 C 3.765625 -4.6875 3.765625 -3.9375 3.765625 -3.3125 C 3.765625 -2.5625 3.765625 -1.890625 3.65625 -1.25 C 3.5 -0.296875 2.9375 0 2.484375 0 Z M 2.484375 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 1.265625 -0.765625 L 2.328125 -1.796875 C 3.875 -3.171875 4.46875 -3.703125 4.46875 -4.703125 C 4.46875 -5.84375 3.578125 -6.640625 2.359375 -6.640625 C 1.234375 -6.640625 0.5 -5.71875 0.5 -4.828125 C 0.5 -4.28125 1 -4.28125 1.03125 -4.28125 C 1.203125 -4.28125 1.546875 -4.390625 1.546875 -4.8125 C 1.546875 -5.0625 1.359375 -5.328125 1.015625 -5.328125 C 0.9375 -5.328125 0.921875 -5.328125 0.890625 -5.3125 C 1.109375 -5.96875 1.65625 -6.328125 2.234375 -6.328125 C 3.140625 -6.328125 3.5625 -5.515625 3.5625 -4.703125 C 3.5625 -3.90625 3.078125 -3.125 2.515625 -2.5 L 0.609375 -0.375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.203125 0 L 4.46875 -1.734375 L 4.234375 -1.734375 C 4.171875 -1.4375 4.109375 -1 4 -0.84375 C 3.9375 -0.765625 3.28125 -0.765625 3.0625 -0.765625 Z M 1.265625 -0.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 2.890625 -3.515625 C 3.703125 -3.78125 4.28125 -4.46875 4.28125 -5.265625 C 4.28125 -6.078125 3.40625 -6.640625 2.453125 -6.640625 C 1.453125 -6.640625 0.6875 -6.046875 0.6875 -5.28125 C 0.6875 -4.953125 0.90625 -4.765625 1.203125 -4.765625 C 1.5 -4.765625 1.703125 -4.984375 1.703125 -5.28125 C 1.703125 -5.765625 1.234375 -5.765625 1.09375 -5.765625 C 1.390625 -6.265625 2.046875 -6.390625 2.40625 -6.390625 C 2.828125 -6.390625 3.375 -6.171875 3.375 -5.28125 C 3.375 -5.15625 3.34375 -4.578125 3.09375 -4.140625 C 2.796875 -3.65625 2.453125 -3.625 2.203125 -3.625 C 2.125 -3.609375 1.890625 -3.59375 1.8125 -3.59375 C 1.734375 -3.578125 1.671875 -3.5625 1.671875 -3.46875 C 1.671875 -3.359375 1.734375 -3.359375 1.90625 -3.359375 L 2.34375 -3.359375 C 3.15625 -3.359375 3.53125 -2.6875 3.53125 -1.703125 C 3.53125 -0.34375 2.84375 -0.0625 2.40625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.984375 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.4375 0.21875 C 3.65625 0.21875 4.5625 -0.6875 4.5625 -1.703125 C 4.5625 -2.515625 3.921875 -3.296875 2.890625 -3.515625 Z M 2.890625 -3.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-3">
<path style="stroke:none;" d="M 6.84375 -3.265625 C 7 -3.265625 7.1875 -3.265625 7.1875 -3.453125 C 7.1875 -3.65625 7 -3.65625 6.859375 -3.65625 L 0.890625 -3.65625 C 0.75 -3.65625 0.5625 -3.65625 0.5625 -3.453125 C 0.5625 -3.265625 0.75 -3.265625 0.890625 -3.265625 Z M 6.859375 -1.328125 C 7 -1.328125 7.1875 -1.328125 7.1875 -1.53125 C 7.1875 -1.71875 7 -1.71875 6.84375 -1.71875 L 0.890625 -1.71875 C 0.75 -1.71875 0.5625 -1.71875 0.5625 -1.53125 C 0.5625 -1.328125 0.75 -1.328125 0.890625 -1.328125 Z M 6.859375 -1.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-4">
<path style="stroke:none;" d="M 3.296875 2.390625 C 3.296875 2.359375 3.296875 2.34375 3.125 2.171875 C 1.890625 0.921875 1.5625 -0.96875 1.5625 -2.5 C 1.5625 -4.234375 1.9375 -5.96875 3.171875 -7.203125 C 3.296875 -7.328125 3.296875 -7.34375 3.296875 -7.375 C 3.296875 -7.453125 3.265625 -7.484375 3.203125 -7.484375 C 3.09375 -7.484375 2.203125 -6.796875 1.609375 -5.53125 C 1.109375 -4.4375 0.984375 -3.328125 0.984375 -2.5 C 0.984375 -1.71875 1.09375 -0.515625 1.640625 0.625 C 2.25 1.84375 3.09375 2.5 3.203125 2.5 C 3.265625 2.5 3.296875 2.46875 3.296875 2.390625 Z M 3.296875 2.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-5">
<path style="stroke:none;" d="M 2.875 -2.5 C 2.875 -3.265625 2.765625 -4.46875 2.21875 -5.609375 C 1.625 -6.828125 0.765625 -7.484375 0.671875 -7.484375 C 0.609375 -7.484375 0.5625 -7.4375 0.5625 -7.375 C 0.5625 -7.34375 0.5625 -7.328125 0.75 -7.140625 C 1.734375 -6.15625 2.296875 -4.578125 2.296875 -2.5 C 2.296875 -0.78125 1.9375 0.96875 0.703125 2.21875 C 0.5625 2.34375 0.5625 2.359375 0.5625 2.390625 C 0.5625 2.453125 0.609375 2.5 0.671875 2.5 C 0.765625 2.5 1.671875 1.8125 2.25 0.546875 C 2.765625 -0.546875 2.875 -1.65625 2.875 -2.5 Z M 2.875 -2.5 "/>
</symbol>
<symbol overflow="visible" id="glyph2-6">
<path style="stroke:none;" d="M 4.078125 -2.296875 L 6.859375 -2.296875 C 7 -2.296875 7.1875 -2.296875 7.1875 -2.5 C 7.1875 -2.6875 7 -2.6875 6.859375 -2.6875 L 4.078125 -2.6875 L 4.078125 -5.484375 C 4.078125 -5.625 4.078125 -5.8125 3.875 -5.8125 C 3.671875 -5.8125 3.671875 -5.625 3.671875 -5.484375 L 3.671875 -2.6875 L 0.890625 -2.6875 C 0.75 -2.6875 0.5625 -2.6875 0.5625 -2.5 C 0.5625 -2.296875 0.75 -2.296875 0.890625 -2.296875 L 3.671875 -2.296875 L 3.671875 0.5 C 3.671875 0.640625 3.671875 0.828125 3.875 0.828125 C 4.078125 0.828125 4.078125 0.640625 4.078125 0.5 Z M 4.078125 -2.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-7">
<path style="stroke:none;" d="M 2.9375 -6.375 C 2.9375 -6.625 2.9375 -6.640625 2.703125 -6.640625 C 2.078125 -6 1.203125 -6 0.890625 -6 L 0.890625 -5.6875 C 1.09375 -5.6875 1.671875 -5.6875 2.1875 -5.953125 L 2.1875 -0.78125 C 2.1875 -0.421875 2.15625 -0.3125 1.265625 -0.3125 L 0.953125 -0.3125 L 0.953125 0 C 1.296875 -0.03125 2.15625 -0.03125 2.5625 -0.03125 C 2.953125 -0.03125 3.828125 -0.03125 4.171875 0 L 4.171875 -0.3125 L 3.859375 -0.3125 C 2.953125 -0.3125 2.9375 -0.421875 2.9375 -0.78125 Z M 2.9375 -6.375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d="M 2.515625 -4.734375 C 2.578125 -4.859375 2.609375 -4.9375 2.609375 -5.046875 C 2.609375 -5.328125 2.359375 -5.578125 2.046875 -5.578125 C 1.765625 -5.578125 1.578125 -5.390625 1.515625 -5.125 L 0.328125 -0.765625 C 0.328125 -0.75 0.296875 -0.640625 0.296875 -0.625 C 0.296875 -0.515625 0.546875 -0.453125 0.625 -0.453125 C 0.6875 -0.453125 0.703125 -0.484375 0.75 -0.609375 Z M 2.515625 -4.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d="M 2.75 -3.578125 C 2.75 -4 2.40625 -4.34375 2 -4.34375 C 1.578125 -4.34375 1.234375 -4 1.234375 -3.578125 C 1.234375 -3.171875 1.578125 -2.828125 2 -2.828125 C 2.40625 -2.828125 2.75 -3.171875 2.75 -3.578125 Z M 2.75 -3.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph5-0">
<path style="stroke:none;" d="M 7.53125 -5.765625 C 7.640625 -6.15625 7.8125 -6.46875 8.609375 -6.5 C 8.65625 -6.5 8.78125 -6.515625 8.78125 -6.703125 C 8.78125 -6.703125 8.78125 -6.8125 8.65625 -6.8125 C 8.328125 -6.8125 7.96875 -6.78125 7.640625 -6.78125 C 7.3125 -6.78125 6.953125 -6.8125 6.625 -6.8125 C 6.5625 -6.8125 6.453125 -6.8125 6.453125 -6.609375 C 6.453125 -6.5 6.546875 -6.5 6.625 -6.5 C 7.203125 -6.484375 7.3125 -6.28125 7.3125 -6.0625 C 7.3125 -6.03125 7.28125 -5.875 7.28125 -5.859375 L 6.15625 -1.421875 L 3.953125 -6.625 C 3.875 -6.796875 3.875 -6.8125 3.640625 -6.8125 L 2.296875 -6.8125 C 2.109375 -6.8125 2.015625 -6.8125 2.015625 -6.609375 C 2.015625 -6.5 2.109375 -6.5 2.296875 -6.5 C 2.34375 -6.5 2.96875 -6.5 2.96875 -6.40625 L 1.640625 -1.0625 C 1.53125 -0.65625 1.359375 -0.34375 0.5625 -0.3125 C 0.5 -0.3125 0.390625 -0.296875 0.390625 -0.109375 C 0.390625 -0.046875 0.4375 0 0.515625 0 C 0.84375 0 1.1875 -0.03125 1.515625 -0.03125 C 1.859375 -0.03125 2.21875 0 2.546875 0 C 2.59375 0 2.71875 0 2.71875 -0.203125 C 2.71875 -0.296875 2.625 -0.3125 2.515625 -0.3125 C 1.9375 -0.328125 1.859375 -0.546875 1.859375 -0.75 C 1.859375 -0.8125 1.875 -0.875 1.90625 -0.984375 L 3.21875 -6.234375 C 3.265625 -6.1875 3.265625 -6.15625 3.3125 -6.0625 L 5.796875 -0.1875 C 5.859375 -0.015625 5.890625 0 5.984375 0 C 6.09375 0 6.09375 -0.03125 6.140625 -0.203125 Z M 7.53125 -5.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph5-1">
<path style="stroke:none;" d="M 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.203125 0.109375 1.375 0.03125 1.453125 -0.171875 C 1.453125 -0.1875 1.578125 -0.65625 1.640625 -0.90625 L 1.859375 -1.796875 C 1.90625 -2.03125 1.96875 -2.25 2.03125 -2.46875 C 2.0625 -2.640625 2.140625 -2.9375 2.15625 -2.96875 C 2.296875 -3.28125 2.828125 -4.1875 3.78125 -4.1875 C 4.234375 -4.1875 4.3125 -3.8125 4.3125 -3.484375 C 4.3125 -2.875 3.828125 -1.59375 3.671875 -1.171875 C 3.578125 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.921875 0.109375 4.390625 0.109375 C 5.328125 0.109375 5.6875 -1.34375 5.6875 -1.421875 C 5.6875 -1.53125 5.609375 -1.53125 5.578125 -1.53125 C 5.46875 -1.53125 5.46875 -1.5 5.421875 -1.34375 C 5.21875 -0.671875 4.890625 -0.109375 4.40625 -0.109375 C 4.234375 -0.109375 4.171875 -0.203125 4.171875 -0.4375 C 4.171875 -0.6875 4.25 -0.921875 4.34375 -1.140625 C 4.53125 -1.671875 4.953125 -2.765625 4.953125 -3.34375 C 4.953125 -4 4.53125 -4.40625 3.8125 -4.40625 C 2.90625 -4.40625 2.421875 -3.765625 2.25 -3.53125 C 2.203125 -4.09375 1.796875 -4.40625 1.328125 -4.40625 C 0.875 -4.40625 0.6875 -4.015625 0.59375 -3.84375 C 0.421875 -3.5 0.296875 -2.90625 0.296875 -2.875 C 0.296875 -2.765625 0.390625 -2.765625 0.40625 -2.765625 C 0.515625 -2.765625 0.515625 -2.78125 0.578125 -3 C 0.75 -3.703125 0.953125 -4.1875 1.3125 -4.1875 C 1.5 -4.1875 1.609375 -4.0625 1.609375 -3.734375 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.890625 Z M 0.875 -0.59375 "/>
</symbol>
<symbol overflow="visible" id="glyph6-0">
<path style="stroke:none;" d="M 18.15625 20.078125 L 19.890625 15.484375 L 19.53125 15.484375 C 18.984375 16.984375 17.453125 17.953125 15.8125 18.390625 C 15.5 18.453125 14.09375 18.828125 11.34375 18.828125 L 2.703125 18.828125 L 10 10.265625 C 10.09375 10.15625 10.125 10.109375 10.125 10.046875 C 10.125 10.015625 10.125 9.96875 10.03125 9.828125 L 3.34375 0.6875 L 11.203125 0.6875 C 13.125 0.6875 14.4375 0.890625 14.5625 0.921875 C 15.328125 1.03125 16.578125 1.28125 17.71875 2 C 18.078125 2.21875 19.046875 2.875 19.53125 4.03125 L 19.890625 4.03125 L 18.15625 0 L 1.203125 0 C 0.875 0 0.859375 0.015625 0.8125 0.09375 C 0.796875 0.140625 0.796875 0.421875 0.796875 0.578125 L 8.390625 10.953125 L 0.96875 19.671875 C 0.8125 19.84375 0.8125 19.90625 0.8125 19.921875 C 0.8125 20.078125 0.953125 20.078125 1.203125 20.078125 Z M 18.15625 20.078125 "/>
</symbol>
<symbol overflow="visible" id="glyph6-1">
<path style="stroke:none;" d="M 5.921875 16.484375 C 5.921875 16.421875 5.890625 16.390625 5.859375 16.359375 C 5.203125 15.65625 4.234375 14.484375 3.625 12.15625 C 3.296875 10.84375 3.171875 9.359375 3.171875 8.03125 C 3.171875 4.265625 4.078125 1.625 5.796875 -0.25 C 5.921875 -0.375 5.921875 -0.40625 5.921875 -0.4375 C 5.921875 -0.578125 5.8125 -0.578125 5.75 -0.578125 C 5.53125 -0.578125 4.765625 0.28125 4.578125 0.5 C 3.109375 2.234375 2.1875 4.8125 2.1875 8.015625 C 2.1875 10.0625 2.53125 12.9375 4.421875 15.359375 C 4.5625 15.53125 5.5 16.625 5.75 16.625 C 5.8125 16.625 5.921875 16.625 5.921875 16.484375 Z M 5.921875 16.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph6-2">
<path style="stroke:none;" d="M 4.375 8.03125 C 4.375 6 4.015625 3.109375 2.140625 0.6875 C 2 0.515625 1.0625 -0.578125 0.796875 -0.578125 C 0.734375 -0.578125 0.625 -0.546875 0.625 -0.4375 C 0.625 -0.375 0.65625 -0.328125 0.71875 -0.28125 C 1.40625 0.453125 2.34375 1.625 2.921875 3.90625 C 3.25 5.203125 3.390625 6.6875 3.390625 8.015625 C 3.390625 9.46875 3.25 10.9375 2.890625 12.328125 C 2.34375 14.34375 1.484375 15.484375 0.765625 16.296875 C 0.625 16.421875 0.625 16.453125 0.625 16.484375 C 0.625 16.59375 0.734375 16.625 0.796875 16.625 C 1.015625 16.625 1.8125 15.75 1.984375 15.546875 C 3.4375 13.8125 4.375 11.234375 4.375 8.03125 Z M 4.375 8.03125 "/>
</symbol>
</g>
</defs>
<g id="surface1">
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="-0.232813" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="8.218357" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="13.681247" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="21.664057" y="23.33598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="30.339837" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="44.451937" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="51.021857" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-3" x="60.471871" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="75.384757" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="83.835927" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="89.298817" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="97.282017" y="23.33598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="102.762877" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="111.411713" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="125.523777" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="133.974947" y="15.26293"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="137.223777" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="142.686667" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="150.669867" y="23.33598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="156.142137" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="161.605027" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="171.369867" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="186.678867" y="11.48286"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="195.130037" y="6.28091"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="197.86604" y="6.28091"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="201.114807" y="11.48286"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="206.577697" y="11.48286"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="214.560897" y="13.63403"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="220.032767" y="11.48286"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1866.796875 613.984375 L 2255.039062 613.984375 " transform="matrix(0.1,0,0,-0.1,0,79)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-4" x="200.629" y="31.0309"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-5" x="207.649004" y="31.0309"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="226.6931" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="233.26302" y="15.26293"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="241.93919" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="257.24819" y="11.48286"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="265.69897" y="6.28091"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="268.434985" y="6.28091"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-0" x="271.170976" y="6.28091"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="274.42006" y="11.48286"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="279.88295" y="11.48286"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="287.86615" y="13.63403"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="293.34701" y="11.48286"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2572.460938 613.984375 L 2988.085938 613.984375 " transform="matrix(0.1,0,0,-0.1,0,79)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-6" x="272.566" y="31.0309"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-5" x="279.586004" y="31.0309"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="299.998" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="306.56792" y="15.26293"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="315.24409" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="329.35619" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="335.73705" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-0" x="342.11791" y="21.1852"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-3" x="60.47219" y="61.1899"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="81.19919" y="43.2532"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-0" x="75.38552" y="47.56414"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-1" x="76.384348" y="77.89424"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-3" x="82.360518" y="77.89424"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="90.109515" y="77.89424"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-0" x="99.694518" y="51.48804"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-4" x="108.145298" y="46.2771"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-1" x="112.015218" y="46.2771"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-5" x="117.991388" y="46.2771"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-0" x="122.374198" y="51.48804"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="127.837088" y="51.48804"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-0" x="135.820288" y="53.63921"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="141.301538" y="51.48804"/>
</g>
<path style="fill:none;stroke-width:5.76;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 996.953125 214.023438 L 1467.734375 214.023438 " transform="matrix(0.1,0,0,-0.1,0,79)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="117.082" y="71.02695"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-5" x="125.46989" y="71.02695"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="147.96089" y="61.18984"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-1" x="154.53081" y="55.26796"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="164.19683" y="61.18984"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="178.30893" y="61.18984"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-1" x="191.82693" y="49.57104"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="198.40584" y="61.18984"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-0" x="204.97615" y="55.26796"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-6" x="214.06599" y="55.26796"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-7" x="221.814994" y="55.26796"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-2" x="227.29609" y="49.57108"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="236.26015" y="61.18988"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,13 +1,13 @@
[book Math Toolkit
[quickbook 1.7]
[copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014, 2017 Nikhar Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker and Xiaogang Zhang]
[copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014, 2017 Nikhar Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker and Xiaogang Zhang]
[/purpose ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22]
[license
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
[@http://www.boost.org/LICENSE_1_0.txt])
]
[authors [Agrawal, Nikhar], [Bikineev, Anton], [Bristow, Paul A.], [Holin, Hubert], [Guazzone, Marco], [Kormanyos, Christopher], [Lalande, Bruno], [Maddock, John], [Murphy, Jeremy W.], [Råde, Johan], [Sobotta, Benjamin], [Sewani, Gautam], [Thompson, Nicholas], [van den Berg, Thijs], [Walker, Daryle], [Zhang, Xiaogang]]
[authors [Agrawal, Nikhar], [Bikineev, Anton], [Bristow, Paul A.], [Holin, Hubert], [Guazzone, Marco], [Kormanyos, Christopher], [Lalande, Bruno], [Maddock, John], [Murphy, Jeremy W.], [Pulver, Matthew], [Råde, Johan], [Sobotta, Benjamin], [Sewani, Gautam], [Thompson, Nicholas], [van den Berg, Thijs], [Walker, Daryle], [Zhang, Xiaogang]]
[/last-revision $Date$]
[version 2.9.0]
]
@@ -669,6 +669,7 @@ and as a CD ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22.
[include quadrature/double_exponential.qbk]
[include quadrature/naive_monte_carlo.qbk]
[include differentiation/numerical_differentiation.qbk]
[include differentiation/autodiff.qbk]
[include differentiation/lanczos_smoothing.qbk]
[endmathpart]

View File

@@ -137,6 +137,10 @@ test-suite examples :
[ run cubic_b_spline_example.cpp : : : [ requires cxx11_smart_ptr cxx11_hdr_random cxx11_defaulted_functions ] ]
[ compile naive_monte_carlo_example.cpp : [ requires cxx11_auto_declarations cxx11_lambdas cxx11_unified_initialization_syntax cxx11_hdr_thread cxx11_hdr_atomic cxx11_decltype cxx11_hdr_future cxx11_hdr_chrono cxx11_hdr_random cxx11_allocator ] ] # requires user input, can't run it, take a long time too!
[ run catmull_rom_example.cpp : : : [ requires cxx17_if_constexpr cxx11_auto_declarations cxx17_std_apply ] ] # Actually the C++17 features used is std::size, not if constexpr; looks like there isn't yet a test for it.
[ run autodiff_black_scholes.cpp : : : [ requires cxx11_inline_namespaces ] ]
[ run autodiff_fourth_power.cpp : : : [ requires cxx11_inline_namespaces ] ]
[ run autodiff_mixed_partials.cpp : : : [ requires cxx11_inline_namespaces ] ]
[ run autodiff_multiprecision.cpp : : : [ requires cxx11_inline_namespaces ] ]
;
run root_elliptic_finding.cpp /boost/timer : : : release <link>static [ requires cxx11_unified_initialization_syntax cxx11_defaulted_functions ] <target-os>freebsd:<linkflags>"-lrt" <target-os>linux:<linkflags>"-lrt -lpthread" ;

View File

@@ -0,0 +1,183 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
#include <boost/math/differentiation/autodiff.hpp>
#include <iostream>
using namespace boost::math::differentiation;
// Equations and function/variable names are from
// https://en.wikipedia.org/wiki/Greeks_(finance)#Formulas_for_European_option_Greeks
// Standard normal probability density function
template<typename X>
X phi(const X& x)
{
return boost::math::constants::one_div_root_two_pi<X>()*exp(-0.5*x*x);
}
// Standard normal cumulative distribution function
template<typename X>
X Phi(const X& x)
{
return 0.5*erfc(-boost::math::constants::one_div_root_two<X>()*x);
}
enum CP { call, put };
// Assume zero annual dividend yield (q=0).
template<typename Price,typename Sigma,typename Tau,typename Rate>
promote<Price,Sigma,Tau,Rate>
black_scholes_option_price(CP cp, double K, const Price& S, const Sigma& sigma, const Tau& tau, const Rate& r)
{
using namespace std;
const auto d1 = (log(S/K) + (r+sigma*sigma/2)*tau) / (sigma*sqrt(tau));
const auto d2 = (log(S/K) + (r-sigma*sigma/2)*tau) / (sigma*sqrt(tau));
if (cp == call)
return S*Phi(d1) - exp(-r*tau)*K*Phi(d2);
else
return exp(-r*tau)*K*Phi(-d2) - S*Phi(-d1);
}
int main()
{
const double K = 100.0; // Strike price.
const auto S = make_fvar<double,3>(105); // Stock price.
const auto sigma = make_fvar<double,0,3>(5); // Volatility.
const auto tau = make_fvar<double,0,0,1>(30.0/365); // Time to expiration in years. (30 days).
const auto r = make_fvar<double,0,0,0,1>(1.25/100); // Interest rate.
const auto call_price = black_scholes_option_price(call, K, S, sigma, tau, r);
const auto put_price = black_scholes_option_price(put, K, S, sigma, tau, r);
// Compare automatically calculated greeks by autodiff with formulas for greeks.
// https://en.wikipedia.org/wiki/Greeks_(finance)#Formulas_for_European_option_Greeks
const double d1 = static_cast<double>((log(S/K) + (r+sigma*sigma/2)*tau) / (sigma*sqrt(tau)));
const double d2 = static_cast<double>((log(S/K) + (r-sigma*sigma/2)*tau) / (sigma*sqrt(tau)));
const double formula_call_delta = +Phi(+d1);
const double formula_put_delta = -Phi(-d1);
const double formula_vega = static_cast<double>(S*phi(d1)*sqrt(tau));
const double formula_call_theta = static_cast<double>(-S*phi(d1)*sigma/(2*sqrt(tau))-r*K*exp(-r*tau)*Phi(+d2));
const double formula_put_theta = static_cast<double>(-S*phi(d1)*sigma/(2*sqrt(tau))+r*K*exp(-r*tau)*Phi(-d2));
const double formula_call_rho = static_cast<double>(+K*tau*exp(-r*tau)*Phi(+d2));
const double formula_put_rho = static_cast<double>(-K*tau*exp(-r*tau)*Phi(-d2));
const double formula_gamma = static_cast<double>(phi(d1)/(S*sigma*sqrt(tau)));
const double formula_vanna = static_cast<double>(-phi(d1)*d2/sigma);
const double formula_charm = static_cast<double>(phi(d1)*(d2*sigma*sqrt(tau)-2*r*tau)/(2*tau*sigma*sqrt(tau)));
const double formula_vomma = static_cast<double>(S*phi(d1)*sqrt(tau)*d1*d2/sigma);
const double formula_veta = static_cast<double>(-S*phi(d1)*sqrt(tau)*(r*d1/(sigma*sqrt(tau))-(1+d1*d2)/(2*tau)));
const double formula_speed = static_cast<double>(-phi(d1)*(d1/(sigma*sqrt(tau))+1)/(S*S*sigma*sqrt(tau)));
const double formula_zomma = static_cast<double>(phi(d1)*(d1*d2-1)/(S*sigma*sigma*sqrt(tau)));
const double formula_color =
static_cast<double>(-phi(d1)/(2*S*tau*sigma*sqrt(tau))*(1+(2*r*tau-d2*sigma*sqrt(tau))*d1/(sigma*sqrt(tau))));
const double formula_ultima = -formula_vega*static_cast<double>((d1*d2*(1-d1*d2)+d1*d1+d2*d2)/(sigma*sigma));
std::cout << std::setprecision(std::numeric_limits<double>::digits10)
<< "autodiff black-scholes call price = " << call_price.derivative(0,0,0,0) << '\n'
<< "autodiff black-scholes put price = " << put_price.derivative(0,0,0,0) << '\n'
<< "\n## First-order Greeks\n"
<< "autodiff call delta = " << call_price.derivative(1,0,0,0) << '\n'
<< " formula call delta = " << formula_call_delta << '\n'
<< "autodiff call vega = " << call_price.derivative(0,1,0,0) << '\n'
<< " formula call vega = " << formula_vega << '\n'
<< "autodiff call theta = " << -call_price.derivative(0,0,1,0) << '\n' // minus sign due to tau = T-time
<< " formula call theta = " << formula_call_theta << '\n'
<< "autodiff call rho = " << call_price.derivative(0,0,0,1) << '\n'
<< " formula call rho = " << formula_call_rho << '\n'
<< '\n'
<< "autodiff put delta = " << put_price.derivative(1,0,0,0) << '\n'
<< " formula put delta = " << formula_put_delta << '\n'
<< "autodiff put vega = " << put_price.derivative(0,1,0,0) << '\n'
<< " formula put vega = " << formula_vega << '\n'
<< "autodiff put theta = " << -put_price.derivative(0,0,1,0) << '\n'
<< " formula put theta = " << formula_put_theta << '\n'
<< "autodiff put rho = " << put_price.derivative(0,0,0,1) << '\n'
<< " formula put rho = " << formula_put_rho << '\n'
<< "\n## Second-order Greeks\n"
<< "autodiff call gamma = " << call_price.derivative(2,0,0,0) << '\n'
<< "autodiff put gamma = " << put_price.derivative(2,0,0,0) << '\n'
<< " formula gamma = " << formula_gamma << '\n'
<< "autodiff call vanna = " << call_price.derivative(1,1,0,0) << '\n'
<< "autodiff put vanna = " << put_price.derivative(1,1,0,0) << '\n'
<< " formula vanna = " << formula_vanna << '\n'
<< "autodiff call charm = " << -call_price.derivative(1,0,1,0) << '\n'
<< "autodiff put charm = " << -put_price.derivative(1,0,1,0) << '\n'
<< " formula charm = " << formula_charm << '\n'
<< "autodiff call vomma = " << call_price.derivative(0,2,0,0) << '\n'
<< "autodiff put vomma = " << put_price.derivative(0,2,0,0) << '\n'
<< " formula vomma = " << formula_vomma << '\n'
<< "autodiff call veta = " << call_price.derivative(0,1,1,0) << '\n'
<< "autodiff put veta = " << put_price.derivative(0,1,1,0) << '\n'
<< " formula veta = " << formula_veta << '\n'
<< "\n## Third-order Greeks\n"
<< "autodiff call speed = " << call_price.derivative(3,0,0,0) << '\n'
<< "autodiff put speed = " << put_price.derivative(3,0,0,0) << '\n'
<< " formula speed = " << formula_speed << '\n'
<< "autodiff call zomma = " << call_price.derivative(2,1,0,0) << '\n'
<< "autodiff put zomma = " << put_price.derivative(2,1,0,0) << '\n'
<< " formula zomma = " << formula_zomma << '\n'
<< "autodiff call color = " << call_price.derivative(2,0,1,0) << '\n'
<< "autodiff put color = " << put_price.derivative(2,0,1,0) << '\n'
<< " formula color = " << formula_color << '\n'
<< "autodiff call ultima = " << call_price.derivative(0,3,0,0) << '\n'
<< "autodiff put ultima = " << put_price.derivative(0,3,0,0) << '\n'
<< " formula ultima = " << formula_ultima << '\n'
;
return 0;
}
/*
Output:
autodiff black-scholes call price = 56.5136030677739
autodiff black-scholes put price = 51.4109161009333
## First-order Greeks
autodiff call delta = 0.773818444921273
formula call delta = 0.773818444921274
autodiff call vega = 9.05493427705736
formula call vega = 9.05493427705736
autodiff call theta = -275.73013426444
formula call theta = -275.73013426444
autodiff call rho = 2.03320550539396
formula call rho = 2.03320550539396
autodiff put delta = -0.226181555078726
formula put delta = -0.226181555078726
autodiff put vega = 9.05493427705736
formula put vega = 9.05493427705736
autodiff put theta = -274.481417851526
formula put theta = -274.481417851526
autodiff put rho = -6.17753255212599
formula put rho = -6.17753255212599
## Second-order Greeks
autodiff call gamma = 0.00199851912993254
autodiff put gamma = 0.00199851912993254
formula gamma = 0.00199851912993254
autodiff call vanna = 0.0410279463126531
autodiff put vanna = 0.0410279463126531
formula vanna = 0.0410279463126531
autodiff call charm = -1.2505564233679
autodiff put charm = -1.2505564233679
formula charm = -1.2505564233679
autodiff call vomma = -0.928114149313108
autodiff put vomma = -0.928114149313108
formula vomma = -0.928114149313107
autodiff call veta = 26.7947073115641
autodiff put veta = 26.7947073115641
formula veta = 26.7947073115641
## Third-order Greeks
autodiff call speed = -2.90117322380992e-05
autodiff put speed = -2.90117322380992e-05
formula speed = -2.90117322380992e-05
autodiff call zomma = -0.000604548369901419
autodiff put zomma = -0.000604548369901419
formula zomma = -0.000604548369901419
autodiff call color = -0.0184014426606065
autodiff put color = -0.0184014426606065
formula color = -0.0184014426606065
autodiff call ultima = -0.0922426864775683
autodiff put ultima = -0.0922426864775683
formula ultima = -0.0922426864775685
**/

View File

@@ -0,0 +1,35 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
#include <boost/math/differentiation/autodiff.hpp>
#include <iostream>
template<typename T>
T fourth_power(T x)
{
x *= x;
return x *= x;
}
int main()
{
using namespace boost::math::differentiation;
constexpr int Order=5; // The highest order derivative to be calculated.
const autodiff_fvar<double,Order> x = make_fvar<double,Order>(2.0); // Find derivatives at x=2.
const autodiff_fvar<double,Order> y = fourth_power(x);
for (int i=0 ; i<=Order ; ++i)
std::cout << "y.derivative("<<i<<") = " << y.derivative(i) << std::endl;
return 0;
}
/*
Output:
y.derivative(0) = 16
y.derivative(1) = 32
y.derivative(2) = 48
y.derivative(3) = 48
y.derivative(4) = 24
y.derivative(5) = 0
**/

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,46 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
#include <boost/math/differentiation/autodiff.hpp>
#include <boost/multiprecision/cpp_bin_float.hpp>
#include <iostream>
template<typename T>
T f(const T& w, const T& x, const T& y, const T& z)
{
using namespace std;
return exp(w*sin(x*log(y)/z) + sqrt(w*z/(x*y))) + w*w/tan(z);
}
int main()
{
using cpp_bin_float_50 = boost::multiprecision::cpp_bin_float_50;
using namespace boost::math::differentiation;
constexpr int Nw=3; // Max order of derivative to calculate for w
constexpr int Nx=2; // Max order of derivative to calculate for x
constexpr int Ny=4; // Max order of derivative to calculate for y
constexpr int Nz=3; // Max order of derivative to calculate for z
using var = autodiff_fvar<cpp_bin_float_50,Nw,Nx,Ny,Nz>;
const var w = make_fvar<cpp_bin_float_50,Nw>(11);
const var x = make_fvar<cpp_bin_float_50,0,Nx>(12);
const var y = make_fvar<cpp_bin_float_50,0,0,Ny>(13);
const var z = make_fvar<cpp_bin_float_50,0,0,0,Nz>(14);
const var v = f(w,x,y,z);
// Calculated from Mathematica symbolic differentiation.
const cpp_bin_float_50 answer("1976.319600747797717779881875290418720908121189218755");
std::cout << std::setprecision(std::numeric_limits<cpp_bin_float_50>::digits10)
<< "mathematica : " << answer << '\n'
<< "autodiff : " << v.derivative(Nw,Nx,Ny,Nz) << '\n'
<< "relative error: " << std::setprecision(3) << (v.derivative(Nw,Nx,Ny,Nz)/answer-1)
<< std::endl;
return 0;
}
/*
Output:
mathematica : 1976.3196007477977177798818752904187209081211892188
autodiff : 1976.3196007477977177798818752904187209081211892188
relative error: 2.67e-50
**/

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,224 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
// Contributors:
// * Kedar R. Bhat - C++11 compatibility.
// Notes:
// * Any changes to this file should always be downstream from autodiff.cpp.
// C++17 is a higher-level language and is easier to maintain. For example, a number of functions which are
// lucidly read in autodiff.cpp are forced to be split into multiple structs/functions in this file for C++11.
// * Use of typename RootType and SizeType is a hack to prevent Visual Studio 2015 from compiling functions
// that are never called, that would otherwise produce compiler errors.
#ifndef BOOST_MATH_DIFFERENTIATION_AUTODIFF_HPP
# error "Do not #include this file directly. This should only be #included by autodiff.hpp for C++11 compatibility."
#endif
namespace boost { namespace math { namespace differentiation { inline namespace autodiff_v1 {
namespace detail {
template<typename RealType, size_t Order>
fvar<RealType,Order>::fvar(const root_type& ca, const bool is_variable)
{
fvar_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{}, ca, is_variable);
}
template<typename RealType, size_t Order>
template<typename RootType>
void fvar<RealType,Order>::fvar_cpp11(std::true_type, const RootType& ca, const bool is_variable)
{
v.front() = RealType(ca, is_variable);
if (0 < Order)
std::fill(v.begin()+1, v.end(), static_cast<RealType>(0));
}
template<typename RealType, size_t Order>
template<typename RootType>
void fvar<RealType,Order>::fvar_cpp11(std::false_type, const RootType& ca, const bool is_variable)
{
v.front() = ca;
if (0 < Order)
{
v[1] = static_cast<root_type>(static_cast<int>(is_variable));
if (1 < Order)
std::fill(v.begin()+2, v.end(), static_cast<RealType>(0));
}
}
template<typename RealType, size_t Order>
template<typename... Orders>
get_type_at<RealType, sizeof...(Orders)>
fvar<RealType,Order>::at_cpp11(std::true_type, size_t order, Orders... orders) const
{
return v.at(order);
}
template<typename RealType, size_t Order>
template<typename... Orders>
get_type_at<RealType, sizeof...(Orders)>
fvar<RealType,Order>::at_cpp11(std::false_type, size_t order, Orders... orders) const
{
return v.at(order).at(orders...);
}
// Can throw "std::out_of_range: array::at: __n (which is 7) >= _Nm (which is 7)"
template<typename RealType, size_t Order>
template<typename... Orders>
get_type_at<RealType,sizeof...(Orders)> fvar<RealType,Order>::at(size_t order, Orders... orders) const
{
return at_cpp11(std::integral_constant<bool,sizeof...(orders)==0>{}, order, orders...);
}
template<typename T, typename... Ts>
constexpr T product(Ts... factors)
{
return 1;
}
template<typename T, typename... Ts>
constexpr T product(T factor, Ts... factors)
{
return factor * product<T>(factors...);
}
// Can throw "std::out_of_range: array::at: __n (which is 7) >= _Nm (which is 7)"
template<typename RealType, size_t Order>
template<typename... Orders>
get_type_at<fvar<RealType,Order>,sizeof...(Orders)> fvar<RealType,Order>::derivative(Orders... orders) const
{
static_assert(sizeof...(Orders) <= depth, "Number of parameters to derivative(...) cannot exceed fvar::depth.");
return at(orders...) * product(boost::math::factorial<root_type>(orders)...);
}
template<typename RealType, size_t Order>
template<typename SizeType>
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply_cpp11(std::true_type,
SizeType z0, size_t isum0, const fvar<RealType,Order>& cr, size_t z1, size_t isum1) const
{
const RealType zero(0);
const size_t m0 = order_sum + isum0 < Order + z0 ? Order + z0 - (order_sum + isum0) : 0;
const size_t m1 = order_sum + isum1 < Order + z1 ? Order + z1 - (order_sum + isum1) : 0;
const size_t i_max = m0 + m1 < Order ? Order - (m0 + m1) : 0;
fvar<RealType,Order> retval = fvar<RealType,Order>();
for (size_t i=0, j=Order ; i<=i_max ; ++i, --j)
retval.v[j] = epsilon_inner_product(z0, isum0, m0, cr, z1, isum1, m1, j);
return retval;
}
template<typename RealType, size_t Order>
template<typename SizeType>
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply_cpp11(std::false_type,
SizeType z0, size_t isum0, const fvar<RealType,Order>& cr, size_t z1, size_t isum1) const
{
const RealType zero(0);
const size_t m0 = order_sum + isum0 < Order + z0 ? Order + z0 - (order_sum + isum0) : 0;
const size_t m1 = order_sum + isum1 < Order + z1 ? Order + z1 - (order_sum + isum1) : 0;
const size_t i_max = m0 + m1 < Order ? Order - (m0 + m1) : 0;
fvar<RealType,Order> retval = fvar<RealType,Order>();
for (size_t i=0, j=Order ; i<=i_max ; ++i, --j)
retval.v[j] = std::inner_product(v.cbegin()+m0, v.cend()-(i+m1), cr.v.crbegin()+(i+m0), zero);
return retval;
}
template<typename RealType, size_t Order>
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply(size_t z0, size_t isum0,
const fvar<RealType,Order>& cr, size_t z1, size_t isum1) const
{
return epsilon_multiply_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{},
z0, isum0, cr, z1, isum1);
}
template<typename RealType, size_t Order>
template<typename SizeType>
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply_cpp11(std::true_type,
SizeType z0, size_t isum0, const root_type& ca) const
{
fvar<RealType,Order> retval(*this);
const size_t m0 = order_sum + isum0 < Order + z0 ? Order + z0 - (order_sum + isum0) : 0;
for (size_t i=m0 ; i<=Order ; ++i)
retval.v[i] = retval.v[i].epsilon_multiply(z0, isum0+i, ca);
return retval;
}
template<typename RealType, size_t Order>
template<typename SizeType>
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply_cpp11(std::false_type,
SizeType z0, size_t isum0, const root_type& ca) const
{
fvar<RealType,Order> retval(*this);
const size_t m0 = order_sum + isum0 < Order + z0 ? Order + z0 - (order_sum + isum0) : 0;
for (size_t i=m0 ; i<=Order ; ++i)
if (retval.v[i] != static_cast<RealType>(0))
retval.v[i] *= ca;
return retval;
}
template<typename RealType, size_t Order>
fvar<RealType,Order> fvar<RealType,Order>::epsilon_multiply(size_t z0, size_t isum0,
const root_type& ca) const
{
return epsilon_multiply_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{}, z0, isum0, ca);
}
template<typename RealType, size_t Order>
template<typename RootType>
fvar<RealType,Order>& fvar<RealType,Order>::multiply_assign_by_root_type_cpp11(std::true_type,
bool is_root, const RootType& ca)
{
auto itr = v.begin();
itr->multiply_assign_by_root_type(is_root, ca);
for (++itr ; itr!=v.end() ; ++itr)
itr->multiply_assign_by_root_type(false, ca);
return *this;
}
template<typename RealType, size_t Order>
template<typename RootType>
fvar<RealType,Order>& fvar<RealType,Order>::multiply_assign_by_root_type_cpp11(std::false_type,
bool is_root, const RootType& ca)
{
auto itr = v.begin();
if (is_root || *itr != 0)
*itr *= ca; // Skip multiplication of 0 by ca=inf to avoid nan. Exception: root value is always multiplied.
for (++itr ; itr!=v.end() ; ++itr)
if (*itr != 0)
*itr *= ca;
return *this;
}
template<typename RealType, size_t Order>
fvar<RealType,Order>& fvar<RealType,Order>::multiply_assign_by_root_type(bool is_root, const root_type& ca)
{
return multiply_assign_by_root_type_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{},
is_root, ca);
}
template<typename RealType, size_t Order>
template<typename RootType>
fvar<RealType,Order>& fvar<RealType,Order>::set_root_cpp11(std::true_type, const RootType& root)
{
v.front().set_root(root);
return *this;
}
template<typename RealType, size_t Order>
template<typename RootType>
fvar<RealType,Order>& fvar<RealType,Order>::set_root_cpp11(std::false_type, const RootType& root)
{
v.front() = root;
return *this;
}
template<typename RealType, size_t Order>
fvar<RealType,Order>& fvar<RealType,Order>::set_root(const root_type& root)
{
return set_root_cpp11(std::integral_constant<bool,is_fvar<RealType>::value>{}, root);
}
} // namespace detail
} } } } // namespace boost::math::differentiation::autodiff_v1

View File

@@ -1241,6 +1241,10 @@ test-suite quadrature :
[ run test_numerical_differentiation.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_auto_declarations cxx11_constexpr ] ]
[ run compile_test/numerical_differentiation_incl_test.cpp compile_test_main : : : [ requires cxx11_auto_declarations cxx11_constexpr ] ]
[ compile compile_test/numerical_differentiation_concept_test.cpp : [ requires cxx11_auto_declarations cxx11_constexpr ] ]
[ run test_autodiff_1.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_inline_namespaces ] ]
[ run test_autodiff_2.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_inline_namespaces ] ]
[ run test_autodiff_3.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_inline_namespaces ] ]
[ run test_autodiff_4.cpp ../../test/build//boost_unit_test_framework : : : <toolset>msvc:<cxxflags>/bigobj [ requires cxx11_inline_namespaces ] ]
;
build-project ../example ;

72
test/test_autodiff.hpp Normal file
View File

@@ -0,0 +1,72 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
#include <boost/fusion/include/algorithm.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/math/differentiation/autodiff.hpp>
#include <boost/math/special_functions/factorials.hpp>
#include <boost/math/special_functions/fpclassify.hpp> // isnan
#include <boost/math/special_functions/round.hpp> // iround
#include <boost/math/special_functions/trunc.hpp> // itrunc
//#include <boost/multiprecision/cpp_bin_float.hpp>
#define BOOST_TEST_MODULE test_autodiff
#include <boost/test/included/unit_test.hpp>
#include <sstream>
//boost::fusion::vector<float,double,long double,boost::multiprecision::cpp_bin_float_50> bin_float_types;
boost::fusion::vector<float,double,long double> bin_float_types; // cpp_bin_float_50 is fixed in boost 1.70
// cpp_dec_float_50 cannot be used with close_at_tolerance
//boost::fusion::vector<boost::multiprecision::cpp_dec_float_50>
boost::fusion::vector<> multiprecision_float_types;
using namespace boost::math::differentiation;
template<typename W,typename X,typename Y,typename Z>
promote<W,X,Y,Z> mixed_partials_f(const W& w, const X& x, const Y& y, const Z& z)
{
return exp(w*sin(x*log(y)/z) + sqrt(w*z/(x*y))) + w*w/tan(z);
}
// Equations and function/variable names are from
// https://en.wikipedia.org/wiki/Greeks_(finance)#Formulas_for_European_option_Greeks
//
// Standard normal probability density function
template<typename T>
T phi(const T& x)
{
return boost::math::constants::one_div_root_two_pi<T>()*exp(-0.5*x*x);
}
// Standard normal cumulative distribution function
template<typename T>
T Phi(const T& x)
{
return 0.5*erfc(-boost::math::constants::one_div_root_two<T>()*x);
}
enum CP { call, put };
// Assume zero annual dividend yield (q=0).
template<typename Price,typename Sigma,typename Tau,typename Rate>
promote<Price,Sigma,Tau,Rate>
black_scholes_option_price(CP cp, double K, const Price& S, const Sigma& sigma, const Tau& tau, const Rate& r)
{
const auto d1 = (log(S/K) + (r+sigma*sigma/2)*tau) / (sigma*sqrt(tau));
const auto d2 = (log(S/K) + (r-sigma*sigma/2)*tau) / (sigma*sqrt(tau));
static_assert(std::is_same<decltype(S*Phi(d1) - exp(-r*tau)*K*Phi(d2)),
decltype(exp(-r*tau)*K*Phi(-d2) - S*Phi(-d1))>::value, "decltype(call) != decltype(put)");
if (cp == call)
return S*Phi(d1) - exp(-r*tau)*K*Phi(d2);
else
return exp(-r*tau)*K*Phi(-d2) - S*Phi(-d1);
}
template<typename T>
T uncast_return(const T& x)
{
return x == 0 ? 0 : 1;
}

917
test/test_autodiff_1.cpp Normal file
View File

@@ -0,0 +1,917 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
#include "test_autodiff.hpp"
BOOST_AUTO_TEST_SUITE(test_autodiff_1)
struct constructors_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
// Verify value-initialized instance has all 0 entries.
const autodiff_fvar<T,m> empty1 = autodiff_fvar<T,m>();
for (int i=0 ; i<=m ; ++i)
BOOST_REQUIRE(empty1.derivative(i) == 0.0);
const auto empty2 = autodiff_fvar<T,m,n>();
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
BOOST_REQUIRE(empty2.derivative(i,j) == 0.0);
// Single variable
constexpr float cx = 10.0;
const auto x = make_fvar<T,m>(cx);
for (int i=0 ; i<=m ; ++i)
if (i==0)
BOOST_REQUIRE(x.derivative(i) == cx);
else if (i==1)
BOOST_REQUIRE(x.derivative(i) == 1.0);
else
BOOST_REQUIRE(x.derivative(i) == 0.0);
const autodiff_fvar<T,n> xn = x;
for (int i=0 ; i<=n ; ++i)
if (i==0)
BOOST_REQUIRE(xn.derivative(i) == cx);
else if (i==1)
BOOST_REQUIRE(xn.derivative(i) == 1.0);
else
BOOST_REQUIRE(xn.derivative(i) == 0.0);
// Second independent variable
constexpr float cy = 100.0;
const auto y = make_fvar<T,m,n>(cy);
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(y.derivative(i,j) == cy);
else if (i==0 && j==1)
BOOST_REQUIRE(y.derivative(i,j) == 1.0);
else
BOOST_REQUIRE(y.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(constructors)
{
boost::fusion::for_each(bin_float_types, constructors_test());
boost::fusion::for_each(multiprecision_float_types, constructors_test());
}
struct implicit_constructors_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
const autodiff_fvar<T,m> x = 3;
const autodiff_fvar<T,m> one = uncast_return(x);
const autodiff_fvar<T,m> two_and_a_half = 2.5;
BOOST_REQUIRE(static_cast<T>(x) == 3.0);
BOOST_REQUIRE(static_cast<T>(one) == 1.0);
BOOST_REQUIRE(static_cast<T>(two_and_a_half) == 2.5);
}
};
BOOST_AUTO_TEST_CASE(implicit_constructors)
{
boost::fusion::for_each(bin_float_types, implicit_constructors_test());
boost::fusion::for_each(multiprecision_float_types, implicit_constructors_test());
}
struct assignment_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 10.0;
constexpr float cy = 10.0;
autodiff_fvar<T,m,n> empty; // Uninitialized variable<> may have non-zero values.
// Single variable
auto x = make_fvar<T,m>(cx);
empty = static_cast<decltype(empty)>(x); // Test static_cast of single-variable to double-variable type.
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(empty.derivative(i,j) == cx);
else if (i==1 && j==0)
BOOST_REQUIRE(empty.derivative(i,j) == 1.0);
else
BOOST_REQUIRE(empty.derivative(i,j) == 0.0);
auto y = make_fvar<T,m,n>(cy);
empty = y; // default assignment operator
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(empty.derivative(i,j) == cy);
else if (i==0 && j==1)
BOOST_REQUIRE(empty.derivative(i,j) == 1.0);
else
BOOST_REQUIRE(empty.derivative(i,j) == 0.0);
empty = cx; // set a constant
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(empty.derivative(i,j) == cx);
else
BOOST_REQUIRE(empty.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(assignment)
{
boost::fusion::for_each(bin_float_types, assignment_test());
boost::fusion::for_each(multiprecision_float_types, assignment_test());
}
struct ostream_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
const T cx = 10;
const auto x = make_fvar<T,m>(cx);
std::ostringstream ss;
ss << "x = " << x;
BOOST_REQUIRE(ss.str() == "x = depth(1)(10,1,0,0)");
}
};
BOOST_AUTO_TEST_CASE(ostream)
{
boost::fusion::for_each(bin_float_types, ostream_test());
boost::fusion::for_each(multiprecision_float_types, ostream_test());
}
struct addition_assignment_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 10.0;
auto sum = autodiff_fvar<T,m,n>(); // zero-initialized
// Single variable
const auto x = make_fvar<T,m>(cx);
sum += x;
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(sum.derivative(i,j) == cx);
else if (i==1 && j==0)
BOOST_REQUIRE(sum.derivative(i,j) == 1.0);
else
BOOST_REQUIRE(sum.derivative(i,j) == 0.0);
// Arithmetic constant
constexpr float cy = 11.0;
sum = 0;
sum += cy;
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(sum.derivative(i,j) == cy);
else
BOOST_REQUIRE(sum.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(addition_assignment)
{
boost::fusion::for_each(bin_float_types, addition_assignment_test());
boost::fusion::for_each(multiprecision_float_types, addition_assignment_test());
}
struct subtraction_assignment_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 10.0;
auto sum = autodiff_fvar<T,m,n>(); // zero-initialized
// Single variable
const auto x = make_fvar<T,m>(cx);
sum -= x;
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(sum.derivative(i,j) == -cx);
else if (i==1 && j==0)
BOOST_REQUIRE(sum.derivative(i,j) == -1.0);
else
BOOST_REQUIRE(sum.derivative(i,j) == 0.0);
// Arithmetic constant
constexpr float cy = 11.0;
sum = 0;
sum -= cy;
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(sum.derivative(i,j) == -cy);
else
BOOST_REQUIRE(sum.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(subtraction_assignment)
{
boost::fusion::for_each(bin_float_types, subtraction_assignment_test());
boost::fusion::for_each(multiprecision_float_types, subtraction_assignment_test());
}
// Try explicit bracing based on feedback. Doesn't add very much except 26 extra lines.
struct multiplication_assignment_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 10.0;
auto product = autodiff_fvar<T,m,n>(1); // unit constant
// Single variable
auto x = make_fvar<T,m>(cx);
product *= x;
for (int i=0 ; i<=m ; ++i)
{
for (int j=0 ; j<=n ; ++j)
{
if (i==0 && j==0)
{
BOOST_REQUIRE(product.derivative(i,j) == cx);
}
else if (i==1 && j==0)
{
BOOST_REQUIRE(product.derivative(i,j) == 1.0);
}
else
{
BOOST_REQUIRE(product.derivative(i,j) == 0.0);
}
}
}
// Arithmetic constant
constexpr float cy = 11.0;
product = 1;
product *= cy;
for (int i=0 ; i<=m ; ++i)
{
for (int j=0 ; j<=n ; ++j)
{
if (i==0 && j==0)
{
BOOST_REQUIRE(product.derivative(i,j) == cy);
}
else
{
BOOST_REQUIRE(product.derivative(i,j) == 0.0);
}
}
}
// 0 * inf = nan
x = make_fvar<T,m>(0.0);
x *= std::numeric_limits<T>::infinity();
//std::cout << "x = " << x << std::endl;
for (int i=0 ; i<=m ; ++i)
{
if (i==0)
{
BOOST_REQUIRE(boost::math::isnan(static_cast<T>(x))); // Correct
//BOOST_REQUIRE(x.derivative(i) == 0.0); // Wrong. See multiply_assign_by_root_type().
}
else if (i==1)
{
BOOST_REQUIRE(boost::math::isinf(x.derivative(i)));
}
else
{
BOOST_REQUIRE(x.derivative(i) == 0.0);
}
}
}
};
BOOST_AUTO_TEST_CASE(multiplication_assignment)
{
boost::fusion::for_each(bin_float_types, multiplication_assignment_test());
boost::fusion::for_each(multiprecision_float_types, multiplication_assignment_test());
}
struct division_assignment_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 16.0;
auto quotient = autodiff_fvar<T,m,n>(1); // unit constant
// Single variable
const auto x = make_fvar<T,m>(cx);
quotient /= x;
BOOST_REQUIRE(quotient.derivative(0,0) == 1/cx);
BOOST_REQUIRE(quotient.derivative(1,0) == -1/std::pow(cx,2));
BOOST_REQUIRE(quotient.derivative(2,0) == 2/std::pow(cx,3));
BOOST_REQUIRE(quotient.derivative(3,0) == -6/std::pow(cx,4));
for (int i=0 ; i<=m ; ++i)
for (int j=1 ; j<=n ; ++j)
BOOST_REQUIRE(quotient.derivative(i,j) == 0.0);
// Arithmetic constant
constexpr float cy = 32.0;
quotient = 1;
quotient /= cy;
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(quotient.derivative(i,j) == 1/cy);
else
BOOST_REQUIRE(quotient.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(division_assignment)
{
boost::fusion::for_each(bin_float_types, division_assignment_test());
boost::fusion::for_each(multiprecision_float_types, division_assignment_test());
}
struct unary_signs_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 16.0;
autodiff_fvar<T,m,n> lhs;
// Single variable
const auto x = make_fvar<T,m>(cx);
lhs = static_cast<decltype(lhs)>(-x);
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(lhs.derivative(i,j) == -cx);
else if (i==1 && j==0)
BOOST_REQUIRE(lhs.derivative(i,j) == -1.0);
else
BOOST_REQUIRE(lhs.derivative(i,j) == 0.0);
lhs = static_cast<decltype(lhs)>(+x);
for (int i=0 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
if (i==0 && j==0)
BOOST_REQUIRE(lhs.derivative(i,j) == cx);
else if (i==1 && j==0)
BOOST_REQUIRE(lhs.derivative(i,j) == 1.0);
else
BOOST_REQUIRE(lhs.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(unary_signs)
{
boost::fusion::for_each(bin_float_types, unary_signs_test());
boost::fusion::for_each(multiprecision_float_types, unary_signs_test());
}
// TODO 3 tests for 3 operator+() definitions.
struct cast_double_test
{
template<typename T>
void operator()(const T&) const
{
constexpr float ca = 13.0;
constexpr int i = 12;
constexpr int m = 3;
const auto x = make_fvar<T,m>(ca);
BOOST_REQUIRE(i < x);
BOOST_REQUIRE(i*x == i*ca);
}
};
BOOST_AUTO_TEST_CASE(cast_double)
{
boost::fusion::for_each(bin_float_types, cast_double_test());
boost::fusion::for_each(multiprecision_float_types, cast_double_test());
}
struct int_double_casting_test
{
template<typename T>
void operator()(const T&) const
{
constexpr float ca = 3.0;
const auto x0 = make_fvar<T,0>(ca);
BOOST_REQUIRE(static_cast<T>(x0) == ca);
const auto x1 = make_fvar<T,1>(ca);
BOOST_REQUIRE(static_cast<T>(x1) == ca);
const auto x2 = make_fvar<T,2>(ca);
BOOST_REQUIRE(static_cast<T>(x2) == ca);
}
};
BOOST_AUTO_TEST_CASE(int_double_casting)
{
boost::fusion::for_each(bin_float_types, int_double_casting_test());
boost::fusion::for_each(multiprecision_float_types, int_double_casting_test());
}
struct scalar_addition_test
{
template<typename T>
void operator()(const T&) const
{
constexpr float ca = 3.0;
constexpr float cb = 4.0;
const auto sum0 = autodiff_fvar<T,0>(ca) + autodiff_fvar<T,0>(cb);
BOOST_REQUIRE(ca+cb == static_cast<T>(sum0));
const auto sum1 = autodiff_fvar<T,0>(ca) + cb;
BOOST_REQUIRE(ca+cb == static_cast<T>(sum1));
const auto sum2 = ca + autodiff_fvar<T,0>(cb);
BOOST_REQUIRE(ca+cb == static_cast<T>(sum2));
}
};
BOOST_AUTO_TEST_CASE(scalar_addition)
{
boost::fusion::for_each(bin_float_types, scalar_addition_test());
boost::fusion::for_each(multiprecision_float_types, scalar_addition_test());
}
struct power8_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int n = 8;
constexpr float ca = 3.0;
auto x = make_fvar<T,n>(ca);
// Test operator*=()
x *= x;
x *= x;
x *= x;
const T power_factorial = boost::math::factorial<T>(n);
for (int i=0 ; i<=n ; ++i)
BOOST_CHECK(static_cast<T>(x.derivative(i)) == static_cast<T>(power_factorial/boost::math::factorial<T>(n-i)*std::pow(ca,n-i)));
x = make_fvar<T,n>(ca);
// Test operator*()
x = x*x*x*x * x*x*x*x;
for (int i=0 ; i<=n ; ++i)
BOOST_REQUIRE(x.derivative(i) == power_factorial/boost::math::factorial<T>(n-i)*std::pow(ca,n-i));
}
};
BOOST_AUTO_TEST_CASE(power8)
{
boost::fusion::for_each(bin_float_types, power8_test());
boost::fusion::for_each(multiprecision_float_types, power8_test());
}
struct dim1_multiplication_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 2;
constexpr int n = 3;
constexpr float cy = 4.0;
auto y0 = make_fvar<T,m>(cy);
auto y = make_fvar<T,n>(cy);
y *= y0;
BOOST_REQUIRE(y.derivative(0) == cy*cy);
BOOST_REQUIRE(y.derivative(1) == 2*cy);
BOOST_REQUIRE(y.derivative(2) == 2.0);
BOOST_REQUIRE(y.derivative(3) == 0.0);
y = y * cy;
BOOST_REQUIRE(y.derivative(0) == cy*cy*cy);
BOOST_REQUIRE(y.derivative(1) == 2*cy*cy);
BOOST_REQUIRE(y.derivative(2) == 2.0*cy);
BOOST_REQUIRE(y.derivative(3) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(dim1_multiplication)
{
boost::fusion::for_each(bin_float_types, dim1_multiplication_test());
boost::fusion::for_each(multiprecision_float_types, dim1_multiplication_test());
}
struct dim1and2_multiplication_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 2;
constexpr int n = 3;
constexpr float cx = 3.0;
constexpr float cy = 4.0;
auto x = make_fvar<T,m>(cx);
auto y = make_fvar<T,m,n>(cy);
y *= x;
BOOST_REQUIRE(y.derivative(0,0) == cx*cy);
BOOST_REQUIRE(y.derivative(0,1) == cx);
BOOST_REQUIRE(y.derivative(1,0) == cy);
BOOST_REQUIRE(y.derivative(1,1) == 1.0);
for (int i=1 ; i<m ; ++i)
for (int j=1 ; j<n ; ++j)
if (i==1 && j==1)
BOOST_REQUIRE(y.derivative(i,j) == 1.0);
else
BOOST_REQUIRE(y.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(dim1and2_multiplication)
{
boost::fusion::for_each(bin_float_types, dim1and2_multiplication_test());
boost::fusion::for_each(multiprecision_float_types, dim1and2_multiplication_test());
}
struct dim2_addition_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 2;
constexpr int n = 3;
constexpr float cx = 3.0;
const auto x = make_fvar<T,m>(cx);
BOOST_REQUIRE(x.derivative(0) == cx);
BOOST_REQUIRE(x.derivative(1) == 1.0);
BOOST_REQUIRE(x.derivative(2) == 0.0);
constexpr float cy = 4.0;
const auto y = make_fvar<T,m,n>(cy);
BOOST_REQUIRE(static_cast<T>(y.derivative(0)) == cy);
BOOST_REQUIRE(static_cast<T>(y.derivative(1)) == 0.0); // partial of y w.r.t. x.
BOOST_REQUIRE(y.derivative(0,0) == cy);
BOOST_REQUIRE(y.derivative(0,1) == 1.0);
BOOST_REQUIRE(y.derivative(1,0) == 0.0);
BOOST_REQUIRE(y.derivative(1,1) == 0.0);
const auto z = x + y;
BOOST_REQUIRE(z.derivative(0,0) == cx + cy);
BOOST_REQUIRE(z.derivative(0,1) == 1.0);
BOOST_REQUIRE(z.derivative(1,0) == 1.0);
BOOST_REQUIRE(z.derivative(1,1) == 0.0);
// The following 4 are unnecessarily more expensive than the previous 4.
BOOST_REQUIRE(z.derivative(0).derivative(0) == cx + cy);
BOOST_REQUIRE(z.derivative(0).derivative(1) == 1.0);
BOOST_REQUIRE(z.derivative(1).derivative(0) == 1.0);
BOOST_REQUIRE(z.derivative(1).derivative(1) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(dim2_addition)
{
boost::fusion::for_each(bin_float_types, dim2_addition_test());
boost::fusion::for_each(multiprecision_float_types, dim2_addition_test());
}
struct dim2_multiplication_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 6.0;
const auto x = make_fvar<T,m>(cx);
constexpr float cy = 5.0;
const auto y = make_fvar<T,0,n>(cy);
const auto z = x*x * y*y*y;
BOOST_REQUIRE(z.derivative(0,0) == cx*cx * cy*cy*cy); // x^2 * y^3
BOOST_REQUIRE(z.derivative(0,1) == cx*cx * 3*cy*cy); // x^2 * 3y^2
BOOST_REQUIRE(z.derivative(0,2) == cx*cx * 6*cy); // x^2 * 6y
BOOST_REQUIRE(z.derivative(0,3) == cx*cx * 6); // x^2 * 6
BOOST_REQUIRE(z.derivative(0,4) == 0.0); // x^2 * 0
BOOST_REQUIRE(z.derivative(1,0) == 2*cx * cy*cy*cy); // 2x * y^3
BOOST_REQUIRE(z.derivative(1,1) == 2*cx * 3*cy*cy); // 2x * 3y^2
BOOST_REQUIRE(z.derivative(1,2) == 2*cx * 6*cy); // 2x * 6y
BOOST_REQUIRE(z.derivative(1,3) == 2*cx * 6); // 2x * 6
BOOST_REQUIRE(z.derivative(1,4) == 0.0); // 2x * 0
BOOST_REQUIRE(z.derivative(2,0) == 2 * cy*cy*cy); // 2 * y^3
BOOST_REQUIRE(z.derivative(2,1) == 2 * 3*cy*cy); // 2 * 3y^2
BOOST_REQUIRE(z.derivative(2,2) == 2 * 6*cy); // 2 * 6y
BOOST_REQUIRE(z.derivative(2,3) == 2 * 6); // 2 * 6
BOOST_REQUIRE(z.derivative(2,4) == 0.0); // 2 * 0
BOOST_REQUIRE(z.derivative(3,0) == 0.0); // 0 * y^3
BOOST_REQUIRE(z.derivative(3,1) == 0.0); // 0 * 3y^2
BOOST_REQUIRE(z.derivative(3,2) == 0.0); // 0 * 6y
BOOST_REQUIRE(z.derivative(3,3) == 0.0); // 0 * 6
BOOST_REQUIRE(z.derivative(3,4) == 0.0); // 0 * 0
}
};
BOOST_AUTO_TEST_CASE(dim2_multiplication)
{
boost::fusion::for_each(bin_float_types, dim2_multiplication_test());
boost::fusion::for_each(multiprecision_float_types, dim2_multiplication_test());
}
struct dim2_multiplication_and_subtraction_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 6.0;
const auto x = make_fvar<T,m>(cx);
constexpr float cy = 5.0;
const auto y = make_fvar<T,0,n>(cy);
const auto z = x*x - y*y;
BOOST_REQUIRE(z.derivative(0,0) == cx*cx - cy*cy);
BOOST_REQUIRE(z.derivative(0,1) == -2*cy);
BOOST_REQUIRE(z.derivative(0,2) == -2.0);
BOOST_REQUIRE(z.derivative(0,3) == 0.0);
BOOST_REQUIRE(z.derivative(0,4) == 0.0);
BOOST_REQUIRE(z.derivative(1,0) == 2*cx);
BOOST_REQUIRE(z.derivative(2,0) == 2.0);
for (int i=1 ; i<=m ; ++i)
for (int j=1 ; j<=n ; ++j)
BOOST_REQUIRE(z.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(dim2_multiplication_and_subtraction)
{
boost::fusion::for_each(bin_float_types, dim2_multiplication_and_subtraction_test());
boost::fusion::for_each(multiprecision_float_types, dim2_multiplication_and_subtraction_test());
}
struct inverse_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr float cx = 4.0;
const auto x = make_fvar<T,m>(cx);
const auto xinv = x.inverse();
BOOST_REQUIRE(xinv.derivative(0) == 1/cx);
BOOST_REQUIRE(xinv.derivative(1) == -1/std::pow(cx,2));
BOOST_REQUIRE(xinv.derivative(2) == 2/std::pow(cx,3));
BOOST_REQUIRE(xinv.derivative(3) == -6/std::pow(cx,4));
const auto zero = make_fvar<T,m>(0);
const auto inf = zero.inverse();
for (int i=0 ; i<=m ; ++i)
BOOST_REQUIRE(inf.derivative(i) == (i&1?-1:1)*std::numeric_limits<T>::infinity());
}
};
BOOST_AUTO_TEST_CASE(inverse)
{
boost::fusion::for_each(bin_float_types, inverse_test());
boost::fusion::for_each(multiprecision_float_types, inverse_test());
}
struct division_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 16.0;
auto x = make_fvar<T,m>(cx);
constexpr float cy = 4.0;
auto y = make_fvar<T,1,n>(cy);
auto z = x*x / (y*y);
BOOST_REQUIRE(z.derivative(0,0) == cx*cx / (cy*cy)); // x^2 * y^-2
BOOST_REQUIRE(z.derivative(0,1) == cx*cx * (-2)*std::pow(cy,-3));
BOOST_REQUIRE(z.derivative(0,2) == cx*cx * (6)*std::pow(cy,-4));
BOOST_REQUIRE(z.derivative(0,3) == cx*cx * (-24)*std::pow(cy,-5));
BOOST_REQUIRE(z.derivative(0,4) == cx*cx * (120)*std::pow(cy,-6));
BOOST_REQUIRE(z.derivative(1,0) == 2*cx / (cy*cy));
BOOST_REQUIRE(z.derivative(1,1) == 2*cx * (-2)*std::pow(cy,-3));
BOOST_REQUIRE(z.derivative(1,2) == 2*cx * (6)*std::pow(cy,-4));
BOOST_REQUIRE(z.derivative(1,3) == 2*cx * (-24)*std::pow(cy,-5));
BOOST_REQUIRE(z.derivative(1,4) == 2*cx * (120)*std::pow(cy,-6));
BOOST_REQUIRE(z.derivative(2,0) == 2 / (cy*cy));
BOOST_REQUIRE(z.derivative(2,1) == 2 * (-2)*std::pow(cy,-3));
BOOST_REQUIRE(z.derivative(2,2) == 2 * (6)*std::pow(cy,-4));
BOOST_REQUIRE(z.derivative(2,3) == 2 * (-24)*std::pow(cy,-5));
BOOST_REQUIRE(z.derivative(2,4) == 2 * (120)*std::pow(cy,-6));
for (int j=0 ; j<=n ; ++j)
BOOST_REQUIRE(z.derivative(3,j) == 0.0);
auto x1 = make_fvar<T,m>(cx);
auto z1 = x1/cy;
BOOST_REQUIRE(z1.derivative(0) == cx/cy);
BOOST_REQUIRE(z1.derivative(1) == 1/cy);
BOOST_REQUIRE(z1.derivative(2) == 0.0);
BOOST_REQUIRE(z1.derivative(3) == 0.0);
auto y2 = make_fvar<T,m,n>(cy);
auto z2 = cx/y2;
BOOST_REQUIRE(z2.derivative(0,0) == cx/cy);
BOOST_REQUIRE(z2.derivative(0,1) == -cx/std::pow(cy,2));
BOOST_REQUIRE(z2.derivative(0,2) == 2*cx/std::pow(cy,3));
BOOST_REQUIRE(z2.derivative(0,3) == -6*cx/std::pow(cy,4));
BOOST_REQUIRE(z2.derivative(0,4) == 24*cx/std::pow(cy,5));
for (int i=1 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
BOOST_REQUIRE(z2.derivative(i,j) == 0.0);
const auto z3 = y / x;
BOOST_REQUIRE(z3.derivative(0,0) == cy / cx);
BOOST_REQUIRE(z3.derivative(0,1) == 1 / cx);
BOOST_REQUIRE(z3.derivative(1,0) == -cy / std::pow(cx,2));
BOOST_REQUIRE(z3.derivative(1,1) == -1 / std::pow(cx,2));
BOOST_REQUIRE(z3.derivative(2,0) == 2*cy / std::pow(cx,3));
BOOST_REQUIRE(z3.derivative(2,1) == 2 / std::pow(cx,3));
BOOST_REQUIRE(z3.derivative(3,0) == -6*cy / std::pow(cx,4));
BOOST_REQUIRE(z3.derivative(3,1) == -6 / std::pow(cx,4));
for (int i=0 ; i<=m ; ++i)
for (int j=2 ; j<=n ; ++j)
BOOST_REQUIRE(z3.derivative(i,j) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(division)
{
boost::fusion::for_each(bin_float_types, division_test());
boost::fusion::for_each(multiprecision_float_types, division_test());
}
struct equality_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 10.0;
constexpr float cy = 10.0;
const auto x = make_fvar<T,m>(cx);
const auto y = make_fvar<T,0,n>(cy);
BOOST_REQUIRE((x == y));
BOOST_REQUIRE((x == cy));
BOOST_REQUIRE((cx == y));
BOOST_REQUIRE((cy == x));
BOOST_REQUIRE((y == cx));
}
};
BOOST_AUTO_TEST_CASE(equality)
{
boost::fusion::for_each(bin_float_types, equality_test());
boost::fusion::for_each(multiprecision_float_types, equality_test());
}
struct inequality_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 10.0;
constexpr float cy = 11.0;
const auto x = make_fvar<T,m>(cx);
const auto y = make_fvar<T,0,n>(cy);
BOOST_REQUIRE((x != y));
BOOST_REQUIRE((x != cy));
BOOST_REQUIRE((cx != y));
BOOST_REQUIRE((cy != x));
BOOST_REQUIRE((y != cx));
}
};
BOOST_AUTO_TEST_CASE(inequality)
{
boost::fusion::for_each(bin_float_types, inequality_test());
boost::fusion::for_each(multiprecision_float_types, inequality_test());
}
struct less_than_or_equal_to_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 10.0;
constexpr float cy = 11.0;
const auto x = make_fvar<T,m>(cx);
const auto y = make_fvar<T,0,n>(cy);
BOOST_REQUIRE((x <= y));
BOOST_REQUIRE((x <= y-1));
BOOST_REQUIRE((x < y));
BOOST_REQUIRE((x <= cy));
BOOST_REQUIRE((x <= cy-1));
BOOST_REQUIRE((x < cy));
BOOST_REQUIRE((cx <= y));
BOOST_REQUIRE((cx <= y-1));
BOOST_REQUIRE((cx < y));
}
};
BOOST_AUTO_TEST_CASE(less_than_or_equal_to)
{
boost::fusion::for_each(bin_float_types, less_than_or_equal_to_test());
boost::fusion::for_each(multiprecision_float_types, less_than_or_equal_to_test());
}
struct greater_than_or_equal_to_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr int n = 4;
constexpr float cx = 11.0;
constexpr float cy = 10.0;
const auto x = make_fvar<T,m>(cx);
const auto y = make_fvar<T,0,n>(cy);
BOOST_REQUIRE((x >= y));
BOOST_REQUIRE((x >= y+1));
BOOST_REQUIRE((x > y));
BOOST_REQUIRE((x >= cy));
BOOST_REQUIRE((x >= cy+1));
BOOST_REQUIRE((x > cy));
BOOST_REQUIRE((cx >= y));
BOOST_REQUIRE((cx >= y+1));
BOOST_REQUIRE((cx > y));
}
};
BOOST_AUTO_TEST_CASE(greater_than_or_equal_to)
{
boost::fusion::for_each(bin_float_types, greater_than_or_equal_to_test());
boost::fusion::for_each(multiprecision_float_types, greater_than_or_equal_to_test());
}
struct abs_test_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr float cx = 11.0;
const auto x = make_fvar<T,m>(cx);
auto a = abs(x);
BOOST_REQUIRE(a.derivative(0) == std::abs(cx));
BOOST_REQUIRE(a.derivative(1) == 1.0);
BOOST_REQUIRE(a.derivative(2) == 0.0);
BOOST_REQUIRE(a.derivative(3) == 0.0);
a = abs(-x);
BOOST_REQUIRE(a.derivative(0) == std::abs(cx));
BOOST_REQUIRE(a.derivative(1) == 1.0); // abs(-x) = abs(x)
BOOST_REQUIRE(a.derivative(2) == 0.0);
BOOST_REQUIRE(a.derivative(3) == 0.0);
const auto xneg = make_fvar<T,m>(-cx);
a = abs(xneg);
BOOST_REQUIRE(a.derivative(0) == std::abs(cx));
BOOST_REQUIRE(a.derivative(1) == -1.0);
BOOST_REQUIRE(a.derivative(2) == 0.0);
BOOST_REQUIRE(a.derivative(3) == 0.0);
const auto zero = make_fvar<T,m>(0);
a = abs(zero);
for (int i=0 ; i<=m ; ++i)
BOOST_REQUIRE(a.derivative(i) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(abs_test)
{
boost::fusion::for_each(bin_float_types, abs_test_test());
boost::fusion::for_each(multiprecision_float_types, abs_test_test());
}
struct ceil_and_floor_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
float tests[] { -1.5, 0.0, 1.5 };
for (unsigned t=0 ; t<sizeof(tests)/sizeof(*tests) ; ++t)
{
const auto x = make_fvar<T,m>(tests[t]);
auto c = ceil(x);
auto f = floor(x);
BOOST_REQUIRE(c.derivative(0) == std::ceil(tests[t]));
BOOST_REQUIRE(f.derivative(0) == std::floor(tests[t]));
for (int i=1 ; i<=m ; ++i)
{
BOOST_REQUIRE(c.derivative(i) == 0.0);
BOOST_REQUIRE(f.derivative(i) == 0.0);
}
}
}
};
BOOST_AUTO_TEST_CASE(ceil_and_floor)
{
boost::fusion::for_each(bin_float_types, ceil_and_floor_test());
boost::fusion::for_each(multiprecision_float_types, ceil_and_floor_test());
}
BOOST_AUTO_TEST_SUITE_END()

462
test/test_autodiff_2.cpp Normal file
View File

@@ -0,0 +1,462 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
#include "test_autodiff.hpp"
BOOST_AUTO_TEST_SUITE(test_autodiff_2)
struct one_over_one_plus_x_squared_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 4;
constexpr float cx = 1.0;
auto f = make_fvar<T,m>(cx);
//f = 1 / ((f *= f) += 1);
f = ((f *= f) += 1).inverse();
BOOST_REQUIRE(f.derivative(0) == 0.5);
BOOST_REQUIRE(f.derivative(1) == -0.5);
BOOST_REQUIRE(f.derivative(2) == 0.5);
BOOST_REQUIRE(f.derivative(3) == 0.0);
BOOST_REQUIRE(f.derivative(4) == -3.0);
}
};
BOOST_AUTO_TEST_CASE(one_over_one_plus_x_squared)
{
boost::fusion::for_each(bin_float_types, one_over_one_plus_x_squared_test());
boost::fusion::for_each(multiprecision_float_types, one_over_one_plus_x_squared_test());
}
struct exp_test_test
{
template<typename T>
void operator()(const T&) const
{
using std::exp;
constexpr int m = 4;
const T cx = 2.0;
const auto x = make_fvar<T,m>(cx);
auto y = exp(x);
for (int i=0 ; i<=m ; ++i)
{
//std::cout.precision(100);
//std::cout << "y.derivative("<<i<<") = " << y.derivative(i) << ", std::exp(cx) = " << std::exp(cx) << std::endl;
BOOST_REQUIRE(y.derivative(i) == exp(cx));
}
}
};
BOOST_AUTO_TEST_CASE(exp_test)
{
boost::fusion::for_each(bin_float_types, exp_test_test());
boost::fusion::for_each(multiprecision_float_types, exp_test_test());
}
struct pow_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 201*std::numeric_limits<T>::epsilon(); // percent
using std::exp;
using std::log;
using std::pow;
constexpr int m = 5;
constexpr int n = 4;
const T cx = 2.0;
const T cy = 3.0;
const auto x = make_fvar<T,m>(cx);
const auto y = make_fvar<T,m,n>(cy);
auto z0 = pow(x,cy);
BOOST_REQUIRE(z0.derivative(0) == pow(cx,cy));
BOOST_REQUIRE(z0.derivative(1) == cy*pow(cx,cy-1));
BOOST_REQUIRE(z0.derivative(2) == cy*(cy-1)*pow(cx,cy-2));
BOOST_REQUIRE(z0.derivative(3) == cy*(cy-1)*(cy-2)*pow(cx,cy-3));
BOOST_REQUIRE(z0.derivative(4) == 0.0);
BOOST_REQUIRE(z0.derivative(5) == 0.0);
auto z1 = pow(cx,y);
BOOST_REQUIRE_CLOSE(z1.derivative(0,0), pow(cx,cy), eps);
for (int j=1 ; j<=n ; ++j)
BOOST_REQUIRE_CLOSE(z1.derivative(0,j), pow(log(cx),j)*exp(cy*log(cx)), eps);
for (int i=1 ; i<=m ; ++i)
for (int j=0 ; j<=n ; ++j)
BOOST_REQUIRE(z1.derivative(i,j) == 0.0);
auto z2 = pow(x,y);
for (int j=0 ; j<=n ; ++j)
BOOST_REQUIRE_CLOSE(z2.derivative(0,j), pow(cx,cy)*pow(log(cx),j), eps);
for (int j=0 ; j<=n ; ++j)
BOOST_REQUIRE_CLOSE(z2.derivative(1,j), pow(cx,cy-1)*pow(log(cx),j-1)*(cy*log(cx)+j), eps);
BOOST_REQUIRE_CLOSE(z2.derivative(2,0), pow(cx,cy-2)*cy*(cy-1), eps);
BOOST_REQUIRE_CLOSE(z2.derivative(2,1), pow(cx,cy-2)*(cy*(cy-1)*log(cx)+2*cy-1), eps);
for (int j=2 ; j<=n ; ++j)
BOOST_REQUIRE_CLOSE(z2.derivative(2,j), pow(cx,cy-2)*pow(log(cx),j-2)*(j*(2*cy-1)*log(cx)+(j-1)*j+(cy-1)*cy*pow(log(cx),2)), eps);
BOOST_REQUIRE_CLOSE(z2.derivative(2,4), pow(cx,cy-2)*pow(log(cx),2)*(4*(2*cy-1)*log(cx)+(4-1)*4+(cy-1)*cy*pow(log(cx),2)), eps);
}
};
BOOST_AUTO_TEST_CASE(pow_test)
{
boost::fusion::for_each(bin_float_types, pow_test_test());
}
struct sqrt_test_test
{
template<typename T>
void operator()(const T&) const
{
using std::sqrt;
using std::pow;
constexpr int m = 5;
constexpr float cx = 4.0;
auto x = make_fvar<T,m>(cx);
auto y = sqrt(x);
BOOST_REQUIRE(y.derivative(0) == sqrt(cx));
BOOST_REQUIRE(y.derivative(1) == 0.5*pow(cx,-0.5));
BOOST_REQUIRE(y.derivative(2) == -0.5*0.5*pow(cx,-1.5));
BOOST_REQUIRE(y.derivative(3) == 0.5*0.5*1.5*pow(cx,-2.5));
BOOST_REQUIRE(y.derivative(4) == -0.5*0.5*1.5*2.5*pow(cx,-3.5));
BOOST_REQUIRE(y.derivative(5) == 0.5*0.5*1.5*2.5*3.5*pow(cx,-4.5));
x = make_fvar<T,m>(0);
y = sqrt(x);
//std::cout << "sqrt(0) = " << y << std::endl; // (0,inf,-inf,inf,-inf,inf)
BOOST_REQUIRE(y.derivative(0) == 0.0);
for (int i=1; i<=m ; ++i)
BOOST_REQUIRE(y.derivative(i) == (i&1?1:-1)*std::numeric_limits<T>::infinity());
}
};
BOOST_AUTO_TEST_CASE(sqrt_test)
{
boost::fusion::for_each(bin_float_types, sqrt_test_test());
boost::fusion::for_each(multiprecision_float_types, sqrt_test_test());
}
struct log_test_test
{
template<typename T>
void operator()(const T&) const
{
using std::log;
using std::pow;
constexpr int m = 5;
const T cx = 2.0;
auto x = make_fvar<T,m>(cx);
auto y = log(x);
BOOST_REQUIRE(y.derivative(0) == log(cx));
BOOST_REQUIRE(y.derivative(1) == 1/cx);
BOOST_REQUIRE(y.derivative(2) == -1/pow(cx,2));
BOOST_REQUIRE(y.derivative(3) == 2/pow(cx,3));
BOOST_REQUIRE(y.derivative(4) == -6/pow(cx,4));
BOOST_REQUIRE(y.derivative(5) == 24/pow(cx,5));
x = make_fvar<T,m>(0);
y = log(x);
//std::cout << "log(0) = " << y << std::endl; // log(0) = depth(1)(-inf,inf,-inf,inf,-inf,inf)
for (int i=0; i<=m ; ++i)
BOOST_REQUIRE(y.derivative(i) == (i&1?1:-1)*std::numeric_limits<T>::infinity());
}
};
BOOST_AUTO_TEST_CASE(log_test)
{
boost::fusion::for_each(bin_float_types, log_test_test());
boost::fusion::for_each(multiprecision_float_types, log_test_test());
}
struct ylogx_test
{
template<typename T>
void operator()(const T&) const
{
using std::log;
using std::pow;
const T eps = 100*std::numeric_limits<T>::epsilon(); // percent
constexpr int m = 5;
constexpr int n = 4;
const T cx = 2.0;
const T cy = 3.0;
const auto x = make_fvar<T,m>(cx);
const auto y = make_fvar<T,m,n>(cy);
auto z = y*log(x);
BOOST_REQUIRE(z.derivative(0,0) == cy*log(cx));
BOOST_REQUIRE(z.derivative(0,1) == log(cx));
BOOST_REQUIRE(z.derivative(0,2) == 0.0);
BOOST_REQUIRE(z.derivative(0,3) == 0.0);
BOOST_REQUIRE(z.derivative(0,4) == 0.0);
for (size_t i=1 ; i<=m ; ++i)
BOOST_REQUIRE_CLOSE(z.derivative(i,0), pow(-1,i-1)*boost::math::factorial<T>(i-1)*cy/pow(cx,i), eps);
for (size_t i=1 ; i<=m ; ++i)
BOOST_REQUIRE_CLOSE(z.derivative(i,1), pow(-1,i-1)*boost::math::factorial<T>(i-1)/pow(cx,i), eps);
for (size_t i=1 ; i<=m ; ++i)
for (size_t j=2 ; j<=n ; ++j)
BOOST_REQUIRE(z.derivative(i,j) == 0.0);
auto z1 = exp(z);
// RHS is confirmed by
// https://www.wolframalpha.com/input/?i=D%5Bx%5Ey,%7Bx,2%7D,%7By,4%7D%5D+%2F.+%7Bx-%3E2.0,+y-%3E3.0%7D
BOOST_REQUIRE_CLOSE(z1.derivative(2,4),
pow(cx,cy-2)*pow(log(cx),2)*(4*(2*cy-1)*log(cx)+(4-1)*4+(cy-1)*cy*pow(log(cx),2)), eps);
}
};
BOOST_AUTO_TEST_CASE(ylogx)
{
boost::fusion::for_each(bin_float_types, ylogx_test());
}
struct frexp_test_test
{
template<typename T>
void operator()(const T&) const
{
using std::frexp;
using std::exp2;
constexpr int m = 3;
const T cx = 3.5;
const auto x = make_fvar<T,m>(cx);
int exp, testexp;
auto y = frexp(x,&exp);
BOOST_REQUIRE(y.derivative(0) == frexp(cx,&testexp));
BOOST_REQUIRE(exp == testexp);
BOOST_REQUIRE(y.derivative(1) == exp2(-exp));
BOOST_REQUIRE(y.derivative(2) == 0.0);
BOOST_REQUIRE(y.derivative(3) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(frexp_test)
{
boost::fusion::for_each(bin_float_types, frexp_test_test());
boost::fusion::for_each(multiprecision_float_types, frexp_test_test());
}
struct ldexp_test_test
{
template<typename T>
void operator()(const T&) const
{
using std::ldexp;
using std::exp2;
constexpr int m = 3;
const T cx = 3.5;
const auto x = make_fvar<T,m>(cx);
constexpr int exp = 3;
auto y = ldexp(x,exp);
BOOST_REQUIRE(y.derivative(0) == ldexp(cx,exp));
BOOST_REQUIRE(y.derivative(1) == exp2(exp));
BOOST_REQUIRE(y.derivative(2) == 0.0);
BOOST_REQUIRE(y.derivative(3) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(ldexp_test)
{
boost::fusion::for_each(bin_float_types, ldexp_test_test());
boost::fusion::for_each(multiprecision_float_types, ldexp_test_test());
}
struct cos_and_sin_test
{
template<typename T>
void operator()(const T&) const
{
using std::cos;
using std::sin;
const T eps = 200*std::numeric_limits<T>::epsilon(); // percent
constexpr int m = 5;
const T cx = boost::math::constants::third_pi<T>();
const auto x = make_fvar<T,m>(cx);
auto cos5 = cos(x);
BOOST_REQUIRE_CLOSE(cos5.derivative(0), cos(cx), eps);
BOOST_REQUIRE_CLOSE(cos5.derivative(1), -sin(cx), eps);
BOOST_REQUIRE_CLOSE(cos5.derivative(2), -cos(cx), eps);
BOOST_REQUIRE_CLOSE(cos5.derivative(3), sin(cx), eps);
BOOST_REQUIRE_CLOSE(cos5.derivative(4), cos(cx), eps);
BOOST_REQUIRE_CLOSE(cos5.derivative(5), -sin(cx), eps);
auto sin5 = sin(x);
BOOST_REQUIRE_CLOSE(sin5.derivative(0), sin(cx), eps);
BOOST_REQUIRE_CLOSE(sin5.derivative(1), cos(cx), eps);
BOOST_REQUIRE_CLOSE(sin5.derivative(2), -sin(cx), eps);
BOOST_REQUIRE_CLOSE(sin5.derivative(3), -cos(cx), eps);
BOOST_REQUIRE_CLOSE(sin5.derivative(4), sin(cx), eps);
BOOST_REQUIRE_CLOSE(sin5.derivative(5), cos(cx), eps);
// Test Order = 0 for codecov
auto cos0 = cos(make_fvar<T,0>(cx));
BOOST_REQUIRE_CLOSE(cos0.derivative(0), cos(cx), eps);
auto sin0 = sin(make_fvar<T,0>(cx));
BOOST_REQUIRE_CLOSE(sin0.derivative(0), sin(cx), eps);
}
};
BOOST_AUTO_TEST_CASE(cos_and_sin)
{
boost::fusion::for_each(bin_float_types, cos_and_sin_test());
}
struct acos_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
using std::acos;
using std::pow;
using std::sqrt;
constexpr int m = 5;
const T cx = 0.5;
auto x = make_fvar<T,m>(cx);
auto y = acos(x);
BOOST_REQUIRE_CLOSE(y.derivative(0), acos(cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(1), -1/sqrt(1-cx*cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), -cx/pow(1-cx*cx,1.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), -(2*cx*cx+1)/pow(1-cx*cx,2.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), -3*cx*(2*cx*cx+3)/pow(1-cx*cx,3.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(5), -(24*(cx*cx+3)*cx*cx+9)/pow(1-cx*cx,4.5), eps);
}
};
BOOST_AUTO_TEST_CASE(acos_test)
{
boost::fusion::for_each(bin_float_types, acos_test_test());
}
struct acosh_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
using std::acosh;
constexpr int m = 5;
const T cx = 2;
auto x = make_fvar<T,m>(cx);
auto y = acosh(x);
//BOOST_REQUIRE(y.derivative(0) == acosh(cx)); // FAILS! acosh(2) is overloaded for integral types
BOOST_REQUIRE(y.derivative(0) == acosh(static_cast<T>(x)));
BOOST_REQUIRE_CLOSE(y.derivative(1), 1/boost::math::constants::root_three<T>(), eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), -2/(3*boost::math::constants::root_three<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), 1/boost::math::constants::root_three<T>(), eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), -22/(9*boost::math::constants::root_three<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(5), 227/(27*boost::math::constants::root_three<T>()), eps);
}
};
BOOST_AUTO_TEST_CASE(acosh_test)
{
boost::fusion::for_each(bin_float_types, acosh_test_test());
}
struct asin_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
using std::asin;
using std::pow;
using std::sqrt;
constexpr int m = 5;
const T cx = 0.5;
auto x = make_fvar<T,m>(cx);
auto y = asin(x);
BOOST_REQUIRE_CLOSE(y.derivative(0), asin(cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(1), 1/sqrt(1-cx*cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), cx/pow(1-cx*cx,1.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), (2*cx*cx+1)/pow(1-cx*cx,2.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), 3*cx*(2*cx*cx+3)/pow(1-cx*cx,3.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(5), (24*(cx*cx+3)*cx*cx+9)/pow(1-cx*cx,4.5), eps);
}
};
BOOST_AUTO_TEST_CASE(asin_test)
{
boost::fusion::for_each(bin_float_types, asin_test_test());
}
struct asin_infinity_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 100*std::numeric_limits<T>::epsilon(); // percent
constexpr int m = 5;
auto x = make_fvar<T,m>(1);
auto y = asin(x);
//std::cout << "asin(1) = " << y << std::endl; // depth(1)(1.5707963267949,inf,inf,-nan,-nan,-nan)
BOOST_REQUIRE_CLOSE(y.derivative(0), boost::math::constants::half_pi<T>(), eps); // MacOS is not exact
BOOST_REQUIRE(y.derivative(1) == std::numeric_limits<T>::infinity());
}
};
BOOST_AUTO_TEST_CASE(asin_infinity)
{
boost::fusion::for_each(bin_float_types, asin_infinity_test());
boost::fusion::for_each(multiprecision_float_types, asin_infinity_test());
}
struct asin_derivative_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
using std::pow;
using std::sqrt;
constexpr int m = 4;
const T cx = 0.5;
auto x = make_fvar<T,m>(cx);
auto y = 1-x*x;
BOOST_REQUIRE(y.derivative(0) == 1-cx*cx);
BOOST_REQUIRE(y.derivative(1) == -2*cx);
BOOST_REQUIRE(y.derivative(2) == -2);
BOOST_REQUIRE(y.derivative(3) == 0);
BOOST_REQUIRE(y.derivative(4) == 0);
y = sqrt(y);
BOOST_REQUIRE(y.derivative(0) == sqrt(1-cx*cx));
BOOST_REQUIRE_CLOSE(y.derivative(1), -cx/sqrt(1-cx*cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), -1/pow(1-cx*cx,1.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), -3*cx/pow(1-cx*cx,2.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), -(12*cx*cx+3)/pow(1-cx*cx,3.5), eps);
y = y.inverse(); // asin'(x) = 1 / sqrt(1-x*x).
BOOST_REQUIRE_CLOSE(y.derivative(0), 1/sqrt(1-cx*cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(1), cx/pow(1-cx*cx,1.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), (2*cx*cx+1)/pow(1-cx*cx,2.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), 3*cx*(2*cx*cx+3)/pow(1-cx*cx,3.5), eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), (24*(cx*cx+3)*cx*cx+9)/pow(1-cx*cx,4.5), eps);
}
};
BOOST_AUTO_TEST_CASE(asin_derivative)
{
boost::fusion::for_each(bin_float_types, asin_derivative_test());
}
struct asinh_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
using std::asinh;
constexpr int m = 5;
const T cx = 1;
auto x = make_fvar<T,m>(cx);
auto y = asinh(x);
//BOOST_REQUIRE(y.derivative(0) == asinh(cx)); // Fails for gcc-mingw - similar to acosh()?
BOOST_REQUIRE(y.derivative(0) == asinh(static_cast<T>(x)));
BOOST_REQUIRE_CLOSE(y.derivative(1), 1/boost::math::constants::root_two<T>(), eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), -1/(2*boost::math::constants::root_two<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), 1/(4*boost::math::constants::root_two<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), 3/(8*boost::math::constants::root_two<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(5), -39/(16*boost::math::constants::root_two<T>()), eps);
}
};
BOOST_AUTO_TEST_CASE(asinh_test)
{
boost::fusion::for_each(bin_float_types, asinh_test_test());
}
BOOST_AUTO_TEST_SUITE_END()

254
test/test_autodiff_3.cpp Normal file
View File

@@ -0,0 +1,254 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
#include "test_autodiff.hpp"
BOOST_AUTO_TEST_SUITE(test_autodiff_3)
struct atanh_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
using std::atanh;
constexpr int m = 5;
const T cx = 0.5;
auto x = make_fvar<T,m>(cx);
auto y = atanh(x);
// BOOST_REQUIRE(y.derivative(0) == atanh(cx)); // fails due to overload
BOOST_REQUIRE(y.derivative(0) == atanh(static_cast<T>(x)));
BOOST_REQUIRE_CLOSE(y.derivative(1), static_cast<T>(4)/3, eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), static_cast<T>(16)/9, eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), static_cast<T>(224)/27, eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), static_cast<T>(1280)/27, eps);
BOOST_REQUIRE_CLOSE(y.derivative(5), static_cast<T>(31232)/81, eps);
}
};
BOOST_AUTO_TEST_CASE(atanh_test)
{
boost::fusion::for_each(bin_float_types, atanh_test_test());
}
struct atan_test_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 5;
constexpr float cx = 1.0;
const auto x = make_fvar<T,m>(cx);
auto y = atan(x);
BOOST_REQUIRE(y.derivative(0) == boost::math::constants::pi<T>()/4);
BOOST_REQUIRE(y.derivative(1) == 0.5);
BOOST_REQUIRE(y.derivative(2) == -0.5);
BOOST_REQUIRE(y.derivative(3) == 0.5);
BOOST_REQUIRE(y.derivative(4) == 0.0);
BOOST_REQUIRE(y.derivative(5) == -3.0);
}
};
BOOST_AUTO_TEST_CASE(atan_test)
{
boost::fusion::for_each(bin_float_types, atan_test_test());
boost::fusion::for_each(multiprecision_float_types, atan_test_test());
}
struct erf_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
using std::erf;
using namespace boost;
constexpr int m = 5;
constexpr float cx = 1.0;
const auto x = make_fvar<T,m>(cx);
auto y = erf(x);
BOOST_REQUIRE(y.derivative(0) == erf(static_cast<T>(x)));
BOOST_REQUIRE_CLOSE(y.derivative(1), 2/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), -4/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), 4/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), 8/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
BOOST_REQUIRE_CLOSE(y.derivative(5), -40/(math::constants::e<T>()*math::constants::root_pi<T>()), eps);
}
};
BOOST_AUTO_TEST_CASE(erf_test)
{
boost::fusion::for_each(bin_float_types, erf_test_test());
boost::fusion::for_each(multiprecision_float_types, erf_test_test());
}
struct sinc_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 20000*std::numeric_limits<T>::epsilon(); // percent
using std::sin;
using std::cos;
constexpr int m = 5;
const T cx = 1;
auto x = make_fvar<T,m>(cx);
auto y = sinc(x);
BOOST_REQUIRE_CLOSE(y.derivative(0), sin(cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(1), cos(cx)-sin(cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), sin(cx)-2*cos(cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), 5*cos(cx)-3*sin(cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), 13*sin(cx)-20*cos(cx), eps);
BOOST_REQUIRE_CLOSE(y.derivative(5), 101*cos(cx)-65*sin(cx), eps);
// Test at x = 0
auto y2 = sinc(make_fvar<T,10>(0));
BOOST_REQUIRE_CLOSE(y2.derivative(0), 1, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(1), 0, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(2), -cx/3, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(3), 0, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(4), cx/5, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(5), 0, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(6), -cx/7, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(7), 0, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(8), cx/9, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(9), 0, eps);
BOOST_REQUIRE_CLOSE(y2.derivative(10), -cx/11, eps);
}
};
BOOST_AUTO_TEST_CASE(sinc_test)
{
boost::fusion::for_each(bin_float_types, sinc_test_test());
}
struct sinh_and_cosh_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 300*std::numeric_limits<T>::epsilon(); // percent
using std::sinh;
using std::cosh;
constexpr int m = 5;
const T cx = 1;
auto x = make_fvar<T,m>(cx);
auto s = sinh(x);
auto c = cosh(x);
BOOST_REQUIRE_CLOSE(s.derivative(0), sinh(static_cast<T>(x)), eps);
BOOST_REQUIRE_CLOSE(c.derivative(0), cosh(static_cast<T>(x)), eps);
for (size_t i=0 ; i<=m ; ++i)
{
BOOST_REQUIRE_CLOSE(s.derivative(i), static_cast<T>(i&1?c:s), eps);
BOOST_REQUIRE_CLOSE(c.derivative(i), static_cast<T>(i&1?s:c), eps);
}
}
};
BOOST_AUTO_TEST_CASE(sinh_and_cosh)
{
boost::fusion::for_each(bin_float_types, sinh_and_cosh_test());
}
struct tan_test_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 800*std::numeric_limits<T>::epsilon(); // percent
using std::sqrt;
constexpr int m = 5;
const T cx = boost::math::constants::third_pi<T>();
const T root_three = boost::math::constants::root_three<T>();
const auto x = make_fvar<T,m>(cx);
auto y = tan(x);
BOOST_REQUIRE_CLOSE(y.derivative(0), root_three, eps);
BOOST_REQUIRE_CLOSE(y.derivative(1), 4.0, eps);
BOOST_REQUIRE_CLOSE(y.derivative(2), 8*root_three, eps);
BOOST_REQUIRE_CLOSE(y.derivative(3), 80.0, eps);
BOOST_REQUIRE_CLOSE(y.derivative(4), 352*root_three, eps);
BOOST_REQUIRE_CLOSE(y.derivative(5), 5824.0, eps);
}
};
BOOST_AUTO_TEST_CASE(tan_test)
{
boost::fusion::for_each(bin_float_types, tan_test_test());
}
struct fmod_test_test
{
template<typename T>
void operator()(const T&) const
{
constexpr int m = 3;
constexpr float cx = 3.25;
const T cy = 0.5;
auto x = make_fvar<T,m>(cx);
auto y = fmod(x,autodiff_fvar<T,m>(cy));
BOOST_REQUIRE(y.derivative(0) == 0.25);
BOOST_REQUIRE(y.derivative(1) == 1.0);
BOOST_REQUIRE(y.derivative(2) == 0.0);
BOOST_REQUIRE(y.derivative(3) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(fmod_test)
{
boost::fusion::for_each(bin_float_types, fmod_test_test());
boost::fusion::for_each(multiprecision_float_types, fmod_test_test());
}
struct round_and_trunc_test
{
template<typename T>
void operator()(const T&) const
{
using std::round;
using std::trunc;
constexpr int m = 3;
constexpr float cx = 3.25;
auto x = make_fvar<T,m>(cx);
auto y = round(x);
BOOST_REQUIRE(y.derivative(0) == round(cx));
BOOST_REQUIRE(y.derivative(1) == 0.0);
BOOST_REQUIRE(y.derivative(2) == 0.0);
BOOST_REQUIRE(y.derivative(3) == 0.0);
y = trunc(x);
BOOST_REQUIRE(y.derivative(0) == trunc(cx));
BOOST_REQUIRE(y.derivative(1) == 0.0);
BOOST_REQUIRE(y.derivative(2) == 0.0);
BOOST_REQUIRE(y.derivative(3) == 0.0);
}
};
BOOST_AUTO_TEST_CASE(round_and_trunc)
{
boost::fusion::for_each(bin_float_types, round_and_trunc_test());
boost::fusion::for_each(multiprecision_float_types, round_and_trunc_test());
}
struct iround_and_itrunc_test
{
template<typename T>
void operator()(const T&) const
{
using namespace boost::math;
constexpr int m = 3;
constexpr float cx = 3.25;
auto x = make_fvar<T,m>(cx);
int y = iround(x);
BOOST_REQUIRE(y == iround(cx));
y = itrunc(x);
BOOST_REQUIRE(y == itrunc(cx));
}
};
BOOST_AUTO_TEST_CASE(iround_and_itrunc)
{
boost::fusion::for_each(bin_float_types, iround_and_itrunc_test());
boost::fusion::for_each(multiprecision_float_types, iround_and_itrunc_test());
}
BOOST_AUTO_TEST_SUITE_END()

64
test/test_autodiff_4.cpp Normal file
View File

@@ -0,0 +1,64 @@
// Copyright Matthew Pulver 2018 - 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
#include "test_autodiff.hpp"
BOOST_AUTO_TEST_SUITE(test_autodiff_4)
struct lround_llround_truncl_test
{
template<typename T>
void operator()(const T&) const
{
using std::lround;
using std::llround;
//using std::truncl; // truncl not supported by boost::multiprecision types.
constexpr int m = 3;
const T cx = 3.25;
auto x = make_fvar<T,m>(cx);
long yl = lround(x);
BOOST_REQUIRE(yl == lround(cx));
long long yll = llround(x);
BOOST_REQUIRE(yll == llround(cx));
//long double yld = truncl(x);
//BOOST_REQUIRE(yld == truncl(cx));
}
};
BOOST_AUTO_TEST_CASE(lround_llround_truncl)
{
boost::fusion::for_each(bin_float_types, lround_llround_truncl_test());
boost::fusion::for_each(multiprecision_float_types, lround_llround_truncl_test());
}
struct multiprecision_test
{
template<typename T>
void operator()(const T&) const
{
const T eps = 4000*std::numeric_limits<T>::epsilon(); // percent
constexpr int Nw=3;
constexpr int Nx=2;
constexpr int Ny=4;
constexpr int Nz=3;
const auto w = make_fvar<T,Nw>(11);
const auto x = make_fvar<T,0,Nx>(12);
const auto y = make_fvar<T,0,0,Ny>(13);
const auto z = make_fvar<T,0,0,0,Nz>(14);
const auto v = mixed_partials_f(w,x,y,z); // auto = autodiff_fvar<T,Nw,Nx,Ny,Nz>
// Calculated from Mathematica symbolic differentiation.
const T answer = boost::lexical_cast<T>("1976.3196007477977177798818752904187209081211892187"
"5499076582535951111845769110560421820940516423255314");
BOOST_REQUIRE_CLOSE(v.derivative(Nw,Nx,Ny,Nz), answer, eps); // Doesn't work for cpp_dec_float
}
};
BOOST_AUTO_TEST_CASE(multiprecision)
{
//multiprecision_test()(boost::multiprecision::cpp_bin_float_50());
boost::fusion::for_each(bin_float_types, multiprecision_test());
}
BOOST_AUTO_TEST_SUITE_END()