Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
start removing from doc/ what's converted in docs/
authorMartin Quinson <martin.quinson@loria.fr>
Fri, 24 Aug 2018 07:37:27 +0000 (09:37 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Fri, 24 Aug 2018 07:54:33 +0000 (09:54 +0200)
21 files changed:
doc/doxygen/application.doc
doc/doxygen/getting_started.doc [deleted file]
doc/doxygen/models.doc [deleted file]
doc/doxygen/scenario.doc [deleted file]
doc/tuto-msg/Makefile [deleted file]
doc/tuto-msg/deployment0.xml [deleted file]
doc/tuto-msg/deployment1.xml [deleted file]
doc/tuto-msg/deployment2.xml [deleted file]
doc/tuto-msg/deployment3.xml [deleted file]
doc/tuto-msg/deployment_general.xml [deleted file]
doc/tuto-msg/masterworker-sol1.c [deleted file]
doc/tuto-msg/masterworker-sol2.c [deleted file]
doc/tuto-msg/masterworker-sol3.c [deleted file]
doc/tuto-msg/masterworker-sol4.c [deleted file]
doc/tuto-msg/masterworker.c [deleted file]
doc/tuto-msg/overview.svg [deleted file]
doc/tuto-msg/tuto-msg.doc [deleted file]
docs/source/application.rst
docs/source/models.rst
docs/source/scenario.rst
tools/cmake/DefinePackages.cmake

index 1bfb58a..af5fe1d 100644 (file)
@@ -1,28 +1,6 @@
 /** 
 @page application Describing your application
 
-TBD
-
-* Main concepts
-
-  - *Actor* (or process in legacy interfaces of SimGrid)
-  
-  - *Activities*: resource usage that applications do. This is what
-    takes time.
-    
-    Any given actor can do at most one foreground activity, while it
-    can also do several non-blocking activities in the background.
-    
-  - These activities take place on *Resources* (links, compute
-    machine, disks). Resources should be described (created) in the
-    Virtual Platform (link), but your application have many other ways
-    to interact with the resource.  
-
-  - The resources are arranged in a hierarchy of *Networking Zones*,
-    with which the application can also interact. The netzone knows the
-    networking path between one resource to another.
-
-Speak of mailboxes here? Where if not?
 
 * Interfaces to describe applications
 
diff --git a/doc/doxygen/getting_started.doc b/doc/doxygen/getting_started.doc
deleted file mode 100644 (file)
index f7a049a..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-/*! @page getting_started Getting Started: SimGrid Main Concepts
-
-@tableofcontents
-
-SimGrid is a framework to simulate distributed computer systems. 
-
-It can be used to either assess abstract algorithms, or to profile and
-debug real distributed applications.  SimGrid enables studies in the
-domains of (data-)Grids, IaaS Clouds, Clusters, High Performance
-Computing, Volunteer Computing and Peer-to-Peer systems.
-
-Technically speaking, SimGrid is a library. It is neither a graphical
-interface nor a command-line simulator running user scripts. The
-interaction with SimGrid is done by writing programs with the exposed
-functions to build your own simulator.
-
-SimGrid offers many features, many options and many possibilities. The
-documentation aims at smoothing the learning curve. But nothing's
-perfect, and this documentation is really no exception here. Please
-help us improving it by reporting any issue that you see and
-proposing the content that is still missing.
-
-SimGrid is a Free Software distributed under the LGPL licence. You are
-thus welcome to use it as you wish, or even to modify and distribute
-your version (as long as your version is as free as ours). It also
-means that SimGrid is developed by a vivid community of users and
-developers. We hope that you will come and join us!
-
-SimGrid is the result of almost 20 years of research from several
-groups, both in France and in the USA. It benefited of many funding
-from various research instances, including the ANR, Inria, CNRS,
-University of Lorraine, University of Hawai'i at Manoa, ENS Rennes and
-many others. Many thanks to our generous sponsors!
-
-@section starting_components Typical Study based on SimGrid
-
-Any SimGrid study entails the following components:
-
- - The studied **Application**. This can be either a distributed
-   algorithm described in our simple APIs, or a full featured real
-   parallel application using for example the MPI interface 
-   @ref application "(more info)".
-
- - The **Virtual Platform**. This is a description of a given
-   distributed system (machines, links, disks, clusters, etc). Most of
-   the platform files are written in XML althrough a Lua interface is
-   under development.  SimGrid makes it easy to augment the Virtual
-   Platform with a Dynamic Scenario where for example the links are
-   slowed down (because of external usage), the machines fail. You
-   have even support to specify the applicative workload that you want
-   to feed to your application  @ref platform "(more info)".
-
- - The application's **Deployment Description**. In SimGrid
-   terminology, the application is an inert set of source files and
-   binaries. To make it run, you have to describe how your application
-   should be deployed on the virtual platform. You need to specify
-   which process is mapped on which host, along with their parameters
-   @ref deployment "(more info)".
-
- - The **Platform Models**. They describe how the virtual platform
-   reacts to the actions of the application. For example, they compute
-   the time taken by a given communication on the virtual platform.
-   These models are already included in SimGrid, and you only need to
-   pick one and maybe tweak its configuration to get your results
-   @ref models "(more info)".
-
-These components are put together to run a **simulation**, that is an
-experiment or a probe. The result of one or many simulation provides
-an **outcome** (logs, visualization, statistical analysis) that help
-answering the **question** targeted by this study.
-
-The questions that SimGrid can solve include the following:
-
- - **Compare an Application to another**. This is the classical use
-   case for scientists, who use SimGrid to test how the solution that
-   they contribute compares to the existing solutions from the
-   literature.
-
- - **Design the best Virtual Platform for a given Application.**
-   Tweaking the platform file is much easier than building a new real
-   platform for testing purpose. SimGrid also allows co-design of the
-   platform and the application by modifying both of them.
-
- - **Debug Real Applications**. With real systems, is sometimes
-   difficult to reproduce the exact run leading to the bug that you
-   are tracking. SimGrid gives you experimental reproducibility,
-   clairevoyance (you can explore every part of the system, and your
-   probe will not change the simulated state). It also makes it easy
-   to mock some parts of the real system that are not under study.
-
-Depending on the context, you may see some parts of this process as
-less important, but you should pay close attention if you want to be
-confident in the results coming out of your simulations. In
-particular, you should not trust blindly your results but always
-strive to double-check them. Likewise, you should question the realism
-of your input configuration, and we even encourage you to doubt (and
-check) the provided performance models.
-
-To ease such questionning, you really should logically separate these
-parts in your experimental setup. It is seen as a very bad practice to
-merge the application, the platform and the deployment all together.
-SimGrid is versatile and your milleage may vary, but you should start
-with your Application specified as a C++ or Java program, using one of
-the provided XML platform file, and with your deployment in a separate
-XML file.
-
-@section starting_gears SimGrid Execution Modes
-
-Depending on the intended study, SimGrid can be run in several execution modes.
-
-** **Simulation Mode**. This is the most common execution mode, where you want
-to study how your application behaves on the virtual platform under
-the experimental scenario.
-
-In this mode, SimGrid can provide information about the time taken by
-your application, the amount of energy dissipated by the platform to
-run your application and the detailed usage of each resource.
-
-** **Model-Checking Mode**. This can be seen as a sort of exhaustive
-testing mode, where every possible outcome of your application is
-explored. In some sense, this mode tests your application for all
-possible platforms that you could imagine (and more).
-
-You just provide the application and its deployment (amount of
-processes and parameters), and the model-checker will litterally
-explore all possible outcomes by testing all possible message
-interleavings: if at some point a given process can either receive the
-message A first or the message B depending on the platform
-characteristics, the model-checker will explore the scenario where A
-arrives first, and then rewind to the same point to explore the
-scenario where B arrives first.
-
-This is a very powerful mode, where you can evaluate the correction of
-your application. It can verify either **safety properties** (asserts) 
-or **liveless properties** stating for example that if a given event
-occures, then another given event will occur in a finite amount of
-steps. This mode is not only usable with the abstract algorithms
-developed on top of the SimGrid APIs, but also with real MPI
-applications (to some extend).
-
-The main limit of Model Checking lays in the huge amount of scenarios
-to explore. SimGrid tries to explore only non-redundent scenarios
-thanks to classical reduction techniques (such as DPOR and stateful
-exploration) but the exploration may well never finish if you don't
-carefully adapt your application to this mode.
-
-A classical trap is that the Model Checker can only verify whether
-your application fits the provided properties, which is useless if you
-have a bug in your property. Remember also that one way for your
-application to never violate a given assert is to not start at all
-because of a stupid bug.
-
-Another limit of this mode is that it does not use the performance
-models of the simulation mode. Time becomes discrete: You can say for
-example that the application took 42 steps to run, but there is no way
-to know the amount of seconds that it took or the amount of watts that
-it dissipated.
-
-Finally, the model checker only explores the interleavings of
-computations and communications. Other factors such as thread
-execution interleaving are not considered by the SimGrid model
-checker.
-
-The model checker may well miss existing issues, as it computes the
-possible outcomes *from a given initial situation*. There is no way to
-prove the correction of your application in all generality with this
-tool.
-
-** **Benchmark Recording Mode**. During debug sessions, continuous
-integration testing and other similar use cases, you are often only
-interested in the control flow. If your application apply filters to
-huge images split in small blocks, the filtered image is probably not
-what you are interested in. You are probably looking for a way to run
-each computation kernel only once, save on disk the time it takes and
-some other metadata. This code block can then be skipped in simulation
-and replaced by a synthetic block using the cached information. The
-virtual platform will take this block into account without requesting
-the real hosting machine to benchmark it.
-
-@section starting_limits SimGrid Limits
-
-This framework is by no means the perfect holly grail able to solve
-every problem on earth. 
-
-** **SimGrid scope is limited to distributed systems.** Real-time
-multithreaded systems are not in the scope. You could probably tweak
-SimGrid for such studies (or the framework could possibily be extended
-in this direction), but another framework specifically targeting this
-usecase would probably be more suited.
-
-** **There is currently no support for IoT studies and wireless networks**. 
-The framework could certainly be improved in this direction, but this
-is still to be done.
-
-** **There is no perfect model, only models adapted to your study.**
-The SimGrid models target fast, large studies yet requesting a
-realistic results. In particular, our models abstract away parameters
-and phenomenon that are often irrelevant to the realism in our
-context. 
-
-SimGrid is simply not intended to any study that would mandate the
-abstracted phenomenon. Here are some **studies that you should not do
-with SimGrid**:
-
- - Studying the effect of L3 vs L2 cache effects on your application
- - Comparing variantes of TCP
- - Exploring pathological cases where TCP breaks down, resulting in
-   abnormal executions.
- - Studying security aspects of your application, in presence of
-   malicious agents.
-
-@section starting_successes SimGrid Success Stories
-
-SimGrid was cited in over 1,500 scientific papers (according to Google
-Scholar). Among them
-<a href="http://simgrid.gforge.inria.fr/Usages.php">over 200
-publications</a> (written by about 300 individuals) use SimGrid as a
-scientific instrument to conduct their experimental evaluation. These
-numbers do not count the articles contributing to SimGrid.
-This instrument was used in many research communities, such as 
-<a href="https://hal.inria.fr/inria-00580599/">High-Performance Computing</a>,
-<a href="http://dx.doi.org/10.1109/CLOUD.2015.125">Cloud Computing</a>,
-<a href="http://dl.acm.org/citation.cfm?id=2310096.2310195">Workflow Scheduling</a>,
-<a href="https://hal.inria.fr/hal-01199200/">Big Data</a> and
-<a href="http://dx.doi.org/10.1109/WSCAD-SSC.2012.18">MapReduce</a>,
-<a href="http://ieeexplore.ieee.org/document/7515695/">Data Grid</a>,
-<a href="http://www.sciencedirect.com/science/article/pii/S1569190X17301028">Volunteer Computing</a>,
-<a href="https://hal.archives-ouvertes.fr/hal-01152469/">Peer-to-Peer Computing</a>,
-<a href="http://dx.doi.org/10.1109/TPDS.2016.2613043">Network Architecture</a>,
-<a href="http://ieeexplore.ieee.org/document/7946412/">Fog Computing</a>, or
-<a href="https://hal.archives-ouvertes.fr/hal-01333471">Batch Scheduling</a>
-<a href="http://simgrid.gforge.inria.fr/Usages.php"><b>(more info)</b></a>.
-
-If your platform description is accurate enough (see
-<a href="http://hal.inria.fr/hal-00907887">here</a> or
-<a href="https://hal.inria.fr/hal-01523608">there</a>),
-SimGrid can provide high-quality performance predictions. For example,
-we determined the speedup achieved by the Tibidabo Arm-based
-cluster before its construction
-(<a href="http://hal.inria.fr/hal-00919507">paper</a>). In this case, 
-some differences between the prediction and the real timings were due to
-misconfiguration or other problems with the real platforms. To some extent,
-SimGrid could even be used to debug the real platform :)
-
-SimGrid is also used to debug, improve and tune several large
-applications.
-<a href="http://bigdft.org">BigDFT</a> (a massively parallel code
-computing the electronic structure of chemical elements developped by
-the CEA), <a href="http://starpu.gforge.inria.fr/">StarPU</a> (a
-Unified Runtime System for Heterogeneous Multicore Architectures
-developped by Inria Bordeaux) and
-<a href="https://tomp2p.net/dev/simgrid/">TomP2P</a> (a high performance
-key-value pair storage library developped at University of Zurich).
-Some of these applications enjoy large user communities themselves.
-
-@section starting_next Where to proceed next?
-
-Now that you know about the basic concepts of SimGrid, you can give it
-a try. If it's not done yet, first @ref install "install it". Then,
-proceed to the section on @ref application "describing the application" that
-you want to study.
-
-*/
\ No newline at end of file
diff --git a/doc/doxygen/models.doc b/doc/doxygen/models.doc
deleted file mode 100644 (file)
index caed4c6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-/** 
-@page models SimGrid Models
-
-TBD
-
- - Main existing models (contention, cste, LM07)
- - Main concepts (Routing, LMM) + link to the papers
- - How to switch on the command line
-
-*/
\ No newline at end of file
diff --git a/doc/doxygen/scenario.doc b/doc/doxygen/scenario.doc
deleted file mode 100644 (file)
index 7fd0d5e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
-@page scenario Describing the experimental scenario
-
-TBD
-
-Main concepts:
-
- - Deployment file
- - Availability and state profiles
- - Reproducible random number generation
- - Command line options, in particular on the model switching
-
-*/
\ No newline at end of file
diff --git a/doc/tuto-msg/Makefile b/doc/tuto-msg/Makefile
deleted file mode 100644 (file)
index fbac5c3..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-# This Makefile is specifically tailored for the binaries of this tutorial.
-
-# For your own project, you should use the one provided at 
-# http://simgrid.gforge.inria.fr/simgrid/latest/doc/install_yours.html
-
-# Some configuration
-SIMGRID_INSTALL_PATH ?= ../.. # Where you installed simgrid 
-CC ?= gcc                     # Your compiler (on Mac, use clang instead)
-
-# No change needed bellow for this tutorial.
-############################################################################
-
-all: masterworker
-
-WARNINGS = -Wall -Wextra -Wshadow -Wcast-align -Waggregate-return -Wmissing-prototypes \
-          -Wmissing-declarations -Wmissing-prototypes -Wpointer-arith -Wwrite-strings \
-          -Wmissing-noreturn -Wredundant-decls \
-         -Wno-nested-externs  -Wno-strict-prototypes -Wno-unused-parameter
-WARNINGS += -Werror # Comment that line to not be in paranoid mode
-
-# CFLAGS = -std=gnu99 -g -O0 $(WARNINGS) $(EXTRA_CFLAGS) # Use this line to make debugging easier
-CFLAGS = -std=gnu99 -g -O2 $(WARNINGS) $(EXTRA_CFLAGS) # Use this line to get better performance
-
-# No change should be mandated past that line
-#############################################
-# The following are implicit rules, used by default to actually build
-# the targets for which you listed the dependencies above.
-
-.SUFFIXES: .c
-# The blanks before the $(CC) must be a Tab char, not spaces
-.c:
-       $(CC) -I$(strip $(SIMGRID_INSTALL_PATH))/include -L$(strip $(SIMGRID_INSTALL_PATH))/lib/ $(CFLAGS) $< -lsimgrid -o $@
-
-clean:
-       rm -f *.o *~ masterworker masterworker-sol1 masterworker-sol2 masterworker-sol3 masterworker-sol4
-.PHONY: clean
-
diff --git a/doc/tuto-msg/deployment0.xml b/doc/tuto-msg/deployment0.xml
deleted file mode 100644 (file)
index a9fe036..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4.1">
-  <!-- The master actor (with some arguments) -->
-  <actor host="Tremblay" function="master">
-     <argument value="20"/>       <!-- Number of tasks -->
-     <argument value="50000000"/>  <!-- Computation size of tasks -->
-     <argument value="1000000"/>   <!-- Communication size of tasks -->
-     <argument value="Jupiter"/>  <!-- First worker -->
-     <argument value="Fafard"/>   <!-- Second worker -->
-     <argument value="Ginette"/>  <!-- Third worker -->
-     <argument value="Bourassa"/> <!-- Last worker -->
-     <argument value="Tremblay"/> <!-- Me! I can work too! -->
-  </actor>
-  <!-- The worker actor (with no argument) -->
-  <actor host="Tremblay" function="worker" on_failure="RESTART"/>
-  <actor host="Jupiter" function="worker" on_failure="RESTART"/>
-  <actor host="Fafard" function="worker" on_failure="RESTART"/>
-  <actor host="Ginette" function="worker" on_failure="RESTART"/>
-  <actor host="Bourassa" function="worker" on_failure="RESTART"/>
-</platform>
diff --git a/doc/tuto-msg/deployment1.xml b/doc/tuto-msg/deployment1.xml
deleted file mode 100644 (file)
index 2286d86..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4.1">
-  <!-- The master actor (with some arguments) -->
-  <actor host="Tremblay" function="master">
-     <argument value="20"/>       <!-- Number of tasks -->
-     <argument value="50000000"/>  <!-- Computation size of tasks -->
-     <argument value="1000000"/>   <!-- Communication size of tasks -->
-  </actor>
-</platform>
diff --git a/doc/tuto-msg/deployment2.xml b/doc/tuto-msg/deployment2.xml
deleted file mode 100644 (file)
index 6cddb86..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4.1">
-  <actor host="Tremblay" function="master">
-     <argument value="600"/>       <!-- Simulation timeout, in seconds -->
-     <argument value="50000000"/>  <!-- Computation size of tasks -->
-     <argument value="1000000"/>   <!-- Communication size of tasks -->
-  </actor>
-</platform>
diff --git a/doc/tuto-msg/deployment3.xml b/doc/tuto-msg/deployment3.xml
deleted file mode 100644 (file)
index e5dcfe1..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4.1">
-  <actor host="Tremblay" function="master">
-     <argument value="600"/>       <!-- Simulation timeout -->
-     <argument value="50000000"/>  <!-- Computation size of tasks -->
-     <argument value="10"/>        <!-- Communication size of tasks -->
-  </actor>
-  <actor host="Fafard" function="master">
-     <argument value="600"/>       <!-- Simulation timeout -->
-     <argument value="50000000"/>  <!-- Computation size of tasks -->
-     <argument value="10"/>        <!-- Communication size of tasks -->
-  </actor>
-  <actor host="Jupiter" function="master">
-     <argument value="600"/>       <!-- Simulation timeout -->
-     <argument value="50000000"/>  <!-- Computation size of tasks -->
-     <argument value="10"/>        <!-- Communication size of tasks -->
-  </actor>
-</platform>
diff --git a/doc/tuto-msg/deployment_general.xml b/doc/tuto-msg/deployment_general.xml
deleted file mode 100644 (file)
index adbb7cb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4.1">
-  <actor host="griffon-1.nancy.grid5000.fr" function="master"> <!-- griffon-1.nancy.grid5000.fr peer-0 cb1-1.dc1.acloud.com-->
-     <argument value="3600"/>      <!-- Simulation timeout -->
-     <argument value="50000000"/>  <!-- Computation size of tasks -->
-     <argument value="100000"/>   <!-- Communication size of tasks -->
-  </actor>
-</platform>
diff --git a/doc/tuto-msg/masterworker-sol1.c b/doc/tuto-msg/masterworker-sol1.c
deleted file mode 100644 (file)
index 180c61e..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "simgrid/msg.h"
-
-#include <stdio.h> /* sprintf */
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example");
-
-#define FINALIZE ((void*)221297) /* a magic number to tell people to stop working */
-
-static char* build_channel_name(char* buffer, const char* sender, const char* receiver)
-{
-  strcpy(buffer, sender);
-  strcat(buffer, ":");
-  strcat(buffer, receiver);
-  return buffer;
-}
-
-/* forward definitions */
-static int master(int argc, char* argv[]);
-static int worker(int argc, char* argv[]);
-
-static int master(int argc, char* argv[])
-{
-  msg_host_t host_self    = MSG_host_self();
-  const char* master_name = MSG_host_get_name(host_self);
-  char channel[1024];
-
-  long number_of_tasks = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s");       /** - Number of tasks      */
-  double comp_size     = xbt_str_parse_double(argv[2], "Invalid computational size: %s"); /** - Task compute cost    */
-  double comm_size = xbt_str_parse_double(argv[3], "Invalid communication size: %s"); /** - Task communication size */
-
-  /* Create the tasks in advance */
-  msg_task_t* todo = xbt_new0(msg_task_t, number_of_tasks);
-
-  for (int i = 0; i < number_of_tasks; i++) {
-    char sprintf_buffer[64];
-    sprintf(sprintf_buffer, "Task_%d", i);
-    todo[i] = MSG_task_create(sprintf_buffer, comp_size, comm_size, NULL);
-  }
-
-  /* Get the info about the worker processes (directly from SimGrid) */
-  int worker_count    = MSG_get_host_number();
-  msg_host_t* workers = xbt_dynar_to_array(MSG_hosts_as_dynar());
-
-  for (int i = 0; i < worker_count; i++)
-    if (host_self == workers[i]) {
-      workers[i] = workers[worker_count - 1];
-      worker_count--;
-      break;
-    }
-
-  for (int i = 0; i < worker_count; i++)
-    MSG_process_create("worker", worker, (void*)master_name, workers[i]);
-  XBT_INFO("Got %d workers and %ld tasks to process", worker_count, number_of_tasks);
-
-  /* Dispatch the tasks */
-  for (int i = 0; i < number_of_tasks; i++) {
-    build_channel_name(channel, master_name, MSG_host_get_name(workers[i % worker_count]));
-
-    XBT_INFO("Sending '%s' to channel '%s'", todo[i]->name, channel);
-
-    MSG_task_send(todo[i], channel);
-    XBT_INFO("Sent");
-  }
-
-  XBT_INFO("All tasks have been dispatched. Let's tell everybody the computation is over.");
-  for (int i = 0; i < worker_count; i++) {
-    msg_task_t finalize = MSG_task_create("finalize", 0, 0, FINALIZE);
-    MSG_task_send(finalize, build_channel_name(channel, master_name, MSG_host_get_name(workers[i % worker_count])));
-  }
-
-  XBT_INFO("Goodbye now!");
-  free(workers);
-  free(todo);
-  return 0;
-} /* end_of_master */
-
-/** Receiver function  */
-static int worker(int argc, char* argv[])
-{
-  char channel[1024];
-
-  build_channel_name(channel, MSG_process_get_data(MSG_process_self()), MSG_host_get_name(MSG_host_self()));
-
-  XBT_INFO("Receiving on channel '%s'", channel);
-
-  while (1) {
-    msg_task_t task = NULL;
-    int res         = MSG_task_receive(&(task), channel);
-    xbt_assert(res == MSG_OK, "MSG_task_receive failed");
-
-    XBT_INFO("Received '%s'", MSG_task_get_name(task));
-    if (!strcmp(MSG_task_get_name(task), "finalize")) {
-      MSG_task_destroy(task);
-      break;
-    }
-
-    XBT_INFO("Processing '%s'", MSG_task_get_name(task));
-    MSG_task_execute(task);
-    XBT_INFO("'%s' done", MSG_task_get_name(task));
-    MSG_task_destroy(task);
-  }
-  XBT_INFO("I'm done. See you!");
-  return 0;
-} /* end_of_worker */
-
-/** Main function */
-int main(int argc, char* argv[])
-{
-  MSG_init(&argc, argv);
-  xbt_assert(argc > 2,
-             "Usage: %s platform_file deployment_file\n"
-             "\tExample: %s msg_platform.xml msg_deployment.xml\n",
-             argv[0], argv[0]);
-
-  /*  Create a simulated platform */
-  MSG_create_environment(argv[1]);
-
-  /*   Application deployment */
-  MSG_function_register("master", master);
-  MSG_function_register("worker", worker);
-  MSG_launch_application(argv[2]);
-
-  /* Run the simulation */
-  msg_error_t res = MSG_main();
-
-  XBT_INFO("Simulation time %g", MSG_get_clock());
-  return (res != MSG_OK);
-}
diff --git a/doc/tuto-msg/masterworker-sol2.c b/doc/tuto-msg/masterworker-sol2.c
deleted file mode 100644 (file)
index 16d44b0..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "simgrid/msg.h"
-
-#include <stdio.h> /* sprintf */
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example");
-
-#define FINALIZE ((void*)221297) /* a magic number to tell people to stop working */
-
-static char* build_channel_name(char* buffer, const char* sender, const char* receiver)
-{
-  strcpy(buffer, sender);
-  strcat(buffer, ":");
-  strcat(buffer, receiver);
-  return buffer;
-}
-
-/* forward definitions */
-static int master(int argc, char* argv[]);
-static int worker(int argc, char* argv[]);
-
-static int master(int argc, char* argv[])
-{
-  msg_host_t host_self = MSG_host_self();
-  char* master_name    = (char*)MSG_host_get_name(host_self);
-  char channel[1024];
-
-  double timeout   = xbt_str_parse_double(argv[1], "Invalid timeout: %s");            /** - timeout      */
-  double comp_size = xbt_str_parse_double(argv[2], "Invalid computational size: %s"); /** - Task compute cost    */
-  double comm_size = xbt_str_parse_double(argv[3], "Invalid communication size: %s"); /** - Task communication size */
-
-  /* Get the info about the worker processes (directly from SimGrid) */
-  int worker_count    = MSG_get_host_number();
-  msg_host_t* workers = xbt_dynar_to_array(MSG_hosts_as_dynar());
-
-  for (int i = 0; i < worker_count; i++) // Remove my host from the list
-    if (host_self == workers[i]) {
-      workers[i] = workers[worker_count - 1];
-      worker_count--;
-      break;
-    }
-
-  for (int i = 0; i < worker_count; i++)
-    MSG_process_create("worker", worker, (void*)master_name, workers[i]);
-  XBT_INFO("Got %d workers and will send tasks for %g seconds", worker_count, timeout);
-
-  /* Dispatch the tasks */
-  int task_num = 0;
-  while (1) {
-    if (MSG_get_clock() > timeout)
-      break;
-
-    char sprintf_buffer[64];
-    sprintf(sprintf_buffer, "Task_%d", task_num);
-    msg_task_t task = MSG_task_create(sprintf_buffer, comp_size, comm_size, NULL);
-
-    build_channel_name(channel, master_name, MSG_host_get_name(workers[task_num % worker_count]));
-
-    XBT_DEBUG("Sending '%s' to channel '%s'", task->name, channel);
-    MSG_task_send(task, channel);
-    XBT_DEBUG("Sent");
-    task_num++;
-  }
-
-  XBT_DEBUG("All tasks have been dispatched. Let's tell everybody the computation is over.");
-  for (int i = 0; i < worker_count; i++) {
-    msg_task_t finalize = MSG_task_create("finalize", 0, 0, FINALIZE);
-    MSG_task_send(finalize, build_channel_name(channel, master_name, MSG_host_get_name(workers[i % worker_count])));
-  }
-
-  XBT_DEBUG("Sent %d tasks in total!", task_num);
-  free(workers);
-  return 0;
-}
-
-/** Worker function  */
-static int worker(int argc, char* argv[])
-{
-  char channel[1024];
-
-  build_channel_name(channel, MSG_process_get_data(MSG_process_self()), MSG_host_get_name(MSG_host_self()));
-
-  XBT_DEBUG("Receiving on channel '%s'", channel);
-
-  while (1) {
-    msg_task_t task = NULL;
-    int res         = MSG_task_receive(&(task), channel);
-    xbt_assert(res == MSG_OK, "MSG_task_receive failed");
-
-    XBT_DEBUG("Received '%s'", MSG_task_get_name(task));
-    if (!strcmp(MSG_task_get_name(task), "finalize")) {
-      MSG_task_destroy(task);
-      break;
-    }
-
-    XBT_DEBUG("Processing '%s'", MSG_task_get_name(task));
-    MSG_task_execute(task);
-    XBT_DEBUG("'%s' done", MSG_task_get_name(task));
-    MSG_task_destroy(task);
-  }
-  XBT_DEBUG("I'm done. See you!");
-  return 0;
-}
-
-/** Main function */
-int main(int argc, char* argv[])
-{
-  MSG_init(&argc, argv);
-  xbt_assert(argc > 2,
-             "Usage: %s platform_file deployment_file\n"
-             "\tExample: %s msg_platform.xml msg_deployment.xml\n",
-             argv[0], argv[0]);
-
-  /*  Create a simulated platform */
-  MSG_create_environment(argv[1]);
-
-  /*   Application deployment */
-  MSG_function_register("master", master);
-  MSG_function_register("worker", worker);
-  MSG_launch_application(argv[2]);
-
-  /* Run the simulation */
-  msg_error_t res = MSG_main();
-
-  XBT_INFO("Simulation time %g", MSG_get_clock());
-  return (res != MSG_OK);
-}
diff --git a/doc/tuto-msg/masterworker-sol3.c b/doc/tuto-msg/masterworker-sol3.c
deleted file mode 100644 (file)
index 2c187ec..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "simgrid/msg.h"
-
-#include <stdio.h> /* sprintf */
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example");
-
-#define FINALIZE ((void*)221297) /* a magic number to tell people to stop working */
-
-static char* build_channel_name(char* buffer, const char* sender, const char* receiver)
-{
-  strcpy(buffer, sender);
-  strcat(buffer, ":");
-  strcat(buffer, receiver);
-  return buffer;
-}
-
-/* forward definitions */
-static int master(int argc, char* argv[]);
-static int worker(int argc, char* argv[]);
-
-static int master(int argc, char* argv[])
-{
-  msg_host_t host_self = MSG_host_self();
-  char* master_name    = (char*)MSG_host_get_name(host_self);
-  char channel[1024];
-
-  TRACE_category(master_name);
-
-  double timeout   = xbt_str_parse_double(argv[1], "Invalid timeout: %s");            /** - timeout      */
-  double comp_size = xbt_str_parse_double(argv[2], "Invalid computational size: %s"); /** - Task compute cost    */
-  double comm_size = xbt_str_parse_double(argv[3], "Invalid communication size: %s"); /** - Task communication size */
-
-  /* Get the info about the worker processes */
-  int worker_count    = MSG_get_host_number();
-  msg_host_t* workers = xbt_dynar_to_array(MSG_hosts_as_dynar());
-
-  for (int i = 0; i < worker_count; i++) // Remove my host from the list
-    if (host_self == workers[i]) {
-      workers[i] = workers[worker_count - 1];
-      worker_count--;
-      break;
-    }
-
-  for (int i = 0; i < worker_count; i++)
-    MSG_process_create("worker", worker, (void*)master_name, workers[i]);
-  XBT_INFO("Got %d workers and will send tasks for %g seconds", worker_count, timeout);
-
-  /* Dispatch the tasks */
-  int task_num = 0;
-  while (1) {
-    if (MSG_get_clock() > timeout)
-      break;
-
-    char sprintf_buffer[64];
-    sprintf(sprintf_buffer, "Task_%d", task_num);
-
-    msg_task_t task = MSG_task_create(sprintf_buffer, comp_size, comm_size, NULL);
-    MSG_task_set_category(task, master_name);
-
-    build_channel_name(channel, master_name, MSG_host_get_name(workers[task_num % worker_count]));
-
-    XBT_DEBUG("Sending '%s' to channel '%s'", task->name, channel);
-    MSG_task_send(task, channel);
-    XBT_DEBUG("Sent");
-    task_num++;
-  }
-
-  XBT_DEBUG("All tasks have been dispatched. Let's tell everybody the computation is over.");
-  for (int i = 0; i < worker_count; i++) {
-    msg_task_t finalize = MSG_task_create("finalize", 0, 0, FINALIZE);
-    MSG_task_send(finalize, build_channel_name(channel, master_name, MSG_host_get_name(workers[i % worker_count])));
-  }
-
-  XBT_INFO("Sent %d tasks in total!", task_num);
-  free(workers);
-  return 0;
-}
-
-/** Worker function  */
-static int worker(int argc, char* argv[])
-{
-  char channel[1024];
-  build_channel_name(channel, MSG_process_get_data(MSG_process_self()), MSG_host_get_name(MSG_host_self()));
-
-  XBT_DEBUG("Receiving on channel '%s'", channel);
-
-  while (1) {
-    msg_task_t task = NULL;
-    int res         = MSG_task_receive(&(task), channel);
-    xbt_assert(res == MSG_OK, "MSG_task_get failed");
-
-    XBT_DEBUG("Received '%s'", MSG_task_get_name(task));
-    if (!strcmp(MSG_task_get_name(task), "finalize")) {
-      MSG_task_destroy(task);
-      break;
-    }
-
-    XBT_DEBUG("Processing '%s'", MSG_task_get_name(task));
-    MSG_task_execute(task);
-    XBT_DEBUG("'%s' done", MSG_task_get_name(task));
-    MSG_task_destroy(task);
-  }
-  XBT_DEBUG("I'm done. See you!");
-  return 0;
-}
-
-/** Main function */
-int main(int argc, char* argv[])
-{
-  MSG_init(&argc, argv);
-  xbt_assert(argc > 2,
-             "Usage: %s platform_file deployment_file\n"
-             "\tExample: %s msg_platform.xml msg_deployment.xml\n",
-             argv[0], argv[0]);
-
-  /*  Create a simulated platform */
-  MSG_create_environment(argv[1]);
-
-  /*   Application deployment */
-  MSG_function_register("master", master);
-  MSG_function_register("worker", worker);
-  MSG_launch_application(argv[2]);
-
-  /* Run the simulation */
-  msg_error_t res = MSG_main();
-
-  XBT_INFO("Simulation time %g", MSG_get_clock());
-  return (res != MSG_OK);
-}
diff --git a/doc/tuto-msg/masterworker-sol4.c b/doc/tuto-msg/masterworker-sol4.c
deleted file mode 100644 (file)
index 6235ed6..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "simgrid/msg.h"
-
-#include <stdio.h> /* sprintf */
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example");
-
-#define FINALIZE ((void*)221297) /* a magic number to tell people to stop working */
-
-static char* build_channel_name(char* buffer, const char* sender, const char* receiver)
-{
-  strcpy(buffer, sender);
-  strcat(buffer, ":");
-  strcat(buffer, receiver);
-  return buffer;
-}
-
-/* forward definitions */
-static int master(int argc, char* argv[]);
-static int worker(int argc, char* argv[]);
-
-static int master(int argc, char* argv[])
-{
-  msg_host_t host_self = MSG_host_self();
-  char* master_name    = (char*)MSG_host_get_name(host_self);
-  char channel[1024];
-
-  TRACE_category(master_name);
-
-  double timeout   = xbt_str_parse_double(argv[1], "Invalid timeout: %s");            /** - timeout      */
-  double comp_size = xbt_str_parse_double(argv[2], "Invalid computational size: %s"); /** - Task compute cost    */
-  double comm_size = xbt_str_parse_double(argv[3], "Invalid communication size: %s"); /** - Task communication size */
-
-  /* Get the info about the worker processes */
-  int worker_count    = MSG_get_host_number();
-  msg_host_t* workers = xbt_dynar_to_array(MSG_hosts_as_dynar());
-
-  for (int i = 0; i < worker_count; i++) // Remove my host from the list
-    if (host_self == workers[i]) {
-      workers[i] = workers[worker_count - 1];
-      worker_count--;
-      break;
-    }
-
-  for (int i = 0; i < worker_count; i++)
-    MSG_process_create("worker", worker, (void*)master_name, workers[i]);
-  XBT_INFO("Got %d workers and will send tasks for %g seconds", worker_count, timeout);
-
-  /* Dispatch the tasks */
-  int task_num = 0;
-  while (MSG_get_clock() < timeout) {
-
-    /* Retrieve the next incomming request */
-    XBT_DEBUG("Retrieve the next incomming request on %s", master_name);
-    msg_task_t request = NULL;
-    int res            = MSG_task_receive(&(request), master_name);
-    xbt_assert(res == MSG_OK, "MSG_task_receive failed");
-    msg_host_t requester = MSG_task_get_data(request);
-    MSG_task_destroy(request);
-
-    /* Prepare the task to be sent */
-    char sprintf_buffer[64];
-    sprintf(sprintf_buffer, "Task_%d", task_num);
-    msg_task_t task = MSG_task_create(sprintf_buffer, comp_size, comm_size, NULL);
-    MSG_task_set_category(task, master_name);
-
-    /* Send this out */
-    build_channel_name(channel, master_name, MSG_host_get_name(requester));
-
-    XBT_DEBUG("Sending '%s' to channel '%s'", task->name, channel);
-    MSG_task_send(task, channel);
-    XBT_DEBUG("Sent");
-    task_num++;
-  }
-
-  XBT_DEBUG("Time is up. Let's tell everybody the computation is over.");
-  for (int i = 0; i < worker_count; i++) { /* We don't write in order, but the total amount is right */
-
-    /* Don't write to a worker that did not request for work, or it will deadlock: both would be sending something */
-    msg_task_t request = NULL;
-    int res            = MSG_task_receive(&(request), master_name);
-    xbt_assert(res == MSG_OK, "MSG_task_receive failed");
-    msg_host_t requester = MSG_task_get_data(request);
-    MSG_task_destroy(request);
-
-    XBT_DEBUG("Stop worker %s", MSG_host_get_name(requester));
-    msg_task_t finalize = MSG_task_create("finalize", 0, 0, FINALIZE);
-    MSG_task_send(finalize, build_channel_name(channel, master_name, MSG_host_get_name(requester)));
-  }
-
-  XBT_INFO("Sent %d tasks in total!", task_num);
-  free(workers);
-  return 0;
-}
-
-/** Worker function  */
-static int worker(int argc, char* argv[])
-{
-  char channel[1024];
-
-  const char* my_master = MSG_process_get_data(MSG_process_self());
-  build_channel_name(channel, my_master, MSG_host_get_name(MSG_host_self()));
-
-  XBT_DEBUG("Receiving on channel \"%s\"", channel);
-
-  while (1) {
-    /* Send a request */
-    XBT_DEBUG("Sent a request to my master on %s", my_master);
-    msg_task_t request = MSG_task_create("request", 0, 0, MSG_host_self());
-    MSG_task_send(request, my_master);
-
-    /* Wait for the answer */
-    msg_task_t task = NULL;
-    int res         = MSG_task_receive(&(task), channel);
-    xbt_assert(res == MSG_OK, "MSG_task_receive failed");
-
-    XBT_DEBUG("Received '%s'", MSG_task_get_name(task));
-    if (!strcmp(MSG_task_get_name(task), "finalize")) {
-      MSG_task_destroy(task);
-      break;
-    }
-
-    XBT_DEBUG("Processing '%s'", MSG_task_get_name(task));
-    MSG_task_execute(task);
-    XBT_DEBUG("'%s' done", MSG_task_get_name(task));
-    MSG_task_destroy(task);
-  }
-  XBT_DEBUG("I'm done. See you!");
-  return 0;
-}
-
-/** Main function */
-int main(int argc, char* argv[])
-{
-  MSG_init(&argc, argv);
-  xbt_assert(argc > 2,
-             "Usage: %s platform_file deployment_file\n"
-             "\tExample: %s msg_platform.xml msg_deployment.xml\n",
-             argv[0], argv[0]);
-
-  /*  Create a simulated platform */
-  MSG_create_environment(argv[1]);
-
-  /*   Application deployment */
-  MSG_function_register("master", master);
-  MSG_function_register("worker", worker);
-  MSG_launch_application(argv[2]);
-
-  /* Run the simulation */
-  msg_error_t res = MSG_main();
-
-  XBT_INFO("Simulation time %g", MSG_get_clock());
-  return (res != MSG_OK);
-}
diff --git a/doc/tuto-msg/masterworker.c b/doc/tuto-msg/masterworker.c
deleted file mode 100644 (file)
index 2a2b906..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-#include "simgrid/msg.h"
-
-#include <stdio.h> /* sprintf */
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example");
-
-#define FINALIZE ((void*)221297) /* a magic number to tell people to stop working */
-
-/** Master expects 3+ arguments given in the XML deployment file: */
-static int master(int argc, char* argv[])
-{
-  long number_of_tasks = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s");       /** - Number of tasks      */
-  double comp_size     = xbt_str_parse_double(argv[2], "Invalid computational size: %s"); /** - Task compute cost    */
-  double comm_size = xbt_str_parse_double(argv[3], "Invalid communication size: %s"); /** - Task communication size */
-
-  /* Create the tasks in advance */
-  msg_task_t* todo = xbt_new0(msg_task_t, number_of_tasks);
-
-  for (int i = 0; i < number_of_tasks; i++) {
-    char sprintf_buffer[64];
-    sprintf(sprintf_buffer, "Task_%d", i);
-    todo[i] = MSG_task_create(sprintf_buffer, comp_size, comm_size, NULL);
-  }
-
-  /* Get the info about the worker processes from my parameters */
-  int worker_count    = argc - 4;
-  msg_host_t* workers = xbt_new0(msg_host_t, worker_count);
-
-  for (int i = 4; i < argc; i++) {
-    workers[i - 4] = MSG_get_host_by_name(argv[i]);
-    xbt_assert(workers[i - 4] != NULL, "Unknown host %s. Stopping Now! ", argv[i]);
-  }
-  XBT_INFO("Got %d workers and %ld tasks to process", worker_count, number_of_tasks);
-
-  /* Dispatch the tasks */
-  for (int i = 0; i < number_of_tasks; i++) {
-    XBT_INFO("Sending '%s' to '%s'", todo[i]->name, MSG_host_get_name(workers[i % worker_count]));
-    if (MSG_host_self() == workers[i % worker_count]) {
-      XBT_INFO("Hey ! It's me ! :)");
-    }
-
-    MSG_task_send(todo[i], MSG_host_get_name(workers[i % worker_count]));
-    XBT_INFO("Sent");
-  }
-
-  XBT_INFO("All tasks have been dispatched. Let's tell everybody the computation is over.");
-  for (int i = 0; i < worker_count; i++) {
-    msg_task_t finalize = MSG_task_create("finalize", 0, 0, FINALIZE);
-    MSG_task_send(finalize, MSG_host_get_name(workers[i]));
-  }
-
-  XBT_INFO("Goodbye now!");
-  free(workers);
-  free(todo);
-  return 0;
-}
-
-/** Worker does not expect any argument from XML deployment file. */
-static int worker(int argc, char* argv[])
-{
-  while (1) {
-    msg_task_t task = NULL;
-    int res         = MSG_task_receive(&(task), MSG_host_get_name(MSG_host_self()));
-    xbt_assert(res == MSG_OK, "MSG_task_receive failed");
-
-    XBT_INFO("Received '%s'", MSG_task_get_name(task));
-    if (!strcmp(MSG_task_get_name(task), "finalize")) {
-      MSG_task_destroy(task);
-      break;
-    }
-
-    XBT_INFO("Processing \"%s\"", MSG_task_get_name(task));
-    MSG_task_execute(task);
-    XBT_INFO("'%s' done", MSG_task_get_name(task));
-    MSG_task_destroy(task);
-  }
-  XBT_INFO("I'm done. See you!");
-  return 0;
-} /* end_of_worker */
-
-/** Main function */
-int main(int argc, char* argv[])
-{
-
-  MSG_init(&argc, argv);
-  xbt_assert(argc > 2,
-             "Usage: %s platform_file deployment_file\n"
-             "\tExample: %s msg_platform.xml msg_deployment.xml\n",
-             argv[0], argv[0]);
-
-  /*  Create a simulated platform */
-  MSG_create_environment(argv[1]);
-
-  /*   Application deployment */
-  MSG_function_register("master", master);
-  MSG_function_register("worker", worker);
-  MSG_launch_application(argv[2]);
-
-  /* Run the simulation */
-  msg_error_t res = MSG_main();
-
-  XBT_INFO("Simulation time %g", MSG_get_clock());
-  return (res != MSG_OK);
-} /* end_of_main */
diff --git a/doc/tuto-msg/overview.svg b/doc/tuto-msg/overview.svg
deleted file mode 100644 (file)
index c318876..0000000
+++ /dev/null
@@ -1,1240 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="86.313606mm"
-   height="41.106529mm"
-   viewBox="0 0 86.313605 41.106529"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="overview.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1496"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1502"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend-1"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1496-6"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend-8"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1496-1"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend-3"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1496-3"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1496-8"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="2.8"
-     inkscape:cx="75.667359"
-     inkscape:cy="76.402423"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1019"
-     inkscape:window-x="0"
-     inkscape:window-y="32"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-29.950586,-101.20699)">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.80246687px;line-height:4.0930109px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="47.823597"
-       y="119.2951"
-       id="text817"><tspan
-         sodipodi:role="line"
-         id="tspan815"
-         x="47.823597"
-         y="119.2951"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.16372044px">Master</tspan></text>
-    <ellipse
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.43658787;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="path819"
-       cx="55.781475"
-       cy="121.76025"
-       rx="12.693116"
-       ry="8.3518229" />
-    <g
-       id="g5649"
-       transform="matrix(0.61878596,0,0,0.61878596,10.598982,54.807393)">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,62.219405,60.11345)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-15"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-06"
-         y="107.92625"
-         x="85.694588"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="107.92625"
-           x="85.694588"
-           id="tspan815-8-50"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       id="g5641"
-       transform="matrix(0.61878596,0,0,0.61878596,11.505291,54.982808)">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       id="g1489"
-       transform="matrix(0.61878596,0,0,0.61878596,19.779021,54.251913)">
-      <g
-         transform="translate(0.29020366)"
-         id="g1294">
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           x="125.17461"
-           y="85.676834"
-           id="text817-3"><tspan
-             sodipodi:role="line"
-             id="tspan815-8"
-             x="125.17461"
-             y="85.676834"
-             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
-        <ellipse
-           style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="path1289"
-           cx="138.98015"
-           cy="82.78347"
-           rx="16.30344"
-           ry="6.5481029" />
-      </g>
-      <g
-         id="g1294-6"
-         transform="translate(0.29020366,13.157293)">
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           x="125.17461"
-           y="85.676834"
-           id="text817-3-0"><tspan
-             sodipodi:role="line"
-             id="tspan815-8-89"
-             x="125.17461"
-             y="85.676834"
-             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
-        <ellipse
-           style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="path1289-2"
-           cx="138.98015"
-           cy="82.78347"
-           rx="16.30344"
-           ry="6.5481029" />
-      </g>
-      <g
-         id="g1294-2"
-         transform="translate(0.29020366,26.31459)">
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           x="125.17461"
-           y="85.676834"
-           id="text817-3-3"><tspan
-             sodipodi:role="line"
-             id="tspan815-8-18"
-             x="125.17461"
-             y="85.676834"
-             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
-        <ellipse
-           style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="path1289-3"
-           cx="138.98015"
-           cy="82.78347"
-           rx="16.30344"
-           ry="6.5481029" />
-      </g>
-      <g
-         id="g1294-4"
-         transform="translate(0.29020366,52.629172)">
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           x="125.17461"
-           y="85.676834"
-           id="text817-3-2"><tspan
-             sodipodi:role="line"
-             id="tspan815-8-2"
-             x="125.17461"
-             y="85.676834"
-             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
-        <ellipse
-           style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="path1289-4"
-           cx="138.98015"
-           cy="82.78347"
-           rx="16.30344"
-           ry="6.5481029" />
-      </g>
-      <g
-         id="g1294-5"
-         transform="translate(0.29020366,39.471889)">
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           x="125.17461"
-           y="85.676834"
-           id="text817-3-1"><tspan
-             sodipodi:role="line"
-             id="tspan815-8-75"
-             x="125.17461"
-             y="85.676834"
-             style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
-        <ellipse
-           style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-           id="path1289-7"
-           cx="138.98015"
-           cy="82.78347"
-           rx="16.30344"
-           ry="6.5481029" />
-      </g>
-    </g>
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
-       d="m 68.602797,121.43899 27.144559,-16.2551"
-       id="path1491"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-1)"
-       d="m 68.602797,121.43899 27.144559,-8.05361"
-       id="path1491-9"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-8)"
-       d="m 68.602797,121.43899 27.144559,0.14787"
-       id="path1491-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-3)"
-       d="m 68.602797,121.43899 27.144559,8.34936"
-       id="path1491-7"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-9)"
-       d="m 68.602797,121.43899 27.144559,16.55085"
-       id="path1491-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.80246687px;line-height:4.0930109px;font-family:'Amiri Quran Colored';-inkscape-font-specification:'Amiri Quran Colored';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="58.617321"
-       y="135.63525"
-       id="text4842"><tspan
-         sodipodi:role="line"
-         id="tspan4840"
-         x="58.617321"
-         y="135.63525"
-         style="text-align:center;text-anchor:middle;fill:#ff0000;stroke-width:0.16372044px">How should the master</tspan><tspan
-         sodipodi:role="line"
-         x="58.617321"
-         y="139.81946"
-         style="text-align:center;text-anchor:middle;fill:#ff0000;stroke-width:0.16372044px"
-         id="tspan5522">distribute the tasks?</tspan></text>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,12.703959,52.631832)"
-       id="g5641-0">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-4"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-8"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-4"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,14.01957,54.912224)"
-       id="g5641-8">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-1"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-6"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-8"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,12.236186,57.484974)"
-       id="g5641-5">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-2"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-1"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-9"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,14.896644,57.777332)"
-       id="g5641-9">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-6"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-0"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-6"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,17.586337,57.046437)"
-       id="g5641-4">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-9"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-9"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-0"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,17.264743,54.093622)"
-       id="g5641-89">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-3"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-14"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-89"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,18.083346,59.765366)"
-       id="g5641-6">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-7"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-7"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-3"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,15.422888,60.262374)"
-       id="g5641-7">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-12"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-2"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-1"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,19.282013,61.987286)"
-       id="g5641-50">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-90"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-4"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-01"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,20.539152,59.414536)"
-       id="g5641-3">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-74"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-11"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-30"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,20.042144,56.05242)"
-       id="g5641-32">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-17"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-5"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-65"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,22.614894,54.473687)"
-       id="g5641-42">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-21"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-72"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-41"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,22.84878,56.987965)"
-       id="g5641-65">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-78"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-59"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-2"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,23.024194,59.882309)"
-       id="g5641-73">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-64"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-79"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-7"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,28.081987,59.18065)"
-       id="g5641-2">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-216"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-3"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-02"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,25.713888,57.572681)"
-       id="g5641-1">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-5"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-65"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-00"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,28.929825,56.841786)"
-       id="g5641-34">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-66"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-02"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-5"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,25.129172,55.029167)"
-       id="g5641-895">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-0"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-60"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-83"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,28.023516,54.269036)"
-       id="g5641-78">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-210"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-58"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-55"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,22.264064,62.133465)"
-       id="g5641-07">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-38"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-23"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-07"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,25.450765,61.431807)"
-       id="g5641-77">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-69"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-119"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-08"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,28.052752,61.519514)"
-       id="g5641-98">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-8"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-03"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-70"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,31.151746,59.794602)"
-       id="g5641-69">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-217"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-797"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-62"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,31.736462,57.309559)"
-       id="g5641-71">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-58"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-84"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-56"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <g
-       transform="matrix(0.61878596,0,0,0.61878596,34.163033,55.263054)"
-       id="g5641-56">
-      <path
-         transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
-         inkscape:transform-center-y="-0.1233255"
-         inkscape:transform-center-x="0.088729829"
-         d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0.2"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.610775"
-         sodipodi:arg1="0.82537685"
-         sodipodi:r2="3.6409302"
-         sodipodi:r1="4.7284808"
-         sodipodi:cy="96.547852"
-         sodipodi:cx="41.159508"
-         sodipodi:sides="4"
-         id="path823-226-84"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="star" />
-      <text
-         id="text817-8-91-88"
-         y="108.54047"
-         x="52.338184"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
-           y="108.54047"
-           x="52.338184"
-           id="tspan815-8-04-38"
-           sodipodi:role="line">T</tspan></text>
-    </g>
-    <ellipse
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.44087529;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="path5967"
-       cx="75.089897"
-       cy="120.15488"
-       rx="3.0595784"
-       ry="6.408577" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.57525826px;line-height:3.97712588px;font-family:'Amiri Quran Colored';-inkscape-font-specification:'Amiri Quran Colored';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.15908505px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="72.321075"
-       y="130.08104"
-       id="text5965"
-       transform="scale(1.0291379,0.97168708)"><tspan
-         sodipodi:role="line"
-         id="tspan5963"
-         x="72.321075"
-         y="130.08104"
-         style="font-size:13.57525826px;fill:#ff0000;stroke-width:0.15908505px">?</tspan></text>
-  </g>
-</svg>
diff --git a/doc/tuto-msg/tuto-msg.doc b/doc/tuto-msg/tuto-msg.doc
deleted file mode 100644 (file)
index c0ebbb3..0000000
+++ /dev/null
@@ -1,428 +0,0 @@
-/*! @page tutorial_msg SimGrid Tutorial with MSG
-
-@tableofcontents
-
-@section tuto-msg-intro Introduction
-
-@subsection tuto-msg-intro-settings Settings
-
-@warning Before you take this tutorial, you should remember that the
-MSG interface is currently deprecated. It means that it will remain as
-is, inchanged, for a few years, but that new developments should use
-the new S4U interface instead. Unfortunately, the S4U tutorial is not
-written yet. Sorry about that.
-
-This tutorial will guide your create and run your first SimGrid
-simulator. Let's consider the following scenario:
-
-> Assume we have a (possibly large) bunch of (possibly large) data to
-> process and which originally reside on a server (a.k.a. master). For
-> sake of simplicity, we assume all input file require the same amount
-> of computation. We assume the server can be helped by a (possibly
-> large) set of worker machines. What is the best way to organize the
-> computations ?
-
-@htmlonly
-<div align="center">
-@endhtmlonly
-@htmlinclude tuto-msg/overview.svg
-@htmlonly
-</div>
-@endhtmlonly
-
-@subsection tuto-msg-intro-questions Raised Questions
-
-Although this looks like a very simple setting it raises several
-interesting questions:
-
-- Which algorithm should the master use to send workload?
-
-    The provided code sends the tasks to the workers with a trivial
-    round-robin algorithm. It would probably be more efficient if the
-    workers were asking for tasks, to let the master distribute the
-    tasks in a more cleaver way.
-
-- Should the worker specify how many tasks they want? Or should the
-  master decide everything?
-
-    The workers will starve if they don't get the tasks fast
-    enough. One possibility to reduce latency would be to send tasks
-    in pools instead of one by one. But if the pools are too big, the
-    load balancing will likely get uneven, in particular when
-    distributing the last tasks.
-
-- How does the quality of such algorithm dependent on the platform
-    characteristics and on the task characteristics?
-
-    Whenever the input communication time is very small compared to
-    processing time and workers are homogeneous, it is likely that the
-    round-robin algorithm performs very well. Would it still hold true
-    when transfer time is not negligible and the platform is, say, a
-    volunteer computing system ? What if some tasks are performed
-    faster on some specific nodes?
-
-- The network topology interconnecting the master and the workers
-  may be quite complicated. How does such a topology impact the
-  previous result?
-
-    When data transfers are the bottleneck, it is likely that a good
-    modeling of the platform becomes essential. The SimGrid platform
-    models are particularly handy to account for complex platform
-    topologies.
-
-- What topology to use for the application? 
-
-    Is a flat master worker deployment sufficient? Should we go for a
-    hierarchical algorithm, with some forwarders taking large pools of
-    tasks from the master, each of them distributing their tasks to a
-    sub-pool of workers? Or should we introduce super-peers,
-    dupplicating the master's role in a peer-to-peer manner?  Do the
-    algorithms require a perfect knowledge of the network?
-
-- How is such an algorithm sensitive to external workload variation?
-
-    What if bandwidth, latency and computing speed can vary with no
-    warning?  Shouldn't you study whether your algorithm is sensitive
-    to such load variations?
-
-- Although an algorithm may be more efficient than another, how
-  does it interfere with other applications?
-
-
-- Etc, etc.
-
-As you can see, this very simple setting may need to evolve way beyond
-what you initially imagined. And this is a good news.
-
-But don't believe the fools saying that all you need to study such
-settings is a simple discrete event simulator. Do you really want to
-reinvent the wheel, write your own tool, debug it, optimize it and
-validate its models against real settings for ages, or do you prefer
-to sit on the shoulders of a giant?<br>
-With SimGrid, you can forget about most technical details (but not
-all), and focus on your algorithm. The whole simulation mechanism is
-already working.
-
-@subsection tuto-msg-intro-goal Envisionned Study
-
-
-The following figure is a screenshot of [triva][fn:1] visualizing a [SimGrid
-simulation][fn:2] of two master worker applications (one in light gray and
-the other in dark gray) running in concurrence and showing resource
-usage over a long period of time.
-
-![Test](./sc3-description.png)
-
-@section tuto-msg-starting Getting Started
-
-@subsection tuto-msg-prerequesite Prerequisite
-
-In this example, we use Pajeng and Vite to visualize the result of
-SimGrid simulations. These external tools are usually very easy to
-install. On Debian and Ubuntu for example, you can get them as follows:
-
-~~~~{.sh}
-sudo apt-get install pajeng vite
-~~~~
-
-@subsection tuto-msg-setup Setting up and Compiling
-
-The corresponding source files can be obtained
-[online on GitLab](https://gitlab.inria.fr/simgrid/simgrid/tree/master/doc/tuto-msg/src). 
-There is a button on the top right to download the whole 
-directory in one archive file. If you wish, other platform files are available from 
-[this GitLab directory](https://gitlab.inria.fr/simgrid/simgrid/tree/master/examples/platforms).
-
-As you can see, there is already a little Makefile that compiles
-everything for you. If you struggle with the compilation, then you should double check 
-your @ref install "SimGrid installation". 
-On need, please refer to the @ref install_yours_trouble section.
-
-@section tuto-msg-ex0 Discovering the provided simulator
-
-Please compile and execute the provided simulator as follows:
-
-~~~~{.sh}
-make masterworker
-./masterworker examples/platforms/small_platform.xml deployment0.xml
-~~~~
-
-For a more "fancy" output, you can use simgrid-colorizer. 
-
-~~~~{.sh}
-./masterworker examples/platforms/small_platform.xml deployment0.xml 2>&1 | simgrid-colorizer
-~~~~
-
-If you installed SimGrid to a non-standard path, you may have to
-specify the full path to simgrid-colorizer on the above line, such as
-@c /opt/simgrid/bin/simgrid-colorizer. If you did not install it at all,
-you can find it in @<simgrid_root_directory@>/bin/colorize.
-
-For a classical Gantt-Chart visualization, you can produce a [Paje][fn:5] trace:
-
-~~~~{.sh}
-./masterworker platforms/platform.xml deployment0.xml --cfg=tracing:yes \
-    --cfg=tracing/msg/process:yes
-pajeng simgrid.trace
-~~~~
-
-Alternatively, you can use [vite][fn:6].
-
-~~~~{.sh}
-./masterworker platforms/platform.xml deployment0.xml --cfg=tracing:yes \
-    --cfg=tracing/msg/process:yes --cfg=tracing/basic:yes
-vite simgrid.trace
-~~~~
-
-@subsection tuto-msg-exo0-source Understanding this source code
-
-Explore the @ref doc/tuto-msg/masterworker.c source file. It contains 3 functions:
- - @c master: that's the code executed by the master process.<br>
-   It creates a large array containing all tasks,
-   dispatches all tasks to the workers and then dispatch
-   specific tasks which name is "finalize". 
- - @c worker: each workers will execute this function.<br>
-   That's an infinite loop waiting for incomming tasks.
-   We exit the loop if the name of the received task is "finalize", or process the task otherwise.
- - @c main: this setups the simulation.
-
-How does SimGrid know that we need one master and several workers?
-Because it's written in the deployment file (called @c
-deployment0.xml), that we pass to MSG_create_environment() during the setup.
-
-@include doc/tuto-msg/deployment0.xml
-
-@section tuto-msg-exo1 Exercise 1: Simplifying the deployment file
-
-In the provided example, the deployment file `deployment0.xml` is
-tightly connected to the platform file `small_platform.xml` and adding
-more workers quickly becomes a pain: You need to start them (at the
-bottom of the file), add to inform the master that they are available
-(in the master parameters list).
-
-Instead, modify the simulator `masterworker.c` into `masterworker-exo1.c`
-so that the master launches a worker process on all the other machines
-at startup. The new deployment file `deployment1.xml` should be as
-simple as:
-
-@include doc/tuto-msg/deployment1.xml
-
-For that, the master needs to retrieve the list of hosts declared in
-the platform, with the following functions (follow the links for their
-documentation):
-
-~~~~{.c}
-int MSG_get_host_number(void);
-xbt_dynar_t MSG_hosts_as_dynar(void);
-void * xbt_dynar_to_array (xbt_dynar_t dynar);
-~~~~
-
-Then, the master should start the worker processes with the following function:
-
-~~~~{.c}
-msg_process_t MSG_process_create(const char *name, xbt_main_func_t code, void *data, msg_host_t host);
-~~~~
-
-@subsection tuto-msg-exo1-config Increasing configurability
-
-The worker processes wait for incomming messages on a channel which
-name they need to know beforehand. In the provided code, each worker
-uses the name of its host as a channel name. You can see this in the
-receiver source code:
-
-~~~~{.c}
-    int res = MSG_task_receive(&(task), MSG_host_get_name(MSG_host_self()));
-    xbt_assert(res == MSG_OK, "MSG_task_receive failed");
-~~~~
-
-This way, you can have at most one worker per host. To later study the
-behavior of concurrent applications on the platform, we need to
-alleviate this. Several solutions exist:
-
-Now that the the master creates the workers, it knows their PID
-(process ID -- given by @ref MSG_process_get_PID()), so you could use
-it in the channel name.
-
-Another possibility for the master is to determine a channel name
-before the process creation, and give that name as a parameter to the
-starting process. This is what the `data` parameter of @ref
-MSG_process_create is meant for. You can pass any arbitrary pointer,
-and the created process can retrieve this value later with the @ref
-MSG_process_get_data and @ref MSG_process_self functions.  Since we
-want later to study concurrent applications, it is advised to use a
-channel name such as `master_name:worker_name`.
-
-A third possibility would be to inverse the communication architecture
-and have the workers pulling work from the master. This require to
-pass the master's channel to the workers.
-
-@subsection tuto-msg-exo1-wrapup Wrap up 
-
-In this exercise, we reduced the amount of configuration that our
-simulator requests. This is both a good idea, and a dangerous
-trend. This simplification is an application of the good old DRY/SPOT
-programming principle (Don't Repeat Yourself / Single Point Of Truth
--- <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself">more on wikipedia</a>),
-and you really want your programming artefacts to follow these software engineering principles.
-
-But at the same time, you should be careful in separating your
-scientific contribution (the master/wokers algorithm) and the
-artefacts used to test it (platform, deployment and workload). This is
-why SimGrid forces you to expres your platform and deployment files in
-XML instead of using a programming interface: it forces a clear
-separation of concerns between things that are of very different
-nature.
-
-If you struggle with this exercise, have a look at
-our solution in @ref doc/tuto-msg/masterworker-sol1.c
-This is not perfect at all, and many other solutions would have been possible, of course.
-
-@section tuto-msg-exo2 Exercise 2: Infinite amount of work, fixed experiment duration
-
-In the current version, the number of tasks is defined through the
-worker arguments. Hence, tasks are created at the very beginning of
-the simulation. Instead, have the master dispatching tasks for a
-predetermined amount of time.  The tasks must now be created on demand
-instead of beforehand.
-
-Of course, usual time functions like `gettimeofday` will give you the
-time on your real machine, which is prety useless in the
-simulation. Instead, retrieve the time in the simulated world with
-@ref MSG_get_clock.
-
-You can still stop your workers with a specific task as previously,
-but other methods exist. You can forcefully stop processes with the
-following functions, but be warned that SimGrid traditionnally had
-issues with forcefully stopping procsses involved in computations or
-communications. We hope that it's better now, but YMMV.
-
-~~~~{.c}
-void MSG_process_kill(msg_process_t process);
-int MSG_process_killall(int reset_PIDs);
-~~~~
-
-Anyway, the new deployment `deployment2.xml` file should thus look
-like this:
-
-@include doc/tuto-msg/deployment2.xml
-
-@subsection tuto-msg-exo2-verbosity Controlling the message verbosity
-
-Not all messages are equally informative, so you probably want to
-change most of the `XBT_INFO` into `XBT_DEBUG` so that they are hidden
-by default. You could for example show only the total number of tasks
-processed by default. You can still see the debug messages as follows:
-
-~~~~{.sh}
-./masterworker examples/platforms/small_platform.xml deployment2.xml --log=msg_test.thres:debug
-~~~~
-
-@subsection tuto-msg-exo2-wrapup Wrap up
-
-Our imperfect solution to this exercise is available as @ref doc/tuto-msg/masterworker-sol2.c
-But there is still much to improve in that code.
-
-@section tuto-msg-exo3 Exercise 3: Understanding how competing applications behave
-
-It is now time to start several applications at once, with the following `deployment3.xml` file.
-
-@include doc/tuto-msg/deployment3.xml
-
-Things happen when you do so, but it remains utterly difficult to
-understand what's happening exactely. Even visualizations with pajeng
-and Vite contain too much information to be useful: it is impossible
-to understand which task belong to which application. To fix this, we
-will categorize the tasks.
-
-For that, first let each master create its own category of tasks with
-@ref TRACE_category(), and then assign this category to each task using
-@ref MSG_task_set_category().
-
-The outcome can then be visualized as a Gantt-chart as follows:
-
-~~~~{.sh}
-./masterworker examples/platforms/small_platform.xml deployment3.xml --cfg=tracing:yes --cfg=tracing/msg/process:yes
-vite simgrid.trace
-~~~~
-
-@subsection tuto-msg-exo3-further Going further
-
-vite is not enough to understand the situation, because it does not
-deal with categorization. That is why you should switch to R to
-visualize your outcomes, as explained on <a
-href="http://simgrid.gforge.inria.fr/contrib/R_visualization.php">this
-page</a>.
-
-As usual, you can explore our imperfect solution, in @ref doc/tuto-msg/masterworker-sol3.c.
-
-@section tuto-msg-exo4 Exercise 4: Better scheduling: FCFS
-
-You don't need a very advanced visualization solution to notice that
-round-robin is completely suboptimal: most of the workers keep waiting
-for more work. We will move to a First-Come First-Served mechanism
-instead.
-
-For that, your workers should explicitely request for work with a
-message sent to a channel that is specific to their master. The name
-of their private channel name should be attached (using the last
-parameter of @ref MSG_task_create()) to the message sent, so that
-their master can answer.
-
-The master should serve requests in a round-robin manner, until the
-time is up. Things get a bit more complex to stop the workers
-afterward: the master cannot simply send a terminating task, as the
-workers are blocked until their request for work is accepted. So
-instead, the master should wait for incomming requests even once the
-time is up, and answer with a terminating task.
-
-Once it works, you will see that such as simple FCFS schema allows to
-double the amount of tasks handled over time in this case.
-
-@subsection tuto-msg-exo4-further Going further
-
-From this, many things can easily be added. For example, you could:
-- Allow workers to have several pending requests so as to overlap
-  communication and computations as much as possible. Non-blocking communication will probably become handy here.
-- Add a performance measurement mechanism, enabling the master to make smart scheduling choices.
-- Test your code on other platforms, from the `examples/platforms` directory in your archive.<br>
-  What is the largest number of tasks requiring 50e6 flops and 1e5
-  bytes that you manage to distribute and process in one hour on
-  `g5k.xml` (you should use `deployment_general.xml`)?
-- Optimize not only for the amount of tasks handled, but also for the total energy dissipated.
-- And so on. If you come up with a really nice extension, please share it with us so that we can extend this tutorial.
-
-@section tuto-msg-further Where to go from here?
-
-This tutorial is now terminated. You could keep reading the [online documentation][fn:4] or
-[tutorials][fn:7], or you could head up to the example section to read some code.
-
-@subsection tuto-msg-further-todo TODO: Points to improve for the next time
-
-- Propose equivalent exercises and skeleton in java.
-- Propose a virtualbox image with everything (simgrid, pajeng, ...) already set
-  up.
-- Ease the installation on mac OS X (binary installer) and
-  windows.
-- Explain that programming in C or java and having a working
-  development environment is a prerequisite.
-
-
-[fn:1]: http://triva.gforge.inria.fr/index.html
-[fn:2]: http://hal.inria.fr/inria-00529569
-[fn:3]: http://hal.inria.fr/hal-00738321
-[fn:4]: http://simgrid.gforge.inria.fr/simgrid/latest/doc/
-[fn:5]: https://github.com/schnorr/pajeng/
-[fn:6]: http://vite.gforge.inria.fr/
-[fn:7]: http://simgrid.org/tutorials/
-
-
-*/
-
-
-/**
- *  @example doc/tuto-msg/masterworker.c
- *  @example doc/tuto-msg/masterworker-sol1.c
- *  @example doc/tuto-msg/masterworker-sol2.c
- *  @example doc/tuto-msg/masterworker-sol3.c
- *  @example doc/tuto-msg/masterworker-sol4.c
- */
index fc1eb63..7b8a9b7 100644 (file)
@@ -21,6 +21,10 @@ be either an existing MPI program (if you use the SMPI interface), or
 a program specifically written to execute within SimGrid, using one of
 the dedicated APIs.
 
