Skip to content
Snippets Groups Projects
Commit 82b5a02a authored by paul.albuquer's avatar paul.albuquer
Browse files
Il n'y a pas de changement significatif, juste des corrections
orthographiques
parents 501f5499 1c5a76ea
No related branches found
No related tags found
No related merge requests found
......@@ -185,7 +185,7 @@ On défile jusqu'à ce que la file soit vide!
. . .
*piler?
*filer?
. . .
......@@ -244,7 +244,7 @@ typedef struct _queue {
```
* Empiler?
* Enfiler?
. . .
......@@ -255,7 +255,7 @@ typedef struct _queue {
```
*piler?
*filer?
. . .
......@@ -290,7 +290,7 @@ typedef struct _queue {
```
* Empiler?
* Enfiler?
. . .
......@@ -301,7 +301,7 @@ typedef struct _queue {
```
*piler?
*filer?
. . .
......@@ -348,6 +348,8 @@ typedef struct _queue {
## Enfilage
\footnotesize
```C
void queue_enqueue(queue *fa, int val) {
if ((fa->head == 0 && fa->tail == fa->capacity-1) ||
......@@ -374,7 +376,6 @@ void queue_enqueue(queue *fa, int val) {
## Défilage
```C
// Function to delete element from Circular Queue
void queue_dequeue(queue *fa, int *val) {
if (queue_is_empty(*fa)) {
return; // queue is empty
......@@ -700,8 +701,3 @@ $$
\mathcal{O}(N).
$$
# Liste doublement chaînée
---
title: "Files d'attente et listes triées"
date: "2021-12-22"
patat:
eval:
tai:
command: fish
fragment: false
replace: true
ccc:
command: fish
fragment: false
replace: true
images:
backend: auto
...
# Les listes triées
Une liste chaînée triée est:
* une liste chaînée
* dont les éléments sont insérés dans l'ordre.
![Exemple de liste triée.](./figs/sorted_list_example.svg)
. . .
* L'insertion est faite telle que l'ordre est maintenu.
## Quelle structure de données?
```C
```
# Les listes triées
## Quel but?
* Permet de retrouver rapidement un élément.
* Utile pour la recherche de plus court chemin dans des graphes.
* Ordonnancement de processus par degré de priorité.
## Comment?
* Les implémentations les plus efficaces se basent sur les tableaux.
* Possibles aussi avec des listes chaînées.
# Les listes triées
## Quelle structure de données dans notre cas?
Une liste chaînée bien sûr (oui c'est pour vous entraîner)!
```C
typedef struct _element { // chaque élément
int data;
struct _element *next;
} element;
typedef element* sorted_list; // la liste
```
## Fonctionnalités
```C
// insertion de val
sorted_list sorted_list_push(sorted_list list, int val);
// la liste est-elle vide?
bool is_empty(sorted_list list); // list == NULL
// extraction de val (il disparaît)
sorted_list sorted_list_extract(sorted_list list, int val);
// rechercher un élément et le retourner
element* sorted_list_search(sorted_list list, int val);
```
# L'insertion
## Trois cas
1. La liste est vide.
. . .
![Insertion dans une liste vide, `list == NULL`.](figs/sorted_list_insert_one.svg){width=30%}
. . .
```C
sorted_list sorted_list_push(sorted_list list, int val) {
if (sorted_list_is_empty(list)) {
list = malloc(sizeof(*list));
list->data = val;
list->next = NULL;
return list;
}
}
```
# L'insertion
2. L'insertion se fait en première position.
. . .
![Insertion en tête de liste, `list->data >=
val`.](figs/sorted_list_insert_first.svg){width=80%}
. . .
```C
sorted_list sorted_list_push(sorted_list list, int val) {
if (list->data >= val) {
element *tmp = malloc(sizeof(*tmp));
tmp->data = val;
tmp->next = list;
list = tmp;
return list;
}
}
```
# L'insertion
3. L'insertion se fait sur une autre position que la première.
. . .
![Insertion sur une autre position, list->data <
val.](figs/sorted_list_insert_any.svg){width=70%}
. . .
\footnotesize
```C
sorted_list sorted_list_push(sorted_list list, int val) {
element *tmp = malloc(sizeof(*tmp));
tmp->data = val;
element *crt = list;
while (NULL != crt->next && val > crt->next->data) {
crt = crt->next;
}
tmp->next = crt->next;
crt->next = tmp;
return list;
}
```
# L'extraction
## Trois cas
1. L'élément à extraire n'est **pas** le premier élément de la liste
. . .
![Extraction d'un élément qui n'est pas le premier.](figs/sorted_list_extract_any.svg){width=70%}
. . .
\footnotesize
```C
sorted_list sorted_list_extract(sorted_list list, int val) {
element *prec = *crt = list; // needed to glue elements together
while (NULL != crt && val > crt->data) {
prec = crt;
crt = crt->next;
}
if (NULL != crt && prec != crt && crt->data == val) { // glue things together
prec->next = crt->next;
free(crt);
}
return list;
}
```
# L'extraction
2. L'élément à extraire est le premier élément de la liste
. . .
![Extraction d'un élément qui est le
premier.](figs/sorted_list_extract_first.svg){width=70%}
. . .
\footnotesize
```C
sorted_list sorted_list_extract(sorted_list list, int val) {
element *prec = *crt = list; // needed to glue elements together
while (NULL != crt && val > crt->data) {
prec = crt;
crt = crt->next;
}
if (NULL != crt && crt->data == val && prec == crt) { // glue things together
list = list->next;
free(crt);
}
return list;
}
```
# L'extraction
3. L'élément à extraire n'est **pas** dans la liste.
* La liste est vide.
* La valeur est plus grande que le dernier élément de la liste.
* La valeur est plus petite que la valeur de `crt`.
. . .
On retourne la liste inchangée.
. . .
\footnotesize
```C
sorted_list sorted_list_extract(sorted_list list, int val) {
element *prec = *crt = list; // needed to glue elements together
while (NULL != crt && val > crt->data) {
prec = crt;
crt = crt->next;
}
if (NULL == crt || crt->data != val) { // val not present
return list;
}
}
```
# La recherche
```C
element* sorted_list_search(sorted_list list, int val);
```
* Retourne `NULL` si la valeur n'est pas présente (ou la liste vide).
* Retourne un pointeur vers l'élément si la valeur est présente.
. . .
```C
element* sorted_list_search(sorted_list list, int val) {
// search for element smaller than val
element* pos = sorted_list_position(list, val);
if (NULL == pos && val == list->data) {
return list; // first element contains val
} else if (NULL != pos->next && val == pos->next->data) {
return pos->next; // non-first element contains val
} else {
return NULL; // well... val's not here
}
}
```
# La recherche
## La fonction `sorted_list_position`
```C
element* sorted_list_position(sorted_list list, int val);
```
![Trois exemples de retour de la fonction `sorted_list_position()`.](figs/sorted_list_position.svg)
# La recherche
## Exercice: implémenter
```C
element* sorted_list_position(sorted_list list, int val);
```
. . .
```C
element* sorted_list_position(sorted_list list, int val) {
element* pos = list;
if (sorted_list_is_empty(list) || val <= list->data) {
pos = NULL;
} else {
while (NULL != pos->next && val > pos->next>data) {
pos = pos->next;
}
}
return pos;
}
```
# Complexité de la liste chaînée triée
## L'insertion?
. . .
$$
\mathcal{O}(N).
$$
## L'extraction?
. . .
$$
\mathcal{O}(N).
$$
## La recherche?
. . .
$$
\mathcal{O}(N).
$$
# Liste doublement chaînée
## Application navigateur ou éditeur de texte
* Avec une liste chaînée:
* Comment implémenter les fonctions `back` et `forward` d'un navigateur??
* Comment implémenter les fonctions `undo` et `redo` d'un éditeur de text?
. . .
Pas possible.
## Solution?
. . .
* Garder un pointeur supplémentaire sur l'élément précédent et pas seulement le
suivant.
. . .
* Cette structure de donnée est la **liste doublement chaînée** ou **doubly
linked list**.
# Liste doublement chaînée
## Exercices
* Partir du dessin suivant et par **groupe de 5**
![Un schéma de liste doublement chaînée d'entiers.](figs/doubly_linked_list.svg)
1. Écrire les structures de données pour représenter la liste doublement
chaînée dont le type sera `dll` (pour
`doubly_linked_list`)
# Liste doublement chaînée
2. Écrire les fonctionnalités de création et consultation
```C
// crée la liste doublement chaînée
dll dll_create();
// retourne la valeur à la position actuelle dans la liste
int dll_value(dll list);
// la liste est-elle vide?
bool dll_is_empty(dll list);
// Est-ce que pos est le 1er élément?
bool dll_is_head(dll list);
// Est-ce que pos est le dernier élément?
bool dll_is_tail(dll list);
// data est-elle dans la liste?
bool dll_is_present(dll list, int data);
// affiche la liste
void dll_print(dll list);
```
# Liste doublement chaînée
3. Écrire les fonctionnalités de manipulation
```C
// déplace pos au début de la liste
list dll_move_to_head(dll list);
// déplace pos à la position suivante dans la liste
dll dll_next(dll list);
// déplace pos à la position précédente dans la liste
dll dll_prev(dll list);
```
# Liste doublement chaînée
4. Écrire les fonctionnalités d'insertion
```C
// insertion de data dans l'élément *après* pos
dll dll_insert_after(dll list, int data);
// insertion de data en tête de liste
dll dll_push(dll list, int data);
```
5. Écrire les fonctionnalités d'extraction
```C
// extraction de la valeur se trouvant dans l'élément *pos*
// l'élément *pos* est libéré
int dll_extract(dll *list);
// extrait la donnée en tête de liste
int dll_pop(dll *list);
// vide la liste
void dll_destroy(dll *list)
```
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="385.21741mm"
height="78.418839mm"
viewBox="0 0 385.21741 78.418839"
version="1.1"
id="svg5"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
sodipodi:docname="doubly_linked_list.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.47433592"
inkscape:cx="952.91118"
inkscape:cy="365.77453"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<defs
id="defs2">
<linearGradient
id="linearGradient27181"
inkscape:swatch="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop27179" />
</linearGradient>
<marker
style="overflow:visible"
id="Arrow2Lend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-1"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-27" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6-9"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2-3" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6-9-0"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2-3-6" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-61"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-8" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-9"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-20" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6-9-0-2"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2-3-6-3" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-93"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-1" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6-9-0-9"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2-3-6-4" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-5"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-5" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6-9-0-4"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2-3-6-7" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-3"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-0" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6-9-0-7"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2-3-6-8" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-2"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-6" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6-9-0-6"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2-3-6-49" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-15"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-9" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-6-9-0-49"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-2-3-6-0" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-63"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-94" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-12"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-93" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-63-9"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-94-0" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-8"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-4" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-63-8"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-94-1" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-8-9"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-4-6" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-63-8-2"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-94-1-1" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-8-8"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-4-3" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-63-8-1"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-94-1-8" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-8-7"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-4-7" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-63-8-6"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-94-1-4" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-63-8-1-5"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-94-1-8-4" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Lend-63-8-1-1"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.625;stroke-linejoin:round"
id="path5453-94-1-8-2" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(8.5735273,-162.33534)">
<g
id="g31034">
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect43"
width="26.817299"
height="21.512512"
x="43.79332"
y="162.83534" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3"
width="19.720016"
height="21.512497"
x="70.592087"
y="162.83534" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-5"
width="19.720016"
height="21.512497"
x="24.073303"
y="162.83536" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="49.381596"
y="170.55223"
id="text2533"><tspan
sodipodi:role="line"
id="tspan2531"
style="font-size:7.05556px;stroke-width:0.264583"
x="49.381596"
y="170.55223">data</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="72.400902"
y="176.01866"
id="text2533-6"><tspan
sodipodi:role="line"
id="tspan2531-7"
style="font-size:7.05556px;stroke-width:0.264583"
x="72.400902"
y="176.01866">next</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="25.847668"
y="174.83356"
id="text2533-5"><tspan
sodipodi:role="line"
id="tspan2531-3"
style="font-size:7.05556px;stroke-width:0.264583"
x="25.847668"
y="174.83356">prev</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
d="M 32.566534,179.81541 H 7.1177008"
id="path5430"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-63)"
d="M 81.846967,167.73425 H 107.2958"
id="path5430-8"
sodipodi:nodetypes="cc" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect43-0"
width="26.817299"
height="21.512512"
x="128.29239"
y="162.83534" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-4"
width="19.720016"
height="21.512497"
x="155.09116"
y="162.83534" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-5-4"
width="19.720016"
height="21.512497"
x="108.57237"
y="162.83536" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="133.88066"
y="170.55223"
id="text2533-4"><tspan
sodipodi:role="line"
id="tspan2531-4"
style="font-size:7.05556px;stroke-width:0.264583"
x="133.88066"
y="170.55223">data</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="156.89996"
y="176.01866"
id="text2533-6-7"><tspan
sodipodi:role="line"
id="tspan2531-7-6"
style="font-size:7.05556px;stroke-width:0.264583"
x="156.89996"
y="176.01866">next</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="110.34673"
y="174.83356"
id="text2533-5-3"><tspan
sodipodi:role="line"
id="tspan2531-3-1"
style="font-size:7.05556px;stroke-width:0.264583"
x="110.34673"
y="174.83356">prev</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-8)"
d="M 117.0656,179.81541 H 91.616768"
id="path5430-7"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-63-8)"
d="m 166.34603,167.73425 h 25.44884"
id="path5430-8-5"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-8-7)"
d="M 112.23011,218.63392 60.009485,185.36325"
id="path5430-7-4"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-63-8-6)"
d="m 141.44144,218.73827 72.28584,-33.4172"
id="path5430-8-5-6"
sodipodi:nodetypes="cc" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect43-0-5"
width="26.817299"
height="21.512512"
x="212.85204"
y="162.83534" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-4-7"
width="19.720016"
height="21.512497"
x="239.6508"
y="162.83534" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-5-4-4"
width="19.720016"
height="21.512497"
x="193.13202"
y="162.83536" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="218.44032"
y="170.55223"
id="text2533-4-1"><tspan
sodipodi:role="line"
id="tspan2531-4-8"
style="font-size:7.05556px;stroke-width:0.264583"
x="218.44032"
y="170.55223">data</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="241.45963"
y="176.01866"
id="text2533-6-7-5"><tspan
sodipodi:role="line"
id="tspan2531-7-6-9"
style="font-size:7.05556px;stroke-width:0.264583"
x="241.45963"
y="176.01866">next</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="194.90639"
y="174.83356"
id="text2533-5-3-7"><tspan
sodipodi:role="line"
id="tspan2531-3-1-5"
style="font-size:7.05556px;stroke-width:0.264583"
x="194.90639"
y="174.83356">prev</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-8-9)"
d="M 201.62525,179.81541 H 176.17642"
id="path5430-7-3"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-63-8-2)"
d="m 250.90569,167.73425 h 25.44883"
id="path5430-8-5-8"
sodipodi:nodetypes="cc" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect43-0-4"
width="26.817299"
height="21.512512"
x="297.36826"
y="162.83534" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-4-3"
width="19.720016"
height="21.512497"
x="324.16702"
y="162.83534" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-5-4-3"
width="19.720016"
height="21.512497"
x="277.64822"
y="162.83536" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="302.95651"
y="170.55223"
id="text2533-4-3"><tspan
sodipodi:role="line"
id="tspan2531-4-86"
style="font-size:7.05556px;stroke-width:0.264583"
x="302.95651"
y="170.55223">data</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="325.97583"
y="176.01866"
id="text2533-6-7-0"><tspan
sodipodi:role="line"
id="tspan2531-7-6-4"
style="font-size:7.05556px;stroke-width:0.264583"
x="325.97583"
y="176.01866">next</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="279.42261"
y="174.83356"
id="text2533-5-3-8"><tspan
sodipodi:role="line"
id="tspan2531-3-1-8"
style="font-size:7.05556px;stroke-width:0.264583"
x="279.42261"
y="174.83356">prev</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-8-8)"
d="M 286.14146,179.81541 H 260.69263"
id="path5430-7-8"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-63-8-1)"
d="m 335.4219,167.73425 h 25.44883"
id="path5430-8-5-9"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend-63-8-1-1)"
d="M 38.063478,229.50673 H 96.051494"
id="path5430-8-5-9-8"
sodipodi:nodetypes="cc" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-4-0"
width="30.466314"
height="21.512512"
x="127.86939"
y="218.74167" />
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-4-0-2"
width="30.466314"
height="21.512512"
x="97.403076"
y="218.74167" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="136.71878"
y="232.0807"
id="text19798"><tspan
sodipodi:role="line"
id="tspan19796"
style="font-size:7.05556px;stroke-width:0.264583"
x="136.71878"
y="232.0807">pos</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="103.82884"
y="232.12825"
id="text21012"><tspan
sodipodi:role="line"
id="tspan21010"
style="font-size:7.05556px;stroke-width:0.264583"
x="103.82884"
y="232.12825">head</tspan></text>
<g
id="g23095"
transform="translate(0.63181235,-8.3387299)">
<rect
style="fill:none;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-4-0-2-2"
width="30.466314"
height="21.512512"
x="6.8544922"
y="227.0804" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="16.658175"
y="240.46698"
id="text22622"><tspan
sodipodi:role="line"
id="tspan22620"
style="font-size:7.05556px;stroke-width:0.264583"
x="16.658175"
y="240.46698">list</tspan></text>
</g>
<g
id="g27724">
<rect
style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-4-0-9"
width="13.974364"
height="21.512512"
x="-8.0735273"
y="162.83534" />
<path
style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000205;stroke-width:0.704282;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none"
d="M -28.32387,656.10754 V 617.5349 H -4.0995075 20.124855 v 38.57264 38.57264 H -4.0995075 -28.32387 Z"
id="path27327"
transform="scale(0.26458333)" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M -7.7213419,184.34785 5.8332385,176.52211"
id="path27399" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.9008369,162.83534 -13.6897772,7.9038"
id="path27401" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.9008369,167.3846 -13.6897772,7.9038"
id="path27401-3" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.9008369,171.93383 -13.6897772,7.9038"
id="path27401-6" />
</g>
<g
id="g27724-8"
transform="translate(370.24303)">
<rect
style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000205;stroke-width:1;stroke-linecap:square"
id="rect984-3-4-0-9-0"
width="13.974364"
height="21.512512"
x="-8.0735273"
y="162.83534" />
<path
style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000205;stroke-width:0.704282;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none"
d="M -28.32387,656.10754 V 617.5349 H -4.0995075 20.124855 v 38.57264 38.57264 H -4.0995075 -28.32387 Z"
id="path27327-2"
transform="scale(0.26458333)" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M -7.7213419,184.34785 5.8332385,176.52211"
id="path27399-1" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.9008369,162.83534 -13.6897772,7.9038"
id="path27401-0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.9008369,167.3846 -13.6897772,7.9038"
id="path27401-3-5" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 5.9008369,171.93383 -13.6897772,7.9038"
id="path27401-6-1" />
</g>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="54.971268"
y="180.15842"
id="text2533-46"><tspan
sodipodi:role="line"
id="tspan2531-2"
style="font-size:7.05556px;stroke-width:0.264583"
x="54.971268"
y="180.15842">3</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="137.17761"
y="180.20837"
id="text2533-46-5"><tspan
sodipodi:role="line"
id="tspan2531-2-8"
style="font-size:7.05556px;stroke-width:0.264583"
x="137.17761"
y="180.20837">12</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="224.03"
y="180.15842"
id="text2533-46-6"><tspan
sodipodi:role="line"
id="tspan2531-2-2"
style="font-size:7.05556px;stroke-width:0.264583"
x="224.03"
y="180.15842">3</tspan></text>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:0;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="308.5083"
y="180.15842"
id="text2533-46-8"><tspan
sodipodi:role="line"
id="tspan2531-2-4"
style="font-size:7.05556px;stroke-width:0.264583"
x="308.5083"
y="180.15842">6</tspan></text>
</g>
</g>
</svg>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment