Initial commit
259
.gitignore
vendored
Normal file
@@ -0,0 +1,259 @@
|
||||
ltximg/
|
||||
*.autosave
|
||||
slprj/
|
||||
matlab/slprj/
|
||||
*.slxc
|
||||
|
||||
|
||||
# ============================================================
|
||||
# ============================================================
|
||||
# LATEX
|
||||
# ============================================================
|
||||
# ============================================================
|
||||
|
||||
## Core latex/pdflatex auxiliary files:
|
||||
*.aux
|
||||
*.lof
|
||||
*.log
|
||||
*.lot
|
||||
*.fls
|
||||
*.out
|
||||
*.toc
|
||||
*.fmt
|
||||
*.fot
|
||||
*.cb
|
||||
*.cb2
|
||||
.*.lb
|
||||
|
||||
## Intermediate documents:
|
||||
*.dvi
|
||||
*.xdv
|
||||
*-converted-to.*
|
||||
# these rules might exclude image files for figures etc.
|
||||
# *.ps
|
||||
# *.eps
|
||||
# *.pdf
|
||||
|
||||
## Generated if empty string is given at "Please type another file name for output:"
|
||||
.pdf
|
||||
|
||||
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
||||
*.bbl
|
||||
*.bcf
|
||||
*.blg
|
||||
*-blx.aux
|
||||
*-blx.bib
|
||||
*.run.xml
|
||||
|
||||
## Build tool auxiliary files:
|
||||
*.fdb_latexmk
|
||||
*.synctex
|
||||
*.synctex(busy)
|
||||
*.synctex.gz
|
||||
*.synctex.gz(busy)
|
||||
*.pdfsync
|
||||
|
||||
## Build tool directories for auxiliary files
|
||||
# latexrun
|
||||
latex.out/
|
||||
|
||||
## Auxiliary and intermediate files from other packages:
|
||||
# algorithms
|
||||
*.alg
|
||||
*.loa
|
||||
|
||||
# achemso
|
||||
acs-*.bib
|
||||
|
||||
# amsthm
|
||||
*.thm
|
||||
|
||||
# beamer
|
||||
*.nav
|
||||
*.pre
|
||||
*.snm
|
||||
*.vrb
|
||||
|
||||
# changes
|
||||
*.soc
|
||||
|
||||
# cprotect
|
||||
*.cpt
|
||||
|
||||
# elsarticle (documentclass of Elsevier journals)
|
||||
*.spl
|
||||
|
||||
# endnotes
|
||||
*.ent
|
||||
|
||||
# fixme
|
||||
*.lox
|
||||
|
||||
# feynmf/feynmp
|
||||
*.mf
|
||||
*.mp
|
||||
*.t[1-9]
|
||||
*.t[1-9][0-9]
|
||||
*.tfm
|
||||
|
||||
#(r)(e)ledmac/(r)(e)ledpar
|
||||
*.end
|
||||
*.?end
|
||||
*.[1-9]
|
||||
*.[1-9][0-9]
|
||||
*.[1-9][0-9][0-9]
|
||||
*.[1-9]R
|
||||
*.[1-9][0-9]R
|
||||
*.[1-9][0-9][0-9]R
|
||||
*.eledsec[1-9]
|
||||
*.eledsec[1-9]R
|
||||
*.eledsec[1-9][0-9]
|
||||
*.eledsec[1-9][0-9]R
|
||||
*.eledsec[1-9][0-9][0-9]
|
||||
*.eledsec[1-9][0-9][0-9]R
|
||||
|
||||
# glossaries
|
||||
*.acn
|
||||
*.acr
|
||||
*.glg
|
||||
*.glo
|
||||
*.gls
|
||||
*.glsdefs
|
||||
|
||||
# gnuplottex
|
||||
*-gnuplottex-*
|
||||
|
||||
# gregoriotex
|
||||
*.gaux
|
||||
*.gtex
|
||||
|
||||
# htlatex
|
||||
*.4ct
|
||||
*.4tc
|
||||
*.idv
|
||||
*.lg
|
||||
*.trc
|
||||
*.xref
|
||||
|
||||
# hyperref
|
||||
*.brf
|
||||
|
||||
# knitr
|
||||
*-concordance.tex
|
||||
# TODO Comment the next line if you want to keep your tikz graphics files
|
||||
*.tikz
|
||||
*-tikzDictionary
|
||||
|
||||
# listings
|
||||
*.lol
|
||||
|
||||
# makeidx
|
||||
*.idx
|
||||
*.ilg
|
||||
*.ind
|
||||
*.ist
|
||||
|
||||
# minitoc
|
||||
*.maf
|
||||
*.mlf
|
||||
*.mlt
|
||||
*.mtc[0-9]*
|
||||
*.slf[0-9]*
|
||||
*.slt[0-9]*
|
||||
*.stc[0-9]*
|
||||
|
||||
# minted
|
||||
_minted*
|
||||
*.pyg
|
||||
|
||||
# morewrites
|
||||
*.mw
|
||||
|
||||
# nomencl
|
||||
*.nlg
|
||||
*.nlo
|
||||
*.nls
|
||||
|
||||
# pax
|
||||
*.pax
|
||||
|
||||
# pdfpcnotes
|
||||
*.pdfpc
|
||||
|
||||
# sagetex
|
||||
*.sagetex.sage
|
||||
*.sagetex.py
|
||||
*.sagetex.scmd
|
||||
|
||||
# scrwfile
|
||||
*.wrt
|
||||
|
||||
# sympy
|
||||
*.sout
|
||||
*.sympy
|
||||
sympy-plots-for-*.tex/
|
||||
|
||||
# pdfcomment
|
||||
*.upa
|
||||
*.upb
|
||||
|
||||
# pythontex
|
||||
*.pytxcode
|
||||
pythontex-files-*/
|
||||
|
||||
# thmtools
|
||||
*.loe
|
||||
|
||||
# TikZ & PGF
|
||||
*.dpth
|
||||
*.md5
|
||||
*.auxlock
|
||||
|
||||
# todonotes
|
||||
*.tdo
|
||||
|
||||
# easy-todo
|
||||
*.lod
|
||||
|
||||
# xmpincl
|
||||
*.xmpi
|
||||
|
||||
# xindy
|
||||
*.xdy
|
||||
|
||||
# xypic precompiled matrices
|
||||
*.xyc
|
||||
|
||||
# endfloat
|
||||
*.ttt
|
||||
*.fff
|
||||
|
||||
# Latexian
|
||||
TSWLatexianTemp*
|
||||
|
||||
## Editors:
|
||||
# WinEdt
|
||||
*.bak
|
||||
*.sav
|
||||
|
||||
# Texpad
|
||||
.texpadtmp
|
||||
|
||||
# LyX
|
||||
*.lyx~
|
||||
|
||||
# Kile
|
||||
*.backup
|
||||
|
||||
# KBibTeX
|
||||
*~[0-9]*
|
||||
|
||||
# auto folder when using emacs and auctex
|
||||
./auto/*
|
||||
*.el
|
||||
|
||||
# expex forward references with \gathertags
|
||||
*-tags.tex
|
||||
|
||||
# standalone packages
|
||||
*.sta
|
||||
1014
inkscape/detail_control_cf_nyquist_uncertainty.svg
Normal file
|
After Width: | Height: | Size: 80 KiB |
3570
inkscape/detail_control_cf_specs_S_T.svg
Normal file
|
After Width: | Height: | Size: 213 KiB |
1532
inkscape/detail_control_cf_test_model.svg
Normal file
|
After Width: | Height: | Size: 128 KiB |
1
inkscape/figs
Symbolic link
@@ -0,0 +1 @@
|
||||
../paper/figs
|
||||
211
inkscape/tikz.org
Normal file
@@ -0,0 +1,211 @@
|
||||
#+TITLE: Closed-Loop Shaping using Complementary Filters
|
||||
:DRAWER:
|
||||
#+LANGUAGE: en
|
||||
#+EMAIL: dehaeze.thomas@gmail.com
|
||||
#+AUTHOR: Dehaeze Thomas
|
||||
|
||||
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
|
||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||
#+PROPERTY: header-args:latex+ :results file raw replace
|
||||
#+PROPERTY: header-args:latex+ :buffer no
|
||||
#+PROPERTY: header-args:latex+ :tangle no
|
||||
#+PROPERTY: header-args:latex+ :eval no-export
|
||||
#+PROPERTY: header-args:latex+ :exports results
|
||||
#+PROPERTY: header-args:latex+ :mkdirp yes
|
||||
#+PROPERTY: header-args:latex+ :output-dir figs
|
||||
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
||||
:END:
|
||||
|
||||
#+begin_src latex :file detail_control_cf_arch.pdf
|
||||
\tikzset{block/.default={0.8cm}{0.6cm}}
|
||||
\tikzset{addb/.append style={scale=0.7}}
|
||||
\tikzset{node distance=0.6}
|
||||
\def\cdist{0.7}
|
||||
|
||||
\begin{tikzpicture}
|
||||
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
|
||||
\node[block, right=0.3 of addfb] (K){$k$};
|
||||
\node[block, right=2.2 of K] (G){$G^\prime$};
|
||||
\node[addb={+}{}{}{}{}, right=0.3 of G] (adddy){};
|
||||
\coordinate[] (KG) at ($(K.east)+(0.3, 0)$);
|
||||
\node[block, below=of KG] (Gm){$G$};
|
||||
\node[block, below=0.4 of Gm] (Hh){$H_H$};
|
||||
\node[addb={+}{}{}{}{}, below=0.4 of Hh] (addcf){};
|
||||
\node[block, right=0.3 of addcf] (Hl) {$H_L$};
|
||||
\node[addb={+}{}{}{}{}, right=2.1 of Hl] (addn) {};
|
||||
|
||||
|
||||
\draw[->] (addfb.east) -- (K.west) node[above left]{};
|
||||
\draw[->] (K.east) -- (G.west) node[above left]{$u$};
|
||||
\draw[->] (KG) node[branch]{} -- (Gm.north);
|
||||
\draw[->] (Gm.south) -- (Hh.north);
|
||||
\draw[->] (Hh.south) -- (addcf.north) node[above left]{};
|
||||
\draw[->] (Hl.west) -- (addcf.east);
|
||||
\draw[->] (addcf.west) -| (addfb.south) node[below right]{};
|
||||
\draw[->] (G.east) -- (adddy.west);
|
||||
\draw[<-] (addn.east) -- ++(0.5, 0) coordinate[](endpos) node[above left]{$n$};
|
||||
\draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$};
|
||||
\draw[->] (adddy-|addn) node[branch]{} -- (addn.north);
|
||||
\draw[<-] (addfb.west) -- ++(-0.5, 0) node[above right](r){$r$};
|
||||
\draw[->] (addn.west) -- (Hl.east) node[above right]{$y_m$};
|
||||
\draw[<-] (adddy.north) -- ++(0, 0.5) node[below right]{$d_y$};
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={(Hl.south east) (r.north west)}, inner sep=4pt, draw, fill=black!20!white, dashed, label={RT controller}] (Kfb) {};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:figs/detail_control_cf_arch.png]]
|
||||
|
||||
#+begin_src latex :file detail_control_cf_arch_eq.pdf
|
||||
\tikzset{block/.default={0.8cm}{0.6cm}}
|
||||
\tikzset{addb/.append style={scale=0.7}}
|
||||
\tikzset{node distance=0.6}
|
||||
\def\cdist{0.7}
|
||||
|
||||
\begin{tikzpicture}
|
||||
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
|
||||
\node[addb={+}{}{}{}{-}, right=0.3 of addfb] (addK){};
|
||||
\node[block, right=0.6 of addK] (K){$k$};
|
||||
\node[block, right=1.5 of K] (G){$G^\prime$};
|
||||
\node[addb={+}{}{}{}{}, right=0.3 of G] (adddy){};
|
||||
\node[block, below right=0.5 and -0.15 of K] (Gm){$G$};
|
||||
\node[block, below left =0.5 and -0.15 of K] (Hh){$H_H$};
|
||||
\node[block, below=1.5 of K] (Hl) {$H_L$};
|
||||
\node[addb={+}{}{}{}{}, right=3.0 of Hl] (addn) {};
|
||||
|
||||
\draw[->] (addfb.east) -- (addK.west);
|
||||
\draw[->] (addK.east) -- (K.west);
|
||||
\draw[->] (K.east) -- (G.west) node[above left]{$u$};
|
||||
\draw[->] (G.east) -- (adddy.west);
|
||||
\draw[->] ($(G.west)+(-0.5, 0)$) node[branch](cffb){} |- (Gm.east);
|
||||
\draw[->] (Gm.west) -- (Hh.east);
|
||||
\draw[->] (Hh.west) -| (addK.south);
|
||||
\draw[<-] (addn.east) -- ++(0.5, 0) coordinate[](endpos) node[above left]{$n$};
|
||||
\draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$};
|
||||
\draw[->] (adddy-|addn) node[branch]{} -- (addn.north);
|
||||
\draw[<-] (addfb.west) -- ++(-0.5, 0) node[above right](r){$r$};
|
||||
\draw[->] (addn.west) -- (Hl.east) node[above right]{$y_m$};
|
||||
\draw[<-] (adddy.north) -- ++(0, 0.5) node[below right]{$d_y$};
|
||||
\draw[->] (Hl.west) -| (addfb.south) node[below right]{};
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={(Hl.south -| cffb) (r.north west)}, inner sep=4pt, draw, fill=black!20!white, dashed, label={RT controller}] (Kfb) {};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:figs/detail_control_cf_arch_eq.png]]
|
||||
|
||||
#+begin_src latex :file detail_control_cf_arch_class.pdf
|
||||
\tikzset{block/.default={0.8cm}{0.6cm}}
|
||||
\tikzset{addb/.append style={scale=0.7}}
|
||||
\tikzset{node distance=0.6}
|
||||
\def\cdist{0.7}
|
||||
|
||||
\begin{tikzpicture}
|
||||
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
|
||||
\node[block, right=of addfb] (K){$K$};
|
||||
\node[block, right=of K] (G){$G^\prime$};
|
||||
\node[addb={+}{}{}{}{}, right=of G] (adddy){};
|
||||
\node[addb={+}{}{}{}{}, below right=0.7 and 0.3 of adddy] (addn) {};
|
||||
\node[block] (Hl) at (K|-addn) {$H_L$};
|
||||
|
||||
\draw[->] (addfb.east) -- (K.west) node[above left]{};
|
||||
\draw[->] (K.east) -- (G.west) node[above left]{$u$};
|
||||
\draw[->] (G.east) -- (adddy.west);
|
||||
\draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$};
|
||||
\draw[->] (G-|addn)node[branch]{} -- (addn.north);
|
||||
\draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$};
|
||||
\draw[<-] (addfb.west) -- ++(-\cdist, 0) node[above right](r){$r$};
|
||||
\draw[->] (addn.west) -- (Hl.east);
|
||||
\draw[->] (Hl.west) -| (addfb.south);
|
||||
\draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$};
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={(Hl.south east) (r.north west)}, inner sep=4pt, draw, fill=black!20!white, dashed, label={RT controller}] (Kfb) {};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:figs/detail_control_cf_arch_class.png]]
|
||||
|
||||
#+begin_src latex :file detail_control_cf_input_uncertainty.pdf
|
||||
\tikzset{block/.default={0.8cm}{0.6cm}}
|
||||
\tikzset{addb/.append style={scale=0.7}}
|
||||
\tikzset{node distance=0.6}
|
||||
\def\cdist{0.7}
|
||||
|
||||
\begin{tikzpicture}
|
||||
% Blocs
|
||||
\node[block] (G) {$G$};
|
||||
|
||||
\node[addb, left= of G] (addi) {};
|
||||
\node[block, above left=0.3 and 0.3 of addi] (deltai) {$\Delta_I$};
|
||||
\node[block, left= of deltai] (wi) {$w_I$};
|
||||
\node[branch] (branch) at ($(wi.west|-addi)+(-0.4, 0)$) {};
|
||||
|
||||
% Connections and labels
|
||||
\draw[->] (branch.center) |- (wi.west);
|
||||
\draw[->] ($(branch)+(-0.6, 0)$) -- (addi.west);
|
||||
\draw[->] (wi.east) -- (deltai.west);
|
||||
\draw[->] (deltai.east) -| (addi.north);
|
||||
\draw[->] (addi.east) -- (G.west);
|
||||
\draw[->] (G.east) -- ++(0.6, 0);
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={(branch|-wi.north) (G.south east)}, inner sep=6pt, draw, dashed, fill=black!20!white] (Gp) {};
|
||||
\node[below left] at (Gp.north east) {$G\prime$};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:figs/detail_control_cf_input_uncertainty.png]]
|
||||
|
||||
#+begin_src latex :file detail_control_cf_arch_tunable_params.pdf
|
||||
\tikzset{block/.default={0.8cm}{0.6cm}}
|
||||
\tikzset{addb/.append style={scale=0.7}}
|
||||
\tikzset{node distance=0.6}
|
||||
\def\cdist{0.7}
|
||||
|
||||
\begin{tikzpicture}
|
||||
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
|
||||
\node[block, right=of addfb] (Hh){$H_H^{-1}$};
|
||||
\node[block, right=of Hh] (Ginv){$G^{-1}$};
|
||||
\node[block, right=of Ginv] (G){$G^\prime$};
|
||||
\node[addb={+}{}{}{}{}, right=of G] (adddy){};
|
||||
\node[addb={+}{}{}{}{}, below right=1.2 and 0.3 of adddy] (addn) {};
|
||||
\node[block] (Hl) at (Hh|-addn) {$H_L$};
|
||||
|
||||
\node[color=colorred] (wb) at ($0.5*(Hh.south) + 0.5*(Hl.north)$) {$\bullet$};
|
||||
\draw[-, color=colorred] ($(wb) + (-0.6, 0)$)node[left]{$\omega_0$} -- (wb.center);
|
||||
\draw[->, color=colorred] (wb.center) -- (Hh.south);
|
||||
\draw[->, color=colorred] (wb.center) -- (Hl.north);
|
||||
|
||||
\draw[->] (addfb.east) -- (Hh.west);
|
||||
\draw[->] (Hh.east) -- (Ginv.west);
|
||||
\draw[->] (Ginv.east) -- (G.west) node[above left]{$u$};
|
||||
\draw[->] (G.east) -- (adddy.west);
|
||||
\draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$};
|
||||
\draw[->] (G-|addn)node[branch]{} -- (addn.north);
|
||||
\draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$};
|
||||
\draw[<-] (addfb.west) -- ++(-\cdist, 0) node[above right](r){$r$};
|
||||
\draw[->] (addn.west) -- (Hl.east);
|
||||
\draw[->] (Hl.west) -| (addfb.south);
|
||||
\draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$};
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={(Hl.south -| Ginv.east) (r.north west)}, inner sep=4pt, draw, fill=black!20!white, dashed, label={RT controller}] (Kfb) {};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
[[file:figs/detail_control_cf_arch_tunable_params.png]]
|
||||
238
matlab/dehaeze26_decoupling.m
Normal file
@@ -0,0 +1,238 @@
|
||||
%% Clear Workspace and Close figures
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Path for functions, data and scripts
|
||||
addpath('./src/'); % Path for functions
|
||||
|
||||
%% Colors for the figures
|
||||
colors = colororder;
|
||||
|
||||
%% Initialize Frequency Vector
|
||||
freqs = logspace(-1, 3, 1000);
|
||||
|
||||
%% Analytical Complementary Filters - Effect of alpha
|
||||
freqs_study = logspace(-2, 2, 1000);
|
||||
alphas = [0.1, 1, 10];
|
||||
w0 = 2*pi*1;
|
||||
s = tf('s');
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
for i = 1:length(alphas)
|
||||
alpha = alphas(i);
|
||||
Hh2 = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
Hl2 = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
plot(freqs_study, abs(squeeze(freqresp(Hh2, freqs_study, 'Hz'))), 'color', colors(i,:), 'DisplayName', sprintf('$\\alpha = %g$', alphas(i)));
|
||||
plot(freqs_study, abs(squeeze(freqresp(Hl2, freqs_study, 'Hz'))), 'color', colors(i,:), 'HandleVisibility', 'off');
|
||||
end
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Relative Frequency $\frac{\omega}{\omega_0}$'); ylabel('Magnitude');
|
||||
hold off;
|
||||
ylim([1e-3, 20]);
|
||||
leg = legend('location', 'northeast', 'FontSize', 8);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
|
||||
%% Analytical Complementary Filters - Effect of w0
|
||||
freqs_study = logspace(-1, 3, 1000);
|
||||
alpha = [1];
|
||||
w0s = [2*pi*1, 2*pi*10, 2*pi*100];
|
||||
s = tf('s');
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
for i = 1:length(w0s)
|
||||
w0 =w0s(i);
|
||||
Hh2 = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
Hl2 = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
plot(freqs_study, abs(squeeze(freqresp(Hh2, freqs_study, 'Hz'))), 'color', colors(i,:), 'DisplayName', sprintf('$\\omega_0 = %g$ Hz', w0/2/pi));
|
||||
plot(freqs_study, abs(squeeze(freqresp(Hl2, freqs_study, 'Hz'))), 'color', colors(i,:), 'HandleVisibility', 'off');
|
||||
end
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||
hold off;
|
||||
xlim([freqs_study(1), freqs_study(end)]); ylim([1e-3, 20]);
|
||||
leg = legend('location', 'southeast', 'FontSize', 8);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
|
||||
%% Test model
|
||||
freqs = logspace(0, 3, 1000); % Frequency Vector [Hz]
|
||||
|
||||
m = 20; % mass [kg]
|
||||
k = 1e6; % stiffness [N/m]
|
||||
c = 1e2; % damping [N/(m/s)]
|
||||
|
||||
% Plant dynamics
|
||||
G = 1/(m*s^2 + c*s + k);
|
||||
|
||||
% Uncertainty weight
|
||||
wI = generateWF('n', 2, 'w0', 2*pi*50, 'G0', 0.1, 'Ginf', 10, 'Gc', 1);
|
||||
|
||||
%% Bode plot of the plant with dynamical uncertainty
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
% Magnitude
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G, freqs, 'Hz'))), 'k-', 'DisplayName', 'G');
|
||||
plotMagUncertainty(wI, freqs, 'G', G, 'DisplayName', '$\Pi_i$');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-8, 7e-5]);
|
||||
hold off;
|
||||
leg = legend('location', 'northeast', 'FontSize', 8);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
|
||||
% Phase
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
plotPhaseUncertainty(wI, freqs, 'G', G);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G, freqs, 'Hz')))), 'k-');
|
||||
set(gca,'xscale','log');
|
||||
yticks(-360:90:90);
|
||||
ylim([-270 45]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
|
||||
%% Analytical Complementary Filters
|
||||
w0 = 2*pi*20;
|
||||
alpha = 1;
|
||||
|
||||
Hh = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
Hl = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
|
||||
%% Specifications
|
||||
figure;
|
||||
hold on;
|
||||
plot([1, 100], [0.01, 100], ':', 'color', colors(2,:));
|
||||
plot([300, 1000], [0.01, 0.01], ':', 'color', colors(1,:));
|
||||
plot(freqs, 1./abs(squeeze(freqresp(wI, freqs, 'Hz'))), ':', 'color', colors(1,:));
|
||||
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'color', colors(1,:));
|
||||
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', 'color', colors(2,:));
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||
hold off;
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
ylim([1e-3, 10]);
|
||||
xticks([0.1, 1, 10, 100, 1000]);
|
||||
|
||||
%% Obtained controller
|
||||
omega = 2*pi*1000;
|
||||
|
||||
K = 1/(Hh*G) * 1/((1+s/omega+(s/omega)^2));
|
||||
K = zpk(minreal(K));
|
||||
|
||||
%% Bode plot of the controller K
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
% Magnitude
|
||||
ax1 = nexttile([2, 1]);
|
||||
plot(freqs, abs(squeeze(freqresp(K*Hl, freqs, 'Hz'))), 'k-');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
|
||||
ylim([8e3, 1e8])
|
||||
|
||||
% Phase
|
||||
ax2 = nexttile;
|
||||
plot(freqs, 180/pi*angle(squeeze(freqresp(K*Hl, freqs, 'Hz'))), 'k-');
|
||||
set(gca,'xscale','log');
|
||||
yticks(-180:45:180);
|
||||
ylim([-180 45]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
|
||||
num_delta_points = 50;
|
||||
theta = linspace(0, 2*pi, num_delta_points);
|
||||
delta_points = exp(1j * theta);
|
||||
|
||||
% Get frequency responses for all components
|
||||
G_resp = squeeze(freqresp(G, freqs, 'Hz'));
|
||||
K_resp = squeeze(freqresp(K, freqs, 'Hz'));
|
||||
Hl_resp = squeeze(freqresp(Hl, freqs, 'Hz'));
|
||||
wI_resp = squeeze(freqresp(wI, freqs, 'Hz'));
|
||||
|
||||
% Calculate nominal responses
|
||||
nom_L = G_resp .* K_resp .* Hl_resp;
|
||||
nom_S = 1 ./ (1 + nom_L);
|
||||
nom_T = nom_L ./ (1 + nom_L);
|
||||
|
||||
% Store all the points in the complex plane that L can take
|
||||
loop_region_points = zeros(length(freqs), num_delta_points);
|
||||
|
||||
% Initialize arrays to store magnitude bounds
|
||||
S_mag_min = ones(length(freqs), 1) * inf;
|
||||
S_mag_max = zeros(length(freqs), 1);
|
||||
T_mag_min = ones(length(freqs), 1) * inf;
|
||||
T_mag_max = zeros(length(freqs), 1);
|
||||
|
||||
% Calculate magnitude bounds for all delta values
|
||||
for i = 1:num_delta_points
|
||||
% Perturbed loop gain
|
||||
loop_perturbed = nom_L .* (1 + wI_resp .* delta_points(i));
|
||||
loop_region_points(:,i) = loop_perturbed;
|
||||
|
||||
% Perturbed sensitivity function
|
||||
S_perturbed = 1 ./ (1 + loop_perturbed);
|
||||
S_mag = abs(S_perturbed);
|
||||
|
||||
% Update S magnitude bounds
|
||||
S_mag_min = min(S_mag_min, S_mag);
|
||||
S_mag_max = max(S_mag_max, S_mag);
|
||||
|
||||
% Perturbed complementary sensitivity function
|
||||
T_perturbed = loop_perturbed ./ (1 + loop_perturbed);
|
||||
T_mag = abs(T_perturbed);
|
||||
|
||||
% Update T magnitude bounds
|
||||
T_mag_min = min(T_mag_min, T_mag);
|
||||
T_mag_max = max(T_mag_max, T_mag);
|
||||
end
|
||||
|
||||
% At frequencies where |wI| > 1, T min is zero
|
||||
T_mag_min(abs(wI_resp)>1) = 1e-10;
|
||||
|
||||
%% Nyquist plot to check Robust Stability
|
||||
figure;
|
||||
hold on;
|
||||
plot(real(squeeze(freqresp(G*K*Hl, freqs, 'Hz'))), imag(squeeze(freqresp(G*K*Hl, freqs, 'Hz'))), 'k', 'DisplayName', '$L(j\omega)$ - Nominal');
|
||||
plot(alphaShape(real(loop_region_points(:)), imag(loop_region_points(:)), 0.1), 'FaceColor', [0, 0, 0], 'EdgeColor', 'none', 'FaceAlpha', 0.3, 'DisplayName', '$L(j\omega)$ - $\forall G \in \Pi_i$');
|
||||
plot(-1, 0, 'k+', 'MarkerSize', 5, 'HandleVisibility', 'off');
|
||||
hold off;
|
||||
grid on;
|
||||
axis equal
|
||||
xlim([-1.4, 0.2]); ylim([-1.2, 0.4]);
|
||||
xticks(-1.4:0.2:0.2); yticks(-1.2:0.2:0.4);
|
||||
xlabel('Real Part'); ylabel('Imaginary Part');
|
||||
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
|
||||
%% Robust Performance
|
||||
figure;
|
||||
hold on;
|
||||
plot(freqs, abs(nom_S), 'color', colors(2,:), 'DisplayName', '$|S|$ - Nom.');
|
||||
plot(freqs, abs(nom_T), 'color', colors(1,:), 'DisplayName', '$|T|$ - Nom.');
|
||||
|
||||
patch([freqs, fliplr(freqs)], [S_mag_max', fliplr(S_mag_min')], colors(2,:), 'FaceAlpha', 0.2, 'EdgeColor', 'none', 'HandleVisibility', 'off');
|
||||
patch([freqs, fliplr(freqs)], [T_mag_max', fliplr(T_mag_min')], colors(1,:), 'FaceAlpha', 0.2, 'EdgeColor', 'none', 'HandleVisibility', 'off');
|
||||
|
||||
plot([1, 100], [0.01, 100], ':', 'color', colors(2,:), 'DisplayName', 'Specs.');
|
||||
plot([300, 1000], [0.01, 0.01], ':', 'color', colors(1,:), 'DisplayName', 'Specs.');
|
||||
plot(freqs, 1./abs(squeeze(freqresp(wI, freqs, 'Hz'))), ':', 'color', colors(1,:), 'HandleVisibility', 'off');
|
||||
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
hold off;
|
||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
ylim([1e-4, 5]);
|
||||
xticks([0.1, 1, 10, 100, 1000]);
|
||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 3);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
1
matlab/figs
Symbolic link
@@ -0,0 +1 @@
|
||||
../paper/figs
|
||||
529
matlab/index.org
Normal file
@@ -0,0 +1,529 @@
|
||||
#+TITLE: Closed-Loop Shaping using Complementary Filters
|
||||
:DRAWER:
|
||||
#+LANGUAGE: en
|
||||
#+EMAIL: dehaeze.thomas@gmail.com
|
||||
#+AUTHOR: Dehaeze Thomas
|
||||
|
||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||
#+PROPERTY: header-args:matlab+ :comments no
|
||||
#+PROPERTY: header-args:matlab+ :exports none
|
||||
#+PROPERTY: header-args:matlab+ :results none
|
||||
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||
#+PROPERTY: header-args:matlab+ :noweb yes
|
||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||
#+PROPERTY: header-args:matlab+ :tangle dehaeze26_control.m
|
||||
:END:
|
||||
|
||||
* Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :noweb yes :results silent
|
||||
<<m-init-path-tangle>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :noweb yes :results silent
|
||||
<<m-init-other>>
|
||||
|
||||
%% Initialize Frequency Vector
|
||||
freqs = logspace(-1, 3, 1000);
|
||||
#+end_src
|
||||
|
||||
* Complementary filter design
|
||||
#+begin_src matlab :exports none :results none
|
||||
%% Analytical Complementary Filters - Effect of alpha
|
||||
freqs_study = logspace(-2, 2, 1000);
|
||||
alphas = [0.1, 1, 10];
|
||||
w0 = 2*pi*1;
|
||||
s = tf('s');
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
for i = 1:length(alphas)
|
||||
alpha = alphas(i);
|
||||
Hh2 = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
Hl2 = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
plot(freqs_study, abs(squeeze(freqresp(Hh2, freqs_study, 'Hz'))), 'color', colors(i,:), 'DisplayName', sprintf('$\\alpha = %g$', alphas(i)));
|
||||
plot(freqs_study, abs(squeeze(freqresp(Hl2, freqs_study, 'Hz'))), 'color', colors(i,:), 'HandleVisibility', 'off');
|
||||
end
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Relative Frequency $\frac{\omega}{\omega_0}$'); ylabel('Magnitude');
|
||||
hold off;
|
||||
ylim([1e-3, 20]);
|
||||
leg = legend('location', 'northeast', 'FontSize', 8);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/detail_control_cf_analytical_effect_alpha.pdf', 'width', 'half', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results none
|
||||
%% Analytical Complementary Filters - Effect of w0
|
||||
freqs_study = logspace(-1, 3, 1000);
|
||||
alpha = [1];
|
||||
w0s = [2*pi*1, 2*pi*10, 2*pi*100];
|
||||
s = tf('s');
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
for i = 1:length(w0s)
|
||||
w0 =w0s(i);
|
||||
Hh2 = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
Hl2 = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
plot(freqs_study, abs(squeeze(freqresp(Hh2, freqs_study, 'Hz'))), 'color', colors(i,:), 'DisplayName', sprintf('$\\omega_0 = %g$ Hz', w0/2/pi));
|
||||
plot(freqs_study, abs(squeeze(freqresp(Hl2, freqs_study, 'Hz'))), 'color', colors(i,:), 'HandleVisibility', 'off');
|
||||
end
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||
hold off;
|
||||
xlim([freqs_study(1), freqs_study(end)]); ylim([1e-3, 20]);
|
||||
leg = legend('location', 'southeast', 'FontSize', 8);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/detail_control_cf_analytical_effect_w0.pdf', 'width', 'half', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
* Numerical Example
|
||||
*** Plant
|
||||
#+begin_src matlab
|
||||
%% Test model
|
||||
freqs = logspace(0, 3, 1000); % Frequency Vector [Hz]
|
||||
|
||||
m = 20; % mass [kg]
|
||||
k = 1e6; % stiffness [N/m]
|
||||
c = 1e2; % damping [N/(m/s)]
|
||||
|
||||
% Plant dynamics
|
||||
G = 1/(m*s^2 + c*s + k);
|
||||
|
||||
% Uncertainty weight
|
||||
wI = generateWF('n', 2, 'w0', 2*pi*50, 'G0', 0.1, 'Ginf', 10, 'Gc', 1);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results none
|
||||
%% Bode plot of the plant with dynamical uncertainty
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
% Magnitude
|
||||
ax1 = nexttile([2,1]);
|
||||
hold on;
|
||||
plot(freqs, abs(squeeze(freqresp(G, freqs, 'Hz'))), 'k-', 'DisplayName', 'G');
|
||||
plotMagUncertainty(wI, freqs, 'G', G, 'DisplayName', '$\Pi_i$');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-8, 7e-5]);
|
||||
hold off;
|
||||
leg = legend('location', 'northeast', 'FontSize', 8);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
|
||||
% Phase
|
||||
ax2 = nexttile;
|
||||
hold on;
|
||||
plotPhaseUncertainty(wI, freqs, 'G', G);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G, freqs, 'Hz')))), 'k-');
|
||||
set(gca,'xscale','log');
|
||||
yticks(-360:90:90);
|
||||
ylim([-270 45]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
hold off;
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/detail_control_cf_bode_plot_mech_sys.pdf', 'width', 'half', 'height', 450);
|
||||
#+end_src
|
||||
|
||||
*** Requirements and choice of complementary filters
|
||||
|
||||
#+begin_src matlab
|
||||
%% Analytical Complementary Filters
|
||||
w0 = 2*pi*20;
|
||||
alpha = 1;
|
||||
|
||||
Hh = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
Hl = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results none
|
||||
%% Specifications
|
||||
figure;
|
||||
hold on;
|
||||
plot([1, 100], [0.01, 100], ':', 'color', colors(2,:));
|
||||
plot([300, 1000], [0.01, 0.01], ':', 'color', colors(1,:));
|
||||
plot(freqs, 1./abs(squeeze(freqresp(wI, freqs, 'Hz'))), ':', 'color', colors(1,:));
|
||||
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'color', colors(1,:));
|
||||
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', 'color', colors(2,:));
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||
hold off;
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
ylim([1e-3, 10]);
|
||||
xticks([0.1, 1, 10, 100, 1000]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
% exportFig('figs/detail_control_cf_specs_S_T.pdf', 'width', 'half', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
*** Controller analysis
|
||||
|
||||
#+begin_src matlab
|
||||
%% Obtained controller
|
||||
omega = 2*pi*1000;
|
||||
|
||||
K = 1/(Hh*G) * 1/((1+s/omega+(s/omega)^2));
|
||||
K = zpk(minreal(K));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results none
|
||||
%% Bode plot of the controller K
|
||||
figure;
|
||||
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
|
||||
|
||||
% Magnitude
|
||||
ax1 = nexttile([2, 1]);
|
||||
plot(freqs, abs(squeeze(freqresp(K*Hl, freqs, 'Hz'))), 'k-');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
|
||||
ylim([8e3, 1e8])
|
||||
|
||||
% Phase
|
||||
ax2 = nexttile;
|
||||
plot(freqs, 180/pi*angle(squeeze(freqresp(K*Hl, freqs, 'Hz'))), 'k-');
|
||||
set(gca,'xscale','log');
|
||||
yticks(-180:45:180);
|
||||
ylim([-180 45]);
|
||||
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/detail_control_cf_bode_Kfb.pdf', 'width', 'half', 'height', 500);
|
||||
#+end_src
|
||||
|
||||
*** Robustness and Performance analysis
|
||||
|
||||
#+begin_src matlab
|
||||
num_delta_points = 50;
|
||||
theta = linspace(0, 2*pi, num_delta_points);
|
||||
delta_points = exp(1j * theta);
|
||||
|
||||
% Get frequency responses for all components
|
||||
G_resp = squeeze(freqresp(G, freqs, 'Hz'));
|
||||
K_resp = squeeze(freqresp(K, freqs, 'Hz'));
|
||||
Hl_resp = squeeze(freqresp(Hl, freqs, 'Hz'));
|
||||
wI_resp = squeeze(freqresp(wI, freqs, 'Hz'));
|
||||
|
||||
% Calculate nominal responses
|
||||
nom_L = G_resp .* K_resp .* Hl_resp;
|
||||
nom_S = 1 ./ (1 + nom_L);
|
||||
nom_T = nom_L ./ (1 + nom_L);
|
||||
|
||||
% Store all the points in the complex plane that L can take
|
||||
loop_region_points = zeros(length(freqs), num_delta_points);
|
||||
|
||||
% Initialize arrays to store magnitude bounds
|
||||
S_mag_min = ones(length(freqs), 1) * inf;
|
||||
S_mag_max = zeros(length(freqs), 1);
|
||||
T_mag_min = ones(length(freqs), 1) * inf;
|
||||
T_mag_max = zeros(length(freqs), 1);
|
||||
|
||||
% Calculate magnitude bounds for all delta values
|
||||
for i = 1:num_delta_points
|
||||
% Perturbed loop gain
|
||||
loop_perturbed = nom_L .* (1 + wI_resp .* delta_points(i));
|
||||
loop_region_points(:,i) = loop_perturbed;
|
||||
|
||||
% Perturbed sensitivity function
|
||||
S_perturbed = 1 ./ (1 + loop_perturbed);
|
||||
S_mag = abs(S_perturbed);
|
||||
|
||||
% Update S magnitude bounds
|
||||
S_mag_min = min(S_mag_min, S_mag);
|
||||
S_mag_max = max(S_mag_max, S_mag);
|
||||
|
||||
% Perturbed complementary sensitivity function
|
||||
T_perturbed = loop_perturbed ./ (1 + loop_perturbed);
|
||||
T_mag = abs(T_perturbed);
|
||||
|
||||
% Update T magnitude bounds
|
||||
T_mag_min = min(T_mag_min, T_mag);
|
||||
T_mag_max = max(T_mag_max, T_mag);
|
||||
end
|
||||
|
||||
% At frequencies where |wI| > 1, T min is zero
|
||||
T_mag_min(abs(wI_resp)>1) = 1e-10;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
%% Nyquist plot to check Robust Stability
|
||||
figure;
|
||||
hold on;
|
||||
plot(real(squeeze(freqresp(G*K*Hl, freqs, 'Hz'))), imag(squeeze(freqresp(G*K*Hl, freqs, 'Hz'))), 'k', 'DisplayName', '$L(j\omega)$ - Nominal');
|
||||
plot(alphaShape(real(loop_region_points(:)), imag(loop_region_points(:)), 0.1), 'FaceColor', [0, 0, 0], 'EdgeColor', 'none', 'FaceAlpha', 0.3, 'DisplayName', '$L(j\omega)$ - $\forall G \in \Pi_i$');
|
||||
plot(-1, 0, 'k+', 'MarkerSize', 5, 'HandleVisibility', 'off');
|
||||
hold off;
|
||||
grid on;
|
||||
axis equal
|
||||
xlim([-1.4, 0.2]); ylim([-1.2, 0.4]);
|
||||
xticks(-1.4:0.2:0.2); yticks(-1.2:0.2:0.4);
|
||||
xlabel('Real Part'); ylabel('Imaginary Part');
|
||||
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/detail_control_cf_nyquist_robustness', 'width', 'half', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results none
|
||||
%% Robust Performance
|
||||
figure;
|
||||
hold on;
|
||||
plot(freqs, abs(nom_S), 'color', colors(2,:), 'DisplayName', '$|S|$ - Nom.');
|
||||
plot(freqs, abs(nom_T), 'color', colors(1,:), 'DisplayName', '$|T|$ - Nom.');
|
||||
|
||||
patch([freqs, fliplr(freqs)], [S_mag_max', fliplr(S_mag_min')], colors(2,:), 'FaceAlpha', 0.2, 'EdgeColor', 'none', 'HandleVisibility', 'off');
|
||||
patch([freqs, fliplr(freqs)], [T_mag_max', fliplr(T_mag_min')], colors(1,:), 'FaceAlpha', 0.2, 'EdgeColor', 'none', 'HandleVisibility', 'off');
|
||||
|
||||
plot([1, 100], [0.01, 100], ':', 'color', colors(2,:), 'DisplayName', 'Specs.');
|
||||
plot([300, 1000], [0.01, 0.01], ':', 'color', colors(1,:), 'DisplayName', 'Specs.');
|
||||
plot(freqs, 1./abs(squeeze(freqresp(wI, freqs, 'Hz'))), ':', 'color', colors(1,:), 'HandleVisibility', 'off');
|
||||
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
hold off;
|
||||
xlabel('Frequency [Hz]'); ylabel('Magnitude');
|
||||
xlim([freqs(1), freqs(end)]);
|
||||
ylim([1e-4, 5]);
|
||||
xticks([0.1, 1, 10, 100, 1000]);
|
||||
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 3);
|
||||
leg.ItemTokenSize(1) = 18;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/detail_control_cf_robust_perf.pdf', 'width', 'half', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
* Matlab Functions :noexport:
|
||||
** =generateWF=: Generate Weighting Functions
|
||||
|
||||
#+begin_src matlab :tangle src/generateWF.m :comments none :mkdirp yes :eval no
|
||||
function [W] = generateWF(args)
|
||||
% generateWF -
|
||||
%
|
||||
% Syntax: [W] = generateWeight(args)
|
||||
%
|
||||
% Inputs:
|
||||
% - n - Weight Order (integer)
|
||||
% - G0 - Low frequency Gain
|
||||
% - G1 - High frequency Gain
|
||||
% - Gc - Gain of the weight at frequency w0
|
||||
% - w0 - Frequency at which |W(j w0)| = Gc [rad/s]
|
||||
%
|
||||
% Outputs:
|
||||
% - W - Generated Weighting Function
|
||||
|
||||
%% Argument validation
|
||||
arguments
|
||||
args.n (1,1) double {mustBeInteger, mustBePositive} = 1
|
||||
args.G0 (1,1) double {mustBeNumeric, mustBePositive} = 0.1
|
||||
args.Ginf (1,1) double {mustBeNumeric, mustBePositive} = 10
|
||||
args.Gc (1,1) double {mustBeNumeric, mustBePositive} = 1
|
||||
args.w0 (1,1) double {mustBeNumeric, mustBePositive} = 1
|
||||
end
|
||||
|
||||
% Verification of correct relation between G0, Gc and Ginf
|
||||
mustBeBetween(args.G0, args.Gc, args.Ginf);
|
||||
|
||||
%% Initialize the Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Create the weighting function according to formula
|
||||
W = (((1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.Ginf)^(2/args.n)))*s + ...
|
||||
(args.G0/args.Gc)^(1/args.n))/...
|
||||
((1/args.Ginf)^(1/args.n)*(1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.Ginf)^(2/args.n)))*s + ...
|
||||
(1/args.Gc)^(1/args.n)))^args.n;
|
||||
|
||||
%% Custom validation function
|
||||
function mustBeBetween(a,b,c)
|
||||
if ~((a > b && b > c) || (c > b && b > a))
|
||||
eid = 'createWeight:inputError';
|
||||
msg = 'Gc should be between G0 and Ginf.';
|
||||
throwAsCaller(MException(eid,msg))
|
||||
end
|
||||
#+end_src
|
||||
|
||||
** =generateCF=: Generate Complementary Filters
|
||||
|
||||
#+begin_src matlab :tangle src/generateCF.m :comments none :mkdirp yes :eval no
|
||||
function [H1, H2] = generateCF(W1, W2, args)
|
||||
% generateCF -
|
||||
%
|
||||
% Syntax: [H1, H2] = generateCF(W1, W2, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - W1 - Weighting Function for H1
|
||||
% - W2 - Weighting Function for H2
|
||||
% - args:
|
||||
% - method - H-Infinity solver ('lmi' or 'ric')
|
||||
% - display - Display synthesis results ('on' or 'off')
|
||||
%
|
||||
% Outputs:
|
||||
% - H1 - Generated H1 Filter
|
||||
% - H2 - Generated H2 Filter
|
||||
|
||||
%% Argument validation
|
||||
arguments
|
||||
W1
|
||||
W2
|
||||
args.method char {mustBeMember(args.method,{'lmi', 'ric'})} = 'ric'
|
||||
args.display char {mustBeMember(args.display,{'on', 'off'})} = 'on'
|
||||
end
|
||||
|
||||
%% The generalized plant is defined
|
||||
P = [W1 -W1;
|
||||
0 W2;
|
||||
1 0];
|
||||
|
||||
%% The standard H-infinity synthesis is performed
|
||||
[H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', args.method, 'DISPLAY', args.display);
|
||||
|
||||
%% H1 is defined as the complementary of H2
|
||||
H1 = 1 - H2;
|
||||
#+end_src
|
||||
|
||||
** =plotMagUncertainty=
|
||||
|
||||
#+begin_src matlab :tangle src/plotMagUncertainty.m :comments none :mkdirp yes :eval no
|
||||
function [p] = plotMagUncertainty(W, freqs, args)
|
||||
% plotMagUncertainty -
|
||||
%
|
||||
% Syntax: [p] = plotMagUncertainty(W, freqs, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - W - Multiplicative Uncertainty Weight
|
||||
% - freqs - Frequency Vector [Hz]
|
||||
% - args - Optional Arguments:
|
||||
% - G
|
||||
% - color_i
|
||||
% - opacity
|
||||
%
|
||||
% Outputs:
|
||||
% - p - Plot Handle
|
||||
|
||||
arguments
|
||||
W
|
||||
freqs double {mustBeNumeric, mustBeNonnegative}
|
||||
args.G = tf(1)
|
||||
args.color_i (1,1) double {mustBeInteger, mustBeNonnegative} = 0
|
||||
args.opacity (1,1) double {mustBeNumeric, mustBeNonnegative} = 0.3
|
||||
args.DisplayName char = ''
|
||||
end
|
||||
|
||||
% Get defaults colors
|
||||
colors = get(groot, 'defaultAxesColorOrder');
|
||||
|
||||
p = patch([freqs flip(freqs)], ...
|
||||
[abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*(1 + abs(squeeze(freqresp(W, freqs, 'Hz')))); ...
|
||||
flip(abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*max(1 - abs(squeeze(freqresp(W, freqs, 'Hz'))), 1e-6))], 'w', ...
|
||||
'DisplayName', args.DisplayName);
|
||||
|
||||
if args.color_i == 0
|
||||
p.FaceColor = [0; 0; 0];
|
||||
else
|
||||
p.FaceColor = colors(args.color_i, :);
|
||||
end
|
||||
p.EdgeColor = 'none';
|
||||
p.FaceAlpha = args.opacity;
|
||||
|
||||
end
|
||||
#+end_src
|
||||
|
||||
** =plotPhaseUncertainty=
|
||||
|
||||
#+begin_src matlab :tangle src/plotPhaseUncertainty.m :comments none :mkdirp yes :eval no
|
||||
function [p] = plotPhaseUncertainty(W, freqs, args)
|
||||
% plotPhaseUncertainty -
|
||||
%
|
||||
% Syntax: [p] = plotPhaseUncertainty(W, freqs, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - W - Multiplicative Uncertainty Weight
|
||||
% - freqs - Frequency Vector [Hz]
|
||||
% - args - Optional Arguments:
|
||||
% - G
|
||||
% - color_i
|
||||
% - opacity
|
||||
%
|
||||
% Outputs:
|
||||
% - p - Plot Handle
|
||||
|
||||
arguments
|
||||
W
|
||||
freqs double {mustBeNumeric, mustBeNonnegative}
|
||||
args.G = tf(1)
|
||||
args.unwrap logical {mustBeNumericOrLogical} = false
|
||||
args.color_i (1,1) double {mustBeInteger, mustBeNonnegative} = 0
|
||||
args.opacity (1,1) double {mustBeNumeric, mustBePositive} = 0.3
|
||||
args.DisplayName char = ''
|
||||
end
|
||||
|
||||
% Get defaults colors
|
||||
colors = get(groot, 'defaultAxesColorOrder');
|
||||
|
||||
% Compute Phase Uncertainty
|
||||
Dphi = 180/pi*asin(abs(squeeze(freqresp(W, freqs, 'Hz'))));
|
||||
Dphi(abs(squeeze(freqresp(W, freqs, 'Hz'))) > 1) = 360;
|
||||
|
||||
% Compute Plant Phase
|
||||
if args.unwrap
|
||||
G_ang = 180/pi*unwrap(angle(squeeze(freqresp(args.G, freqs, 'Hz'))));
|
||||
else
|
||||
G_ang = 180/pi*angle(squeeze(freqresp(args.G, freqs, 'Hz')));
|
||||
end
|
||||
|
||||
p = patch([freqs flip(freqs)], [G_ang+Dphi; flip(G_ang-Dphi)], 'w', ...
|
||||
'DisplayName', args.DisplayName);
|
||||
|
||||
if args.color_i == 0
|
||||
p.FaceColor = [0; 0; 0];
|
||||
else
|
||||
p.FaceColor = colors(args.color_i, :);
|
||||
end
|
||||
p.EdgeColor = 'none';
|
||||
p.FaceAlpha = args.opacity;
|
||||
|
||||
end
|
||||
#+end_src
|
||||
|
||||
* Helping Functions :noexport:
|
||||
:PROPERTIES:
|
||||
:HEADER-ARGS:matlab+: :tangle no
|
||||
:END:
|
||||
** Initialize Path
|
||||
#+NAME: m-init-path-tangle
|
||||
#+BEGIN_SRC matlab
|
||||
%% Path for functions, data and scripts
|
||||
addpath('./src/'); % Path for functions
|
||||
#+END_SRC
|
||||
|
||||
** Initialize other elements
|
||||
#+NAME: m-init-other
|
||||
#+BEGIN_SRC matlab
|
||||
%% Colors for the figures
|
||||
colors = colororder;
|
||||
#+END_SRC
|
||||
34
matlab/src/generateCF.m
Normal file
@@ -0,0 +1,34 @@
|
||||
function [H1, H2] = generateCF(W1, W2, args)
|
||||
% generateCF -
|
||||
%
|
||||
% Syntax: [H1, H2] = generateCF(W1, W2, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - W1 - Weighting Function for H1
|
||||
% - W2 - Weighting Function for H2
|
||||
% - args:
|
||||
% - method - H-Infinity solver ('lmi' or 'ric')
|
||||
% - display - Display synthesis results ('on' or 'off')
|
||||
%
|
||||
% Outputs:
|
||||
% - H1 - Generated H1 Filter
|
||||
% - H2 - Generated H2 Filter
|
||||
|
||||
%% Argument validation
|
||||
arguments
|
||||
W1
|
||||
W2
|
||||
args.method char {mustBeMember(args.method,{'lmi', 'ric'})} = 'ric'
|
||||
args.display char {mustBeMember(args.display,{'on', 'off'})} = 'on'
|
||||
end
|
||||
|
||||
%% The generalized plant is defined
|
||||
P = [W1 -W1;
|
||||
0 W2;
|
||||
1 0];
|
||||
|
||||
%% The standard H-infinity synthesis is performed
|
||||
[H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', args.method, 'DISPLAY', args.display);
|
||||
|
||||
%% H1 is defined as the complementary of H2
|
||||
H1 = 1 - H2;
|
||||
43
matlab/src/generateWF.m
Normal file
@@ -0,0 +1,43 @@
|
||||
function [W] = generateWF(args)
|
||||
% generateWF -
|
||||
%
|
||||
% Syntax: [W] = generateWeight(args)
|
||||
%
|
||||
% Inputs:
|
||||
% - n - Weight Order (integer)
|
||||
% - G0 - Low frequency Gain
|
||||
% - G1 - High frequency Gain
|
||||
% - Gc - Gain of the weight at frequency w0
|
||||
% - w0 - Frequency at which |W(j w0)| = Gc [rad/s]
|
||||
%
|
||||
% Outputs:
|
||||
% - W - Generated Weighting Function
|
||||
|
||||
%% Argument validation
|
||||
arguments
|
||||
args.n (1,1) double {mustBeInteger, mustBePositive} = 1
|
||||
args.G0 (1,1) double {mustBeNumeric, mustBePositive} = 0.1
|
||||
args.Ginf (1,1) double {mustBeNumeric, mustBePositive} = 10
|
||||
args.Gc (1,1) double {mustBeNumeric, mustBePositive} = 1
|
||||
args.w0 (1,1) double {mustBeNumeric, mustBePositive} = 1
|
||||
end
|
||||
|
||||
% Verification of correct relation between G0, Gc and Ginf
|
||||
mustBeBetween(args.G0, args.Gc, args.Ginf);
|
||||
|
||||
%% Initialize the Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
%% Create the weighting function according to formula
|
||||
W = (((1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.Ginf)^(2/args.n)))*s + ...
|
||||
(args.G0/args.Gc)^(1/args.n))/...
|
||||
((1/args.Ginf)^(1/args.n)*(1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.Ginf)^(2/args.n)))*s + ...
|
||||
(1/args.Gc)^(1/args.n)))^args.n;
|
||||
|
||||
%% Custom validation function
|
||||
function mustBeBetween(a,b,c)
|
||||
if ~((a > b && b > c) || (c > b && b > a))
|
||||
eid = 'createWeight:inputError';
|
||||
msg = 'Gc should be between G0 and Ginf.';
|
||||
throwAsCaller(MException(eid,msg))
|
||||
end
|
||||
42
matlab/src/plotMagUncertainty.m
Normal file
@@ -0,0 +1,42 @@
|
||||
function [p] = plotMagUncertainty(W, freqs, args)
|
||||
% plotMagUncertainty -
|
||||
%
|
||||
% Syntax: [p] = plotMagUncertainty(W, freqs, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - W - Multiplicative Uncertainty Weight
|
||||
% - freqs - Frequency Vector [Hz]
|
||||
% - args - Optional Arguments:
|
||||
% - G
|
||||
% - color_i
|
||||
% - opacity
|
||||
%
|
||||
% Outputs:
|
||||
% - p - Plot Handle
|
||||
|
||||
arguments
|
||||
W
|
||||
freqs double {mustBeNumeric, mustBeNonnegative}
|
||||
args.G = tf(1)
|
||||
args.color_i (1,1) double {mustBeInteger, mustBeNonnegative} = 0
|
||||
args.opacity (1,1) double {mustBeNumeric, mustBeNonnegative} = 0.3
|
||||
args.DisplayName char = ''
|
||||
end
|
||||
|
||||
% Get defaults colors
|
||||
colors = get(groot, 'defaultAxesColorOrder');
|
||||
|
||||
p = patch([freqs flip(freqs)], ...
|
||||
[abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*(1 + abs(squeeze(freqresp(W, freqs, 'Hz')))); ...
|
||||
flip(abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*max(1 - abs(squeeze(freqresp(W, freqs, 'Hz'))), 1e-6))], 'w', ...
|
||||
'DisplayName', args.DisplayName);
|
||||
|
||||
if args.color_i == 0
|
||||
p.FaceColor = [0; 0; 0];
|
||||
else
|
||||
p.FaceColor = colors(args.color_i, :);
|
||||
end
|
||||
p.EdgeColor = 'none';
|
||||
p.FaceAlpha = args.opacity;
|
||||
|
||||
end
|
||||
52
matlab/src/plotPhaseUncertainty.m
Normal file
@@ -0,0 +1,52 @@
|
||||
function [p] = plotPhaseUncertainty(W, freqs, args)
|
||||
% plotPhaseUncertainty -
|
||||
%
|
||||
% Syntax: [p] = plotPhaseUncertainty(W, freqs, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - W - Multiplicative Uncertainty Weight
|
||||
% - freqs - Frequency Vector [Hz]
|
||||
% - args - Optional Arguments:
|
||||
% - G
|
||||
% - color_i
|
||||
% - opacity
|
||||
%
|
||||
% Outputs:
|
||||
% - p - Plot Handle
|
||||
|
||||
arguments
|
||||
W
|
||||
freqs double {mustBeNumeric, mustBeNonnegative}
|
||||
args.G = tf(1)
|
||||
args.unwrap logical {mustBeNumericOrLogical} = false
|
||||
args.color_i (1,1) double {mustBeInteger, mustBeNonnegative} = 0
|
||||
args.opacity (1,1) double {mustBeNumeric, mustBePositive} = 0.3
|
||||
args.DisplayName char = ''
|
||||
end
|
||||
|
||||
% Get defaults colors
|
||||
colors = get(groot, 'defaultAxesColorOrder');
|
||||
|
||||
% Compute Phase Uncertainty
|
||||
Dphi = 180/pi*asin(abs(squeeze(freqresp(W, freqs, 'Hz'))));
|
||||
Dphi(abs(squeeze(freqresp(W, freqs, 'Hz'))) > 1) = 360;
|
||||
|
||||
% Compute Plant Phase
|
||||
if args.unwrap
|
||||
G_ang = 180/pi*unwrap(angle(squeeze(freqresp(args.G, freqs, 'Hz'))));
|
||||
else
|
||||
G_ang = 180/pi*angle(squeeze(freqresp(args.G, freqs, 'Hz')));
|
||||
end
|
||||
|
||||
p = patch([freqs flip(freqs)], [G_ang+Dphi; flip(G_ang-Dphi)], 'w', ...
|
||||
'DisplayName', args.DisplayName);
|
||||
|
||||
if args.color_i == 0
|
||||
p.FaceColor = [0; 0; 0];
|
||||
else
|
||||
p.FaceColor = colors(args.color_i, :);
|
||||
end
|
||||
p.EdgeColor = 'none';
|
||||
p.FaceAlpha = args.opacity;
|
||||
|
||||
end
|
||||
111
paper/.latexmkrc
Normal file
@@ -0,0 +1,111 @@
|
||||
#!/bin/env perl
|
||||
|
||||
# Shebang is only to get syntax highlighting right across GitLab, GitHub and IDEs.
|
||||
# This file is not meant to be run, but read by `latexmk`.
|
||||
|
||||
# ======================================================================================
|
||||
# Perl `latexmk` configuration file
|
||||
# ======================================================================================
|
||||
|
||||
# ======================================================================================
|
||||
# PDF Generation/Building/Compilation
|
||||
# ======================================================================================
|
||||
|
||||
@default_files=('dehaeze26_control.tex');
|
||||
|
||||
# PDF-generating modes are:
|
||||
# 1: pdflatex, as specified by $pdflatex variable (still largely in use)
|
||||
# 2: postscript conversion, as specified by the $ps2pdf variable (useless)
|
||||
# 3: dvi conversion, as specified by the $dvipdf variable (useless)
|
||||
# 4: lualatex, as specified by the $lualatex variable (best)
|
||||
# 5: xelatex, as specified by the $xelatex variable (second best)
|
||||
$pdf_mode = 1;
|
||||
|
||||
# Treat undefined references and citations as well as multiply defined references as
|
||||
# ERRORS instead of WARNINGS.
|
||||
# This is only checked in the *last* run, since naturally, there are undefined references
|
||||
# in initial runs.
|
||||
# This setting is potentially annoying when debugging/editing, but highly desirable
|
||||
# in the CI pipeline, where such a warning should result in a failed pipeline, since the
|
||||
# final document is incomplete/corrupted.
|
||||
#
|
||||
# However, I could not eradicate all warnings, so that `latexmk` currently fails with
|
||||
# this option enabled.
|
||||
# Specifically, `microtype` fails together with `fontawesome`/`fontawesome5`, see:
|
||||
# https://tex.stackexchange.com/a/547514/120853
|
||||
# The fix in that answer did not help.
|
||||
# Setting `verbose=silent` to mute `microtype` warnings did not work.
|
||||
# Switching between `fontawesome` and `fontawesome5` did not help.
|
||||
$warnings_as_errors = 0;
|
||||
|
||||
# Show used CPU time. Looks like: https://tex.stackexchange.com/a/312224/120853
|
||||
$show_time = 1;
|
||||
|
||||
# Default is 5; we seem to need more owed to the complexity of the document.
|
||||
# Actual documents probably don't need this many since they won't use all features,
|
||||
# plus won't be compiling from cold each time.
|
||||
$max_repeat=7;
|
||||
|
||||
# --shell-escape option (execution of code outside of latex) is required for the
|
||||
#'svg' package.
|
||||
# It converts raw SVG files to the PDF+PDF_TEX combo using InkScape.
|
||||
#
|
||||
# SyncTeX allows to jump between source (code) and output (PDF) in IDEs with support
|
||||
# (many have it). A value of `1` is enabled (gzipped), `-1` is enabled but uncompressed,
|
||||
# `0` is off.
|
||||
# Testing in VSCode w/ LaTeX Workshop only worked for the compressed version.
|
||||
# Adjust this as needed. Of course, only relevant for local use, no effect on a remote
|
||||
# CI pipeline (except for slower compilation, probably).
|
||||
#
|
||||
# %O and %S will forward Options and the Source file, respectively, given to latexmk.
|
||||
#
|
||||
# `set_tex_cmds` applies to all *latex commands (latex, xelatex, lualatex, ...), so
|
||||
# no need to specify these each. This allows to simply change `$pdf_mode` to get a
|
||||
# different engine. Check if this works with `latexmk --commands`.
|
||||
set_tex_cmds("--shell-escape -interaction=nonstopmode --synctex=1 %O %S");
|
||||
|
||||
# Use default pdf viewer
|
||||
$pdf_previewer = 'zathura';
|
||||
|
||||
# option 2 is same as 1 (run biber when necessary), but also deletes the
|
||||
# regeneratable bbl-file in a clenaup (`latexmk -c`). Do not use if original
|
||||
# bib file is not available!
|
||||
$bibtex_use = 2; # default: 1
|
||||
|
||||
# Change default `biber` call, help catch errors faster/clearer. See
|
||||
# https://web.archive.org/web/20200526101657/https://www.semipol.de/2018/06/12/latex-best-practices.html#database-entries
|
||||
$biber = "biber --validate-datamodel %O %S";
|
||||
|
||||
# Glossaries
|
||||
add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
|
||||
add_cus_dep('acn', 'acr', 0, 'run_makeglossaries');
|
||||
|
||||
sub run_makeglossaries {
|
||||
if ( $silent ) {
|
||||
system "makeglossaries -q -s '$_[0].ist' '$_[0]'";
|
||||
}
|
||||
else {
|
||||
system "makeglossaries -s '$_[0].ist' '$_[0]'";
|
||||
};
|
||||
}
|
||||
|
||||
# ======================================================================================
|
||||
# Auxiliary Files
|
||||
# ======================================================================================
|
||||
|
||||
# Let latexmk know about generated files, so they can be used to detect if a
|
||||
# rerun is required, or be deleted in a cleanup.
|
||||
# loe: List of Examples (KOMAScript)
|
||||
# lol: List of Listings (`listings` and `minted` packages)
|
||||
# run.xml: biber runs
|
||||
# glg: glossaries log
|
||||
# glstex: generated from glossaries-extra
|
||||
push @generated_exts, 'loe', 'lol', 'run.xml', 'glstex', 'glo', 'gls', 'glg', 'acn', 'acr', 'alg';
|
||||
|
||||
# Also delete the *.glstex files from package glossaries-extra. Problem is,
|
||||
# that that package generates files of the form "basename-digit.glstex" if
|
||||
# multiple glossaries are present. Latexmk looks for "basename.glstex" and so
|
||||
# does not find those. For that purpose, use wildcard.
|
||||
# Also delete files generated by gnuplot/pgfplots contour plots
|
||||
# (.dat, .script, .table).
|
||||
$clean_ext = "%R-*.glstex %R_contourtmp*.*";
|
||||
6343
paper/IEEEtran.cls
Normal file
176
paper/dehaeze26_control.bib
Normal file
@@ -0,0 +1,176 @@
|
||||
@article{furutani04_nanom_cuttin_machin_using_stewar,
|
||||
author = {Furutani, K. and Suzuki, M. and Kudoh, R.},
|
||||
title = {Nanometre-Cutting Machine Using a Stewart-Platform Parallel
|
||||
Mechanism},
|
||||
journal = {Measurement Science and Technology},
|
||||
volume = 15,
|
||||
number = 2,
|
||||
pages = {467--474},
|
||||
year = 2004,
|
||||
doi = {10.1088/0957-0233/15/2/022},
|
||||
url = {https://doi.org/10.1088/0957-0233/15/2/022},
|
||||
keywords = {parallel robot, cubic configuration},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{du14_piezo_actuat_high_precis_flexib,
|
||||
author = {Du, Z. and Shi, R. and Dong, W.},
|
||||
title = {A Piezo-Actuated High-Precision Flexible Parallel Pointing
|
||||
Mechanism: Conceptual Design, Development, and Experiments},
|
||||
journal = {IEEE Transactions on Robotics},
|
||||
volume = 30,
|
||||
number = 1,
|
||||
pages = {131--137},
|
||||
year = 2014,
|
||||
doi = {10.1109/tro.2013.2288800},
|
||||
url = {https://doi.org/10.1109/tro.2013.2288800},
|
||||
keywords = {parallel robot},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{yang19_dynam_model_decoup_contr_flexib,
|
||||
author = {Yang, X. and Wu, H. and Chen, B. and Kang, S. and Cheng, S.},
|
||||
title = {Dynamic Modeling and Decoupled Control of a Flexible
|
||||
Stewart Platform for Vibration Isolation},
|
||||
journal = {Journal of Sound and Vibration},
|
||||
volume = 439,
|
||||
pages = {398--412},
|
||||
year = 2019,
|
||||
doi = {10.1016/j.jsv.2018.10.007},
|
||||
url = {https://doi.org/10.1016/j.jsv.2018.10.007},
|
||||
issn = {0022-460X},
|
||||
keywords = {parallel robot, flexure, decoupled control},
|
||||
month = 1,
|
||||
publisher = {Elsevier BV},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@book{schmidt20_desig_high_perfor_mechat_third_revis_edition,
|
||||
author = {Schmidt, R. M. and Schitter, G. and Rankers, A.},
|
||||
title = {The Design of High Performance Mechatronics - Third Revised
|
||||
Edition},
|
||||
year = 2020,
|
||||
publisher = {Ios Press},
|
||||
isbn = {978-1-64368-050-7},
|
||||
keywords = {favorite},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@book{skogestad07_multiv_feedb_contr,
|
||||
author = {Skogestad, S. and Postlethwaite, I.},
|
||||
title = {Multivariable Feedback Control: Analysis and Design -
|
||||
Second Edition},
|
||||
year = 2007,
|
||||
publisher = {John Wiley},
|
||||
isbn = {0470011688},
|
||||
keywords = {favorite},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@techreport{bibel92_guidel_h,
|
||||
author = {Bibel, J. E. and Malyevac, D. S.},
|
||||
institution = {Naval Surface Warfare Center Dahlgren div va},
|
||||
title = {Guidelines for the selection of weighting functions for
|
||||
H-infinity control},
|
||||
year = 1992,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{jiao18_dynam_model_exper_analy_stewar,
|
||||
author = {Jiao, J. and Wu, Y. and Yu, K. and Zhao, R.},
|
||||
title = {Dynamic Modeling and Experimental Analyses of Stewart
|
||||
Platform With Flexible Hinges},
|
||||
journal = {Journal of Vibration and Control},
|
||||
volume = 25,
|
||||
number = 1,
|
||||
pages = {151--171},
|
||||
year = 2018,
|
||||
doi = {10.1177/1077546318772474},
|
||||
url = {https://doi.org/10.1177/1077546318772474},
|
||||
keywords = {parallel robot, flexure},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{thayer02_six_axis_vibrat_isolat_system,
|
||||
author = {Thayer, D. and Campbell, M. and Vagners, J. and
|
||||
von Flotow, A.},
|
||||
title = {Six-Axis Vibration Isolation System Using Soft Actuators
|
||||
and Multiple Sensors},
|
||||
journal = {Journal of Spacecraft and Rockets},
|
||||
volume = 39,
|
||||
number = 2,
|
||||
pages = {206--212},
|
||||
year = 2002,
|
||||
doi = {10.2514/2.3821},
|
||||
url = {https://doi.org/10.2514/2.3821},
|
||||
keywords = {parallel robot},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{hauge04_sensor_contr_space_based_six,
|
||||
author = {Hauge, G. S. and Campbell, M. E.},
|
||||
title = {Sensors and Control of a Space-Based Six-Axis Vibration
|
||||
Isolation System},
|
||||
journal = {Journal of Sound and Vibration},
|
||||
volume = 269,
|
||||
number = {3-5},
|
||||
pages = {913--931},
|
||||
year = 2004,
|
||||
doi = {10.1016/s0022-460x(03)00206-2},
|
||||
url = {https://doi.org/10.1016/s0022-460x(03)00206-2},
|
||||
keywords = {parallel robot, favorite},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{collette15_sensor_fusion_method_high_perfor,
|
||||
author = {Collette, C. and Matichard, F.},
|
||||
title = {Sensor Fusion Methods for High Performance Active Vibration
|
||||
Isolation Systems},
|
||||
journal = {Journal of Sound and Vibration},
|
||||
volume = 342,
|
||||
pages = {1--21},
|
||||
year = 2015,
|
||||
doi = {10.1016/j.jsv.2015.01.006},
|
||||
url = {https://doi.org/10.1016/j.jsv.2015.01.006},
|
||||
keywords = {complementary filters},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{verma20_virtual_sensor_fusion_high_precis_contr,
|
||||
author = {Verma, M. and Dehaeze, T. and Zhao, G. and
|
||||
Watchi, J. and Collette, C.},
|
||||
title = {Virtual Sensor Fusion for High Precision Control},
|
||||
journal = {Mechanical Systems and Signal Processing},
|
||||
volume = 150,
|
||||
pages = 107241,
|
||||
year = 2020,
|
||||
doi = {10.1016/j.ymssp.2020.107241},
|
||||
url = {https://doi.org/10.1016/j.ymssp.2020.107241},
|
||||
keywords = {complementary filters},
|
||||
}
|
||||
|
||||
|
||||
|
||||
@article{saxena12_advan_inter_model_contr_techn,
|
||||
author = {Saxena, S. and Hote, Y. V.},
|
||||
title = {Advances in Internal Model Control Technique: a Review and
|
||||
Future Prospects},
|
||||
journal = {IETE Technical Review},
|
||||
volume = 29,
|
||||
number = 6,
|
||||
pages = 461,
|
||||
year = 2012,
|
||||
doi = {10.4103/0256-4602.105001},
|
||||
url = {https://doi.org/10.4103/0256-4602.105001},
|
||||
}
|
||||
|
||||
531
paper/dehaeze26_control.org
Normal file
@@ -0,0 +1,531 @@
|
||||
#+TITLE: Closed-Loop Shaping using Complementary Filters
|
||||
:DRAWER:
|
||||
#+BIND: org-latex-image-default-option "scale=1"
|
||||
#+BIND: org-latex-image-default-width ""
|
||||
|
||||
#+OPTIONS: toc:nil date:nil
|
||||
#+AUTHOR:
|
||||
|
||||
#+AUTHOR: @@latex:\IEEEauthorblockN{Dehaeze Thomas}@@
|
||||
#+AUTHOR: @@latex:\IEEEauthorblockA{\textit{European Synchrotron Radiation Facility} \\@@
|
||||
#+AUTHOR: @@latex:Grenoble, France\\@@
|
||||
#+AUTHOR: @@latex:\textit{Precision Mechatronics Laboratory} \\@@
|
||||
#+AUTHOR: @@latex:\textit{University of Liege}, Belgium \\@@
|
||||
#+AUTHOR: @@latex:thomas.dehaeze@esrf.fr@@
|
||||
#+AUTHOR: @@latex:}\and@@
|
||||
#+AUTHOR: @@latex:\IEEEauthorblockN{Verma Mohit}@@
|
||||
#+AUTHOR: @@latex:\IEEEauthorblockA{\textit{BEAMS Department}\\@@
|
||||
#+AUTHOR: @@latex:\textit{Free University of Brussels}, Belgium\\@@
|
||||
#+AUTHOR: @@latex:\textit{Precision Mechatronics Laboratory} \\@@
|
||||
#+AUTHOR: @@latex:\textit{University of Liege}, Belgium \\@@
|
||||
#+AUTHOR: @@latex:mohit.verma@ulb.ac.be@@
|
||||
#+AUTHOR: @@latex:}\and@@
|
||||
#+AUTHOR: @@latex:\IEEEauthorblockN{Collette Christophe}@@
|
||||
#+AUTHOR: @@latex:\IEEEauthorblockA{\textit{BEAMS Department}\\@@
|
||||
#+AUTHOR: @@latex:\textit{Free University of Brussels}, Belgium\\@@
|
||||
#+AUTHOR: @@latex:\textit{Precision Mechatronics Laboratory} \\@@
|
||||
#+AUTHOR: @@latex:\textit{University of Liege}, Belgium \\@@
|
||||
#+AUTHOR: @@latex:ccollett@ulb.ac.be@@
|
||||
#+AUTHOR: @@latex:}@@
|
||||
|
||||
#+LaTeX_CLASS: IEEEtran
|
||||
#+LaTeX_CLASS_OPTIONS: [lettersize,journal]
|
||||
#+LATEX_HEADER: \input{preamble.tex}
|
||||
#+LATEX_HEADER_EXTRA: \input{preamble_extra.tex}
|
||||
# #+LaTeX_HEADER: \addbibresource{dehaeze26_control.bib}
|
||||
|
||||
\bibliographystyle{IEEEtran}
|
||||
|
||||
#+BIND: org-latex-bib-compiler "biber"
|
||||
:END:
|
||||
|
||||
* Build :noexport:
|
||||
#+NAME: startblock
|
||||
#+BEGIN_SRC emacs-lisp :results none :tangle no
|
||||
(add-to-list 'org-latex-classes
|
||||
'("IEEEtran"
|
||||
"\\documentclass{IEEEtran}"
|
||||
("\\section{%s}" . "\\section*{%s}")
|
||||
("\\subsection{%s}" . "\\subsection*{%s}")
|
||||
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
|
||||
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
||||
))
|
||||
|
||||
;; Remove automatic org heading labels
|
||||
(defun my-latex-filter-removeOrgAutoLabels (text backend info)
|
||||
"Org-mode automatically generates labels for headings despite explicit use of `#+LABEL`. This filter forcibly removes all automatically generated org-labels in headings."
|
||||
(when (org-export-derived-backend-p backend 'latex)
|
||||
(replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text)))
|
||||
(add-to-list 'org-export-filter-headline-functions
|
||||
'my-latex-filter-removeOrgAutoLabels)
|
||||
|
||||
;; Remove all org comments in the output LaTeX file
|
||||
(defun delete-org-comments (backend)
|
||||
(loop for comment in (reverse (org-element-map (org-element-parse-buffer)
|
||||
'comment 'identity))
|
||||
do
|
||||
(setf (buffer-substring (org-element-property :begin comment)
|
||||
(org-element-property :end comment))
|
||||
"")))
|
||||
(add-hook 'org-export-before-processing-hook 'delete-org-comments)
|
||||
|
||||
;; Use no package by default
|
||||
(setq org-latex-packages-alist nil)
|
||||
(setq org-latex-default-packages-alist nil)
|
||||
|
||||
;; Do not include the subtitle inside the title
|
||||
(setq org-latex-subtitle-separate t)
|
||||
(setq org-latex-subtitle-format "\\subtitle{%s}")
|
||||
|
||||
(setq org-export-before-parsing-hook '(org-ref-glossary-before-parsing
|
||||
org-ref-acronyms-before-parsing))
|
||||
#+END_SRC
|
||||
|
||||
* Notes :noexport:
|
||||
** Journal
|
||||
|
||||
Mechanical Systems and Signal Processing: https://www.sciencedirect.com/journal/mechanical-systems-and-signal-processing
|
||||
But:
|
||||
#+begin_quote
|
||||
The following subject areas are currently outside the MSSP scope:
|
||||
- *Theoretical control* - papers better suited to a specialist controls journal
|
||||
#+end_quote
|
||||
|
||||
Other option: http://www.ieee-asme-mechatronics.info/
|
||||
|
||||
** TODO [#A] Choose between IEEE and MSSP
|
||||
|
||||
Then, make sure the file well compiles to a PDF
|
||||
|
||||
* Title Page :ignore:
|
||||
#+begin_export latex
|
||||
\begin{abstract}
|
||||
This document describes the most common article elements and how to use the IEEEtran class with \LaTeX \ to produce files that are suitable for submission to the IEEE. IEEEtran can produce conference, journal, and technical note (correspondence) papers with a suitable choice of class options.
|
||||
\end{abstract}
|
||||
|
||||
\begin{IEEEkeywords}
|
||||
Article submission, IEEE, IEEEtran, journal, \LaTeX, paper, template, typesetting.
|
||||
\end{IEEEkeywords}
|
||||
#+end_export
|
||||
|
||||
* Introduction :ignore:
|
||||
|
||||
Once the system is properly decoupled using one of the approaches described in Section ref:sec:detail_control_decoupling, SISO controllers can be individually tuned for each decoupled "directions".
|
||||
Several ways to design a controller to obtain a given performance while ensuring good robustness properties can be implemented.
|
||||
|
||||
In some cases "fixed" controller structures are utilized, such as PI and PID controllers, whose parameters are manually tuned [[cite:&furutani04_nanom_cuttin_machin_using_stewar;&du14_piezo_actuat_high_precis_flexib;&yang19_dynam_model_decoup_contr_flexib]].
|
||||
|
||||
Another popular method is Open-Loop shaping, which was used during the conceptual phase.
|
||||
Open-loop shaping involves tuning the controller through a series of "standard" filters (leads, lags, notches, low-pass filters, ...) to shape the open-loop transfer function $G(s)K(s)$ according to desired specifications, including bandwidth, gain and phase margins [[cite:&schmidt20_desig_high_perfor_mechat_third_revis_edition, chapt. 4.4.7]].
|
||||
Open-Loop shaping is very popular because the open-loop transfer function is a linear function of the controller, making it relatively straightforward to tune the controller to achieve desired open-loop characteristics.
|
||||
Another key advantage is that controllers can be tuned directly from measured frequency response functions of the plant without requiring an explicit model.
|
||||
|
||||
However, the behavior (i.e. performance) of a feedback system is a function of closed-loop transfer functions.
|
||||
Specifications can therefore be expressed in terms of the magnitude of closed-loop transfer functions, such as the sensitivity, plant sensitivity, and complementary sensitivity transfer functions [[cite:&skogestad07_multiv_feedb_contr, chapt. 3]].
|
||||
With open-loop shaping, closed-loop transfer functions are changed only indirectly, which may make it difficult to directly address the specifications that are in terms of the closed-loop transfer functions.
|
||||
|
||||
In order to synthesize a controller that directly shapes the closed-loop transfer functions (and therefore the performance metric), $\mathcal{H}_\infty\text{-synthesis}$ may be used [[cite:&skogestad07_multiv_feedb_contr]].
|
||||
This approach requires a good model of the plant and expertise in selecting weighting functions that will define the wanted shape of different closed-loop transfer functions [[cite:&bibel92_guidel_h]].
|
||||
$\mathcal{H}_{\infty}\text{-synthesis}$ has been applied for the Stewart platform [[cite:&jiao18_dynam_model_exper_analy_stewar]], yet when benchmarked against more basic decentralized controllers, the performance gains proved small [[cite:&thayer02_six_axis_vibrat_isolat_system;&hauge04_sensor_contr_space_based_six]].
|
||||
|
||||
In this section, an alternative controller synthesis scheme is proposed in which complementary filters are used for directly shaping the closed-loop transfer functions (i.e., directly addressing the closed-loop performances).
|
||||
In Section ref:ssec:detail_control_cf_control_arch, the proposed control architecture is presented.
|
||||
In Section ref:ssec:detail_control_cf_trans_perf, typical performance requirements are translated into the shape of the complementary filters.
|
||||
The design of the complementary filters is briefly discussed in Section ref:ssec:detail_control_cf_analytical_complementary_filters, and analytical formulas are proposed such that it is possible to change the closed-loop behavior of the system in real time.
|
||||
Finally, in Section ref:ssec:detail_control_cf_simulations, a numerical example is used to show how the proposed control architecture can be implemented in practice.
|
||||
|
||||
* Control Architecture
|
||||
<<ssec:detail_control_cf_control_arch>>
|
||||
*** Virtual Sensor Fusion
|
||||
|
||||
The idea of using complementary filters in the control architecture originates from sensor fusion techniques [[cite:&collette15_sensor_fusion_method_high_perfor]], where two sensors are combined using complementary filters.
|
||||
Building upon this concept, "virtual sensor fusion" [[cite:&verma20_virtual_sensor_fusion_high_precis_contr]] replaces one physical sensor with a model $G$ of the plant.
|
||||
The corresponding control architecture is illustrated in Figure ref:fig:detail_control_cf_arch, where $G^\prime$ represents the physical plant to be controlled, $G$ is a model of the plant, $k$ is the controller, and $H_L$ and $H_H$ are complementary filters satisfying $H_L(s) + H_H(s) = 1$.
|
||||
In this arrangement, the physical plant is controlled at low frequencies, while the plant model is utilized at high frequencies to enhance robustness.
|
||||
|
||||
#+name: fig:detail_control_cf_arch_and_eq
|
||||
#+caption: Control architecture for virtual sensor fusion (\subref{fig:detail_control_cf_arch}). An equivalent architecture is shown in (\subref{fig:detail_control_cf_arch_eq}). The signals are the reference signal $r$, the output perturbation $d_y$, the measurement noise $n$ and the control input $u$.
|
||||
#+attr_latex: :options [htbp]
|
||||
#+begin_figure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_arch}Virtual Sensor Fusion}
|
||||
#+attr_latex: :options {0.48\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :scale 0.9
|
||||
[[file:figs/detail_control_cf_arch.png]]
|
||||
#+end_subfigure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_arch_eq}Equivalent Architecture}
|
||||
#+attr_latex: :options {0.48\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :scale 0.9
|
||||
[[file:figs/detail_control_cf_arch_eq.png]]
|
||||
#+end_subfigure
|
||||
#+end_figure
|
||||
|
||||
Although the control architecture shown in Figure ref:fig:detail_control_cf_arch appears to be a multi-loop system, it should be noted that no non-linear saturation-type elements are present in the inner loop (containing $k$, $G$, and $H_H$, all numerically implemented).
|
||||
Consequently, this structure is mathematically equivalent to the single-loop architecture illustrated in Figure ref:fig:detail_control_cf_arch_eq.
|
||||
|
||||
*** Asymptotic behavior
|
||||
|
||||
When considering the extreme case of very high values for $k$, the effective controller $K(s)$ converges to the inverse of the plant model multiplied by the inverse of the high-pass filter, as expressed in eqref:eq:detail_control_cf_high_k.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_high_k}
|
||||
\lim_{k\to\infty} K(s) = \lim_{k\to\infty} \frac{k}{1+H_H(s) G(s) k} = \big( H_H(s) G(s) \big)^{-1}
|
||||
\end{equation}
|
||||
|
||||
If the resulting $K$ is improper, a low-pass filter with sufficiently high corner frequency can be added to ensure its causal realization.
|
||||
Furthermore, for $K$ to be stable, both $G$ and $H_H$ must be minimum phase transfer functions.
|
||||
|
||||
With these assumptions, the resulting control architecture is illustrated in Figure ref:fig:detail_control_cf_arch_class, where the complementary filters $H_L$ and $H_H$ remain the only tuning parameters.
|
||||
The dynamics of this closed-loop system are described by equations eqref:eq:detail_control_cf_cl_system_y and eqref:eq:detail_control_cf_cl_system_y.
|
||||
|
||||
#+name: fig:detail_control_cf_arch_class
|
||||
#+caption: Equivalent classical feedback control architecture
|
||||
#+RESULTS:
|
||||
[[file:figs/detail_control_cf_arch_class.png]]
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_sf_cl_tf_K_inf}
|
||||
\begin{align}
|
||||
y &= \frac{ H_H dy + G^{\prime} G^{-1} r - G^{\prime} G^{-1} H_L n }{H_H + G^\prime G^{-1} H_L} \label{eq:detail_control_cf_cl_system_y}\\
|
||||
u &= \frac{ -G^{-1} H_L dy + G^{-1} r - G^{-1} H_L n }{H_H + G^\prime G^{-1} H_L} \label{eq:detail_control_cf_cl_system_u}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
At frequencies where the model accurately represents the physical plant ($G^{-1} G^{\prime} \approx 1$), the denominator simplifies to $H_H + G^\prime G^{-1} H_L \approx H_H + H_L = 1$, and the closed-loop transfer functions are then described by equations eqref:eq:detail_control_cf_cl_performance_y and eqref:eq:detail_control_cf_cl_performance_u.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_sf_cl_tf_K_inf_perfect}
|
||||
\begin{alignat}{5}
|
||||
y &= H_H dy &&+ r &&- H_L n \label{eq:detail_control_cf_cl_performance_y} \\
|
||||
u &= -G^{-1} H_L dy &&+ G^{-1} r &&- G^{-1} H_L n \label{eq:detail_control_cf_cl_performance_u}
|
||||
\end{alignat}
|
||||
\end{subequations}
|
||||
|
||||
The sensitivity transfer function equals the high-pass filter $S = \frac{y}{dy} = H_H$, and the complementary sensitivity transfer function equals the low-pass filter $T = \frac{y}{n} = H_L$.
|
||||
Hence, when the plant model closely approximates the actual dynamics, the closed-loop transfer functions converge to the designed complementary filters, allowing direct translation of performance requirements into the design of the complementary.
|
||||
|
||||
* Translating the performance requirements into the shape of the complementary filters
|
||||
<<ssec:detail_control_cf_trans_perf>>
|
||||
*** Introduction :ignore:
|
||||
Performance specifications in a feedback system can usually be expressed as upper bounds on the magnitudes of closed-loop transfer functions such as the sensitivity and complementary sensitivity transfer functions [[cite:&bibel92_guidel_h]].
|
||||
The design of a controller $K(s)$ to obtain the desired shape of these closed-loop transfer functions is known as closed-loop shaping.
|
||||
|
||||
In the proposed control architecture, the closed-loop transfer functions eqref:eq:detail_control_cf_sf_cl_tf_K_inf are expressed in terms of the complementary filters $H_L(s)$ and $H_H(s)$ rather than directly through the controller $K(s)$.
|
||||
Therefore, performance requirements must be translated into constraints on the shape of these complementary filters.
|
||||
|
||||
*** Nominal Stability (NS)
|
||||
A closed-loop system is stable when all its elements (here $K$, $G^\prime$, and $H_L$) are stable and the sensitivity function $S = \frac{1}{1 + G^\prime K H_L}$ is stable.
|
||||
For the nominal system ($G^\prime = G$), the sensitivity transfer function equals the high-pass filter: $S(s) = H_H(s)$.
|
||||
|
||||
Nominal stability is therefore guaranteed when $H_L$, $H_H$, and $G$ are stable, and both $G$ and $H_H$ are minimum phase (ensuring $K$ is stable).
|
||||
Consequently, stable and minimum phase complementary filters must be employed.
|
||||
|
||||
*** Nominal Performance (NP)
|
||||
|
||||
Performance specifications can be formalized using weighting functions $w_H$ and $w_L$, where performance is achieved when eqref:eq:detail_control_cf_weights is satisfied.
|
||||
The weighting functions define the maximum magnitude of the closed-loop transfer functions as a function of frequency, effectively determining their "shape".
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_weights}
|
||||
\begin{align}
|
||||
|w_H(j\omega) S(j\omega)| &\le 1 \quad \forall\omega\\
|
||||
|w_L(j\omega) T(j\omega)| &\le 1 \quad \forall\omega
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
For the nominal system, $S = H_H$ and $T = H_L$, hence the performance specifications can be converted on the shape of the complementary filters eqref:eq:detail_control_cf_nominal_performance.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_nominal_performance}
|
||||
\Aboxed{\text{NP} \Longleftrightarrow {\begin{cases*}
|
||||
|w_H(j\omega) H_H(j\omega)| \le 1 & \forall\omega \\
|
||||
|w_L(j\omega) H_L(j\omega)| \le 1 & \forall\omega
|
||||
\end{cases*}}}
|
||||
\end{equation}
|
||||
|
||||
For disturbance rejection, the magnitude of the sensitivity function $|S(j\omega)| = |H_H(j\omega)|$ should be minimized, particularly at low frequencies where disturbances are usually most prominent.
|
||||
Similarly, for noise attenuation, the magnitude of the complementary sensitivity function $|T(j\omega)| = |H_L(j\omega)|$ should be minimized, especially at high frequencies where measurement noise typically dominates.
|
||||
Classical stability margins (gain and phase margins) are also related to the maximum amplitude of the sensitivity transfer function.
|
||||
Typically, maintaining $|S|_{\infty} \le 2$ ensures a gain margin of at least 2 and a phase margin of at least $\SI{29}{\degree}$.
|
||||
|
||||
Therefore, by carefully selecting the shape of the complementary filters, nominal performance specifications can be directly addressed in an intuitive manner.
|
||||
|
||||
*** Robust Stability (RS)
|
||||
|
||||
Robust stability refers to a control system's ability to maintain stability despite discrepancies between the actual system $G^\prime$ and the model $G$ used for controller design.
|
||||
These discrepancies may arise from unmodeled dynamics or nonlinearities.
|
||||
|
||||
To represent these model-plant differences, input multiplicative uncertainty as illustrated in Figure ref:fig:detail_control_cf_input_uncertainty is employed.
|
||||
The set of possible plants $\Pi_i$ is described by eqref:eq:detail_control_cf_multiplicative_uncertainty, with the weighting function $w_I$ selected such that all possible plants $G^\prime$ are contained within the set $\Pi_i$.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_multiplicative_uncertainty}
|
||||
\Pi_i: \quad G^\prime(s) = G(s)\big(1 + w_I(s)\Delta_I(s)\big); \quad |\Delta_I(j\omega)| \le 1 \ \forall\omega
|
||||
\end{equation}
|
||||
|
||||
#+name: fig:detail_control_cf_input_uncertainty_nyquist
|
||||
#+caption: Input multiplicative uncertainty to model the differences between the model and the physical plant (\subref{fig:detail_control_cf_input_uncertainty}). Effect of this uncertainty is displayed on the Nyquist plot (\subref{fig:detail_control_cf_nyquist_uncertainty})
|
||||
#+attr_latex: :options [htbp]
|
||||
#+begin_figure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_input_uncertainty}Input multiplicative uncertainty}
|
||||
#+attr_latex: :options {0.48\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :scale 1
|
||||
[[file:figs/detail_control_cf_input_uncertainty.png]]
|
||||
#+end_subfigure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_nyquist_uncertainty}Nyquist plot - Effect of multiplicative uncertainty}
|
||||
#+attr_latex: :options {0.48\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :scale 1
|
||||
[[file:figs/detail_control_cf_nyquist_uncertainty.png]]
|
||||
#+end_subfigure
|
||||
#+end_figure
|
||||
|
||||
When considering input multiplicative uncertainty, robust stability can be derived graphically from the Nyquist plot (illustrated in Figure ref:fig:detail_control_cf_nyquist_uncertainty), yielding to eqref:eq:detail_control_cf_robust_stability_graphically, as demonstrated in [[cite:&skogestad07_multiv_feedb_contr, chapt. 7.5.1]].
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_robust_stability_graphically}
|
||||
\text{RS} \Longleftrightarrow \left|w_I(j\omega) L(j\omega) \right| \le \left| 1 + L(j\omega) \right| \quad \forall\omega
|
||||
\end{equation}
|
||||
|
||||
After algebraic manipulation, robust stability is guaranteed when the low-pass complementary filter $H_L$ satisfies eqref:eq:detail_control_cf_condition_robust_stability.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_condition_robust_stability}
|
||||
\boxed{\text{RS} \Longleftrightarrow |w_I(j\omega) H_L(j\omega)| \le 1 \quad \forall \omega}
|
||||
\end{equation}
|
||||
|
||||
*** Robust Performance (RP)
|
||||
|
||||
Robust performance ensures that performance specifications eqref:eq:detail_control_cf_weights are met even when the plant dynamics fluctuates within specified bounds eqref:eq:detail_control_cf_robust_perf_S.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_robust_perf_S}
|
||||
\text{RP} \Longleftrightarrow |w_H(j\omega) S(j\omega)| \le 1 \quad \forall G^\prime \in \Pi_I, \ \forall\omega
|
||||
\end{equation}
|
||||
|
||||
Transforming this condition into constraints on the complementary filters yields:
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_robust_performance}
|
||||
\boxed{\text{RP} \Longleftrightarrow | w_H(j\omega) H_H(j\omega) | + | w_I(j\omega) H_L(j\omega) | \le 1, \ \forall\omega}
|
||||
\end{equation}
|
||||
|
||||
The robust performance condition effectively combines both nominal performance eqref:eq:detail_control_cf_nominal_performance and robust stability conditions eqref:eq:detail_control_cf_condition_robust_stability.
|
||||
If both NP and RS conditions are satisfied, robust performance will be achieved within a factor of 2 [[cite:&skogestad07_multiv_feedb_contr, chapt. 7.6]].
|
||||
Therefore, for SISO systems, ensuring robust stability and nominal performance is typically sufficient.
|
||||
|
||||
* Complementary filter design
|
||||
<<ssec:detail_control_cf_analytical_complementary_filters>>
|
||||
|
||||
As proposed in Section ref:sec:detail_control_sensor, complementary filters can be shaped using standard $\mathcal{H}_{\infty}\text{-synthesis}$ techniques.
|
||||
This approach is particularly well-suited since performance requirements were expressed as upper bounds on the magnitude of the complementary filters.
|
||||
|
||||
Alternatively, analytical formulas for complementary filters may be employed.
|
||||
For some applications, first-order complementary filters as shown in Equation eqref:eq:detail_control_cf_1st_order are sufficient.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_1st_order}
|
||||
\begin{align}
|
||||
H_L(s) &= \frac{1}{1 + s/\omega_0} \\
|
||||
H_H(s) &= \frac{s/\omega_0}{1 + s/\omega_0}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
These filters can be transformed into the digital domain using the Bilinear transformation, resulting in the digital filter representations shown in Equation eqref:eq:detail_control_cf_1st_order_z.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_1st_order_z}
|
||||
\begin{align}
|
||||
H_L(z^{-1}) &= \frac{T_s \omega_0 + T_s \omega_0 z^{-1}}{T_s \omega_0 + 2 + (T_s \omega_0 - 2) z^{-1}} \\
|
||||
H_H(z^{-1}) &= \frac{2 - 2 z^{-1}}{T_s \omega_0 + 2 + (T_s \omega_0 - 2) z^{-1}}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
A significant advantage of using analytical formulas for complementary filters is that key parameters such as $\omega_0$ can be tuned in real-time, as illustrated in Figure ref:fig:detail_control_cf_arch_tunable_params.
|
||||
This real-time tunability allows rapid testing of different control bandwidths to evaluate performance and robustness characteristics.
|
||||
|
||||
#+name: fig:detail_control_cf_arch_tunable_params
|
||||
#+caption: Implemented digital complementary filters with parameter $\omega_0$ that can be changed in real time
|
||||
[[file:figs/detail_control_cf_arch_tunable_params.png]]
|
||||
|
||||
For many practical applications, first order complementary filters are not sufficient.
|
||||
Specifically, a slope of $+2$ at low frequencies for the sensitivity transfer function (enabling accurate tracking of ramp inputs) and a slope of $-2$ for the complementary sensitivity transfer function are often desired.
|
||||
For these cases, the complementary filters analytical formula in Equation eqref:eq:detail_control_cf_2nd_order is proposed.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_2nd_order}
|
||||
\begin{align}
|
||||
H_L(s) &= \frac{(1+\alpha) (\frac{s}{\omega_0})+1}{\left((\frac{s}{\omega_0})+1\right) \left((\frac{s}{\omega_0})^2 + \alpha (\frac{s}{\omega_0}) + 1\right)}\\
|
||||
H_H(s) &= \frac{(\frac{s}{\omega_0})^2 \left((\frac{s}{\omega_0})+1+\alpha\right)}{\left((\frac{s}{\omega_0})+1\right) \left((\frac{s}{\omega_0})^2 + \alpha (\frac{s}{\omega_0}) + 1\right)}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
The influence of parameters $\alpha$ and $\omega_0$ on the frequency response of these complementary filters is illustrated in Figure ref:fig:detail_control_cf_analytical_effect.
|
||||
The parameter $\alpha$ primarily affects the damping characteristics near the crossover frequency as well as high and low frequency magnitudes, while $\omega_0$ determines the frequency at which the transition between high-pass and low-pass behavior occurs.
|
||||
These filters can also be implemented in the digital domain with analytical formulas, preserving the ability to adjust $\alpha$ and $\omega_0$ in real-time.
|
||||
|
||||
#+name: fig:detail_control_cf_analytical_effect
|
||||
#+caption: Shape of proposed analytical complementary filters. Effect of $\alpha$ (\subref{fig:detail_control_cf_analytical_effect_alpha}) and $\omega_0$ (\subref{fig:detail_control_cf_analytical_effect_w0}) are shown.
|
||||
#+attr_latex: :options [htbp]
|
||||
#+begin_figure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_analytical_effect_alpha}Effect of $\alpha$}
|
||||
#+attr_latex: :options {0.48\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :width 0.95\linewidth
|
||||
[[file:figs/detail_control_cf_analytical_effect_alpha.png]]
|
||||
#+end_subfigure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_analytical_effect_w0}Effect of $\omega_0$}
|
||||
#+attr_latex: :options {0.48\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :width 0.95\linewidth
|
||||
[[file:figs/detail_control_cf_analytical_effect_w0.png]]
|
||||
#+end_subfigure
|
||||
#+end_figure
|
||||
|
||||
* Numerical Example
|
||||
<<ssec:detail_control_cf_simulations>>
|
||||
*** Procedure :ignore:
|
||||
|
||||
To implement the proposed control architecture in practice, the following procedure is proposed:
|
||||
|
||||
1. Identify the plant to be controlled to obtain the plant model $G$.
|
||||
2. Design the weighting function $w_I$ such that all possible plants $G^\prime$ are contained within the uncertainty set $\Pi_i$.
|
||||
3. Translate performance requirements into upper bounds on the complementary filters as explained in Section ref:ssec:detail_control_cf_trans_perf.
|
||||
4. Design the weighting functions $w_H$ and $w_L$ and generate the complementary filters using $\mathcal{H}_{\infty}\text{-synthesis}$ as described in Section ref:ssec:detail_control_sensor_hinf_method.
|
||||
If the synthesis fails to produce filters satisfying the defined upper bounds, either revise the requirements or develop a more accurate model $G$ that will allow for a smaller $w_I$.
|
||||
For simpler cases, the analytical formulas for complementary filters presented in Section ref:ssec:detail_control_cf_analytical_complementary_filters can be employed.
|
||||
5. If $K(s) = H_H^{-1}(s) G^{-1}(s)$ is not proper, add low-pass filters with sufficiently high corner frequencies to ensure realizability.
|
||||
|
||||
*** Plant :ignore:
|
||||
|
||||
To evaluate this control architecture, a simple test model representative of many synchrotron positioning stages is utilized (Figure ref:fig:detail_control_cf_test_model).
|
||||
In this model, a payload with mass $m$ is positioned on top of a stage.
|
||||
The objective is to accurately position the sample relative to the X-ray beam.
|
||||
|
||||
The relative position $y$ between the payload and the X-ray is measured, which typically involves measuring the relative position between the focusing optics and the sample.
|
||||
Various disturbance forces affect positioning stability, including stage vibrations $d_w$ and direct forces applied to the sample $d_F$ (such as cable forces).
|
||||
The positioning stage itself is characterized by stiffness $k$, internal damping $c$, and a controllable force $F$.
|
||||
|
||||
The model of the plant $G(s)$ from actuator force $F$ to displacement $y$ is described by Equation eqref:eq:detail_control_cf_test_plant_tf.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_test_plant_tf}
|
||||
G(s) = \frac{1}{m s^2 + c s + k}, \quad m = \SI{20}{\kg},\ k = 1\si{\N/\mu\m},\ c = 10^2\si{\N\per(\m\per\s)}
|
||||
\end{equation}
|
||||
|
||||
The plant dynamics include uncertainties related to limited support compliance, unmodeled flexible dynamics and payload dynamics.
|
||||
These uncertainties are represented using a multiplicative input uncertainty weight eqref:eq:detail_control_cf_test_plant_uncertainty, which specifies the magnitude of uncertainty as a function of frequency.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_test_plant_uncertainty}
|
||||
w_I(s) = 10 \cdot \frac{(s+100)^2}{(s+1000)^2}
|
||||
\end{equation}
|
||||
|
||||
Figure ref:fig:detail_control_cf_bode_plot_mech_sys illustrates both the nominal plant dynamics and the complete set of possible plants $\Pi_i$ encompassed by the uncertainty model.
|
||||
|
||||
#+name: fig:detail_control_cf_test_model_plant
|
||||
#+caption: Schematic of the test system (\subref{fig:detail_control_cf_test_model}). Bode plot of the transfer function $G(s)$ from $F$ to $y$ and the associated uncertainty set (\subref{fig:detail_control_cf_bode_plot_mech_sys}).
|
||||
#+attr_latex: :options [htbp]
|
||||
#+begin_figure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_test_model}Test model}
|
||||
#+attr_latex: :options {0.3\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :scale 1
|
||||
[[file:figs/detail_control_cf_test_model.png]]
|
||||
#+end_subfigure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_bode_plot_mech_sys}Bode plot of $G(s)$ and associated uncertainty set}
|
||||
#+attr_latex: :options {0.66\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :scale 1
|
||||
[[file:figs/detail_control_cf_bode_plot_mech_sys.png]]
|
||||
#+end_subfigure
|
||||
#+end_figure
|
||||
|
||||
*** Requirements and choice of complementary filters
|
||||
|
||||
As discussed in Section ref:ssec:detail_control_cf_trans_perf, nominal performance requirements can be expressed as upper bounds on the shape of the complementary filters.
|
||||
For this example, the requirements are:
|
||||
- track ramp inputs (i.e. constant velocity scans) with zero steady-state error: a $+2$ slope at low frequencies for the magnitude of the sensitivity function $|S(j\omega)|$ is required
|
||||
- filtering of measurement noise above $\SI{300}{Hz}$, where sensor noise is significant (requiring a filtering factor of approximately 100 above this frequency)
|
||||
- maximizing disturbance rejection
|
||||
|
||||
Additionally, robust stability must be ensured, requiring the closed-loop system to remain stable despite the dynamic uncertainties modeled by $w_I$.
|
||||
This condition is satisfied when the magnitude of the low-pass complementary filter $|H_L(j\omega)|$ remains below the inverse of the uncertainty weight magnitude $|w_I(j\omega)|$, as expressed in Equation eqref:eq:detail_control_cf_condition_robust_stability.
|
||||
|
||||
Robust performance is achieved when both nominal performance and robust stability conditions are simultaneously satisfied.
|
||||
|
||||
All requirements imposed on $H_L$ and $H_H$ are visualized in Figure ref:fig:detail_control_cf_specs_S_T.
|
||||
While $\mathcal{H}_\infty\text{-synthesis}$ could be employed to design the complementary filters, analytical formulas were used for this relatively simple example.
|
||||
The second-order complementary filters from Equation eqref:eq:detail_control_cf_2nd_order were selected with parameters $\alpha = 1$ and $\omega_0 = 2\pi \cdot 20\,\text{Hz}$.
|
||||
There magnitudes are displayed in Figure ref:fig:detail_control_cf_specs_S_T, confirming that these complementary filters are fulfilling the specifications.
|
||||
|
||||
#+name: fig:detail_control_cf_specs_S_T_obtained_filters
|
||||
#+caption: Performance requirement and complementary filters used (\subref{fig:detail_control_cf_specs_S_T}). Obtained controller from the complementary filters and the plant inverse is shown in (\subref{fig:detail_control_cf_bode_Kfb}).
|
||||
#+attr_latex: :options [htbp]
|
||||
#+begin_figure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_specs_S_T}Specifications and complementary filters}
|
||||
#+attr_latex: :options {0.48\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :width 0.95\linewidth
|
||||
[[file:figs/detail_control_cf_specs_S_T.png]]
|
||||
#+end_subfigure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_bode_Kfb}Bode plot of $K(s) \cdot H_L(s)$}
|
||||
#+attr_latex: :options {0.48\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :width 0.95\linewidth
|
||||
[[file:figs/detail_control_cf_bode_Kfb.png]]
|
||||
#+end_subfigure
|
||||
#+end_figure
|
||||
|
||||
*** Controller analysis
|
||||
|
||||
The controller to be implemented takes the form $K(s) = \tilde{G}^{-1}(s) H_H^{-1}(s)$, where $\tilde{G}^{-1}(s)$ represents the plant inverse, which must be both stable and proper.
|
||||
To ensure properness, low-pass filters with high corner frequencies are added as shown in Equation eqref:eq:detail_control_cf_test_plant_inverse.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_test_plant_inverse}
|
||||
\tilde{G}^{-1}(s) = \frac{m s^2 + c s + k}{1 + \frac{s}{2\pi \cdot 1000} + \left( \frac{s}{2\pi \cdot 1000} \right)^2}
|
||||
\end{equation}
|
||||
|
||||
The Bode plot of the controller multiplied by the complementary low-pass filter, $K(s) \cdot H_L(s)$, is presented in Figure ref:fig:detail_control_cf_bode_Kfb.
|
||||
The frequency response reveals several important characteristics:
|
||||
- The presence of two integrators at low frequencies, enabling accurate tracking of ramp inputs
|
||||
- A notch at the plant resonance frequency (arising from the plant inverse)
|
||||
- A lead component near the control bandwidth of approximately 20 Hz, enhancing stability margins
|
||||
|
||||
*** Robustness and Performance analysis
|
||||
|
||||
Robust stability is assessed using the Nyquist plot shown in Figure ref:fig:detail_control_cf_nyquist_robustness.
|
||||
Even when considering all possible plants within the uncertainty set, the Nyquist plot remains sufficiently distant from the critical point $(-1,0)$, indicating robust stability with adequate margins.
|
||||
|
||||
Performance is evaluated by examining the closed-loop sensitivity and complementary sensitivity transfer functions, as illustrated in Figure ref:fig:detail_control_cf_robust_perf.
|
||||
It is shown that the sensitivity transfer function achieves the desired $+2$ slope at low frequencies and that the complementary sensitivity transfer function nominally provides the wanted noise filtering.
|
||||
|
||||
#+name: fig:detail_control_cf_simulation_results
|
||||
#+caption: Validation of Robust stability with the Nyquist plot (\subref{fig:detail_control_cf_nyquist_robustness}) and validation of the nominal and robust performance with the magnitude of the closed-loop transfer functions (\subref{fig:detail_control_cf_robust_perf})
|
||||
#+attr_latex: :options [htbp]
|
||||
#+begin_figure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_nyquist_robustness}Robust Stability}
|
||||
#+attr_latex: :options {0.49\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :scale 0.8
|
||||
[[file:figs/detail_control_cf_nyquist_robustness.png]]
|
||||
#+end_subfigure
|
||||
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_robust_perf}Nominal and Robust performance}
|
||||
#+attr_latex: :options {0.49\textwidth}
|
||||
#+begin_subfigure
|
||||
#+attr_latex: :scale 0.8
|
||||
[[file:figs/detail_control_cf_robust_perf.png]]
|
||||
#+end_subfigure
|
||||
#+end_figure
|
||||
|
||||
* Conclusion
|
||||
:PROPERTIES:
|
||||
:UNNUMBERED: t
|
||||
:END:
|
||||
|
||||
In this section, a control architecture in which complementary filters are used for closed-loop shaping has been presented.
|
||||
This approach differs from traditional open-loop shaping in that no controller is manually designed; rather, appropriate complementary filters are selected to achieve the desired closed-loop behavior.
|
||||
The method shares conceptual similarities with mixed-sensitivity $\mathcal{H}_{\infty}\text{-synthesis}$, as both approaches aim to shape closed-loop transfer functions, but with notable distinctions in implementation and complexity.
|
||||
|
||||
While $\mathcal{H}_{\infty}\text{-synthesis}$ offers greater flexibility and can be readily generalized to MIMO plants, the presented approach provides a simpler alternative that requires minimal design effort.
|
||||
Implementation only necessitates extracting a model of the plant and selecting appropriate analytical complementary filters, making it particularly interesting for applications where simplicity and intuitive parameter tuning are valued.
|
||||
|
||||
Due to time constraints, an extensive literature review comparing this approach with similar existing architectures, such as Internal Model Control [[cite:&saxena12_advan_inter_model_contr_techn]], was not conducted.
|
||||
Consequently, it remains unclear whether the proposed architecture offers significant advantages over existing methods in the literature.
|
||||
|
||||
The control architecture has been presented for SISO systems, but can be applied to MIMO systems when sufficient decoupling is achieved.
|
||||
It will be experimentally validated with the NASS during the experimental phase.
|
||||
|
||||
* Bibliography :ignore:
|
||||
\bibliography{dehaeze26_control}
|
||||
|
||||
* Footnotes
|
||||
|
||||
[fn:1]$n$ corresponds to the number of degrees of freedom, here $n = 3$
|
||||
BIN
paper/dehaeze26_control.pdf
Normal file
409
paper/dehaeze26_control.tex
Normal file
@@ -0,0 +1,409 @@
|
||||
% Created 2025-11-27 Thu 21:31
|
||||
% Intended LaTeX compiler: pdflatex
|
||||
\documentclass[lettersize,journal]{IEEEtran}
|
||||
|
||||
\input{preamble.tex}
|
||||
\input{preamble_extra.tex}
|
||||
\author{ \IEEEauthorblockN{Dehaeze Thomas} \IEEEauthorblockA{\textit{European Synchrotron Radiation Facility} \\ Grenoble, France\\ \textit{Precision Mechatronics Laboratory} \\ \textit{University of Liege}, Belgium \\ thomas.dehaeze@esrf.fr }\and \IEEEauthorblockN{Verma Mohit} \IEEEauthorblockA{\textit{BEAMS Department}\\ \textit{Free University of Brussels}, Belgium\\ \textit{Precision Mechatronics Laboratory} \\ \textit{University of Liege}, Belgium \\ mohit.verma@ulb.ac.be }\and \IEEEauthorblockN{Collette Christophe} \IEEEauthorblockA{\textit{BEAMS Department}\\ \textit{Free University of Brussels}, Belgium\\ \textit{Precision Mechatronics Laboratory} \\ \textit{University of Liege}, Belgium \\ ccollett@ulb.ac.be }}
|
||||
|
||||
\title{Closed-Loop Shaping using Complementary Filters}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
\begin{abstract}
|
||||
This document describes the most common article elements and how to use the IEEEtran class with \LaTeX \ to produce files that are suitable for submission to the IEEE. IEEEtran can produce conference, journal, and technical note (correspondence) papers with a suitable choice of class options.
|
||||
\end{abstract}
|
||||
|
||||
\begin{IEEEkeywords}
|
||||
Article submission, IEEE, IEEEtran, journal, \LaTeX, paper, template, typesetting.
|
||||
\end{IEEEkeywords}
|
||||
Once the system is properly decoupled using one of the approaches described in Section \ref{sec:detail_control_decoupling}, SISO controllers can be individually tuned for each decoupled ``directions''.
|
||||
Several ways to design a controller to obtain a given performance while ensuring good robustness properties can be implemented.
|
||||
|
||||
In some cases ``fixed'' controller structures are utilized, such as PI and PID controllers, whose parameters are manually tuned \cite{furutani04_nanom_cuttin_machin_using_stewar,du14_piezo_actuat_high_precis_flexib,yang19_dynam_model_decoup_contr_flexib}.
|
||||
|
||||
Another popular method is Open-Loop shaping, which was used during the conceptual phase.
|
||||
Open-loop shaping involves tuning the controller through a series of ``standard'' filters (leads, lags, notches, low-pass filters, \ldots{}) to shape the open-loop transfer function \(G(s)K(s)\) according to desired specifications, including bandwidth, gain and phase margins \cite[, chapt. 4.4.7]{schmidt20_desig_high_perfor_mechat_third_revis_edition}.
|
||||
Open-Loop shaping is very popular because the open-loop transfer function is a linear function of the controller, making it relatively straightforward to tune the controller to achieve desired open-loop characteristics.
|
||||
Another key advantage is that controllers can be tuned directly from measured frequency response functions of the plant without requiring an explicit model.
|
||||
|
||||
However, the behavior (i.e. performance) of a feedback system is a function of closed-loop transfer functions.
|
||||
Specifications can therefore be expressed in terms of the magnitude of closed-loop transfer functions, such as the sensitivity, plant sensitivity, and complementary sensitivity transfer functions \cite[, chapt. 3]{skogestad07_multiv_feedb_contr}.
|
||||
With open-loop shaping, closed-loop transfer functions are changed only indirectly, which may make it difficult to directly address the specifications that are in terms of the closed-loop transfer functions.
|
||||
|
||||
In order to synthesize a controller that directly shapes the closed-loop transfer functions (and therefore the performance metric), \(\mathcal{H}_\infty\text{-synthesis}\) may be used \cite{skogestad07_multiv_feedb_contr}.
|
||||
This approach requires a good model of the plant and expertise in selecting weighting functions that will define the wanted shape of different closed-loop transfer functions \cite{bibel92_guidel_h}.
|
||||
\(\mathcal{H}_{\infty}\text{-synthesis}\) has been applied for the Stewart platform \cite{jiao18_dynam_model_exper_analy_stewar}, yet when benchmarked against more basic decentralized controllers, the performance gains proved small \cite{thayer02_six_axis_vibrat_isolat_system,hauge04_sensor_contr_space_based_six}.
|
||||
|
||||
In this section, an alternative controller synthesis scheme is proposed in which complementary filters are used for directly shaping the closed-loop transfer functions (i.e., directly addressing the closed-loop performances).
|
||||
In Section \ref{ssec:detail_control_cf_control_arch}, the proposed control architecture is presented.
|
||||
In Section \ref{ssec:detail_control_cf_trans_perf}, typical performance requirements are translated into the shape of the complementary filters.
|
||||
The design of the complementary filters is briefly discussed in Section \ref{ssec:detail_control_cf_analytical_complementary_filters}, and analytical formulas are proposed such that it is possible to change the closed-loop behavior of the system in real time.
|
||||
Finally, in Section \ref{ssec:detail_control_cf_simulations}, a numerical example is used to show how the proposed control architecture can be implemented in practice.
|
||||
\section{Control Architecture}
|
||||
\label{ssec:detail_control_cf_control_arch}
|
||||
\subsubsection{Virtual Sensor Fusion}
|
||||
|
||||
The idea of using complementary filters in the control architecture originates from sensor fusion techniques \cite{collette15_sensor_fusion_method_high_perfor}, where two sensors are combined using complementary filters.
|
||||
Building upon this concept, ``virtual sensor fusion'' \cite{verma20_virtual_sensor_fusion_high_precis_contr} replaces one physical sensor with a model \(G\) of the plant.
|
||||
The corresponding control architecture is illustrated in Figure \ref{fig:detail_control_cf_arch}, where \(G^\prime\) represents the physical plant to be controlled, \(G\) is a model of the plant, \(k\) is the controller, and \(H_L\) and \(H_H\) are complementary filters satisfying \(H_L(s) + H_H(s) = 1\).
|
||||
In this arrangement, the physical plant is controlled at low frequencies, while the plant model is utilized at high frequencies to enhance robustness.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\begin{subfigure}{0.48\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,scale=0.9]{figs/detail_control_cf_arch.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_arch}Virtual Sensor Fusion}
|
||||
\end{subfigure}
|
||||
\begin{subfigure}{0.48\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,scale=0.9]{figs/detail_control_cf_arch_eq.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_arch_eq}Equivalent Architecture}
|
||||
\end{subfigure}
|
||||
\caption{\label{fig:detail_control_cf_arch_and_eq}Control architecture for virtual sensor fusion (\subref{fig:detail_control_cf_arch}). An equivalent architecture is shown in (\subref{fig:detail_control_cf_arch_eq}). The signals are the reference signal \(r\), the output perturbation \(d_y\), the measurement noise \(n\) and the control input \(u\).}
|
||||
\end{figure}
|
||||
|
||||
Although the control architecture shown in Figure \ref{fig:detail_control_cf_arch} appears to be a multi-loop system, it should be noted that no non-linear saturation-type elements are present in the inner loop (containing \(k\), \(G\), and \(H_H\), all numerically implemented).
|
||||
Consequently, this structure is mathematically equivalent to the single-loop architecture illustrated in Figure \ref{fig:detail_control_cf_arch_eq}.
|
||||
\subsubsection{Asymptotic behavior}
|
||||
|
||||
When considering the extreme case of very high values for \(k\), the effective controller \(K(s)\) converges to the inverse of the plant model multiplied by the inverse of the high-pass filter, as expressed in \eqref{eq:detail_control_cf_high_k}.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_high_k}
|
||||
\lim_{k\to\infty} K(s) = \lim_{k\to\infty} \frac{k}{1+H_H(s) G(s) k} = \big( H_H(s) G(s) \big)^{-1}
|
||||
\end{equation}
|
||||
|
||||
If the resulting \(K\) is improper, a low-pass filter with sufficiently high corner frequency can be added to ensure its causal realization.
|
||||
Furthermore, for \(K\) to be stable, both \(G\) and \(H_H\) must be minimum phase transfer functions.
|
||||
|
||||
With these assumptions, the resulting control architecture is illustrated in Figure \ref{fig:detail_control_cf_arch_class}, where the complementary filters \(H_L\) and \(H_H\) remain the only tuning parameters.
|
||||
The dynamics of this closed-loop system are described by equations \eqref{eq:detail_control_cf_cl_system_y} and \eqref{eq:detail_control_cf_cl_system_y}.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[scale=1]{figs/detail_control_cf_arch_class.png}
|
||||
\caption{\label{fig:detail_control_cf_arch_class}Equivalent classical feedback control architecture}
|
||||
\end{figure}
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_sf_cl_tf_K_inf}
|
||||
\begin{align}
|
||||
y &= \frac{ H_H dy + G^{\prime} G^{-1} r - G^{\prime} G^{-1} H_L n }{H_H + G^\prime G^{-1} H_L} \label{eq:detail_control_cf_cl_system_y}\\
|
||||
u &= \frac{ -G^{-1} H_L dy + G^{-1} r - G^{-1} H_L n }{H_H + G^\prime G^{-1} H_L} \label{eq:detail_control_cf_cl_system_u}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
At frequencies where the model accurately represents the physical plant (\(G^{-1} G^{\prime} \approx 1\)), the denominator simplifies to \(H_H + G^\prime G^{-1} H_L \approx H_H + H_L = 1\), and the closed-loop transfer functions are then described by equations \eqref{eq:detail_control_cf_cl_performance_y} and \eqref{eq:detail_control_cf_cl_performance_u}.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_sf_cl_tf_K_inf_perfect}
|
||||
\begin{alignat}{5}
|
||||
y &= H_H dy &&+ r &&- H_L n \label{eq:detail_control_cf_cl_performance_y} \\
|
||||
u &= -G^{-1} H_L dy &&+ G^{-1} r &&- G^{-1} H_L n \label{eq:detail_control_cf_cl_performance_u}
|
||||
\end{alignat}
|
||||
\end{subequations}
|
||||
|
||||
The sensitivity transfer function equals the high-pass filter \(S = \frac{y}{dy} = H_H\), and the complementary sensitivity transfer function equals the low-pass filter \(T = \frac{y}{n} = H_L\).
|
||||
Hence, when the plant model closely approximates the actual dynamics, the closed-loop transfer functions converge to the designed complementary filters, allowing direct translation of performance requirements into the design of the complementary.
|
||||
\section{Translating the performance requirements into the shape of the complementary filters}
|
||||
\label{ssec:detail_control_cf_trans_perf}
|
||||
Performance specifications in a feedback system can usually be expressed as upper bounds on the magnitudes of closed-loop transfer functions such as the sensitivity and complementary sensitivity transfer functions \cite{bibel92_guidel_h}.
|
||||
The design of a controller \(K(s)\) to obtain the desired shape of these closed-loop transfer functions is known as closed-loop shaping.
|
||||
|
||||
In the proposed control architecture, the closed-loop transfer functions \eqref{eq:detail_control_cf_sf_cl_tf_K_inf} are expressed in terms of the complementary filters \(H_L(s)\) and \(H_H(s)\) rather than directly through the controller \(K(s)\).
|
||||
Therefore, performance requirements must be translated into constraints on the shape of these complementary filters.
|
||||
\subsubsection{Nominal Stability (NS)}
|
||||
A closed-loop system is stable when all its elements (here \(K\), \(G^\prime\), and \(H_L\)) are stable and the sensitivity function \(S = \frac{1}{1 + G^\prime K H_L}\) is stable.
|
||||
For the nominal system (\(G^\prime = G\)), the sensitivity transfer function equals the high-pass filter: \(S(s) = H_H(s)\).
|
||||
|
||||
Nominal stability is therefore guaranteed when \(H_L\), \(H_H\), and \(G\) are stable, and both \(G\) and \(H_H\) are minimum phase (ensuring \(K\) is stable).
|
||||
Consequently, stable and minimum phase complementary filters must be employed.
|
||||
\subsubsection{Nominal Performance (NP)}
|
||||
|
||||
Performance specifications can be formalized using weighting functions \(w_H\) and \(w_L\), where performance is achieved when \eqref{eq:detail_control_cf_weights} is satisfied.
|
||||
The weighting functions define the maximum magnitude of the closed-loop transfer functions as a function of frequency, effectively determining their ``shape''.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_weights}
|
||||
\begin{align}
|
||||
|w_H(j\omega) S(j\omega)| &\le 1 \quad \forall\omega\\
|
||||
|w_L(j\omega) T(j\omega)| &\le 1 \quad \forall\omega
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
For the nominal system, \(S = H_H\) and \(T = H_L\), hence the performance specifications can be converted on the shape of the complementary filters \eqref{eq:detail_control_cf_nominal_performance}.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_nominal_performance}
|
||||
\Aboxed{\text{NP} \Longleftrightarrow {\begin{cases*}
|
||||
|w_H(j\omega) H_H(j\omega)| \le 1 & \forall\omega \\
|
||||
|w_L(j\omega) H_L(j\omega)| \le 1 & \forall\omega
|
||||
\end{cases*}}}
|
||||
\end{equation}
|
||||
|
||||
For disturbance rejection, the magnitude of the sensitivity function \(|S(j\omega)| = |H_H(j\omega)|\) should be minimized, particularly at low frequencies where disturbances are usually most prominent.
|
||||
Similarly, for noise attenuation, the magnitude of the complementary sensitivity function \(|T(j\omega)| = |H_L(j\omega)|\) should be minimized, especially at high frequencies where measurement noise typically dominates.
|
||||
Classical stability margins (gain and phase margins) are also related to the maximum amplitude of the sensitivity transfer function.
|
||||
Typically, maintaining \(|S|_{\infty} \le 2\) ensures a gain margin of at least 2 and a phase margin of at least \(\SI{29}{\degree}\).
|
||||
|
||||
Therefore, by carefully selecting the shape of the complementary filters, nominal performance specifications can be directly addressed in an intuitive manner.
|
||||
\subsubsection{Robust Stability (RS)}
|
||||
|
||||
Robust stability refers to a control system's ability to maintain stability despite discrepancies between the actual system \(G^\prime\) and the model \(G\) used for controller design.
|
||||
These discrepancies may arise from unmodeled dynamics or nonlinearities.
|
||||
|
||||
To represent these model-plant differences, input multiplicative uncertainty as illustrated in Figure \ref{fig:detail_control_cf_input_uncertainty} is employed.
|
||||
The set of possible plants \(\Pi_i\) is described by \eqref{eq:detail_control_cf_multiplicative_uncertainty}, with the weighting function \(w_I\) selected such that all possible plants \(G^\prime\) are contained within the set \(\Pi_i\).
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_multiplicative_uncertainty}
|
||||
\Pi_i: \quad G^\prime(s) = G(s)\big(1 + w_I(s)\Delta_I(s)\big); \quad |\Delta_I(j\omega)| \le 1 \ \forall\omega
|
||||
\end{equation}
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\begin{subfigure}{0.48\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,scale=1]{figs/detail_control_cf_input_uncertainty.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_input_uncertainty}Input multiplicative uncertainty}
|
||||
\end{subfigure}
|
||||
\begin{subfigure}{0.48\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,scale=1]{figs/detail_control_cf_nyquist_uncertainty.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_nyquist_uncertainty}Nyquist plot - Effect of multiplicative uncertainty}
|
||||
\end{subfigure}
|
||||
\caption{\label{fig:detail_control_cf_input_uncertainty_nyquist}Input multiplicative uncertainty to model the differences between the model and the physical plant (\subref{fig:detail_control_cf_input_uncertainty}). Effect of this uncertainty is displayed on the Nyquist plot (\subref{fig:detail_control_cf_nyquist_uncertainty})}
|
||||
\end{figure}
|
||||
|
||||
When considering input multiplicative uncertainty, robust stability can be derived graphically from the Nyquist plot (illustrated in Figure \ref{fig:detail_control_cf_nyquist_uncertainty}), yielding to \eqref{eq:detail_control_cf_robust_stability_graphically}, as demonstrated in \cite[, chapt. 7.5.1]{skogestad07_multiv_feedb_contr}.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_robust_stability_graphically}
|
||||
\text{RS} \Longleftrightarrow \left|w_I(j\omega) L(j\omega) \right| \le \left| 1 + L(j\omega) \right| \quad \forall\omega
|
||||
\end{equation}
|
||||
|
||||
After algebraic manipulation, robust stability is guaranteed when the low-pass complementary filter \(H_L\) satisfies \eqref{eq:detail_control_cf_condition_robust_stability}.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_condition_robust_stability}
|
||||
\boxed{\text{RS} \Longleftrightarrow |w_I(j\omega) H_L(j\omega)| \le 1 \quad \forall \omega}
|
||||
\end{equation}
|
||||
\subsubsection{Robust Performance (RP)}
|
||||
|
||||
Robust performance ensures that performance specifications \eqref{eq:detail_control_cf_weights} are met even when the plant dynamics fluctuates within specified bounds \eqref{eq:detail_control_cf_robust_perf_S}.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_robust_perf_S}
|
||||
\text{RP} \Longleftrightarrow |w_H(j\omega) S(j\omega)| \le 1 \quad \forall G^\prime \in \Pi_I, \ \forall\omega
|
||||
\end{equation}
|
||||
|
||||
Transforming this condition into constraints on the complementary filters yields:
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_robust_performance}
|
||||
\boxed{\text{RP} \Longleftrightarrow | w_H(j\omega) H_H(j\omega) | + | w_I(j\omega) H_L(j\omega) | \le 1, \ \forall\omega}
|
||||
\end{equation}
|
||||
|
||||
The robust performance condition effectively combines both nominal performance \eqref{eq:detail_control_cf_nominal_performance} and robust stability conditions \eqref{eq:detail_control_cf_condition_robust_stability}.
|
||||
If both NP and RS conditions are satisfied, robust performance will be achieved within a factor of 2 \cite[, chapt. 7.6]{skogestad07_multiv_feedb_contr}.
|
||||
Therefore, for SISO systems, ensuring robust stability and nominal performance is typically sufficient.
|
||||
\section{Complementary filter design}
|
||||
\label{ssec:detail_control_cf_analytical_complementary_filters}
|
||||
|
||||
As proposed in Section \ref{sec:detail_control_sensor}, complementary filters can be shaped using standard \(\mathcal{H}_{\infty}\text{-synthesis}\) techniques.
|
||||
This approach is particularly well-suited since performance requirements were expressed as upper bounds on the magnitude of the complementary filters.
|
||||
|
||||
Alternatively, analytical formulas for complementary filters may be employed.
|
||||
For some applications, first-order complementary filters as shown in Equation \eqref{eq:detail_control_cf_1st_order} are sufficient.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_1st_order}
|
||||
\begin{align}
|
||||
H_L(s) &= \frac{1}{1 + s/\omega_0} \\
|
||||
H_H(s) &= \frac{s/\omega_0}{1 + s/\omega_0}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
These filters can be transformed into the digital domain using the Bilinear transformation, resulting in the digital filter representations shown in Equation \eqref{eq:detail_control_cf_1st_order_z}.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_1st_order_z}
|
||||
\begin{align}
|
||||
H_L(z^{-1}) &= \frac{T_s \omega_0 + T_s \omega_0 z^{-1}}{T_s \omega_0 + 2 + (T_s \omega_0 - 2) z^{-1}} \\
|
||||
H_H(z^{-1}) &= \frac{2 - 2 z^{-1}}{T_s \omega_0 + 2 + (T_s \omega_0 - 2) z^{-1}}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
A significant advantage of using analytical formulas for complementary filters is that key parameters such as \(\omega_0\) can be tuned in real-time, as illustrated in Figure \ref{fig:detail_control_cf_arch_tunable_params}.
|
||||
This real-time tunability allows rapid testing of different control bandwidths to evaluate performance and robustness characteristics.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[scale=1]{figs/detail_control_cf_arch_tunable_params.png}
|
||||
\caption{\label{fig:detail_control_cf_arch_tunable_params}Implemented digital complementary filters with parameter \(\omega_0\) that can be changed in real time}
|
||||
\end{figure}
|
||||
|
||||
For many practical applications, first order complementary filters are not sufficient.
|
||||
Specifically, a slope of \(+2\) at low frequencies for the sensitivity transfer function (enabling accurate tracking of ramp inputs) and a slope of \(-2\) for the complementary sensitivity transfer function are often desired.
|
||||
For these cases, the complementary filters analytical formula in Equation \eqref{eq:detail_control_cf_2nd_order} is proposed.
|
||||
|
||||
\begin{subequations}\label{eq:detail_control_cf_2nd_order}
|
||||
\begin{align}
|
||||
H_L(s) &= \frac{(1+\alpha) (\frac{s}{\omega_0})+1}{\left((\frac{s}{\omega_0})+1\right) \left((\frac{s}{\omega_0})^2 + \alpha (\frac{s}{\omega_0}) + 1\right)}\\
|
||||
H_H(s) &= \frac{(\frac{s}{\omega_0})^2 \left((\frac{s}{\omega_0})+1+\alpha\right)}{\left((\frac{s}{\omega_0})+1\right) \left((\frac{s}{\omega_0})^2 + \alpha (\frac{s}{\omega_0}) + 1\right)}
|
||||
\end{align}
|
||||
\end{subequations}
|
||||
|
||||
The influence of parameters \(\alpha\) and \(\omega_0\) on the frequency response of these complementary filters is illustrated in Figure \ref{fig:detail_control_cf_analytical_effect}.
|
||||
The parameter \(\alpha\) primarily affects the damping characteristics near the crossover frequency as well as high and low frequency magnitudes, while \(\omega_0\) determines the frequency at which the transition between high-pass and low-pass behavior occurs.
|
||||
These filters can also be implemented in the digital domain with analytical formulas, preserving the ability to adjust \(\alpha\) and \(\omega_0\) in real-time.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\begin{subfigure}{0.48\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_cf_analytical_effect_alpha.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_analytical_effect_alpha}Effect of $\alpha$}
|
||||
\end{subfigure}
|
||||
\begin{subfigure}{0.48\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_cf_analytical_effect_w0.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_analytical_effect_w0}Effect of $\omega_0$}
|
||||
\end{subfigure}
|
||||
\caption{\label{fig:detail_control_cf_analytical_effect}Shape of proposed analytical complementary filters. Effect of \(\alpha\) (\subref{fig:detail_control_cf_analytical_effect_alpha}) and \(\omega_0\) (\subref{fig:detail_control_cf_analytical_effect_w0}) are shown.}
|
||||
\end{figure}
|
||||
\section{Numerical Example}
|
||||
\label{ssec:detail_control_cf_simulations}
|
||||
To implement the proposed control architecture in practice, the following procedure is proposed:
|
||||
|
||||
\begin{enumerate}
|
||||
\item Identify the plant to be controlled to obtain the plant model \(G\).
|
||||
\item Design the weighting function \(w_I\) such that all possible plants \(G^\prime\) are contained within the uncertainty set \(\Pi_i\).
|
||||
\item Translate performance requirements into upper bounds on the complementary filters as explained in Section \ref{ssec:detail_control_cf_trans_perf}.
|
||||
\item Design the weighting functions \(w_H\) and \(w_L\) and generate the complementary filters using \(\mathcal{H}_{\infty}\text{-synthesis}\) as described in Section \ref{ssec:detail_control_sensor_hinf_method}.
|
||||
If the synthesis fails to produce filters satisfying the defined upper bounds, either revise the requirements or develop a more accurate model \(G\) that will allow for a smaller \(w_I\).
|
||||
For simpler cases, the analytical formulas for complementary filters presented in Section \ref{ssec:detail_control_cf_analytical_complementary_filters} can be employed.
|
||||
\item If \(K(s) = H_H^{-1}(s) G^{-1}(s)\) is not proper, add low-pass filters with sufficiently high corner frequencies to ensure realizability.
|
||||
\end{enumerate}
|
||||
|
||||
To evaluate this control architecture, a simple test model representative of many synchrotron positioning stages is utilized (Figure \ref{fig:detail_control_cf_test_model}).
|
||||
In this model, a payload with mass \(m\) is positioned on top of a stage.
|
||||
The objective is to accurately position the sample relative to the X-ray beam.
|
||||
|
||||
The relative position \(y\) between the payload and the X-ray is measured, which typically involves measuring the relative position between the focusing optics and the sample.
|
||||
Various disturbance forces affect positioning stability, including stage vibrations \(d_w\) and direct forces applied to the sample \(d_F\) (such as cable forces).
|
||||
The positioning stage itself is characterized by stiffness \(k\), internal damping \(c\), and a controllable force \(F\).
|
||||
|
||||
The model of the plant \(G(s)\) from actuator force \(F\) to displacement \(y\) is described by Equation \eqref{eq:detail_control_cf_test_plant_tf}.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_test_plant_tf}
|
||||
G(s) = \frac{1}{m s^2 + c s + k}, \quad m = \SI{20}{\kg},\ k = 1\si{\N/\mu\m},\ c = 10^2\si{\N\per(\m\per\s)}
|
||||
\end{equation}
|
||||
|
||||
The plant dynamics include uncertainties related to limited support compliance, unmodeled flexible dynamics and payload dynamics.
|
||||
These uncertainties are represented using a multiplicative input uncertainty weight \eqref{eq:detail_control_cf_test_plant_uncertainty}, which specifies the magnitude of uncertainty as a function of frequency.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_test_plant_uncertainty}
|
||||
w_I(s) = 10 \cdot \frac{(s+100)^2}{(s+1000)^2}
|
||||
\end{equation}
|
||||
|
||||
Figure \ref{fig:detail_control_cf_bode_plot_mech_sys} illustrates both the nominal plant dynamics and the complete set of possible plants \(\Pi_i\) encompassed by the uncertainty model.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\begin{subfigure}{0.3\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,scale=1]{figs/detail_control_cf_test_model.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_test_model}Test model}
|
||||
\end{subfigure}
|
||||
\begin{subfigure}{0.66\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,scale=1]{figs/detail_control_cf_bode_plot_mech_sys.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_bode_plot_mech_sys}Bode plot of $G(s)$ and associated uncertainty set}
|
||||
\end{subfigure}
|
||||
\caption{\label{fig:detail_control_cf_test_model_plant}Schematic of the test system (\subref{fig:detail_control_cf_test_model}). Bode plot of the transfer function \(G(s)\) from \(F\) to \(y\) and the associated uncertainty set (\subref{fig:detail_control_cf_bode_plot_mech_sys}).}
|
||||
\end{figure}
|
||||
\subsubsection{Requirements and choice of complementary filters}
|
||||
|
||||
As discussed in Section \ref{ssec:detail_control_cf_trans_perf}, nominal performance requirements can be expressed as upper bounds on the shape of the complementary filters.
|
||||
For this example, the requirements are:
|
||||
\begin{itemize}
|
||||
\item track ramp inputs (i.e. constant velocity scans) with zero steady-state error: a \(+2\) slope at low frequencies for the magnitude of the sensitivity function \(|S(j\omega)|\) is required
|
||||
\item filtering of measurement noise above \(\SI{300}{Hz}\), where sensor noise is significant (requiring a filtering factor of approximately 100 above this frequency)
|
||||
\item maximizing disturbance rejection
|
||||
\end{itemize}
|
||||
|
||||
Additionally, robust stability must be ensured, requiring the closed-loop system to remain stable despite the dynamic uncertainties modeled by \(w_I\).
|
||||
This condition is satisfied when the magnitude of the low-pass complementary filter \(|H_L(j\omega)|\) remains below the inverse of the uncertainty weight magnitude \(|w_I(j\omega)|\), as expressed in Equation \eqref{eq:detail_control_cf_condition_robust_stability}.
|
||||
|
||||
Robust performance is achieved when both nominal performance and robust stability conditions are simultaneously satisfied.
|
||||
|
||||
All requirements imposed on \(H_L\) and \(H_H\) are visualized in Figure \ref{fig:detail_control_cf_specs_S_T}.
|
||||
While \(\mathcal{H}_\infty\text{-synthesis}\) could be employed to design the complementary filters, analytical formulas were used for this relatively simple example.
|
||||
The second-order complementary filters from Equation \eqref{eq:detail_control_cf_2nd_order} were selected with parameters \(\alpha = 1\) and \(\omega_0 = 2\pi \cdot 20\,\text{Hz}\).
|
||||
There magnitudes are displayed in Figure \ref{fig:detail_control_cf_specs_S_T}, confirming that these complementary filters are fulfilling the specifications.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\begin{subfigure}{0.48\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_cf_specs_S_T.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_specs_S_T}Specifications and complementary filters}
|
||||
\end{subfigure}
|
||||
\begin{subfigure}{0.48\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_cf_bode_Kfb.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_bode_Kfb}Bode plot of $K(s) \cdot H_L(s)$}
|
||||
\end{subfigure}
|
||||
\caption{\label{fig:detail_control_cf_specs_S_T_obtained_filters}Performance requirement and complementary filters used (\subref{fig:detail_control_cf_specs_S_T}). Obtained controller from the complementary filters and the plant inverse is shown in (\subref{fig:detail_control_cf_bode_Kfb}).}
|
||||
\end{figure}
|
||||
\subsubsection{Controller analysis}
|
||||
|
||||
The controller to be implemented takes the form \(K(s) = \tilde{G}^{-1}(s) H_H^{-1}(s)\), where \(\tilde{G}^{-1}(s)\) represents the plant inverse, which must be both stable and proper.
|
||||
To ensure properness, low-pass filters with high corner frequencies are added as shown in Equation \eqref{eq:detail_control_cf_test_plant_inverse}.
|
||||
|
||||
\begin{equation}\label{eq:detail_control_cf_test_plant_inverse}
|
||||
\tilde{G}^{-1}(s) = \frac{m s^2 + c s + k}{1 + \frac{s}{2\pi \cdot 1000} + \left( \frac{s}{2\pi \cdot 1000} \right)^2}
|
||||
\end{equation}
|
||||
|
||||
The Bode plot of the controller multiplied by the complementary low-pass filter, \(K(s) \cdot H_L(s)\), is presented in Figure \ref{fig:detail_control_cf_bode_Kfb}.
|
||||
The frequency response reveals several important characteristics:
|
||||
\begin{itemize}
|
||||
\item The presence of two integrators at low frequencies, enabling accurate tracking of ramp inputs
|
||||
\item A notch at the plant resonance frequency (arising from the plant inverse)
|
||||
\item A lead component near the control bandwidth of approximately 20 Hz, enhancing stability margins
|
||||
\end{itemize}
|
||||
\subsubsection{Robustness and Performance analysis}
|
||||
|
||||
Robust stability is assessed using the Nyquist plot shown in Figure \ref{fig:detail_control_cf_nyquist_robustness}.
|
||||
Even when considering all possible plants within the uncertainty set, the Nyquist plot remains sufficiently distant from the critical point \((-1,0)\), indicating robust stability with adequate margins.
|
||||
|
||||
Performance is evaluated by examining the closed-loop sensitivity and complementary sensitivity transfer functions, as illustrated in Figure \ref{fig:detail_control_cf_robust_perf}.
|
||||
It is shown that the sensitivity transfer function achieves the desired \(+2\) slope at low frequencies and that the complementary sensitivity transfer function nominally provides the wanted noise filtering.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\begin{subfigure}{0.49\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,scale=0.8]{figs/detail_control_cf_nyquist_robustness.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_nyquist_robustness}Robust Stability}
|
||||
\end{subfigure}
|
||||
\begin{subfigure}{0.49\textwidth}
|
||||
\begin{center}
|
||||
\includegraphics[scale=1,scale=0.8]{figs/detail_control_cf_robust_perf.png}
|
||||
\end{center}
|
||||
\subcaption{\label{fig:detail_control_cf_robust_perf}Nominal and Robust performance}
|
||||
\end{subfigure}
|
||||
\caption{\label{fig:detail_control_cf_simulation_results}Validation of Robust stability with the Nyquist plot (\subref{fig:detail_control_cf_nyquist_robustness}) and validation of the nominal and robust performance with the magnitude of the closed-loop transfer functions (\subref{fig:detail_control_cf_robust_perf})}
|
||||
\end{figure}
|
||||
\section*{Conclusion}
|
||||
In this section, a control architecture in which complementary filters are used for closed-loop shaping has been presented.
|
||||
This approach differs from traditional open-loop shaping in that no controller is manually designed; rather, appropriate complementary filters are selected to achieve the desired closed-loop behavior.
|
||||
The method shares conceptual similarities with mixed-sensitivity \(\mathcal{H}_{\infty}\text{-synthesis}\), as both approaches aim to shape closed-loop transfer functions, but with notable distinctions in implementation and complexity.
|
||||
|
||||
While \(\mathcal{H}_{\infty}\text{-synthesis}\) offers greater flexibility and can be readily generalized to MIMO plants, the presented approach provides a simpler alternative that requires minimal design effort.
|
||||
Implementation only necessitates extracting a model of the plant and selecting appropriate analytical complementary filters, making it particularly interesting for applications where simplicity and intuitive parameter tuning are valued.
|
||||
|
||||
Due to time constraints, an extensive literature review comparing this approach with similar existing architectures, such as Internal Model Control \cite{saxena12_advan_inter_model_contr_techn}, was not conducted.
|
||||
Consequently, it remains unclear whether the proposed architecture offers significant advantages over existing methods in the literature.
|
||||
|
||||
The control architecture has been presented for SISO systems, but can be applied to MIMO systems when sufficient decoupling is achieved.
|
||||
It will be experimentally validated with the NASS during the experimental phase.
|
||||
\bibliography{dehaeze26_control}
|
||||
\end{document}
|
||||
BIN
paper/figs/detail_control_cf_analytical_effect_alpha.pdf
Normal file
BIN
paper/figs/detail_control_cf_analytical_effect_alpha.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
paper/figs/detail_control_cf_analytical_effect_w0.pdf
Normal file
BIN
paper/figs/detail_control_cf_analytical_effect_w0.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
paper/figs/detail_control_cf_arch.pdf
Normal file
BIN
paper/figs/detail_control_cf_arch.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
250
paper/figs/detail_control_cf_arch.svg
Normal file
@@ -0,0 +1,250 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="201.584pt" height="127.565pt" viewBox="0 0 201.584 127.565">
|
||||
<defs>
|
||||
<g>
|
||||
<g id="glyph-0-0">
|
||||
<path d="M 7.265625 -0.875 C 7.265625 -0.9375 7.265625 -1.046875 7.140625 -1.046875 C 7.03125 -1.046875 7.03125 -0.953125 7.015625 -0.890625 C 6.953125 -0.171875 6.609375 0 6.359375 0 C 5.875 0 5.796875 -0.5 5.65625 -1.421875 L 5.53125 -2.21875 C 5.34375 -2.859375 4.859375 -3.1875 4.3125 -3.375 C 5.28125 -3.609375 6.046875 -4.21875 6.046875 -4.984375 C 6.046875 -5.9375 4.921875 -6.78125 3.46875 -6.78125 L 0.34375 -6.78125 L 0.34375 -6.46875 L 0.578125 -6.46875 C 1.34375 -6.46875 1.375 -6.359375 1.375 -6 L 1.375 -0.78125 C 1.375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.40625 -0.03125 1.796875 -0.03125 C 2.1875 -0.03125 2.890625 -0.03125 3.25 0 L 3.25 -0.3125 L 3 -0.3125 C 2.25 -0.3125 2.21875 -0.421875 2.21875 -0.78125 L 2.21875 -3.28125 L 3.359375 -3.28125 C 3.515625 -3.28125 3.9375 -3.28125 4.28125 -2.953125 C 4.65625 -2.59375 4.65625 -2.28125 4.65625 -1.625 C 4.65625 -0.96875 4.65625 -0.578125 5.0625 -0.203125 C 5.484375 0.15625 6.015625 0.21875 6.3125 0.21875 C 7.09375 0.21875 7.265625 -0.59375 7.265625 -0.875 Z M 5.03125 -4.984375 C 5.03125 -4.3125 4.796875 -3.5 3.328125 -3.5 L 2.21875 -3.5 L 2.21875 -6.078125 C 2.21875 -6.296875 2.21875 -6.421875 2.4375 -6.453125 C 2.546875 -6.46875 2.828125 -6.46875 3.03125 -6.46875 C 3.921875 -6.46875 5.03125 -6.421875 5.03125 -4.984375 Z M 5.03125 -4.984375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-1">
|
||||
<path d="M 6.796875 -4.484375 L 6.609375 -6.71875 L 0.546875 -6.71875 L 0.359375 -4.484375 L 0.609375 -4.484375 C 0.75 -6.078125 0.890625 -6.40625 2.390625 -6.40625 C 2.5625 -6.40625 2.828125 -6.40625 2.921875 -6.390625 C 3.140625 -6.34375 3.140625 -6.234375 3.140625 -6.015625 L 3.140625 -0.78125 C 3.140625 -0.453125 3.140625 -0.3125 2.09375 -0.3125 L 1.703125 -0.3125 L 1.703125 0 C 2.109375 -0.03125 3.109375 -0.03125 3.578125 -0.03125 C 4.03125 -0.03125 5.046875 -0.03125 5.453125 0 L 5.453125 -0.3125 L 5.0625 -0.3125 C 4.015625 -0.3125 4.015625 -0.453125 4.015625 -0.78125 L 4.015625 -6.015625 C 4.015625 -6.21875 4.015625 -6.34375 4.203125 -6.390625 C 4.3125 -6.40625 4.578125 -6.40625 4.765625 -6.40625 C 6.265625 -6.40625 6.40625 -6.078125 6.546875 -4.484375 Z M 6.796875 -4.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-2">
|
||||
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.015625 -1.28125 3.984375 -1.28125 C 3.90625 -1.28125 3.875 -1.234375 3.859375 -1.1875 C 3.578125 -0.265625 2.921875 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.15625 C 1.15625 -3.78125 1.96875 -4.203125 2.5 -4.203125 C 2.59375 -4.203125 3.21875 -4.1875 3.5625 -3.828125 C 3.15625 -3.796875 3.09375 -3.5 3.09375 -3.375 C 3.09375 -3.109375 3.28125 -2.921875 3.546875 -2.921875 C 3.8125 -2.921875 4.015625 -3.078125 4.015625 -3.390625 C 4.015625 -4.0625 3.25 -4.4375 2.484375 -4.4375 C 1.25 -4.4375 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.46875 0.109375 C 3.796875 0.109375 4.125 -1.078125 4.125 -1.1875 Z M 4.125 -1.1875 "/>
|
||||
</g>
|
||||
<g id="glyph-0-3">
|
||||
<path d="M 4.671875 -2.125 C 4.671875 -3.390625 3.6875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.625 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.59375 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.234375 2.46875 -4.234375 C 2.90625 -4.234375 3.328125 -4.015625 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-4">
|
||||
<path d="M 5.3125 0 L 5.3125 -0.3125 C 4.796875 -0.3125 4.546875 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.359375 4.53125 -3.65625 4.234375 -4.015625 C 4.09375 -4.1875 3.765625 -4.390625 3.1875 -4.390625 C 2.453125 -4.390625 2 -3.953125 1.71875 -3.34375 L 1.71875 -4.390625 L 0.3125 -4.28125 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.578125 C 1.78125 -3.609375 2.484375 -4.171875 3.109375 -4.171875 C 3.734375 -4.171875 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.203125 -0.03125 Z M 5.3125 0 "/>
|
||||
</g>
|
||||
<g id="glyph-0-5">
|
||||
<path d="M 3.296875 -1.234375 L 3.296875 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.140625 -3.96875 L 3.140625 -4.28125 L 1.71875 -4.28125 L 1.71875 -6.109375 L 1.46875 -6.109375 C 1.453125 -5.28125 1.15625 -4.234375 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.296875 -0.59375 3.296875 -1.234375 Z M 3.296875 -1.234375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-6">
|
||||
<path d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.390625 2.875 -4.390625 C 2.15625 -4.390625 1.796875 -3.71875 1.65625 -3.296875 L 1.65625 -4.390625 L 0.28125 -4.28125 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.90625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.8125 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.78125 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.171875 2.875 -4.171875 C 2.953125 -4.171875 2.96875 -4.171875 2.984375 -4.15625 C 2.953125 -4.140625 2.765625 -4.03125 2.765625 -3.765625 C 2.765625 -3.5 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.46875 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-7">
|
||||
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.890625 L 0.328125 -6.78125 L 0.328125 -6.46875 C 1.015625 -6.46875 1.09375 -6.40625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
|
||||
</g>
|
||||
<g id="glyph-0-8">
|
||||
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.90625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.515625 -0.140625 2.625 -0.140625 2.515625 -0.140625 C 2.03125 -0.140625 1.625 -0.4375 1.40625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.296875 L 3.875 -2.296875 C 4.09375 -2.296875 4.125 -2.296875 4.125 -2.5 C 4.125 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.1875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.125 -0.984375 4.125 -1.1875 Z M 3.46875 -2.5 L 1.109375 -2.5 C 1.171875 -3.984375 2 -4.234375 2.34375 -4.234375 C 3.359375 -4.234375 3.46875 -2.890625 3.46875 -2.5 Z M 3.46875 -2.5 "/>
|
||||
</g>
|
||||
<g id="glyph-1-0">
|
||||
<path d="M 8.09375 -2.984375 C 8.09375 -3.203125 7.890625 -3.203125 7.71875 -3.203125 L 4.53125 -3.203125 L 4.53125 -6.390625 C 4.53125 -6.5625 4.53125 -6.765625 4.328125 -6.765625 C 4.109375 -6.765625 4.109375 -6.578125 4.109375 -6.390625 L 4.109375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.109375 -2.78125 L 4.109375 0.390625 C 4.109375 0.5625 4.109375 0.765625 4.3125 0.765625 C 4.53125 0.765625 4.53125 0.578125 4.53125 0.390625 L 4.53125 -2.78125 L 7.71875 -2.78125 C 7.875 -2.78125 8.09375 -2.78125 8.09375 -2.984375 Z M 8.09375 -2.984375 "/>
|
||||
</g>
|
||||
<g id="glyph-2-0">
|
||||
<path d="M 6.890625 -2.484375 C 6.890625 -2.671875 6.703125 -2.671875 6.5625 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-0">
|
||||
<path d="M 4.859375 -1.421875 C 4.859375 -1.515625 4.765625 -1.515625 4.75 -1.515625 C 4.640625 -1.515625 4.640625 -1.484375 4.609375 -1.34375 C 4.40625 -0.609375 4.171875 -0.109375 3.734375 -0.109375 C 3.546875 -0.109375 3.421875 -0.21875 3.421875 -0.578125 C 3.421875 -0.75 3.46875 -0.96875 3.5 -1.125 C 3.546875 -1.296875 3.546875 -1.34375 3.546875 -1.4375 C 3.546875 -2.078125 2.921875 -2.375 2.078125 -2.484375 C 2.375 -2.65625 2.703125 -2.96875 2.921875 -3.21875 C 3.40625 -3.734375 3.859375 -4.171875 4.34375 -4.171875 C 4.40625 -4.171875 4.421875 -4.171875 4.4375 -4.15625 C 4.546875 -4.140625 4.5625 -4.140625 4.640625 -4.078125 C 4.65625 -4.0625 4.65625 -4.0625 4.6875 -4.03125 C 4.203125 -4.015625 4.125 -3.625 4.125 -3.5 C 4.125 -3.34375 4.234375 -3.15625 4.5 -3.15625 C 4.75 -3.15625 5.046875 -3.375 5.046875 -3.765625 C 5.046875 -4.0625 4.8125 -4.390625 4.359375 -4.390625 C 4.09375 -4.390625 3.625 -4.3125 2.921875 -3.515625 C 2.578125 -3.140625 2.1875 -2.734375 1.8125 -2.59375 L 2.84375 -6.78125 C 2.84375 -6.78125 2.84375 -6.890625 2.71875 -6.890625 C 2.484375 -6.890625 1.765625 -6.8125 1.515625 -6.78125 C 1.421875 -6.78125 1.3125 -6.765625 1.3125 -6.59375 C 1.3125 -6.46875 1.40625 -6.46875 1.5625 -6.46875 C 2.03125 -6.46875 2.046875 -6.40625 2.046875 -6.296875 L 2.03125 -6.109375 L 0.578125 -0.390625 C 0.546875 -0.25 0.546875 -0.234375 0.546875 -0.171875 C 0.546875 0.0625 0.75 0.109375 0.828125 0.109375 C 0.96875 0.109375 1.109375 0.015625 1.171875 -0.09375 C 1.21875 -0.1875 1.671875 -2.03125 1.71875 -2.265625 C 2.0625 -2.25 2.875 -2.078125 2.875 -1.421875 C 2.875 -1.359375 2.875 -1.3125 2.84375 -1.21875 C 2.828125 -1.09375 2.8125 -0.984375 2.8125 -0.875 C 2.8125 -0.28125 3.203125 0.109375 3.71875 0.109375 C 4.015625 0.109375 4.28125 -0.046875 4.5 -0.421875 C 4.75 -0.859375 4.859375 -1.421875 4.859375 -1.421875 Z M 4.859375 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-1">
|
||||
<path d="M 7.15625 -2.59375 C 7.15625 -2.671875 7.109375 -2.703125 7.03125 -2.703125 C 6.796875 -2.703125 6.21875 -2.671875 5.984375 -2.671875 L 4.59375 -2.703125 C 4.5 -2.703125 4.390625 -2.703125 4.390625 -2.515625 C 4.390625 -2.40625 4.46875 -2.40625 4.6875 -2.40625 C 4.6875 -2.40625 4.984375 -2.40625 5.203125 -2.375 C 5.46875 -2.34375 5.515625 -2.328125 5.515625 -2.1875 C 5.515625 -2.109375 5.40625 -1.65625 5.3125 -1.296875 C 5.03125 -0.203125 3.734375 -0.09375 3.390625 -0.09375 C 2.4375 -0.09375 1.40625 -0.65625 1.40625 -2.171875 C 1.40625 -2.484375 1.5 -4.125 2.546875 -5.40625 C 3.078125 -6.078125 4.03125 -6.6875 5.015625 -6.6875 C 6.03125 -6.6875 6.625 -5.921875 6.625 -4.765625 C 6.625 -4.375 6.59375 -4.359375 6.59375 -4.265625 C 6.59375 -4.171875 6.703125 -4.171875 6.734375 -4.171875 C 6.859375 -4.171875 6.859375 -4.1875 6.921875 -4.359375 L 7.546875 -6.890625 C 7.546875 -6.921875 7.515625 -7 7.4375 -7 C 7.40625 -7 7.390625 -6.984375 7.28125 -6.875 L 6.59375 -6.109375 C 6.5 -6.25 6.046875 -7 4.9375 -7 C 2.734375 -7 0.5 -4.796875 0.5 -2.5 C 0.5 -0.921875 1.59375 0.21875 3.203125 0.21875 C 3.640625 0.21875 4.09375 0.125 4.4375 -0.015625 C 4.9375 -0.21875 5.125 -0.421875 5.3125 -0.625 C 5.390625 -0.375 5.65625 -0.015625 5.75 -0.015625 C 5.796875 -0.015625 5.828125 -0.046875 5.828125 -0.046875 C 5.84375 -0.0625 5.9375 -0.453125 6 -0.65625 L 6.1875 -1.421875 C 6.21875 -1.59375 6.265625 -1.75 6.3125 -1.921875 C 6.421875 -2.375 6.421875 -2.390625 7 -2.40625 C 7.046875 -2.40625 7.15625 -2.40625 7.15625 -2.59375 Z M 7.15625 -2.59375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-2">
|
||||
<path d="M 7.125 -0.203125 C 7.125 -0.3125 7.03125 -0.3125 6.84375 -0.3125 C 6.484375 -0.3125 6.203125 -0.3125 6.203125 -0.484375 C 6.203125 -0.546875 6.21875 -0.59375 6.234375 -0.65625 L 7.578125 -6.015625 C 7.65625 -6.375 7.671875 -6.46875 8.40625 -6.46875 C 8.65625 -6.46875 8.734375 -6.46875 8.734375 -6.671875 C 8.734375 -6.78125 8.625 -6.78125 8.609375 -6.78125 L 7.328125 -6.75 L 6.046875 -6.78125 C 5.96875 -6.78125 5.859375 -6.78125 5.859375 -6.578125 C 5.859375 -6.46875 5.953125 -6.46875 6.140625 -6.46875 C 6.140625 -6.46875 6.34375 -6.46875 6.515625 -6.453125 C 6.703125 -6.421875 6.78125 -6.421875 6.78125 -6.296875 C 6.78125 -6.25 6.78125 -6.234375 6.75 -6.109375 L 6.15625 -3.6875 L 3.125 -3.6875 L 3.703125 -6.015625 C 3.796875 -6.375 3.828125 -6.46875 4.546875 -6.46875 C 4.796875 -6.46875 4.875 -6.46875 4.875 -6.671875 C 4.875 -6.78125 4.765625 -6.78125 4.75 -6.78125 L 3.46875 -6.75 L 2.1875 -6.78125 C 2.109375 -6.78125 2 -6.78125 2 -6.578125 C 2 -6.46875 2.09375 -6.46875 2.28125 -6.46875 C 2.28125 -6.46875 2.484375 -6.46875 2.65625 -6.453125 C 2.84375 -6.421875 2.921875 -6.421875 2.921875 -6.296875 C 2.921875 -6.25 2.921875 -6.21875 2.890625 -6.109375 L 1.5625 -0.78125 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.625 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.078125 -3.375 L 5.390625 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.25 -0.3125 4.25 -0.109375 C 4.25 0 4.390625 0 4.390625 0 L 5.640625 -0.03125 L 6.28125 -0.015625 C 6.5 -0.015625 6.71875 0 6.921875 0 C 7 0 7.125 0 7.125 -0.203125 Z M 7.125 -0.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-3">
|
||||
<path d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.171875 -1.515625 5.15625 -1.484375 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.390625 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.6875 -3.1875 4.71875 -3.34375 C 4.765625 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.53125 -4.28125 4.28125 -4.265625 4.203125 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.640625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.75 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-4">
|
||||
<path d="M 5.671875 -1.421875 C 5.671875 -1.515625 5.578125 -1.515625 5.546875 -1.515625 C 5.453125 -1.515625 5.453125 -1.484375 5.390625 -1.34375 C 5.203125 -0.671875 4.875 -0.109375 4.390625 -0.109375 C 4.21875 -0.109375 4.140625 -0.203125 4.140625 -0.4375 C 4.140625 -0.6875 4.234375 -0.921875 4.328125 -1.140625 C 4.515625 -1.671875 4.9375 -2.765625 4.9375 -3.328125 C 4.9375 -3.984375 4.5 -4.390625 3.796875 -4.390625 C 2.890625 -4.390625 2.40625 -3.75 2.25 -3.515625 C 2.1875 -4.078125 1.78125 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.578125 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.171875 1.296875 -4.171875 C 1.5 -4.171875 1.609375 -4.03125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 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.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.1875 1.5625 -0.65625 1.625 -0.90625 L 1.84375 -1.796875 C 1.90625 -2.015625 1.96875 -2.234375 2.015625 -2.453125 L 2.140625 -2.953125 C 2.296875 -3.265625 2.8125 -4.171875 3.765625 -4.171875 C 4.203125 -4.171875 4.296875 -3.796875 4.296875 -3.46875 C 4.296875 -2.859375 3.8125 -1.59375 3.65625 -1.15625 C 3.5625 -0.9375 3.546875 -0.8125 3.546875 -0.703125 C 3.546875 -0.234375 3.90625 0.109375 4.359375 0.109375 C 5.296875 0.109375 5.671875 -1.34375 5.671875 -1.421875 Z M 5.671875 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-5">
|
||||
<path d="M 4.828125 -3.78125 C 4.859375 -3.921875 4.859375 -3.9375 4.859375 -4.015625 C 4.859375 -4.1875 4.71875 -4.28125 4.578125 -4.28125 C 4.46875 -4.28125 4.3125 -4.21875 4.234375 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.09375 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.40625 -0.796875 2.96875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.375 1.875 -1.984375 2.21875 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.875 1.234375 -4.171875 1.5625 -4.171875 C 1.640625 -4.171875 1.8125 -4.171875 1.8125 -3.84375 C 1.8125 -3.609375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.109375 1.078125 -1.53125 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.671875 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.96875 1.78125 0.796875 1.40625 C 0.953125 1.40625 1.078125 1.40625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.875 0.015625 Z M 4.828125 -3.78125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-6">
|
||||
<path d="M 4.328125 -3.734375 C 4.328125 -4.09375 4.015625 -4.390625 3.5 -4.390625 C 2.859375 -4.390625 2.421875 -3.90625 2.234375 -3.625 C 2.15625 -4.0625 1.796875 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.59375 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.171875 1.296875 -4.171875 C 1.46875 -4.171875 1.609375 -4.09375 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 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.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.828125 -1.734375 L 2.15625 -3.03125 C 2.1875 -3.15625 2.46875 -3.625 2.703125 -3.84375 C 2.78125 -3.90625 3.078125 -4.171875 3.5 -4.171875 C 3.765625 -4.171875 3.921875 -4.046875 3.921875 -4.046875 C 3.625 -4 3.40625 -3.765625 3.40625 -3.5 C 3.40625 -3.34375 3.515625 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.328125 -3.390625 4.328125 -3.734375 Z M 4.328125 -3.734375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-7">
|
||||
<path d="M 4.9375 -1.421875 C 4.9375 -1.515625 4.859375 -1.515625 4.828125 -1.515625 C 4.71875 -1.515625 4.71875 -1.484375 4.6875 -1.34375 C 4.515625 -0.6875 4.328125 -0.109375 3.921875 -0.109375 C 3.65625 -0.109375 3.625 -0.359375 3.625 -0.5625 C 3.625 -0.796875 3.65625 -0.875 3.6875 -1.046875 L 5.125 -6.78125 C 5.125 -6.78125 5.125 -6.890625 4.984375 -6.890625 C 4.84375 -6.890625 3.90625 -6.796875 3.734375 -6.78125 C 3.65625 -6.765625 3.59375 -6.71875 3.59375 -6.59375 C 3.59375 -6.46875 3.6875 -6.46875 3.828125 -6.46875 C 4.3125 -6.46875 4.328125 -6.40625 4.328125 -6.296875 L 4.296875 -6.109375 L 3.703125 -3.75 C 3.515625 -4.125 3.234375 -4.390625 2.78125 -4.390625 C 1.625 -4.390625 0.390625 -2.921875 0.390625 -1.484375 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.921875 0.109375 2.40625 0.0625 3 -0.640625 C 3.078125 -0.21875 3.4375 0.109375 3.90625 0.109375 C 4.25 0.109375 4.484375 -0.125 4.640625 -0.4375 C 4.8125 -0.796875 4.9375 -1.421875 4.9375 -1.421875 Z M 3.546875 -3.125 L 3.0625 -1.1875 C 3 -1 3 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.234375 -0.109375 1.09375 -0.65625 1.09375 -1.046875 C 1.09375 -1.53125 1.421875 -2.765625 1.640625 -3.21875 C 1.953125 -3.796875 2.40625 -4.171875 2.796875 -4.171875 C 3.4375 -4.171875 3.578125 -3.359375 3.578125 -3.296875 C 3.578125 -3.234375 3.5625 -3.171875 3.546875 -3.125 Z M 3.546875 -3.125 "/>
|
||||
</g>
|
||||
<g id="glyph-4-0">
|
||||
<path d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.890625 1.671875 -3.890625 C 1.390625 -3.890625 1.328125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.359375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
|
||||
</g>
|
||||
<g id="glyph-5-0">
|
||||
<path d="M 5.546875 -0.140625 C 5.546875 -0.25 5.484375 -0.25 5.3125 -0.25 C 5.203125 -0.25 5.1875 -0.25 5.0625 -0.265625 C 4.90625 -0.28125 4.90625 -0.296875 4.90625 -0.375 C 4.90625 -0.40625 4.921875 -0.484375 4.9375 -0.515625 L 5.84375 -4.1875 C 5.90625 -4.4375 5.921875 -4.5 6.4375 -4.5 C 6.59375 -4.5 6.671875 -4.5 6.671875 -4.65625 C 6.671875 -4.671875 6.65625 -4.75 6.5625 -4.75 C 6.359375 -4.75 5.859375 -4.71875 5.65625 -4.71875 C 5.53125 -4.71875 5.296875 -4.71875 5.171875 -4.734375 C 5.03125 -4.734375 4.875 -4.75 4.734375 -4.75 C 4.6875 -4.75 4.59375 -4.75 4.59375 -4.59375 C 4.59375 -4.5 4.671875 -4.5 4.8125 -4.5 C 4.8125 -4.5 4.953125 -4.5 5.078125 -4.484375 C 5.21875 -4.46875 5.234375 -4.453125 5.234375 -4.390625 C 5.234375 -4.390625 5.234375 -4.34375 5.203125 -4.234375 L 4.796875 -2.59375 L 2.46875 -2.59375 L 2.875 -4.203125 C 2.9375 -4.4375 2.953125 -4.5 3.484375 -4.5 C 3.609375 -4.5 3.6875 -4.5 3.6875 -4.65625 C 3.6875 -4.671875 3.671875 -4.75 3.578125 -4.75 C 3.375 -4.75 2.875 -4.71875 2.671875 -4.71875 C 2.546875 -4.71875 2.3125 -4.71875 2.1875 -4.734375 C 2.046875 -4.734375 1.890625 -4.75 1.75 -4.75 C 1.703125 -4.75 1.609375 -4.75 1.609375 -4.59375 C 1.609375 -4.5 1.6875 -4.5 1.828125 -4.5 C 1.828125 -4.5 1.96875 -4.5 2.09375 -4.484375 C 2.234375 -4.46875 2.25 -4.453125 2.25 -4.390625 C 2.25 -4.390625 2.25 -4.34375 2.21875 -4.234375 L 1.296875 -0.546875 C 1.25 -0.3125 1.234375 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 -0.03125 0.53125 0 0.59375 0 C 0.796875 0 1.296875 -0.03125 1.5 -0.03125 C 1.609375 -0.03125 1.859375 -0.03125 1.96875 -0.015625 C 2.109375 -0.015625 2.28125 0 2.421875 0 C 2.453125 0 2.5625 0 2.5625 -0.140625 C 2.5625 -0.25 2.5 -0.25 2.34375 -0.25 C 2.21875 -0.25 2.203125 -0.25 2.078125 -0.265625 C 1.921875 -0.28125 1.921875 -0.296875 1.921875 -0.375 C 1.921875 -0.375 1.921875 -0.421875 1.953125 -0.515625 L 2.40625 -2.34375 L 4.734375 -2.34375 L 4.28125 -0.546875 C 4.234375 -0.3125 4.21875 -0.25 3.671875 -0.25 C 3.546875 -0.25 3.46875 -0.25 3.46875 -0.109375 C 3.46875 -0.03125 3.515625 0 3.578125 0 C 3.78125 0 4.28125 -0.03125 4.484375 -0.03125 C 4.59375 -0.03125 4.84375 -0.03125 4.953125 -0.015625 C 5.09375 -0.015625 5.265625 0 5.40625 0 C 5.4375 0 5.546875 0 5.546875 -0.140625 Z M 5.546875 -0.140625 "/>
|
||||
</g>
|
||||
<g id="glyph-5-1">
|
||||
<path d="M 5.015625 -1.734375 C 5.015625 -1.75 5 -1.828125 4.890625 -1.828125 C 4.8125 -1.828125 4.796875 -1.796875 4.75 -1.6875 C 4.484375 -1.015625 4.1875 -0.25 2.90625 -0.25 L 2.125 -0.25 C 1.90625 -0.25 1.90625 -0.25 1.90625 -0.3125 C 1.90625 -0.3125 1.90625 -0.359375 1.9375 -0.46875 L 2.859375 -4.171875 C 2.921875 -4.421875 2.953125 -4.5 3.59375 -4.5 C 3.796875 -4.5 3.875 -4.5 3.875 -4.65625 C 3.875 -4.65625 3.859375 -4.75 3.75 -4.75 C 3.59375 -4.75 3.40625 -4.734375 3.234375 -4.734375 L 2.6875 -4.71875 L 2.203125 -4.734375 C 2.0625 -4.734375 1.890625 -4.75 1.75 -4.75 C 1.703125 -4.75 1.609375 -4.75 1.609375 -4.59375 C 1.609375 -4.5 1.6875 -4.5 1.828125 -4.5 C 1.828125 -4.5 1.96875 -4.5 2.09375 -4.484375 C 2.234375 -4.46875 2.25 -4.453125 2.25 -4.390625 C 2.25 -4.390625 2.25 -4.34375 2.21875 -4.234375 L 1.296875 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 0 0.5625 0 0.6875 0 L 4.1875 0 C 4.359375 0 4.359375 0 4.421875 -0.140625 C 4.484375 -0.328125 5.015625 -1.671875 5.015625 -1.734375 Z M 5.015625 -1.734375 "/>
|
||||
</g>
|
||||
<g id="glyph-5-2">
|
||||
<path d="M 6.703125 -1 C 6.703125 -1.078125 6.625 -1.078125 6.59375 -1.078125 C 6.5 -1.078125 6.5 -1.046875 6.46875 -0.96875 C 6.3125 -0.40625 6 -0.125 5.734375 -0.125 C 5.578125 -0.125 5.5625 -0.21875 5.5625 -0.375 C 5.5625 -0.53125 5.59375 -0.625 5.71875 -0.9375 C 5.796875 -1.140625 6.078125 -1.890625 6.078125 -2.28125 C 6.078125 -2.390625 6.078125 -2.671875 5.828125 -2.875 C 5.703125 -2.96875 5.5 -3.0625 5.1875 -3.0625 C 4.546875 -3.0625 4.171875 -2.65625 3.953125 -2.359375 C 3.890625 -2.953125 3.40625 -3.0625 3.046875 -3.0625 C 2.46875 -3.0625 2.078125 -2.71875 1.875 -2.4375 C 1.828125 -2.90625 1.40625 -3.0625 1.125 -3.0625 C 0.828125 -3.0625 0.671875 -2.84375 0.578125 -2.6875 C 0.421875 -2.4375 0.328125 -2.03125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.9375 0.59375 -2.125 C 0.703125 -2.53125 0.828125 -2.875 1.109375 -2.875 C 1.28125 -2.875 1.328125 -2.71875 1.328125 -2.53125 C 1.328125 -2.40625 1.265625 -2.140625 1.21875 -1.953125 L 1.078125 -1.328125 L 0.84375 -0.4375 C 0.828125 -0.34375 0.78125 -0.171875 0.78125 -0.15625 C 0.78125 0 0.90625 0.0625 1.015625 0.0625 C 1.140625 0.0625 1.25 -0.015625 1.28125 -0.078125 C 1.328125 -0.140625 1.375 -0.375 1.40625 -0.515625 L 1.5625 -1.140625 C 1.609375 -1.296875 1.640625 -1.453125 1.6875 -1.609375 C 1.765625 -1.890625 1.765625 -1.953125 1.96875 -2.234375 C 2.171875 -2.515625 2.5 -2.875 3.015625 -2.875 C 3.421875 -2.875 3.421875 -2.515625 3.421875 -2.390625 C 3.421875 -2.21875 3.40625 -2.125 3.3125 -1.734375 L 3.015625 -0.5625 C 2.984375 -0.421875 2.921875 -0.1875 2.921875 -0.15625 C 2.921875 0 3.046875 0.0625 3.15625 0.0625 C 3.28125 0.0625 3.390625 -0.015625 3.421875 -0.078125 C 3.46875 -0.140625 3.515625 -0.375 3.546875 -0.515625 L 3.703125 -1.140625 C 3.75 -1.296875 3.796875 -1.453125 3.828125 -1.609375 C 3.90625 -1.90625 3.90625 -1.921875 4.046875 -2.140625 C 4.265625 -2.46875 4.609375 -2.875 5.15625 -2.875 C 5.546875 -2.875 5.5625 -2.546875 5.5625 -2.390625 C 5.5625 -1.96875 5.265625 -1.203125 5.15625 -0.90625 C 5.078125 -0.703125 5.046875 -0.640625 5.046875 -0.53125 C 5.046875 -0.15625 5.359375 0.0625 5.703125 0.0625 C 6.40625 0.0625 6.703125 -0.890625 6.703125 -1 Z M 6.703125 -1 "/>
|
||||
</g>
|
||||
<g id="glyph-5-3">
|
||||
<path d="M 3.859375 -2.625 C 3.890625 -2.71875 3.890625 -2.734375 3.890625 -2.78125 C 3.890625 -2.90625 3.78125 -3 3.671875 -3 C 3.59375 -3 3.453125 -2.96875 3.375 -2.828125 C 3.359375 -2.78125 3.296875 -2.5625 3.265625 -2.421875 L 3.125 -1.84375 L 2.84375 -0.734375 C 2.84375 -0.734375 2.53125 -0.125 1.984375 -0.125 C 1.515625 -0.125 1.515625 -0.578125 1.515625 -0.703125 C 1.515625 -1.078125 1.671875 -1.515625 1.890625 -2.046875 C 1.96875 -2.28125 2 -2.359375 2 -2.46875 C 2 -2.8125 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.953125 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.875 1.328125 -2.875 C 1.4375 -2.875 1.5 -2.796875 1.5 -2.625 C 1.5 -2.46875 1.4375 -2.3125 1.390625 -2.21875 C 1.0625 -1.375 1 -1.125 1 -0.8125 C 1 -0.703125 1 -0.375 1.265625 -0.140625 C 1.484375 0.03125 1.765625 0.0625 1.953125 0.0625 C 2.234375 0.0625 2.484375 -0.03125 2.71875 -0.25 C 2.625 0.140625 2.546875 0.4375 2.265625 0.78125 C 2.078125 1 1.796875 1.21875 1.421875 1.21875 C 1.375 1.21875 1.046875 1.21875 0.90625 1 C 1.28125 0.953125 1.28125 0.609375 1.28125 0.609375 C 1.28125 0.390625 1.078125 0.34375 1.015625 0.34375 C 0.828125 0.34375 0.609375 0.484375 0.609375 0.8125 C 0.609375 1.15625 0.9375 1.421875 1.4375 1.421875 C 2.140625 1.421875 2.984375 0.875 3.203125 0 Z M 3.859375 -2.625 "/>
|
||||
</g>
|
||||
</g>
|
||||
<clipPath id="clip-0">
|
||||
<path clip-rule="nonzero" d="M 0.136719 14 L 118 14 L 118 127 L 0.136719 127 Z M 0.136719 14 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-1">
|
||||
<path clip-rule="nonzero" d="M 52 92 L 95 92 L 95 127.132812 L 52 127.132812 Z M 52 92 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-2">
|
||||
<path clip-rule="nonzero" d="M 157 92 L 200 92 L 200 127.132812 L 157 127.132812 Z M 157 92 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-3">
|
||||
<path clip-rule="nonzero" d="M 67 97 L 101 97 L 101 127.132812 L 67 127.132812 Z M 67 97 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-4">
|
||||
<path clip-rule="nonzero" d="M 173 97 L 201.035156 97 L 201.035156 127.132812 L 173 127.132812 Z M 173 97 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-5">
|
||||
<path clip-rule="nonzero" d="M 180 15 L 201.035156 15 L 201.035156 47 L 180 47 Z M 180 15 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-6">
|
||||
<path clip-rule="nonzero" d="M 0.136719 15 L 32 15 L 32 47 L 0.136719 47 Z M 0.136719 15 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-7">
|
||||
<path clip-rule="nonzero" d="M 100 97 L 133 97 L 133 127.132812 L 100 127.132812 Z M 100 97 "/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 1.128906 126.136719 L 116.660156 126.136719 L 116.660156 14.949219 L 1.128906 14.949219 Z M 1.128906 126.136719 "/>
|
||||
<g clip-path="url(#clip-0)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -25.132948 -95.654848 L 90.792267 -95.654848 L 90.792267 15.911804 L -25.132948 15.911804 Z M -25.132948 -95.654848 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-0" x="29.839948" y="10.647691"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-1" x="36.32441" y="10.647691"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-2" x="46.80122" y="10.647691"/>
|
||||
<use xlink:href="#glyph-0-3" x="51.214546" y="10.647691"/>
|
||||
<use xlink:href="#glyph-0-4" x="56.178917" y="10.647691"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-5" x="61.417322" y="10.647691"/>
|
||||
<use xlink:href="#glyph-0-6" x="65.27861" y="10.647691"/>
|
||||
<use xlink:href="#glyph-0-3" x="69.167698" y="10.647691"/>
|
||||
<use xlink:href="#glyph-0-7" x="74.13207" y="10.647691"/>
|
||||
<use xlink:href="#glyph-0-7" x="76.890274" y="10.647691"/>
|
||||
<use xlink:href="#glyph-0-8" x="79.648479" y="10.647691"/>
|
||||
<use xlink:href="#glyph-0-6" x="84.061805" y="10.647691"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.972254 -0.00165186 C 6.972254 3.851286 3.852276 6.975183 -0.000662015 6.975183 C -3.84968 6.975183 -6.973578 3.851286 -6.973578 -0.00165186 C -6.973578 -3.85067 -3.84968 -6.974568 -0.000662015 -6.974568 C 3.852276 -6.974568 6.972254 -3.85067 6.972254 -0.00165186 Z M 6.972254 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="21.85418" y="33.714034"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-2-0" x="16.468545" y="45.534725"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 15.975507 -8.5032 L 38.654141 -8.5032 L 38.654141 8.503816 L 15.975507 8.503816 Z M 15.975507 -8.5032 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-0" x="50.657958" y="34.255189"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 102.013997 -8.5032 L 124.688712 -8.5032 L 124.688712 8.503816 L 102.013997 8.503816 Z M 102.013997 -8.5032 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-1" x="133.845287" y="34.53922"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-4-0" x="141.651667" y="30.936506"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 147.641716 -0.00165186 C 147.641716 3.851286 144.517819 6.975183 140.664881 6.975183 C 136.815863 6.975183 133.691965 3.851286 133.691965 -0.00165186 C 133.691965 -3.85067 136.815863 -6.974568 140.664881 -6.974568 C 144.517819 -6.974568 147.641716 -3.85067 147.641716 -0.00165186 Z M 147.641716 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="162.041139" y="33.714034"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.318077 -34.513469 L 58.992792 -34.513469 L 58.992792 -17.506453 L 36.318077 -17.506453 Z M 36.318077 -34.513469 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-1" x="69.766797" y="60.120986"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.318077 -63.859293 L 58.992792 -63.859293 L 58.992792 -46.848357 L 36.318077 -46.848357 Z M 36.318077 -63.859293 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-2" x="65.778397" y="88.619804"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-0" x="74.031255" y="90.108727"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 80.621094 113.195312 C 80.621094 109.355469 77.507812 106.242188 73.671875 106.242188 C 69.832031 106.242188 66.71875 109.355469 66.71875 113.195312 C 66.71875 117.03125 69.832031 120.144531 73.671875 120.144531 C 77.507812 120.144531 80.621094 117.03125 80.621094 113.195312 Z M 80.621094 113.195312 "/>
|
||||
<g clip-path="url(#clip-1)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 54.63031 -82.669311 C 54.63031 -78.816374 51.506413 -75.692476 47.657395 -75.692476 C 43.804457 -75.692476 40.680559 -78.816374 40.680559 -82.669311 C 40.680559 -86.51833 43.804457 -89.642227 47.657395 -89.642227 C 51.506413 -89.642227 54.63031 -86.51833 54.63031 -82.669311 Z M 54.63031 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="69.347228" y="116.100096"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 63.633564 -91.17086 L 86.308279 -91.17086 L 86.308279 -74.163844 L 63.633564 -74.163844 Z M 63.633564 -91.17086 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-2" x="93.793864" y="115.840979"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-1" x="102.046721" y="117.330899"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 185.914062 113.195312 C 185.914062 109.355469 182.804688 106.242188 178.964844 106.242188 C 175.128906 106.242188 172.015625 109.355469 172.015625 113.195312 C 172.015625 117.03125 175.128906 120.144531 178.964844 120.144531 C 182.804688 120.144531 185.914062 117.03125 185.914062 113.195312 Z M 185.914062 113.195312 "/>
|
||||
<g clip-path="url(#clip-2)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 160.282331 -82.669311 C 160.282331 -78.816374 157.162353 -75.692476 153.309415 -75.692476 C 149.460397 -75.692476 146.336499 -78.816374 146.336499 -82.669311 C 146.336499 -86.51833 149.460397 -89.642227 153.309415 -89.642227 C 157.162353 -89.642227 160.282331 -86.51833 160.282331 -82.669311 Z M 160.282331 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="174.641172" y="116.100096"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.972254 -0.00165186 L 10.844789 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052887 -0.00165186 L 1.608094 1.683763 L 3.085772 -0.00165186 L 1.608094 -1.683148 Z M 6.052887 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 34.155183, 30.806948)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 39.151927 -0.00165186 L 96.87936 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054697 -0.00165186 L 1.609904 1.683763 L 3.087582 -0.00165186 L 1.609904 -1.683148 Z M 6.054697 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 119.899473, 30.806948)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-3" x="117.855812" y="27.001923"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.657395 -0.00165186 L 47.657395 -12.375736 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053623 0.00145466 L 1.608831 1.68295 L 3.086509 0.00145466 L 1.608831 -1.683961 Z M 6.053623 0.00145466 " transform="matrix(0, 0.996602, 0.996602, 0, 73.670425, 40.310699)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 75.65625 30.808594 C 75.65625 29.710938 74.765625 28.820312 73.671875 28.820312 C 72.574219 28.820312 71.683594 29.710938 71.683594 30.808594 C 71.683594 31.902344 72.574219 32.792969 73.671875 32.792969 C 74.765625 32.792969 75.65625 31.902344 75.65625 30.808594 Z M 75.65625 30.808594 "/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.657395 -35.011255 L 47.657395 -41.71764 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052448 0.00145466 L 1.607655 1.68295 L 3.089252 0.00145466 L 1.607655 -1.683961 Z M 6.052448 0.00145466 " transform="matrix(0, 0.996602, 0.996602, 0, 73.670425, 69.554059)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.657395 -64.357079 L 47.657395 -71.059544 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055211 0.00145466 L 1.610418 1.68295 L 3.088096 0.00145466 L 1.610418 -1.683961 Z M 6.055211 0.00145466 " transform="matrix(0, 0.996602, 0.996602, 0, 73.670425, 98.797398)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 63.135778 -82.669311 L 59.263243 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 82.035156 113.195312 L 86.464844 114.871094 L 84.992188 113.195312 L 86.464844 111.515625 Z M 82.035156 113.195312 "/>
|
||||
<g clip-path="url(#clip-3)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052735 0.00102149 L 1.607942 1.682517 L 3.08562 0.00102149 L 1.607942 -1.684394 Z M 6.052735 0.00102149 " transform="matrix(-0.996602, 0, 0, 0.996602, 88.067321, 113.194294)"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 40.680559 -82.669311 L -0.000662015 -82.669311 L -0.000662015 -11.6075 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052518 0.000662015 L 1.607725 1.682158 L 3.089323 0.000662015 L 1.607725 -1.684753 Z M 6.052518 0.000662015 " transform="matrix(0, -0.996602, -0.996602, 0, 26.176441, 45.203824)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 125.190417 -0.00165186 L 129.059033 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052511 -0.00165186 L 1.607718 1.683763 L 3.089316 -0.00165186 L 1.607718 -1.683148 Z M 6.052511 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 151.968058, 30.806948)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 164.919183 -82.669311 L 174.455498 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 187.328125 113.195312 L 191.757812 114.871094 L 190.285156 113.195312 L 191.757812 111.515625 Z M 187.328125 113.195312 "/>
|
||||
<g clip-path="url(#clip-4)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054905 0.00102149 L 1.610112 1.682517 L 3.08779 0.00102149 L 1.610112 -1.684394 Z M 6.054905 0.00102149 " transform="matrix(-0.996602, 0, 0, 0.996602, 193.362452, 113.194294)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-4" x="190.273864" y="109.387984"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 147.641716 -0.00165186 L 169.822565 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 198.628906 30.808594 L 194.199219 29.128906 L 195.671875 30.808594 L 194.199219 32.484375 Z M 198.628906 30.808594 "/>
|
||||
<g clip-path="url(#clip-5)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055163 -0.00165186 L 1.61037 1.683763 L 3.088048 -0.00165186 L 1.61037 -1.683148 Z M 6.055163 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 192.594322, 30.806948)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-5" x="191.009356" y="25.071506"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 153.309415 -0.00165186 L 153.309415 -71.059544 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055211 -0.0007148 L 1.610418 1.6847 L 3.088096 -0.0007148 L 1.610418 -1.682211 Z M 6.055211 -0.0007148 " transform="matrix(0, 0.996602, 0.996602, 0, 178.965556, 98.797398)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 180.953125 30.808594 C 180.953125 29.710938 180.0625 28.820312 178.964844 28.820312 C 177.867188 28.820312 176.980469 29.710938 176.980469 30.808594 C 176.980469 31.902344 177.867188 32.792969 178.964844 32.792969 C 180.0625 32.792969 180.953125 31.902344 180.953125 30.808594 Z M 180.953125 30.808594 "/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.60651 -0.00165186 L -21.146744 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 17.8125 30.808594 L 13.382812 29.128906 L 14.855469 30.808594 L 13.382812 32.484375 Z M 17.8125 30.808594 "/>
|
||||
<g clip-path="url(#clip-6)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053508 -0.00165186 L 1.608715 1.683763 L 3.086393 -0.00165186 L 1.608715 -1.683148 Z M 6.053508 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 11.779565, 30.806948)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-6" x="8.907329" y="27.001923"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 146.336499 -82.669311 L 91.442916 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 114.101562 113.195312 L 118.53125 114.871094 L 117.058594 113.195312 L 118.53125 111.515625 Z M 114.101562 113.195312 "/>
|
||||
<g clip-path="url(#clip-7)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054902 0.00102149 L 1.610109 1.682517 L 3.087787 0.00102149 L 1.610109 -1.684394 Z M 6.054902 0.00102149 " transform="matrix(-0.996602, 0, 0, 0.996602, 120.135887, 113.194294)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-5" x="116.494454" y="107.457567"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-2" x="121.361856" y="108.94649"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 140.664881 11.608116 L 140.664881 21.14835 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051912 -0.00164896 L 1.607119 1.683766 L 3.088717 -0.00164896 L 1.607119 -1.683145 Z M 6.051912 -0.00164896 " transform="matrix(0, 0.996602, 0.996602, 0, 166.364925, 16.410061)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-7" x="170.169421" y="20.433322"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-3" x="175.3368" y="21.922245"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 48 KiB |
BIN
paper/figs/detail_control_cf_arch_class.pdf
Normal file
BIN
paper/figs/detail_control_cf_arch_class.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
196
paper/figs/detail_control_cf_arch_class.svg
Normal file
@@ -0,0 +1,196 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="190.299pt" height="74.602pt" viewBox="0 0 190.299 74.602">
|
||||
<defs>
|
||||
<g>
|
||||
<g id="glyph-0-0">
|
||||
<path d="M 7.25 -0.875 C 7.25 -0.9375 7.25 -1.046875 7.125 -1.046875 C 7.015625 -1.046875 7.015625 -0.953125 7 -0.875 C 6.9375 -0.171875 6.59375 0 6.34375 0 C 5.859375 0 5.78125 -0.5 5.640625 -1.421875 L 5.515625 -2.21875 C 5.34375 -2.859375 4.859375 -3.1875 4.3125 -3.375 C 5.265625 -3.609375 6.046875 -4.203125 6.046875 -4.984375 C 6.046875 -5.9375 4.90625 -6.765625 3.453125 -6.765625 L 0.34375 -6.765625 L 0.34375 -6.453125 L 0.578125 -6.453125 C 1.34375 -6.453125 1.359375 -6.34375 1.359375 -6 L 1.359375 -0.765625 C 1.359375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.40625 -0.03125 1.796875 -0.03125 C 2.171875 -0.03125 2.875 -0.03125 3.234375 0 L 3.234375 -0.3125 L 3 -0.3125 C 2.234375 -0.3125 2.21875 -0.421875 2.21875 -0.765625 L 2.21875 -3.28125 L 3.359375 -3.28125 C 3.515625 -3.28125 3.9375 -3.28125 4.28125 -2.9375 C 4.65625 -2.578125 4.65625 -2.28125 4.65625 -1.609375 C 4.65625 -0.96875 4.65625 -0.578125 5.0625 -0.203125 C 5.46875 0.15625 6.015625 0.21875 6.3125 0.21875 C 7.078125 0.21875 7.25 -0.59375 7.25 -0.875 Z M 5.015625 -4.984375 C 5.015625 -4.296875 4.78125 -3.5 3.3125 -3.5 L 2.21875 -3.5 L 2.21875 -6.0625 C 2.21875 -6.296875 2.21875 -6.40625 2.4375 -6.4375 C 2.53125 -6.453125 2.828125 -6.453125 3.015625 -6.453125 C 3.90625 -6.453125 5.015625 -6.421875 5.015625 -4.984375 Z M 5.015625 -4.984375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-1">
|
||||
<path d="M 6.78125 -4.484375 L 6.59375 -6.703125 L 0.546875 -6.703125 L 0.359375 -4.484375 L 0.609375 -4.484375 C 0.75 -6.078125 0.890625 -6.40625 2.390625 -6.40625 C 2.5625 -6.40625 2.828125 -6.40625 2.921875 -6.375 C 3.125 -6.34375 3.125 -6.234375 3.125 -6 L 3.125 -0.78125 C 3.125 -0.453125 3.125 -0.3125 2.09375 -0.3125 L 1.6875 -0.3125 L 1.6875 0 C 2.09375 -0.03125 3.109375 -0.03125 3.5625 -0.03125 C 4.015625 -0.03125 5.046875 -0.03125 5.453125 0 L 5.453125 -0.3125 L 5.046875 -0.3125 C 4.015625 -0.3125 4.015625 -0.453125 4.015625 -0.78125 L 4.015625 -6 C 4.015625 -6.203125 4.015625 -6.34375 4.1875 -6.375 C 4.296875 -6.40625 4.5625 -6.40625 4.75 -6.40625 C 6.25 -6.40625 6.40625 -6.078125 6.53125 -4.484375 Z M 6.78125 -4.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-2">
|
||||
<path d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.015625 -1.28125 3.984375 -1.28125 C 3.890625 -1.28125 3.875 -1.234375 3.859375 -1.171875 C 3.5625 -0.25 2.921875 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.15625 C 1.15625 -3.78125 1.96875 -4.1875 2.5 -4.1875 C 2.578125 -4.1875 3.203125 -4.1875 3.5625 -3.828125 C 3.15625 -3.796875 3.09375 -3.5 3.09375 -3.375 C 3.09375 -3.109375 3.265625 -2.90625 3.546875 -2.90625 C 3.796875 -2.90625 4 -3.078125 4 -3.375 C 4 -4.046875 3.25 -4.4375 2.484375 -4.4375 C 1.25 -4.4375 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.46875 0.109375 C 3.796875 0.109375 4.109375 -1.078125 4.109375 -1.171875 Z M 4.109375 -1.171875 "/>
|
||||
</g>
|
||||
<g id="glyph-0-3">
|
||||
<path d="M 4.671875 -2.125 C 4.671875 -3.390625 3.671875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.609375 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.578125 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.21875 2.46875 -4.21875 C 2.90625 -4.21875 3.328125 -4 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-4">
|
||||
<path d="M 5.296875 0 L 5.296875 -0.3125 C 4.78125 -0.3125 4.53125 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.34375 4.53125 -3.65625 4.21875 -4.015625 C 4.078125 -4.1875 3.75 -4.375 3.1875 -4.375 C 2.453125 -4.375 1.984375 -3.953125 1.71875 -3.34375 L 1.71875 -4.375 L 0.3125 -4.265625 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.890625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 L 1.765625 -2.578125 C 1.765625 -3.609375 2.484375 -4.15625 3.109375 -4.15625 C 3.734375 -4.15625 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.1875 -0.03125 Z M 5.296875 0 "/>
|
||||
</g>
|
||||
<g id="glyph-0-5">
|
||||
<path d="M 3.28125 -1.234375 L 3.28125 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.125 -3.96875 L 3.125 -4.265625 L 1.71875 -4.265625 L 1.71875 -6.09375 L 1.46875 -6.09375 C 1.453125 -5.28125 1.15625 -4.21875 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.28125 -0.59375 3.28125 -1.234375 Z M 3.28125 -1.234375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-6">
|
||||
<path d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.375 2.875 -4.375 C 2.15625 -4.375 1.796875 -3.71875 1.65625 -3.28125 L 1.65625 -4.375 L 0.28125 -4.265625 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.890625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.796875 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.765625 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.15625 2.875 -4.15625 C 2.9375 -4.15625 2.96875 -4.15625 2.984375 -4.15625 C 2.953125 -4.140625 2.75 -4.015625 2.75 -3.765625 C 2.75 -3.484375 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.453125 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-7">
|
||||
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.875 L 0.328125 -6.765625 L 0.328125 -6.453125 C 1.015625 -6.453125 1.09375 -6.390625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
|
||||
</g>
|
||||
<g id="glyph-0-8">
|
||||
<path d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.890625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.5 -0.140625 2.609375 -0.140625 2.515625 -0.140625 C 2.015625 -0.140625 1.625 -0.4375 1.390625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.28125 L 3.859375 -2.28125 C 4.078125 -2.28125 4.109375 -2.28125 4.109375 -2.5 C 4.109375 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.171875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.109375 -0.984375 4.109375 -1.171875 Z M 3.453125 -2.5 L 1.109375 -2.5 C 1.171875 -3.96875 2 -4.21875 2.34375 -4.21875 C 3.359375 -4.21875 3.453125 -2.875 3.453125 -2.5 Z M 3.453125 -2.5 "/>
|
||||
</g>
|
||||
<g id="glyph-1-0">
|
||||
<path d="M 8.0625 -2.984375 C 8.0625 -3.203125 7.875 -3.203125 7.6875 -3.203125 L 4.515625 -3.203125 L 4.515625 -6.375 C 4.515625 -6.546875 4.515625 -6.75 4.3125 -6.75 C 4.09375 -6.75 4.09375 -6.5625 4.09375 -6.375 L 4.09375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.09375 -2.78125 L 4.09375 0.390625 C 4.09375 0.5625 4.09375 0.765625 4.296875 0.765625 C 4.515625 0.765625 4.515625 0.578125 4.515625 0.390625 L 4.515625 -2.78125 L 7.6875 -2.78125 C 7.859375 -2.78125 8.0625 -2.78125 8.0625 -2.984375 Z M 8.0625 -2.984375 "/>
|
||||
</g>
|
||||
<g id="glyph-2-0">
|
||||
<path d="M 6.875 -2.484375 C 6.875 -2.671875 6.6875 -2.671875 6.546875 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.546875 -2.28125 C 6.6875 -2.28125 6.875 -2.28125 6.875 -2.484375 Z M 6.875 -2.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-0">
|
||||
<path d="M 7.328125 -0.203125 C 7.328125 -0.3125 7.21875 -0.3125 7.125 -0.3125 C 6.71875 -0.3125 6.59375 -0.40625 6.453125 -0.75 L 5.046875 -4 C 5.03125 -4.03125 5 -4.109375 5 -4.140625 C 5 -4.140625 5.171875 -4.296875 5.28125 -4.375 L 7.015625 -5.703125 C 7.9375 -6.390625 8.328125 -6.421875 8.625 -6.453125 C 8.703125 -6.46875 8.8125 -6.484375 8.8125 -6.65625 C 8.8125 -6.703125 8.78125 -6.765625 8.703125 -6.765625 C 8.484375 -6.765625 8.234375 -6.734375 8 -6.734375 C 7.640625 -6.734375 7.25 -6.765625 6.890625 -6.765625 C 6.828125 -6.765625 6.703125 -6.765625 6.703125 -6.5625 C 6.703125 -6.5 6.75 -6.46875 6.828125 -6.453125 C 7.046875 -6.4375 7.125 -6.390625 7.125 -6.25 C 7.125 -6.078125 6.828125 -5.84375 6.78125 -5.796875 L 2.90625 -2.828125 L 3.703125 -6 C 3.796875 -6.359375 3.8125 -6.453125 4.53125 -6.453125 C 4.78125 -6.453125 4.875 -6.453125 4.875 -6.65625 C 4.875 -6.75 4.796875 -6.765625 4.734375 -6.765625 L 3.46875 -6.734375 L 2.1875 -6.765625 C 2.125 -6.765625 1.984375 -6.765625 1.984375 -6.578125 C 1.984375 -6.453125 2.078125 -6.453125 2.28125 -6.453125 C 2.40625 -6.453125 2.578125 -6.453125 2.703125 -6.4375 C 2.859375 -6.421875 2.921875 -6.390625 2.921875 -6.28125 C 2.921875 -6.234375 2.90625 -6.21875 2.875 -6.09375 L 1.5625 -0.765625 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.484375 -0.3125 0.375 -0.3125 0.375 -0.125 C 0.375 0 0.5 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.125 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.609375 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.5625 2.390625 -0.765625 2.421875 -0.921875 L 2.828125 -2.484375 L 4.296875 -3.625 L 5.453125 -0.953125 C 5.5625 -0.6875 5.5625 -0.671875 5.5625 -0.609375 C 5.5625 -0.3125 5.140625 -0.3125 5.046875 -0.3125 C 4.9375 -0.3125 4.828125 -0.3125 4.828125 -0.109375 C 4.828125 0 4.96875 0 4.96875 0 C 5.375 0 5.78125 -0.03125 6.1875 -0.03125 C 6.40625 -0.03125 6.9375 0 7.15625 0 C 7.203125 0 7.328125 0 7.328125 -0.203125 Z M 7.328125 -0.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-1">
|
||||
<path d="M 7.140625 -2.59375 C 7.140625 -2.671875 7.09375 -2.703125 7.015625 -2.703125 C 6.78125 -2.703125 6.203125 -2.671875 5.96875 -2.671875 L 4.59375 -2.703125 C 4.5 -2.703125 4.375 -2.703125 4.375 -2.5 C 4.375 -2.390625 4.453125 -2.390625 4.671875 -2.390625 C 4.671875 -2.390625 4.96875 -2.390625 5.203125 -2.375 C 5.453125 -2.34375 5.515625 -2.3125 5.515625 -2.1875 C 5.515625 -2.09375 5.40625 -1.65625 5.296875 -1.28125 C 5.015625 -0.203125 3.734375 -0.09375 3.390625 -0.09375 C 2.4375 -0.09375 1.390625 -0.65625 1.390625 -2.171875 C 1.390625 -2.484375 1.5 -4.109375 2.53125 -5.40625 C 3.078125 -6.078125 4.03125 -6.671875 5.015625 -6.671875 C 6.015625 -6.671875 6.609375 -5.90625 6.609375 -4.765625 C 6.609375 -4.375 6.578125 -4.359375 6.578125 -4.265625 C 6.578125 -4.15625 6.6875 -4.15625 6.71875 -4.15625 C 6.859375 -4.15625 6.859375 -4.1875 6.90625 -4.359375 L 7.53125 -6.890625 C 7.53125 -6.921875 7.515625 -6.984375 7.421875 -6.984375 C 7.390625 -6.984375 7.375 -6.96875 7.265625 -6.859375 L 6.578125 -6.109375 C 6.484375 -6.234375 6.03125 -6.984375 4.9375 -6.984375 C 2.71875 -6.984375 0.5 -4.796875 0.5 -2.5 C 0.5 -0.921875 1.59375 0.21875 3.203125 0.21875 C 3.640625 0.21875 4.078125 0.125 4.4375 -0.015625 C 4.9375 -0.21875 5.125 -0.421875 5.296875 -0.625 C 5.390625 -0.375 5.640625 -0.015625 5.75 -0.015625 C 5.796875 -0.015625 5.8125 -0.046875 5.8125 -0.046875 C 5.828125 -0.0625 5.9375 -0.453125 5.984375 -0.65625 L 6.171875 -1.421875 C 6.21875 -1.578125 6.265625 -1.75 6.296875 -1.921875 C 6.40625 -2.375 6.421875 -2.390625 6.984375 -2.390625 C 7.03125 -2.390625 7.140625 -2.40625 7.140625 -2.59375 Z M 7.140625 -2.59375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-2">
|
||||
<path d="M 7.109375 -0.203125 C 7.109375 -0.3125 7.03125 -0.3125 6.828125 -0.3125 C 6.46875 -0.3125 6.1875 -0.3125 6.1875 -0.484375 C 6.1875 -0.546875 6.21875 -0.59375 6.21875 -0.65625 L 7.5625 -6 C 7.640625 -6.359375 7.671875 -6.453125 8.390625 -6.453125 C 8.640625 -6.453125 8.734375 -6.453125 8.734375 -6.65625 C 8.734375 -6.765625 8.625 -6.765625 8.59375 -6.765625 L 7.328125 -6.734375 L 6.046875 -6.765625 C 5.96875 -6.765625 5.859375 -6.765625 5.859375 -6.5625 C 5.859375 -6.453125 5.9375 -6.453125 6.125 -6.453125 C 6.125 -6.453125 6.34375 -6.453125 6.515625 -6.4375 C 6.6875 -6.421875 6.78125 -6.40625 6.78125 -6.28125 C 6.78125 -6.234375 6.765625 -6.21875 6.734375 -6.09375 L 6.140625 -3.671875 L 3.125 -3.671875 L 3.703125 -6 C 3.796875 -6.359375 3.828125 -6.453125 4.53125 -6.453125 C 4.796875 -6.453125 4.875 -6.453125 4.875 -6.65625 C 4.875 -6.765625 4.765625 -6.765625 4.734375 -6.765625 L 3.46875 -6.734375 L 2.1875 -6.765625 C 2.109375 -6.765625 2 -6.765625 2 -6.5625 C 2 -6.453125 2.09375 -6.453125 2.28125 -6.453125 C 2.28125 -6.453125 2.484375 -6.453125 2.65625 -6.4375 C 2.828125 -6.421875 2.921875 -6.40625 2.921875 -6.28125 C 2.921875 -6.234375 2.90625 -6.21875 2.875 -6.09375 L 1.5625 -0.765625 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.609375 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.0625 -3.375 L 5.375 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.234375 -0.3125 4.234375 -0.109375 C 4.234375 0 4.375 0 4.375 0 L 5.640625 -0.03125 L 6.265625 -0.015625 C 6.484375 -0.015625 6.703125 0 6.921875 0 C 7 0 7.109375 0 7.109375 -0.203125 Z M 7.109375 -0.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-3">
|
||||
<path d="M 5.375 -1.421875 C 5.375 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.15625 -1.515625 5.15625 -1.46875 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.375 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.1875 -1.25 4.265625 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.671875 -3.1875 4.71875 -3.34375 C 4.765625 -3.5625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.578125 -4.265625 C 4.53125 -4.265625 4.265625 -4.265625 4.1875 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.3125 -0.109375 C 1.796875 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.46875 1.984375 -2.265625 2.234375 -2.9375 C 2.359375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.15625 1.5625 -4.15625 C 1.65625 -4.15625 1.8125 -4.15625 1.8125 -3.828125 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.15625 C 1.28125 -2.171875 1.0625 -1.5625 1.0625 -1.078125 C 1.0625 -0.140625 1.75 0.109375 2.28125 0.109375 C 2.9375 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.34375 0.109375 C 4.703125 0.109375 4.921875 -0.125 5.078125 -0.4375 C 5.25 -0.796875 5.375 -1.421875 5.375 -1.421875 Z M 5.375 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-4">
|
||||
<path d="M 5.65625 -1.421875 C 5.65625 -1.515625 5.5625 -1.515625 5.53125 -1.515625 C 5.4375 -1.515625 5.4375 -1.484375 5.390625 -1.34375 C 5.1875 -0.65625 4.859375 -0.109375 4.375 -0.109375 C 4.203125 -0.109375 4.140625 -0.203125 4.140625 -0.4375 C 4.140625 -0.6875 4.234375 -0.921875 4.3125 -1.140625 C 4.5 -1.671875 4.921875 -2.75 4.921875 -3.3125 C 4.921875 -3.984375 4.5 -4.375 3.78125 -4.375 C 2.890625 -4.375 2.40625 -3.75 2.234375 -3.515625 C 2.1875 -4.078125 1.78125 -4.375 1.328125 -4.375 C 0.875 -4.375 0.6875 -4 0.578125 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.15625 1.296875 -4.15625 C 1.5 -4.15625 1.609375 -4.03125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.0625 0.109375 C 1.1875 0.109375 1.359375 0.03125 1.4375 -0.171875 C 1.453125 -0.1875 1.5625 -0.65625 1.625 -0.90625 L 1.84375 -1.796875 C 1.90625 -2.015625 1.96875 -2.234375 2.015625 -2.453125 L 2.140625 -2.953125 C 2.28125 -3.265625 2.8125 -4.15625 3.75 -4.15625 C 4.203125 -4.15625 4.296875 -3.796875 4.296875 -3.46875 C 4.296875 -2.859375 3.796875 -1.578125 3.640625 -1.15625 C 3.5625 -0.9375 3.546875 -0.8125 3.546875 -0.703125 C 3.546875 -0.234375 3.890625 0.109375 4.359375 0.109375 C 5.296875 0.109375 5.65625 -1.34375 5.65625 -1.421875 Z M 5.65625 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-5">
|
||||
<path d="M 4.8125 -3.78125 C 4.859375 -3.90625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.5625 -4.265625 C 4.46875 -4.265625 4.3125 -4.203125 4.21875 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.078125 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.390625 -0.796875 2.96875 -0.109375 2.3125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.359375 1.875 -1.984375 2.203125 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.859375 1.234375 -4.15625 1.5625 -4.15625 C 1.640625 -4.15625 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.59375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.09375 1.0625 -1.53125 1.0625 -1.0625 C 1.0625 -0.1875 1.6875 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.65625 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.953125 1.78125 0.796875 1.390625 C 0.953125 1.390625 1.078125 1.390625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.859375 0.015625 Z M 4.8125 -3.78125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-6">
|
||||
<path d="M 4.3125 -3.734375 C 4.3125 -4.078125 4 -4.375 3.5 -4.375 C 2.859375 -4.375 2.421875 -3.890625 2.234375 -3.609375 C 2.15625 -4.0625 1.796875 -4.375 1.328125 -4.375 C 0.875 -4.375 0.6875 -4 0.59375 -3.8125 C 0.421875 -3.484375 0.28125 -2.875 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.15625 1.296875 -4.15625 C 1.46875 -4.15625 1.609375 -4.078125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.0625 0.109375 C 1.1875 0.109375 1.359375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.828125 -1.734375 L 2.15625 -3.015625 C 2.1875 -3.15625 2.46875 -3.609375 2.703125 -3.828125 C 2.78125 -3.90625 3.078125 -4.15625 3.5 -4.15625 C 3.75 -4.15625 3.90625 -4.046875 3.90625 -4.046875 C 3.609375 -4 3.390625 -3.75 3.390625 -3.5 C 3.390625 -3.34375 3.5 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.3125 -3.375 4.3125 -3.734375 Z M 4.3125 -3.734375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-7">
|
||||
<path d="M 4.9375 -1.421875 C 4.9375 -1.515625 4.84375 -1.515625 4.8125 -1.515625 C 4.71875 -1.515625 4.703125 -1.46875 4.671875 -1.34375 C 4.5 -0.6875 4.328125 -0.109375 3.921875 -0.109375 C 3.65625 -0.109375 3.625 -0.359375 3.625 -0.5625 C 3.625 -0.796875 3.640625 -0.875 3.6875 -1.046875 L 5.109375 -6.765625 C 5.109375 -6.765625 5.109375 -6.875 4.984375 -6.875 C 4.828125 -6.875 3.890625 -6.78125 3.71875 -6.765625 C 3.640625 -6.75 3.59375 -6.703125 3.59375 -6.578125 C 3.59375 -6.453125 3.671875 -6.453125 3.828125 -6.453125 C 4.296875 -6.453125 4.3125 -6.390625 4.3125 -6.296875 L 4.296875 -6.09375 L 3.6875 -3.75 C 3.515625 -4.109375 3.234375 -4.375 2.78125 -4.375 C 1.625 -4.375 0.390625 -2.921875 0.390625 -1.46875 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.90625 0.109375 2.40625 0.0625 3 -0.640625 C 3.078125 -0.21875 3.421875 0.109375 3.90625 0.109375 C 4.25 0.109375 4.484375 -0.125 4.640625 -0.4375 C 4.796875 -0.796875 4.9375 -1.421875 4.9375 -1.421875 Z M 3.546875 -3.125 L 3.046875 -1.171875 C 3 -1 3 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.234375 -0.109375 1.09375 -0.65625 1.09375 -1.046875 C 1.09375 -1.53125 1.421875 -2.75 1.640625 -3.203125 C 1.953125 -3.796875 2.390625 -4.15625 2.796875 -4.15625 C 3.4375 -4.15625 3.578125 -3.34375 3.578125 -3.28125 C 3.578125 -3.234375 3.5625 -3.171875 3.546875 -3.125 Z M 3.546875 -3.125 "/>
|
||||
</g>
|
||||
<g id="glyph-4-0">
|
||||
<path d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.875 1.671875 -3.875 C 1.390625 -3.875 1.3125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.34375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
|
||||
</g>
|
||||
<g id="glyph-5-0">
|
||||
<path d="M 5 -1.734375 C 5 -1.75 4.984375 -1.828125 4.890625 -1.828125 C 4.796875 -1.828125 4.78125 -1.796875 4.75 -1.671875 C 4.484375 -1.015625 4.171875 -0.25 2.90625 -0.25 L 2.125 -0.25 C 1.90625 -0.25 1.90625 -0.25 1.90625 -0.3125 C 1.90625 -0.3125 1.90625 -0.359375 1.921875 -0.46875 L 2.859375 -4.171875 C 2.921875 -4.421875 2.9375 -4.484375 3.578125 -4.484375 C 3.796875 -4.484375 3.859375 -4.484375 3.859375 -4.640625 C 3.859375 -4.640625 3.859375 -4.734375 3.75 -4.734375 C 3.59375 -4.734375 3.40625 -4.71875 3.234375 -4.71875 L 2.671875 -4.703125 L 2.203125 -4.71875 C 2.046875 -4.71875 1.890625 -4.734375 1.75 -4.734375 C 1.703125 -4.734375 1.609375 -4.734375 1.609375 -4.578125 C 1.609375 -4.484375 1.6875 -4.484375 1.828125 -4.484375 C 1.828125 -4.484375 1.96875 -4.484375 2.09375 -4.46875 C 2.234375 -4.453125 2.25 -4.453125 2.25 -4.375 C 2.25 -4.375 2.25 -4.328125 2.21875 -4.21875 L 1.296875 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 0 0.5625 0 0.6875 0 L 4.171875 0 C 4.34375 0 4.359375 0 4.40625 -0.140625 C 4.484375 -0.328125 5 -1.671875 5 -1.734375 Z M 5 -1.734375 "/>
|
||||
</g>
|
||||
<g id="glyph-5-1">
|
||||
<path d="M 3.859375 -2.609375 C 3.890625 -2.71875 3.890625 -2.71875 3.890625 -2.765625 C 3.890625 -2.90625 3.78125 -2.984375 3.65625 -2.984375 C 3.578125 -2.984375 3.453125 -2.953125 3.375 -2.828125 C 3.34375 -2.78125 3.296875 -2.5625 3.265625 -2.421875 L 3.109375 -1.84375 L 2.84375 -0.734375 C 2.84375 -0.734375 2.53125 -0.125 1.984375 -0.125 C 1.515625 -0.125 1.515625 -0.578125 1.515625 -0.703125 C 1.515625 -1.078125 1.671875 -1.515625 1.875 -2.046875 C 1.96875 -2.265625 2 -2.359375 2 -2.46875 C 2 -2.796875 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.109375 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.9375 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.859375 1.3125 -2.859375 C 1.4375 -2.859375 1.484375 -2.78125 1.484375 -2.625 C 1.484375 -2.46875 1.421875 -2.3125 1.390625 -2.21875 C 1.0625 -1.375 0.984375 -1.109375 0.984375 -0.8125 C 0.984375 -0.6875 0.984375 -0.375 1.265625 -0.140625 C 1.484375 0.03125 1.765625 0.0625 1.953125 0.0625 C 2.234375 0.0625 2.484375 -0.03125 2.71875 -0.25 C 2.625 0.140625 2.546875 0.4375 2.25 0.78125 C 2.0625 0.984375 1.796875 1.21875 1.421875 1.21875 C 1.375 1.21875 1.046875 1.21875 0.90625 0.984375 C 1.28125 0.953125 1.28125 0.609375 1.28125 0.609375 C 1.28125 0.390625 1.078125 0.34375 1 0.34375 C 0.828125 0.34375 0.609375 0.484375 0.609375 0.8125 C 0.609375 1.15625 0.9375 1.421875 1.421875 1.421875 C 2.125 1.421875 2.984375 0.875 3.203125 0 Z M 3.859375 -2.609375 "/>
|
||||
</g>
|
||||
</g>
|
||||
<clipPath id="clip-0">
|
||||
<path clip-rule="nonzero" d="M 0.15625 14 L 84 14 L 84 74 L 0.15625 74 Z M 0.15625 14 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-1">
|
||||
<path clip-rule="nonzero" d="M 140 39 L 183 39 L 183 74.207031 L 140 74.207031 Z M 140 39 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-2">
|
||||
<path clip-rule="nonzero" d="M 156 44 L 189 44 L 189 74.207031 L 156 74.207031 Z M 156 44 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-3">
|
||||
<path clip-rule="nonzero" d="M 168 15 L 189.445312 15 L 189.445312 47 L 168 47 Z M 168 15 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-4">
|
||||
<path clip-rule="nonzero" d="M 66 44 L 100 44 L 100 74.207031 L 66 74.207031 Z M 66 44 "/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 1.148438 73.214844 L 83.152344 73.214844 L 83.152344 14.921875 L 1.148438 14.921875 Z M 1.148438 73.214844 "/>
|
||||
<g clip-path="url(#clip-0)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -30.801556 -42.693443 L 51.639839 -42.693443 L 51.639839 15.910517 L -30.801556 15.910517 Z M -30.801556 -42.693443 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-0" x="13.15096" y="10.626309"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-1" x="19.623006" y="10.626309"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-2" x="30.079755" y="10.626309"/>
|
||||
<use xlink:href="#glyph-0-3" x="34.484631" y="10.626309"/>
|
||||
<use xlink:href="#glyph-0-4" x="39.439497" y="10.626309"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-5" x="44.667871" y="10.626309"/>
|
||||
<use xlink:href="#glyph-0-6" x="48.521766" y="10.626309"/>
|
||||
<use xlink:href="#glyph-0-3" x="52.403408" y="10.626309"/>
|
||||
<use xlink:href="#glyph-0-7" x="57.358274" y="10.626309"/>
|
||||
<use xlink:href="#glyph-0-7" x="60.111197" y="10.626309"/>
|
||||
<use xlink:href="#glyph-0-8" x="62.864121" y="10.626309"/>
|
||||
<use xlink:href="#glyph-0-6" x="67.268997" y="10.626309"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.97312 0.00187653 C 6.97312 3.850424 3.851084 6.972461 -0.00139111 6.972461 C -3.849939 6.972461 -6.971975 3.850424 -6.971975 0.00187653 C -6.971975 -3.850599 -3.849939 -6.972635 -0.00139111 -6.972635 C 3.851084 -6.972635 6.97312 -3.850599 6.97312 0.00187653 Z M 6.97312 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="27.472555" y="33.648486"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-2-0" x="22.097232" y="45.447538"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 24.480086 -8.5042 L 47.15903 -8.5042 L 47.15903 8.504026 L 24.480086 8.504026 Z M 24.480086 -8.5042 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-0" x="62.852802" y="34.133896"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 65.160809 -8.5042 L 87.839753 -8.5042 L 87.839753 8.504026 L 65.160809 8.504026 Z M 65.160809 -8.5042 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-1" x="102.59478" y="34.473087"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-4-0" x="110.386212" y="30.876276"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 119.295742 0.00187653 C 119.295742 3.850424 116.173705 6.972461 112.32123 6.972461 C 108.468755 6.972461 105.346719 3.850424 105.346719 0.00187653 C 105.346719 -3.850599 108.468755 -6.972635 112.32123 -6.972635 C 116.173705 -6.972635 119.295742 -3.850599 119.295742 0.00187653 Z M 119.295742 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="139.195515" y="33.648486"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 168.714844 60.296875 C 168.714844 56.464844 165.609375 53.359375 161.78125 53.359375 C 157.949219 53.359375 154.84375 56.464844 154.84375 60.296875 C 154.84375 64.125 157.949219 67.234375 161.78125 67.234375 C 165.609375 67.234375 168.714844 64.125 168.714844 60.296875 Z M 168.714844 60.296875 "/>
|
||||
<g clip-path="url(#clip-1)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 137.658813 -29.706557 C 137.658813 -25.854082 134.536777 -22.732046 130.688229 -22.732046 C 126.835754 -22.732046 123.713717 -25.854082 123.713717 -29.706557 C 123.713717 -33.555105 126.835754 -36.681069 130.688229 -36.681069 C 134.536777 -36.681069 137.658813 -33.555105 137.658813 -29.706557 Z M 137.658813 -29.706557 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="157.464053" y="63.195852"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 24.480086 -38.208707 L 47.15903 -38.208707 L 47.15903 -21.200481 L 24.480086 -21.200481 Z M 24.480086 -38.208707 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-2" x="60.33026" y="62.937231"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-0" x="68.56831" y="64.424298"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.97312 0.00187653 L 19.34738 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053597 0.00187653 L 1.608131 1.682671 L 3.088644 0.00187653 L 1.608131 -1.682845 Z M 6.053597 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 48.208997, 30.74796)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.65777 0.00187653 L 60.03203 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052279 0.00187653 L 1.606814 1.682671 L 3.087327 0.00187653 L 1.606814 -1.682845 Z M 6.052279 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 88.675151, 30.74796)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-3" x="86.63592" y="26.949226"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 88.338493 0.00187653 L 100.712753 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054879 0.00187653 L 1.609414 1.682671 L 3.085999 0.00187653 L 1.609414 -1.682845 Z M 6.054879 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 129.141314, 30.74796)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 142.292779 -29.706557 L 157.502398 -29.706557 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 170.128906 60.296875 L 174.550781 61.96875 L 173.078125 60.296875 L 174.550781 58.621094 Z M 170.128906 60.296875 "/>
|
||||
<g clip-path="url(#clip-2)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.05242 0.00130748 L 1.606955 1.682102 L 3.087468 0.00130748 L 1.606955 -1.683414 Z M 6.05242 0.00130748 " transform="matrix(-0.994693, 0, 0, 0.994693, 176.149208, 60.295574)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-4" x="178.705729" y="56.496592"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 130.688229 0.00187653 L 130.688229 -18.09808 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055107 0.00136889 L 1.609641 1.682163 L 3.086227 0.00136889 L 1.609641 -1.683353 Z M 6.055107 0.00136889 " transform="matrix(0, 0.994693, 0.994693, 0, 161.779888, 45.926245)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 163.761719 30.746094 C 163.761719 29.652344 162.875 28.765625 161.78125 28.765625 C 160.683594 28.765625 159.796875 29.652344 159.796875 30.746094 C 159.796875 31.84375 160.683594 32.730469 161.78125 32.730469 C 162.875 32.730469 163.761719 31.84375 163.761719 30.746094 Z M 163.761719 30.746094 "/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 119.295742 0.00187653 L 152.868432 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 187.042969 30.746094 L 182.621094 29.074219 L 184.09375 30.746094 L 182.621094 32.421875 Z M 187.042969 30.746094 "/>
|
||||
<g clip-path="url(#clip-3)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053358 0.00187653 L 1.607893 1.682671 L 3.088406 0.00187653 L 1.607893 -1.682845 Z M 6.053358 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 181.021734, 30.74796)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-5" x="179.439813" y="25.022505"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.605941 0.00187653 L -26.81556 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052388 0.00187653 L 1.606922 1.682671 L 3.087435 0.00187653 L 1.606922 -1.682845 Z M 6.052388 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 17.41723, 30.74796)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-6" x="8.911577" y="26.949226"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 123.713717 -29.706557 L 52.287809 -29.706557 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 80.601562 60.296875 L 85.023438 61.96875 L 83.550781 60.296875 L 85.023438 58.621094 Z M 80.601562 60.296875 "/>
|
||||
<g clip-path="url(#clip-4)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.05257 0.00130748 L 1.607105 1.682102 L 3.087618 0.00130748 L 1.607105 -1.683414 Z M 6.05257 0.00130748 " transform="matrix(-0.994693, 0, 0, 0.994693, 86.622014, 60.295574)"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 23.981346 -29.706557 L -0.00139111 -29.706557 L -0.00139111 -11.606601 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051729 0.00139111 L 1.61019 1.682186 L 3.086776 0.00139111 L 1.61019 -1.68333 Z M 6.051729 0.00139111 " transform="matrix(0, -0.994693, -0.994693, 0, 31.78654, 45.11727)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 112.32123 11.606427 L 112.32123 26.816045 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051913 0.0011001 L 1.610374 1.681895 L 3.08696 0.0011001 L 1.610374 -1.683621 Z M 6.051913 0.0011001 " transform="matrix(0, 0.994693, 0.994693, 0, 143.510624, 16.37864)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-7" x="147.308234" y="14.754286"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-1" x="152.465719" y="16.240358"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 38 KiB |
BIN
paper/figs/detail_control_cf_arch_eq.pdf
Normal file
BIN
paper/figs/detail_control_cf_arch_eq.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
246
paper/figs/detail_control_cf_arch_eq.svg
Normal file
@@ -0,0 +1,246 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="210.395pt" height="105.421pt" viewBox="0 0 210.395 105.421">
|
||||
<defs>
|
||||
<g>
|
||||
<g id="glyph-0-0">
|
||||
<path d="M 7.25 -0.875 C 7.25 -0.9375 7.25 -1.046875 7.125 -1.046875 C 7.015625 -1.046875 7.015625 -0.953125 7 -0.875 C 6.9375 -0.171875 6.59375 0 6.34375 0 C 5.859375 0 5.78125 -0.5 5.640625 -1.421875 L 5.515625 -2.21875 C 5.34375 -2.859375 4.859375 -3.1875 4.3125 -3.375 C 5.265625 -3.609375 6.046875 -4.203125 6.046875 -4.984375 C 6.046875 -5.9375 4.90625 -6.765625 3.453125 -6.765625 L 0.34375 -6.765625 L 0.34375 -6.453125 L 0.578125 -6.453125 C 1.34375 -6.453125 1.359375 -6.34375 1.359375 -6 L 1.359375 -0.765625 C 1.359375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.40625 -0.03125 1.796875 -0.03125 C 2.171875 -0.03125 2.875 -0.03125 3.234375 0 L 3.234375 -0.3125 L 3 -0.3125 C 2.234375 -0.3125 2.21875 -0.421875 2.21875 -0.765625 L 2.21875 -3.28125 L 3.359375 -3.28125 C 3.515625 -3.28125 3.9375 -3.28125 4.28125 -2.9375 C 4.65625 -2.578125 4.65625 -2.28125 4.65625 -1.609375 C 4.65625 -0.96875 4.65625 -0.578125 5.0625 -0.203125 C 5.46875 0.15625 6.015625 0.21875 6.3125 0.21875 C 7.078125 0.21875 7.25 -0.59375 7.25 -0.875 Z M 5.015625 -4.984375 C 5.015625 -4.296875 4.78125 -3.5 3.3125 -3.5 L 2.21875 -3.5 L 2.21875 -6.0625 C 2.21875 -6.296875 2.21875 -6.40625 2.4375 -6.4375 C 2.53125 -6.453125 2.828125 -6.453125 3.015625 -6.453125 C 3.90625 -6.453125 5.015625 -6.421875 5.015625 -4.984375 Z M 5.015625 -4.984375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-1">
|
||||
<path d="M 6.78125 -4.484375 L 6.59375 -6.703125 L 0.546875 -6.703125 L 0.359375 -4.484375 L 0.609375 -4.484375 C 0.75 -6.078125 0.890625 -6.40625 2.390625 -6.40625 C 2.5625 -6.40625 2.828125 -6.40625 2.921875 -6.375 C 3.125 -6.34375 3.125 -6.234375 3.125 -6 L 3.125 -0.78125 C 3.125 -0.453125 3.125 -0.3125 2.09375 -0.3125 L 1.6875 -0.3125 L 1.6875 0 C 2.09375 -0.03125 3.109375 -0.03125 3.5625 -0.03125 C 4.015625 -0.03125 5.046875 -0.03125 5.453125 0 L 5.453125 -0.3125 L 5.046875 -0.3125 C 4.015625 -0.3125 4.015625 -0.453125 4.015625 -0.78125 L 4.015625 -6 C 4.015625 -6.203125 4.015625 -6.34375 4.1875 -6.375 C 4.296875 -6.40625 4.5625 -6.40625 4.75 -6.40625 C 6.25 -6.40625 6.40625 -6.078125 6.53125 -4.484375 Z M 6.78125 -4.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-2">
|
||||
<path d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.015625 -1.28125 3.984375 -1.28125 C 3.890625 -1.28125 3.875 -1.234375 3.859375 -1.171875 C 3.5625 -0.25 2.921875 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.15625 C 1.15625 -3.78125 1.96875 -4.1875 2.5 -4.1875 C 2.578125 -4.1875 3.203125 -4.1875 3.5625 -3.828125 C 3.15625 -3.796875 3.09375 -3.5 3.09375 -3.375 C 3.09375 -3.109375 3.265625 -2.90625 3.546875 -2.90625 C 3.796875 -2.90625 4 -3.078125 4 -3.375 C 4 -4.046875 3.25 -4.4375 2.484375 -4.4375 C 1.25 -4.4375 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.46875 0.109375 C 3.796875 0.109375 4.109375 -1.078125 4.109375 -1.171875 Z M 4.109375 -1.171875 "/>
|
||||
</g>
|
||||
<g id="glyph-0-3">
|
||||
<path d="M 4.671875 -2.125 C 4.671875 -3.390625 3.671875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.609375 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.578125 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.21875 2.46875 -4.21875 C 2.90625 -4.21875 3.328125 -4 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-4">
|
||||
<path d="M 5.296875 0 L 5.296875 -0.3125 C 4.78125 -0.3125 4.53125 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.34375 4.53125 -3.65625 4.21875 -4.015625 C 4.078125 -4.1875 3.75 -4.375 3.1875 -4.375 C 2.453125 -4.375 1.984375 -3.953125 1.71875 -3.34375 L 1.71875 -4.375 L 0.3125 -4.265625 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.890625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 L 1.765625 -2.578125 C 1.765625 -3.609375 2.484375 -4.15625 3.109375 -4.15625 C 3.734375 -4.15625 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.1875 -0.03125 Z M 5.296875 0 "/>
|
||||
</g>
|
||||
<g id="glyph-0-5">
|
||||
<path d="M 3.28125 -1.234375 L 3.28125 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.125 -3.96875 L 3.125 -4.265625 L 1.71875 -4.265625 L 1.71875 -6.09375 L 1.46875 -6.09375 C 1.453125 -5.28125 1.15625 -4.21875 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.28125 -0.59375 3.28125 -1.234375 Z M 3.28125 -1.234375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-6">
|
||||
<path d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.375 2.875 -4.375 C 2.15625 -4.375 1.796875 -3.71875 1.65625 -3.28125 L 1.65625 -4.375 L 0.28125 -4.265625 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.890625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.796875 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.765625 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.15625 2.875 -4.15625 C 2.9375 -4.15625 2.96875 -4.15625 2.984375 -4.15625 C 2.953125 -4.140625 2.75 -4.015625 2.75 -3.765625 C 2.75 -3.484375 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.453125 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-7">
|
||||
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.875 L 0.328125 -6.765625 L 0.328125 -6.453125 C 1.015625 -6.453125 1.09375 -6.390625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
|
||||
</g>
|
||||
<g id="glyph-0-8">
|
||||
<path d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.890625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.5 -0.140625 2.609375 -0.140625 2.515625 -0.140625 C 2.015625 -0.140625 1.625 -0.4375 1.390625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.28125 L 3.859375 -2.28125 C 4.078125 -2.28125 4.109375 -2.28125 4.109375 -2.5 C 4.109375 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.171875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.109375 -0.984375 4.109375 -1.171875 Z M 3.453125 -2.5 L 1.109375 -2.5 C 1.171875 -3.96875 2 -4.21875 2.34375 -4.21875 C 3.359375 -4.21875 3.453125 -2.875 3.453125 -2.5 Z M 3.453125 -2.5 "/>
|
||||
</g>
|
||||
<g id="glyph-1-0">
|
||||
<path d="M 8.0625 -2.984375 C 8.0625 -3.203125 7.875 -3.203125 7.6875 -3.203125 L 4.515625 -3.203125 L 4.515625 -6.375 C 4.515625 -6.546875 4.515625 -6.75 4.3125 -6.75 C 4.09375 -6.75 4.09375 -6.5625 4.09375 -6.375 L 4.09375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.09375 -2.78125 L 4.09375 0.390625 C 4.09375 0.5625 4.09375 0.765625 4.296875 0.765625 C 4.515625 0.765625 4.515625 0.578125 4.515625 0.390625 L 4.515625 -2.78125 L 7.6875 -2.78125 C 7.859375 -2.78125 8.0625 -2.78125 8.0625 -2.984375 Z M 8.0625 -2.984375 "/>
|
||||
</g>
|
||||
<g id="glyph-2-0">
|
||||
<path d="M 6.875 -2.484375 C 6.875 -2.671875 6.6875 -2.671875 6.546875 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.546875 -2.28125 C 6.6875 -2.28125 6.875 -2.28125 6.875 -2.484375 Z M 6.875 -2.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-0">
|
||||
<path d="M 4.859375 -1.421875 C 4.859375 -1.515625 4.765625 -1.515625 4.734375 -1.515625 C 4.640625 -1.515625 4.625 -1.46875 4.59375 -1.34375 C 4.390625 -0.609375 4.171875 -0.109375 3.734375 -0.109375 C 3.546875 -0.109375 3.421875 -0.21875 3.421875 -0.578125 C 3.421875 -0.75 3.453125 -0.96875 3.5 -1.125 C 3.53125 -1.296875 3.53125 -1.34375 3.53125 -1.4375 C 3.53125 -2.078125 2.90625 -2.375 2.078125 -2.484375 C 2.375 -2.65625 2.6875 -2.96875 2.921875 -3.203125 C 3.390625 -3.734375 3.859375 -4.15625 4.34375 -4.15625 C 4.390625 -4.15625 4.40625 -4.15625 4.421875 -4.15625 C 4.546875 -4.125 4.5625 -4.125 4.640625 -4.078125 C 4.65625 -4.0625 4.65625 -4.046875 4.671875 -4.03125 C 4.203125 -4 4.109375 -3.609375 4.109375 -3.5 C 4.109375 -3.34375 4.21875 -3.15625 4.484375 -3.15625 C 4.75 -3.15625 5.03125 -3.375 5.03125 -3.75 C 5.03125 -4.046875 4.796875 -4.375 4.359375 -4.375 C 4.078125 -4.375 3.625 -4.296875 2.90625 -3.5 C 2.578125 -3.125 2.1875 -2.734375 1.8125 -2.578125 L 2.84375 -6.765625 C 2.84375 -6.765625 2.84375 -6.875 2.71875 -6.875 C 2.484375 -6.875 1.765625 -6.796875 1.5 -6.78125 C 1.421875 -6.765625 1.3125 -6.75 1.3125 -6.578125 C 1.3125 -6.453125 1.40625 -6.453125 1.5625 -6.453125 C 2.03125 -6.453125 2.046875 -6.390625 2.046875 -6.296875 L 2.015625 -6.09375 L 0.578125 -0.390625 C 0.546875 -0.25 0.546875 -0.234375 0.546875 -0.171875 C 0.546875 0.0625 0.75 0.109375 0.828125 0.109375 C 0.953125 0.109375 1.109375 0.015625 1.171875 -0.09375 C 1.21875 -0.1875 1.671875 -2.015625 1.71875 -2.265625 C 2.0625 -2.234375 2.875 -2.078125 2.875 -1.421875 C 2.875 -1.359375 2.875 -1.3125 2.84375 -1.21875 C 2.828125 -1.09375 2.796875 -0.984375 2.796875 -0.875 C 2.796875 -0.28125 3.203125 0.109375 3.71875 0.109375 C 4.015625 0.109375 4.28125 -0.046875 4.5 -0.421875 C 4.75 -0.859375 4.859375 -1.421875 4.859375 -1.421875 Z M 4.859375 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-1">
|
||||
<path d="M 7.140625 -2.59375 C 7.140625 -2.671875 7.09375 -2.703125 7.015625 -2.703125 C 6.78125 -2.703125 6.203125 -2.671875 5.96875 -2.671875 L 4.59375 -2.703125 C 4.5 -2.703125 4.375 -2.703125 4.375 -2.5 C 4.375 -2.390625 4.453125 -2.390625 4.671875 -2.390625 C 4.671875 -2.390625 4.96875 -2.390625 5.203125 -2.375 C 5.453125 -2.34375 5.515625 -2.3125 5.515625 -2.1875 C 5.515625 -2.09375 5.40625 -1.65625 5.296875 -1.28125 C 5.015625 -0.203125 3.734375 -0.09375 3.390625 -0.09375 C 2.4375 -0.09375 1.390625 -0.65625 1.390625 -2.171875 C 1.390625 -2.484375 1.5 -4.109375 2.53125 -5.40625 C 3.078125 -6.078125 4.03125 -6.671875 5.015625 -6.671875 C 6.015625 -6.671875 6.609375 -5.90625 6.609375 -4.765625 C 6.609375 -4.375 6.578125 -4.359375 6.578125 -4.265625 C 6.578125 -4.15625 6.6875 -4.15625 6.71875 -4.15625 C 6.859375 -4.15625 6.859375 -4.1875 6.90625 -4.359375 L 7.53125 -6.890625 C 7.53125 -6.921875 7.515625 -6.984375 7.421875 -6.984375 C 7.390625 -6.984375 7.375 -6.96875 7.265625 -6.859375 L 6.578125 -6.109375 C 6.484375 -6.234375 6.03125 -6.984375 4.9375 -6.984375 C 2.71875 -6.984375 0.5 -4.796875 0.5 -2.5 C 0.5 -0.921875 1.59375 0.21875 3.203125 0.21875 C 3.640625 0.21875 4.078125 0.125 4.4375 -0.015625 C 4.9375 -0.21875 5.125 -0.421875 5.296875 -0.625 C 5.390625 -0.375 5.640625 -0.015625 5.75 -0.015625 C 5.796875 -0.015625 5.8125 -0.046875 5.8125 -0.046875 C 5.828125 -0.0625 5.9375 -0.453125 5.984375 -0.65625 L 6.171875 -1.421875 C 6.21875 -1.578125 6.265625 -1.75 6.296875 -1.921875 C 6.40625 -2.375 6.421875 -2.390625 6.984375 -2.390625 C 7.03125 -2.390625 7.140625 -2.40625 7.140625 -2.59375 Z M 7.140625 -2.59375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-2">
|
||||
<path d="M 7.109375 -0.203125 C 7.109375 -0.3125 7.03125 -0.3125 6.828125 -0.3125 C 6.46875 -0.3125 6.1875 -0.3125 6.1875 -0.484375 C 6.1875 -0.546875 6.21875 -0.59375 6.21875 -0.65625 L 7.5625 -6 C 7.640625 -6.359375 7.671875 -6.453125 8.390625 -6.453125 C 8.640625 -6.453125 8.734375 -6.453125 8.734375 -6.65625 C 8.734375 -6.765625 8.625 -6.765625 8.59375 -6.765625 L 7.328125 -6.734375 L 6.046875 -6.765625 C 5.96875 -6.765625 5.859375 -6.765625 5.859375 -6.5625 C 5.859375 -6.453125 5.9375 -6.453125 6.125 -6.453125 C 6.125 -6.453125 6.34375 -6.453125 6.515625 -6.4375 C 6.6875 -6.421875 6.78125 -6.40625 6.78125 -6.28125 C 6.78125 -6.234375 6.765625 -6.21875 6.734375 -6.09375 L 6.140625 -3.671875 L 3.125 -3.671875 L 3.703125 -6 C 3.796875 -6.359375 3.828125 -6.453125 4.53125 -6.453125 C 4.796875 -6.453125 4.875 -6.453125 4.875 -6.65625 C 4.875 -6.765625 4.765625 -6.765625 4.734375 -6.765625 L 3.46875 -6.734375 L 2.1875 -6.765625 C 2.109375 -6.765625 2 -6.765625 2 -6.5625 C 2 -6.453125 2.09375 -6.453125 2.28125 -6.453125 C 2.28125 -6.453125 2.484375 -6.453125 2.65625 -6.4375 C 2.828125 -6.421875 2.921875 -6.40625 2.921875 -6.28125 C 2.921875 -6.234375 2.90625 -6.21875 2.875 -6.09375 L 1.5625 -0.765625 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.609375 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.0625 -3.375 L 5.375 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.234375 -0.3125 4.234375 -0.109375 C 4.234375 0 4.375 0 4.375 0 L 5.640625 -0.03125 L 6.265625 -0.015625 C 6.484375 -0.015625 6.703125 0 6.921875 0 C 7 0 7.109375 0 7.109375 -0.203125 Z M 7.109375 -0.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-3">
|
||||
<path d="M 5.375 -1.421875 C 5.375 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.15625 -1.515625 5.15625 -1.46875 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.375 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.1875 -1.25 4.265625 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.671875 -3.1875 4.71875 -3.34375 C 4.765625 -3.5625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.578125 -4.265625 C 4.53125 -4.265625 4.265625 -4.265625 4.1875 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.3125 -0.109375 C 1.796875 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.46875 1.984375 -2.265625 2.234375 -2.9375 C 2.359375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.15625 1.5625 -4.15625 C 1.65625 -4.15625 1.8125 -4.15625 1.8125 -3.828125 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.15625 C 1.28125 -2.171875 1.0625 -1.5625 1.0625 -1.078125 C 1.0625 -0.140625 1.75 0.109375 2.28125 0.109375 C 2.9375 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.34375 0.109375 C 4.703125 0.109375 4.921875 -0.125 5.078125 -0.4375 C 5.25 -0.796875 5.375 -1.421875 5.375 -1.421875 Z M 5.375 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-4">
|
||||
<path d="M 5.65625 -1.421875 C 5.65625 -1.515625 5.5625 -1.515625 5.53125 -1.515625 C 5.4375 -1.515625 5.4375 -1.484375 5.390625 -1.34375 C 5.1875 -0.65625 4.859375 -0.109375 4.375 -0.109375 C 4.203125 -0.109375 4.140625 -0.203125 4.140625 -0.4375 C 4.140625 -0.6875 4.234375 -0.921875 4.3125 -1.140625 C 4.5 -1.671875 4.921875 -2.75 4.921875 -3.3125 C 4.921875 -3.984375 4.5 -4.375 3.78125 -4.375 C 2.890625 -4.375 2.40625 -3.75 2.234375 -3.515625 C 2.1875 -4.078125 1.78125 -4.375 1.328125 -4.375 C 0.875 -4.375 0.6875 -4 0.578125 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.15625 1.296875 -4.15625 C 1.5 -4.15625 1.609375 -4.03125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.0625 0.109375 C 1.1875 0.109375 1.359375 0.03125 1.4375 -0.171875 C 1.453125 -0.1875 1.5625 -0.65625 1.625 -0.90625 L 1.84375 -1.796875 C 1.90625 -2.015625 1.96875 -2.234375 2.015625 -2.453125 L 2.140625 -2.953125 C 2.28125 -3.265625 2.8125 -4.15625 3.75 -4.15625 C 4.203125 -4.15625 4.296875 -3.796875 4.296875 -3.46875 C 4.296875 -2.859375 3.796875 -1.578125 3.640625 -1.15625 C 3.5625 -0.9375 3.546875 -0.8125 3.546875 -0.703125 C 3.546875 -0.234375 3.890625 0.109375 4.359375 0.109375 C 5.296875 0.109375 5.65625 -1.34375 5.65625 -1.421875 Z M 5.65625 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-5">
|
||||
<path d="M 4.8125 -3.78125 C 4.859375 -3.90625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.5625 -4.265625 C 4.46875 -4.265625 4.3125 -4.203125 4.21875 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.078125 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.390625 -0.796875 2.96875 -0.109375 2.3125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.359375 1.875 -1.984375 2.203125 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.859375 1.234375 -4.15625 1.5625 -4.15625 C 1.640625 -4.15625 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.59375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.09375 1.0625 -1.53125 1.0625 -1.0625 C 1.0625 -0.1875 1.6875 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.65625 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.953125 1.78125 0.796875 1.390625 C 0.953125 1.390625 1.078125 1.390625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.859375 0.015625 Z M 4.8125 -3.78125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-6">
|
||||
<path d="M 4.3125 -3.734375 C 4.3125 -4.078125 4 -4.375 3.5 -4.375 C 2.859375 -4.375 2.421875 -3.890625 2.234375 -3.609375 C 2.15625 -4.0625 1.796875 -4.375 1.328125 -4.375 C 0.875 -4.375 0.6875 -4 0.59375 -3.8125 C 0.421875 -3.484375 0.28125 -2.875 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.15625 1.296875 -4.15625 C 1.46875 -4.15625 1.609375 -4.078125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.0625 0.109375 C 1.1875 0.109375 1.359375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.828125 -1.734375 L 2.15625 -3.015625 C 2.1875 -3.15625 2.46875 -3.609375 2.703125 -3.828125 C 2.78125 -3.90625 3.078125 -4.15625 3.5 -4.15625 C 3.75 -4.15625 3.90625 -4.046875 3.90625 -4.046875 C 3.609375 -4 3.390625 -3.75 3.390625 -3.5 C 3.390625 -3.34375 3.5 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.3125 -3.375 4.3125 -3.734375 Z M 4.3125 -3.734375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-7">
|
||||
<path d="M 4.9375 -1.421875 C 4.9375 -1.515625 4.84375 -1.515625 4.8125 -1.515625 C 4.71875 -1.515625 4.703125 -1.46875 4.671875 -1.34375 C 4.5 -0.6875 4.328125 -0.109375 3.921875 -0.109375 C 3.65625 -0.109375 3.625 -0.359375 3.625 -0.5625 C 3.625 -0.796875 3.640625 -0.875 3.6875 -1.046875 L 5.109375 -6.765625 C 5.109375 -6.765625 5.109375 -6.875 4.984375 -6.875 C 4.828125 -6.875 3.890625 -6.78125 3.71875 -6.765625 C 3.640625 -6.75 3.59375 -6.703125 3.59375 -6.578125 C 3.59375 -6.453125 3.671875 -6.453125 3.828125 -6.453125 C 4.296875 -6.453125 4.3125 -6.390625 4.3125 -6.296875 L 4.296875 -6.09375 L 3.6875 -3.75 C 3.515625 -4.109375 3.234375 -4.375 2.78125 -4.375 C 1.625 -4.375 0.390625 -2.921875 0.390625 -1.46875 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.90625 0.109375 2.40625 0.0625 3 -0.640625 C 3.078125 -0.21875 3.421875 0.109375 3.90625 0.109375 C 4.25 0.109375 4.484375 -0.125 4.640625 -0.4375 C 4.796875 -0.796875 4.9375 -1.421875 4.9375 -1.421875 Z M 3.546875 -3.125 L 3.046875 -1.171875 C 3 -1 3 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.234375 -0.109375 1.09375 -0.65625 1.09375 -1.046875 C 1.09375 -1.53125 1.421875 -2.75 1.640625 -3.203125 C 1.953125 -3.796875 2.390625 -4.15625 2.796875 -4.15625 C 3.4375 -4.15625 3.578125 -3.34375 3.578125 -3.28125 C 3.578125 -3.234375 3.5625 -3.171875 3.546875 -3.125 Z M 3.546875 -3.125 "/>
|
||||
</g>
|
||||
<g id="glyph-4-0">
|
||||
<path d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.875 1.671875 -3.875 C 1.390625 -3.875 1.3125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.34375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
|
||||
</g>
|
||||
<g id="glyph-5-0">
|
||||
<path d="M 5.53125 -0.140625 C 5.53125 -0.25 5.46875 -0.25 5.3125 -0.25 C 5.203125 -0.25 5.171875 -0.25 5.046875 -0.265625 C 4.890625 -0.28125 4.890625 -0.296875 4.890625 -0.375 C 4.890625 -0.40625 4.90625 -0.484375 4.921875 -0.515625 L 5.828125 -4.171875 C 5.890625 -4.4375 5.90625 -4.484375 6.421875 -4.484375 C 6.578125 -4.484375 6.65625 -4.484375 6.65625 -4.640625 C 6.65625 -4.671875 6.640625 -4.734375 6.546875 -4.734375 C 6.34375 -4.734375 5.84375 -4.703125 5.640625 -4.703125 C 5.515625 -4.703125 5.28125 -4.703125 5.15625 -4.71875 C 5.015625 -4.71875 4.859375 -4.734375 4.71875 -4.734375 C 4.6875 -4.734375 4.578125 -4.734375 4.578125 -4.578125 C 4.578125 -4.484375 4.65625 -4.484375 4.796875 -4.484375 C 4.796875 -4.484375 4.9375 -4.484375 5.0625 -4.46875 C 5.203125 -4.453125 5.21875 -4.453125 5.21875 -4.375 C 5.21875 -4.375 5.21875 -4.328125 5.203125 -4.21875 L 4.78125 -2.59375 L 2.46875 -2.59375 L 2.859375 -4.203125 C 2.921875 -4.4375 2.9375 -4.484375 3.46875 -4.484375 C 3.59375 -4.484375 3.6875 -4.484375 3.6875 -4.640625 C 3.6875 -4.671875 3.65625 -4.734375 3.578125 -4.734375 C 3.375 -4.734375 2.859375 -4.703125 2.65625 -4.703125 C 2.546875 -4.703125 2.296875 -4.703125 2.1875 -4.71875 C 2.046875 -4.71875 1.875 -4.734375 1.75 -4.734375 C 1.703125 -4.734375 1.609375 -4.734375 1.609375 -4.578125 C 1.609375 -4.484375 1.6875 -4.484375 1.828125 -4.484375 C 1.828125 -4.484375 1.96875 -4.484375 2.09375 -4.46875 C 2.234375 -4.453125 2.25 -4.453125 2.25 -4.375 C 2.25 -4.375 2.25 -4.328125 2.21875 -4.21875 L 1.296875 -0.546875 C 1.234375 -0.3125 1.234375 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 -0.03125 0.53125 0 0.59375 0 C 0.796875 0 1.296875 -0.03125 1.484375 -0.03125 C 1.609375 -0.03125 1.859375 -0.03125 1.96875 -0.015625 C 2.109375 -0.015625 2.28125 0 2.421875 0 C 2.453125 0 2.5625 0 2.5625 -0.140625 C 2.5625 -0.25 2.484375 -0.25 2.328125 -0.25 C 2.21875 -0.25 2.1875 -0.25 2.0625 -0.265625 C 1.921875 -0.28125 1.921875 -0.296875 1.921875 -0.375 C 1.921875 -0.375 1.921875 -0.421875 1.9375 -0.515625 L 2.40625 -2.34375 L 4.71875 -2.34375 L 4.28125 -0.546875 C 4.21875 -0.3125 4.203125 -0.25 3.65625 -0.25 C 3.546875 -0.25 3.453125 -0.25 3.453125 -0.109375 C 3.453125 -0.03125 3.5 0 3.5625 0 C 3.765625 0 4.265625 -0.03125 4.46875 -0.03125 C 4.578125 -0.03125 4.828125 -0.03125 4.953125 -0.015625 C 5.078125 -0.015625 5.265625 0 5.390625 0 C 5.421875 0 5.53125 0 5.53125 -0.140625 Z M 5.53125 -0.140625 "/>
|
||||
</g>
|
||||
<g id="glyph-5-1">
|
||||
<path d="M 5 -1.734375 C 5 -1.75 4.984375 -1.828125 4.890625 -1.828125 C 4.796875 -1.828125 4.78125 -1.796875 4.75 -1.671875 C 4.484375 -1.015625 4.171875 -0.25 2.90625 -0.25 L 2.125 -0.25 C 1.90625 -0.25 1.90625 -0.25 1.90625 -0.3125 C 1.90625 -0.3125 1.90625 -0.359375 1.921875 -0.46875 L 2.859375 -4.171875 C 2.921875 -4.421875 2.9375 -4.484375 3.578125 -4.484375 C 3.796875 -4.484375 3.859375 -4.484375 3.859375 -4.640625 C 3.859375 -4.640625 3.859375 -4.734375 3.75 -4.734375 C 3.59375 -4.734375 3.40625 -4.71875 3.234375 -4.71875 L 2.671875 -4.703125 L 2.203125 -4.71875 C 2.046875 -4.71875 1.890625 -4.734375 1.75 -4.734375 C 1.703125 -4.734375 1.609375 -4.734375 1.609375 -4.578125 C 1.609375 -4.484375 1.6875 -4.484375 1.828125 -4.484375 C 1.828125 -4.484375 1.96875 -4.484375 2.09375 -4.46875 C 2.234375 -4.453125 2.25 -4.453125 2.25 -4.375 C 2.25 -4.375 2.25 -4.328125 2.21875 -4.21875 L 1.296875 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 0 0.5625 0 0.6875 0 L 4.171875 0 C 4.34375 0 4.359375 0 4.40625 -0.140625 C 4.484375 -0.328125 5 -1.671875 5 -1.734375 Z M 5 -1.734375 "/>
|
||||
</g>
|
||||
<g id="glyph-5-2">
|
||||
<path d="M 6.6875 -0.984375 C 6.6875 -1.078125 6.609375 -1.078125 6.578125 -1.078125 C 6.484375 -1.078125 6.484375 -1.046875 6.453125 -0.96875 C 6.296875 -0.40625 6 -0.125 5.71875 -0.125 C 5.578125 -0.125 5.546875 -0.21875 5.546875 -0.375 C 5.546875 -0.53125 5.578125 -0.625 5.703125 -0.921875 C 5.78125 -1.140625 6.078125 -1.875 6.078125 -2.265625 C 6.078125 -2.375 6.078125 -2.671875 5.8125 -2.875 C 5.703125 -2.96875 5.5 -3.0625 5.171875 -3.0625 C 4.546875 -3.0625 4.15625 -2.65625 3.9375 -2.359375 C 3.890625 -2.953125 3.390625 -3.0625 3.03125 -3.0625 C 2.46875 -3.0625 2.078125 -2.703125 1.859375 -2.421875 C 1.8125 -2.90625 1.40625 -3.0625 1.125 -3.0625 C 0.828125 -3.0625 0.671875 -2.84375 0.578125 -2.6875 C 0.421875 -2.421875 0.328125 -2.03125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.921875 0.59375 -2.109375 C 0.703125 -2.53125 0.828125 -2.859375 1.109375 -2.859375 C 1.28125 -2.859375 1.328125 -2.71875 1.328125 -2.53125 C 1.328125 -2.390625 1.265625 -2.140625 1.21875 -1.953125 L 1.0625 -1.328125 L 0.84375 -0.4375 C 0.8125 -0.34375 0.78125 -0.171875 0.78125 -0.15625 C 0.78125 0 0.90625 0.0625 1.015625 0.0625 C 1.140625 0.0625 1.25 -0.015625 1.28125 -0.078125 C 1.3125 -0.140625 1.375 -0.375 1.40625 -0.515625 L 1.5625 -1.140625 C 1.609375 -1.296875 1.640625 -1.4375 1.671875 -1.609375 C 1.75 -1.890625 1.765625 -1.9375 1.96875 -2.234375 C 2.171875 -2.5 2.484375 -2.859375 3.015625 -2.859375 C 3.40625 -2.859375 3.421875 -2.515625 3.421875 -2.375 C 3.421875 -2.203125 3.40625 -2.109375 3.296875 -1.734375 L 3.015625 -0.5625 C 2.96875 -0.421875 2.90625 -0.1875 2.90625 -0.15625 C 2.90625 0 3.03125 0.0625 3.15625 0.0625 C 3.28125 0.0625 3.390625 -0.015625 3.421875 -0.078125 C 3.453125 -0.140625 3.515625 -0.375 3.546875 -0.515625 L 3.703125 -1.140625 C 3.734375 -1.296875 3.78125 -1.4375 3.8125 -1.609375 C 3.890625 -1.90625 3.890625 -1.921875 4.03125 -2.125 C 4.25 -2.46875 4.59375 -2.859375 5.140625 -2.859375 C 5.53125 -2.859375 5.546875 -2.546875 5.546875 -2.375 C 5.546875 -1.96875 5.25 -1.1875 5.140625 -0.90625 C 5.0625 -0.703125 5.03125 -0.640625 5.03125 -0.53125 C 5.03125 -0.15625 5.34375 0.0625 5.703125 0.0625 C 6.390625 0.0625 6.6875 -0.890625 6.6875 -0.984375 Z M 6.6875 -0.984375 "/>
|
||||
</g>
|
||||
<g id="glyph-5-3">
|
||||
<path d="M 3.859375 -2.609375 C 3.890625 -2.71875 3.890625 -2.71875 3.890625 -2.765625 C 3.890625 -2.90625 3.78125 -2.984375 3.65625 -2.984375 C 3.578125 -2.984375 3.453125 -2.953125 3.375 -2.828125 C 3.34375 -2.78125 3.296875 -2.5625 3.265625 -2.421875 L 3.109375 -1.84375 L 2.84375 -0.734375 C 2.84375 -0.734375 2.53125 -0.125 1.984375 -0.125 C 1.515625 -0.125 1.515625 -0.578125 1.515625 -0.703125 C 1.515625 -1.078125 1.671875 -1.515625 1.875 -2.046875 C 1.96875 -2.265625 2 -2.359375 2 -2.46875 C 2 -2.796875 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.109375 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.9375 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.859375 1.3125 -2.859375 C 1.4375 -2.859375 1.484375 -2.78125 1.484375 -2.625 C 1.484375 -2.46875 1.421875 -2.3125 1.390625 -2.21875 C 1.0625 -1.375 0.984375 -1.109375 0.984375 -0.8125 C 0.984375 -0.6875 0.984375 -0.375 1.265625 -0.140625 C 1.484375 0.03125 1.765625 0.0625 1.953125 0.0625 C 2.234375 0.0625 2.484375 -0.03125 2.71875 -0.25 C 2.625 0.140625 2.546875 0.4375 2.25 0.78125 C 2.0625 0.984375 1.796875 1.21875 1.421875 1.21875 C 1.375 1.21875 1.046875 1.21875 0.90625 0.984375 C 1.28125 0.953125 1.28125 0.609375 1.28125 0.609375 C 1.28125 0.390625 1.078125 0.34375 1 0.34375 C 0.828125 0.34375 0.609375 0.484375 0.609375 0.8125 C 0.609375 1.15625 0.9375 1.421875 1.421875 1.421875 C 2.125 1.421875 2.984375 0.875 3.203125 0 Z M 3.859375 -2.609375 "/>
|
||||
</g>
|
||||
</g>
|
||||
<clipPath id="clip-0">
|
||||
<path clip-rule="nonzero" d="M 0.273438 14 L 129 14 L 129 104.84375 L 0.273438 104.84375 Z M 0.273438 14 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-1">
|
||||
<path clip-rule="nonzero" d="M 166 69 L 209 69 L 209 104.84375 L 166 104.84375 Z M 166 69 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-2">
|
||||
<path clip-rule="nonzero" d="M 198 90 L 209.519531 90 L 209.519531 92 L 198 92 Z M 198 90 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-3">
|
||||
<path clip-rule="nonzero" d="M 181 75 L 209.519531 75 L 209.519531 104.84375 L 181 104.84375 Z M 181 75 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-4">
|
||||
<path clip-rule="nonzero" d="M 188 15 L 209.519531 15 L 209.519531 47 L 188 47 Z M 188 15 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-5">
|
||||
<path clip-rule="nonzero" d="M 0.273438 15 L 32 15 L 32 47 L 0.273438 47 Z M 0.273438 15 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-6">
|
||||
<path clip-rule="nonzero" d="M 83 75 L 116 75 L 116 104.84375 L 83 104.84375 Z M 83 75 "/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 1.265625 103.855469 L 128.140625 103.855469 L 128.140625 14.917969 L 1.265625 14.917969 Z M 1.265625 103.855469 "/>
|
||||
<g clip-path="url(#clip-0)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -25.132696 -73.51387 L 102.439135 -73.51387 L 102.439135 15.912098 L -25.132696 15.912098 Z M -25.132696 -73.51387 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-0" x="35.708154" y="10.624647"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-1" x="42.179187" y="10.624647"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-2" x="52.634301" y="10.624647"/>
|
||||
<use xlink:href="#glyph-0-3" x="57.038487" y="10.624647"/>
|
||||
<use xlink:href="#glyph-0-4" x="61.992578" y="10.624647"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-5" x="67.220135" y="10.624647"/>
|
||||
<use xlink:href="#glyph-0-6" x="71.073427" y="10.624647"/>
|
||||
<use xlink:href="#glyph-0-3" x="74.954461" y="10.624647"/>
|
||||
<use xlink:href="#glyph-0-7" x="79.908552" y="10.624647"/>
|
||||
<use xlink:href="#glyph-0-7" x="82.661045" y="10.624647"/>
|
||||
<use xlink:href="#glyph-0-8" x="85.413538" y="10.624647"/>
|
||||
<use xlink:href="#glyph-0-6" x="89.817725" y="10.624647"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.972357 0.00096828 C 6.972357 3.850118 3.849833 6.972643 0.000682573 6.972643 C -3.852395 6.972643 -6.97492 3.850118 -6.97492 0.00096828 C -6.97492 -3.852109 -3.852395 -6.974634 0.000682573 -6.974634 C 3.849833 -6.974634 6.972357 -3.852109 6.972357 0.00096828 Z M 6.972357 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="21.94773" y="33.643223"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-2-0" x="16.573248" y="45.440429"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 29.427042 0.00096828 C 29.427042 3.850118 26.304517 6.972643 22.45144 6.972643 C 18.598362 6.972643 15.479765 3.850118 15.479765 0.00096828 C 15.479765 -3.852109 18.598362 -6.974634 22.45144 -6.974634 C 26.304517 -6.974634 29.427042 -3.852109 29.427042 0.00096828 Z M 29.427042 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="44.276096" y="33.643223"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-2-0" x="38.902609" y="45.440429"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 46.93282 -8.502511 L 69.611383 -8.502511 L 69.611383 8.504448 L 46.93282 8.504448 Z M 46.93282 -8.502511 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-0" x="81.477775" y="34.183257"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 113.126418 -8.502511 L 135.804982 -8.502511 L 135.804982 8.504448 L 113.126418 8.504448 Z M 113.126418 -8.502511 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-1" x="144.759217" y="34.467694"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-4-0" x="152.550425" y="30.871446"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 158.754557 0.00096828 C 158.754557 3.850118 155.632032 6.972643 151.778954 6.972643 C 147.929804 6.972643 144.807279 3.850118 144.807279 0.00096828 C 144.807279 -3.852109 147.929804 -6.974634 151.778954 -6.974634 C 155.632032 -6.974634 158.754557 -3.852109 158.754557 0.00096828 Z M 158.754557 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="172.896678" y="33.643223"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 66.355317 -40.682191 L 89.029953 -40.682191 L 89.029953 -23.675232 L 66.355317 -23.675232 Z M 66.355317 -40.682191 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-1" x="99.634056" y="66.129798"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 27.510322 -40.682191 L 50.188886 -40.682191 L 50.188886 -23.675232 L 27.510322 -23.675232 Z M 27.510322 -40.682191 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-2" x="57.022092" y="65.386878"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-0" x="65.257859" y="66.872717"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 46.93282 -69.028432 L 69.611383 -69.028432 L 69.611383 -52.021473 L 46.93282 -52.021473 Z M 46.93282 -69.028432 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-2" x="77.129656" y="93.578045"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-1" x="85.365423" y="95.064879"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 194.433594 90.9375 C 194.433594 87.105469 191.328125 84 187.496094 84 C 183.667969 84 180.5625 87.105469 180.5625 90.9375 C 180.5625 94.769531 183.667969 97.875 187.496094 97.875 C 191.328125 97.875 194.433594 94.769531 194.433594 90.9375 Z M 194.433594 90.9375 "/>
|
||||
<g clip-path="url(#clip-1)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 169.096202 -60.524953 C 169.096202 -56.671875 165.973677 -53.54935 162.120599 -53.54935 C 158.271449 -53.54935 155.148925 -56.671875 155.148925 -60.524953 C 155.148925 -64.378031 158.271449 -67.500555 162.120599 -67.500555 C 165.973677 -67.500555 169.096202 -64.378031 169.096202 -60.524953 Z M 169.096202 -60.524953 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="183.182187" y="93.836624"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.972357 0.00096828 L 10.845074 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051986 0.00096828 L 1.609752 1.682026 L 3.086569 0.00096828 L 1.609752 -1.684017 Z M 6.051986 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 34.223259, 30.74315)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 29.427042 0.00096828 L 41.79931 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.05411 0.00096828 L 1.607949 1.682026 L 3.088693 0.00096828 L 1.607949 -1.684017 Z M 6.05411 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 65.010209, 30.74315)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 70.106274 0.00096828 L 107.992908 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053698 0.00096828 L 1.607537 1.682026 L 3.088281 0.00096828 L 1.607537 -1.684017 Z M 6.053698 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 130.84265, 30.74315)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-3" x="128.802853" y="26.945011"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 136.3038 0.00096828 L 140.172589 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051531 0.00096828 L 1.609297 1.682026 L 3.086114 0.00096828 L 1.609297 -1.684017 Z M 6.051531 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 162.844806, 30.74315)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 98.456443 0.00096828 L 98.456443 -32.178712 L 94.163462 -32.178712 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055228 0.000791884 L 1.609067 1.681849 L 3.085883 0.000791884 L 1.609067 -1.684193 Z M 6.055228 0.000791884 " transform="matrix(-0.994538, 0, 0, 0.994538, 122.73309, 62.745306)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 126.160156 30.742188 C 126.160156 29.648438 125.273438 28.761719 124.179688 28.761719 C 123.082031 28.761719 122.195312 29.648438 122.195312 30.742188 C 122.195312 31.835938 123.082031 32.726562 124.179688 32.726562 C 125.273438 32.726562 126.160156 31.835938 126.160156 30.742188 Z M 126.160156 30.742188 "/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 65.856498 -32.178712 L 55.318468 -32.178712 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052384 0.000791884 L 1.610151 1.681849 L 3.086967 0.000791884 L 1.610151 -1.684193 Z M 6.052384 0.000791884 " transform="matrix(-0.994538, 0, 0, 0.994538, 84.101356, 62.745306)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 27.011504 -32.178712 L 22.45144 -32.178712 L 22.45144 -11.609325 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053434 0.000480462 L 1.607273 1.681538 L 3.088018 0.000480462 L 1.607273 -1.684505 Z M 6.053434 0.000480462 " transform="matrix(0, -0.994538, -0.994538, 0, 48.590322, 45.110213)"/>
|
||||
<g clip-path="url(#clip-2)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 173.730893 -60.524953 L 183.271286 -60.524953 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 195.84375 90.9375 L 200.265625 92.609375 L 198.792969 90.9375 L 200.265625 89.261719 Z M 195.84375 90.9375 "/>
|
||||
<g clip-path="url(#clip-3)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054077 0.000232789 L 1.607916 1.68129 L 3.08866 0.000232789 L 1.607916 -1.684752 Z M 6.054077 0.000232789 " transform="matrix(-0.994538, 0, 0, 0.994538, 201.864758, 90.937268)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-4" x="198.782506" y="87.138413"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 158.754557 0.00096828 L 178.636595 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 207.117188 30.742188 L 202.699219 29.070312 L 204.167969 30.742188 L 202.699219 32.417969 Z M 207.117188 30.742188 "/>
|
||||
<g clip-path="url(#clip-4)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052037 0.00096828 L 1.609804 1.682026 L 3.086621 0.00096828 L 1.609804 -1.684017 Z M 6.052037 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 201.098208, 30.74315)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-5" x="199.516475" y="25.018591"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 162.120599 0.00096828 L 162.120599 -48.918587 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052709 -0.00160062 L 1.610476 1.683384 L 3.087292 -0.00160062 L 1.610476 -1.682658 Z M 6.052709 -0.00160062 " transform="matrix(0, 0.994538, 0.994538, 0, 187.497686, 76.570196)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 189.480469 30.742188 C 189.480469 29.648438 188.59375 28.761719 187.496094 28.761719 C 186.402344 28.761719 185.515625 29.648438 185.515625 30.742188 C 185.515625 31.835938 186.402344 32.726562 187.496094 32.726562 C 188.59375 32.726562 189.480469 31.835938 189.480469 30.742188 Z M 189.480469 30.742188 "/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.605683 0.00096828 L -21.146077 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 17.914062 30.742188 L 13.492188 29.070312 L 14.964844 30.742188 L 13.492188 32.417969 Z M 17.914062 30.742188 "/>
|
||||
<g clip-path="url(#clip-5)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053149 0.00096828 L 1.606988 1.682026 L 3.087732 0.00096828 L 1.606988 -1.684017 Z M 6.053149 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 11.893978, 30.74315)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-6" x="9.02769" y="26.945011"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 155.148925 -60.524953 L 74.740965 -60.524953 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 97.398438 90.9375 L 101.816406 92.609375 L 100.347656 90.9375 L 101.816406 89.261719 Z M 97.398438 90.9375 "/>
|
||||
<g clip-path="url(#clip-6)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051837 0.000232789 L 1.609604 1.68129 L 3.08642 0.000232789 L 1.609604 -1.684752 Z M 6.051837 0.000232789 " transform="matrix(-0.994538, 0, 0, 0.994538, 103.417218, 90.937268)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-5" x="99.783237" y="85.211993"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-2" x="104.640559" y="86.697833"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 151.778954 11.607334 L 151.778954 21.147727 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051508 -0.000935665 L 1.609275 1.684049 L 3.086091 -0.000935665 L 1.609275 -1.681993 Z M 6.051508 -0.000935665 " transform="matrix(0, 0.994538, 0.994538, 0, 177.211868, 16.376078)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-7" x="181.008128" y="20.390013"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-3" x="186.164806" y="21.875852"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 46.434001 -60.524953 L 0.000682573 -60.524953 L 0.000682573 -11.609325 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053434 -0.000682573 L 1.607273 1.684303 L 3.088018 -0.000682573 L 1.607273 -1.68174 Z M 6.053434 -0.000682573 " transform="matrix(0, -0.994538, -0.994538, 0, 26.26104, 45.110213)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 48 KiB |
BIN
paper/figs/detail_control_cf_arch_tunable_params.pdf
Normal file
BIN
paper/figs/detail_control_cf_arch_tunable_params.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
246
paper/figs/detail_control_cf_arch_tunable_params.svg
Normal file
@@ -0,0 +1,246 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="237.224pt" height="88.776pt" viewBox="0 0 237.224 88.776">
|
||||
<defs>
|
||||
<g>
|
||||
<g id="glyph-0-0">
|
||||
<path d="M 7.28125 -0.875 C 7.28125 -0.9375 7.28125 -1.046875 7.140625 -1.046875 C 7.03125 -1.046875 7.03125 -0.953125 7.03125 -0.890625 C 6.96875 -0.171875 6.625 0 6.375 0 C 5.890625 0 5.796875 -0.5 5.671875 -1.4375 L 5.53125 -2.21875 C 5.359375 -2.859375 4.875 -3.1875 4.328125 -3.375 C 5.28125 -3.625 6.0625 -4.21875 6.0625 -5 C 6.0625 -5.953125 4.921875 -6.78125 3.46875 -6.78125 L 0.34375 -6.78125 L 0.34375 -6.484375 L 0.59375 -6.484375 C 1.34375 -6.484375 1.375 -6.375 1.375 -6.015625 L 1.375 -0.78125 C 1.375 -0.421875 1.34375 -0.3125 0.59375 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.40625 -0.03125 1.796875 -0.03125 C 2.1875 -0.03125 2.890625 -0.03125 3.25 0 L 3.25 -0.3125 L 3.015625 -0.3125 C 2.25 -0.3125 2.21875 -0.421875 2.21875 -0.78125 L 2.21875 -3.296875 L 3.375 -3.296875 C 3.53125 -3.296875 3.9375 -3.296875 4.296875 -2.953125 C 4.671875 -2.59375 4.671875 -2.28125 4.671875 -1.625 C 4.671875 -0.96875 4.671875 -0.578125 5.078125 -0.203125 C 5.484375 0.15625 6.03125 0.21875 6.328125 0.21875 C 7.109375 0.21875 7.28125 -0.59375 7.28125 -0.875 Z M 5.03125 -5 C 5.03125 -4.3125 4.796875 -3.515625 3.328125 -3.515625 L 2.21875 -3.515625 L 2.21875 -6.078125 C 2.21875 -6.3125 2.21875 -6.421875 2.4375 -6.453125 C 2.546875 -6.484375 2.828125 -6.484375 3.03125 -6.484375 C 3.921875 -6.484375 5.03125 -6.4375 5.03125 -5 Z M 5.03125 -5 "/>
|
||||
</g>
|
||||
<g id="glyph-0-1">
|
||||
<path d="M 6.8125 -4.484375 L 6.625 -6.734375 L 0.546875 -6.734375 L 0.359375 -4.484375 L 0.609375 -4.484375 C 0.75 -6.09375 0.890625 -6.421875 2.390625 -6.421875 C 2.578125 -6.421875 2.828125 -6.421875 2.9375 -6.40625 C 3.140625 -6.359375 3.140625 -6.25 3.140625 -6.015625 L 3.140625 -0.78125 C 3.140625 -0.453125 3.140625 -0.3125 2.09375 -0.3125 L 1.703125 -0.3125 L 1.703125 0 C 2.109375 -0.03125 3.125 -0.03125 3.578125 -0.03125 C 4.03125 -0.03125 5.0625 -0.03125 5.46875 0 L 5.46875 -0.3125 L 5.0625 -0.3125 C 4.03125 -0.3125 4.03125 -0.453125 4.03125 -0.78125 L 4.03125 -6.015625 C 4.03125 -6.21875 4.03125 -6.359375 4.203125 -6.40625 C 4.3125 -6.421875 4.578125 -6.421875 4.765625 -6.421875 C 6.265625 -6.421875 6.421875 -6.09375 6.5625 -4.484375 Z M 6.8125 -4.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-2">
|
||||
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.03125 -1.28125 4 -1.28125 C 3.90625 -1.28125 3.890625 -1.25 3.859375 -1.1875 C 3.578125 -0.265625 2.9375 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.171875 C 1.15625 -3.78125 1.984375 -4.203125 2.5 -4.203125 C 2.59375 -4.203125 3.21875 -4.1875 3.5625 -3.828125 C 3.15625 -3.8125 3.09375 -3.515625 3.09375 -3.375 C 3.09375 -3.125 3.28125 -2.921875 3.5625 -2.921875 C 3.8125 -2.921875 4.015625 -3.09375 4.015625 -3.390625 C 4.015625 -4.0625 3.265625 -4.453125 2.5 -4.453125 C 1.25 -4.453125 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.328125 0.109375 2.46875 0.109375 C 3.8125 0.109375 4.125 -1.078125 4.125 -1.1875 Z M 4.125 -1.1875 "/>
|
||||
</g>
|
||||
<g id="glyph-0-3">
|
||||
<path d="M 4.6875 -2.125 C 4.6875 -3.40625 3.6875 -4.453125 2.484375 -4.453125 C 1.25 -4.453125 0.28125 -3.375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.6875 -0.859375 4.6875 -2.125 Z M 3.859375 -2.203125 C 3.859375 -1.84375 3.859375 -1.3125 3.640625 -0.875 C 3.421875 -0.421875 2.984375 -0.140625 2.484375 -0.140625 C 2.0625 -0.140625 1.625 -0.34375 1.34375 -0.8125 C 1.109375 -1.25 1.109375 -1.84375 1.109375 -2.203125 C 1.109375 -2.59375 1.109375 -3.125 1.34375 -3.5625 C 1.609375 -4.03125 2.078125 -4.234375 2.46875 -4.234375 C 2.90625 -4.234375 3.34375 -4.015625 3.59375 -3.59375 C 3.859375 -3.15625 3.859375 -2.578125 3.859375 -2.203125 Z M 3.859375 -2.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-4">
|
||||
<path d="M 5.3125 0 L 5.3125 -0.3125 C 4.796875 -0.3125 4.546875 -0.3125 4.546875 -0.609375 L 4.546875 -2.5 C 4.546875 -3.359375 4.546875 -3.671875 4.234375 -4.03125 C 4.09375 -4.1875 3.765625 -4.390625 3.1875 -4.390625 C 2.46875 -4.390625 2 -3.96875 1.71875 -3.34375 L 1.71875 -4.390625 L 0.3125 -4.28125 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 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 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.578125 C 1.78125 -3.625 2.484375 -4.171875 3.125 -4.171875 C 3.75 -4.171875 3.859375 -3.640625 3.859375 -3.078125 L 3.859375 -0.75 C 3.859375 -0.3125 3.75 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.203125 -0.03125 Z M 5.3125 0 "/>
|
||||
</g>
|
||||
<g id="glyph-0-5">
|
||||
<path d="M 3.296875 -1.234375 L 3.296875 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 L 1.71875 -3.96875 L 3.140625 -3.96875 L 3.140625 -4.28125 L 1.71875 -4.28125 L 1.71875 -6.109375 L 1.46875 -6.109375 C 1.453125 -5.296875 1.15625 -4.234375 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.296875 -0.59375 3.296875 -1.234375 Z M 3.296875 -1.234375 "/>
|
||||
</g>
|
||||
<g id="glyph-0-6">
|
||||
<path d="M 3.625 -3.78125 C 3.625 -4.109375 3.3125 -4.390625 2.875 -4.390625 C 2.15625 -4.390625 1.796875 -3.734375 1.65625 -3.296875 L 1.65625 -4.390625 L 0.28125 -4.28125 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.90625 1.046875 -3.421875 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.8125 -0.03125 2.28125 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.46875 -0.3125 C 1.734375 -0.3125 1.703125 -0.421875 1.703125 -0.78125 L 1.703125 -2.3125 C 1.703125 -3.296875 2.125 -4.171875 2.875 -4.171875 C 2.953125 -4.171875 2.96875 -4.171875 2.984375 -4.15625 C 2.96875 -4.15625 2.765625 -4.03125 2.765625 -3.78125 C 2.765625 -3.5 2.96875 -3.34375 3.1875 -3.34375 C 3.375 -3.34375 3.625 -3.46875 3.625 -3.78125 Z M 3.625 -3.78125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-7">
|
||||
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 L 1.765625 -6.890625 L 0.328125 -6.78125 L 0.328125 -6.484375 C 1.03125 -6.484375 1.109375 -6.40625 1.109375 -5.921875 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.4375 -0.03125 Z M 2.53125 0 "/>
|
||||
</g>
|
||||
<g id="glyph-0-8">
|
||||
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.046875 -1.296875 4 -1.296875 C 3.90625 -1.296875 3.890625 -1.25 3.859375 -1.15625 C 3.515625 -0.140625 2.625 -0.140625 2.53125 -0.140625 C 2.03125 -0.140625 1.625 -0.4375 1.40625 -0.8125 C 1.109375 -1.28125 1.109375 -1.9375 1.109375 -2.296875 L 3.875 -2.296875 C 4.09375 -2.296875 4.125 -2.296875 4.125 -2.5 C 4.125 -3.484375 3.59375 -4.453125 2.34375 -4.453125 C 1.1875 -4.453125 0.28125 -3.421875 0.28125 -2.1875 C 0.28125 -0.859375 1.328125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.125 -1 4.125 -1.1875 Z M 3.46875 -2.5 L 1.109375 -2.5 C 1.171875 -3.984375 2 -4.234375 2.34375 -4.234375 C 3.375 -4.234375 3.46875 -2.890625 3.46875 -2.5 Z M 3.46875 -2.5 "/>
|
||||
</g>
|
||||
<g id="glyph-1-0">
|
||||
<path d="M 8.09375 -2.984375 C 8.09375 -3.203125 7.890625 -3.203125 7.71875 -3.203125 L 4.53125 -3.203125 L 4.53125 -6.390625 C 4.53125 -6.5625 4.53125 -6.765625 4.328125 -6.765625 C 4.109375 -6.765625 4.109375 -6.578125 4.109375 -6.390625 L 4.109375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.109375 -2.78125 L 4.109375 0.390625 C 4.109375 0.5625 4.109375 0.765625 4.3125 0.765625 C 4.53125 0.765625 4.53125 0.578125 4.53125 0.390625 L 4.53125 -2.78125 L 7.71875 -2.78125 C 7.875 -2.78125 8.09375 -2.78125 8.09375 -2.984375 Z M 8.09375 -2.984375 "/>
|
||||
</g>
|
||||
<g id="glyph-2-0">
|
||||
<path d="M 6.890625 -2.484375 C 6.890625 -2.6875 6.703125 -2.6875 6.5625 -2.6875 L 1.15625 -2.6875 C 1.015625 -2.6875 0.828125 -2.6875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-2-1">
|
||||
<path d="M 4.40625 -2.484375 C 4.40625 -3.546875 3.53125 -4.40625 2.484375 -4.40625 C 1.40625 -4.40625 0.5625 -3.53125 0.5625 -2.484375 C 0.5625 -1.421875 1.4375 -0.5625 2.46875 -0.5625 C 3.5625 -0.5625 4.40625 -1.4375 4.40625 -2.484375 Z M 4.40625 -2.484375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-0">
|
||||
<path d="M 7.140625 -0.203125 C 7.140625 -0.3125 7.046875 -0.3125 6.859375 -0.3125 C 6.484375 -0.3125 6.21875 -0.3125 6.21875 -0.484375 C 6.21875 -0.546875 6.234375 -0.59375 6.234375 -0.65625 L 7.578125 -6.015625 C 7.671875 -6.375 7.6875 -6.484375 8.421875 -6.484375 C 8.671875 -6.484375 8.75 -6.484375 8.75 -6.671875 C 8.75 -6.78125 8.640625 -6.78125 8.609375 -6.78125 L 7.34375 -6.75 L 6.0625 -6.78125 C 5.984375 -6.78125 5.875 -6.78125 5.875 -6.59375 C 5.875 -6.484375 5.96875 -6.484375 6.15625 -6.484375 C 6.15625 -6.484375 6.359375 -6.484375 6.53125 -6.453125 C 6.703125 -6.4375 6.796875 -6.421875 6.796875 -6.296875 C 6.796875 -6.265625 6.78125 -6.234375 6.75 -6.109375 L 6.15625 -3.6875 L 3.125 -3.6875 L 3.71875 -6.015625 C 3.8125 -6.375 3.828125 -6.484375 4.546875 -6.484375 C 4.8125 -6.484375 4.890625 -6.484375 4.890625 -6.671875 C 4.890625 -6.78125 4.78125 -6.78125 4.75 -6.78125 L 3.484375 -6.75 L 2.203125 -6.78125 C 2.109375 -6.78125 2 -6.78125 2 -6.59375 C 2 -6.484375 2.09375 -6.484375 2.28125 -6.484375 C 2.28125 -6.484375 2.5 -6.484375 2.65625 -6.453125 C 2.84375 -6.4375 2.9375 -6.421875 2.9375 -6.296875 C 2.9375 -6.265625 2.921875 -6.234375 2.890625 -6.109375 L 1.5625 -0.78125 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.484375 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.078125 0 C 3.15625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.1875 -0.3125 2.984375 -0.3125 C 2.625 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.078125 -3.375 L 5.390625 -0.640625 C 5.296875 -0.3125 5.109375 -0.3125 4.484375 -0.3125 C 4.34375 -0.3125 4.25 -0.3125 4.25 -0.109375 C 4.25 0 4.390625 0 4.390625 0 L 5.65625 -0.03125 L 6.296875 -0.015625 C 6.515625 -0.015625 6.734375 0 6.9375 0 C 7.015625 0 7.140625 0 7.140625 -0.203125 Z M 7.140625 -0.203125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-1">
|
||||
<path d="M 7.171875 -2.609375 C 7.171875 -2.671875 7.109375 -2.71875 7.03125 -2.71875 C 6.8125 -2.71875 6.21875 -2.6875 6 -2.6875 L 4.59375 -2.71875 C 4.515625 -2.71875 4.390625 -2.71875 4.390625 -2.515625 C 4.390625 -2.40625 4.46875 -2.40625 4.6875 -2.40625 C 4.6875 -2.40625 4.984375 -2.40625 5.21875 -2.390625 C 5.46875 -2.359375 5.53125 -2.328125 5.53125 -2.203125 C 5.53125 -2.109375 5.421875 -1.65625 5.3125 -1.296875 C 5.03125 -0.203125 3.75 -0.09375 3.40625 -0.09375 C 2.4375 -0.09375 1.40625 -0.65625 1.40625 -2.171875 C 1.40625 -2.484375 1.5 -4.125 2.546875 -5.421875 C 3.078125 -6.09375 4.046875 -6.703125 5.03125 -6.703125 C 6.046875 -6.703125 6.625 -5.9375 6.625 -4.78125 C 6.625 -4.375 6.59375 -4.375 6.59375 -4.265625 C 6.59375 -4.171875 6.703125 -4.171875 6.75 -4.171875 C 6.875 -4.171875 6.875 -4.1875 6.921875 -4.375 L 7.546875 -6.90625 C 7.546875 -6.9375 7.53125 -7 7.4375 -7 C 7.40625 -7 7.40625 -7 7.296875 -6.890625 L 6.59375 -6.125 C 6.515625 -6.265625 6.046875 -7 4.953125 -7 C 2.734375 -7 0.5 -4.8125 0.5 -2.5 C 0.5 -0.921875 1.59375 0.21875 3.203125 0.21875 C 3.640625 0.21875 4.09375 0.125 4.453125 -0.015625 C 4.953125 -0.21875 5.140625 -0.421875 5.3125 -0.625 C 5.40625 -0.375 5.671875 -0.015625 5.765625 -0.015625 C 5.8125 -0.015625 5.828125 -0.046875 5.828125 -0.046875 C 5.859375 -0.0625 5.953125 -0.453125 6 -0.65625 L 6.1875 -1.421875 C 6.234375 -1.59375 6.28125 -1.765625 6.3125 -1.921875 C 6.421875 -2.375 6.4375 -2.390625 7 -2.40625 C 7.0625 -2.40625 7.171875 -2.421875 7.171875 -2.609375 Z M 7.171875 -2.609375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-2">
|
||||
<path d="M 5.78125 -2.375 C 5.890625 -2.796875 6 -3.296875 6 -3.703125 C 6 -3.953125 5.953125 -4.171875 5.796875 -4.296875 C 5.75 -4.359375 5.671875 -4.390625 5.578125 -4.390625 C 5.453125 -4.390625 5.328125 -4.328125 5.234375 -4.234375 C 5.140625 -4.140625 5.09375 -4.03125 5.09375 -3.921875 C 5.09375 -3.8125 5.125 -3.734375 5.203125 -3.671875 C 5.453125 -3.453125 5.578125 -3.140625 5.578125 -2.796875 C 5.578125 -2.671875 5.5625 -2.546875 5.53125 -2.421875 C 5.3125 -1.515625 4.734375 -0.609375 3.9375 -0.609375 C 3.390625 -0.609375 3.0625 -0.984375 2.96875 -1.5 C 3.09375 -1.78125 3.203125 -2.078125 3.265625 -2.375 C 3.296875 -2.46875 3.3125 -2.546875 3.3125 -2.640625 C 3.3125 -2.78125 3.265625 -2.890625 3.125 -2.890625 C 2.9375 -2.890625 2.828125 -2.640625 2.78125 -2.421875 C 2.703125 -2.109375 2.65625 -1.8125 2.65625 -1.53125 C 2.328125 -1 1.84375 -0.609375 1.296875 -0.609375 C 0.703125 -0.609375 0.4375 -1.109375 0.4375 -1.734375 C 0.4375 -1.921875 0.46875 -2.15625 0.515625 -2.375 C 0.671875 -2.96875 1.03125 -3.53125 1.40625 -4.046875 C 1.4375 -4.09375 1.453125 -4.140625 1.453125 -4.1875 C 1.453125 -4.25 1.40625 -4.296875 1.359375 -4.328125 C 1.328125 -4.34375 1.296875 -4.34375 1.265625 -4.34375 C 1.21875 -4.34375 1.140625 -4.3125 1.09375 -4.25 C 0.6875 -3.6875 0.4375 -3.046875 0.28125 -2.421875 C 0.171875 -2.046875 0.125 -1.65625 0.125 -1.3125 C 0.125 -0.5 0.421875 0.109375 1.171875 0.109375 C 1.796875 0.109375 2.3125 -0.328125 2.6875 -0.9375 C 2.796875 -0.328125 3.15625 0.109375 3.8125 0.109375 C 4.84375 0.109375 5.46875 -1.171875 5.78125 -2.375 Z M 5.78125 -2.375 "/>
|
||||
</g>
|
||||
<g id="glyph-3-3">
|
||||
<path d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.3125 -1.515625 5.28125 -1.515625 C 5.171875 -1.515625 5.171875 -1.484375 5.140625 -1.34375 C 5 -0.78125 4.8125 -0.109375 4.390625 -0.109375 C 4.1875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.5625 -2.671875 C 4.59375 -2.828125 4.6875 -3.203125 4.734375 -3.34375 C 4.78125 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.59375 -4.28125 C 4.546875 -4.28125 4.28125 -4.265625 4.203125 -3.9375 L 3.453125 -0.9375 C 3.453125 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.421875 -3.390625 2.421875 -3.578125 C 2.421875 -4.03125 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.8125 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.65625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.765625 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.3125 -0.34375 3.484375 -0.5625 C 3.59375 -0.15625 3.9375 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-4">
|
||||
<path d="M 5.671875 -1.421875 C 5.671875 -1.515625 5.578125 -1.515625 5.5625 -1.515625 C 5.453125 -1.515625 5.453125 -1.484375 5.40625 -1.34375 C 5.203125 -0.671875 4.875 -0.109375 4.390625 -0.109375 C 4.21875 -0.109375 4.15625 -0.203125 4.15625 -0.4375 C 4.15625 -0.6875 4.25 -0.921875 4.328125 -1.140625 C 4.515625 -1.671875 4.9375 -2.765625 4.9375 -3.328125 C 4.9375 -4 4.515625 -4.390625 3.796875 -4.390625 C 2.90625 -4.390625 2.421875 -3.75 2.25 -3.53125 C 2.203125 -4.078125 1.78125 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.59375 -3.828125 C 0.421875 -3.484375 0.28125 -2.90625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.703125 0.9375 -4.171875 1.296875 -4.171875 C 1.5 -4.171875 1.609375 -4.046875 1.609375 -3.71875 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.875 L 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.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.1875 1.5625 -0.65625 1.625 -0.90625 L 1.84375 -1.796875 C 1.90625 -2.015625 1.96875 -2.234375 2.015625 -2.46875 L 2.140625 -2.96875 C 2.296875 -3.265625 2.828125 -4.171875 3.765625 -4.171875 C 4.21875 -4.171875 4.296875 -3.8125 4.296875 -3.484375 C 4.296875 -2.859375 3.8125 -1.59375 3.65625 -1.15625 C 3.5625 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.90625 0.109375 4.375 0.109375 C 5.3125 0.109375 5.671875 -1.34375 5.671875 -1.421875 Z M 5.671875 -1.421875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-5">
|
||||
<path d="M 4.828125 -3.78125 C 4.875 -3.921875 4.875 -3.9375 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.484375 -4.28125 4.328125 -4.21875 4.234375 -4.078125 C 4.21875 -4.03125 4.140625 -3.71875 4.09375 -3.53125 L 3.890625 -2.75 L 3.453125 -0.953125 C 3.40625 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.921875 C 1.703125 -1.375 1.875 -1.984375 2.21875 -2.859375 C 2.375 -3.265625 2.421875 -3.375 2.421875 -3.578125 C 2.421875 -4.03125 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.875 1.234375 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.171875 1.8125 -3.859375 C 1.8125 -3.609375 1.71875 -3.34375 1.65625 -3.15625 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.28125 0.109375 C 2.671875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.15625 0.171875 3.046875 0.671875 2.640625 1.1875 C 2.390625 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.96875 1.78125 0.796875 1.40625 C 0.953125 1.40625 1.078125 1.40625 1.21875 1.28125 C 1.328125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.578125 2.03125 3.59375 1.140625 3.875 0.015625 Z M 4.828125 -3.78125 "/>
|
||||
</g>
|
||||
<g id="glyph-3-6">
|
||||
<path d="M 4.328125 -3.75 C 4.328125 -4.09375 4.015625 -4.390625 3.515625 -4.390625 C 2.859375 -4.390625 2.421875 -3.90625 2.234375 -3.625 C 2.15625 -4.078125 1.796875 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.59375 -3.828125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.703125 0.9375 -4.171875 1.296875 -4.171875 C 1.46875 -4.171875 1.609375 -4.09375 1.609375 -3.71875 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.875 L 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.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.84375 -1.734375 L 2.15625 -3.03125 C 2.203125 -3.15625 2.46875 -3.625 2.71875 -3.84375 C 2.796875 -3.921875 3.078125 -4.171875 3.515625 -4.171875 C 3.765625 -4.171875 3.921875 -4.046875 3.921875 -4.046875 C 3.625 -4 3.40625 -3.765625 3.40625 -3.515625 C 3.40625 -3.34375 3.515625 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.328125 -3.390625 4.328125 -3.75 Z M 4.328125 -3.75 "/>
|
||||
</g>
|
||||
<g id="glyph-3-7">
|
||||
<path d="M 4.953125 -1.421875 C 4.953125 -1.515625 4.859375 -1.515625 4.828125 -1.515625 C 4.734375 -1.515625 4.71875 -1.484375 4.6875 -1.34375 C 4.515625 -0.703125 4.34375 -0.109375 3.9375 -0.109375 C 3.671875 -0.109375 3.640625 -0.375 3.640625 -0.5625 C 3.640625 -0.8125 3.65625 -0.875 3.703125 -1.046875 L 5.125 -6.78125 C 5.125 -6.78125 5.125 -6.890625 5 -6.890625 C 4.84375 -6.890625 3.90625 -6.8125 3.734375 -6.78125 C 3.65625 -6.78125 3.59375 -6.734375 3.59375 -6.59375 C 3.59375 -6.484375 3.6875 -6.484375 3.828125 -6.484375 C 4.3125 -6.484375 4.328125 -6.40625 4.328125 -6.3125 L 4.296875 -6.109375 L 3.703125 -3.75 C 3.53125 -4.125 3.234375 -4.390625 2.796875 -4.390625 C 1.625 -4.390625 0.390625 -2.9375 0.390625 -1.484375 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.921875 0.109375 2.421875 0.0625 3.015625 -0.640625 C 3.09375 -0.21875 3.4375 0.109375 3.921875 0.109375 C 4.265625 0.109375 4.484375 -0.125 4.65625 -0.4375 C 4.8125 -0.796875 4.953125 -1.421875 4.953125 -1.421875 Z M 3.5625 -3.125 L 3.0625 -1.1875 C 3.015625 -1 3.015625 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.25 -0.109375 1.109375 -0.65625 1.109375 -1.046875 C 1.109375 -1.546875 1.421875 -2.765625 1.65625 -3.21875 C 1.953125 -3.8125 2.40625 -4.171875 2.796875 -4.171875 C 3.453125 -4.171875 3.59375 -3.359375 3.59375 -3.296875 C 3.59375 -3.234375 3.5625 -3.1875 3.5625 -3.125 Z M 3.5625 -3.125 "/>
|
||||
</g>
|
||||
<g id="glyph-4-0">
|
||||
<path d="M 5.453125 -1.734375 C 5.453125 -1.90625 5.296875 -1.90625 5.1875 -1.90625 L 1.015625 -1.90625 C 0.90625 -1.90625 0.75 -1.90625 0.75 -1.734375 C 0.75 -1.578125 0.921875 -1.578125 1.015625 -1.578125 L 5.1875 -1.578125 C 5.28125 -1.578125 5.453125 -1.578125 5.453125 -1.734375 Z M 5.453125 -1.734375 "/>
|
||||
</g>
|
||||
<g id="glyph-4-1">
|
||||
<path d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.890625 1.671875 -3.890625 C 1.390625 -3.890625 1.328125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.359375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
|
||||
</g>
|
||||
<g id="glyph-5-0">
|
||||
<path d="M 3.28125 0 L 3.28125 -0.25 L 3.03125 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.5625 L 2.328125 -4.421875 C 2.328125 -4.609375 2.3125 -4.609375 2.125 -4.609375 C 1.671875 -4.171875 1.046875 -4.171875 0.765625 -4.171875 L 0.765625 -3.921875 C 0.921875 -3.921875 1.390625 -3.921875 1.765625 -4.109375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.078125 -0.25 L 0.8125 -0.25 L 0.8125 0 L 2.046875 -0.03125 Z M 3.28125 0 "/>
|
||||
</g>
|
||||
<g id="glyph-5-1">
|
||||
<path d="M 3.59375 -2.21875 C 3.59375 -2.984375 3.5 -3.53125 3.171875 -4.015625 C 2.96875 -4.34375 2.53125 -4.609375 1.96875 -4.609375 C 0.359375 -4.609375 0.359375 -2.71875 0.359375 -2.21875 C 0.359375 -1.71875 0.359375 0.140625 1.96875 0.140625 C 3.59375 0.140625 3.59375 -1.71875 3.59375 -2.21875 Z M 2.953125 -2.3125 C 2.953125 -1.796875 2.953125 -1.28125 2.859375 -0.84375 C 2.71875 -0.203125 2.25 -0.0625 1.96875 -0.0625 C 1.65625 -0.0625 1.234375 -0.25 1.09375 -0.8125 C 1 -1.21875 1 -1.796875 1 -2.3125 C 1 -2.8125 1 -3.34375 1.09375 -3.734375 C 1.25 -4.28125 1.6875 -4.421875 1.96875 -4.421875 C 2.34375 -4.421875 2.71875 -4.1875 2.84375 -3.796875 C 2.953125 -3.40625 2.953125 -2.90625 2.953125 -2.3125 Z M 2.953125 -2.3125 "/>
|
||||
</g>
|
||||
<g id="glyph-6-0">
|
||||
<path d="M 5.546875 -0.140625 C 5.546875 -0.25 5.484375 -0.25 5.3125 -0.25 C 5.203125 -0.25 5.1875 -0.25 5.0625 -0.265625 C 4.90625 -0.28125 4.90625 -0.296875 4.90625 -0.375 C 4.90625 -0.40625 4.921875 -0.484375 4.9375 -0.515625 L 5.84375 -4.1875 C 5.90625 -4.4375 5.921875 -4.5 6.4375 -4.5 C 6.59375 -4.5 6.671875 -4.5 6.671875 -4.65625 C 6.671875 -4.671875 6.65625 -4.75 6.5625 -4.75 C 6.359375 -4.75 5.859375 -4.71875 5.65625 -4.71875 C 5.53125 -4.71875 5.296875 -4.71875 5.171875 -4.734375 C 5.03125 -4.734375 4.875 -4.75 4.734375 -4.75 C 4.6875 -4.75 4.59375 -4.75 4.59375 -4.59375 C 4.59375 -4.5 4.671875 -4.5 4.8125 -4.5 C 4.8125 -4.5 4.953125 -4.5 5.078125 -4.484375 C 5.21875 -4.46875 5.234375 -4.453125 5.234375 -4.390625 C 5.234375 -4.390625 5.234375 -4.34375 5.203125 -4.234375 L 4.796875 -2.59375 L 2.46875 -2.59375 L 2.875 -4.203125 C 2.9375 -4.4375 2.953125 -4.5 3.484375 -4.5 C 3.609375 -4.5 3.6875 -4.5 3.6875 -4.65625 C 3.6875 -4.671875 3.671875 -4.75 3.578125 -4.75 C 3.375 -4.75 2.875 -4.71875 2.671875 -4.71875 C 2.546875 -4.71875 2.3125 -4.71875 2.1875 -4.734375 C 2.046875 -4.734375 1.890625 -4.75 1.75 -4.75 C 1.703125 -4.75 1.609375 -4.75 1.609375 -4.59375 C 1.609375 -4.5 1.6875 -4.5 1.828125 -4.5 C 1.828125 -4.5 1.96875 -4.5 2.09375 -4.484375 C 2.234375 -4.46875 2.25 -4.453125 2.25 -4.390625 C 2.25 -4.390625 2.25 -4.34375 2.21875 -4.234375 L 1.296875 -0.546875 C 1.25 -0.3125 1.234375 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 -0.03125 0.53125 0 0.59375 0 C 0.796875 0 1.296875 -0.03125 1.5 -0.03125 C 1.609375 -0.03125 1.859375 -0.03125 1.96875 -0.015625 C 2.109375 -0.015625 2.28125 0 2.421875 0 C 2.453125 0 2.5625 0 2.5625 -0.140625 C 2.5625 -0.25 2.5 -0.25 2.34375 -0.25 C 2.21875 -0.25 2.203125 -0.25 2.078125 -0.265625 C 1.921875 -0.28125 1.921875 -0.296875 1.921875 -0.375 C 1.921875 -0.375 1.921875 -0.421875 1.953125 -0.515625 L 2.40625 -2.34375 L 4.734375 -2.34375 L 4.28125 -0.546875 C 4.234375 -0.3125 4.21875 -0.25 3.671875 -0.25 C 3.546875 -0.25 3.46875 -0.25 3.46875 -0.109375 C 3.46875 -0.03125 3.515625 0 3.578125 0 C 3.78125 0 4.28125 -0.03125 4.484375 -0.03125 C 4.59375 -0.03125 4.84375 -0.03125 4.953125 -0.015625 C 5.09375 -0.015625 5.265625 0 5.40625 0 C 5.4375 0 5.546875 0 5.546875 -0.140625 Z M 5.546875 -0.140625 "/>
|
||||
</g>
|
||||
<g id="glyph-6-1">
|
||||
<path d="M 5.015625 -1.734375 C 5.015625 -1.75 5 -1.828125 4.890625 -1.828125 C 4.8125 -1.828125 4.796875 -1.796875 4.75 -1.6875 C 4.484375 -1.015625 4.1875 -0.25 2.90625 -0.25 L 2.125 -0.25 C 1.90625 -0.25 1.90625 -0.25 1.90625 -0.3125 C 1.90625 -0.3125 1.90625 -0.359375 1.9375 -0.46875 L 2.859375 -4.171875 C 2.921875 -4.421875 2.953125 -4.5 3.59375 -4.5 C 3.796875 -4.5 3.875 -4.5 3.875 -4.65625 C 3.875 -4.65625 3.859375 -4.75 3.75 -4.75 C 3.59375 -4.75 3.40625 -4.734375 3.234375 -4.734375 L 2.6875 -4.71875 L 2.203125 -4.734375 C 2.0625 -4.734375 1.890625 -4.75 1.75 -4.75 C 1.703125 -4.75 1.609375 -4.75 1.609375 -4.59375 C 1.609375 -4.5 1.6875 -4.5 1.828125 -4.5 C 1.828125 -4.5 1.96875 -4.5 2.09375 -4.484375 C 2.234375 -4.46875 2.25 -4.453125 2.25 -4.390625 C 2.25 -4.390625 2.25 -4.34375 2.21875 -4.234375 L 1.296875 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 0 0.5625 0 0.6875 0 L 4.1875 0 C 4.359375 0 4.359375 0 4.421875 -0.140625 C 4.484375 -0.328125 5.015625 -1.671875 5.015625 -1.734375 Z M 5.015625 -1.734375 "/>
|
||||
</g>
|
||||
<g id="glyph-6-2">
|
||||
<path d="M 3.859375 -2.625 C 3.890625 -2.71875 3.890625 -2.734375 3.890625 -2.78125 C 3.890625 -2.90625 3.78125 -3 3.671875 -3 C 3.59375 -3 3.453125 -2.96875 3.375 -2.828125 C 3.359375 -2.78125 3.296875 -2.5625 3.265625 -2.421875 L 3.125 -1.84375 L 2.84375 -0.734375 C 2.84375 -0.734375 2.53125 -0.125 1.984375 -0.125 C 1.515625 -0.125 1.515625 -0.578125 1.515625 -0.703125 C 1.515625 -1.078125 1.671875 -1.515625 1.890625 -2.046875 C 1.96875 -2.28125 2 -2.359375 2 -2.46875 C 2 -2.8125 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.953125 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.875 1.328125 -2.875 C 1.4375 -2.875 1.5 -2.796875 1.5 -2.625 C 1.5 -2.46875 1.4375 -2.3125 1.390625 -2.21875 C 1.0625 -1.375 1 -1.125 1 -0.8125 C 1 -0.703125 1 -0.375 1.265625 -0.140625 C 1.484375 0.03125 1.765625 0.0625 1.953125 0.0625 C 2.234375 0.0625 2.484375 -0.03125 2.71875 -0.25 C 2.625 0.140625 2.546875 0.4375 2.265625 0.78125 C 2.078125 1 1.796875 1.21875 1.421875 1.21875 C 1.375 1.21875 1.046875 1.21875 0.90625 1 C 1.28125 0.953125 1.28125 0.609375 1.28125 0.609375 C 1.28125 0.390625 1.078125 0.34375 1.015625 0.34375 C 0.828125 0.34375 0.609375 0.484375 0.609375 0.8125 C 0.609375 1.15625 0.9375 1.421875 1.4375 1.421875 C 2.140625 1.421875 2.984375 0.875 3.203125 0 Z M 3.859375 -2.625 "/>
|
||||
</g>
|
||||
</g>
|
||||
<clipPath id="clip-0">
|
||||
<path clip-rule="nonzero" d="M 0 14 L 131 14 L 131 88.519531 L 0 88.519531 Z M 0 14 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-1">
|
||||
<path clip-rule="nonzero" d="M 187 53 L 230 53 L 230 88.519531 L 187 88.519531 Z M 187 53 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-2">
|
||||
<path clip-rule="nonzero" d="M 203 58 L 236 58 L 236 88.519531 L 203 88.519531 Z M 203 58 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-3">
|
||||
<path clip-rule="nonzero" d="M 215 15 L 236.449219 15 L 236.449219 47 L 215 47 Z M 215 15 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-4">
|
||||
<path clip-rule="nonzero" d="M 68 58 L 101 58 L 101 88.519531 L 68 88.519531 Z M 68 58 "/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 0.992188 87.527344 L 129.941406 87.527344 L 129.941406 14.984375 L 0.992188 14.984375 Z M 0.992188 87.527344 "/>
|
||||
<g clip-path="url(#clip-0)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -30.803567 -56.86746 L 98.567467 -56.86746 L 98.567467 15.912809 L -30.803567 15.912809 Z M -30.803567 -56.86746 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-0" x="36.407904" y="10.682257"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-1" x="42.893263" y="10.682257"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-2" x="53.371522" y="10.682257"/>
|
||||
<use xlink:href="#glyph-0-3" x="57.785459" y="10.682257"/>
|
||||
<use xlink:href="#glyph-0-4" x="62.750518" y="10.682257"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-5" x="67.989647" y="10.682257"/>
|
||||
<use xlink:href="#glyph-0-6" x="71.85147" y="10.682257"/>
|
||||
<use xlink:href="#glyph-0-3" x="75.741097" y="10.682257"/>
|
||||
<use xlink:href="#glyph-0-7" x="80.706155" y="10.682257"/>
|
||||
<use xlink:href="#glyph-0-7" x="83.464742" y="10.682257"/>
|
||||
<use xlink:href="#glyph-0-8" x="86.223328" y="10.682257"/>
|
||||
<use xlink:href="#glyph-0-6" x="90.637265" y="10.682257"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.971944 0.00155554 C 6.971944 3.850041 3.852398 6.973506 -0.0000067489 6.973506 C -3.852411 6.973506 -6.971958 3.850041 -6.971958 0.00155554 C -6.971958 -3.850849 -3.852411 -6.974314 -0.0000067489 -6.974314 C 3.852398 -6.974314 6.971944 -3.850849 6.971944 0.00155554 Z M 6.971944 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="27.37246" y="33.751793"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-2-0" x="21.98608" y="45.57412"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 24.482161 -9.161132 L 50.908167 -9.161132 L 50.908167 9.164243 L 24.482161 9.164243 Z M 24.482161 -9.161132 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-0" x="59.405674" y="33.749799"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-4-0" x="68.467033" y="29.501696"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-0" x="74.673636" y="29.501696"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-6-0" x="67.659674" y="36.667256"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 68.912182 -8.502735 L 94.084099 -8.502735 L 94.084099 8.505846 L 68.912182 8.505846 Z M 68.912182 -8.502735 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-1" x="103.692803" y="34.886082"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-4-0" x="111.500264" y="31.282869"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-0" x="117.706867" y="31.282869"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 112.088113 -8.502735 L 134.763609 -8.502735 L 134.763609 8.505846 L 112.088113 8.505846 Z M 112.088113 -8.502735 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-1" x="149.421218" y="34.577093"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-4-1" x="157.228678" y="30.97388"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 166.217728 0.00155554 C 166.217728 3.850041 163.098182 6.973506 159.245777 6.973506 C 155.393373 6.973506 152.269907 3.850041 152.269907 0.00155554 C 152.269907 -3.850849 155.393373 -6.974314 159.245777 -6.974314 C 163.098182 -6.974314 166.217728 -3.850849 166.217728 0.00155554 Z M 166.217728 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="186.097244" y="33.751793"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 215.679688 74.582031 C 215.679688 70.742188 212.566406 67.628906 208.730469 67.628906 C 204.890625 67.628906 201.777344 70.742188 201.777344 74.582031 C 201.777344 78.421875 204.890625 81.53125 208.730469 81.53125 C 212.566406 81.53125 215.679688 78.421875 215.679688 74.582031 Z M 215.679688 74.582031 "/>
|
||||
<g clip-path="url(#clip-1)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 184.586212 -43.879801 C 184.586212 -40.027397 181.462747 -36.903931 177.614262 -36.903931 C 173.761857 -36.903931 170.638392 -40.027397 170.638392 -43.879801 C 170.638392 -47.732206 173.761857 -50.851752 177.614262 -50.851752 C 181.462747 -50.851752 184.586212 -47.732206 184.586212 -43.879801 Z M 184.586212 -43.879801 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="204.403362" y="77.486728"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 26.355457 -52.384092 L 49.034872 -52.384092 L 49.034872 -35.37551 L 26.355457 -35.37551 Z M 26.355457 -52.384092 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-0" x="62.167639" y="77.227576"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-6-1" x="70.421639" y="78.717702"/>
|
||||
</g>
|
||||
<g fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-2-1" x="66.784536" y="55.247477"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 20.684623 -22.270281 L 37.693205 -22.270281 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<g fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-2" x="37.872114" y="54.433141"/>
|
||||
</g>
|
||||
<g fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-5-1" x="44.052895" y="55.923266"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 37.693205 -22.270281 L 37.693205 -14.295059 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055203 0.00116537 L 1.607107 1.682428 L 3.088499 0.00116537 L 1.607107 -1.684017 Z M 6.055203 0.00116537 " transform="matrix(0, -0.996739, -0.996739, 0, 69.266787, 47.922179)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 37.693205 -22.270281 L 37.693205 -30.241584 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054776 -0.00116537 L 1.610598 1.684017 L 3.088071 -0.00116537 L 1.610598 -1.682428 Z M 6.054776 -0.00116537 " transform="matrix(0, 0.996739, 0.996739, 0, 69.266787, 58.160279)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.971944 0.00155554 L 19.348235 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051767 0.00155554 L 1.60759 1.682819 L 3.088982 0.00155554 L 1.60759 -1.683627 Z M 6.051767 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 48.151558, 30.8453)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 51.405884 0.00155554 L 63.782174 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053027 0.00155554 L 1.608849 1.682819 L 3.086323 0.00155554 L 1.608849 -1.683627 Z M 6.053027 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 92.439365, 30.8453)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 94.581815 0.00155554 L 106.954187 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054059 0.00155554 L 1.609881 1.682819 L 3.087354 0.00155554 L 1.609881 -1.683627 Z M 6.054059 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 135.473493, 30.8453)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-3" x="133.429529" y="27.038752"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 135.265245 0.00155554 L 147.637616 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051539 0.00155554 L 1.607362 1.682819 L 3.088754 0.00155554 L 1.607362 -1.683627 Z M 6.051539 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 176.022879, 30.8453)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 189.218503 -43.879801 L 204.428251 -43.879801 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 217.09375 74.582031 L 221.523438 76.257812 L 220.050781 74.582031 L 221.523438 72.902344 Z M 217.09375 74.582031 "/>
|
||||
<g clip-path="url(#clip-2)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053459 0.00114106 L 1.609282 1.682404 L 3.086755 0.00114106 L 1.609282 -1.684041 Z M 6.053459 0.00114106 " transform="matrix(-0.996739, 0, 0, 0.996739, 223.127472, 74.580894)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-4" x="225.688734" y="70.773688"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 177.614262 0.00155554 L 177.614262 -32.27164 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052563 0.00188157 L 1.608385 1.683145 L 3.085859 0.00188157 L 1.608385 -1.6833 Z M 6.052563 0.00188157 " transform="matrix(0, 0.996739, 0.996739, 0, 208.728593, 60.182015)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 210.714844 30.84375 C 210.714844 29.75 209.824219 28.859375 208.730469 28.859375 C 207.632812 28.859375 206.742188 29.75 206.742188 30.84375 C 206.742188 31.941406 207.632812 32.832031 208.730469 32.832031 C 209.824219 32.832031 210.714844 31.941406 210.714844 30.84375 Z M 210.714844 30.84375 "/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 166.217728 0.00155554 L 199.79596 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 234.042969 30.84375 L 229.613281 29.167969 L 231.085938 30.84375 L 229.613281 32.523438 Z M 234.042969 30.84375 "/>
|
||||
<g clip-path="url(#clip-3)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052683 0.00155554 L 1.608505 1.682819 L 3.085979 0.00155554 L 1.608505 -1.683627 Z M 6.052683 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 228.01002, 30.8453)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-5" x="226.424328" y="25.108068"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.608168 0.00155554 L -26.817915 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055324 0.00155554 L 1.607227 1.682819 L 3.08862 0.00155554 L 1.607227 -1.683627 Z M 6.055324 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 17.29645, 30.8453)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-6" x="8.773301" y="27.038752"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 170.638392 -43.879801 L 54.164879 -43.879801 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 82.480469 74.582031 L 86.910156 76.257812 L 85.433594 74.582031 L 86.910156 72.902344 Z M 82.480469 74.582031 "/>
|
||||
<g clip-path="url(#clip-4)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052064 0.00114106 L 1.607886 1.682404 L 3.089278 0.00114106 L 1.607886 -1.684041 Z M 6.052064 0.00114106 " transform="matrix(-0.996739, 0, 0, 0.996739, 88.5128, 74.580894)"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 25.85774 -43.879801 L -0.0000067489 -43.879801 L -0.0000067489 -11.606605 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052968 0.0000067489 L 1.60879 1.68127 L 3.086263 0.0000067489 L 1.60879 -1.681256 Z M 6.052968 0.0000067489 " transform="matrix(0, -0.996739, -0.996739, 0, 31.695319, 45.244169)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 159.245777 11.605797 L 159.245777 26.815545 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053785 0.000127299 L 1.609608 1.68139 L 3.087081 0.000127299 L 1.609608 -1.681136 Z M 6.053785 0.000127299 " transform="matrix(0, 0.996739, 0.996739, 0, 190.421748, 16.446422)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-7" x="194.226652" y="14.818726"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-6-2" x="199.394746" y="16.307855"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 45 KiB |
BIN
paper/figs/detail_control_cf_bode_Kfb.pdf
Normal file
BIN
paper/figs/detail_control_cf_bode_Kfb.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
paper/figs/detail_control_cf_bode_plot_mech_sys.pdf
Normal file
BIN
paper/figs/detail_control_cf_bode_plot_mech_sys.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
paper/figs/detail_control_cf_input_uncertainty.pdf
Normal file
BIN
paper/figs/detail_control_cf_input_uncertainty.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
97
paper/figs/detail_control_cf_input_uncertainty.svg
Normal file
@@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="172.796pt" height="54.393pt" viewBox="0 0 172.796 54.393">
|
||||
<defs>
|
||||
<g>
|
||||
<g id="glyph-0-0">
|
||||
<path d="M 7.109375 -2.578125 C 7.109375 -2.65625 7.0625 -2.6875 6.984375 -2.6875 C 6.75 -2.6875 6.171875 -2.65625 5.9375 -2.65625 L 4.5625 -2.6875 C 4.46875 -2.6875 4.359375 -2.6875 4.359375 -2.5 C 4.359375 -2.390625 4.4375 -2.390625 4.65625 -2.390625 C 4.65625 -2.390625 4.953125 -2.390625 5.171875 -2.359375 C 5.4375 -2.34375 5.484375 -2.3125 5.484375 -2.171875 C 5.484375 -2.09375 5.375 -1.640625 5.28125 -1.28125 C 5 -0.203125 3.71875 -0.09375 3.375 -0.09375 C 2.421875 -0.09375 1.390625 -0.65625 1.390625 -2.15625 C 1.390625 -2.46875 1.484375 -4.09375 2.53125 -5.375 C 3.0625 -6.046875 4.015625 -6.640625 4.984375 -6.640625 C 6 -6.640625 6.578125 -5.890625 6.578125 -4.75 C 6.578125 -4.34375 6.546875 -4.34375 6.546875 -4.234375 C 6.546875 -4.140625 6.65625 -4.140625 6.6875 -4.140625 C 6.828125 -4.140625 6.828125 -4.15625 6.875 -4.34375 L 7.5 -6.859375 C 7.5 -6.875 7.46875 -6.953125 7.390625 -6.953125 C 7.359375 -6.953125 7.34375 -6.9375 7.234375 -6.828125 L 6.546875 -6.078125 C 6.453125 -6.21875 6 -6.953125 4.90625 -6.953125 C 2.71875 -6.953125 0.5 -4.765625 0.5 -2.484375 C 0.5 -0.921875 1.59375 0.21875 3.1875 0.21875 C 3.625 0.21875 4.0625 0.125 4.421875 -0.015625 C 4.90625 -0.21875 5.09375 -0.421875 5.28125 -0.625 C 5.359375 -0.375 5.625 -0.015625 5.71875 -0.015625 C 5.765625 -0.015625 5.78125 -0.046875 5.78125 -0.046875 C 5.8125 -0.0625 5.90625 -0.4375 5.953125 -0.65625 L 6.140625 -1.40625 C 6.1875 -1.578125 6.234375 -1.75 6.265625 -1.90625 C 6.375 -2.359375 6.390625 -2.375 6.953125 -2.390625 C 7 -2.390625 7.109375 -2.390625 7.109375 -2.578125 Z M 7.109375 -2.578125 "/>
|
||||
</g>
|
||||
<g id="glyph-0-1">
|
||||
<path d="M 6.8125 -3.671875 C 6.8125 -4.203125 6.546875 -4.359375 6.375 -4.359375 C 6.125 -4.359375 5.890625 -4.09375 5.890625 -3.890625 C 5.890625 -3.75 5.9375 -3.703125 6.03125 -3.625 C 6.140625 -3.515625 6.390625 -3.25 6.390625 -2.78125 C 6.390625 -2.4375 6.109375 -1.484375 5.84375 -0.96875 C 5.59375 -0.453125 5.25 -0.109375 4.765625 -0.109375 C 4.296875 -0.109375 4.03125 -0.40625 4.03125 -0.96875 C 4.03125 -1.25 4.09375 -1.546875 4.140625 -1.6875 L 4.5625 -3.34375 C 4.609375 -3.5625 4.703125 -3.921875 4.703125 -3.984375 C 4.703125 -4.15625 4.5625 -4.25 4.421875 -4.25 C 4.296875 -4.25 4.125 -4.171875 4.046875 -3.96875 C 4.015625 -3.90625 3.5625 -2.015625 3.484375 -1.765625 C 3.421875 -1.46875 3.40625 -1.296875 3.40625 -1.109375 C 3.40625 -1 3.40625 -0.984375 3.40625 -0.9375 C 3.1875 -0.421875 2.890625 -0.109375 2.5 -0.109375 C 1.71875 -0.109375 1.71875 -0.84375 1.71875 -1 C 1.71875 -1.328125 1.765625 -1.703125 2.234375 -2.921875 C 2.34375 -3.21875 2.390625 -3.359375 2.390625 -3.546875 C 2.390625 -4 2.078125 -4.359375 1.59375 -4.359375 C 0.65625 -4.359375 0.28125 -2.921875 0.28125 -2.84375 C 0.28125 -2.734375 0.40625 -2.734375 0.40625 -2.734375 C 0.5 -2.734375 0.515625 -2.765625 0.5625 -2.921875 C 0.828125 -3.828125 1.21875 -4.140625 1.5625 -4.140625 C 1.640625 -4.140625 1.796875 -4.125 1.796875 -3.8125 C 1.796875 -3.5625 1.703125 -3.296875 1.625 -3.125 C 1.1875 -1.96875 1.078125 -1.515625 1.078125 -1.140625 C 1.078125 -0.234375 1.734375 0.109375 2.46875 0.109375 C 2.640625 0.109375 3.109375 0.109375 3.5 -0.578125 C 3.75 0.046875 4.4375 0.109375 4.734375 0.109375 C 5.46875 0.109375 5.90625 -0.515625 6.15625 -1.109375 C 6.5 -1.875 6.8125 -3.1875 6.8125 -3.671875 Z M 6.8125 -3.671875 "/>
|
||||
</g>
|
||||
<g id="glyph-1-0">
|
||||
<path d="M 2.515625 -4.71875 C 2.578125 -4.875 2.578125 -4.953125 2.578125 -5 C 2.578125 -5.296875 2.3125 -5.515625 2.03125 -5.515625 C 1.640625 -5.515625 1.546875 -5.1875 1.515625 -5.0625 L 0.3125 -0.765625 C 0.3125 -0.71875 0.28125 -0.671875 0.28125 -0.625 C 0.28125 -0.515625 0.546875 -0.4375 0.625 -0.4375 C 0.625 -0.4375 0.6875 -0.4375 0.75 -0.578125 Z M 2.515625 -4.71875 "/>
|
||||
</g>
|
||||
<g id="glyph-2-0">
|
||||
<path d="M 8.015625 -2.96875 C 8.015625 -3.1875 7.828125 -3.1875 7.65625 -3.1875 L 4.5 -3.1875 L 4.5 -6.34375 C 4.5 -6.515625 4.5 -6.71875 4.296875 -6.71875 C 4.078125 -6.71875 4.078125 -6.515625 4.078125 -6.34375 L 4.078125 -3.1875 L 0.921875 -3.1875 C 0.75 -3.1875 0.546875 -3.1875 0.546875 -2.984375 C 0.546875 -2.765625 0.734375 -2.765625 0.921875 -2.765625 L 4.078125 -2.765625 L 4.078125 0.390625 C 4.078125 0.5625 4.078125 0.765625 4.28125 0.765625 C 4.5 0.765625 4.5 0.578125 4.5 0.390625 L 4.5 -2.765625 L 7.65625 -2.765625 C 7.828125 -2.765625 8.015625 -2.765625 8.015625 -2.96875 Z M 8.015625 -2.96875 "/>
|
||||
</g>
|
||||
<g id="glyph-3-0">
|
||||
<path d="M 7.734375 -0.078125 C 7.734375 -0.078125 7.734375 -0.109375 7.6875 -0.203125 L 4.359375 -6.875 C 4.28125 -7.015625 4.265625 -7.0625 4.09375 -7.0625 C 3.9375 -7.0625 3.921875 -7.015625 3.84375 -6.875 L 0.515625 -0.203125 C 0.46875 -0.109375 0.46875 -0.078125 0.46875 -0.078125 C 0.46875 0 0.515625 0 0.6875 0 L 7.515625 0 C 7.6875 0 7.734375 0 7.734375 -0.078125 Z M 6.4375 -0.75 L 1.125 -0.75 L 3.78125 -6.078125 Z M 6.4375 -0.75 "/>
|
||||
</g>
|
||||
<g id="glyph-4-0">
|
||||
<path d="M 3.6875 -4.609375 C 3.6875 -4.671875 3.640625 -4.703125 3.578125 -4.703125 C 3.4375 -4.703125 3.265625 -4.6875 3.125 -4.6875 L 2.65625 -4.671875 L 2.171875 -4.6875 C 2.03125 -4.6875 1.859375 -4.703125 1.703125 -4.703125 C 1.65625 -4.703125 1.5625 -4.703125 1.5625 -4.546875 C 1.5625 -4.453125 1.640625 -4.453125 1.78125 -4.453125 C 1.78125 -4.453125 1.921875 -4.453125 2.046875 -4.4375 C 2.1875 -4.4375 2.234375 -4.421875 2.234375 -4.34375 C 2.234375 -4.3125 2.21875 -4.265625 2.203125 -4.203125 L 1.28125 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.703125 -0.25 C 0.515625 -0.25 0.4375 -0.25 0.4375 -0.09375 C 0.4375 -0.09375 0.4375 0 0.546875 0 C 0.765625 0 1.28125 -0.03125 1.484375 -0.03125 L 1.953125 -0.015625 C 2.109375 -0.015625 2.28125 0 2.4375 0 C 2.46875 0 2.578125 0 2.578125 -0.15625 C 2.578125 -0.25 2.5 -0.25 2.359375 -0.25 C 2.359375 -0.25 2.203125 -0.25 2.0625 -0.265625 C 1.90625 -0.28125 1.90625 -0.296875 1.90625 -0.359375 C 1.90625 -0.359375 1.90625 -0.40625 1.921875 -0.515625 L 2.84375 -4.15625 C 2.90625 -4.390625 2.921875 -4.453125 3.4375 -4.453125 C 3.609375 -4.453125 3.6875 -4.453125 3.6875 -4.609375 Z M 3.6875 -4.609375 "/>
|
||||
</g>
|
||||
</g>
|
||||
<clipPath id="clip-0">
|
||||
<path clip-rule="nonzero" d="M 12 0 L 161 0 L 161 53.792969 L 12 53.792969 Z M 12 0 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-1">
|
||||
<path clip-rule="nonzero" d="M 85 17 L 128 17 L 128 53.792969 L 85 53.792969 Z M 85 17 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-2">
|
||||
<path clip-rule="nonzero" d="M 80 22 L 113 22 L 113 53.792969 L 80 53.792969 Z M 80 22 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-3">
|
||||
<path clip-rule="nonzero" d="M 110 22 L 144 22 L 144 53.792969 L 110 53.792969 Z M 110 22 "/>
|
||||
</clipPath>
|
||||
<clipPath id="clip-4">
|
||||
<path clip-rule="nonzero" d="M 151 22 L 171.742188 22 L 171.742188 53.792969 L 151 53.792969 Z M 151 22 "/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 12.746094 52.804688 L 159.847656 52.804688 L 159.847656 0.988281 L 12.746094 0.988281 Z M 12.746094 52.804688 "/>
|
||||
<g clip-path="url(#clip-0)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -130.926826 -14.978963 L 17.816319 -14.978963 L 17.816319 37.41569 L -130.926826 37.41569 Z M -130.926826 -14.978963 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-0" x="146.105691" y="11.003209"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-1-0" x="153.852829" y="11.003209"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.337464 -8.505172 L 11.338579 -8.505172 L 11.338579 8.502847 L -11.337464 8.502847 Z M -11.337464 -8.505172 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-0" x="138.355183" y="41.35747"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 113.699219 37.992188 C 113.699219 34.183594 110.613281 31.09375 106.804688 31.09375 C 102.996094 31.09375 99.90625 34.183594 99.90625 37.992188 C 99.90625 41.800781 102.996094 44.886719 106.804688 44.886719 C 110.613281 44.886719 113.699219 41.800781 113.699219 37.992188 Z M 113.699219 37.992188 "/>
|
||||
<g clip-path="url(#clip-1)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -28.847113 -0.00116224 C -28.847113 3.849934 -31.967488 6.974259 -35.818584 6.974259 C -39.669679 6.974259 -42.794004 3.849934 -42.794004 -0.00116224 C -42.794004 -3.852258 -39.669679 -6.972633 -35.818584 -6.972633 C -31.967488 -6.972633 -28.847113 -3.852258 -28.847113 -0.00116224 Z M -28.847113 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-2-0" x="102.51514" y="40.874856"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -72.429668 13.93388 L -49.753626 13.93388 L -49.753626 30.941899 L -72.429668 30.941899 Z M -72.429668 13.93388 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-3-0" x="75.446217" y="18.589549"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-4-0" x="83.656593" y="20.06805"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -113.11304 13.93388 L -90.433047 13.93388 L -90.433047 30.941899 L -113.11304 30.941899 Z M -113.11304 13.93388 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-0-1" x="35.792731" y="17.183243"/>
|
||||
</g>
|
||||
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
|
||||
<use xlink:href="#glyph-4-0" x="42.846019" y="18.661744"/>
|
||||
</g>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 20.628906 37.992188 C 20.628906 36.902344 19.746094 36.019531 18.65625 36.019531 C 17.570312 36.019531 16.6875 36.902344 16.6875 37.992188 C 16.6875 39.078125 17.570312 39.960938 18.65625 39.960938 C 19.746094 39.960938 20.628906 39.078125 20.628906 37.992188 Z M 20.628906 37.992188 "/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -124.950716 -0.00116224 L -124.950716 22.43789 L -118.243884 22.43789 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053667 0.000209549 L 1.610095 1.682842 L 3.087336 0.000209549 L 1.610095 -1.682423 Z M 6.053667 0.000209549 " transform="matrix(0.988964, 0, 0, -0.988964, 22.481893, 15.800988)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -141.958735 -0.00116224 L -47.427169 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 98.503906 37.992188 L 94.109375 36.328125 L 95.570312 37.992188 L 94.109375 39.65625 Z M 98.503906 37.992188 "/>
|
||||
<g clip-path="url(#clip-2)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053012 -0.00116224 L 1.60944 1.68147 L 3.086681 -0.00116224 L 1.60944 -1.683795 Z M 6.053012 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 92.517697, 37.991038)"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -89.935367 22.43789 L -77.560513 22.43789 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054999 0.000209549 L 1.607477 1.682842 L 3.088667 0.000209549 L 1.607477 -1.682423 Z M 6.054999 0.000209549 " transform="matrix(0.988964, 0, 0, -0.988964, 62.714952, 15.800988)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -49.255946 22.43789 L -35.818584 22.43789 L -35.818584 11.607423 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053728 0.000466423 L 1.610156 1.683099 L 3.087397 0.000466423 L 1.610156 -1.682166 Z M 6.053728 0.000466423 " transform="matrix(0, 0.988964, 0.988964, 0, 106.804226, 23.704489)"/>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -28.847113 -0.00116224 L -16.472258 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 129.117188 37.992188 L 124.722656 36.328125 L 126.1875 37.992188 L 124.722656 39.65625 Z M 129.117188 37.992188 "/>
|
||||
<g clip-path="url(#clip-3)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051893 -0.00116224 L 1.608321 1.68147 L 3.089512 -0.00116224 L 1.608321 -1.683795 Z M 6.051893 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 123.132085, 37.991038)"/>
|
||||
</g>
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 11.836259 -0.00116224 L 24.211113 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
|
||||
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 169.351562 37.992188 L 164.957031 36.328125 L 166.417969 37.992188 L 164.957031 39.65625 Z M 169.351562 37.992188 "/>
|
||||
<g clip-path="url(#clip-4)">
|
||||
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053225 -0.00116224 L 1.609653 1.68147 L 3.086894 -0.00116224 L 1.609653 -1.683795 Z M 6.053225 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 163.365143, 37.991038)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
BIN
paper/figs/detail_control_cf_nyquist_robustness.pdf
Normal file
BIN
paper/figs/detail_control_cf_nyquist_robustness.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
paper/figs/detail_control_cf_nyquist_uncertainty.pdf
Normal file
BIN
paper/figs/detail_control_cf_nyquist_uncertainty.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
paper/figs/detail_control_cf_robust_perf.pdf
Normal file
BIN
paper/figs/detail_control_cf_robust_perf.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
paper/figs/detail_control_cf_specs_S_T.pdf
Normal file
BIN
paper/figs/detail_control_cf_specs_S_T.png
Normal file
|
After Width: | Height: | Size: 266 KiB |
BIN
paper/figs/detail_control_cf_test_model.pdf
Normal file
BIN
paper/figs/detail_control_cf_test_model.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
4
paper/preamble.tex
Normal file
@@ -0,0 +1,4 @@
|
||||
\usepackage{amssymb}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{cases}
|
||||
\usepackage{empheq}
|
||||
34
paper/preamble_extra.tex
Normal file
@@ -0,0 +1,34 @@
|
||||
\usepackage{float}
|
||||
\usepackage{enumitem}
|
||||
|
||||
\usepackage{xpatch} % Recommanded for biblatex
|
||||
\usepackage[ % use biblatex for bibliography
|
||||
backend=biber, % use biber backend (bibtex replacement) or bibtex
|
||||
style=ieee, % bib style
|
||||
hyperref=true, % activate hyperref support
|
||||
backref=true, % activate backrefs
|
||||
isbn=false, % don't show isbn tags
|
||||
url=false, % don't show url tags
|
||||
doi=false, % don't show doi tags
|
||||
urldate=long, % display type for dates
|
||||
maxnames=3, %
|
||||
minnames=1, %
|
||||
maxbibnames=5, %
|
||||
minbibnames=3, %
|
||||
maxcitenames=2, %
|
||||
mincitenames=1 %
|
||||
]{biblatex}
|
||||
|
||||
\setlength\bibitemsep{1.1\itemsep}
|
||||
|
||||
\usepackage{caption}
|
||||
\usepackage{subcaption}
|
||||
|
||||
% \makeatletter
|
||||
% \preto\Gin@extensions{png,}
|
||||
% \DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf}
|
||||
% \preto\Gin@extensions{gif,}
|
||||
% \DeclareGraphicsRule{.gif}{png}{.png}{\noexpand\Gin@base.png}
|
||||
% \makeatother
|
||||
|
||||
\usepackage{hypcap}
|
||||