+.. raw:: html
+
+   <hr/>
+
 .. _S4U_doc:
 
 The S4U Interface
@@ -57,9 +61,9 @@ synchronization mechanisms** such as |Barrier|_, |Semaphore|_,
 |Mutex|_ and |ConditionVariable|_.
 
 Each actor is located on a simulated |Host|_. Each host is located
-itself in a |NetZone|_, that route communications through the
-links. Each NetZone is included in another one, forming a tree of
-NetZones which root zone contains the whole platform.
+itself in a |NetZone|_, that knows the networking path between one
+resource to another. Each NetZone is included in another one, forming
+a tree of NetZones which root zone contains the whole platform.
 
 The :ref:`simgrid::s4u::this_actor
 <namespace_simgrid__s4u__this_actor>` namespace provides many helper
@@ -95,7 +99,7 @@ functions to simplify the code of actors.
   - :ref:`class s4u::Exec <exhale_class_classsimgrid_1_1s4u_1_1Exec>`
     Computation activity, started on Host and consuming CPU resources.
   - :ref:`class s4u::Io <exhale_class_classsimgrid_1_1s4u_1_1Io>`
-    I/O activities, started on and consumming Storages.
+    I/O activity, started on and consumming Storages.
 
 - **Synchronization Mechanisms**: Classical IPC that actors can use
 
index a180643..ef590e6 100644 (file)
@@ -1,4 +1,11 @@
 .. _models:
 
 The SimGrid Models
-===================
+==================
+
+.. todo::
+
+   - Main existing models (contention, cste, LM07)
+   - Main concepts (Routing, LMM) + link to the papers
+   - How to switch on the command line
+
index defdec2..43d927a 100644 (file)
@@ -3,4 +3,16 @@
 Describing the Experimental Scenario
 ************************************
 
+.. todo::
+
+   Main concepts:
+
+   - Deployment file
+   - Availability and state profiles
+   - Reproducible random number generation
+   - Command line options, in particular on the model switching
+
 .. include:: scenar_config.rst
+
+
+            
index bd9de44..68ecbc5 100644 (file)
@@ -878,7 +878,6 @@ set(DOC_SOURCES
   doc/doxygen/community.doc
   doc/doxygen/deployment.doc
   doc/doxygen/footer.html
-  doc/doxygen/getting_started.doc
   doc/doxygen/header.html
   doc/doxygen/howtos.doc
   doc/doxygen/index.doc
@@ -891,10 +890,7 @@ set(DOC_SOURCES
   doc/doxygen/install.doc
   doc/doxygen/install_yours.doc
   doc/doxygen/java.doc
-  doc/tuto-msg/tuto-msg.doc
-  doc/tuto-msg/overview.svg
   doc/doxygen/tutorial_smpi.doc
-  doc/doxygen/models.doc
   doc/doxygen/module-msg.doc
   doc/doxygen/module-s4u.doc
   doc/doxygen/module-sd.doc
@@ -912,7 +908,6 @@ set(DOC_SOURCES
   doc/doxygen/outcomes_vizu.doc
   doc/doxygen/platform.doc
   doc/doxygen/platform_lua.doc
-  doc/doxygen/scenario.doc
   doc/doxygen/stylesheet.css
   doc/doxygen/uhood.doc
   doc/doxygen/uhood_switch.doc
@@ -925,18 +920,6 @@ set(DOC_SOURCES
   doc/manpage/smpirun.1
   doc/manpage/tesh.pod
 
-  doc/tuto-msg/deployment0.xml
-  doc/tuto-msg/deployment1.xml
-  doc/tuto-msg/deployment2.xml
-  doc/tuto-msg/deployment3.xml
-  doc/tuto-msg/deployment_general.xml
-  doc/tuto-msg/Makefile
-  doc/tuto-msg/masterworker.c
-  doc/tuto-msg/masterworker-sol1.c
-  doc/tuto-msg/masterworker-sol2.c
-  doc/tuto-msg/masterworker-sol3.c
-  doc/tuto-msg/masterworker-sol4.c
-
   CITATION.bib
   )