diff --git a/MANIFEST.in b/MANIFEST.in
index 6154f1db0f6bdba5fc6a689dfe5e99f3ef4513a2..7e877d8ac59d89a3ea540ee0bc0dbc89dbcdbb73 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,3 +1,3 @@
 include LICENSE README.rst buildout.cfg develop.cfg version.txt requirements.txt test-requirements.txt
 recursive-include doc *.py *.rst
-recursive-include bob/bio/base/test/data *.lst *.hdf5 *-dev *.pos
+recursive-include bob/bio/base/test/data *.* *-dev
diff --git a/bob/bio/base/score/__init__.py b/bob/bio/base/score/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..df3dd386139b9bf99822c93b8424dcc76fcff968
--- /dev/null
+++ b/bob/bio/base/score/__init__.py
@@ -0,0 +1,6 @@
+from .load import (open_file, split, cmc, split_four_column, four_column,
+                   split_five_column, five_column, scores, load_score,
+                   dump_score, cmc_four_column, cmc_five_column
+                  )
+from .openbr import (write_matrix, write_score_file)
+
diff --git a/bob/bio/base/score/load.py b/bob/bio/base/score/load.py
new file mode 100644
index 0000000000000000000000000000000000000000..0d5bdb7fef2bb6df6a46fdc85a9ed96291e7d4b8
--- /dev/null
+++ b/bob/bio/base/score/load.py
@@ -0,0 +1,588 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Mon 23 May 2011 16:23:05 CEST
+
+"""A set of utilities to load score files with different formats.
+"""
+
+import numpy
+import csv
+import tarfile
+import os
+import sys
+
+import logging
+logger = logging.getLogger('bob.bio.base')
+
+
+def open_file(filename, mode='rt'):
+  """Opens the given score file for reading.
+
+  Score files might be raw text files, or a tar-file including a single score
+  file inside.
+
+
+  Parameters:
+
+    filename (:py:class:`str`, ``file-like``): The name of the score file to
+      open, or a file-like object open for reading. If a file name is given,
+      the according file might be a raw text file or a (compressed) tar file
+      containing a raw text file.
+
+
+  Returns:
+
+
+    ``file-like``: A read-only file-like object as it would be returned by
+    :py:func:`open`.
+
+  """
+
+  if not isinstance(filename, str) and hasattr(filename, 'read'):
+    # It seems that this is an open file
+    return filename
+
+  if not os.path.isfile(filename):
+    raise IOError("Score file '%s' does not exist." % filename)
+  if not tarfile.is_tarfile(filename):
+    return open(filename, mode)
+
+  # open the tar file for reading
+  tar = tarfile.open(filename, 'r')
+  # get the first file in the tar file
+  tar_info = tar.next()
+  while tar_info is not None and not tar_info.isfile():
+    tar_info = tar.next()
+  # check that one file was found in the archive
+  if tar_info is None:
+    raise IOError(
+        "The given file is a .tar file, but it does not contain any file.")
+
+  # open the file for reading
+  return tar.extractfile(tar_info)
+
+
+def four_column(filename):
+  """Loads a score set from a single file and yield its lines
+
+  Loads a score set from a single file and yield its lines (to avoid loading
+  the score file at once into memory).  This function verifies that all fields
+  are correctly placed and contain valid fields.  The score file must contain
+  the following information in each line:
+
+  .. code-block:: text
+
+     claimed_id real_id test_label score
+
+
+  Parameters:
+
+    filename (:py:class:`str`, ``file-like``): The file object that will be
+      opened with :py:func:`open_file` containing the scores.
+
+
+  Yields:
+
+    str: The claimed identity -- the client name of the model that was used in
+    the comparison
+
+    str: The real identity -- the client name of the probe that was used in the
+    comparison
+
+    str: A label of the probe -- usually the probe file name, or the probe id
+
+    float: The result of the comparison of the model and the probe
+
+  """
+  return _iterate_score_file(filename)
+
+
+def split_four_column(filename):
+  """Loads a score set from a single file and splits the scores
+
+  Loads a score set from a single file and splits the scores between negatives
+  and positives. The score file has to respect the 4 column format as defined
+  in the method :py:func:`four_column`.
+
+  This method avoids loading and allocating memory for the strings present in
+  the file. We only keep the scores.
+
+
+  Parameters:
+
+    filename (:py:class:`str`, ``file-like``): The file object that will be
+      opened with :py:func:`open_file` containing the scores.
+
+
+  Returns:
+
+    array: negatives, 1D float array containing the list of scores, for which
+      the ``claimed_id`` and the ``real_id`` are different
+      (see :py:func:`four_column`)
+
+    array: positives, 1D float array containing the list of scores, for which
+      the ``claimed_id`` and the ``real_id`` are identical
+      (see :py:func:`four_column`)
+
+  """
+
+  score_lines = four_column(filename)
+  return _split_scores(score_lines, 1)
+
+
+def cmc_four_column(filename):
+  """Loads scores to compute CMC curves from a file in four column format.
+
+  The four column file needs to be in the same format as described in
+  :py:func:`four_column`, and the ``test_label`` (column 3) has to contain the
+  test/probe file name or a probe id.
+
+  This function returns a list of tuples.  For each probe file, the tuple
+  consists of a list of negative scores and a list of positive scores.
+  Usually, the list of positive scores should contain only one element, but
+  more are allowed.  The result of this function can directly be passed to,
+  e.g., the :py:func:`bob.measure.cmc` function.
+
+
+  Parameters:
+
+    filename (:py:class:`str`, ``file-like``): The file object that will be
+      opened with :py:func:`open_file` containing the scores.
+
+
+  Returns:
+
+    :any:`list`: A list of tuples, where each tuple contains the
+    ``negative`` and ``positive`` scores for one probe of the database. Both
+    ``negatives`` and ``positives`` can be either an 1D
+    :py:class:`numpy.ndarray` of type ``float``, or ``None``.
+
+  """
+
+  score_lines = four_column(filename)
+  return _split_cmc_scores(score_lines, 1)
+
+
+def five_column(filename):
+  """Loads a score set from a single file and yield its lines
+
+  Loads a score set from a single file and yield its lines (to avoid loading
+  the score file at once into memory).  This function verifies that all fields
+  are correctly placed and contain valid fields.  The score file must contain
+  the following information in each line:
+
+  .. code-block:: text
+
+     claimed_id model_label real_id test_label score
+
+
+  Parameters:
+
+    filename (:py:class:`str`, ``file-like``): The file object that will be
+      opened with :py:func:`open_file` containing the scores.
+
+
+  Yields:
+
+    str: The claimed identity -- the client name of the model that was used in
+    the comparison
+
+    str: A label for the model -- usually the model file name, or the model id
+
+    str: The real identity -- the client name of the probe that was used in the
+    comparison
+
+    str: A label of the probe -- usually the probe file name, or the probe id
+
+    float: The result of the comparison of the model and the probe
+
+  """
+
+  return _iterate_score_file(filename)
+
+
+def split_five_column(filename):
+  """Loads a score set from a single file and splits the scores
+
+  Loads a score set from a single file in five column format and splits the
+  scores between negatives and positives. The score file has to respect the 5
+  column format as defined in the method :py:func:`five_column`.
+
+  This method avoids loading and allocating memory for the strings present in
+  the file. We only keep the scores.
+
+
+  Parameters:
+
+    filename (:py:class:`str`, ``file-like``): The file object that will be
+      opened with :py:func:`open_file` containing the scores.
+
+
+  Returns:
+
+    array: negatives, 1D float array containing the list of scores, for which
+      the ``claimed_id`` and the ``real_id`` are different
+      (see :py:func:`four_column`)
+
+    array: positives, 1D float array containing the list of scores, for which
+      the ``claimed_id`` and the ``real_id`` are identical
+      (see :py:func:`four_column`)
+
+  """
+
+  score_lines = four_column(filename)
+  return _split_scores(score_lines, 2)
+
+
+def cmc_five_column(filename):
+  """Loads scores to compute CMC curves from a file in five column format.
+
+  The five column file needs to be in the same format as described in
+  :py:func:`five_column`, and the ``test_label`` (column 4) has to contain the
+  test/probe file name or a probe id.
+
+  This function returns a list of tuples.  For each probe file, the tuple
+  consists of a list of negative scores and a list of positive scores.
+  Usually, the list of positive scores should contain only one element, but
+  more are allowed.  The result of this function can directly be passed to,
+  e.g., the :py:func:`bob.measure.cmc` function.
+
+
+  Parameters:
+
+    filename (:py:class:`str`, ``file-like``): The file object that will be
+      opened with :py:func:`open_file` containing the scores.
+
+
+  Returns:
+
+    :any:`list`: A list of tuples, where each tuple contains the
+    ``negative`` and ``positive`` scores for one probe of the database.
+
+  """
+  score_lines = four_column(filename)
+  return _split_cmc_scores(score_lines, 2)
+
+
+def scores(filename, ncolumns=None):
+  """scores(filename, ncolumns=None) -> tuple
+
+  Loads the scores from the given score file and yield its lines.
+  Depending on the score file format, four or five elements are yielded, see
+  :py:func:`bob.bio.base.score.load.four_column` and
+  :py:func:`bob.bio.base.score.load.five_column` for details.
+
+  Parameters:
+
+  filename:  :py:class:`str`, ``file-like``:
+    The file object that will be opened with :py:func:`open_file` containing the scores.
+
+  ncolumns: any
+    ignored
+
+  Yields:
+
+  tuple:
+    see :py:func:`bob.bio.base.score.load.four_column` or
+    :py:func:`bob.bio.base.score.load.five_column`
+  """
+  return _iterate_score_file(filename)
+
+
+def split(filename, ncolumns=None, sort=False):
+  """Loads the scores from the given score file and splits them into positives
+  and negatives.
+  Depending on the score file format, it calls see
+  :py:func:`bob.bio.base.score.load.split_four_column` and
+  :py:func:`bob.bio.base.score.load.split_five_column` for details.
+
+  Parameters
+  ----------
+
+  filename : str
+      The path to the score file.
+  ncolumns : int or ``None``
+      If specified to be ``4`` or ``5``, the score file will be assumed to be
+      in the given format. If not specified, the score file format will be
+      estimated automatically
+  sort : :obj:`bool`, optional
+      If ``True``, will return sorted negatives and positives
+
+  Returns
+  -------
+
+  negatives : 1D :py:class:`numpy.ndarray` of type float
+      This array contains the list of scores, for which the ``claimed_id`` and
+      the ``real_id`` are different (see :py:func:`four_column`)
+      positives : 1D :py:class:`numpy.ndarray` of type float
+      This array contains the list of scores, for which the ``claimed_id`` and
+      the ``real_id`` are identical (see :py:func:`four_column`)
+  """
+  ncolumns = _estimate_score_file_format(filename, ncolumns)
+  if ncolumns == 4:
+    neg, pos = split_four_column(filename)
+  else:
+    assert ncolumns == 5
+    neg, pos = split_five_column(filename)
+
+  if sort:
+    neg.sort()
+    pos.sort()
+
+  return neg, pos
+
+
+def cmc(filename, ncolumns=None):
+  """cmc(filename, ncolumns=None) -> list
+
+  Loads scores to compute CMC curves.
+
+  Depending on the score file format, it calls see
+  :py:func:`bob.bio.base.score.load.cmc_four_column` and
+  `:py:func:`bob.bio.base.score.load.cmc_five_column` for details.
+
+  Parameters:
+
+    filename (:py:class:`str` or ``file-like``): The file object that will be
+      opened with :py:func:`open_file` containing the scores.
+
+    ncolumns: (:py:class:`int`, Optional): If specified to be ``4`` or ``5``,
+      the score file will be assumed to be in the given format.  If not
+      specified, the score file format will be estimated automatically
+
+  Returns:
+
+  :any:`list`: [(neg,pos)] A list of tuples, where each tuple contains the
+  ``negative`` and ``positive`` scores for one probe of the database.
+
+  """
+  ncolumns = _estimate_score_file_format(filename, ncolumns)
+  if ncolumns == 4:
+    return cmc_four_column(filename)
+  else:
+    assert ncolumns == 5
+    return cmc_five_column(filename)
+
+def load_score(filename, ncolumns=None, minimal=False, **kwargs):
+  """Load scores using numpy.loadtxt and return the data as a numpy array.
+
+  Parameters:
+
+    filename (:py:class:`str`, ``file-like``): The file object that will be
+      opened with :py:func:`open_file` containing the scores.
+
+    ncolumns (:py:class:`int`, optional): 4, 5 or None (the default),
+      specifying the number of columns in the score file. If None is provided,
+      the number of columns will be guessed.
+
+    minimal (:py:class:`bool`, optional): If True, only loads ``claimed_id``, ``real_id``,
+      and ``scores``.
+
+    **kwargs: Keyword arguments passed to :py:func:`numpy.genfromtxt`
+
+
+  Returns:
+
+    array: An array which contains not only the actual scores but also the
+    ``claimed_id``, ``real_id``, ``test_label`` and ``['model_label']``
+
+  """
+
+  def convertfunc(x):
+    return x
+
+  ncolumns = _estimate_score_file_format(filename, ncolumns)
+
+  usecols = kwargs.pop('usecols', None)
+  if ncolumns == 4:
+    names = ('claimed_id', 'real_id', 'test_label', 'score')
+    converters = {
+        0: convertfunc,
+        1: convertfunc,
+        2: convertfunc,
+        3: float}
+    if minimal:
+      usecols = (0, 1, 3)
+
+  elif ncolumns == 5:
+    names = ('claimed_id', 'model_label', 'real_id', 'test_label', 'score')
+    converters = {
+        0: convertfunc,
+        1: convertfunc,
+        2: convertfunc,
+        3: convertfunc,
+        4: float}
+    if minimal:
+      usecols = (0, 2, 4)
+  else:
+    raise ValueError("ncolumns of 4 and 5 are supported only.")
+
+  score_lines = numpy.genfromtxt(
+      open_file(filename, mode='rb'), dtype=None, names=names,
+      converters=converters, invalid_raise=True, usecols=usecols, **kwargs)
+  new_dtype = []
+  for name in score_lines.dtype.names[:-1]:
+    new_dtype.append((name, str(score_lines.dtype[name]).replace('S', 'U')))
+  new_dtype.append(('score', float))
+  score_lines = numpy.array(score_lines, new_dtype)
+  return score_lines
+
+def load_files(filenames, func_load):
+    """Load a list of score files and return a list of tuples of (neg, pos)
+
+    Parameters
+    ----------
+
+    filenames : :any:`list`
+        list of file paths
+    func_load :
+        function that can read files in the list
+
+    Returns
+    -------
+
+    :any:`list`: [(neg,pos)] A list of tuples, where each tuple contains the
+    ``negative`` and ``positive`` sceach system/probee.
+
+    """
+    if filenames is None:
+        return None
+    res = []
+    for filepath in filenames:
+        try:
+            res.append(func_load(filepath))
+        except:
+            raise
+    return res
+
+def get_negatives_positives(score_lines):
+  """Take the output of load_score and return negatives and positives.  This
+  function aims to replace split_four_column and split_five_column but takes a
+  different input. It's up to you to use which one.
+  """
+
+  pos_mask = score_lines['claimed_id'] == score_lines['real_id']
+  positives = score_lines['score'][pos_mask]
+  negatives = score_lines['score'][numpy.logical_not(pos_mask)]
+  return (negatives, positives)
+
+
+def get_negatives_positives_from_file(filename, **kwargs):
+  """Loads the scores first efficiently and then calls
+  get_negatives_positives"""
+  score_lines = load_score(filename, minimal=True, **kwargs)
+  return get_negatives_positives(score_lines)
+
+
+def get_negatives_positives_all(score_lines_list):
+  """Take a list of outputs of load_score and return stacked negatives and
+  positives.
+  """
+
+  negatives, positives = [], []
+  for score_lines in score_lines_list:
+    neg_pos = get_negatives_positives(score_lines)
+    negatives.append(neg_pos[0])
+    positives.append(neg_pos[1])
+  negatives = numpy.vstack(negatives).T
+  positives = numpy.vstack(positives).T
+  return (negatives, positives)
+
+
+def get_all_scores(score_lines_list):
+  """Take a list of outputs of load_score and return stacked scores"""
+
+  return numpy.vstack([score_lines['score']
+                       for score_lines in score_lines_list]).T
+
+
+def dump_score(filename, score_lines):
+  """Dump scores that were loaded using :py:func:`load_score`
+  The number of columns is automatically detected.
+  """
+
+  if len(score_lines.dtype) == 5:
+    fmt = '%s %s %s %s %.9f'
+  elif len(score_lines.dtype) == 4:
+    fmt = '%s %s %s %.9f'
+  else:
+    raise ValueError("Only scores with 4 and 5 columns are supported.")
+  numpy.savetxt(filename, score_lines, fmt=fmt)
+
+
+def _estimate_score_file_format(filename, ncolumns=None):
+  """Estimates the score file format from the given score file.
+  If ``ncolumns`` is in ``(4,5)``, then ``ncolumns`` is returned instead.
+  """
+  if ncolumns in (4, 5):
+    return ncolumns
+
+  f = open_file(filename, 'rb')
+  try:
+    line = f.readline()
+    ncolumns = len(line.split())
+  except Exception:
+    logger.warn('Could not guess the number of columns in file: {}. '
+                'Assuming 4 column format.'.format(filename))
+    ncolumns = 4
+  finally:
+    f.close()
+  return ncolumns
+
+
+def _iterate_score_file(filename):
+  """Opens the score file for reading and yields the score file line by line in a tuple/list.
+
+  The last element of the line (which is the score) will be transformed to float, the other elements will be str
+  """
+  opened = open_file(filename, 'rb')
+  if sys.version_info.major > 2:
+    import io
+    if not isinstance(opened, io.TextIOWrapper):
+      opened = io.TextIOWrapper(opened, newline="")
+
+  reader = csv.reader(opened, delimiter=' ')
+  for splits in reader:
+    splits[-1] = float(splits[-1])
+    yield splits
+
+
+def _split_scores(score_lines, real_id_index, claimed_id_index=0, score_index=-1):
+  """Take the output of :py:func:`four_column` or :py:func:`five_column` and return negatives and positives.
+  """
+  positives, negatives = [], []
+  for line in score_lines:
+    which = positives if line[claimed_id_index] == line[
+        real_id_index] else negatives
+    which.append(line[score_index])
+
+  return (numpy.array(negatives), numpy.array(positives))
+
+
+def _split_cmc_scores(score_lines, real_id_index, probe_name_index=None, claimed_id_index=0, score_index=-1):
+  """Takes the output of :py:func:`four_column` or :py:func:`five_column` and return cmc scores.
+  """
+  if probe_name_index is None:
+    probe_name_index = real_id_index + 1
+  # extract positives and negatives
+  pos_dict = {}
+  neg_dict = {}
+  # read four column list
+  for line in score_lines:
+    which = pos_dict if line[claimed_id_index] == line[
+        real_id_index] else neg_dict
+    probe_name = line[probe_name_index]
+    # append score
+    if probe_name not in which:
+      which[probe_name] = []
+    which[probe_name].append(line[score_index])
+
+  # convert to lists of tuples of ndarrays (or None)
+  probe_names = sorted(set(neg_dict.keys()).union(set(pos_dict.keys())))
+  # get all scores in the desired format
+  return [(
+      numpy.array(neg_dict[probe_name],
+                  numpy.float64) if probe_name in neg_dict else None,
+      numpy.array(pos_dict[probe_name],
+                  numpy.float64) if probe_name in pos_dict else None
+  ) for probe_name in probe_names]
diff --git a/bob/bio/base/score/openbr.py b/bob/bio/base/score/openbr.py
new file mode 100644
index 0000000000000000000000000000000000000000..51010f7df69e4e2f34782508aa258f46db01d68d
--- /dev/null
+++ b/bob/bio/base/score/openbr.py
@@ -0,0 +1,368 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+
+
+"""This file includes functionality to convert between Bob's four column or
+   five column score files and the Matrix files used in OpenBR."""
+
+
+import numpy
+import sys
+import logging
+logger = logging.getLogger("bob.measure")
+
+from .load import open_file, four_column, five_column
+
+
+def write_matrix(
+        score_file,
+        matrix_file,
+        mask_file,
+        model_names=None,
+        probe_names=None,
+        score_file_format='4column',
+        gallery_file_name='unknown-gallery.lst',
+        probe_file_name='unknown-probe.lst',
+        search=None):
+  """Writes the OpenBR matrix and mask files (version 2), given a score file.
+
+  If gallery and probe names are provided, the matrices in both files will be
+  sorted by gallery and probe names.  Otherwise, the order will be the same as
+  given in the score file.
+
+  If ``search`` is given (as an integer), the resulting matrix files will be in
+  the *search* format, keeping the given number of gallery scores with the
+  highest values for each probe.
+
+  .. warning::
+
+     When provided with a 4-column score file, this function will work only, if
+     there is only a single model id for each client.
+
+  Parameters:
+
+    score_file (str): The 4 or 5 column style score file written by bob.
+
+    matrix_file (str): The OpenBR matrix file that should be written.
+      Usually, the file name extension is ``.mtx``
+
+    mask_file (str): The OpenBR mask file that should be written.
+      The mask file defines, which values are positives, negatives or to be
+      ignored.  Usually, the file name extension is ``.mask``
+
+    model_names (:py:class:`str`, optional): If given, the matrix will be
+      written in the same order as the given model names.  The model names must
+      be identical with the second column in the 5-column ``score_file``.
+
+      .. note::
+
+         If the score file is in four column format, the model_names must be
+         the client ids stored in the first column.  In this case, there might
+         be only a single model per client
+
+      Only the scores of the given models will be considered.
+
+    probe_names (:any:`list`, optional): A list of strings. If given,
+      the matrix will be written in the same order as the given probe names
+      (the ``path`` of the probe).  The probe names are identical to the third
+      column of the 4-column (or the fourth column of the 5-column)
+      ``score_file``.  Only the scores of the given probe names will be
+      considered in this case.
+
+    score_file_format (:py:class:`str`, optional): One of ``('4column',
+      '5column')``. The format, in which the ``score_file`` is; defaults to
+      ``'4column'``
+
+    gallery_file_name (:py:class:`str`, optional): The name of the gallery file
+      that will be written in the header of the OpenBR files.
+
+    probe_file_name (:py:class:`str`, optional): The name of the probe file that
+      will be written in the header of the OpenBR files.
+
+    search (:py:class:`int`, optional): If given, the scores will be sorted per
+      probe, keeping the specified number of highest scores.  If the given
+      number is higher than the models, ``NaN`` values will be added, and the
+      mask will contain ``0x00`` values.
+
+  """
+
+  def _write_matrix(filename, matrix):
+    # Helper function to write a matrix file as required by OpenBR
+    with open(filename, 'wb') as f:
+      # write the first four lines
+      header = "S2\n%s\n%s\nM%s %d %d " % (
+          gallery_file_name, probe_file_name, 'B' if matrix.dtype == numpy.uint8 else 'F', matrix.shape[0], matrix.shape[1])
+      footer = "\n"
+      if sys.version_info[0] > 2:
+        header, footer = header.encode('utf-8'), footer.encode('utf-8')
+      f.write(header)
+      # write magic number
+      numpy.array(0x12345678, numpy.int32).tofile(f)
+      f.write(footer)
+      # write the matrix
+      matrix.tofile(f)
+
+  # define read functions, and which information should be read
+  read_function = {'4column': four_column,
+                   '5column': five_column}[score_file_format]
+  offset = {'4column': 0, '5column': 1}[score_file_format]
+
+  # first, read the score file and estimate model and probe names, if not given
+  if model_names is None or probe_names is None:
+    model_names, probe_names = [], []
+    model_set, probe_set = set(), set()
+
+    # read the score file
+    for line in read_function(score_file):
+      model, probe = line[offset], line[2 + offset]
+      if model not in model_set:
+        model_names.append(model)
+        model_set.add(model)
+      if probe not in probe_set:
+        probe_names.append(probe)
+        probe_set.add(probe)
+
+  if search is None:
+    # create a shortcut to get indices for client and probe subset (to
+    # increase speed)
+    model_dict, probe_dict = {}, {}
+    for i, m in enumerate(model_names):
+      model_dict[m] = i
+    for i, p in enumerate(probe_names):
+      probe_dict[p] = i
+
+    # create the matrices in the desired size
+    matrix = numpy.ndarray((len(probe_names), len(model_names)), numpy.float32)
+    matrix[:] = numpy.nan
+    mask = numpy.zeros(matrix.shape, numpy.uint8)
+
+    # now, iterate through the score file and fill in the matrix
+    for line in read_function(score_file):
+      client, model, id, probe, score = line[0], line[offset], line[
+          1 + offset], line[2 + offset], line[3 + offset]
+
+      assert model in model_dict, "model " + model + " unknown"
+      assert probe in probe_dict, "probe " + probe + " unknown"
+
+      model_index = model_dict[model]
+      probe_index = probe_dict[probe]
+
+      # check, if we have already written something into that matrix element
+      if mask[probe_index, model_index]:
+        logger.warn("Overwriting existing matrix '%f' element of client '%s' and probe '%s' with '%f'", matrix[
+                    probe_index, model_index], client, probe, score)
+
+      matrix[probe_index, model_index] = score
+      mask[probe_index, model_index] = 0xff if client == id else 0x7f
+
+  else:
+    # get the correct search parameter, if negative
+    if search < 0:
+      search = len(model_names)
+
+    # create the matrices in the desired size
+    matrix = numpy.ndarray((len(probe_names), search), numpy.float32)
+    matrix[:] = numpy.nan
+    mask = numpy.zeros(matrix.shape, numpy.uint8)
+
+    # get the scores, sorted by probe
+    scores = {}
+    for line in read_function(score_file):
+      client, model, id, probe, score = line[0], line[offset], line[
+          1 + offset], line[2 + offset], line[3 + offset]
+
+      if probe not in scores:
+        scores[probe] = []
+      scores[probe].append((score, 0xff if client == id else 0x7f))
+
+    # go ahead and sort the scores per probe
+    sorted_scores = {}
+    for k, v in scores.items():
+      sorted_scores[k] = sorted(v, key=lambda x: x[0], reverse=True)
+
+    # now, write matrix
+    for p, probe in enumerate(probe_names):
+      if probe in scores:
+        for m in range(min(search, len(sorted_scores[probe]))):
+          matrix[p, m], mask[p, m] = sorted_scores[probe][m]
+
+  # OK, now finally write the file in the desired format
+  _write_matrix(mask_file, mask)
+  _write_matrix(matrix_file, matrix)
+
+
+def write_score_file(
+    matrix_file,
+    mask_file,
+    score_file,
+    models_ids=None,
+    probes_ids=None,
+    model_names=None,
+    probe_names=None,
+    score_file_format='4column',
+    replace_nan=None
+):
+  """Writes the Bob score file in the desired format from OpenBR files.
+
+  Writes a Bob score file in the desired format (four or five column), given
+  the OpenBR matrix and mask files.
+
+  In principle, the score file can be written based on the matrix and mask
+  files, and the format suffice the requirements to compute CMC curves.
+  However, the contents of the score files can be adapted.  If given, the
+  ``models_ids`` and ``probes_ids`` define the **client ids** of model and
+  probe, and they have to be in the same order as used to compute the OpenBR
+  matrix.  The ``model_names`` and ``probe_names`` define the **paths** of
+  model and probe, and they should be in the same order as the ids.
+
+  In rare cases, the OpenBR matrix contains NaN values, which Bob's score files
+  cannot handle.  You can use the ``replace_nan`` parameter to decide, what to
+  do with these values.  By default (``None``), these values are ignored, i.e.,
+  not written into the score file.  This is, what OpenBR is doing as well.
+  However, you can also set ``replace_nan`` to any value, which will be written
+  instead of the NaN values.
+
+
+  Parameters:
+
+    matrix_file (str): The OpenBR matrix file that should be read. Usually, the
+      file name extension is ``.mtx``
+
+    mask_file (str): The OpenBR mask file that should be read. Usually, the
+      file name extension is ``.mask``
+
+    score_file (str): Path to the 4 or 5 column style score file that should be
+      written.
+
+    models_ids (:any:`list`, optional): A list of strings with the client
+      ids of the models that will be written in the first column of the score
+      file.  If given, the size must be identical to the number of models
+      (gallery templates) in the OpenBR files.  If not given, client ids of the
+      model will be identical to the **gallery index** in the matrix file.
+
+    probes_ids (:any:`list`, optional): A list of strings with the client
+      ids of the probes that will be written in the second/third column of the
+      four/five column score file.  If given, the size must be identical to the
+      number of probe templates in the OpenBR files.  It will be checked that
+      the OpenBR mask fits to the model/probe client ids.  If not given, the
+      probe ids will be estimated automatically, i.e., to fit the OpenBR
+      matrix.
+
+    model_names (:any:`list`, optional): A list of strings with the model
+      path written in the second column of the five column score file. If not
+      given, the model index in the OpenBR file will be used.
+
+      .. note::
+
+         This entry is ignored in the four column score file format.
+
+    probe_names (:any:`list`, optional): A list of probe path to be
+      written in the third/fourth column in the four/five column score file. If
+      given, the size must be identical to the number of probe templates in the
+      OpenBR files. If not given, the probe index in the OpenBR file will be
+      used.
+
+    score_file_format (:py:class:`str`, optional): One of ``('4column',
+      '5column')``. The format, in which the ``score_file`` is; defaults to
+      ``'4column'``
+
+    replace_nan (:py:class:`float`, optional): If NaN values are encountered in
+      the OpenBR matrix (which are not ignored due to the mask being non-NULL),
+      this value will be written instead. If ``None``, the values will not be
+      written in the score file at all.
+
+  """
+
+  def _read_matrix(filename):
+    py3 = sys.version_info[0] >= 3
+    # Helper function to read a matrix file as written by OpenBR
+    with open(filename, 'rb') as f:
+      # get version
+      header = f.readline()
+      if py3:
+        header = header.decode("utf-8")
+      assert header[:2] == "S2"
+      # skip gallery and probe files
+      f.readline()
+      f.readline()
+      # read size and type of matrix
+      size = f.readline()
+      if py3:
+        size = size.decode("utf-8")
+      splits = size.rstrip().split()
+      # TODO: check the endianess of the magic number stored in split[3]
+      assert splits[0][0] == 'M'
+      w, h = int(splits[1]), int(splits[2])
+      # read matrix data
+      data = numpy.fromfile(
+          f, dtype={'B': numpy.uint8, 'F': numpy.float32}[splits[0][1]])
+      assert data.shape[0] == w * h
+      data.shape = (w, h)
+    return data
+
+  # check parameters
+  if score_file_format not in ("4column", "5column"):
+    raise ValueError(
+        "The given score file format %s is not known; choose one of ('4column', '5column')" % score_file_format)
+  # get type of score file
+  four_col = score_file_format == "4column"
+
+  # read the two matrices
+  scores = _read_matrix(matrix_file)
+  mask = _read_matrix(mask_file)
+
+  # generate the id lists, if not given
+  if models_ids is None:
+    models_ids = [str(g + 1) for g in range(mask.shape[1])]
+  assert len(models_ids) == mask.shape[1]
+
+  if probes_ids is None:
+    probes_ids = []
+    # iterate over all probes
+    for p in range(mask.shape[0]):
+      # get indices, where model and probe id should be identical
+      equal_indices = numpy.where(mask[p] == 0xff)
+      if len(equal_indices):
+        # model id found, use the first one
+        probes_ids.append(models_ids[equal_indices[0][0]])
+      else:
+        # no model found; add non-existing id
+        probes_ids.append("unknown")
+  else:
+    assert len(probes_ids) == mask.shape[0]
+    # check that the probes client ids are in the correct order
+    for p in range(mask.shape[0]):
+      for g in range(mask.shape[1]):
+        if mask[p, g] == 0x7f:
+          if models_ids[g] == probes_ids[p]:
+            raise ValueError("The probe id %s with index %d should not be identical to model id %s with index %d" % (
+                probes_ids[p], p, models_ids[g], g))
+        elif mask[p, g] == 0xff:
+          if models_ids[g] != probes_ids[p]:
+            raise ValueError("The probe id %s with index %d should be identical to model id %s with index %d" % (
+                probes_ids[p], p, models_ids[g], g))
+
+  # generate model and probe names, if not given
+  if not four_col and model_names is None:
+    model_names = [str(g + 1) for g in range(mask.shape[1])]
+  if probe_names is None:
+    probe_names = [str(p + 1) for p in range(mask.shape[0])]
+
+  # iterate through the files and write scores
+  with open(score_file, 'w') as f:
+    for g in range(mask.shape[1]):
+      for p in range(mask.shape[0]):
+        if mask[p, g]:
+          score = scores[p, g]
+          # handle NaN values
+          if numpy.isnan(score):
+            if replace_nan is None:
+              continue
+            score = replace_nan
+          # write score file
+          if four_col:
+            f.write("%s %s %s %3.8f\n" %
+                    (models_ids[g], probes_ids[p], probe_names[p], score))
+          else:
+            f.write("%s %s %s %s %3.8f\n" % (models_ids[g], model_names[
+                    g], probes_ids[p], probe_names[p], score))
diff --git a/bob/bio/base/script/collect_results.py b/bob/bio/base/script/collect_results.py
index 6e1cc0681258b967339dc466bff96bc7470185b9..df08375cf7202a6086df0803f353a2abfd9f6dd9 100644
--- a/bob/bio/base/script/collect_results.py
+++ b/bob/bio/base/script/collect_results.py
@@ -29,8 +29,9 @@ import sys, os,  glob
 import argparse
 import numpy
 
-import bob.measure
 import bob.core
+from .. import score
+
 logger = bob.core.log.setup("bob.bio.base")
 
 def command_line_arguments(command_line_parameters):
@@ -80,9 +81,9 @@ class Result:
   def _calculate(self, dev_file, eval_file = None):
     """Calculates the EER and HTER or FRR based on the threshold criterion."""
     if self.m_args.criterion in ("RR", "DIR"):
-      scores_dev = bob.measure.load.cmc(dev_file)
+      scores_dev = score.cmc(dev_file)
       if eval_file is not None:
-        scores_eval = bob.measure.load.cmc(eval_file)
+        scores_eval = score.cmc(eval_file)
 
       if self.m_args.criterion == "DIR":
         # get negatives without positives
@@ -110,7 +111,7 @@ class Result:
 
     else:
 
-      dev_neg, dev_pos = bob.measure.load.split(dev_file)
+      dev_neg, dev_pos = score.split(dev_file)
 
       # switch which threshold function to use
       if self.m_args.criterion == 'EER':
@@ -127,7 +128,7 @@ class Result:
       dev_hter = (dev_far + dev_frr)/2.0
 
       if eval_file:
-        eval_neg, eval_pos = bob.measure.load.split(eval_file)
+        eval_neg, eval_pos = score.split(eval_file)
         eval_far, eval_frr = bob.measure.farfrr(eval_neg, eval_pos, threshold)
         eval_hter = (eval_far + eval_frr)/2.0
       else:
diff --git a/bob/bio/base/script/commands.py b/bob/bio/base/script/commands.py
new file mode 100644
index 0000000000000000000000000000000000000000..f712823e41fe0de9fa3c92ef4212397a5815fa86
--- /dev/null
+++ b/bob/bio/base/script/commands.py
@@ -0,0 +1,442 @@
+''' Click commands for ``bob.bio.base`` '''
+
+import click
+import bob.bio.base.script.figure as bio_figure
+import bob.measure.script.figure as measure_figure
+from ..score import load
+from bob.measure.script import common_options
+from bob.extension.scripts.click_helper import (verbosity_option,
+                                                open_file_mode_option)
+
+
+def rank_option(**kwargs):
+    '''Get option for rank parameter'''
+    def custom_rank_option(func):
+        def callback(ctx, param, value):
+            value = 1 if value < 0 else value
+            ctx.meta['rank'] = value
+            return value
+        return click.option(
+            '-rk', '--rank', type=click.INT, default=1,
+            help='Provide rank for the command',
+            callback=callback, show_default=True, **kwargs)(func)
+    return custom_rank_option
+
+
+@click.command()
+@common_options.scores_argument(nargs=-1)
+@common_options.table_option()
+@common_options.eval_option()
+@common_options.output_log_metric_option()
+@common_options.criterion_option(['eer', 'min-hter', 'far', 'mindcf', 'cllr', 'rr'])
+@common_options.cost_option()
+@common_options.thresholds_option()
+@common_options.far_option()
+@common_options.legends_option()
+@open_file_mode_option()
+@verbosity_option()
+@click.pass_context
+def metrics(ctx, scores, evaluation, **kargs):
+    """Prints a single output line that contains all info for a given
+    criterion (eer, min-hter, far, mindcf, cllr, rr).
+
+    You need to provide one or more development score file(s) for each
+    experiment. You can also provide eval files along with dev files. If only
+    dev-scores are used, the flag `--no-evaluation` must be used. is required
+    in that case. Files must be 4- or 5- columns format, see
+    :py:func:`bob.bio.base.score.load.four_column` and
+    :py:func:`bob.bio.base.score.load.five_column` for details.
+
+    Resulting table format can be changer using the `--tablefmt`. Default
+    formats are `rst` when output in the terminal and `latex` when
+    written in a log file (see `--log`)
+
+    Examples:
+        $ bob bio metrics dev-scores
+
+        $ bob bio metrics --no-evaluation dev-scores1 dev-scores2
+
+        $ bob bio metrics -l results.txt dev-scores1 eval-scores1
+
+        $ bob bio metrics {dev,eval}-scores1 {dev,eval}-scores2
+    """
+    if 'criterion' in ctx.meta and ctx.meta['criterion'] == 'rr':
+        process = bio_figure.Metrics(ctx, scores, evaluation, load.cmc)
+    else:
+        process = bio_figure.Metrics(ctx, scores, evaluation, load.split)
+    process.run()
+
+
+@click.command()
+@common_options.scores_argument(nargs=-1)
+@common_options.title_option()
+@common_options.legends_option()
+@common_options.legend_loc_option(dflt='lower-right')
+@common_options.no_legend_option()
+@common_options.sep_dev_eval_option()
+@common_options.output_plot_file_option(default_out='roc.pdf')
+@common_options.eval_option()
+@common_options.points_curve_option()
+@common_options.semilogx_option(True)
+@common_options.axes_val_option(dflt='1e-4,1,1e-4,1')
+@common_options.x_rotation_option()
+@common_options.lines_at_option()
+@common_options.x_label_option()
+@common_options.y_label_option()
+@common_options.const_layout_option()
+@common_options.style_option()
+@common_options.linestyles_option()
+@common_options.figsize_option()
+@common_options.min_far_option()
+@verbosity_option()
+@click.pass_context
+def roc(ctx, scores, evaluation, **kargs):
+    """Plot ROC (receiver operating characteristic) curve:
+    The plot will represent the false match rate on the horizontal axis and the
+    false non match rate on the vertical axis.  The values for the axis will be
+    computed using :py:func:`bob.measure.roc`.
+
+    You need to provide one or more development score file(s) for each
+    experiment. You can also provide eval files along with dev files. If only
+    dev-scores are used, the flag `--no-evaluation` must be used. is required
+    in that case. Files must be 4- or 5- columns format, see
+    :py:func:`bob.bio.base.score.load.four_column` and
+    :py:func:`bob.bio.base.score.load.five_column` for details.
+
+    Examples:
+        $ bob bio roc -v dev-scores
+
+        $ bob bio roc -v dev-scores1 eval-scores1 dev-scores2
+        eval-scores2
+
+        $ bob bio roc -v -o my_roc.pdf dev-scores1 eval-scores1
+    """
+    process = bio_figure.Roc(ctx, scores, evaluation, load.split)
+    process.run()
+
+
+@click.command()
+@common_options.scores_argument(nargs=-1)
+@common_options.title_option()
+@common_options.output_plot_file_option(default_out='det.pdf')
+@common_options.legends_option()
+@common_options.legend_loc_option(dflt='upper-right')
+@common_options.no_legend_option()
+@common_options.x_label_option()
+@common_options.y_label_option()
+@common_options.sep_dev_eval_option()
+@common_options.eval_option()
+@common_options.axes_val_option(dflt='0.01,95,0.01,95')
+@common_options.x_rotation_option(dflt=45)
+@common_options.points_curve_option()
+@common_options.const_layout_option()
+@common_options.style_option()
+@common_options.linestyles_option()
+@common_options.figsize_option()
+@common_options.lines_at_option()
+@common_options.min_far_option()
+@verbosity_option()
+@click.pass_context
+def det(ctx, scores, evaluation, **kargs):
+    """Plot DET (detection error trade-off) curve:
+    modified ROC curve which plots error rates on both axes
+    (false positives on the x-axis and false negatives on the y-axis)
+
+    You need to provide one or more development score file(s) for each
+    experiment. You can also provide eval files along with dev files. If only
+    dev-scores are used, the flag `--no-evaluation` must be used. is required
+    in that case. Files must be 4- or 5- columns format, see
+    :py:func:`bob.bio.base.score.load.four_column` and
+    :py:func:`bob.bio.base.score.load.five_column` for details.
+
+    Examples:
+        $ bob bio det -v dev-scores
+
+        $ bob bio det -v dev-scores1 eval-scores1 dev-scores2
+        eval-scores2
+
+        $ bob bio det -v -o my_det.pdf dev-scores1 eval-scores1
+    """
+    process = bio_figure.Det(ctx, scores, evaluation, load.split)
+    process.run()
+
+
+@click.command()
+@common_options.scores_argument(min_arg=1, force_eval=True, nargs=-1)
+@common_options.title_option()
+@common_options.output_plot_file_option(default_out='epc.pdf')
+@common_options.legends_option()
+@common_options.legend_loc_option(dflt='upper-center')
+@common_options.no_legend_option()
+@common_options.points_curve_option()
+@common_options.const_layout_option()
+@common_options.style_option()
+@common_options.linestyles_option()
+@common_options.figsize_option()
+@verbosity_option()
+@click.pass_context
+def epc(ctx, scores, **kargs):
+    """Plot EPC (expected performance curve):
+    plots the error rate on the eval set depending on a threshold selected
+    a-priori on the development set and accounts for varying relative cost
+    in [0; 1] of FPR and FNR when calculating the threshold.
+
+    You need to provide one or more development score and eval file(s)
+    for each experiment. Files must be 4- or 5- columns format, see
+    :py:func:`bob.bio.base.score.load.four_column` and
+    :py:func:`bob.bio.base.score.load.five_column` for details.
+
+    Examples:
+        $ bob bio epc -v dev-scores eval-scores
+
+        $ bob bio epc -v -o my_epc.pdf dev-scores1 eval-scores1
+    """
+    process = measure_figure.Epc(ctx, scores, True, load.split)
+    process.run()
+
+
+@click.command()
+@common_options.scores_argument(nargs=-1)
+@common_options.title_option()
+@common_options.legends_option()
+@common_options.sep_dev_eval_option()
+@common_options.output_plot_file_option(default_out='cmc.pdf')
+@common_options.eval_option()
+@common_options.semilogx_option(True)
+@common_options.axes_val_option(dflt=None)
+@common_options.x_rotation_option()
+@common_options.const_layout_option()
+@common_options.style_option()
+@common_options.linestyles_option()
+@common_options.figsize_option()
+@verbosity_option()
+@click.pass_context
+def cmc(ctx, scores, evaluation, **kargs):
+    """Plot CMC (cumulative match characteristic curve):
+    graphical presentation of results of an identification task eval, plotting
+    rank values on the x-axis and the probability of correct identification at
+    or below that rank on the y-axis. The values for the axis will be computed
+    using :py:func:`bob.measure.cmc`.
+
+    You need to provide one or more development score file(s) for each
+    experiment. You can also provide eval files along with dev files. If only
+    dev-scores are used, the flag `--no-evaluation` must be used. is required
+    in that case. Files must be 4- or 5- columns format, see
+    :py:func:`bob.bio.base.score.load.four_column` and
+    :py:func:`bob.bio.base.score.load.five_column` for details.
+
+
+    Examples:
+        $ bob bio cmc -v dev-scores
+
+        $ bob bio cmc -v dev-scores1 eval-scores1 dev-scores2
+        eval-scores2
+
+        $ bob bio cmc -v -o my_roc.pdf dev-scores1 eval-scores1
+    """
+    process = bio_figure.Cmc(ctx, scores, evaluation, load.cmc)
+    process.run()
+
+
+@click.command()
+@common_options.scores_argument(nargs=-1)
+@common_options.title_option()
+@common_options.legends_option()
+@common_options.sep_dev_eval_option()
+@common_options.output_plot_file_option(default_out='dir.pdf')
+@common_options.eval_option()
+@common_options.semilogx_option(True)
+@common_options.axes_val_option(dflt=None)
+@common_options.x_rotation_option()
+@rank_option()
+@common_options.const_layout_option()
+@common_options.style_option()
+@common_options.linestyles_option()
+@common_options.figsize_option()
+@common_options.min_far_option()
+@verbosity_option()
+@click.pass_context
+def dir(ctx, scores, evaluation, **kargs):
+    """Plots the Detection & Identification Rate curve over the FAR
+
+    This curve is designed to be used in an open set identification protocol,
+    and defined in Chapter 14.1 of [LiJain2005]_.  It requires to have at least
+    one open set probe item, i.e., with no corresponding gallery, such that the
+    positives for that pair are ``None``.
+
+    The detection and identification curve first computes FAR thresholds based
+    on the out-of-set probe scores (negative scores).  For each probe item, the
+    **maximum** negative score is used.  Then, it plots the detection and
+    identification rates for those thresholds, which are based on the in-set
+    probe scores only. See [LiJain2005]_ for more details.
+
+    .. [LiJain2005] **Stan Li and Anil K. Jain**, *Handbook of Face Recognition*, Springer, 2005
+
+    You need to provide one or more development score file(s) for each
+    experiment. You can also provide eval files along with dev files. If only
+    dev-scores are used, the flag `--no-evaluation` must be used. is required
+    in that case. Files must be 4- or 5- columns format, see
+    :py:func:`bob.bio.base.score.load.four_column` and
+    :py:func:`bob.bio.base.score.load.five_column` for details.
+
+    Examples:
+        $ bob bio dir -v dev-scores
+
+        $ bob bio dir -v dev-scores1 eval-scores1 dev-scores2
+        eval-scores2
+
+        $ bob bio dir -v -o my_roc.pdf dev-scores1 eval-scores1
+    """
+    process = bio_figure.Dir(ctx, scores, evaluation, load.cmc)
+    process.run()
+
+
+@click.command()
+@common_options.scores_argument(nargs=-1)
+@common_options.title_option()
+@common_options.output_plot_file_option(default_out='hist.pdf')
+@common_options.eval_option()
+@common_options.n_bins_option()
+@common_options.criterion_option()
+@common_options.thresholds_option()
+@common_options.const_layout_option()
+@common_options.print_filenames_option()
+@common_options.legends_option()
+@common_options.style_option()
+@common_options.figsize_option(dflt=None)
+@common_options.subplot_option()
+@common_options.legend_ncols_option()
+@verbosity_option()
+@click.pass_context
+def hist(ctx, scores, evaluation, **kwargs):
+    """ Plots histograms of positive and negatives along with threshold
+    criterion.
+
+    You need to provide one or more development score file(s) for each
+    experiment. You can also provide eval files along with dev files. If only
+    dev-scores are used, the flag `--no-evaluation` must be used. is required
+    in that case. Files must be 4- or 5- columns format, see
+    :py:func:`bob.bio.base.score.load.four_column` and
+    :py:func:`bob.bio.base.score.load.five_column` for details.
+
+    By default, when eval-scores are given, only eval-scores histograms are
+    displayed with threshold line
+    computed from dev-scores. If you want to display dev-scores distributions
+    as well, use ``--show-dev`` option.
+
+    Examples:
+        $ bob bio hist -v dev-scores
+
+        $ bob bio hist -v dev-scores1 eval-scores1 dev-scores2
+        eval-scores2
+
+        $ bob bio hist -v --criterion --show-dev min-hter dev-scores1 eval-scores1
+    """
+    process = bio_figure.Hist(ctx, scores, evaluation, load.split)
+    process.run()
+
+
+@click.command()
+@common_options.scores_argument(nargs=-1)
+@common_options.legends_option()
+@common_options.sep_dev_eval_option()
+@common_options.table_option()
+@common_options.eval_option()
+@common_options.output_log_metric_option()
+@common_options.output_plot_file_option(default_out='eval_plots.pdf')
+@common_options.points_curve_option()
+@common_options.lines_at_option()
+@common_options.cost_option()
+@rank_option()
+@common_options.far_option()
+@common_options.const_layout_option()
+@common_options.style_option()
+@common_options.figsize_option()
+@verbosity_option()
+@click.pass_context
+def evaluate(ctx, scores, evaluation, **kwargs):
+    '''Evalutes score file, runs error analysis on score sets and plot curves.
+
+    \b
+    1. Computes the threshold using either EER, min. HTER or FAR value
+       criteria on development set scores
+    2. Applies the above threshold on eval set scores to compute the HTER, if a
+       eval-score set is provided
+    3. Computes Cllr and minCllr and minDCF
+    3. Reports error metrics in the console or in a log file
+    4. Plots ROC, EPC, DET, score distributions
+       curves to a multi-page PDF file
+
+    You need to provide one or more development score file(s) for each
+    experiment. You can also provide eval files along with dev files. If only
+    dev-scores are used, the flag `--no-evaluation` must be used. is required
+    in that case. Files must be 4- or 5- columns format, see
+    :py:func:`bob.bio.base.score.load.four_column` and
+    :py:func:`bob.bio.base.score.load.five_column` for details.
+
+    You need to provide 2 score files for each biometric system in this order:
+
+    \b
+    * development scores
+    * evaluation scores
+
+    Examples:
+        $ bob bio evaluate -v dev-scores
+
+        $ bob bio evaluate -v -l metrics.txt -o my_plots.pdf dev-scores eval-scores
+
+        $ bob bio evaluate -v -o my_plots.pdf /path/to/syst-{1,2,3}/{dev,eval}-scores
+    '''
+    log_str = ''
+    if 'log' in ctx.meta and ctx.meta['log'] is not None:
+        log_str = ' %s' % ctx.meta['log']
+
+    # first time erase if existing file
+    ctx.meta['open_mode'] = 'w'
+    click.echo("Computing metrics with EER%s..." % log_str)
+    ctx.meta['criterion'] = 'eer'  # no criterion passed to evaluate
+    ctx.invoke(metrics, scores=scores, evaluation=evaluation)
+    # other times, appends the content
+    ctx.meta['open_mode'] = 'a'
+    click.echo("Computing metrics with min-HTER%s..." % log_str)
+    ctx.meta['criterion'] = 'min-hter'  # no criterion passed in evaluate
+    ctx.invoke(metrics, scores=scores, evaluation=evaluation)
+    if 'far_value' in ctx.meta and ctx.meta['far_value'] is not None:
+        click.echo("Computing metrics with FAR=%f%s..." %
+                   (ctx.meta['far_value'], log_str))
+        ctx.meta['criterion'] = 'far'  # no criterio % n passed in evaluate
+        ctx.invoke(metrics, scores=scores, evaluation=evaluation)
+
+    click.echo("Computing minDCF%s..." % log_str)
+    ctx.meta['criterion'] = 'mindcf'  # no criterion passed in evaluate
+    ctx.invoke(metrics, scores=scores, evaluation=evaluation)
+
+    click.echo("Computing  Cllr and minCllr%s..." % log_str)
+    ctx.meta['criterion'] = 'cllr'  # no criterion passed in evaluate
+    ctx.invoke(metrics, scores=scores, evaluation=evaluation)
+
+    # avoid closing pdf file before all figures are plotted
+    ctx.meta['closef'] = False
+
+    if evaluation:
+        click.echo("Starting evaluate with dev and eval scores...")
+    else:
+        click.echo("Starting evaluate with dev scores only...")
+
+    click.echo("Generating ROC in %s..." % ctx.meta['output'])
+    ctx.forward(roc)  # use class defaults plot settings
+
+    click.echo("Generating DET in %s..." % ctx.meta['output'])
+    ctx.forward(det)  # use class defaults plot settings
+
+    if evaluation:
+        click.echo("Generating EPC in %s..." % ctx.meta['output'])
+        ctx.forward(epc)  # use class defaults plot settings
+
+    # the last one closes the file
+    ctx.meta['closef'] = True
+    click.echo("Generating score histograms in %s..." % ctx.meta['output'])
+    ctx.meta['criterion'] = 'eer'  # no criterion passed in evaluate
+    ctx.forward(hist)
+
+    click.echo("Evaluate successfully completed!")
diff --git a/bob/bio/base/script/evaluate.py b/bob/bio/base/script/evaluate.py
deleted file mode 100644
index 21c27ee876fac1eb0c6f9748b79993dd73f10c71..0000000000000000000000000000000000000000
--- a/bob/bio/base/script/evaluate.py
+++ /dev/null
@@ -1,465 +0,0 @@
-#!/usr/bin/env python
-# vim: set fileencoding=utf-8 :
-
-"""This script evaluates the given score files and computes EER, HTER.
-It also is able to plot CMC and ROC curves.
-You can set the environment variable BOB_NO_STYLE_CHANGES to any value to avoid
-this script from changing the matplotlib style values. """
-
-from __future__ import print_function
-
-# matplotlib stuff
-import matplotlib
-from matplotlib import pyplot
-pyplot.switch_backend('pdf')  # switch to non-X backend
-from matplotlib.backends.backend_pdf import PdfPages
-
-# import bob.measure after matplotlib, so that it cannot define the backend
-import bob.measure
-
-import argparse
-import numpy
-import math
-import os
-
-
-if not os.environ.get('BOB_NO_STYLE_CHANGES'):
-  # make the fig size smaller so that everything becomes bigger
-  matplotlib.rc('figure', figsize=(4, 3))
-
-
-import bob.core
-logger = bob.core.log.setup("bob.bio.base")
-
-
-def command_line_arguments(command_line_parameters):
-  """Parse the program options"""
-
-  # set up command line parser
-  parser = argparse.ArgumentParser(description=__doc__,
-      formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-
-  parser.add_argument('-d', '--dev-files', required=True, nargs='+', help = "A list of score files of the development set.")
-  parser.add_argument('-e', '--eval-files', nargs='+', help = "A list of score files of the evaluation set; if given it must be the same number of files as the --dev-files.")
-
-  parser.add_argument('-s', '--directory', default = '.', help = "A directory, where to find the --dev-files and the --eval-files")
-
-  parser.add_argument('-c', '--criterion', choices = ('EER', 'HTER', 'FAR'), help = "If given, the threshold of the development set will be computed with this criterion.")
-  parser.add_argument('-f', '--far-value', type=float, default=0.001, help = "The FAR value for which to evaluate (only for --criterion FAR)")
-  parser.add_argument('-x', '--cllr', action = 'store_true', help = "If given, Cllr and minCllr will be computed.")
-  parser.add_argument('-m', '--mindcf', action = 'store_true', help = "If given, minDCF will be computed.")
-  parser.add_argument('--cost', default=0.99,  help='Cost for FAR in minDCF')
-  parser.add_argument('-r', '--rr', action = 'store_true', help = "If given, the Recognition Rate will be computed.")
-  parser.add_argument('-o', '--rank', type=int, default=1, help = "The rank for which to plot the DIR curve")
-  parser.add_argument('-t', '--thresholds', type=float, nargs='+', help = "If given, the Recognition Rate will incorporate an Open Set handling, rejecting all scores that are below the given threshold; when multiple thresholds are given, they are applied in the same order as the --dev-files.")
-  parser.add_argument('-l', '--legends', nargs='+', help = "A list of legend strings used for ROC, CMC and DET plots; if given, must be the same number than --dev-files.")
-  parser.add_argument('-F', '--legend-font-size', type=int, default=10, help = "Set the font size of the legends.")
-  parser.add_argument('-P', '--legend-position', type=int, help = "Set the font size of the legends.")
-  parser.add_argument('-T', '--title', nargs = '+', help = "Overwrite the default title of the plot for development (and evaluation) set")
-  parser.add_argument('-R', '--roc', help = "If given, ROC curves will be plotted into the given pdf file.")
-  parser.add_argument('-D', '--det', help = "If given, DET curves will be plotted into the given pdf file.")
-  parser.add_argument('-C', '--cmc', help = "If given, CMC curves will be plotted into the given pdf file.")
-  parser.add_argument('-O', '--dir', help = "If given, DIR curves will be plotted into the given pdf file; This is an open-set measure, which cannot be applied to closed set score files.")
-  parser.add_argument('-E', '--epc', help = "If given, EPC curves will be plotted into the given pdf file. For this plot --eval-files is mandatory.")
-  parser.add_argument('-M', '--min-far-value', type=float, default=1e-4, help = "Select the minimum FAR value used in ROC plots; should be a power of 10.")
-  parser.add_argument('-L', '--far-line-at', type=float, help = "If given, draw a veritcal line at this FAR value in the ROC plots.")
-
-  # add verbose option
-  bob.core.log.add_command_line_option(parser)
-
-  # parse arguments
-  args = parser.parse_args(command_line_parameters)
-
-  # set verbosity level
-  bob.core.log.set_verbosity_level(logger, args.verbose)
-
-  # some sanity checks:
-  for f in args.dev_files + (args.eval_files or []):
-    real_file = os.path.join(args.directory, f)
-    if not os.path.exists(real_file):
-      raise ValueError("The provided score file '%s' does not exist" % real_file)
-
-  if args.eval_files is not None and len(args.dev_files) != len(args.eval_files):
-    logger.error("The number of --dev-files (%d) and --eval-files (%d) are not identical", len(args.dev_files), len(args.eval_files))
-
-  # update legends when they are not specified on command line
-  if args.legends is None:
-    args.legends = [f.replace('_', '-') for f in args.dev_files]
-    logger.warn("Legends are not specified; using legends estimated from --dev-files: %s", args.legends)
-
-  # check that the legends have the same length as the dev-files
-  if len(args.dev_files) != len(args.legends):
-    logger.error("The number of --dev-files (%d) and --legends (%d) are not identical", len(args.dev_files), len(args.legends))
-
-  if args.thresholds is not None:
-    if len(args.thresholds) == 1:
-      args.thresholds = args.thresholds * len(args.dev_files)
-    elif len(args.thresholds) != len(args.dev_files):
-      logger.error("If given, the number of --thresholds imust be either 1, or the same as --dev-files (%d), but it is %d", len(args.dev_files), len(args.thresholds))
-  else:
-    args.thresholds = [None] * len(args.dev_files)
-
-  if args.title is not None:
-    if args.eval_files is None and len(args.title) != 1:
-      logger.warning("Ignoring the title for the evaluation set, as no evaluation set is given")
-    if args.eval_files is not None and len(args.title) < 2:
-      logger.error("The title for the evaluation set is not specified")
-
-  return args
-
-def _add_far_labels(min_far):
-  # compute and apply tick marks
-  assert min_far > 0
-  ticks = [min_far]
-  while ticks[-1] < 1.: ticks.append(ticks[-1] * 10.)
-  pyplot.xticks(ticks)
-  pyplot.axis([min_far, 1., -0.01, 1.01])
-
-
-
-def _plot_roc(frrs, colors, labels, title, fontsize=10, position=None, farfrrs=None, min_far=None):
-  if position is None: position = 'lower right'
-  figure = pyplot.figure()
-
-  # plot FAR and CAR for each algorithm
-  for i in range(len(frrs)):
-    pyplot.semilogx([f for f in frrs[i][0]], [1. - f for f in frrs[i][1]], color=colors[i], label=labels[i])
-    if isinstance(farfrrs, list):
-      pyplot.plot(farfrrs[i][0], (1.-farfrrs[i][1]), 'o', color=colors[i], markeredgecolor=colors[i])
-
-  # plot vertical bar, if desired
-  if farfrrs is not None:
-    if isinstance(farfrrs, float):
-      pyplot.plot([farfrrs,farfrrs],[0.,1.], "--", color='black')
-    else:
-      pyplot.plot([x[0] for x in farfrrs], [(1.-x[1]) for x in farfrrs], '--', color='black')
-
-  _add_far_labels(min_far)
-
-  # set label, legend and title
-  pyplot.xlabel('FMR')
-  pyplot.ylabel('1 - FNMR')
-  pyplot.grid(True, color=(0.6,0.6,0.6))
-  pyplot.legend(loc=position, prop = {'size':fontsize})
-  pyplot.title(title)
-
-  return figure
-
-
-def _plot_det(dets, colors, labels, title, fontsize=10, position=None):
-  if position is None: position = 'upper right'
-  # open new page for current plot
-  figure = pyplot.figure(figsize=(matplotlib.rcParams['figure.figsize'][0],
-                                  matplotlib.rcParams['figure.figsize'][0] * 0.975))
-  pyplot.grid(True)
-
-  # plot the DET curves
-  for i in range(len(dets)):
-    pyplot.plot(dets[i][0], dets[i][1], color=colors[i], label=labels[i])
-
-  # change axes accordingly
-  det_list = [0.0002, 0.001, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 0.7, 0.9, 0.95]
-  ticks = [bob.measure.ppndf(d) for d in det_list]
-  labels = [("%.5f" % d).rstrip('0').rstrip('.') for d in det_list]
-  pyplot.xticks(ticks, [l if i % 2 else "" for i,l in enumerate(labels)])
-  pyplot.yticks(ticks, labels)
-  pyplot.axis((ticks[0], ticks[-1], ticks[0], ticks[-1]))
-
-  pyplot.xlabel('FMR')
-  pyplot.ylabel('FNMR')
-  pyplot.legend(loc=position, prop = {'size':fontsize})
-  pyplot.title(title)
-
-  return figure
-
-
-def _plot_cmc(cmcs, colors, labels, title, fontsize=10, position=None):
-  if position is None: position = 'lower right'
-  # open new page for current plot
-  figure = pyplot.figure()
-
-  max_R = 0
-  # plot the CMC curves
-  for i in range(len(cmcs)):
-    probs = bob.measure.cmc(cmcs[i])
-    R = len(probs)
-    pyplot.semilogx(range(1, R+1), probs, figure=figure, color=colors[i], label=labels[i])
-    max_R = max(R, max_R)
-
-  # change axes accordingly
-  ticks = [int(t) for t in pyplot.xticks()[0]]
-  pyplot.xlabel('Rank')
-  pyplot.ylabel('Probability')
-  pyplot.xticks(ticks, [str(t) for t in ticks])
-  pyplot.axis([0, max_R, -0.01, 1.01])
-  pyplot.legend(loc=position, prop = {'size':fontsize})
-  pyplot.title(title)
-
-  return figure
-
-
-def _plot_dir(cmc_scores, far_values, rank, colors, labels, title, fontsize=10, position=None):
-  if position is None: position = 'lower right'
-  # open new page for current plot
-  figure = pyplot.figure()
-
-  # for each probe, for which no positives exists, get the highest negative
-  # score; and sort them to compute the FAR thresholds
-  for i, cmcs in enumerate(cmc_scores):
-    negatives = sorted(max(neg) for neg, pos in cmcs if (pos is None or not numpy.array(pos).size) and neg is not None)
-    if not negatives:
-      raise ValueError("There need to be at least one pair with only negative scores")
-
-    # compute thresholds based on FAR values
-    thresholds = [bob.measure.far_threshold(negatives, [], v, True) for v in far_values]
-
-    # compute detection and identification rate based on the thresholds for
-    # the given rank
-    rates = [bob.measure.detection_identification_rate(cmcs, t, rank) for t in thresholds]
-
-    # plot DIR curve
-    pyplot.semilogx(far_values, rates, figure=figure, color=colors[i], label=labels[i])
-
-  # finalize plot
-  _add_far_labels(far_values[0])
-
-  pyplot.xlabel('FAR')
-  pyplot.ylabel('DIR')
-  pyplot.legend(loc=position, prop = {'size':fontsize})
-  pyplot.title(title)
-
-  return figure
-
-
-def _plot_epc(scores_dev, scores_eval, colors, labels, title, fontsize=10, position=None):
-  if position is None: position = 'upper center'
-  # open new page for current plot
-  figure = pyplot.figure()
-
-  # plot the DET curves
-  for i in range(len(scores_dev)):
-    x,y = bob.measure.epc(scores_dev[i][0], scores_dev[i][1], scores_eval[i][0], scores_eval[i][1], 100)
-    pyplot.plot(x, y, color=colors[i], label=labels[i])
-
-  # change axes accordingly
-  pyplot.xlabel('alpha')
-  pyplot.ylabel('HTER')
-  pyplot.title(title)
-  pyplot.axis([-0.01, 1.01, -0.01, 0.51])
-  pyplot.grid(True)
-  pyplot.legend(loc=position, prop = {'size':fontsize})
-  pyplot.title(title)
-
-  return figure
-
-
-def remove_nan(scores):
-    """removes the NaNs from the scores"""
-    nans = numpy.isnan(scores)
-    sum_nans = sum(nans)
-    total = len(scores)
-    return scores[numpy.where(~nans)], sum_nans, total
-
-
-def get_fta(scores):
-    """calculates the Failure To Acquire (FtA) rate"""
-    fta_sum, fta_total = 0, 0
-    neg, sum_nans, total = remove_nan(scores[0])
-    fta_sum += sum_nans
-    fta_total += total
-    pos, sum_nans, total = remove_nan(scores[1])
-    fta_sum += sum_nans
-    fta_total += total
-    return (neg, pos, fta_sum * 100 / float(fta_total))
-
-
-def main(command_line_parameters=None):
-  """Reads score files, computes error measures and plots curves."""
-
-  args = command_line_arguments(command_line_parameters)
-
-  # get some colors for plotting
-  if len(args.dev_files) > 10:
-    cmap = pyplot.cm.get_cmap(name='magma')
-    colors = [cmap(i) for i in numpy.linspace(0, 1.0, len(args.dev_files) + 1)]
-  else:
-    # matplotlib 2.0 default color cycler list: Vega category10 palette
-    colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728',
-              '#9467bd', '#8c564b', '#e377c2', '#7f7f7f',
-              '#bcbd22', '#17becf']
-
-  if args.criterion or args.roc or args.det or args.epc or args.cllr or args.mindcf:
-
-    # First, read the score files
-    logger.info("Loading %d score files of the development set", len(args.dev_files))
-    scores_dev = [bob.measure.load.split(os.path.join(args.directory, f)) for f in args.dev_files]
-    # remove nans
-    scores_dev = [get_fta(s) for s in scores_dev]
-
-    if args.eval_files:
-      logger.info("Loading %d score files of the evaluation set", len(args.eval_files))
-      scores_eval = [bob.measure.load.split(os.path.join(args.directory, f)) for f in args.eval_files]
-      # remove nans
-      scores_eval = [get_fta(s) for s in scores_eval]
-
-
-    if args.criterion:
-      logger.info("Computing %s on the development " % args.criterion + ("and HTER on the evaluation set" if args.eval_files else "set"))
-      for i in range(len(scores_dev)):
-        # compute threshold on development set
-        if args.criterion == 'FAR':
-          threshold = bob.measure.far_threshold(scores_dev[i][0], scores_dev[i][1], args.far_value/100.)
-        else:
-          threshold = {'EER': bob.measure.eer_threshold, 'HTER' : bob.measure.min_hter_threshold} [args.criterion](scores_dev[i][0], scores_dev[i][1])
-        # apply threshold to development set
-        far, frr = bob.measure.farfrr(scores_dev[i][0], scores_dev[i][1], threshold)
-        if args.criterion == 'FAR':
-          print("The FRR at FAR=%.1E of the development set of '%s' is %2.3f%% (CAR: %2.3f%%)" % (args.far_value, args.legends[i], frr * 100., 100.*(1-frr)))
-        else:
-          print("The %s of the development set of '%s' is %2.3f%%" % (args.criterion, args.legends[i], (far + frr) * 50.)) # / 2 * 100%
-        if args.eval_files:
-          # apply threshold to evaluation set
-          far, frr = bob.measure.farfrr(scores_eval[i][0], scores_eval[i][1], threshold)
-          if args.criterion == 'FAR':
-            print("The FRR of the evaluation set of '%s' is %2.3f%% (CAR: %2.3f%%)" % (args.legends[i], frr * 100., 100.*(1-frr))) # / 2 * 100%
-          else:
-            print("The HTER of the evaluation set of '%s' is %2.3f%%" % (args.legends[i], (far + frr) * 50.)) # / 2 * 100%
-
-
-    if args.mindcf:
-      logger.info("Computing minDCF on the development " + ("and on the evaluation set" if args.eval_files else "set"))
-      for i in range(len(scores_dev)):
-        # compute threshold on development set
-        threshold = bob.measure.min_weighted_error_rate_threshold(scores_dev[i][0], scores_dev[i][1], args.cost)
-        # apply threshold to development set
-        far, frr = bob.measure.farfrr(scores_dev[i][0], scores_dev[i][1], threshold)
-        print("The minDCF of the development set of '%s' is %2.3f%%" % (args.legends[i], (args.cost * far + (1-args.cost) * frr) * 100. ))
-        if args.eval_files:
-          # compute threshold on evaluation set
-          threshold = bob.measure.min_weighted_error_rate_threshold(scores_eval[i][0], scores_eval[i][1], args.cost)
-          # apply threshold to evaluation set
-          far, frr = bob.measure.farfrr(scores_eval[i][0], scores_eval[i][1], threshold)
-          print("The minDCF of the evaluation set of '%s' is %2.3f%%" % (args.legends[i], (args.cost * far + (1-args.cost) * frr) * 100. ))
-
-
-    if args.cllr:
-      logger.info("Computing Cllr and minCllr on the development " + ("and on the evaluation set" if args.eval_files else "set"))
-      for i in range(len(scores_dev)):
-        cllr = bob.measure.calibration.cllr(scores_dev[i][0], scores_dev[i][1])
-        min_cllr = bob.measure.calibration.min_cllr(scores_dev[i][0], scores_dev[i][1])
-        print("Calibration performance on development set of '%s' is Cllr %1.5f and minCllr %1.5f " % (args.legends[i], cllr, min_cllr))
-        if args.eval_files:
-          cllr = bob.measure.calibration.cllr(scores_eval[i][0], scores_eval[i][1])
-          min_cllr = bob.measure.calibration.min_cllr(scores_eval[i][0], scores_eval[i][1])
-          print("Calibration performance on evaluation set of '%s' is Cllr %1.5f and minCllr %1.5f" % (args.legends[i], cllr, min_cllr))
-
-
-    if args.roc:
-      logger.info("Computing CAR curves on the development " + ("and on the evaluation set" if args.eval_files else "set"))
-      min_far = int(math.floor(math.log(args.min_far_value, 10)))
-      fars = [math.pow(10., i * 0.25) for i in range(min_far * 4, 0)] + [1.]
-      frrs_dev = [bob.measure.roc_for_far(scores[0], scores[1], fars) for scores in scores_dev]
-      if args.eval_files:
-        frrs_eval = [bob.measure.roc_for_far(scores[0], scores[1], fars) for scores in scores_eval]
-
-      logger.info("Plotting ROC curves to file '%s'", args.roc)
-      try:
-        # create a multi-page PDF for the ROC curve
-        pdf = PdfPages(args.roc)
-        # create a separate figure for dev and eval
-        pdf.savefig(_plot_roc(frrs_dev, colors, args.legends, args.title[0] if args.title is not None else "ROC for development set", args.legend_font_size, args.legend_position, args.far_line_at, min_far=args.min_far_value), bbox_inches='tight')
-        del frrs_dev
-        if args.eval_files:
-          if args.far_line_at is not None:
-            farfrrs = []
-            for i in range(len(scores_dev)):
-              threshold = bob.measure.far_threshold(scores_dev[i][0], scores_dev[i][1], args.far_line_at)
-              farfrrs.append(bob.measure.farfrr(scores_eval[i][0], scores_eval[i][1], threshold))
-          else:
-            farfrrs = None
-          pdf.savefig(_plot_roc(frrs_eval, colors, args.legends, args.title[1] if args.title is not None else "ROC for evaluation set", args.legend_font_size, args.legend_position, farfrrs, min_far=args.min_far_value), bbox_inches='tight')
-          del frrs_eval
-        pdf.close()
-      except RuntimeError as e:
-        raise RuntimeError("During plotting of ROC curves, the following exception occured:\n%s" % e)
-
-    if args.det:
-      logger.info("Computing DET curves on the development " + ("and on the evaluation set" if args.eval_files else "set"))
-      dets_dev = [bob.measure.det(scores[0], scores[1], 1000) for scores in scores_dev]
-      if args.eval_files:
-        dets_eval = [bob.measure.det(scores[0], scores[1], 1000) for scores in scores_eval]
-
-      logger.info("Plotting DET curves to file '%s'", args.det)
-      try:
-        # create a multi-page PDF for the DET curve
-        pdf = PdfPages(args.det)
-        # create a separate figure for dev and eval
-        pdf.savefig(_plot_det(dets_dev, colors, args.legends, args.title[0] if args.title is not None else "DET for development set", args.legend_font_size, args.legend_position), bbox_inches='tight')
-        del dets_dev
-        if args.eval_files:
-          pdf.savefig(_plot_det(dets_eval, colors, args.legends, args.title[1] if args.title is not None else "DET for evaluation set", args.legend_font_size, args.legend_position), bbox_inches='tight')
-          del dets_eval
-        pdf.close()
-      except RuntimeError as e:
-        raise RuntimeError("During plotting of DET curves, the following exception occured:\n%s" % e)
-
-
-    if args.epc:
-      logger.info("Plotting EPC curves to file '%s'", args.epc)
-
-      if not args.eval_files:
-        raise ValueError("To plot the EPC curve the evaluation scores are necessary. Please, set it with the --eval-files option.")
-
-      try:
-        # create a multi-page PDF for the EPC curve
-        pdf = PdfPages(args.epc)
-        pdf.savefig(_plot_epc(scores_dev, scores_eval, colors, args.legends, args.title[0] if args.title is not None else "" , args.legend_font_size, args.legend_position), bbox_inches='tight')
-        pdf.close()
-      except RuntimeError as e:
-        raise RuntimeError("During plotting of EPC curves, the following exception occured:\n%s" % e)
-
-
-
-  if args.cmc or args.rr or args.dir:
-    logger.info("Loading CMC data on the development " + ("and on the evaluation set" if args.eval_files else "set"))
-    cmcs_dev = [bob.measure.load.cmc(os.path.join(args.directory, f)) for f in args.dev_files]
-    if args.eval_files:
-      cmcs_eval = [bob.measure.load.cmc(os.path.join(args.directory, f)) for f in args.eval_files]
-
-    if args.cmc:
-      logger.info("Plotting CMC curves to file '%s'", args.cmc)
-      try:
-        # create a multi-page PDF for the CMC curve
-        pdf = PdfPages(args.cmc)
-        # create a separate figure for dev and eval
-        pdf.savefig(_plot_cmc(cmcs_dev, colors, args.legends, args.title[0] if args.title is not None else "CMC curve for development set", args.legend_font_size, args.legend_position), bbox_inches='tight')
-        if args.eval_files:
-          pdf.savefig(_plot_cmc(cmcs_eval, colors, args.legends, args.title[1] if args.title is not None else "CMC curve for evaluation set", args.legend_font_size, args.legend_position), bbox_inches='tight')
-        pdf.close()
-      except RuntimeError as e:
-        raise RuntimeError("During plotting of CMC curves, the following exception occured:\n%s\nUsually this happens when the label contains characters that LaTeX cannot parse." % e)
-
-    if args.rr:
-      logger.info("Computing recognition rate on the development " + ("and on the evaluation set" if args.eval_files else "set"))
-      for i in range(len(cmcs_dev)):
-        rr = bob.measure.recognition_rate(cmcs_dev[i], args.thresholds[i])
-        print("The Recognition Rate of the development set of '%s' is %2.3f%%" % (args.legends[i], rr * 100.))
-        if args.eval_files:
-          rr = bob.measure.recognition_rate(cmcs_eval[i], args.thresholds[i])
-          print("The Recognition Rate of the development set of '%s' is %2.3f%%" % (args.legends[i], rr * 100.))
-
-    if args.dir:
-      # compute false alarm values to evaluate
-      min_far = int(math.floor(math.log(args.min_far_value, 10)))
-      fars = [math.pow(10., i * 0.25) for i in range(min_far * 4, 0)] + [1.]
-      logger.info("Plotting DIR curves to file '%s'", args.dir)
-      try:
-        # create a multi-page PDF for the DIR curve
-        pdf = PdfPages(args.dir)
-        # create a separate figure for dev and eval
-        pdf.savefig(_plot_dir(cmcs_dev, fars, args.rank, colors, args.legends, args.title[0] if args.title is not None else "DIR curve for development set", args.legend_font_size, args.legend_position), bbox_inches='tight')
-        if args.eval_files:
-          pdf.savefig(_plot_dir(cmcs_eval, fars, args.rank, colors, args.legends, args.title[1] if args.title is not None else "DIR curve for evaluation set", args.legend_font_size, args.legend_position), bbox_inches='tight')
-        pdf.close()
-      except RuntimeError as e:
-        raise RuntimeError("During plotting of DIR curves, the following exception occured:\n%s" % e)
diff --git a/bob/bio/base/script/figure.py b/bob/bio/base/script/figure.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec95d88e34d24f33c18625f292c5eb2ba1b3dbe1
--- /dev/null
+++ b/bob/bio/base/script/figure.py
@@ -0,0 +1,215 @@
+'''Plots and measures for bob.bio.base'''
+
+import math
+import click
+import matplotlib.pyplot as mpl
+import bob.measure.script.figure as measure_figure
+import bob.measure
+from bob.measure import plot
+from tabulate import tabulate
+
+class Roc(measure_figure.Roc):
+    def __init__(self, ctx, scores, evaluation, func_load):
+        super(Roc, self).__init__(ctx, scores, evaluation, func_load)
+        self._x_label = 'False Match Rate' if 'x_label' not in ctx.meta  or \
+        ctx.meta['x_label'] is None else ctx.meta['x_label']
+        self._y_label = '1 - False Non Match Rate' if 'y_label' not in \
+        ctx.meta or ctx.meta['y_label'] is None else ctx.meta['y_label']
+
+class Det(measure_figure.Det):
+    def __init__(self, ctx, scores, evaluation, func_load):
+        super(Det, self).__init__(ctx, scores, evaluation, func_load)
+        self._x_label = 'False Match Rate' if 'x_label' not in ctx.meta or \
+        ctx.meta['x_label'] is None else ctx.meta['x_label']
+        self._y_label = 'False Non Match Rate' if 'y_label' not in ctx.meta or\
+        ctx.meta['y_label'] is None else ctx.meta['y_label']
+
+class Cmc(measure_figure.PlotBase):
+    ''' Handles the plotting of Cmc '''
+    def __init__(self, ctx, scores, evaluation, func_load):
+        super(Cmc, self).__init__(ctx, scores, evaluation, func_load)
+        self._semilogx = True if 'semilogx' not in ctx.meta else\
+        ctx.meta['semilogx']
+        self._title = self._title or 'CMC'
+        self._x_label = self._x_label or 'Rank'
+        self._y_label = self._y_label or 'Identification rate'
+        self._max_R = 0
+
+    def compute(self, idx, input_scores, input_names):
+        ''' Plot CMC for dev and eval data using
+        :py:func:`bob.measure.plot.cmc`'''
+        mpl.figure(1)
+        if self._eval:
+            linestyle = '-' if not self._split else self._linestyles[idx]
+            rank = plot.cmc(
+                input_scores[0], logx=self._semilogx,
+                color=self._colors[idx], linestyle=linestyle,
+                label=self._label('development', input_names[0], idx)
+            )
+            self._max_R = max(rank, self._max_R)
+            linestyle = '--'
+            if self._split:
+                mpl.figure(2)
+                linestyle = self._linestyles[idx]
+
+            rank = plot.cmc(
+                input_scores[1], logx=self._semilogx,
+                color=self._colors[idx], linestyle=linestyle,
+                label=self._label('eval', input_names[1], idx)
+            )
+            self._max_R = max(rank, self._max_R)
+        else:
+            rank = plot.cmc(
+                input_scores[0], logx=self._semilogx,
+                color=self._colors[idx], linestyle=self._linestyles[idx],
+                label=self._label('development', input_names[0], idx)
+            )
+            self._max_R = max(rank, self._max_R)
+
+class Dir(measure_figure.PlotBase):
+    ''' Handles the plotting of DIR curve'''
+    def __init__(self, ctx, scores, evaluation, func_load):
+        super(Dir, self).__init__(ctx, scores, evaluation, func_load)
+        self._semilogx = True if 'semilogx' not in ctx.meta else\
+                ctx.meta['semilogx']
+        self._rank = 1 if 'rank' not in ctx.meta else ctx.meta['rank']
+        self._title = self._title or 'DIR curve'
+        self._x_label = self._title or 'FAR'
+        self._y_label = self._title or 'DIR'
+
+
+
+    def compute(self, idx, input_scores, input_names):
+        ''' Plot DIR for dev and eval data using
+        :py:func:`bob.measure.plot.detection_identification_curve`'''
+        mpl.figure(1)
+        if self._eval:
+            linestyle = '-' if not self._split else self._linestyles[idx]
+            plot.detection_identification_curve(
+                input_scores[0], rank=self._rank, logx=self._semilogx,
+                color=self._colors[idx], linestyle=linestyle,
+                label=self._label('development', input_names[0], idx)
+            )
+            linestyle = '--'
+            if self._split:
+                mpl.figure(2)
+                linestyle = self._linestyles[idx]
+
+            plot.detection_identification_curve(
+                input_scores[1], rank=self._rank, logx=self._semilogx,
+                color=self._colors[idx], linestyle=linestyle,
+                label=self._label('eval', input_names[1], idx)
+            )
+        else:
+            plot.detection_identification_curve(
+                input_scores[0], rank=self._rank, logx=self._semilogx,
+                color=self._colors[idx], linestyle=self._linestyles[idx],
+                label=self._label('development', input_names[0], idx)
+            )
+
+        if self._min_dig is not None:
+            mpl.xlim(xmin=math.pow(10, self._min_dig))
+
+class Metrics(measure_figure.Metrics):
+    ''' Compute metrics from score files'''
+    def init_process(self):
+        if self._criterion == 'rr':
+            self._thres = [None] * self.n_systems if self._thres is None else \
+                    self._thres
+
+    def compute(self, idx, input_scores, input_names):
+        ''' Compute metrics for the given criteria'''
+        title = self._legends[idx] if self._legends is not None else None
+        headers = ['' or title, 'Development %s' % input_names[0]]
+        if self._eval and input_scores[1] is not None:
+            headers.append('eval % s' % input_names[1])
+        if self._criterion == 'rr':
+            rr = bob.measure.recognition_rate(input_scores[0], self._thres[idx])
+            dev_rr = "%.1f%%" % (100 * rr)
+            raws = [['RR', dev_rr]]
+            if self._eval and input_scores[1] is not None:
+                rr = bob.measure.recognition_rate(input_scores[1], self._thres[idx])
+                eval_rr = "%.1f%%" % (100 * rr)
+                raws[0].append(eval_rr)
+            click.echo(
+                tabulate(raws, headers, self._tablefmt), file=self.log_file
+            )
+        elif self._criterion == 'mindcf':
+            if 'cost' in self._ctx.meta:
+                cost = 0.99 if 'cost' not in self._ctx.meta else\
+                        self._ctx.meta['cost']
+            threshold = bob.measure.min_weighted_error_rate_threshold(
+                input_scores[0][0], input_scores[0][1], cost
+            ) if self._thres is None else self._thres[idx]
+            if self._thres is None:
+                click.echo(
+                    "[minDCF - Cost:%f] Threshold on Development set `%s`: %e"\
+                    % (cost, input_names[0], threshold),
+                    file=self.log_file
+                )
+            else:
+                click.echo(
+                    "[minDCF] User defined Threshold: %e" %  threshold,
+                    file=self.log_file
+                )
+            # apply threshold to development set
+            far, frr = bob.measure.farfrr(
+                input_scores[0][0], input_scores[0][1], threshold
+            )
+            dev_far_str = "%.1f%%" % (100 * far)
+            dev_frr_str = "%.1f%%" % (100 * frr)
+            dev_mindcf_str = "%.1f%%" % ((cost * far + (1 - cost) * frr) * 100.)
+            raws = [['FAR', dev_far_str],
+                    ['FRR', dev_frr_str],
+                    ['minDCF', dev_mindcf_str]]
+            if self._eval and input_scores[1] is not None:
+                # apply threshold to development set
+                far, frr = bob.measure.farfrr(
+                    input_scores[1][0], input_scores[1][1], threshold
+                )
+                eval_far_str = "%.1f%%" % (100 * far)
+                eval_frr_str = "%.1f%%" % (100 * frr)
+                eval_mindcf_str = "%.1f%%" % ((cost * far + (1 - cost) * frr) * 100.)
+                raws[0].append(eval_far_str)
+                raws[1].append(eval_frr_str)
+                raws[2].append(eval_mindcf_str)
+            click.echo(
+                tabulate(raws, headers, self._tablefmt), file=self.log_file
+            )
+        elif self._criterion == 'cllr':
+            cllr = bob.measure.calibration.cllr(input_scores[0][0],
+                                                input_scores[0][1])
+            min_cllr = bob.measure.calibration.min_cllr(
+                input_scores[0][0], input_scores[0][1]
+            )
+            dev_cllr_str = "%.1f%%" % cllr
+            dev_min_cllr_str = "%.1f%%" % min_cllr
+            raws = [['Cllr', dev_cllr_str],
+                    ['minCllr', dev_min_cllr_str]]
+            if self._eval and input_scores[1] is not None:
+                cllr = bob.measure.calibration.cllr(input_scores[1][0],
+                                                    input_scores[1][1])
+                min_cllr = bob.measure.calibration.min_cllr(
+                    input_scores[1][0], input_scores[1][1]
+                )
+                eval_cllr_str = "%.1f%%" % cllr
+                eval_min_cllr_str = "%.1f%%" % min_cllr
+                raws[0].append(eval_cllr_str)
+                raws[1].append(eval_min_cllr_str)
+                click.echo(
+                    tabulate(raws, headers, self._tablefmt), file=self.log_file
+                )
+        else:
+            super(Metrics, self).compute(idx, input_scores, input_names)
+
+class Hist(measure_figure.Hist):
+    ''' Histograms for biometric scores '''
+
+    def _setup_hist(self, neg, pos):
+        self._title_base = 'Biometric scores'
+        self._density_hist(
+            pos[0], n=0, label='Genuines', alpha=0.9, color='C2'
+        )
+        self._density_hist(
+            neg[0], n=1, label='Zero-effort impostors', alpha=0.8, color='C0'
+        )
diff --git a/bob/bio/base/script/fuse_scores.py b/bob/bio/base/script/fuse_scores.py
index 29152981af9d3e823da7c04ca0a3474b0f8ef1d1..220791dc0086d83c4190c20d6fd06e07c7b0054f 100755
--- a/bob/bio/base/script/fuse_scores.py
+++ b/bob/bio/base/script/fuse_scores.py
@@ -17,6 +17,7 @@ import bob, os, sys
 import bob.learn.linear
 
 import bob.core
+from .. import score
 logger = bob.core.log.setup("bob.bio.base")
 
 def parse_command_line(command_line_options):
@@ -66,7 +67,7 @@ def main(command_line_options = None):
   for i in range(n_systems):
     logger.info("Loading development set score file '%s'", args.dev_files[i])
     # pythonic way: create inline dictionary "{...}", index with desired value "[...]", execute function "(...)"
-    data.append({'4column' : bob.measure.load.split_four_column, '5column' : bob.measure.load.split_five_column}[args.parser](args.dev_files[i]))
+    data.append({'4column' : score.split_four_column, '5column' : score.split_five_column}[args.parser](args.dev_files[i]))
   import numpy
 
   trainer = bob.learn.linear.CGLogRegTrainer(0.5, args.convergence_threshold, args.max_iterations, mean_std_norm=not args.no_whitening)
@@ -78,7 +79,7 @@ def main(command_line_options = None):
   gen_data_dev = []
   for i in range(n_systems):
     logger.info("Loading development set score file '%s'", args.dev_files[i])
-    gen_data_dev.append({'4column' : bob.measure.load.four_column, '5column' : bob.measure.load.five_column}[args.parser](args.dev_files[i]))
+    gen_data_dev.append({'4column' : score.four_column, '5column' : score.five_column}[args.parser](args.dev_files[i]))
 
   logger.info("Writing fused development set score file '%s'", args.fused_dev_file)
   outf = open(args.fused_dev_file, 'w')
@@ -99,7 +100,7 @@ def main(command_line_options = None):
     gen_data_eval = []
     for i in range(n_systems):
       logger.info("Loading evaluation set score file '%s'", args.eval_files[i])
-      gen_data_eval.append({'4column' : bob.measure.load.four_column, '5column' : bob.measure.load.five_column}[args.parser](args.eval_files[i]))
+      gen_data_eval.append({'4column' : score.four_column, '5column' : score.five_column}[args.parser](args.eval_files[i]))
 
     logger.info("Writing fused evaluation set score file '%s'", args.fused_eval_file)
     outf = open(args.fused_eval_file, 'w')
diff --git a/bob/bio/base/script/gen.py b/bob/bio/base/script/gen.py
new file mode 100644
index 0000000000000000000000000000000000000000..9f2ce4c3d09f67e53e7dcc3e91efb3b8ea21abe3
--- /dev/null
+++ b/bob/bio/base/script/gen.py
@@ -0,0 +1,103 @@
+"""Generate random scores.
+"""
+import os
+import logging
+import numpy
+import random
+import click
+from click.types import FLOAT
+from bob.extension.scripts.click_helper import verbosity_option
+import bob.core
+from bob.io.base import create_directories_safe
+
+logger = logging.getLogger(__name__)
+
+NUM_NEG = 5000
+NUM_POS = 5000
+
+
+def gen_score_distr(mean_neg, mean_pos, sigma_neg=10, sigma_pos=10):
+    """Generate scores from normal distributions
+
+    Parameters
+    ----------
+    mean_neg : float
+        Mean for negative scores
+    mean_pos : float
+        Mean for positive scores
+    sigma_neg : float
+        STDev for negative scores
+    sigma_pos : float
+        STDev for positive scores
+
+    Returns
+    -------
+    neg_scores : :any:`list`
+        Negatives scores
+    pos_scores : :any:`list`
+        Positive scores
+    """
+    mt = bob.core.random.mt19937()  # initialise the random number generator
+
+    neg_generator = bob.core.random.normal(numpy.float32, mean_neg, sigma_neg)
+    pos_generator = bob.core.random.normal(numpy.float32, mean_pos, sigma_pos)
+
+    neg_scores = [neg_generator(mt) for _ in range(NUM_NEG)]
+    pos_scores = [pos_generator(mt) for _ in range(NUM_NEG)]
+
+    return neg_scores, pos_scores
+
+
+def write_scores_to_file(neg, pos, filename, n_sys=1, five_col=False):
+    """ Writes score distributions
+
+    Parameters
+    ----------
+    neg : :py:class:`numpy.ndarray`
+        Scores for negative samples.
+    pos : :py:class:`numpy.ndarray`
+        Scores for positive samples.
+    filename : str
+        The path to write the score to.
+    n_sys : int
+        Number of different systems
+    five_col : bool
+        If 5-colum format, else 4-column
+    """
+    create_directories_safe(os.path.dirname(filename))
+    s_names = ['s%d' % i for i in range(n_sys)]
+    with open(filename, 'wt') as f:
+        for i in pos:
+            s_name = random.choice(s_names)
+            s_five = ' ' if not five_col else ' d' + \
+                random.choice(s_names) + ' '
+            f.write('x%sx %s %f\n' % (s_five, s_name, i))
+        for i in neg:
+            s_name = random.choice(s_names)
+            s_five = ' ' if not five_col else ' d' + \
+                random.choice(s_names) + ' '
+            f.write('x%sy %s %f\n' % (s_five, s_name, i))
+
+
+@click.command()
+@click.argument('outdir')
+@click.option('-mm', '--mean-match', default=10, type=FLOAT, show_default=True)
+@click.option('-mnm', '--mean-non-match', default=-10, type=FLOAT, show_default=True)
+@click.option('-n', '--n-sys', default=1, type=click.INT, show_default=True)
+@click.option('--five-col/--four-col', default=False, show_default=True)
+@verbosity_option()
+def gen(outdir, mean_match, mean_non_match, n_sys, five_col):
+    """Generate random scores.
+    Generates random scores in 4col or 5col format. The scores are generated
+    using Gaussian distribution whose mean is an input
+    parameter. The generated scores can be used as hypothetical datasets.
+    """
+    # Generate the data
+    neg_dev, pos_dev = gen_score_distr(mean_non_match, mean_match)
+    neg_eval, pos_eval = gen_score_distr(mean_non_match, mean_match)
+
+    # Write the data into files
+    write_scores_to_file(neg_dev, pos_dev,
+                         os.path.join(outdir, 'scores-dev'), n_sys, five_col)
+    write_scores_to_file(neg_eval, pos_eval,
+                         os.path.join(outdir, 'scores-eval'), n_sys, five_col)
diff --git a/bob/bio/base/test/data/dev-4col.tar.gz b/bob/bio/base/test/data/dev-4col.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..a903eaa18e8f219b24a59933ef43987cb5f9fe76
Binary files /dev/null and b/bob/bio/base/test/data/dev-4col.tar.gz differ
diff --git a/bob/bio/base/test/data/dev-4col.txt b/bob/bio/base/test/data/dev-4col.txt
new file mode 100644
index 0000000000000000000000000000000000000000..be5f2d89447b7c47ff2a99c26fea82d3b4aeb8a8
--- /dev/null
+++ b/bob/bio/base/test/data/dev-4col.txt
@@ -0,0 +1,910 @@
+f_1001 f_1001 x 0.006299
+f_1001 f_1001 x 0.111554
+f_1001 f_1001 x -0.092548
+f_1001 f_1001 x -0.030429
+f_1001 f_1001 x -0.004657
+f_1001 f_1003 x -0.070376
+f_1001 f_1003 x -0.076431
+f_1001 f_1003 x -0.09103
+f_1001 f_1003 x -0.119019
+f_1001 f_1003 x -0.119581
+f_1002 f_1002 x -0.076412
+f_1002 f_1002 x -0.007193
+f_1002 f_1002 x -0.068236
+f_1002 f_1002 x 0.001462
+f_1002 f_1002 x -0.089528
+f_1002 f_1004 x -0.177674
+f_1002 f_1004 x -0.116451
+f_1002 f_1004 x -0.105341
+f_1002 f_1004 x -0.15466
+f_1002 f_1004 x -0.18616
+f_1003 f_1003 x 0.259138
+f_1003 f_1003 x 0.332629
+f_1003 f_1003 x 0.311423
+f_1003 f_1003 x 0.162215
+f_1003 f_1003 x 0.048613
+f_1003 f_1005 x -0.074399
+f_1003 f_1005 x -0.04628
+f_1003 f_1005 x -0.014418
+f_1003 f_1005 x 0.00478
+f_1003 f_1005 x -0.016143
+f_1004 f_1004 x 0.133522
+f_1004 f_1004 x 0.233416
+f_1004 f_1004 x 0.157029
+f_1004 f_1004 x 0.163154
+f_1004 f_1004 x 0.188569
+f_1004 f_1006 x -0.111788
+f_1004 f_1006 x -0.146505
+f_1004 f_1006 x -0.085332
+f_1004 f_1006 x -0.143158
+f_1004 f_1006 x -0.126225
+f_1005 f_1005 x 0.102271
+f_1005 f_1005 x 0.045251
+f_1005 f_1005 x 0.044341
+f_1005 f_1005 x 0.03692
+f_1005 f_1005 x -0.013536
+f_1005 f_1007 x 0.019496
+f_1005 f_1007 x -0.00295
+f_1005 f_1007 x -0.027841
+f_1005 f_1007 x -0.038533
+f_1005 f_1007 x -0.130486
+f_1006 f_1006 x 0.155776
+f_1006 f_1006 x 0.030909
+f_1006 f_1006 x 0.245848
+f_1006 f_1006 x 0.450645
+f_1006 f_1006 x 0.19262
+f_1006 f_1008 x -0.09691
+f_1006 f_1008 x -0.109712
+f_1006 f_1008 x -0.070605
+f_1006 f_1008 x -0.066152
+f_1006 f_1008 x -0.037858
+f_1007 f_1007 x 0.293177
+f_1007 f_1007 x 0.271007
+f_1007 f_1007 x 0.318237
+f_1007 f_1007 x 0.186197
+f_1007 f_1007 x 0.352784
+f_1007 f_1009 x -0.050168
+f_1007 f_1009 x 0.024759
+f_1007 f_1009 x -0.066628
+f_1007 f_1009 x -0.04056
+f_1007 f_1009 x 0.010592
+f_1008 f_1008 x 0.09707
+f_1008 f_1008 x -0.022928
+f_1008 f_1008 x 0.028861
+f_1008 f_1008 x 0.04206
+f_1008 f_1008 x 0.066096
+f_1008 f_1010 x -0.063427
+f_1008 f_1010 x 0.03159
+f_1008 f_1010 x -0.049853
+f_1008 f_1010 x -0.035822
+f_1008 f_1010 x -0.075959
+f_1009 f_1009 x 0.077973
+f_1009 f_1009 x 0.138974
+f_1009 f_1009 x 0.078081
+f_1009 f_1009 x 0.098706
+f_1009 f_1009 x -0.061095
+f_1009 f_1011 x -0.145006
+f_1009 f_1011 x -0.137257
+f_1009 f_1011 x -0.142997
+f_1009 f_1011 x -0.143305
+f_1009 f_1011 x -0.131891
+f_1010 f_1010 x 0.07374
+f_1010 f_1010 x 0.12733
+f_1010 f_1010 x 0.071941
+f_1010 f_1010 x 0.093608
+f_1010 f_1010 x 0.132198
+f_1010 f_1012 x 0.102712
+f_1010 f_1012 x -0.044807
+f_1010 f_1012 x -0.00116
+f_1010 f_1012 x 0.030686
+f_1010 f_1012 x -0.036943
+f_1011 f_1011 x 0.232048
+f_1011 f_1011 x 0.22864
+f_1011 f_1011 x 0.132145
+f_1011 f_1011 x 0.165999
+f_1011 f_1011 x 0.120414
+f_1011 f_1013 x -0.12074
+f_1011 f_1013 x -0.117955
+f_1011 f_1013 x -0.076039
+f_1011 f_1013 x -0.07393
+f_1011 f_1013 x -0.103342
+f_1012 f_1001 x -0.020321
+f_1012 f_1001 x -0.05211
+f_1012 f_1001 x -0.056951
+f_1012 f_1001 x 0.013234
+f_1012 f_1001 x -0.014755
+f_1012 f_1012 x -0.020073
+f_1012 f_1012 x 0.051658
+f_1012 f_1012 x 0.032461
+f_1012 f_1012 x 0.067917
+f_1012 f_1012 x 0.052605
+f_1013 f_1002 x -0.105477
+f_1013 f_1002 x -0.110275
+f_1013 f_1002 x -0.118202
+f_1013 f_1002 x -0.041612
+f_1013 f_1002 x -0.133065
+f_1013 f_1013 x 0.003664
+f_1013 f_1013 x 0.025006
+f_1013 f_1013 x 0.008643
+f_1013 f_1013 x 0.027281
+f_1013 f_1013 x 0.028362
+m_1027 m_1027 x 0.286687
+m_1027 m_1027 x 0.183224
+m_1027 m_1027 x 0.321388
+m_1027 m_1027 x 0.42079
+m_1027 m_1027 x 0.53976
+m_1027 m_1029 x -0.08594
+m_1027 m_1029 x -0.121272
+m_1027 m_1029 x -0.113022
+m_1027 m_1029 x -0.160544
+m_1027 m_1029 x -0.090424
+m_1028 m_1028 x 0.017651
+m_1028 m_1028 x 0.150004
+m_1028 m_1028 x 0.159424
+m_1028 m_1028 x 0.052019
+m_1028 m_1028 x 0.127836
+m_1028 m_1030 x -0.141315
+m_1028 m_1030 x -0.029844
+m_1028 m_1030 x -0.022167
+m_1028 m_1030 x -0.071379
+m_1028 m_1030 x -0.099675
+m_1029 m_1029 x -0.003534
+m_1029 m_1029 x 0.024651
+m_1029 m_1029 x 0.060505
+m_1029 m_1029 x 0.12037
+m_1029 m_1029 x -0.03431
+m_1029 m_1031 x -0.03181
+m_1029 m_1031 x 0.003197
+m_1029 m_1031 x -0.034498
+m_1029 m_1031 x -0.050882
+m_1029 m_1031 x -0.00274
+m_1030 m_1030 x 0.197724
+m_1030 m_1030 x 0.207926
+m_1030 m_1030 x 0.144697
+m_1030 m_1030 x 0.298164
+m_1030 m_1030 x 0.180303
+m_1030 m_1032 x -0.100375
+m_1030 m_1032 x -0.089028
+m_1030 m_1032 x -0.096304
+m_1030 m_1032 x -0.125789
+m_1030 m_1032 x -0.119192
+m_1031 m_1031 x 0.178925
+m_1031 m_1031 x 0.135697
+m_1031 m_1031 x 0.190606
+m_1031 m_1031 x 0.268289
+m_1031 m_1031 x 0.114208
+m_1031 m_1033 x -0.065958
+m_1031 m_1033 x -0.042427
+m_1031 m_1033 x -0.115761
+m_1031 m_1033 x -0.077916
+m_1031 m_1033 x -0.179634
+m_1032 m_1032 x 0.082708
+m_1032 m_1032 x 0.078839
+m_1032 m_1032 x 0.031509
+m_1032 m_1032 x 0.08322
+m_1032 m_1032 x 0.013146
+m_1032 m_1034 x -0.094497
+m_1032 m_1034 x -0.097829
+m_1032 m_1034 x -0.041958
+m_1032 m_1034 x -0.112755
+m_1032 m_1034 x -0.087314
+m_1033 m_1033 x 0.232628
+m_1033 m_1033 x 0.430066
+m_1033 m_1033 x 0.252453
+m_1033 m_1033 x 0.231405
+m_1033 m_1033 x 0.032603
+m_1033 m_1035 x -0.142229
+m_1033 m_1035 x -0.175921
+m_1033 m_1035 x -0.200045
+m_1033 m_1035 x -0.195439
+m_1033 m_1035 x -0.166693
+m_1034 m_1034 x 0.179047
+m_1034 m_1034 x 0.137423
+m_1034 m_1034 x 0.327826
+m_1034 m_1034 x 0.207818
+m_1034 m_1034 x 0.070218
+m_1034 m_1036 x -0.042577
+m_1034 m_1036 x -0.107757
+m_1034 m_1036 x -0.086648
+m_1034 m_1036 x -0.178798
+m_1034 m_1036 x -0.11879
+m_1035 m_1035 x 0.248223
+m_1035 m_1035 x 0.075324
+m_1035 m_1035 x 0.017175
+m_1035 m_1035 x 0.18272
+m_1035 m_1035 x 0.218537
+m_1035 m_1037 x -0.055362
+m_1035 m_1037 x 0.002305
+m_1035 m_1037 x -0.041379
+m_1035 m_1037 x -0.058087
+m_1035 m_1037 x -0.027096
+m_1036 m_1036 x 0.227317
+m_1036 m_1036 x 0.376308
+m_1036 m_1036 x 0.152254
+m_1036 m_1036 x 0.139492
+m_1036 m_1036 x 0.013966
+m_1036 m_1038 x -0.102269
+m_1036 m_1038 x -0.192218
+m_1036 m_1038 x -0.112356
+m_1036 m_1038 x -0.101645
+m_1036 m_1038 x -0.07972
+m_1037 m_1037 x 0.038043
+m_1037 m_1037 x 0.11105
+m_1037 m_1037 x 0.019263
+m_1037 m_1037 x 0.16381
+m_1037 m_1037 x 0.024562
+m_1037 m_1039 x -0.106496
+m_1037 m_1039 x -0.100107
+m_1037 m_1039 x -0.081944
+m_1037 m_1039 x -0.117425
+m_1037 m_1039 x -0.084941
+m_1038 m_1027 x -0.123203
+m_1038 m_1027 x -0.207728
+m_1038 m_1027 x -0.1382
+m_1038 m_1027 x -0.121587
+m_1038 m_1027 x -0.150723
+m_1038 m_1038 x 0.213872
+m_1038 m_1038 x 0.097973
+m_1038 m_1038 x 0.321722
+m_1038 m_1038 x 0.18745
+m_1038 m_1038 x 0.355983
+m_1039 m_1028 x -0.074966
+m_1039 m_1028 x -0.03744
+m_1039 m_1028 x -0.04915
+m_1039 m_1028 x -0.053868
+m_1039 m_1028 x -0.034545
+m_1039 m_1039 x 0.14851
+m_1039 m_1039 x 0.172884
+m_1039 m_1039 x 0.291446
+m_1039 m_1039 x 0.106946
+m_1039 m_1039 x 0.059841
+f_1001 f_1001 x 0.033419
+f_1001 f_1001 x 0.13594
+f_1001 f_1001 x 0.082771
+f_1001 f_1001 x 0.046389
+f_1001 f_1001 x 0.058532
+f_1001 f_1004 x -0.092433
+f_1001 f_1004 x -0.09177
+f_1001 f_1004 x -0.132993
+f_1001 f_1004 x -0.116056
+f_1001 f_1004 x -0.084283
+f_1002 f_1002 x 0.108519
+f_1002 f_1002 x 0.087181
+f_1002 f_1002 x 0.064553
+f_1002 f_1002 x 0.080549
+f_1002 f_1002 x 0.1712
+f_1002 f_1005 x -0.076835
+f_1002 f_1005 x 0.016473
+f_1002 f_1005 x -0.040655
+f_1002 f_1005 x -0.06199
+f_1002 f_1005 x -0.078235
+f_1003 f_1003 x 0.134625
+f_1003 f_1003 x 0.172739
+f_1003 f_1003 x 0.228282
+f_1003 f_1003 x 0.253931
+f_1003 f_1003 x 0.238589
+f_1003 f_1006 x -0.09667
+f_1003 f_1006 x -0.034176
+f_1003 f_1006 x -0.1011
+f_1003 f_1006 x -0.095959
+f_1003 f_1006 x -0.158999
+f_1004 f_1004 x 0.097513
+f_1004 f_1004 x 0.187646
+f_1004 f_1004 x 0.085344
+f_1004 f_1004 x 0.114839
+f_1004 f_1004 x 0.006801
+f_1004 f_1007 x -0.156948
+f_1004 f_1007 x -0.165101
+f_1004 f_1007 x -0.127331
+f_1004 f_1007 x -0.153506
+f_1004 f_1007 x -0.195711
+f_1005 f_1005 x 0.01518
+f_1005 f_1005 x -7.5e-05
+f_1005 f_1005 x 0.01684
+f_1005 f_1005 x -0.005073
+f_1005 f_1005 x 0.032382
+f_1005 f_1008 x -0.026999
+f_1005 f_1008 x -0.029375
+f_1005 f_1008 x -0.028278
+f_1005 f_1008 x -0.048425
+f_1005 f_1008 x -0.135783
+f_1006 f_1006 x 0.182481
+f_1006 f_1006 x 0.202499
+f_1006 f_1006 x 0.239218
+f_1006 f_1006 x 0.406041
+f_1006 f_1006 x 0.296635
+f_1006 f_1009 x -0.068945
+f_1006 f_1009 x -0.057447
+f_1006 f_1009 x -0.083765
+f_1006 f_1009 x -0.037169
+f_1006 f_1009 x -0.06683
+f_1007 f_1007 x 0.15405
+f_1007 f_1007 x 0.305664
+f_1007 f_1007 x 0.188087
+f_1007 f_1007 x 0.170585
+f_1007 f_1007 x 0.109559
+f_1007 f_1010 x 0.068076
+f_1007 f_1010 x 0.081827
+f_1007 f_1010 x 0.014147
+f_1007 f_1010 x 0.014425
+f_1007 f_1010 x 0.045884
+f_1008 f_1008 x 0.139573
+f_1008 f_1008 x 0.094594
+f_1008 f_1008 x 0.058536
+f_1008 f_1008 x 0.021469
+f_1008 f_1008 x -0.026828
+f_1008 f_1011 x -0.046452
+f_1008 f_1011 x -0.114524
+f_1008 f_1011 x -0.128179
+f_1008 f_1011 x -0.112471
+f_1008 f_1011 x -0.083361
+f_1009 f_1009 x 0.163705
+f_1009 f_1009 x 0.07234
+f_1009 f_1009 x 0.126191
+f_1009 f_1009 x 0.135067
+f_1009 f_1009 x 0.118532
+f_1009 f_1012 x -0.064793
+f_1009 f_1012 x -0.095379
+f_1009 f_1012 x -0.040691
+f_1009 f_1012 x -0.070911
+f_1009 f_1012 x -0.140827
+f_1010 f_1010 x 0.132978
+f_1010 f_1010 x 0.041378
+f_1010 f_1010 x 0.04313
+f_1010 f_1010 x 0.092458
+f_1010 f_1010 x 0.096904
+f_1010 f_1013 x -0.097114
+f_1010 f_1013 x -0.052594
+f_1010 f_1013 x -0.02576
+f_1010 f_1013 x -0.002308
+f_1010 f_1013 x -0.036247
+f_1011 f_1001 x -0.109128
+f_1011 f_1001 x -0.1285
+f_1011 f_1001 x -0.133866
+f_1011 f_1001 x -0.101178
+f_1011 f_1001 x -0.175889
+f_1011 f_1011 x 0.069141
+f_1011 f_1011 x 0.177819
+f_1011 f_1011 x 0.252736
+f_1011 f_1011 x 0.124971
+f_1011 f_1011 x -0.037371
+f_1012 f_1002 x -0.09968
+f_1012 f_1002 x -0.089508
+f_1012 f_1002 x -0.169929
+f_1012 f_1002 x -0.132806
+f_1012 f_1002 x -0.089144
+f_1012 f_1012 x 0.073806
+f_1012 f_1012 x 0.2798
+f_1012 f_1012 x 0.246575
+f_1012 f_1012 x 0.349386
+f_1012 f_1012 x 0.258482
+f_1013 f_1003 x -0.112431
+f_1013 f_1003 x -0.129464
+f_1013 f_1003 x -0.109285
+f_1013 f_1003 x -0.145877
+f_1013 f_1003 x -0.168941
+f_1013 f_1013 x 0.013857
+f_1013 f_1013 x 0.039728
+f_1013 f_1013 x 0.031497
+f_1013 f_1013 x 0.049286
+f_1013 f_1013 x 0.096255
+m_1027 m_1027 x 0.060615
+m_1027 m_1027 x 0.082342
+m_1027 m_1027 x 0.043655
+m_1027 m_1027 x -0.099656
+m_1027 m_1027 x 0.050683
+m_1027 m_1030 x -0.134642
+m_1027 m_1030 x -0.261239
+m_1027 m_1030 x -0.194439
+m_1027 m_1030 x -0.220323
+m_1027 m_1030 x -0.256019
+m_1028 m_1028 x 0.068556
+m_1028 m_1028 x 0.091921
+m_1028 m_1028 x 0.031302
+m_1028 m_1028 x 0.109156
+m_1028 m_1028 x 0.051723
+m_1028 m_1031 x -0.049995
+m_1028 m_1031 x -0.028761
+m_1028 m_1031 x -0.059723
+m_1028 m_1031 x -0.031208
+m_1028 m_1031 x -0.048432
+m_1029 m_1029 x 0.017661
+m_1029 m_1029 x 0.028584
+m_1029 m_1029 x 0.079403
+m_1029 m_1029 x 0.155884
+m_1029 m_1029 x 0.160435
+m_1029 m_1032 x -0.109034
+m_1029 m_1032 x -0.082531
+m_1029 m_1032 x -0.036228
+m_1029 m_1032 x -0.068302
+m_1029 m_1032 x -0.118334
+m_1030 m_1030 x 0.064921
+m_1030 m_1030 x 0.175909
+m_1030 m_1030 x 0.124186
+m_1030 m_1030 x 0.167682
+m_1030 m_1030 x 0.098036
+m_1030 m_1033 x -0.045998
+m_1030 m_1033 x -0.050858
+m_1030 m_1033 x -0.0977
+m_1030 m_1033 x -0.024854
+m_1030 m_1033 x 0.005692
+m_1031 m_1031 x 0.108419
+m_1031 m_1031 x 0.249197
+m_1031 m_1031 x 0.170237
+m_1031 m_1031 x 0.183539
+m_1031 m_1031 x 0.174438
+m_1031 m_1034 x -0.016035
+m_1031 m_1034 x -0.145965
+m_1031 m_1034 x -0.103444
+m_1031 m_1034 x -0.141519
+m_1031 m_1034 x -0.158891
+m_1032 m_1032 x 0.155962
+m_1032 m_1032 x 0.188311
+m_1032 m_1032 x 0.084141
+m_1032 m_1032 x 0.100994
+m_1032 m_1032 x 0.146386
+m_1032 m_1035 x -0.074712
+m_1032 m_1035 x -0.064903
+m_1032 m_1035 x -0.101804
+m_1032 m_1035 x -0.032691
+m_1032 m_1035 x -0.114303
+m_1033 m_1033 x 0.240143
+m_1033 m_1033 x 0.232077
+m_1033 m_1033 x 0.113915
+m_1033 m_1033 x 0.191992
+m_1033 m_1033 x 0.218409
+m_1033 m_1036 x -0.050754
+m_1033 m_1036 x -0.136127
+m_1033 m_1036 x -0.064983
+m_1033 m_1036 x -0.105041
+m_1033 m_1036 x -0.08994
+m_1034 m_1034 x 0.098361
+m_1034 m_1034 x 0.124989
+m_1034 m_1034 x 0.096239
+m_1034 m_1034 x 0.102784
+m_1034 m_1034 x 0.069988
+m_1034 m_1037 x -0.154057
+m_1034 m_1037 x -0.097786
+m_1034 m_1037 x -0.098328
+m_1034 m_1037 x -0.162156
+m_1034 m_1037 x -0.136505
+m_1035 m_1035 x 0.378851
+m_1035 m_1035 x 0.487314
+m_1035 m_1035 x 0.208127
+m_1035 m_1035 x 0.076721
+m_1035 m_1035 x 0.345281
+m_1035 m_1038 x -0.191282
+m_1035 m_1038 x -0.051842
+m_1035 m_1038 x -0.141957
+m_1035 m_1038 x -0.146796
+m_1035 m_1038 x -0.161529
+m_1036 m_1036 x -0.028397
+m_1036 m_1036 x 0.10841
+m_1036 m_1036 x 0.227747
+m_1036 m_1036 x 0.1182
+m_1036 m_1036 x 0.213726
+m_1036 m_1039 x -0.159576
+m_1036 m_1039 x -0.094982
+m_1036 m_1039 x -0.223145
+m_1036 m_1039 x -0.169588
+m_1036 m_1039 x -0.131725
+m_1037 m_1027 x -0.086815
+m_1037 m_1027 x -0.142433
+m_1037 m_1027 x -0.094744
+m_1037 m_1027 x -0.139911
+m_1037 m_1027 x -0.110981
+m_1037 m_1037 x 0.188964
+m_1037 m_1037 x 0.191109
+m_1037 m_1037 x 0.177809
+m_1037 m_1037 x 0.342173
+m_1037 m_1037 x 0.320537
+m_1038 m_1028 x -0.022658
+m_1038 m_1028 x -0.121851
+m_1038 m_1028 x -0.094836
+m_1038 m_1028 x -0.092378
+m_1038 m_1028 x -0.128918
+m_1038 m_1038 x 0.088761
+m_1038 m_1038 x 0.23967
+m_1038 m_1038 x 0.2144
+m_1038 m_1038 x 0.225245
+m_1038 m_1038 x 0.166043
+m_1039 m_1029 x -0.094188
+m_1039 m_1029 x -0.137532
+m_1039 m_1029 x -0.106247
+m_1039 m_1029 x -0.051079
+m_1039 m_1029 x -0.09995
+m_1039 m_1039 x 0.047286
+m_1039 m_1039 x 0.066872
+m_1039 m_1039 x 0.084683
+m_1039 m_1039 x 0.14965
+m_1039 m_1039 x 0.061803
+f_1001 f_1001 x 0.092146
+f_1001 f_1001 x 0.069535
+f_1001 f_1001 x 0.130482
+f_1001 f_1001 x 0.121077
+f_1001 f_1001 x 0.046827
+f_1001 f_1005 x -0.07389
+f_1001 f_1005 x -0.005571
+f_1001 f_1005 x -0.038638
+f_1001 f_1005 x -0.069725
+f_1001 f_1005 x -0.106528
+f_1002 f_1002 x 0.152725
+f_1002 f_1002 x 0.068492
+f_1002 f_1002 x 0.021185
+f_1002 f_1002 x 0.100351
+f_1002 f_1002 x 0.110254
+f_1002 f_1006 x -0.045543
+f_1002 f_1006 x -0.103691
+f_1002 f_1006 x -0.109144
+f_1002 f_1006 x -0.136591
+f_1002 f_1006 x -0.066464
+f_1003 f_1003 x 0.250429
+f_1003 f_1003 x 0.216766
+f_1003 f_1003 x 0.369219
+f_1003 f_1003 x 0.088713
+f_1003 f_1003 x 0.300226
+f_1003 f_1007 x -0.076819
+f_1003 f_1007 x -0.149137
+f_1003 f_1007 x -0.135019
+f_1003 f_1007 x -0.163912
+f_1003 f_1007 x -0.095181
+f_1004 f_1004 x 0.121271
+f_1004 f_1004 x 0.040588
+f_1004 f_1004 x -0.055486
+f_1004 f_1004 x 0.037581
+f_1004 f_1004 x -0.051495
+f_1004 f_1008 x -0.058328
+f_1004 f_1008 x -0.080856
+f_1004 f_1008 x -0.098234
+f_1004 f_1008 x -0.074142
+f_1004 f_1008 x -0.105869
+f_1005 f_1005 x 0.055989
+f_1005 f_1005 x 0.002048
+f_1005 f_1005 x 0.065929
+f_1005 f_1005 x 0.075466
+f_1005 f_1005 x 0.063656
+f_1005 f_1009 x -0.015425
+f_1005 f_1009 x -0.030571
+f_1005 f_1009 x -0.051191
+f_1005 f_1009 x -0.011377
+f_1005 f_1009 x -0.029323
+f_1006 f_1006 x 0.114515
+f_1006 f_1006 x 0.193478
+f_1006 f_1006 x 0.263637
+f_1006 f_1006 x 0.124408
+f_1006 f_1006 x 0.253012
+f_1006 f_1010 x -0.045272
+f_1006 f_1010 x -0.008281
+f_1006 f_1010 x -0.098975
+f_1006 f_1010 x -0.052164
+f_1006 f_1010 x -0.038489
+f_1007 f_1007 x 0.416937
+f_1007 f_1007 x 0.152148
+f_1007 f_1007 x 0.260329
+f_1007 f_1007 x 0.302488
+f_1007 f_1007 x 0.197565
+f_1007 f_1011 x -0.025394
+f_1007 f_1011 x -0.03248
+f_1007 f_1011 x -0.018316
+f_1007 f_1011 x 0.002981
+f_1007 f_1011 x -0.084619
+f_1008 f_1008 x 0.21788
+f_1008 f_1008 x 0.135293
+f_1008 f_1008 x 0.075077
+f_1008 f_1008 x 0.07734
+f_1008 f_1008 x 0.005587
+f_1008 f_1012 x -0.155008
+f_1008 f_1012 x -0.146633
+f_1008 f_1012 x -0.091813
+f_1008 f_1012 x -0.134748
+f_1008 f_1012 x -0.112009
+f_1009 f_1009 x 0.07703
+f_1009 f_1009 x 0.20282
+f_1009 f_1009 x 0.047498
+f_1009 f_1009 x 0.14907
+f_1009 f_1009 x 0.065152
+f_1009 f_1013 x -0.040804
+f_1009 f_1013 x -0.108543
+f_1009 f_1013 x -0.069024
+f_1009 f_1013 x -0.093558
+f_1009 f_1013 x -0.104821
+f_1010 f_1001 x 0.030117
+f_1010 f_1001 x -0.001707
+f_1010 f_1001 x 0.023293
+f_1010 f_1001 x 0.044433
+f_1010 f_1001 x 0.036691
+f_1010 f_1010 x 0.090399
+f_1010 f_1010 x 0.287217
+f_1010 f_1010 x 0.17436
+f_1010 f_1010 x 0.072507
+f_1010 f_1010 x 0.169799
+f_1011 f_1002 x -0.098069
+f_1011 f_1002 x -0.059601
+f_1011 f_1002 x -0.116737
+f_1011 f_1002 x -0.091612
+f_1011 f_1002 x -0.124484
+f_1011 f_1011 x 0.061337
+f_1011 f_1011 x 0.078452
+f_1011 f_1011 x 0.053488
+f_1011 f_1011 x 0.274413
+f_1011 f_1011 x 0.025676
+f_1012 f_1003 x -0.172277
+f_1012 f_1003 x -0.139654
+f_1012 f_1003 x -0.110438
+f_1012 f_1003 x -0.147711
+f_1012 f_1003 x -0.144899
+f_1012 f_1012 x -0.008046
+f_1012 f_1012 x 0.01118
+f_1012 f_1012 x 0.069386
+f_1012 f_1012 x 0.018678
+f_1012 f_1012 x 0.090871
+f_1013 f_1004 x -0.139999
+f_1013 f_1004 x -0.146055
+f_1013 f_1004 x -0.080982
+f_1013 f_1004 x -0.11122
+f_1013 f_1004 x -0.048738
+f_1013 f_1013 x 0.08644
+f_1013 f_1013 x 0.031428
+f_1013 f_1013 x 0.110492
+f_1013 f_1013 x 0.080487
+f_1013 f_1013 x 0.129129
+m_1027 m_1027 x -0.030796
+m_1027 m_1027 x 0.166674
+m_1027 m_1027 x -0.054503
+m_1027 m_1027 x 0.216297
+m_1027 m_1027 x 0.036048
+m_1027 m_1031 x -0.068606
+m_1027 m_1031 x -0.087531
+m_1027 m_1031 x -0.079769
+m_1027 m_1031 x -0.105363
+m_1027 m_1031 x -0.017589
+m_1028 m_1028 x 0.057595
+m_1028 m_1028 x 0.12494
+m_1028 m_1028 x 0.285578
+m_1028 m_1028 x 0.068244
+m_1028 m_1028 x 0.027044
+m_1028 m_1032 x -0.08819
+m_1028 m_1032 x -0.014659
+m_1028 m_1032 x -0.060915
+m_1028 m_1032 x -0.058342
+m_1028 m_1032 x 0.002364
+m_1029 m_1029 x 0.007404
+m_1029 m_1029 x -0.04252
+m_1029 m_1029 x -0.032869
+m_1029 m_1029 x 0.029775
+m_1029 m_1029 x -0.051259
+m_1029 m_1033 x -0.158181
+m_1029 m_1033 x -0.121331
+m_1029 m_1033 x -0.144152
+m_1029 m_1033 x -0.156712
+m_1029 m_1033 x -0.177725
+m_1030 m_1030 x 0.056945
+m_1030 m_1030 x 0.317025
+m_1030 m_1030 x 0.325579
+m_1030 m_1030 x 0.284201
+m_1030 m_1030 x 0.230508
+m_1030 m_1034 x -0.022487
+m_1030 m_1034 x -0.048232
+m_1030 m_1034 x -0.145175
+m_1030 m_1034 x -0.123378
+m_1030 m_1034 x -0.073831
+m_1031 m_1031 x 0.193519
+m_1031 m_1031 x 0.175608
+m_1031 m_1031 x 0.107447
+m_1031 m_1031 x 0.199848
+m_1031 m_1031 x 0.168314
+m_1031 m_1035 x -0.020661
+m_1031 m_1035 x -0.065903
+m_1031 m_1035 x -0.125195
+m_1031 m_1035 x -0.110455
+m_1031 m_1035 x -0.094515
+m_1032 m_1032 x 0.195781
+m_1032 m_1032 x 0.096999
+m_1032 m_1032 x -0.008268
+m_1032 m_1032 x 0.069079
+m_1032 m_1032 x 0.044985
+m_1032 m_1036 x -0.076835
+m_1032 m_1036 x -0.088222
+m_1032 m_1036 x -0.120676
+m_1032 m_1036 x -0.142852
+m_1032 m_1036 x -0.086772
+m_1033 m_1033 x -0.029097
+m_1033 m_1033 x 0.061971
+m_1033 m_1033 x 0.019417
+m_1033 m_1033 x 0.037331
+m_1033 m_1033 x 0.127991
+m_1033 m_1037 x -0.175094
+m_1033 m_1037 x -0.150287
+m_1033 m_1037 x -0.220412
+m_1033 m_1037 x -0.172678
+m_1033 m_1037 x -0.169294
+m_1034 m_1034 x 0.149889
+m_1034 m_1034 x 0.066521
+m_1034 m_1034 x 0.101737
+m_1034 m_1034 x 0.100917
+m_1034 m_1034 x 0.085561
+m_1034 m_1038 x -0.124248
+m_1034 m_1038 x -0.038474
+m_1034 m_1038 x -0.068404
+m_1034 m_1038 x -0.058341
+m_1034 m_1038 x -0.115717
+m_1035 m_1035 x 0.213568
+m_1035 m_1035 x 0.029325
+m_1035 m_1035 x 0.194311
+m_1035 m_1035 x 0.249343
+m_1035 m_1035 x 0.093952
+m_1035 m_1039 x -0.090435
+m_1035 m_1039 x -0.153427
+m_1035 m_1039 x -0.083921
+m_1035 m_1039 x -0.070264
+m_1035 m_1039 x -0.057297
+m_1036 m_1027 x -0.115691
+m_1036 m_1027 x -0.059323
+m_1036 m_1027 x -0.186053
+m_1036 m_1027 x -0.175012
+m_1036 m_1027 x -0.166257
+m_1036 m_1036 x 0.063842
+m_1036 m_1036 x 0.154448
+m_1036 m_1036 x 0.389991
+m_1036 m_1036 x 0.316025
+m_1036 m_1036 x 0.30907
+m_1037 m_1028 x -0.075955
+m_1037 m_1028 x -0.080148
+m_1037 m_1028 x -0.021735
+m_1037 m_1028 x -0.056239
+m_1037 m_1028 x -0.026486
+m_1037 m_1037 x 0.103612
+m_1037 m_1037 x 0.259835
+m_1037 m_1037 x 0.243031
+m_1037 m_1037 x 0.118142
+m_1037 m_1037 x 0.164509
+m_1038 m_1029 x -0.041864
+m_1038 m_1029 x -0.003681
+m_1038 m_1029 x -0.0213
+m_1038 m_1029 x -0.003561
+m_1038 m_1029 x -0.048595
+m_1038 m_1038 x 0.182035
+m_1038 m_1038 x 0.121601
+m_1038 m_1038 x 0.231335
+m_1038 m_1038 x 0.2318
+m_1038 m_1038 x 0.378738
+m_1039 m_1030 x -0.186483
+m_1039 m_1030 x -0.153817
+m_1039 m_1030 x -0.164871
+m_1039 m_1030 x -0.099591
+m_1039 m_1030 x -0.204401
+m_1039 m_1039 x 0.095322
+m_1039 m_1039 x 0.072113
+m_1039 m_1039 x 0.139665
+m_1039 m_1039 x 0.132828
+m_1039 m_1039 x 0.169885
+f_1001 f_1002 x -0.079848
+f_1001 f_1002 x -0.138407
+f_1001 f_1002 x -0.05771
+f_1001 f_1002 x -0.101174
+f_1001 f_1002 x -0.084897
+f_1002 f_1003 x -0.073879
+f_1002 f_1003 x 0.04615
+f_1002 f_1003 x 0.075474
+f_1002 f_1003 x -0.012754
+f_1002 f_1003 x -0.006101
+f_1003 f_1004 x -0.033191
+f_1003 f_1004 x -0.070245
+f_1003 f_1004 x -0.045936
+f_1003 f_1004 x -0.056841
+f_1003 f_1004 x -0.039423
+f_1004 f_1005 x -0.174601
+f_1004 f_1005 x -0.126434
+f_1004 f_1005 x -0.200955
+f_1004 f_1005 x -0.065868
+f_1004 f_1005 x -0.135015
+f_1005 f_1006 x -0.005004
+f_1005 f_1006 x -0.052989
+f_1005 f_1006 x -0.137597
+f_1005 f_1006 x -0.10143
+f_1005 f_1006 x -0.150544
+f_1006 f_1007 x 0.00194
+f_1006 f_1007 x -0.020898
+f_1006 f_1007 x -0.008821
+f_1006 f_1007 x -0.004604
+f_1006 f_1007 x -0.0516
+f_1007 f_1008 x -0.072577
+f_1007 f_1008 x -0.108647
+f_1007 f_1008 x -0.090148
+f_1007 f_1008 x -0.156442
+f_1007 f_1008 x -0.128324
+f_1008 f_1009 x -0.086092
+f_1008 f_1009 x 0.011503
+f_1008 f_1009 x -0.070738
+f_1008 f_1009 x -0.048589
+f_1008 f_1009 x -0.032849
+f_1009 f_1010 x -0.077762
+f_1009 f_1010 x -0.102182
+f_1009 f_1010 x -0.077388
+f_1009 f_1010 x -0.048259
+f_1009 f_1010 x -0.106654
+f_1010 f_1011 x -0.107925
+f_1010 f_1011 x -0.074153
+f_1010 f_1011 x -0.046166
+f_1010 f_1011 x -0.105082
+f_1010 f_1011 x -0.109697
+f_1011 f_1012 x -0.114147
+f_1011 f_1012 x -0.193337
+f_1011 f_1012 x -0.081829
+f_1011 f_1012 x -0.109909
+f_1011 f_1012 x -0.180126
+f_1012 f_1013 x -0.063825
+f_1012 f_1013 x -0.094552
+f_1012 f_1013 x -0.119662
+f_1012 f_1013 x -0.07877
+f_1012 f_1013 x -0.081715
+f_1013 f_1001 x -0.136329
+f_1013 f_1001 x -0.124971
+f_1013 f_1001 x -0.075831
+f_1013 f_1001 x -0.110905
+f_1013 f_1001 x -0.074551
+m_1027 m_1028 x -0.190285
+m_1027 m_1028 x -0.116158
+m_1027 m_1028 x -0.159631
+m_1027 m_1028 x -0.168323
+m_1027 m_1028 x -0.115116
+m_1028 m_1029 x -0.047101
+m_1028 m_1029 x -0.108092
+m_1028 m_1029 x -0.063646
+m_1028 m_1029 x -0.013492
+m_1028 m_1029 x -0.050001
+m_1029 m_1030 x -0.074749
+m_1029 m_1030 x -0.0461
+m_1029 m_1030 x -0.080191
+m_1029 m_1030 x -0.043393
+m_1029 m_1030 x -0.066529
+m_1030 m_1031 x -0.041418
+m_1030 m_1031 x -0.046616
+m_1030 m_1031 x -0.015607
+m_1030 m_1031 x -0.034914
+m_1030 m_1031 x -0.088874
+m_1031 m_1032 x -0.070922
+m_1031 m_1032 x -0.065517
+m_1031 m_1032 x -0.095383
+m_1031 m_1032 x -0.220017
+m_1031 m_1032 x -0.123048
+m_1032 m_1033 x -0.020985
+m_1032 m_1033 x -0.059387
+m_1032 m_1033 x -0.032041
+m_1032 m_1033 x -0.034125
+m_1032 m_1033 x -0.051097
+m_1033 m_1034 x -0.068623
+m_1033 m_1034 x -0.083128
+m_1033 m_1034 x -0.077355
+m_1033 m_1034 x -0.125626
+m_1033 m_1034 x -0.083417
+m_1034 m_1035 x -0.143532
+m_1034 m_1035 x -0.200868
+m_1034 m_1035 x -0.16596
+m_1034 m_1035 x -0.151486
+m_1034 m_1035 x -0.114951
+m_1035 m_1036 x -0.176893
+m_1035 m_1036 x -0.207564
+m_1035 m_1036 x -0.117525
+m_1035 m_1036 x -0.168342
+m_1035 m_1036 x -0.21075
+m_1036 m_1037 x -0.075311
+m_1036 m_1037 x -0.084175
+m_1036 m_1037 x -0.090178
+m_1036 m_1037 x -0.099832
+m_1036 m_1037 x -0.135049
+m_1037 m_1038 x -0.176783
+m_1037 m_1038 x -0.168007
+m_1037 m_1038 x -0.085472
+m_1037 m_1038 x -0.143515
+m_1037 m_1038 x -0.114927
+m_1038 m_1039 x -0.162465
+m_1038 m_1039 x -0.165675
+m_1038 m_1039 x -0.155784
+m_1038 m_1039 x -0.167747
+m_1038 m_1039 x -0.162331
+m_1039 m_1027 x -0.095913
+m_1039 m_1027 x -0.132247
+m_1039 m_1027 x -0.104928
+m_1039 m_1027 x -0.104656
+m_1039 m_1027 x -0.185046
diff --git a/bob/bio/base/test/data/dev-5col.tar.gz b/bob/bio/base/test/data/dev-5col.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..65a1cefd846ffdf691101b842ee66c1d383df1c8
Binary files /dev/null and b/bob/bio/base/test/data/dev-5col.tar.gz differ
diff --git a/bob/bio/base/test/data/dev-5col.txt b/bob/bio/base/test/data/dev-5col.txt
new file mode 100644
index 0000000000000000000000000000000000000000..02cd05efea52fcfac85b9a3f856c0475f2412354
--- /dev/null
+++ b/bob/bio/base/test/data/dev-5col.txt
@@ -0,0 +1,910 @@
+f_1001 x f_1001 x 0.006299
+f_1001 x f_1001 x 0.111554
+f_1001 x f_1001 x -0.092548
+f_1001 x f_1001 x -0.030429
+f_1001 x f_1001 x -0.004657
+f_1001 x f_1003 x -0.070376
+f_1001 x f_1003 x -0.076431
+f_1001 x f_1003 x -0.09103
+f_1001 x f_1003 x -0.119019
+f_1001 x f_1003 x -0.119581
+f_1002 x f_1002 x -0.076412
+f_1002 x f_1002 x -0.007193
+f_1002 x f_1002 x -0.068236
+f_1002 x f_1002 x 0.001462
+f_1002 x f_1002 x -0.089528
+f_1002 x f_1004 x -0.177674
+f_1002 x f_1004 x -0.116451
+f_1002 x f_1004 x -0.105341
+f_1002 x f_1004 x -0.15466
+f_1002 x f_1004 x -0.18616
+f_1003 x f_1003 x 0.259138
+f_1003 x f_1003 x 0.332629
+f_1003 x f_1003 x 0.311423
+f_1003 x f_1003 x 0.162215
+f_1003 x f_1003 x 0.048613
+f_1003 x f_1005 x -0.074399
+f_1003 x f_1005 x -0.04628
+f_1003 x f_1005 x -0.014418
+f_1003 x f_1005 x 0.00478
+f_1003 x f_1005 x -0.016143
+f_1004 x f_1004 x 0.133522
+f_1004 x f_1004 x 0.233416
+f_1004 x f_1004 x 0.157029
+f_1004 x f_1004 x 0.163154
+f_1004 x f_1004 x 0.188569
+f_1004 x f_1006 x -0.111788
+f_1004 x f_1006 x -0.146505
+f_1004 x f_1006 x -0.085332
+f_1004 x f_1006 x -0.143158
+f_1004 x f_1006 x -0.126225
+f_1005 x f_1005 x 0.102271
+f_1005 x f_1005 x 0.045251
+f_1005 x f_1005 x 0.044341
+f_1005 x f_1005 x 0.03692
+f_1005 x f_1005 x -0.013536
+f_1005 x f_1007 x 0.019496
+f_1005 x f_1007 x -0.00295
+f_1005 x f_1007 x -0.027841
+f_1005 x f_1007 x -0.038533
+f_1005 x f_1007 x -0.130486
+f_1006 x f_1006 x 0.155776
+f_1006 x f_1006 x 0.030909
+f_1006 x f_1006 x 0.245848
+f_1006 x f_1006 x 0.450645
+f_1006 x f_1006 x 0.19262
+f_1006 x f_1008 x -0.09691
+f_1006 x f_1008 x -0.109712
+f_1006 x f_1008 x -0.070605
+f_1006 x f_1008 x -0.066152
+f_1006 x f_1008 x -0.037858
+f_1007 x f_1007 x 0.293177
+f_1007 x f_1007 x 0.271007
+f_1007 x f_1007 x 0.318237
+f_1007 x f_1007 x 0.186197
+f_1007 x f_1007 x 0.352784
+f_1007 x f_1009 x -0.050168
+f_1007 x f_1009 x 0.024759
+f_1007 x f_1009 x -0.066628
+f_1007 x f_1009 x -0.04056
+f_1007 x f_1009 x 0.010592
+f_1008 x f_1008 x 0.09707
+f_1008 x f_1008 x -0.022928
+f_1008 x f_1008 x 0.028861
+f_1008 x f_1008 x 0.04206
+f_1008 x f_1008 x 0.066096
+f_1008 x f_1010 x -0.063427
+f_1008 x f_1010 x 0.03159
+f_1008 x f_1010 x -0.049853
+f_1008 x f_1010 x -0.035822
+f_1008 x f_1010 x -0.075959
+f_1009 x f_1009 x 0.077973
+f_1009 x f_1009 x 0.138974
+f_1009 x f_1009 x 0.078081
+f_1009 x f_1009 x 0.098706
+f_1009 x f_1009 x -0.061095
+f_1009 x f_1011 x -0.145006
+f_1009 x f_1011 x -0.137257
+f_1009 x f_1011 x -0.142997
+f_1009 x f_1011 x -0.143305
+f_1009 x f_1011 x -0.131891
+f_1010 x f_1010 x 0.07374
+f_1010 x f_1010 x 0.12733
+f_1010 x f_1010 x 0.071941
+f_1010 x f_1010 x 0.093608
+f_1010 x f_1010 x 0.132198
+f_1010 x f_1012 x 0.102712
+f_1010 x f_1012 x -0.044807
+f_1010 x f_1012 x -0.00116
+f_1010 x f_1012 x 0.030686
+f_1010 x f_1012 x -0.036943
+f_1011 x f_1011 x 0.232048
+f_1011 x f_1011 x 0.22864
+f_1011 x f_1011 x 0.132145
+f_1011 x f_1011 x 0.165999
+f_1011 x f_1011 x 0.120414
+f_1011 x f_1013 x -0.12074
+f_1011 x f_1013 x -0.117955
+f_1011 x f_1013 x -0.076039
+f_1011 x f_1013 x -0.07393
+f_1011 x f_1013 x -0.103342
+f_1012 x f_1001 x -0.020321
+f_1012 x f_1001 x -0.05211
+f_1012 x f_1001 x -0.056951
+f_1012 x f_1001 x 0.013234
+f_1012 x f_1001 x -0.014755
+f_1012 x f_1012 x -0.020073
+f_1012 x f_1012 x 0.051658
+f_1012 x f_1012 x 0.032461
+f_1012 x f_1012 x 0.067917
+f_1012 x f_1012 x 0.052605
+f_1013 x f_1002 x -0.105477
+f_1013 x f_1002 x -0.110275
+f_1013 x f_1002 x -0.118202
+f_1013 x f_1002 x -0.041612
+f_1013 x f_1002 x -0.133065
+f_1013 x f_1013 x 0.003664
+f_1013 x f_1013 x 0.025006
+f_1013 x f_1013 x 0.008643
+f_1013 x f_1013 x 0.027281
+f_1013 x f_1013 x 0.028362
+m_1027 x m_1027 x 0.286687
+m_1027 x m_1027 x 0.183224
+m_1027 x m_1027 x 0.321388
+m_1027 x m_1027 x 0.42079
+m_1027 x m_1027 x 0.53976
+m_1027 x m_1029 x -0.08594
+m_1027 x m_1029 x -0.121272
+m_1027 x m_1029 x -0.113022
+m_1027 x m_1029 x -0.160544
+m_1027 x m_1029 x -0.090424
+m_1028 x m_1028 x 0.017651
+m_1028 x m_1028 x 0.150004
+m_1028 x m_1028 x 0.159424
+m_1028 x m_1028 x 0.052019
+m_1028 x m_1028 x 0.127836
+m_1028 x m_1030 x -0.141315
+m_1028 x m_1030 x -0.029844
+m_1028 x m_1030 x -0.022167
+m_1028 x m_1030 x -0.071379
+m_1028 x m_1030 x -0.099675
+m_1029 x m_1029 x -0.003534
+m_1029 x m_1029 x 0.024651
+m_1029 x m_1029 x 0.060505
+m_1029 x m_1029 x 0.12037
+m_1029 x m_1029 x -0.03431
+m_1029 x m_1031 x -0.03181
+m_1029 x m_1031 x 0.003197
+m_1029 x m_1031 x -0.034498
+m_1029 x m_1031 x -0.050882
+m_1029 x m_1031 x -0.00274
+m_1030 x m_1030 x 0.197724
+m_1030 x m_1030 x 0.207926
+m_1030 x m_1030 x 0.144697
+m_1030 x m_1030 x 0.298164
+m_1030 x m_1030 x 0.180303
+m_1030 x m_1032 x -0.100375
+m_1030 x m_1032 x -0.089028
+m_1030 x m_1032 x -0.096304
+m_1030 x m_1032 x -0.125789
+m_1030 x m_1032 x -0.119192
+m_1031 x m_1031 x 0.178925
+m_1031 x m_1031 x 0.135697
+m_1031 x m_1031 x 0.190606
+m_1031 x m_1031 x 0.268289
+m_1031 x m_1031 x 0.114208
+m_1031 x m_1033 x -0.065958
+m_1031 x m_1033 x -0.042427
+m_1031 x m_1033 x -0.115761
+m_1031 x m_1033 x -0.077916
+m_1031 x m_1033 x -0.179634
+m_1032 x m_1032 x 0.082708
+m_1032 x m_1032 x 0.078839
+m_1032 x m_1032 x 0.031509
+m_1032 x m_1032 x 0.08322
+m_1032 x m_1032 x 0.013146
+m_1032 x m_1034 x -0.094497
+m_1032 x m_1034 x -0.097829
+m_1032 x m_1034 x -0.041958
+m_1032 x m_1034 x -0.112755
+m_1032 x m_1034 x -0.087314
+m_1033 x m_1033 x 0.232628
+m_1033 x m_1033 x 0.430066
+m_1033 x m_1033 x 0.252453
+m_1033 x m_1033 x 0.231405
+m_1033 x m_1033 x 0.032603
+m_1033 x m_1035 x -0.142229
+m_1033 x m_1035 x -0.175921
+m_1033 x m_1035 x -0.200045
+m_1033 x m_1035 x -0.195439
+m_1033 x m_1035 x -0.166693
+m_1034 x m_1034 x 0.179047
+m_1034 x m_1034 x 0.137423
+m_1034 x m_1034 x 0.327826
+m_1034 x m_1034 x 0.207818
+m_1034 x m_1034 x 0.070218
+m_1034 x m_1036 x -0.042577
+m_1034 x m_1036 x -0.107757
+m_1034 x m_1036 x -0.086648
+m_1034 x m_1036 x -0.178798
+m_1034 x m_1036 x -0.11879
+m_1035 x m_1035 x 0.248223
+m_1035 x m_1035 x 0.075324
+m_1035 x m_1035 x 0.017175
+m_1035 x m_1035 x 0.18272
+m_1035 x m_1035 x 0.218537
+m_1035 x m_1037 x -0.055362
+m_1035 x m_1037 x 0.002305
+m_1035 x m_1037 x -0.041379
+m_1035 x m_1037 x -0.058087
+m_1035 x m_1037 x -0.027096
+m_1036 x m_1036 x 0.227317
+m_1036 x m_1036 x 0.376308
+m_1036 x m_1036 x 0.152254
+m_1036 x m_1036 x 0.139492
+m_1036 x m_1036 x 0.013966
+m_1036 x m_1038 x -0.102269
+m_1036 x m_1038 x -0.192218
+m_1036 x m_1038 x -0.112356
+m_1036 x m_1038 x -0.101645
+m_1036 x m_1038 x -0.07972
+m_1037 x m_1037 x 0.038043
+m_1037 x m_1037 x 0.11105
+m_1037 x m_1037 x 0.019263
+m_1037 x m_1037 x 0.16381
+m_1037 x m_1037 x 0.024562
+m_1037 x m_1039 x -0.106496
+m_1037 x m_1039 x -0.100107
+m_1037 x m_1039 x -0.081944
+m_1037 x m_1039 x -0.117425
+m_1037 x m_1039 x -0.084941
+m_1038 x m_1027 x -0.123203
+m_1038 x m_1027 x -0.207728
+m_1038 x m_1027 x -0.1382
+m_1038 x m_1027 x -0.121587
+m_1038 x m_1027 x -0.150723
+m_1038 x m_1038 x 0.213872
+m_1038 x m_1038 x 0.097973
+m_1038 x m_1038 x 0.321722
+m_1038 x m_1038 x 0.18745
+m_1038 x m_1038 x 0.355983
+m_1039 x m_1028 x -0.074966
+m_1039 x m_1028 x -0.03744
+m_1039 x m_1028 x -0.04915
+m_1039 x m_1028 x -0.053868
+m_1039 x m_1028 x -0.034545
+m_1039 x m_1039 x 0.14851
+m_1039 x m_1039 x 0.172884
+m_1039 x m_1039 x 0.291446
+m_1039 x m_1039 x 0.106946
+m_1039 x m_1039 x 0.059841
+f_1001 x f_1001 x 0.033419
+f_1001 x f_1001 x 0.13594
+f_1001 x f_1001 x 0.082771
+f_1001 x f_1001 x 0.046389
+f_1001 x f_1001 x 0.058532
+f_1001 x f_1004 x -0.092433
+f_1001 x f_1004 x -0.09177
+f_1001 x f_1004 x -0.132993
+f_1001 x f_1004 x -0.116056
+f_1001 x f_1004 x -0.084283
+f_1002 x f_1002 x 0.108519
+f_1002 x f_1002 x 0.087181
+f_1002 x f_1002 x 0.064553
+f_1002 x f_1002 x 0.080549
+f_1002 x f_1002 x 0.1712
+f_1002 x f_1005 x -0.076835
+f_1002 x f_1005 x 0.016473
+f_1002 x f_1005 x -0.040655
+f_1002 x f_1005 x -0.06199
+f_1002 x f_1005 x -0.078235
+f_1003 x f_1003 x 0.134625
+f_1003 x f_1003 x 0.172739
+f_1003 x f_1003 x 0.228282
+f_1003 x f_1003 x 0.253931
+f_1003 x f_1003 x 0.238589
+f_1003 x f_1006 x -0.09667
+f_1003 x f_1006 x -0.034176
+f_1003 x f_1006 x -0.1011
+f_1003 x f_1006 x -0.095959
+f_1003 x f_1006 x -0.158999
+f_1004 x f_1004 x 0.097513
+f_1004 x f_1004 x 0.187646
+f_1004 x f_1004 x 0.085344
+f_1004 x f_1004 x 0.114839
+f_1004 x f_1004 x 0.006801
+f_1004 x f_1007 x -0.156948
+f_1004 x f_1007 x -0.165101
+f_1004 x f_1007 x -0.127331
+f_1004 x f_1007 x -0.153506
+f_1004 x f_1007 x -0.195711
+f_1005 x f_1005 x 0.01518
+f_1005 x f_1005 x -7.5e-05
+f_1005 x f_1005 x 0.01684
+f_1005 x f_1005 x -0.005073
+f_1005 x f_1005 x 0.032382
+f_1005 x f_1008 x -0.026999
+f_1005 x f_1008 x -0.029375
+f_1005 x f_1008 x -0.028278
+f_1005 x f_1008 x -0.048425
+f_1005 x f_1008 x -0.135783
+f_1006 x f_1006 x 0.182481
+f_1006 x f_1006 x 0.202499
+f_1006 x f_1006 x 0.239218
+f_1006 x f_1006 x 0.406041
+f_1006 x f_1006 x 0.296635
+f_1006 x f_1009 x -0.068945
+f_1006 x f_1009 x -0.057447
+f_1006 x f_1009 x -0.083765
+f_1006 x f_1009 x -0.037169
+f_1006 x f_1009 x -0.06683
+f_1007 x f_1007 x 0.15405
+f_1007 x f_1007 x 0.305664
+f_1007 x f_1007 x 0.188087
+f_1007 x f_1007 x 0.170585
+f_1007 x f_1007 x 0.109559
+f_1007 x f_1010 x 0.068076
+f_1007 x f_1010 x 0.081827
+f_1007 x f_1010 x 0.014147
+f_1007 x f_1010 x 0.014425
+f_1007 x f_1010 x 0.045884
+f_1008 x f_1008 x 0.139573
+f_1008 x f_1008 x 0.094594
+f_1008 x f_1008 x 0.058536
+f_1008 x f_1008 x 0.021469
+f_1008 x f_1008 x -0.026828
+f_1008 x f_1011 x -0.046452
+f_1008 x f_1011 x -0.114524
+f_1008 x f_1011 x -0.128179
+f_1008 x f_1011 x -0.112471
+f_1008 x f_1011 x -0.083361
+f_1009 x f_1009 x 0.163705
+f_1009 x f_1009 x 0.07234
+f_1009 x f_1009 x 0.126191
+f_1009 x f_1009 x 0.135067
+f_1009 x f_1009 x 0.118532
+f_1009 x f_1012 x -0.064793
+f_1009 x f_1012 x -0.095379
+f_1009 x f_1012 x -0.040691
+f_1009 x f_1012 x -0.070911
+f_1009 x f_1012 x -0.140827
+f_1010 x f_1010 x 0.132978
+f_1010 x f_1010 x 0.041378
+f_1010 x f_1010 x 0.04313
+f_1010 x f_1010 x 0.092458
+f_1010 x f_1010 x 0.096904
+f_1010 x f_1013 x -0.097114
+f_1010 x f_1013 x -0.052594
+f_1010 x f_1013 x -0.02576
+f_1010 x f_1013 x -0.002308
+f_1010 x f_1013 x -0.036247
+f_1011 x f_1001 x -0.109128
+f_1011 x f_1001 x -0.1285
+f_1011 x f_1001 x -0.133866
+f_1011 x f_1001 x -0.101178
+f_1011 x f_1001 x -0.175889
+f_1011 x f_1011 x 0.069141
+f_1011 x f_1011 x 0.177819
+f_1011 x f_1011 x 0.252736
+f_1011 x f_1011 x 0.124971
+f_1011 x f_1011 x -0.037371
+f_1012 x f_1002 x -0.09968
+f_1012 x f_1002 x -0.089508
+f_1012 x f_1002 x -0.169929
+f_1012 x f_1002 x -0.132806
+f_1012 x f_1002 x -0.089144
+f_1012 x f_1012 x 0.073806
+f_1012 x f_1012 x 0.2798
+f_1012 x f_1012 x 0.246575
+f_1012 x f_1012 x 0.349386
+f_1012 x f_1012 x 0.258482
+f_1013 x f_1003 x -0.112431
+f_1013 x f_1003 x -0.129464
+f_1013 x f_1003 x -0.109285
+f_1013 x f_1003 x -0.145877
+f_1013 x f_1003 x -0.168941
+f_1013 x f_1013 x 0.013857
+f_1013 x f_1013 x 0.039728
+f_1013 x f_1013 x 0.031497
+f_1013 x f_1013 x 0.049286
+f_1013 x f_1013 x 0.096255
+m_1027 x m_1027 x 0.060615
+m_1027 x m_1027 x 0.082342
+m_1027 x m_1027 x 0.043655
+m_1027 x m_1027 x -0.099656
+m_1027 x m_1027 x 0.050683
+m_1027 x m_1030 x -0.134642
+m_1027 x m_1030 x -0.261239
+m_1027 x m_1030 x -0.194439
+m_1027 x m_1030 x -0.220323
+m_1027 x m_1030 x -0.256019
+m_1028 x m_1028 x 0.068556
+m_1028 x m_1028 x 0.091921
+m_1028 x m_1028 x 0.031302
+m_1028 x m_1028 x 0.109156
+m_1028 x m_1028 x 0.051723
+m_1028 x m_1031 x -0.049995
+m_1028 x m_1031 x -0.028761
+m_1028 x m_1031 x -0.059723
+m_1028 x m_1031 x -0.031208
+m_1028 x m_1031 x -0.048432
+m_1029 x m_1029 x 0.017661
+m_1029 x m_1029 x 0.028584
+m_1029 x m_1029 x 0.079403
+m_1029 x m_1029 x 0.155884
+m_1029 x m_1029 x 0.160435
+m_1029 x m_1032 x -0.109034
+m_1029 x m_1032 x -0.082531
+m_1029 x m_1032 x -0.036228
+m_1029 x m_1032 x -0.068302
+m_1029 x m_1032 x -0.118334
+m_1030 x m_1030 x 0.064921
+m_1030 x m_1030 x 0.175909
+m_1030 x m_1030 x 0.124186
+m_1030 x m_1030 x 0.167682
+m_1030 x m_1030 x 0.098036
+m_1030 x m_1033 x -0.045998
+m_1030 x m_1033 x -0.050858
+m_1030 x m_1033 x -0.0977
+m_1030 x m_1033 x -0.024854
+m_1030 x m_1033 x 0.005692
+m_1031 x m_1031 x 0.108419
+m_1031 x m_1031 x 0.249197
+m_1031 x m_1031 x 0.170237
+m_1031 x m_1031 x 0.183539
+m_1031 x m_1031 x 0.174438
+m_1031 x m_1034 x -0.016035
+m_1031 x m_1034 x -0.145965
+m_1031 x m_1034 x -0.103444
+m_1031 x m_1034 x -0.141519
+m_1031 x m_1034 x -0.158891
+m_1032 x m_1032 x 0.155962
+m_1032 x m_1032 x 0.188311
+m_1032 x m_1032 x 0.084141
+m_1032 x m_1032 x 0.100994
+m_1032 x m_1032 x 0.146386
+m_1032 x m_1035 x -0.074712
+m_1032 x m_1035 x -0.064903
+m_1032 x m_1035 x -0.101804
+m_1032 x m_1035 x -0.032691
+m_1032 x m_1035 x -0.114303
+m_1033 x m_1033 x 0.240143
+m_1033 x m_1033 x 0.232077
+m_1033 x m_1033 x 0.113915
+m_1033 x m_1033 x 0.191992
+m_1033 x m_1033 x 0.218409
+m_1033 x m_1036 x -0.050754
+m_1033 x m_1036 x -0.136127
+m_1033 x m_1036 x -0.064983
+m_1033 x m_1036 x -0.105041
+m_1033 x m_1036 x -0.08994
+m_1034 x m_1034 x 0.098361
+m_1034 x m_1034 x 0.124989
+m_1034 x m_1034 x 0.096239
+m_1034 x m_1034 x 0.102784
+m_1034 x m_1034 x 0.069988
+m_1034 x m_1037 x -0.154057
+m_1034 x m_1037 x -0.097786
+m_1034 x m_1037 x -0.098328
+m_1034 x m_1037 x -0.162156
+m_1034 x m_1037 x -0.136505
+m_1035 x m_1035 x 0.378851
+m_1035 x m_1035 x 0.487314
+m_1035 x m_1035 x 0.208127
+m_1035 x m_1035 x 0.076721
+m_1035 x m_1035 x 0.345281
+m_1035 x m_1038 x -0.191282
+m_1035 x m_1038 x -0.051842
+m_1035 x m_1038 x -0.141957
+m_1035 x m_1038 x -0.146796
+m_1035 x m_1038 x -0.161529
+m_1036 x m_1036 x -0.028397
+m_1036 x m_1036 x 0.10841
+m_1036 x m_1036 x 0.227747
+m_1036 x m_1036 x 0.1182
+m_1036 x m_1036 x 0.213726
+m_1036 x m_1039 x -0.159576
+m_1036 x m_1039 x -0.094982
+m_1036 x m_1039 x -0.223145
+m_1036 x m_1039 x -0.169588
+m_1036 x m_1039 x -0.131725
+m_1037 x m_1027 x -0.086815
+m_1037 x m_1027 x -0.142433
+m_1037 x m_1027 x -0.094744
+m_1037 x m_1027 x -0.139911
+m_1037 x m_1027 x -0.110981
+m_1037 x m_1037 x 0.188964
+m_1037 x m_1037 x 0.191109
+m_1037 x m_1037 x 0.177809
+m_1037 x m_1037 x 0.342173
+m_1037 x m_1037 x 0.320537
+m_1038 x m_1028 x -0.022658
+m_1038 x m_1028 x -0.121851
+m_1038 x m_1028 x -0.094836
+m_1038 x m_1028 x -0.092378
+m_1038 x m_1028 x -0.128918
+m_1038 x m_1038 x 0.088761
+m_1038 x m_1038 x 0.23967
+m_1038 x m_1038 x 0.2144
+m_1038 x m_1038 x 0.225245
+m_1038 x m_1038 x 0.166043
+m_1039 x m_1029 x -0.094188
+m_1039 x m_1029 x -0.137532
+m_1039 x m_1029 x -0.106247
+m_1039 x m_1029 x -0.051079
+m_1039 x m_1029 x -0.09995
+m_1039 x m_1039 x 0.047286
+m_1039 x m_1039 x 0.066872
+m_1039 x m_1039 x 0.084683
+m_1039 x m_1039 x 0.14965
+m_1039 x m_1039 x 0.061803
+f_1001 x f_1001 x 0.092146
+f_1001 x f_1001 x 0.069535
+f_1001 x f_1001 x 0.130482
+f_1001 x f_1001 x 0.121077
+f_1001 x f_1001 x 0.046827
+f_1001 x f_1005 x -0.07389
+f_1001 x f_1005 x -0.005571
+f_1001 x f_1005 x -0.038638
+f_1001 x f_1005 x -0.069725
+f_1001 x f_1005 x -0.106528
+f_1002 x f_1002 x 0.152725
+f_1002 x f_1002 x 0.068492
+f_1002 x f_1002 x 0.021185
+f_1002 x f_1002 x 0.100351
+f_1002 x f_1002 x 0.110254
+f_1002 x f_1006 x -0.045543
+f_1002 x f_1006 x -0.103691
+f_1002 x f_1006 x -0.109144
+f_1002 x f_1006 x -0.136591
+f_1002 x f_1006 x -0.066464
+f_1003 x f_1003 x 0.250429
+f_1003 x f_1003 x 0.216766
+f_1003 x f_1003 x 0.369219
+f_1003 x f_1003 x 0.088713
+f_1003 x f_1003 x 0.300226
+f_1003 x f_1007 x -0.076819
+f_1003 x f_1007 x -0.149137
+f_1003 x f_1007 x -0.135019
+f_1003 x f_1007 x -0.163912
+f_1003 x f_1007 x -0.095181
+f_1004 x f_1004 x 0.121271
+f_1004 x f_1004 x 0.040588
+f_1004 x f_1004 x -0.055486
+f_1004 x f_1004 x 0.037581
+f_1004 x f_1004 x -0.051495
+f_1004 x f_1008 x -0.058328
+f_1004 x f_1008 x -0.080856
+f_1004 x f_1008 x -0.098234
+f_1004 x f_1008 x -0.074142
+f_1004 x f_1008 x -0.105869
+f_1005 x f_1005 x 0.055989
+f_1005 x f_1005 x 0.002048
+f_1005 x f_1005 x 0.065929
+f_1005 x f_1005 x 0.075466
+f_1005 x f_1005 x 0.063656
+f_1005 x f_1009 x -0.015425
+f_1005 x f_1009 x -0.030571
+f_1005 x f_1009 x -0.051191
+f_1005 x f_1009 x -0.011377
+f_1005 x f_1009 x -0.029323
+f_1006 x f_1006 x 0.114515
+f_1006 x f_1006 x 0.193478
+f_1006 x f_1006 x 0.263637
+f_1006 x f_1006 x 0.124408
+f_1006 x f_1006 x 0.253012
+f_1006 x f_1010 x -0.045272
+f_1006 x f_1010 x -0.008281
+f_1006 x f_1010 x -0.098975
+f_1006 x f_1010 x -0.052164
+f_1006 x f_1010 x -0.038489
+f_1007 x f_1007 x 0.416937
+f_1007 x f_1007 x 0.152148
+f_1007 x f_1007 x 0.260329
+f_1007 x f_1007 x 0.302488
+f_1007 x f_1007 x 0.197565
+f_1007 x f_1011 x -0.025394
+f_1007 x f_1011 x -0.03248
+f_1007 x f_1011 x -0.018316
+f_1007 x f_1011 x 0.002981
+f_1007 x f_1011 x -0.084619
+f_1008 x f_1008 x 0.21788
+f_1008 x f_1008 x 0.135293
+f_1008 x f_1008 x 0.075077
+f_1008 x f_1008 x 0.07734
+f_1008 x f_1008 x 0.005587
+f_1008 x f_1012 x -0.155008
+f_1008 x f_1012 x -0.146633
+f_1008 x f_1012 x -0.091813
+f_1008 x f_1012 x -0.134748
+f_1008 x f_1012 x -0.112009
+f_1009 x f_1009 x 0.07703
+f_1009 x f_1009 x 0.20282
+f_1009 x f_1009 x 0.047498
+f_1009 x f_1009 x 0.14907
+f_1009 x f_1009 x 0.065152
+f_1009 x f_1013 x -0.040804
+f_1009 x f_1013 x -0.108543
+f_1009 x f_1013 x -0.069024
+f_1009 x f_1013 x -0.093558
+f_1009 x f_1013 x -0.104821
+f_1010 x f_1001 x 0.030117
+f_1010 x f_1001 x -0.001707
+f_1010 x f_1001 x 0.023293
+f_1010 x f_1001 x 0.044433
+f_1010 x f_1001 x 0.036691
+f_1010 x f_1010 x 0.090399
+f_1010 x f_1010 x 0.287217
+f_1010 x f_1010 x 0.17436
+f_1010 x f_1010 x 0.072507
+f_1010 x f_1010 x 0.169799
+f_1011 x f_1002 x -0.098069
+f_1011 x f_1002 x -0.059601
+f_1011 x f_1002 x -0.116737
+f_1011 x f_1002 x -0.091612
+f_1011 x f_1002 x -0.124484
+f_1011 x f_1011 x 0.061337
+f_1011 x f_1011 x 0.078452
+f_1011 x f_1011 x 0.053488
+f_1011 x f_1011 x 0.274413
+f_1011 x f_1011 x 0.025676
+f_1012 x f_1003 x -0.172277
+f_1012 x f_1003 x -0.139654
+f_1012 x f_1003 x -0.110438
+f_1012 x f_1003 x -0.147711
+f_1012 x f_1003 x -0.144899
+f_1012 x f_1012 x -0.008046
+f_1012 x f_1012 x 0.01118
+f_1012 x f_1012 x 0.069386
+f_1012 x f_1012 x 0.018678
+f_1012 x f_1012 x 0.090871
+f_1013 x f_1004 x -0.139999
+f_1013 x f_1004 x -0.146055
+f_1013 x f_1004 x -0.080982
+f_1013 x f_1004 x -0.11122
+f_1013 x f_1004 x -0.048738
+f_1013 x f_1013 x 0.08644
+f_1013 x f_1013 x 0.031428
+f_1013 x f_1013 x 0.110492
+f_1013 x f_1013 x 0.080487
+f_1013 x f_1013 x 0.129129
+m_1027 x m_1027 x -0.030796
+m_1027 x m_1027 x 0.166674
+m_1027 x m_1027 x -0.054503
+m_1027 x m_1027 x 0.216297
+m_1027 x m_1027 x 0.036048
+m_1027 x m_1031 x -0.068606
+m_1027 x m_1031 x -0.087531
+m_1027 x m_1031 x -0.079769
+m_1027 x m_1031 x -0.105363
+m_1027 x m_1031 x -0.017589
+m_1028 x m_1028 x 0.057595
+m_1028 x m_1028 x 0.12494
+m_1028 x m_1028 x 0.285578
+m_1028 x m_1028 x 0.068244
+m_1028 x m_1028 x 0.027044
+m_1028 x m_1032 x -0.08819
+m_1028 x m_1032 x -0.014659
+m_1028 x m_1032 x -0.060915
+m_1028 x m_1032 x -0.058342
+m_1028 x m_1032 x 0.002364
+m_1029 x m_1029 x 0.007404
+m_1029 x m_1029 x -0.04252
+m_1029 x m_1029 x -0.032869
+m_1029 x m_1029 x 0.029775
+m_1029 x m_1029 x -0.051259
+m_1029 x m_1033 x -0.158181
+m_1029 x m_1033 x -0.121331
+m_1029 x m_1033 x -0.144152
+m_1029 x m_1033 x -0.156712
+m_1029 x m_1033 x -0.177725
+m_1030 x m_1030 x 0.056945
+m_1030 x m_1030 x 0.317025
+m_1030 x m_1030 x 0.325579
+m_1030 x m_1030 x 0.284201
+m_1030 x m_1030 x 0.230508
+m_1030 x m_1034 x -0.022487
+m_1030 x m_1034 x -0.048232
+m_1030 x m_1034 x -0.145175
+m_1030 x m_1034 x -0.123378
+m_1030 x m_1034 x -0.073831
+m_1031 x m_1031 x 0.193519
+m_1031 x m_1031 x 0.175608
+m_1031 x m_1031 x 0.107447
+m_1031 x m_1031 x 0.199848
+m_1031 x m_1031 x 0.168314
+m_1031 x m_1035 x -0.020661
+m_1031 x m_1035 x -0.065903
+m_1031 x m_1035 x -0.125195
+m_1031 x m_1035 x -0.110455
+m_1031 x m_1035 x -0.094515
+m_1032 x m_1032 x 0.195781
+m_1032 x m_1032 x 0.096999
+m_1032 x m_1032 x -0.008268
+m_1032 x m_1032 x 0.069079
+m_1032 x m_1032 x 0.044985
+m_1032 x m_1036 x -0.076835
+m_1032 x m_1036 x -0.088222
+m_1032 x m_1036 x -0.120676
+m_1032 x m_1036 x -0.142852
+m_1032 x m_1036 x -0.086772
+m_1033 x m_1033 x -0.029097
+m_1033 x m_1033 x 0.061971
+m_1033 x m_1033 x 0.019417
+m_1033 x m_1033 x 0.037331
+m_1033 x m_1033 x 0.127991
+m_1033 x m_1037 x -0.175094
+m_1033 x m_1037 x -0.150287
+m_1033 x m_1037 x -0.220412
+m_1033 x m_1037 x -0.172678
+m_1033 x m_1037 x -0.169294
+m_1034 x m_1034 x 0.149889
+m_1034 x m_1034 x 0.066521
+m_1034 x m_1034 x 0.101737
+m_1034 x m_1034 x 0.100917
+m_1034 x m_1034 x 0.085561
+m_1034 x m_1038 x -0.124248
+m_1034 x m_1038 x -0.038474
+m_1034 x m_1038 x -0.068404
+m_1034 x m_1038 x -0.058341
+m_1034 x m_1038 x -0.115717
+m_1035 x m_1035 x 0.213568
+m_1035 x m_1035 x 0.029325
+m_1035 x m_1035 x 0.194311
+m_1035 x m_1035 x 0.249343
+m_1035 x m_1035 x 0.093952
+m_1035 x m_1039 x -0.090435
+m_1035 x m_1039 x -0.153427
+m_1035 x m_1039 x -0.083921
+m_1035 x m_1039 x -0.070264
+m_1035 x m_1039 x -0.057297
+m_1036 x m_1027 x -0.115691
+m_1036 x m_1027 x -0.059323
+m_1036 x m_1027 x -0.186053
+m_1036 x m_1027 x -0.175012
+m_1036 x m_1027 x -0.166257
+m_1036 x m_1036 x 0.063842
+m_1036 x m_1036 x 0.154448
+m_1036 x m_1036 x 0.389991
+m_1036 x m_1036 x 0.316025
+m_1036 x m_1036 x 0.30907
+m_1037 x m_1028 x -0.075955
+m_1037 x m_1028 x -0.080148
+m_1037 x m_1028 x -0.021735
+m_1037 x m_1028 x -0.056239
+m_1037 x m_1028 x -0.026486
+m_1037 x m_1037 x 0.103612
+m_1037 x m_1037 x 0.259835
+m_1037 x m_1037 x 0.243031
+m_1037 x m_1037 x 0.118142
+m_1037 x m_1037 x 0.164509
+m_1038 x m_1029 x -0.041864
+m_1038 x m_1029 x -0.003681
+m_1038 x m_1029 x -0.0213
+m_1038 x m_1029 x -0.003561
+m_1038 x m_1029 x -0.048595
+m_1038 x m_1038 x 0.182035
+m_1038 x m_1038 x 0.121601
+m_1038 x m_1038 x 0.231335
+m_1038 x m_1038 x 0.2318
+m_1038 x m_1038 x 0.378738
+m_1039 x m_1030 x -0.186483
+m_1039 x m_1030 x -0.153817
+m_1039 x m_1030 x -0.164871
+m_1039 x m_1030 x -0.099591
+m_1039 x m_1030 x -0.204401
+m_1039 x m_1039 x 0.095322
+m_1039 x m_1039 x 0.072113
+m_1039 x m_1039 x 0.139665
+m_1039 x m_1039 x 0.132828
+m_1039 x m_1039 x 0.169885
+f_1001 x f_1002 x -0.079848
+f_1001 x f_1002 x -0.138407
+f_1001 x f_1002 x -0.05771
+f_1001 x f_1002 x -0.101174
+f_1001 x f_1002 x -0.084897
+f_1002 x f_1003 x -0.073879
+f_1002 x f_1003 x 0.04615
+f_1002 x f_1003 x 0.075474
+f_1002 x f_1003 x -0.012754
+f_1002 x f_1003 x -0.006101
+f_1003 x f_1004 x -0.033191
+f_1003 x f_1004 x -0.070245
+f_1003 x f_1004 x -0.045936
+f_1003 x f_1004 x -0.056841
+f_1003 x f_1004 x -0.039423
+f_1004 x f_1005 x -0.174601
+f_1004 x f_1005 x -0.126434
+f_1004 x f_1005 x -0.200955
+f_1004 x f_1005 x -0.065868
+f_1004 x f_1005 x -0.135015
+f_1005 x f_1006 x -0.005004
+f_1005 x f_1006 x -0.052989
+f_1005 x f_1006 x -0.137597
+f_1005 x f_1006 x -0.10143
+f_1005 x f_1006 x -0.150544
+f_1006 x f_1007 x 0.00194
+f_1006 x f_1007 x -0.020898
+f_1006 x f_1007 x -0.008821
+f_1006 x f_1007 x -0.004604
+f_1006 x f_1007 x -0.0516
+f_1007 x f_1008 x -0.072577
+f_1007 x f_1008 x -0.108647
+f_1007 x f_1008 x -0.090148
+f_1007 x f_1008 x -0.156442
+f_1007 x f_1008 x -0.128324
+f_1008 x f_1009 x -0.086092
+f_1008 x f_1009 x 0.011503
+f_1008 x f_1009 x -0.070738
+f_1008 x f_1009 x -0.048589
+f_1008 x f_1009 x -0.032849
+f_1009 x f_1010 x -0.077762
+f_1009 x f_1010 x -0.102182
+f_1009 x f_1010 x -0.077388
+f_1009 x f_1010 x -0.048259
+f_1009 x f_1010 x -0.106654
+f_1010 x f_1011 x -0.107925
+f_1010 x f_1011 x -0.074153
+f_1010 x f_1011 x -0.046166
+f_1010 x f_1011 x -0.105082
+f_1010 x f_1011 x -0.109697
+f_1011 x f_1012 x -0.114147
+f_1011 x f_1012 x -0.193337
+f_1011 x f_1012 x -0.081829
+f_1011 x f_1012 x -0.109909
+f_1011 x f_1012 x -0.180126
+f_1012 x f_1013 x -0.063825
+f_1012 x f_1013 x -0.094552
+f_1012 x f_1013 x -0.119662
+f_1012 x f_1013 x -0.07877
+f_1012 x f_1013 x -0.081715
+f_1013 x f_1001 x -0.136329
+f_1013 x f_1001 x -0.124971
+f_1013 x f_1001 x -0.075831
+f_1013 x f_1001 x -0.110905
+f_1013 x f_1001 x -0.074551
+m_1027 x m_1028 x -0.190285
+m_1027 x m_1028 x -0.116158
+m_1027 x m_1028 x -0.159631
+m_1027 x m_1028 x -0.168323
+m_1027 x m_1028 x -0.115116
+m_1028 x m_1029 x -0.047101
+m_1028 x m_1029 x -0.108092
+m_1028 x m_1029 x -0.063646
+m_1028 x m_1029 x -0.013492
+m_1028 x m_1029 x -0.050001
+m_1029 x m_1030 x -0.074749
+m_1029 x m_1030 x -0.0461
+m_1029 x m_1030 x -0.080191
+m_1029 x m_1030 x -0.043393
+m_1029 x m_1030 x -0.066529
+m_1030 x m_1031 x -0.041418
+m_1030 x m_1031 x -0.046616
+m_1030 x m_1031 x -0.015607
+m_1030 x m_1031 x -0.034914
+m_1030 x m_1031 x -0.088874
+m_1031 x m_1032 x -0.070922
+m_1031 x m_1032 x -0.065517
+m_1031 x m_1032 x -0.095383
+m_1031 x m_1032 x -0.220017
+m_1031 x m_1032 x -0.123048
+m_1032 x m_1033 x -0.020985
+m_1032 x m_1033 x -0.059387
+m_1032 x m_1033 x -0.032041
+m_1032 x m_1033 x -0.034125
+m_1032 x m_1033 x -0.051097
+m_1033 x m_1034 x -0.068623
+m_1033 x m_1034 x -0.083128
+m_1033 x m_1034 x -0.077355
+m_1033 x m_1034 x -0.125626
+m_1033 x m_1034 x -0.083417
+m_1034 x m_1035 x -0.143532
+m_1034 x m_1035 x -0.200868
+m_1034 x m_1035 x -0.16596
+m_1034 x m_1035 x -0.151486
+m_1034 x m_1035 x -0.114951
+m_1035 x m_1036 x -0.176893
+m_1035 x m_1036 x -0.207564
+m_1035 x m_1036 x -0.117525
+m_1035 x m_1036 x -0.168342
+m_1035 x m_1036 x -0.21075
+m_1036 x m_1037 x -0.075311
+m_1036 x m_1037 x -0.084175
+m_1036 x m_1037 x -0.090178
+m_1036 x m_1037 x -0.099832
+m_1036 x m_1037 x -0.135049
+m_1037 x m_1038 x -0.176783
+m_1037 x m_1038 x -0.168007
+m_1037 x m_1038 x -0.085472
+m_1037 x m_1038 x -0.143515
+m_1037 x m_1038 x -0.114927
+m_1038 x m_1039 x -0.162465
+m_1038 x m_1039 x -0.165675
+m_1038 x m_1039 x -0.155784
+m_1038 x m_1039 x -0.167747
+m_1038 x m_1039 x -0.162331
+m_1039 x m_1027 x -0.095913
+m_1039 x m_1027 x -0.132247
+m_1039 x m_1027 x -0.104928
+m_1039 x m_1027 x -0.104656
+m_1039 x m_1027 x -0.185046
diff --git a/bob/bio/base/test/data/scores-cmc-4col-open-set-one-error.txt b/bob/bio/base/test/data/scores-cmc-4col-open-set-one-error.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ab3f4a187d8592df4460f29ed09e0a655972732b
--- /dev/null
+++ b/bob/bio/base/test/data/scores-cmc-4col-open-set-one-error.txt
@@ -0,0 +1,27 @@
+1 1 probe_1 1
+1 1 probe_2 1
+1 2 probe_3 0
+1 2 probe_4 0
+1 2 probe_5 0
+1 3 probe_6 0
+1 3 probe_7 0
+1 4 probe_8 0
+1 5 probe_9 0
+2 1 probe_1 0
+2 1 probe_2 0
+2 2 probe_3 1
+2 2 probe_4 1
+2 2 probe_5 1
+2 3 probe_6 0
+2 3 probe_7 0
+2 4 probe_8 0
+2 5 probe_9 0
+3 1 probe_1 0
+3 1 probe_2 0
+3 2 probe_3 0
+3 2 probe_4 0
+3 2 probe_5 0
+3 3 probe_6 1
+3 3 probe_7 -0.1
+3 4 probe_8 0
+3 5 probe_9 0
diff --git a/bob/bio/base/test/data/scores-cmc-4col-open-set-two-errors.txt b/bob/bio/base/test/data/scores-cmc-4col-open-set-two-errors.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f8f7ba24c5de55cb904a70f64501615c404416f1
--- /dev/null
+++ b/bob/bio/base/test/data/scores-cmc-4col-open-set-two-errors.txt
@@ -0,0 +1,27 @@
+1 1 probe_1 1
+1 1 probe_2 1
+1 2 probe_3 0
+1 2 probe_4 0
+1 2 probe_5 0
+1 3 probe_6 0
+1 3 probe_7 0
+1 4 probe_8 0
+1 5 probe_9 0
+2 1 probe_1 0
+2 1 probe_2 0
+2 2 probe_3 1
+2 2 probe_4 1
+2 2 probe_5 1
+2 3 probe_6 0
+2 3 probe_7 0
+2 4 probe_8 0
+2 5 probe_9 0
+3 1 probe_1 0
+3 1 probe_2 0
+3 2 probe_3 0
+3 2 probe_4 0
+3 2 probe_5 0
+3 3 probe_6 1
+3 3 probe_7 -0.1
+3 4 probe_8 0
+3 5 probe_9 10
diff --git a/bob/bio/base/test/data/scores-cmc-4col-open-set.txt b/bob/bio/base/test/data/scores-cmc-4col-open-set.txt
new file mode 100644
index 0000000000000000000000000000000000000000..75ed810189de655dce5d9d3314568ea1c09c8bb5
--- /dev/null
+++ b/bob/bio/base/test/data/scores-cmc-4col-open-set.txt
@@ -0,0 +1,27 @@
+1 1 probe_1 1
+1 1 probe_2 1
+1 2 probe_3 0
+1 2 probe_4 0
+1 2 probe_5 0
+1 3 probe_6 0
+1 3 probe_7 0
+1 4 probe_8 0
+1 5 probe_9 0
+2 1 probe_1 0
+2 1 probe_2 0
+2 2 probe_3 1
+2 2 probe_4 1
+2 2 probe_5 1
+2 3 probe_6 0
+2 3 probe_7 0
+2 4 probe_8 0
+2 5 probe_9 0
+3 1 probe_1 0
+3 1 probe_2 0
+3 2 probe_3 0
+3 2 probe_4 0
+3 2 probe_5 0
+3 3 probe_6 1
+3 3 probe_7 1
+3 4 probe_8 0
+3 5 probe_9 0
diff --git a/bob/bio/base/test/data/scores-cmc-4col.txt b/bob/bio/base/test/data/scores-cmc-4col.txt
new file mode 100644
index 0000000000000000000000000000000000000000..33a76cab1bd5b61b29ff0975b3cdca9eb4bebf6d
--- /dev/null
+++ b/bob/bio/base/test/data/scores-cmc-4col.txt
@@ -0,0 +1,2000 @@
+3 3 s3/1 -1379.79268746
+3 3 s3/3 -1634.53276051
+3 3 s3/6 -1727.90866176
+3 3 s3/8 -1330.68401315
+3 3 s3/10 -1912.77343391
+3 4 s4/1 -1746.88596714
+3 4 s4/3 -1613.06319303
+3 4 s4/6 -2313.24329277
+3 4 s4/8 -1591.98392217
+3 4 s4/10 -2730.9754808
+3 7 s7/1 -3460.44008764
+3 7 s7/3 -3433.49050371
+3 7 s7/6 -3089.89562483
+3 7 s7/8 -3432.42457034
+3 7 s7/10 -3079.0440811
+3 8 s8/1 -3620.2592394
+3 8 s8/3 -3269.98024589
+3 8 s8/6 -3358.21797555
+3 8 s8/8 -3387.03907938
+3 8 s8/10 -3171.50666852
+3 9 s9/1 -2811.95946617
+3 9 s9/3 -2664.59585669
+3 9 s9/6 -2656.05911704
+3 9 s9/8 -2443.67278587
+3 9 s9/10 -2850.31782429
+3 13 s13/1 -2946.82573528
+3 13 s13/3 -3583.79672567
+3 13 s13/6 -2963.54066016
+3 13 s13/8 -2868.46385067
+3 13 s13/10 -2538.48690592
+3 15 s15/1 -3173.69053082
+3 15 s15/3 -3178.53876882
+3 15 s15/6 -3111.42098722
+3 15 s15/8 -3329.41061343
+3 15 s15/10 -2596.58956879
+3 18 s18/1 -3182.79708708
+3 18 s18/3 -2614.69595605
+3 18 s18/6 -2706.60809944
+3 18 s18/8 -2840.19223113
+3 18 s18/10 -2862.66900744
+3 19 s19/1 -3536.77408534
+3 19 s19/3 -4027.07052594
+3 19 s19/6 -3672.1595268
+3 19 s19/8 -3986.46152677
+3 19 s19/10 -3253.32219871
+3 22 s22/1 -4010.21487048
+3 22 s22/3 -3830.02378375
+3 22 s22/6 -4432.88810546
+3 22 s22/8 -4157.95710081
+3 22 s22/10 -4366.73686546
+3 23 s23/1 -3053.33185632
+3 23 s23/3 -3919.97013765
+3 23 s23/6 -3288.54921504
+3 23 s23/8 -3445.7429271
+3 23 s23/10 -2728.4009081
+3 25 s25/1 -2077.78964037
+3 25 s25/3 -1996.27706821
+3 25 s25/6 -2158.13414247
+3 25 s25/8 -2365.446406
+3 25 s25/10 -2113.26873798
+3 28 s28/1 -3442.83435448
+3 28 s28/3 -3163.25423353
+3 28 s28/6 -3227.02394654
+3 28 s28/8 -3383.5929893
+3 28 s28/10 -3270.67275578
+3 30 s30/1 -3399.50034429
+3 30 s30/3 -3755.26703911
+3 30 s30/6 -3390.40001552
+3 30 s30/8 -4088.11071666
+3 30 s30/10 -3448.70029605
+3 31 s31/1 -3317.91933517
+3 31 s31/3 -4129.53432195
+3 31 s31/6 -2703.85344626
+3 31 s31/8 -3028.36256979
+3 31 s31/10 -4117.12107523
+3 32 s32/1 -3451.07982123
+3 32 s32/3 -3659.08758621
+3 32 s32/6 -2912.5121953
+3 32 s32/8 -3239.29507593
+3 32 s32/10 -2816.61664649
+3 35 s35/1 -3532.22591289
+3 35 s35/3 -2825.64434863
+3 35 s35/6 -2226.87247619
+3 35 s35/8 -2273.17374368
+3 35 s35/10 -2807.78371377
+3 37 s37/1 -3090.7830507
+3 37 s37/3 -3356.19444943
+3 37 s37/6 -3819.78140964
+3 37 s37/8 -3280.30431209
+3 37 s37/10 -3019.52908155
+3 38 s38/1 -3047.63407732
+3 38 s38/3 -2972.12269097
+3 38 s38/6 -3484.48437412
+3 38 s38/8 -3216.05224462
+3 38 s38/10 -3207.45635903
+3 40 s40/1 -2506.31589548
+3 40 s40/3 -2738.67714294
+3 40 s40/6 -2826.35311781
+3 40 s40/8 -2477.55650197
+3 40 s40/10 -2856.55209634
+4 3 s3/1 -2097.51280034
+4 3 s3/3 -2023.3387048
+4 3 s3/6 -2217.05890884
+4 3 s3/8 -2328.42194559
+4 3 s3/10 -1579.12873829
+4 4 s4/1 -2109.51091365
+4 4 s4/3 -2397.45985327
+4 4 s4/6 -2674.80222663
+4 4 s4/8 -2048.16132875
+4 4 s4/10 -1597.37572542
+4 7 s7/1 -3368.69187597
+4 7 s7/3 -3371.00271615
+4 7 s7/6 -3232.68335763
+4 7 s7/8 -3607.3979377
+4 7 s7/10 -2884.55057149
+4 8 s8/1 -4303.76466702
+4 8 s8/3 -3202.42396848
+4 8 s8/6 -3372.60526358
+4 8 s8/8 -3351.99028682
+4 8 s8/10 -2875.5348275
+4 9 s9/1 -2860.08677303
+4 9 s9/3 -2688.67567353
+4 9 s9/6 -3232.40160873
+4 9 s9/8 -2632.11421778
+4 9 s9/10 -2286.6605215
+4 13 s13/1 -4233.37474823
+4 13 s13/3 -4777.76108956
+4 13 s13/6 -3509.80014011
+4 13 s13/8 -4071.49161933
+4 13 s13/10 -3663.00400217
+4 15 s15/1 -3090.32050098
+4 15 s15/3 -3109.87978493
+4 15 s15/6 -3244.80395029
+4 15 s15/8 -3159.54011618
+4 15 s15/10 -3212.33935998
+4 18 s18/1 -3029.88191105
+4 18 s18/3 -3693.98946937
+4 18 s18/6 -3365.9813891
+4 18 s18/8 -3671.60318908
+4 18 s18/10 -3439.17926362
+4 19 s19/1 -4126.33284024
+4 19 s19/3 -4687.64632666
+4 19 s19/6 -4503.65118444
+4 19 s19/8 -4597.81186541
+4 19 s19/10 -4061.93959722
+4 22 s22/1 -4420.20420385
+4 22 s22/3 -4122.6265905
+4 22 s22/6 -4991.81040461
+4 22 s22/8 -4531.38441564
+4 22 s22/10 -4980.44450294
+4 23 s23/1 -3401.81702162
+4 23 s23/3 -4028.1336055
+4 23 s23/6 -3978.45100619
+4 23 s23/8 -3211.22978325
+4 23 s23/10 -3198.10535623
+4 25 s25/1 -2062.04530856
+4 25 s25/3 -1864.81104842
+4 25 s25/6 -2407.68073618
+4 25 s25/8 -3439.82293636
+4 25 s25/10 -1794.81628586
+4 28 s28/1 -4540.54004502
+4 28 s28/3 -4383.64097847
+4 28 s28/6 -4281.67440812
+4 28 s28/8 -3946.61365052
+4 28 s28/10 -4569.28625396
+4 30 s30/1 -3051.1905347
+4 30 s30/3 -3573.25826858
+4 30 s30/6 -3172.93119916
+4 30 s30/8 -4035.35954145
+4 30 s30/10 -3361.40514185
+4 31 s31/1 -3252.21215713
+4 31 s31/3 -4491.10730478
+4 31 s31/6 -2883.97999623
+4 31 s31/8 -2974.33442689
+4 31 s31/10 -4419.81756879
+4 32 s32/1 -3701.92675808
+4 32 s32/3 -4230.76047786
+4 32 s32/6 -3251.25421788
+4 32 s32/8 -3866.64264384
+4 32 s32/10 -3237.44016449
+4 35 s35/1 -4204.25090013
+4 35 s35/3 -3758.36177331
+4 35 s35/6 -2154.19941863
+4 35 s35/8 -2145.22688345
+4 35 s35/10 -3437.97238277
+4 37 s37/1 -4096.71829358
+4 37 s37/3 -4415.32539877
+4 37 s37/6 -4645.02754118
+4 37 s37/8 -4196.70618568
+4 37 s37/10 -4103.73478556
+4 38 s38/1 -3692.77721021
+4 38 s38/3 -3596.5152585
+4 38 s38/6 -4024.46292833
+4 38 s38/8 -3013.42746448
+4 38 s38/10 -3585.91031401
+4 40 s40/1 -3217.76780761
+4 40 s40/3 -2798.59798876
+4 40 s40/6 -3653.68846351
+4 40 s40/8 -3265.06174969
+4 40 s40/10 -4288.3030138
+7 3 s3/1 -3120.00216408
+7 3 s3/3 -2988.66583317
+7 3 s3/6 -2928.16408153
+7 3 s3/8 -3234.07830596
+7 3 s3/10 -2929.70625522
+7 4 s4/1 -3459.39856577
+7 4 s4/3 -3822.00572827
+7 4 s4/6 -3925.86211815
+7 4 s4/8 -3681.6492638
+7 4 s4/10 -3313.51262759
+7 7 s7/1 -617.825862238
+7 7 s7/3 -867.409063056
+7 7 s7/6 -1353.44151952
+7 7 s7/8 -1609.78693924
+7 7 s7/10 -1305.90153291
+7 8 s8/1 -4327.87306526
+7 8 s8/3 -3735.28132801
+7 8 s8/6 -3899.4043867
+7 8 s8/8 -4159.10909214
+7 8 s8/10 -3690.00289726
+7 9 s9/1 -3461.41683118
+7 9 s9/3 -3474.96610279
+7 9 s9/6 -3796.28874482
+7 9 s9/8 -3248.35661343
+7 9 s9/10 -3331.48914238
+7 13 s13/1 -4921.81558057
+7 13 s13/3 -5177.0115092
+7 13 s13/6 -4377.79358814
+7 13 s13/8 -4549.47680222
+7 13 s13/10 -4268.93263282
+7 15 s15/1 -3076.7368174
+7 15 s15/3 -3047.13247253
+7 15 s15/6 -3249.84902365
+7 15 s15/8 -3150.50121815
+7 15 s15/10 -3452.85315844
+7 18 s18/1 -3945.39914918
+7 18 s18/3 -4458.14092777
+7 18 s18/6 -4013.01623566
+7 18 s18/8 -4338.24226246
+7 18 s18/10 -3961.85437891
+7 19 s19/1 -4809.91164653
+7 19 s19/3 -5232.22205615
+7 19 s19/6 -5157.79783698
+7 19 s19/8 -4651.29311084
+7 19 s19/10 -4874.47981006
+7 22 s22/1 -4459.6222356
+7 22 s22/3 -4377.94066581
+7 22 s22/6 -4686.89847305
+7 22 s22/8 -4587.77483596
+7 22 s22/10 -4960.77430892
+7 23 s23/1 -2844.66296646
+7 23 s23/3 -3577.80820325
+7 23 s23/6 -3760.03833299
+7 23 s23/8 -2592.30467393
+7 23 s23/10 -2782.98926037
+7 25 s25/1 -3709.91905593
+7 25 s25/3 -3673.52485981
+7 25 s25/6 -4135.41309534
+7 25 s25/8 -4498.09934416
+7 25 s25/10 -3867.02458523
+7 28 s28/1 -4903.59623882
+7 28 s28/3 -4959.06234558
+7 28 s28/6 -4757.67310498
+7 28 s28/8 -4397.00986327
+7 28 s28/10 -5163.55107447
+7 30 s30/1 -3564.22134558
+7 30 s30/3 -3884.05161515
+7 30 s30/6 -3278.45824218
+7 30 s30/8 -4203.96866458
+7 30 s30/10 -3703.03644002
+7 31 s31/1 -3610.5222855
+7 31 s31/3 -4647.7502073
+7 31 s31/6 -3826.85642829
+7 31 s31/8 -3697.79390825
+7 31 s31/10 -4711.21976699
+7 32 s32/1 -4224.76328171
+7 32 s32/3 -4880.3701751
+7 32 s32/6 -3467.34232266
+7 32 s32/8 -4205.0790813
+7 32 s32/10 -3366.64775879
+7 35 s35/1 -4139.19915643
+7 35 s35/3 -4165.24385506
+7 35 s35/6 -3757.11460823
+7 35 s35/8 -3488.0609092
+7 35 s35/10 -3316.41532002
+7 37 s37/1 -4439.26346467
+7 37 s37/3 -4628.42859719
+7 37 s37/6 -4800.49047203
+7 37 s37/8 -4425.21313548
+7 37 s37/10 -4472.06844594
+7 38 s38/1 -3637.57257635
+7 38 s38/3 -3831.59619911
+7 38 s38/6 -3844.91237951
+7 38 s38/8 -3161.92143097
+7 38 s38/10 -3168.10019452
+7 40 s40/1 -3577.73736278
+7 40 s40/3 -3146.39774768
+7 40 s40/6 -3882.04884366
+7 40 s40/8 -3735.30412249
+7 40 s40/10 -4467.95343226
+8 3 s3/1 -3816.49167388
+8 3 s3/3 -4243.79743359
+8 3 s3/6 -3082.51718778
+8 3 s3/8 -3020.22874228
+8 3 s3/10 -4113.09549687
+8 4 s4/1 -3039.48610771
+8 4 s4/3 -3040.63946246
+8 4 s4/6 -3395.10221087
+8 4 s4/8 -3116.55675349
+8 4 s4/10 -4497.62739774
+8 7 s7/1 -4211.6114398
+8 7 s7/3 -3931.41737091
+8 7 s7/6 -3580.80042267
+8 7 s7/8 -3709.35948031
+8 7 s7/10 -4510.99928392
+8 8 s8/1 -1135.46945823
+8 8 s8/3 -1664.95236718
+8 8 s8/6 -1745.06667956
+8 8 s8/8 -1874.43093948
+8 8 s8/10 -2061.08463491
+8 9 s9/1 -4297.44821021
+8 9 s9/3 -4353.85917889
+8 9 s9/6 -3575.52734928
+8 9 s9/8 -3475.1781057
+8 9 s9/10 -4719.13057395
+8 13 s13/1 -4636.95144656
+8 13 s13/3 -4732.44942349
+8 13 s13/6 -4704.23970245
+8 13 s13/8 -4514.0326596
+8 13 s13/10 -4266.08581029
+8 15 s15/1 -3669.79436722
+8 15 s15/3 -3580.75949187
+8 15 s15/6 -3609.71332974
+8 15 s15/8 -3755.57239855
+8 15 s15/10 -3543.09126099
+8 18 s18/1 -4961.2173049
+8 18 s18/3 -4109.75653182
+8 18 s18/6 -3995.44195704
+8 18 s18/8 -4177.49528886
+8 18 s18/10 -3950.04207524
+8 19 s19/1 -4297.15335629
+8 19 s19/3 -4870.31852193
+8 19 s19/6 -4496.97200871
+8 19 s19/8 -4094.66435512
+8 19 s19/10 -3822.2449824
+8 22 s22/1 -4780.99227159
+8 22 s22/3 -4689.028013
+8 22 s22/6 -4984.82882451
+8 22 s22/8 -4879.72886553
+8 22 s22/10 -5098.05356772
+8 23 s23/1 -3405.79008991
+8 23 s23/3 -4776.51868726
+8 23 s23/6 -4161.72307492
+8 23 s23/8 -4788.46294731
+8 23 s23/10 -3315.41957354
+8 25 s25/1 -3824.59345334
+8 25 s25/3 -3845.76304451
+8 25 s25/6 -3763.12504434
+8 25 s25/8 -3761.5899582
+8 25 s25/10 -3905.03364425
+8 28 s28/1 -4877.23858214
+8 28 s28/3 -4705.39011288
+8 28 s28/6 -4772.27918626
+8 28 s28/8 -5550.62266467
+8 28 s28/10 -4717.01599088
+8 30 s30/1 -4084.52503825
+8 30 s30/3 -4221.1789981
+8 30 s30/6 -4061.9396941
+8 30 s30/8 -4709.78243598
+8 30 s30/10 -3900.24932223
+8 31 s31/1 -4796.206716
+8 31 s31/3 -5007.39195856
+8 31 s31/6 -4423.3107164
+8 31 s31/8 -4652.91164347
+8 31 s31/10 -4980.18129086
+8 32 s32/1 -3938.07008877
+8 32 s32/3 -4224.23005286
+8 32 s32/6 -2928.42135463
+8 32 s32/8 -3585.26122854
+8 32 s32/10 -3020.08375318
+8 35 s35/1 -4733.303325
+8 35 s35/3 -4275.11431188
+8 35 s35/6 -3467.16231594
+8 35 s35/8 -3506.0442336
+8 35 s35/10 -4471.58251982
+8 37 s37/1 -5197.10341632
+8 37 s37/3 -5296.46506571
+8 37 s37/6 -5060.04946633
+8 37 s37/8 -4485.87436358
+8 37 s37/10 -4939.53354307
+8 38 s38/1 -3295.6245965
+8 38 s38/3 -3303.72233957
+8 38 s38/6 -3557.30039322
+8 38 s38/8 -3781.97830608
+8 38 s38/10 -3744.9474251
+8 40 s40/1 -4572.35498313
+8 40 s40/3 -4854.67113335
+8 40 s40/6 -4103.05579492
+8 40 s40/8 -4230.86819166
+8 40 s40/10 -3904.31330825
+9 3 s3/1 -2547.5104482
+9 3 s3/3 -2725.45115096
+9 3 s3/6 -2211.99297617
+9 3 s3/8 -2416.50020167
+9 3 s3/10 -2808.00169181
+9 4 s4/1 -2252.65199646
+9 4 s4/3 -2590.48954693
+9 4 s4/6 -3289.80948945
+9 4 s4/8 -2569.14238439
+9 4 s4/10 -2649.76082109
+9 7 s7/1 -3300.80205386
+9 7 s7/3 -3384.85442682
+9 7 s7/6 -3308.89117021
+9 7 s7/8 -3280.71373687
+9 7 s7/10 -3315.55371503
+9 8 s8/1 -4185.21171568
+9 8 s8/3 -3634.51475298
+9 8 s8/6 -4019.79386655
+9 8 s8/8 -3900.67066506
+9 8 s8/10 -3532.26591473
+9 9 s9/1 -1232.98008048
+9 9 s9/3 -1256.06667593
+9 9 s9/6 -1764.52243494
+9 9 s9/8 -1447.87853552
+9 9 s9/10 -1789.71184484
+9 13 s13/1 -4619.25396528
+9 13 s13/3 -5175.65502321
+9 13 s13/6 -4272.85697332
+9 13 s13/8 -4553.62609701
+9 13 s13/10 -4244.44673611
+9 15 s15/1 -3454.43840637
+9 15 s15/3 -3439.87009412
+9 15 s15/6 -3578.29135252
+9 15 s15/8 -3440.83204868
+9 15 s15/10 -2665.60947707
+9 18 s18/1 -4148.87008937
+9 18 s18/3 -4109.69400345
+9 18 s18/6 -4091.07132553
+9 18 s18/8 -4208.3489515
+9 18 s18/10 -3757.36612039
+9 19 s19/1 -4807.20953164
+9 19 s19/3 -5347.47059831
+9 19 s19/6 -5037.02683897
+9 19 s19/8 -5158.78820124
+9 19 s19/10 -4623.00188
+9 22 s22/1 -4154.24807601
+9 22 s22/3 -3844.22286129
+9 22 s22/6 -4415.27940247
+9 22 s22/8 -4209.98015364
+9 22 s22/10 -4700.9501879
+9 23 s23/1 -2403.64952559
+9 23 s23/3 -2965.62721504
+9 23 s23/6 -2970.82455651
+9 23 s23/8 -2439.9060999
+9 23 s23/10 -2362.75062609
+9 25 s25/1 -2186.76811782
+9 25 s25/3 -2250.01746741
+9 25 s25/6 -2913.21012077
+9 25 s25/8 -3486.83051857
+9 25 s25/10 -2463.4559735
+9 28 s28/1 -4918.87479674
+9 28 s28/3 -4681.85746463
+9 28 s28/6 -4617.28665292
+9 28 s28/8 -4548.91590351
+9 28 s28/10 -4964.8811564
+9 30 s30/1 -2468.85347323
+9 30 s30/3 -2684.22105025
+9 30 s30/6 -2352.19611749
+9 30 s30/8 -3203.79571838
+9 30 s30/10 -2589.19072649
+9 31 s31/1 -1990.71715309
+9 31 s31/3 -4574.3250072
+9 31 s31/6 -2638.76143027
+9 31 s31/8 -2136.9668398
+9 31 s31/10 -4586.19479594
+9 32 s32/1 -4540.36181713
+9 32 s32/3 -4868.08338276
+9 32 s32/6 -4037.78030625
+9 32 s32/8 -4490.67607519
+9 32 s32/10 -3923.63980576
+9 35 s35/1 -3121.69389479
+9 35 s35/3 -3916.72829133
+9 35 s35/6 -3123.62025962
+9 35 s35/8 -2480.64668786
+9 35 s35/10 -3432.45445572
+9 37 s37/1 -4479.69370996
+9 37 s37/3 -4742.56540091
+9 37 s37/6 -4993.89089683
+9 37 s37/8 -4566.20131271
+9 37 s37/10 -4537.43975603
+9 38 s38/1 -2505.17244521
+9 38 s38/3 -2707.94431745
+9 38 s38/6 -2761.29272417
+9 38 s38/8 -2263.62593044
+9 38 s38/10 -2398.09045021
+9 40 s40/1 -2928.99104151
+9 40 s40/3 -3022.18661213
+9 40 s40/6 -2909.42717431
+9 40 s40/8 -2900.50106801
+9 40 s40/10 -3514.24554484
+13 3 s3/1 -3202.38137554
+13 3 s3/3 -3308.2248404
+13 3 s3/6 -3501.44047001
+13 3 s3/8 -3262.35823784
+13 3 s3/10 -3444.20525571
+13 4 s4/1 -3649.59387841
+13 4 s4/3 -3390.63212187
+13 4 s4/6 -3246.33460094
+13 4 s4/8 -3342.89496156
+13 4 s4/10 -4299.54590767
+13 7 s7/1 -4715.98664504
+13 7 s7/3 -4609.27291027
+13 7 s7/6 -4422.0260616
+13 7 s7/8 -4722.80244759
+13 7 s7/10 -4029.53815479
+13 8 s8/1 -4670.41935822
+13 8 s8/3 -4525.99460014
+13 8 s8/6 -4406.83573849
+13 8 s8/8 -4474.32175203
+13 8 s8/10 -4572.86719878
+13 9 s9/1 -4637.22294275
+13 9 s9/3 -4500.651687
+13 9 s9/6 -4463.61015407
+13 9 s9/8 -4243.16691824
+13 9 s9/10 -4572.15435639
+13 13 s13/1 -1025.77704523
+13 13 s13/3 -1783.98005114
+13 13 s13/6 -1558.11784716
+13 13 s13/8 -1039.99583084
+13 13 s13/10 -703.448590077
+13 15 s15/1 -4038.32937849
+13 15 s15/3 -4158.46410153
+13 15 s15/6 -3796.56417856
+13 15 s15/8 -4429.3755221
+13 15 s15/10 -3585.52994631
+13 18 s18/1 -2812.99173883
+13 18 s18/3 -1891.55964525
+13 18 s18/6 -2035.67549695
+13 18 s18/8 -1978.19724817
+13 18 s18/10 -2499.42504522
+13 19 s19/1 -3567.82071157
+13 19 s19/3 -3234.31779564
+13 19 s19/6 -3159.33639979
+13 19 s19/8 -3323.52201903
+13 19 s19/10 -3551.06114754
+13 22 s22/1 -5414.57148439
+13 22 s22/3 -5371.51231446
+13 22 s22/6 -5895.08586155
+13 22 s22/8 -5541.10555282
+13 22 s22/10 -5289.97985403
+13 23 s23/1 -4783.79443316
+13 23 s23/3 -5184.20935404
+13 23 s23/6 -4767.83616152
+13 23 s23/8 -5121.71712236
+13 23 s23/10 -4559.26698216
+13 25 s25/1 -3377.53134774
+13 25 s25/3 -3115.54927275
+13 25 s25/6 -2950.2693355
+13 25 s25/8 -2610.67305436
+13 25 s25/10 -3284.9945593
+13 28 s28/1 -2818.43584739
+13 28 s28/3 -2939.87837017
+13 28 s28/6 -2959.54612292
+13 28 s28/8 -3249.15642063
+13 28 s28/10 -2605.52287392
+13 30 s30/1 -5339.28315308
+13 30 s30/3 -5611.91473319
+13 30 s30/6 -5330.75403669
+13 30 s30/8 -5777.47373497
+13 30 s30/10 -5300.57333828
+13 31 s31/1 -5210.82295907
+13 31 s31/3 -4412.76465696
+13 31 s31/6 -4441.92121769
+13 31 s31/8 -4896.76699795
+13 31 s31/10 -4488.13181919
+13 32 s32/1 -3150.51061775
+13 32 s32/3 -3159.71478883
+13 32 s32/6 -3334.54053001
+13 32 s32/8 -3056.73154297
+13 32 s32/10 -3413.7973795
+13 35 s35/1 -3886.54628516
+13 35 s35/3 -3043.08940014
+13 35 s35/6 -2749.45139543
+13 35 s35/8 -3165.90623178
+13 35 s35/10 -3046.81538122
+13 37 s37/1 -2678.74294941
+13 37 s37/3 -2658.9158326
+13 37 s37/6 -3609.67071608
+13 37 s37/8 -3538.43631387
+13 37 s37/10 -2501.21295259
+13 38 s38/1 -4953.92150692
+13 38 s38/3 -4742.48319921
+13 38 s38/6 -5178.55887189
+13 38 s38/8 -5038.90368513
+13 38 s38/10 -4841.33560269
+13 40 s40/1 -2809.70264194
+13 40 s40/3 -3157.01332876
+13 40 s40/6 -2927.3338441
+13 40 s40/8 -2688.96600375
+13 40 s40/10 -3069.88991179
+15 3 s3/1 -2580.30354292
+15 3 s3/3 -2834.29603042
+15 3 s3/6 -2759.19839368
+15 3 s3/8 -2783.20695581
+15 3 s3/10 -3143.83963287
+15 4 s4/1 -2202.64057116
+15 4 s4/3 -2301.81039791
+15 4 s4/6 -3097.5947528
+15 4 s4/8 -2350.44748544
+15 4 s4/10 -3349.64729233
+15 7 s7/1 -3311.13835445
+15 7 s7/3 -3267.20955526
+15 7 s7/6 -2929.4992405
+15 7 s7/8 -3137.60235246
+15 7 s7/10 -3259.5085004
+15 8 s8/1 -3351.22118121
+15 8 s8/3 -3589.75913922
+15 8 s8/6 -3772.85395682
+15 8 s8/8 -3625.2943284
+15 8 s8/10 -3654.16304296
+15 9 s9/1 -2915.57607571
+15 9 s9/3 -2894.11208415
+15 9 s9/6 -2772.64507605
+15 9 s9/8 -2588.56558412
+15 9 s9/10 -3200.31211964
+15 13 s13/1 -3586.37478927
+15 13 s13/3 -3774.84487141
+15 13 s13/6 -3542.40649551
+15 13 s13/8 -3742.37638037
+15 13 s13/10 -3370.21784657
+15 15 s15/1 -2402.53690896
+15 15 s15/3 -2367.48473176
+15 15 s15/6 -2374.53446452
+15 15 s15/8 -2022.0055133
+15 15 s15/10 -969.500884681
+15 18 s18/1 -3871.88457482
+15 18 s18/3 -3148.77140084
+15 18 s18/6 -3291.11248654
+15 18 s18/8 -3218.72499924
+15 18 s18/10 -3401.64969692
+15 19 s19/1 -3757.87263186
+15 19 s19/3 -4112.05649595
+15 19 s19/6 -3812.79868872
+15 19 s19/8 -4000.182565
+15 19 s19/10 -3583.69493135
+15 22 s22/1 -3195.0359962
+15 22 s22/3 -3028.62720878
+15 22 s22/6 -3498.44994816
+15 22 s22/8 -3283.34848436
+15 22 s22/10 -3446.01197175
+15 23 s23/1 -3070.25974401
+15 23 s23/3 -3390.20344442
+15 23 s23/6 -2932.20788748
+15 23 s23/8 -3571.3765668
+15 23 s23/10 -2954.78677002
+15 25 s25/1 -2611.29833149
+15 25 s25/3 -2829.31199376
+15 25 s25/6 -2714.51118348
+15 25 s25/8 -2870.18228171
+15 25 s25/10 -2864.16113222
+15 28 s28/1 -3753.4390575
+15 28 s28/3 -3623.60109655
+15 28 s28/6 -3554.51786063
+15 28 s28/8 -4121.24848957
+15 28 s28/10 -3803.49807022
+15 30 s30/1 -2649.16787496
+15 30 s30/3 -2898.3050272
+15 30 s30/6 -2667.58480765
+15 30 s30/8 -3007.14301998
+15 30 s30/10 -2629.9532381
+15 31 s31/1 -2816.97617563
+15 31 s31/3 -3076.41676091
+15 31 s31/6 -2482.64472589
+15 31 s31/8 -2679.15146696
+15 31 s31/10 -3032.7179238
+15 32 s32/1 -3455.24452617
+15 32 s32/3 -3442.20655852
+15 32 s32/6 -2990.03785573
+15 32 s32/8 -3263.88075526
+15 32 s32/10 -2841.40823188
+15 35 s35/1 -2748.56316738
+15 35 s35/3 -2025.04895307
+15 35 s35/6 -2608.84048224
+15 35 s35/8 -2225.51881792
+15 35 s35/10 -2699.40465375
+15 37 s37/1 -3776.23292984
+15 37 s37/3 -3875.69905416
+15 37 s37/6 -3703.36249652
+15 37 s37/8 -3265.46678469
+15 37 s37/10 -3826.94635927
+15 38 s38/1 -3084.26750791
+15 38 s38/3 -2851.27680759
+15 38 s38/6 -3295.81461978
+15 38 s38/8 -3172.81880218
+15 38 s38/10 -2947.70788332
+15 40 s40/1 -2943.88908446
+15 40 s40/3 -3270.57500985
+15 40 s40/6 -3019.89230379
+15 40 s40/8 -2933.41439825
+15 40 s40/10 -2891.00228583
+18 3 s3/1 -2956.0754384
+18 3 s3/3 -2753.84726042
+18 3 s3/6 -3202.07741089
+18 3 s3/8 -3223.11593887
+18 3 s3/10 -2672.34954412
+18 4 s4/1 -3433.27996686
+18 4 s4/3 -3560.49800004
+18 4 s4/6 -3365.12571015
+18 4 s4/8 -3343.40806464
+18 4 s4/10 -3335.1372178
+18 7 s7/1 -4104.2010016
+18 7 s7/3 -3962.80832438
+18 7 s7/6 -3984.14020527
+18 7 s7/8 -4326.38507592
+18 7 s7/10 -3257.72684289
+18 8 s8/1 -4836.19576879
+18 8 s8/3 -4152.65556388
+18 8 s8/6 -4134.79509243
+18 8 s8/8 -4138.08421509
+18 8 s8/10 -4040.64411074
+18 9 s9/1 -4398.74565735
+18 9 s9/3 -4257.16821011
+18 9 s9/6 -4452.68844392
+18 9 s9/8 -3882.39685689
+18 9 s9/10 -3796.72563078
+18 13 s13/1 -2740.04630919
+18 13 s13/3 -3060.0403958
+18 13 s13/6 -1630.54131366
+18 13 s13/8 -2421.86464267
+18 13 s13/10 -1997.96008334
+18 15 s15/1 -3876.18244178
+18 15 s15/3 -4022.47338995
+18 15 s15/6 -3795.16118689
+18 15 s15/8 -4223.76072291
+18 15 s15/10 -3537.02525272
+18 18 s18/1 -1368.23821308
+18 18 s18/3 -2066.23727685
+18 18 s18/6 -1587.61885353
+18 18 s18/8 -1839.87833423
+18 18 s18/10 -1990.61368518
+18 19 s19/1 -4252.46720452
+18 19 s19/3 -4139.21533354
+18 19 s19/6 -4281.91841669
+18 19 s19/8 -4104.2220241
+18 19 s19/10 -4395.90138652
+18 22 s22/1 -5777.64079119
+18 22 s22/3 -5629.23262098
+18 22 s22/6 -6322.34503807
+18 22 s22/8 -5891.32768241
+18 22 s22/10 -5932.51211239
+18 23 s23/1 -4440.91979543
+18 23 s23/3 -4879.48453038
+18 23 s23/6 -4783.21865357
+18 23 s23/8 -4380.11974451
+18 23 s23/10 -4314.32765436
+18 25 s25/1 -2878.87604183
+18 25 s25/3 -2601.15384147
+18 25 s25/6 -2763.80042895
+18 25 s25/8 -3275.1127543
+18 25 s25/10 -2710.48883585
+18 28 s28/1 -3883.4795926
+18 28 s28/3 -4014.70519937
+18 28 s28/6 -3864.86883847
+18 28 s28/8 -3617.13881658
+18 28 s28/10 -3927.90765349
+18 30 s30/1 -4917.40113865
+18 30 s30/3 -5253.20232186
+18 30 s30/6 -4902.57477108
+18 30 s30/8 -5610.87560505
+18 30 s30/10 -5071.17081244
+18 31 s31/1 -4970.03856356
+18 31 s31/3 -4780.61996987
+18 31 s31/6 -4481.51880791
+18 31 s31/8 -4749.72667526
+18 31 s31/10 -4752.82800544
+18 32 s32/1 -2884.34375405
+18 32 s32/3 -3357.01185028
+18 32 s32/6 -3294.4650071
+18 32 s32/8 -3358.04252319
+18 32 s32/10 -3465.1118564
+18 35 s35/1 -4054.0884318
+18 35 s35/3 -3541.25317234
+18 35 s35/6 -2447.59004413
+18 35 s35/8 -2683.93015099
+18 35 s35/10 -2927.94916434
+18 37 s37/1 -3388.73624303
+18 37 s37/3 -3528.1627107
+18 37 s37/6 -4547.2080635
+18 37 s37/8 -4411.99514613
+18 37 s37/10 -3340.94174374
+18 38 s38/1 -4926.36256402
+18 38 s38/3 -4839.07834759
+18 38 s38/6 -5135.8908713
+18 38 s38/8 -4499.47476968
+18 38 s38/10 -4760.28286303
+18 40 s40/1 -2584.2597622
+18 40 s40/3 -2220.28936413
+18 40 s40/6 -3041.32775422
+18 40 s40/8 -2592.87675242
+18 40 s40/10 -3699.5280574
+19 3 s3/1 -4005.79246239
+19 3 s3/3 -4118.92914119
+19 3 s3/6 -3833.14889994
+19 3 s3/8 -3715.575243
+19 3 s3/10 -3939.12020766
+19 4 s4/1 -3860.16054019
+19 4 s4/3 -3381.42907685
+19 4 s4/6 -2945.51696829
+19 4 s4/8 -3243.10737747
+19 4 s4/10 -4452.30579568
+19 7 s7/1 -4507.31651077
+19 7 s7/3 -4382.64231377
+19 7 s7/6 -4072.18663786
+19 7 s7/8 -4514.54034327
+19 7 s7/10 -4232.66998104
+19 8 s8/1 -3990.13253476
+19 8 s8/3 -3726.14317857
+19 8 s8/6 -3455.3955025
+19 8 s8/8 -3531.65964868
+19 8 s8/10 -3811.69795385
+19 9 s9/1 -4804.84536787
+19 9 s9/3 -4630.67492625
+19 9 s9/6 -4542.81319946
+19 9 s9/8 -4591.6733388
+19 9 s9/10 -4912.24892349
+19 13 s13/1 -3408.93242688
+19 13 s13/3 -3636.10644374
+19 13 s13/6 -3575.5230924
+19 13 s13/8 -3289.4655635
+19 13 s13/10 -3252.51422672
+19 15 s15/1 -2502.05494556
+19 15 s15/3 -2560.5900693
+19 15 s15/6 -2174.31152183
+19 15 s15/8 -3363.01313433
+19 15 s15/10 -4132.71151481
+19 18 s18/1 -4098.47532505
+19 18 s18/3 -3791.90925274
+19 18 s18/6 -3671.29856609
+19 18 s18/8 -3836.71681672
+19 18 s18/10 -4058.53157732
+19 19 s19/1 -1655.10609509
+19 19 s19/3 -1856.32442417
+19 19 s19/6 -1981.77662831
+19 19 s19/8 -1523.05351521
+19 19 s19/10 -1793.32063537
+19 22 s22/1 -4542.93709979
+19 22 s22/3 -4635.20062189
+19 22 s22/6 -5138.72256328
+19 22 s22/8 -4765.76162168
+19 22 s22/10 -4569.45199841
+19 23 s23/1 -5065.46201531
+19 23 s23/3 -5420.00135699
+19 23 s23/6 -5058.84946146
+19 23 s23/8 -5477.31680922
+19 23 s23/10 -4714.11885335
+19 25 s25/1 -4100.03600349
+19 25 s25/3 -3788.16763441
+19 25 s25/6 -3668.54705235
+19 25 s25/8 -3174.69288854
+19 25 s25/10 -3891.93512538
+19 28 s28/1 -3672.44822887
+19 28 s28/3 -3812.86840783
+19 28 s28/6 -3780.88145851
+19 28 s28/8 -4165.96288079
+19 28 s28/10 -3337.29227785
+19 30 s30/1 -5068.60509747
+19 30 s30/3 -5434.14163217
+19 30 s30/6 -5091.08219443
+19 30 s30/8 -5324.80076583
+19 30 s30/10 -4972.50450074
+19 31 s31/1 -5305.66141746
+19 31 s31/3 -3515.22861155
+19 31 s31/6 -4189.50566417
+19 31 s31/8 -4843.40808253
+19 31 s31/10 -3660.63476966
+19 32 s32/1 -2757.87174686
+19 32 s32/3 -2711.40948091
+19 32 s32/6 -2238.58130064
+19 32 s32/8 -2184.17893198
+19 32 s32/10 -2245.49686462
+19 35 s35/1 -4935.13588897
+19 35 s35/3 -3622.32708653
+19 35 s35/6 -3149.32892904
+19 35 s35/8 -3679.30587397
+19 35 s35/10 -3981.87228096
+19 37 s37/1 -4190.64319758
+19 37 s37/3 -4273.59867669
+19 37 s37/6 -3188.35987423
+19 37 s37/8 -2939.93025623
+19 37 s37/10 -3739.14927102
+19 38 s38/1 -5132.75426835
+19 38 s38/3 -4887.07661704
+19 38 s38/6 -5341.51844801
+19 38 s38/8 -5280.0711527
+19 38 s38/10 -5097.22377921
+19 40 s40/1 -4408.92556724
+19 40 s40/3 -4593.0477807
+19 40 s40/6 -4322.70610622
+19 40 s40/8 -4277.09971507
+19 40 s40/10 -4340.68119243
+22 3 s3/1 -4013.83712581
+22 3 s3/3 -4245.36091725
+22 3 s3/6 -4722.0005028
+22 3 s3/8 -4557.14551599
+22 3 s3/10 -4681.20048979
+22 4 s4/1 -3972.68768043
+22 4 s4/3 -3803.29638751
+22 4 s4/6 -4846.51452184
+22 4 s4/8 -3932.32391055
+22 4 s4/10 -4979.62265907
+22 7 s7/1 -4500.57252797
+22 7 s7/3 -4711.79647694
+22 7 s7/6 -4246.06155028
+22 7 s7/8 -4473.03310168
+22 7 s7/10 -4771.9361284
+22 8 s8/1 -4808.75178772
+22 8 s8/3 -5343.98374147
+22 8 s8/6 -5345.90674104
+22 8 s8/8 -5506.97670535
+22 8 s8/10 -5362.94961502
+22 9 s9/1 -3961.80579929
+22 9 s9/3 -3938.10362431
+22 9 s9/6 -4430.72639074
+22 9 s9/8 -4573.51790429
+22 9 s9/10 -4746.78613148
+22 13 s13/1 -5118.0573909
+22 13 s13/3 -5607.88818019
+22 13 s13/6 -5450.28639594
+22 13 s13/8 -5618.92461221
+22 13 s13/10 -5269.30155745
+22 15 s15/1 -3288.79672215
+22 15 s15/3 -3155.55321591
+22 15 s15/6 -3290.84168107
+22 15 s15/8 -3060.21058005
+22 15 s15/10 -3611.64723744
+22 18 s18/1 -6041.21843213
+22 18 s18/3 -5627.85835651
+22 18 s18/6 -5861.88863557
+22 18 s18/8 -5749.26554893
+22 18 s18/10 -6014.4979931
+22 19 s19/1 -4535.04894157
+22 19 s19/3 -5014.09830014
+22 19 s19/6 -4377.88594459
+22 19 s19/8 -4849.96254847
+22 19 s19/10 -4155.11215747
+22 22 s22/1 -515.267348009
+22 22 s22/3 -948.789791163
+22 22 s22/6 -1236.73608805
+22 22 s22/8 -703.084336005
+22 22 s22/10 -974.100293608
+22 23 s23/1 -4848.46219366
+22 23 s23/3 -4427.04439093
+22 23 s23/6 -4246.68145015
+22 23 s23/8 -4982.13108183
+22 23 s23/10 -4667.97047257
+22 25 s25/1 -4786.34227314
+22 25 s25/3 -4911.21676656
+22 25 s25/6 -4626.34028371
+22 25 s25/8 -4656.62335836
+22 25 s25/10 -4872.79827361
+22 28 s28/1 -4443.72189883
+22 28 s28/3 -4186.33599304
+22 28 s28/6 -4236.66798511
+22 28 s28/8 -4657.9993282
+22 28 s28/10 -4475.19769706
+22 30 s30/1 -3498.14355065
+22 30 s30/3 -3666.29410946
+22 30 s30/6 -3665.83521491
+22 30 s30/8 -3217.52750188
+22 30 s30/10 -3434.77055482
+22 31 s31/1 -3556.91714853
+22 31 s31/3 -3458.06518471
+22 31 s31/6 -3016.7938301
+22 31 s31/8 -3298.13128919
+22 31 s31/10 -3434.44289401
+22 32 s32/1 -5419.57225464
+22 32 s32/3 -5171.4314143
+22 32 s32/6 -4530.98788336
+22 32 s32/8 -4837.08556526
+22 32 s32/10 -4175.5812598
+22 35 s35/1 -4552.24712413
+22 35 s35/3 -3474.81249522
+22 35 s35/6 -4649.99115585
+22 35 s35/8 -4618.95104803
+22 35 s35/10 -4853.86653993
+22 37 s37/1 -4657.89159791
+22 37 s37/3 -4753.32433721
+22 37 s37/6 -3407.21749321
+22 37 s37/8 -2896.36740895
+22 37 s37/10 -4695.07449402
+22 38 s38/1 -4441.09611284
+22 38 s38/3 -3904.35113202
+22 38 s38/6 -4643.11936678
+22 38 s38/8 -4656.44212352
+22 38 s38/10 -4053.67652122
+22 40 s40/1 -4775.90517716
+22 40 s40/3 -5412.87280174
+22 40 s40/6 -4934.41367373
+22 40 s40/8 -4823.481109
+22 40 s40/10 -4752.20632024
+23 3 s3/1 -3065.793728
+23 3 s3/3 -3304.1012835
+23 3 s3/6 -2697.94897454
+23 3 s3/8 -2973.96709773
+23 3 s3/10 -3566.87643249
+23 4 s4/1 -3094.90242262
+23 4 s4/3 -3411.1778258
+23 4 s4/6 -3857.43636003
+23 4 s4/8 -3478.50057655
+23 4 s4/10 -3162.81838569
+23 7 s7/1 -2970.79992083
+23 7 s7/3 -3061.24569793
+23 7 s7/6 -3027.32222561
+23 7 s7/8 -2632.47938729
+23 7 s7/10 -3661.11323529
+23 8 s8/1 -4030.10186955
+23 8 s8/3 -4046.05381812
+23 8 s8/6 -4444.70155607
+23 8 s8/8 -4195.29697767
+23 8 s8/10 -3971.18744652
+23 9 s9/1 -2465.22492143
+23 9 s9/3 -2631.16651264
+23 9 s9/6 -2331.92162879
+23 9 s9/8 -2595.47426281
+23 9 s9/10 -3109.15007245
+23 13 s13/1 -4925.13286069
+23 13 s13/3 -5261.47692111
+23 13 s13/6 -4728.2214681
+23 13 s13/8 -4804.98067266
+23 13 s13/10 -4585.90879842
+23 15 s15/1 -3513.75609217
+23 15 s15/3 -3547.3463239
+23 15 s15/6 -3652.02243904
+23 15 s15/8 -3701.23646049
+23 15 s15/10 -2773.22918254
+23 18 s18/1 -4497.83217492
+23 18 s18/3 -4301.17531852
+23 18 s18/6 -4468.58853409
+23 18 s18/8 -4424.05826795
+23 18 s18/10 -4098.27151373
+23 19 s19/1 -5223.28531335
+23 19 s19/3 -5610.25680194
+23 19 s19/6 -5351.32214373
+23 19 s19/8 -5291.98946574
+23 19 s19/10 -5051.51557636
+23 22 s22/1 -4207.6908045
+23 22 s22/3 -4053.78539765
+23 22 s22/6 -4258.27826468
+23 22 s22/8 -4411.93016966
+23 22 s22/10 -4706.94088805
+23 23 s23/1 -1879.51262825
+23 23 s23/3 -1794.12311521
+23 23 s23/6 -1253.49476703
+23 23 s23/8 -1932.52036884
+23 23 s23/10 -1955.91394431
+23 25 s25/1 -3123.01825674
+23 25 s25/3 -3316.35999994
+23 25 s25/6 -3614.98555187
+23 25 s25/8 -3803.60236161
+23 25 s25/10 -3402.73744394
+23 28 s28/1 -5279.40944257
+23 28 s28/3 -5064.11538426
+23 28 s28/6 -5055.93827636
+23 28 s28/8 -5065.31467415
+23 28 s28/10 -5178.60269835
+23 30 s30/1 -2554.16599194
+23 30 s30/3 -2376.32433571
+23 30 s30/6 -2383.73666842
+23 30 s30/8 -3071.95287764
+23 30 s30/10 -2516.99715024
+23 31 s31/1 -2762.73930966
+23 31 s31/3 -4528.00262345
+23 31 s31/6 -3396.31487831
+23 31 s31/8 -3130.10792911
+23 31 s31/10 -4470.28306039
+23 32 s32/1 -4537.19613397
+23 32 s32/3 -4949.68831805
+23 32 s32/6 -4004.08246528
+23 32 s32/8 -4583.91867321
+23 32 s32/10 -3911.71276254
+23 35 s35/1 -3178.23727789
+23 35 s35/3 -4169.62277632
+23 35 s35/6 -3801.6848293
+23 35 s35/8 -3398.16793702
+23 35 s35/10 -3728.28743801
+23 37 s37/1 -5014.94351534
+23 37 s37/3 -5172.0063639
+23 37 s37/6 -5156.52421938
+23 37 s37/8 -4788.3829074
+23 37 s37/10 -5104.5348761
+23 38 s38/1 -1880.96858467
+23 38 s38/3 -2573.59823519
+23 38 s38/6 -1714.16722371
+23 38 s38/8 -2167.66742222
+23 38 s38/10 -1955.26863906
+23 40 s40/1 -3445.08418791
+23 40 s40/3 -3641.3180666
+23 40 s40/6 -3453.03156199
+23 40 s40/8 -3560.2184106
+23 40 s40/10 -3218.5535354
+25 3 s3/1 -2329.44030111
+25 3 s3/3 -2840.82679839
+25 3 s3/6 -2617.51310471
+25 3 s3/8 -2589.40533444
+25 3 s3/10 -3131.96090955
+25 4 s4/1 -2341.42599985
+25 4 s4/3 -2138.24343048
+25 4 s4/6 -2588.53367105
+25 4 s4/8 -2112.51058765
+25 4 s4/10 -3405.71001087
+25 7 s7/1 -4405.81440483
+25 7 s7/3 -4315.60479214
+25 7 s7/6 -4059.91436578
+25 7 s7/8 -4347.02735436
+25 7 s7/10 -4085.14799994
+25 8 s8/1 -3964.4355233
+25 8 s8/3 -3848.83262637
+25 8 s8/6 -3972.95654206
+25 8 s8/8 -3711.48917503
+25 8 s8/10 -3858.17849827
+25 9 s9/1 -3333.50104347
+25 9 s9/3 -3143.60390272
+25 9 s9/6 -3055.56925526
+25 9 s9/8 -2993.60713502
+25 9 s9/10 -3472.42961378
+25 13 s13/1 -2481.39989591
+25 13 s13/3 -3310.77716289
+25 13 s13/6 -2880.99606547
+25 13 s13/8 -2766.27796515
+25 13 s13/10 -2532.27222606
+25 15 s15/1 -3279.68222934
+25 15 s15/3 -3377.99742875
+25 15 s15/6 -3150.34334081
+25 15 s15/8 -3544.02251423
+25 15 s15/10 -2544.41193594
+25 18 s18/1 -3428.56105084
+25 18 s18/3 -2314.42745202
+25 18 s18/6 -2886.36192677
+25 18 s18/8 -2545.05739956
+25 18 s18/10 -2908.12292822
+25 19 s19/1 -3343.86910217
+25 19 s19/3 -3543.28909774
+25 19 s19/6 -3365.40096021
+25 19 s19/8 -3876.75857854
+25 19 s19/10 -3189.69426311
+25 22 s22/1 -4304.68450911
+25 22 s22/3 -4163.02903211
+25 22 s22/6 -4817.65197756
+25 22 s22/8 -4451.18722857
+25 22 s22/10 -4471.29497265
+25 23 s23/1 -3794.61832674
+25 23 s23/3 -4168.8206655
+25 23 s23/6 -3523.84366372
+25 23 s23/8 -4313.06370365
+25 23 s23/10 -3608.02088704
+25 25 s25/1 -1838.60862847
+25 25 s25/3 -1782.56863456
+25 25 s25/6 -1216.40330853
+25 25 s25/8 -1750.899971
+25 25 s25/10 -1838.89845752
+25 28 s28/1 -3634.10212113
+25 28 s28/3 -3424.76087525
+25 28 s28/6 -3470.36152622
+25 28 s28/8 -3840.14976053
+25 28 s28/10 -3294.02273488
+25 30 s30/1 -3732.82801593
+25 30 s30/3 -4034.50397355
+25 30 s30/6 -3895.80456991
+25 30 s30/8 -4159.03526867
+25 30 s30/10 -3659.54249067
+25 31 s31/1 -3770.18624237
+25 31 s31/3 -3487.74961013
+25 31 s31/6 -2903.11810446
+25 31 s31/8 -3406.07700979
+25 31 s31/10 -3491.37591069
+25 32 s32/1 -3090.8704628
+25 32 s32/3 -2982.2893244
+25 32 s32/6 -2928.50863376
+25 32 s32/8 -2970.6854678
+25 32 s32/10 -2948.27100708
+25 35 s35/1 -3170.61334149
+25 35 s35/3 -2696.64961689
+25 35 s35/6 -1972.04360821
+25 35 s35/8 -2161.00210149
+25 35 s35/10 -3099.22511213
+25 37 s37/1 -3605.089065
+25 37 s37/3 -3797.33965343
+25 37 s37/6 -3754.47967655
+25 37 s37/8 -3353.7051036
+25 37 s37/10 -3503.75382349
+25 38 s38/1 -3641.71938148
+25 38 s38/3 -3350.24606883
+25 38 s38/6 -3906.65418999
+25 38 s38/8 -3910.46997475
+25 38 s38/10 -3809.94789038
+25 40 s40/1 -2884.1708444
+25 40 s40/3 -3383.93941208
+25 40 s40/6 -2857.00240553
+25 40 s40/8 -2697.34629589
+25 40 s40/10 -2657.30514148
+28 3 s3/1 -3343.13203827
+28 3 s3/3 -3479.74879865
+28 3 s3/6 -3647.43620707
+28 3 s3/8 -3523.3625319
+28 3 s3/10 -3513.08010005
+28 4 s4/1 -3536.27254189
+28 4 s4/3 -3179.88974284
+28 4 s4/6 -3287.28292174
+28 4 s4/8 -3081.13132712
+28 4 s4/10 -4084.05996736
+28 7 s7/1 -4099.21523338
+28 7 s7/3 -4161.40756193
+28 7 s7/6 -3784.13515954
+28 7 s7/8 -4253.64258383
+28 7 s7/10 -3818.67816343
+28 8 s8/1 -4332.70279236
+28 8 s8/3 -4307.15653445
+28 8 s8/6 -4173.91805596
+28 8 s8/8 -4294.37274636
+28 8 s8/10 -4255.55759304
+28 9 s9/1 -4363.99319121
+28 9 s9/3 -4119.6475689
+28 9 s9/6 -4347.27499476
+28 9 s9/8 -4355.09835002
+28 9 s9/10 -4454.41667374
+28 13 s13/1 -3427.68004988
+28 13 s13/3 -3894.83224322
+28 13 s13/6 -3518.23779878
+28 13 s13/8 -3597.2422859
+28 13 s13/10 -3331.20191065
+28 15 s15/1 -2323.51302233
+28 15 s15/3 -2362.00431219
+28 15 s15/6 -2125.98012646
+28 15 s15/8 -3053.4200304
+28 15 s15/10 -3712.17094447
+28 18 s18/1 -4130.08684075
+28 18 s18/3 -3912.59060716
+28 18 s18/6 -3915.74148171
+28 18 s18/8 -3952.48281946
+28 18 s18/10 -4313.03277019
+28 19 s19/1 -2330.25832055
+28 19 s19/3 -2587.91598855
+28 19 s19/6 -2453.72496914
+28 19 s19/8 -2614.40674008
+28 19 s19/10 -2369.94510467
+28 22 s22/1 -3586.97324551
+28 22 s22/3 -3704.40336174
+28 22 s22/6 -4209.35570582
+28 22 s22/8 -3860.98889304
+28 22 s22/10 -3711.03609186
+28 23 s23/1 -4726.31138129
+28 23 s23/3 -4879.52411067
+28 23 s23/6 -4595.7550428
+28 23 s23/8 -4931.96090397
+28 23 s23/10 -4391.21594075
+28 25 s25/1 -3802.92084037
+28 25 s25/3 -3634.05810549
+28 25 s25/6 -3465.07743388
+28 25 s25/8 -3264.71440694
+28 25 s25/10 -3666.63727597
+28 28 s28/1 -2986.81952345
+28 28 s28/3 -3081.51548619
+28 28 s28/6 -2984.96527253
+28 28 s28/8 -3279.0341711
+28 28 s28/10 -2852.94390455
+28 30 s30/1 -4583.97997175
+28 30 s30/3 -4963.26130459
+28 30 s30/6 -4652.29130916
+28 30 s30/8 -4858.98844591
+28 30 s30/10 -4539.14989958
+28 31 s31/1 -4601.00652661
+28 31 s31/3 -3130.82374316
+28 31 s31/6 -3477.47758598
+28 31 s31/8 -4159.77114721
+28 31 s31/10 -3147.93322094
+28 32 s32/1 -3170.92803926
+28 32 s32/3 -3075.19829312
+28 32 s32/6 -2584.91437959
+28 32 s32/8 -2642.44907404
+28 32 s32/10 -2362.34409511
+28 35 s35/1 -4535.74623183
+28 35 s35/3 -3186.07643383
+28 35 s35/6 -3156.70592316
+28 35 s35/8 -3493.69792028
+28 35 s35/10 -3704.77841057
+28 37 s37/1 -3406.47248485
+28 37 s37/3 -3507.23804154
+28 37 s37/6 -2084.05575339
+28 37 s37/8 -1769.18045321
+28 37 s37/10 -3134.97429258
+28 38 s38/1 -4887.38217448
+28 38 s38/3 -4504.3661083
+28 38 s38/6 -5127.43366899
+28 38 s38/8 -4986.48662022
+28 38 s38/10 -4667.74987614
+28 40 s40/1 -3958.09669873
+28 40 s40/3 -4200.01409183
+28 40 s40/6 -4210.01283002
+28 40 s40/8 -3954.86517811
+28 40 s40/10 -4202.50025715
+30 3 s3/1 -3913.00733265
+30 3 s3/3 -4345.05141324
+30 3 s3/6 -4031.3020103
+30 3 s3/8 -4218.16474898
+30 3 s3/10 -4701.93820993
+30 4 s4/1 -3481.8768697
+30 4 s4/3 -3739.48900015
+30 4 s4/6 -4692.20061636
+30 4 s4/8 -3835.0624544
+30 4 s4/10 -4319.02602269
+30 7 s7/1 -4063.53450929
+30 7 s7/3 -4139.64880935
+30 7 s7/6 -4012.38820175
+30 7 s7/8 -3830.81385156
+30 7 s7/10 -4624.7437418
+30 8 s8/1 -4619.44653813
+30 8 s8/3 -4833.26913827
+30 8 s8/6 -5224.74104042
+30 8 s8/8 -4904.41346544
+30 8 s8/10 -4847.99263946
+30 9 s9/1 -2975.73424387
+30 9 s9/3 -3139.78450061
+30 9 s9/6 -3170.31878614
+30 9 s9/8 -3313.98776978
+30 9 s9/10 -3925.41954159
+30 13 s13/1 -5798.30896077
+30 13 s13/3 -6244.65250104
+30 13 s13/6 -5926.20292869
+30 13 s13/8 -6036.52752935
+30 13 s13/10 -5783.59604252
+30 15 s15/1 -3763.88171871
+30 15 s15/3 -3689.04823233
+30 15 s15/6 -3919.43102002
+30 15 s15/8 -3318.33723667
+30 15 s15/10 -3002.84890822
+30 18 s18/1 -5962.32886757
+30 18 s18/3 -5524.26290721
+30 18 s18/6 -5772.92084517
+30 18 s18/8 -5592.16865828
+30 18 s18/10 -5499.46776906
+30 19 s19/1 -5471.7855931
+30 19 s19/3 -6047.05163418
+30 19 s19/6 -5699.94451026
+30 19 s19/8 -5979.04374791
+30 19 s19/10 -5254.62480286
+30 22 s22/1 -3146.86740793
+30 22 s22/3 -2879.21295297
+30 22 s22/6 -3061.91597599
+30 22 s22/8 -3258.40420461
+30 22 s22/10 -3761.46166507
+30 23 s23/1 -3375.6338731
+30 23 s23/3 -2978.92747129
+30 23 s23/6 -2705.31036504
+30 23 s23/8 -3598.22134369
+30 23 s23/10 -3394.24856588
+30 25 s25/1 -4041.15819454
+30 25 s25/3 -4297.37052267
+30 25 s25/6 -4308.49765575
+30 25 s25/8 -4652.21834027
+30 25 s25/10 -4336.26693869
+30 28 s28/1 -6076.53361463
+30 28 s28/3 -5816.51880993
+30 28 s28/6 -5833.38920666
+30 28 s28/8 -6053.47393294
+30 28 s28/10 -5992.22370309
+30 30 s30/1 -1695.33118524
+30 30 s30/3 -1608.11413011
+30 30 s30/6 -1499.75038695
+30 30 s30/8 -825.90900339
+30 30 s30/10 -1437.95656679
+30 31 s31/1 -2356.43835638
+30 31 s31/3 -4055.42384883
+30 31 s31/6 -2919.51134664
+30 31 s31/8 -2633.93536299
+30 31 s31/10 -4006.795115
+30 32 s32/1 -5481.03063405
+30 32 s32/3 -5526.14236159
+30 32 s32/6 -4775.53057542
+30 32 s32/8 -5291.11139842
+30 32 s32/10 -4528.57215715
+30 35 s35/1 -3640.3288671
+30 35 s35/3 -4208.79565148
+30 35 s35/6 -4518.29965451
+30 35 s35/8 -4062.94446209
+30 35 s35/10 -4649.9587983
+30 37 s37/1 -5984.78222918
+30 37 s37/3 -6136.4322262
+30 37 s37/6 -5474.86705904
+30 37 s37/8 -4947.21766845
+30 37 s37/10 -6085.5670564
+30 38 s38/1 -3028.99255218
+30 38 s38/3 -2918.55614479
+30 38 s38/6 -3039.57294451
+30 38 s38/8 -3207.95262708
+30 38 s38/10 -2745.00190154
+30 40 s40/1 -4634.95426544
+30 40 s40/3 -5014.31076122
+30 40 s40/6 -4476.16998797
+30 40 s40/8 -4603.99325218
+30 40 s40/10 -4357.37992428
+31 3 s3/1 -3294.69415772
+31 3 s3/3 -3557.88055283
+31 3 s3/6 -3617.60373216
+31 3 s3/8 -3736.1793475
+31 3 s3/10 -4055.32742762
+31 4 s4/1 -3043.46778458
+31 4 s4/3 -3023.23998174
+31 4 s4/6 -3728.16930154
+31 4 s4/8 -2978.33707274
+31 4 s4/10 -3803.69514613
+31 7 s7/1 -3908.23309344
+31 7 s7/3 -3946.16493716
+31 7 s7/6 -3857.43168016
+31 7 s7/8 -4039.50737097
+31 7 s7/10 -3910.4052828
+31 8 s8/1 -4523.85343244
+31 8 s8/3 -4652.36177247
+31 8 s8/6 -4903.43793328
+31 8 s8/8 -4586.26265549
+31 8 s8/10 -4635.5875901
+31 9 s9/1 -3171.57454251
+31 9 s9/3 -3068.93748052
+31 9 s9/6 -3304.14498655
+31 9 s9/8 -3462.79992375
+31 9 s9/10 -3660.99143487
+31 13 s13/1 -4425.26237254
+31 13 s13/3 -4887.90456047
+31 13 s13/6 -4543.10357587
+31 13 s13/8 -4634.50875902
+31 13 s13/10 -4423.75586687
+31 15 s15/1 -2653.96880799
+31 15 s15/3 -2674.72545803
+31 15 s15/6 -2745.06735481
+31 15 s15/8 -2346.42288294
+31 15 s15/10 -2495.08709261
+31 18 s18/1 -4789.84400569
+31 18 s18/3 -4304.64348271
+31 18 s18/6 -4618.95118142
+31 18 s18/8 -4359.95159701
+31 18 s18/10 -4574.80266252
+31 19 s19/1 -3802.18582905
+31 19 s19/3 -4279.32466407
+31 19 s19/6 -4223.2929879
+31 19 s19/8 -4694.10862641
+31 19 s19/10 -3880.49209192
+31 22 s22/1 -2743.51602101
+31 22 s22/3 -2593.27686403
+31 22 s22/6 -3133.32442951
+31 22 s22/8 -2997.20411043
+31 22 s22/10 -3149.36484519
+31 23 s23/1 -3905.79070148
+31 23 s23/3 -3679.30549599
+31 23 s23/6 -3307.17298559
+31 23 s23/8 -4001.95959155
+31 23 s23/10 -3759.27839067
+31 25 s25/1 -3366.66588954
+31 25 s25/3 -3515.54391224
+31 25 s25/6 -3318.17438283
+31 25 s25/8 -3615.32411462
+31 25 s25/10 -3476.17240873
+31 28 s28/1 -4713.20512491
+31 28 s28/3 -4579.26031206
+31 28 s28/6 -4544.75232505
+31 28 s28/8 -4801.17980935
+31 28 s28/10 -4593.27737246
+31 30 s30/1 -2674.14867654
+31 30 s30/3 -3005.96043866
+31 30 s30/6 -2829.01846893
+31 30 s30/8 -2483.52177124
+31 30 s30/10 -2549.22458936
+31 31 s31/1 -2724.2754152
+31 31 s31/3 -1857.41403824
+31 31 s31/6 -1973.44433813
+31 31 s31/8 -2513.49716235
+31 31 s31/10 -1820.97103732
+31 32 s32/1 -3973.23686415
+31 32 s32/3 -3943.5738161
+31 32 s32/6 -3606.32094631
+31 32 s32/8 -3785.05453983
+31 32 s32/10 -3356.11317668
+31 35 s35/1 -3137.66816407
+31 35 s35/3 -2852.55321543
+31 35 s35/6 -3241.79608545
+31 35 s35/8 -3022.29091214
+31 35 s35/10 -3552.58870649
+31 37 s37/1 -4703.79279182
+31 37 s37/3 -4833.07734018
+31 37 s37/6 -3907.52926699
+31 37 s37/8 -3487.72961561
+31 37 s37/10 -4719.02596974
+31 38 s38/1 -3804.69487163
+31 38 s38/3 -3545.79490704
+31 38 s38/6 -3960.3768924
+31 38 s38/8 -3950.49614872
+31 38 s38/10 -3699.42709121
+31 40 s40/1 -3886.98211706
+31 40 s40/3 -4191.18238079
+31 40 s40/6 -4066.15707928
+31 40 s40/8 -3980.62440027
+31 40 s40/10 -3984.41323747
+32 3 s3/1 -3481.44865816
+32 3 s3/3 -3595.59422267
+32 3 s3/6 -3340.32436965
+32 3 s3/8 -3530.55916379
+32 3 s3/10 -3733.86113116
+32 4 s4/1 -3415.99834875
+32 4 s4/3 -3352.85775891
+32 4 s4/6 -3257.52441401
+32 4 s4/8 -3216.48660203
+32 4 s4/10 -3879.77419768
+32 7 s7/1 -3996.80171914
+32 7 s7/3 -3800.22323738
+32 7 s7/6 -3599.63763993
+32 7 s7/8 -4023.09287769
+32 7 s7/10 -3723.8961306
+32 8 s8/1 -3927.44454704
+32 8 s8/3 -3676.39887399
+32 8 s8/6 -3720.73898374
+32 8 s8/8 -3447.80882094
+32 8 s8/10 -3643.68488641
+32 9 s9/1 -4359.49267419
+32 9 s9/3 -4222.77898444
+32 9 s9/6 -4216.79980363
+32 9 s9/8 -4140.4437327
+32 9 s9/10 -4450.82974639
+32 13 s13/1 -3308.04268181
+32 13 s13/3 -3580.13299752
+32 13 s13/6 -3159.09017895
+32 13 s13/8 -3283.76704583
+32 13 s13/10 -3080.31334708
+32 15 s15/1 -2398.62231509
+32 15 s15/3 -2503.02526136
+32 15 s15/6 -2209.21900396
+32 15 s15/8 -3036.37839137
+32 15 s15/10 -3490.34409742
+32 18 s18/1 -3303.33083543
+32 18 s18/3 -2913.41746349
+32 18 s18/6 -3008.40792755
+32 18 s18/8 -2873.03663611
+32 18 s18/10 -3197.93494951
+32 19 s19/1 -2619.90662239
+32 19 s19/3 -2734.07164667
+32 19 s19/6 -3126.62695763
+32 19 s19/8 -2986.49752003
+32 19 s19/10 -2953.1627146
+32 22 s22/1 -4760.38387621
+32 22 s22/3 -4753.34213918
+32 22 s22/6 -5278.21922142
+32 22 s22/8 -5031.68731869
+32 22 s22/10 -5008.58954608
+32 23 s23/1 -4424.88536858
+32 23 s23/3 -4720.8973672
+32 23 s23/6 -4350.28166904
+32 23 s23/8 -4771.40699913
+32 23 s23/10 -4202.95712702
+32 25 s25/1 -3402.83132332
+32 25 s25/3 -3225.41484415
+32 25 s25/6 -3027.31174396
+32 25 s25/8 -3207.78734977
+32 25 s25/10 -3260.90211767
+32 28 s28/1 -4262.18547504
+32 28 s28/3 -4313.88973205
+32 28 s28/6 -4300.78708628
+32 28 s28/8 -4384.79956853
+32 28 s28/10 -3808.79171646
+32 30 s30/1 -4586.57713103
+32 30 s30/3 -4857.61993231
+32 30 s30/6 -4608.97429863
+32 30 s30/8 -4894.14196906
+32 30 s30/10 -4530.84126705
+32 31 s31/1 -4965.28305801
+32 31 s31/3 -3232.97665263
+32 31 s31/6 -4109.43022166
+32 31 s31/8 -4700.69670199
+32 31 s31/10 -3158.6222623
+32 32 s32/1 -1400.04142319
+32 32 s32/3 -1471.63862249
+32 32 s32/6 -1516.39381803
+32 32 s32/8 -1179.08179137
+32 32 s32/10 -1606.25051683
+32 35 s35/1 -3998.48265398
+32 35 s35/3 -3357.37138441
+32 35 s35/6 -2802.69294465
+32 35 s35/8 -3137.78371976
+32 35 s35/10 -3394.4396583
+32 37 s37/1 -4383.78071256
+32 37 s37/3 -4454.22960435
+32 37 s37/6 -3651.92757765
+32 37 s37/8 -3432.14617407
+32 37 s37/10 -4075.51765463
+32 38 s38/1 -4684.65223915
+32 38 s38/3 -4481.2456882
+32 38 s38/6 -4819.61377814
+32 38 s38/8 -4752.66048128
+32 38 s38/10 -4679.25783168
+32 40 s40/1 -3713.20737165
+32 40 s40/3 -3993.88791391
+32 40 s40/6 -3706.94187692
+32 40 s40/8 -3660.09483497
+32 40 s40/10 -3638.98252641
+35 3 s3/1 -2629.99743718
+35 3 s3/3 -2728.48998423
+35 3 s3/6 -2929.77990244
+35 3 s3/8 -2737.72206345
+35 3 s3/10 -2949.71829906
+35 4 s4/1 -2601.23631638
+35 4 s4/3 -2396.55979124
+35 4 s4/6 -2546.29151109
+35 4 s4/8 -2339.13926292
+35 4 s4/10 -3324.81878496
+35 7 s7/1 -3913.13111744
+35 7 s7/3 -3876.07567135
+35 7 s7/6 -3672.47456635
+35 7 s7/8 -3980.36207192
+35 7 s7/10 -3347.45454423
+35 8 s8/1 -4038.67376066
+35 8 s8/3 -3806.1353599
+35 8 s8/6 -3898.74319573
+35 8 s8/8 -3816.06122627
+35 8 s8/10 -3849.60319515
+35 9 s9/1 -3502.24046593
+35 9 s9/3 -3385.56018459
+35 9 s9/6 -3406.93863815
+35 9 s9/8 -3107.60749355
+35 9 s9/10 -3389.4402753
+35 13 s13/1 -2624.28110155
+35 13 s13/3 -2765.94302571
+35 13 s13/6 -2543.86600788
+35 13 s13/8 -2650.98496007
+35 13 s13/10 -2343.05172093
+35 15 s15/1 -2993.10453694
+35 15 s15/3 -3076.91109514
+35 15 s15/6 -2861.95651434
+35 15 s15/8 -3031.66118545
+35 15 s15/10 -2109.33741856
+35 18 s18/1 -3035.49730933
+35 18 s18/3 -2313.33089252
+35 18 s18/6 -2511.11161463
+35 18 s18/8 -2454.69728093
+35 18 s18/10 -2654.99253428
+35 19 s19/1 -3399.99579481
+35 19 s19/3 -3545.84878311
+35 19 s19/6 -3342.75380654
+35 19 s19/8 -3644.82417017
+35 19 s19/10 -3342.46548391
+35 22 s22/1 -4144.58588782
+35 22 s22/3 -4013.39977843
+35 22 s22/6 -4569.5954763
+35 22 s22/8 -4253.70722731
+35 22 s22/10 -4172.92650511
+35 23 s23/1 -3879.24107414
+35 23 s23/3 -4182.86068514
+35 23 s23/6 -3826.88461692
+35 23 s23/8 -4164.38029282
+35 23 s23/10 -3700.40739818
+35 25 s25/1 -2353.51220217
+35 25 s25/3 -2351.75940108
+35 25 s25/6 -2215.93558444
+35 25 s25/8 -2281.75100329
+35 25 s25/10 -2396.53146639
+35 28 s28/1 -3242.62293578
+35 28 s28/3 -3145.54405433
+35 28 s28/6 -3161.69901133
+35 28 s28/8 -3460.48280145
+35 28 s28/10 -3130.20867157
+35 30 s30/1 -3719.69872843
+35 30 s30/3 -4033.57701225
+35 30 s30/6 -3835.96540364
+35 30 s30/8 -4213.43393094
+35 30 s30/10 -3737.83513544
+35 31 s31/1 -3637.87436761
+35 31 s31/3 -3257.6985864
+35 31 s31/6 -2823.29980411
+35 31 s31/8 -3301.15243938
+35 31 s31/10 -3281.1310619
+35 32 s32/1 -2982.21528736
+35 32 s32/3 -3153.57772893
+35 32 s32/6 -2910.44123827
+35 32 s32/8 -2934.4008954
+35 32 s32/10 -2908.80485422
+35 35 s35/1 -3027.39385142
+35 35 s35/3 -1977.74812817
+35 35 s35/6 -1777.94978034
+35 35 s35/8 -1726.81146917
+35 35 s35/10 -2337.52098854
+35 37 s37/1 -3083.80116802
+35 37 s37/3 -3175.91404615
+35 37 s37/6 -3564.29392185
+35 37 s37/8 -3242.77652296
+35 37 s37/10 -3104.98121563
+35 38 s38/1 -3949.35061046
+35 38 s38/3 -3787.29739957
+35 38 s38/6 -4217.60402972
+35 38 s38/8 -3878.23065452
+35 38 s38/10 -3938.91071819
+35 40 s40/1 -2492.86221414
+35 40 s40/3 -2685.54559886
+35 40 s40/6 -2855.14417866
+35 40 s40/8 -2565.77623868
+35 40 s40/10 -3047.82986247
+37 3 s3/1 -3347.73193542
+37 3 s3/3 -3386.29089298
+37 3 s3/6 -4145.74220476
+37 3 s3/8 -3841.49225099
+37 3 s3/10 -3708.19810549
+37 4 s4/1 -3992.94431208
+37 4 s4/3 -3674.34102399
+37 4 s4/6 -4056.12617671
+37 4 s4/8 -3687.67324754
+37 4 s4/10 -4723.12608509
+37 7 s7/1 -4671.00523462
+37 7 s7/3 -4852.12652774
+37 7 s7/6 -4358.69169597
+37 7 s7/8 -4761.07266948
+37 7 s7/10 -4244.93718081
+37 8 s8/1 -4888.13275433
+37 8 s8/3 -5222.4471334
+37 8 s8/6 -4989.53297198
+37 8 s8/8 -5380.61437698
+37 8 s8/10 -5245.10245345
+37 9 s9/1 -4461.97197329
+37 9 s9/3 -4317.86362434
+37 9 s9/6 -4763.27936789
+37 9 s9/8 -4706.75225409
+37 9 s9/10 -4762.90492801
+37 13 s13/1 -2705.98850595
+37 13 s13/3 -3492.47406384
+37 13 s13/6 -3208.28121704
+37 13 s13/8 -3204.92184035
+37 13 s13/10 -2846.81650282
+37 15 s15/1 -3475.5819192
+37 15 s15/3 -3500.44254169
+37 15 s15/6 -3253.21773129
+37 15 s15/8 -3869.45696446
+37 15 s15/10 -3735.74466224
+37 18 s18/1 -4248.18462448
+37 18 s18/3 -3835.2689915
+37 18 s18/6 -3988.82120835
+37 18 s18/8 -4000.35744946
+37 18 s18/10 -4415.8952017
+37 19 s19/1 -3428.65549423
+37 19 s19/3 -3334.64597979
+37 19 s19/6 -2745.93723939
+37 19 s19/8 -3126.11526158
+37 19 s19/10 -3246.85900974
+37 22 s22/1 -3802.08835708
+37 22 s22/3 -3898.95474126
+37 22 s22/6 -4369.19801658
+37 22 s22/8 -3907.1245176
+37 22 s22/10 -3607.64737813
+37 23 s23/1 -5205.00445868
+37 23 s23/3 -5168.54275138
+37 23 s23/6 -4980.94796855
+37 23 s23/8 -5350.01537911
+37 23 s23/10 -4959.9234081
+37 25 s25/1 -4059.25815544
+37 25 s25/3 -3953.32278429
+37 25 s25/6 -3640.25144807
+37 25 s25/8 -3478.25513417
+37 25 s25/10 -3985.58588488
+37 28 s28/1 -1770.3525039
+37 28 s28/3 -1862.35119548
+37 28 s28/6 -1796.32858027
+37 28 s28/8 -2230.13715335
+37 28 s28/10 -1843.95641805
+37 30 s30/1 -5135.49776734
+37 30 s30/3 -5424.60823062
+37 30 s30/6 -5200.91129295
+37 30 s30/8 -5356.54450147
+37 30 s30/10 -5130.36181483
+37 31 s31/1 -4813.52373089
+37 31 s31/3 -3874.07295501
+37 31 s31/6 -3843.42289871
+37 31 s31/8 -4411.64509181
+37 31 s31/10 -3863.04735893
+37 32 s32/1 -3947.16038218
+37 32 s32/3 -3669.46229069
+37 32 s32/6 -3563.89629466
+37 32 s32/8 -3431.84465293
+37 32 s32/10 -3416.12471004
+37 35 s35/1 -4310.62579244
+37 35 s35/3 -2845.25367679
+37 35 s35/6 -3678.21231785
+37 35 s35/8 -3958.77686193
+37 35 s35/10 -3708.69894331
+37 37 s37/1 -2026.73809469
+37 37 s37/3 -2076.5065985
+37 37 s37/6 -1322.12745022
+37 37 s37/8 -1420.40271347
+37 37 s37/10 -1799.09150143
+37 38 s38/1 -5194.52366806
+37 38 s38/3 -4756.94476628
+37 38 s38/6 -5457.50111132
+37 38 s38/8 -5315.70013416
+37 38 s38/10 -4868.01182272
+37 40 s40/1 -3517.01393705
+37 40 s40/3 -4115.52328612
+37 40 s40/6 -3826.76525207
+37 40 s40/8 -3550.5571365
+37 40 s40/10 -3838.17065346
+38 3 s3/1 -2500.66524809
+38 3 s3/3 -3113.76487532
+38 3 s3/6 -2268.34645822
+38 3 s3/8 -2518.65944776
+38 3 s3/10 -3312.4448462
+38 4 s4/1 -2358.3472841
+38 4 s4/3 -2820.58463101
+38 4 s4/6 -3767.53975525
+38 4 s4/8 -2905.51038405
+38 4 s4/10 -3364.95835537
+38 7 s7/1 -3079.51500683
+38 7 s7/3 -2995.94686187
+38 7 s7/6 -2728.64006669
+38 7 s7/8 -2632.18971995
+38 7 s7/10 -3580.2942623
+38 8 s8/1 -3401.48475841
+38 8 s8/3 -3170.84565396
+38 8 s8/6 -3565.07308101
+38 8 s8/8 -3542.05330799
+38 8 s8/10 -3205.57917872
+38 9 s9/1 -2443.45811206
+38 9 s9/3 -2624.20317848
+38 9 s9/6 -2452.88289599
+38 9 s9/8 -2045.23427053
+38 9 s9/10 -3276.71105312
+38 13 s13/1 -4721.97426652
+38 13 s13/3 -5226.71057651
+38 13 s13/6 -4680.83782604
+38 13 s13/8 -4765.99705531
+38 13 s13/10 -4423.14289953
+38 15 s15/1 -3688.28384289
+38 15 s15/3 -3598.51972277
+38 15 s15/6 -3768.57386495
+38 15 s15/8 -3455.04650083
+38 15 s15/10 -2655.02750604
+38 18 s18/1 -4745.50875736
+38 18 s18/3 -4292.87295517
+38 18 s18/6 -4286.22959369
+38 18 s18/8 -4323.9459001
+38 18 s18/10 -4070.24822599
+38 19 s19/1 -5065.02813215
+38 19 s19/3 -5596.88172312
+38 19 s19/6 -5112.50499266
+38 19 s19/8 -5196.17038292
+38 19 s19/10 -4680.31338835
+38 22 s22/1 -4021.19787287
+38 22 s22/3 -3786.51071329
+38 22 s22/6 -4126.76659422
+38 22 s22/8 -4065.28029675
+38 22 s22/10 -4500.77994993
+38 23 s23/1 -1661.15610539
+38 23 s23/3 -3004.62043703
+38 23 s23/6 -2592.15772151
+38 23 s23/8 -2839.53533334
+38 23 s23/10 -1886.64429816
+38 25 s25/1 -2759.63230835
+38 25 s25/3 -3053.91603984
+38 25 s25/6 -3286.6060079
+38 25 s25/8 -3919.08978822
+38 25 s25/10 -3123.42430915
+38 28 s28/1 -4986.3941653
+38 28 s28/3 -4693.8398904
+38 28 s28/6 -4733.98872901
+38 28 s28/8 -5112.93431814
+38 28 s28/10 -4951.60499646
+38 30 s30/1 -2171.70657427
+38 30 s30/3 -2248.55987093
+38 30 s30/6 -2181.24702757
+38 30 s30/8 -3093.05158571
+38 30 s30/10 -2149.11586703
+38 31 s31/1 -2676.45733009
+38 31 s31/3 -4915.56732116
+38 31 s31/6 -3152.65508137
+38 31 s31/8 -2864.95806167
+38 31 s31/10 -4942.57718181
+38 32 s32/1 -4855.40392521
+38 32 s32/3 -5162.90276935
+38 32 s32/6 -3858.1984399
+38 32 s32/8 -4687.73273849
+38 32 s32/10 -3771.2787541
+38 35 s35/1 -3397.84237105
+38 35 s35/3 -4119.31301927
+38 35 s35/6 -3394.96054168
+38 35 s35/8 -3015.43872493
+38 35 s35/10 -4064.95202992
+38 37 s37/1 -4882.73064872
+38 37 s37/3 -5081.54156869
+38 37 s37/6 -5186.66678655
+38 37 s37/8 -4640.2911261
+38 37 s37/10 -4932.9113395
+38 38 s38/1 -1436.2690717
+38 38 s38/3 -1193.10987941
+38 38 s38/6 -1871.70903439
+38 38 s38/8 -1502.77950363
+38 38 s38/10 -1295.39466213
+38 40 s40/1 -3610.15958833
+38 40 s40/3 -3930.3899188
+38 40 s40/6 -3367.88066228
+38 40 s40/8 -3469.37561895
+38 40 s40/10 -3436.14514204
+40 3 s3/1 -2651.09965589
+40 3 s3/3 -2683.04351464
+40 3 s3/6 -2445.93813943
+40 3 s3/8 -2073.66669064
+40 3 s3/10 -2813.14996979
+40 4 s4/1 -2568.59239584
+40 4 s4/3 -2532.61350347
+40 4 s4/6 -2594.61908498
+40 4 s4/8 -2621.96322247
+40 4 s4/10 -3338.43480092
+40 7 s7/1 -3678.20163099
+40 7 s7/3 -3596.8945058
+40 7 s7/6 -3396.75831689
+40 7 s7/8 -3567.20188339
+40 7 s7/10 -3221.24213788
+40 8 s8/1 -3715.39341458
+40 8 s8/3 -3571.88906273
+40 8 s8/6 -3730.13258897
+40 8 s8/8 -3603.12267398
+40 8 s8/10 -3590.12354748
+40 9 s9/1 -3548.4965001
+40 9 s9/3 -3472.79256194
+40 9 s9/6 -2863.6915347
+40 9 s9/8 -2720.70479404
+40 9 s9/10 -3294.53578043
+40 13 s13/1 -2815.20644872
+40 13 s13/3 -2764.01526588
+40 13 s13/6 -2694.45585779
+40 13 s13/8 -2500.66028557
+40 13 s13/10 -2249.42220386
+40 15 s15/1 -3607.07793083
+40 15 s15/3 -3681.10792076
+40 15 s15/6 -3516.22845085
+40 15 s15/8 -3790.99726558
+40 15 s15/10 -2371.56146064
+40 18 s18/1 -2885.25365973
+40 18 s18/3 -1730.26525228
+40 18 s18/6 -1920.5352865
+40 18 s18/8 -2041.83010019
+40 18 s18/10 -1902.29679874
+40 19 s19/1 -4146.34040048
+40 19 s19/3 -4291.00986689
+40 19 s19/6 -4104.42545501
+40 19 s19/8 -4078.28359243
+40 19 s19/10 -3964.82241087
+40 22 s22/1 -4923.93362995
+40 22 s22/3 -4790.15479765
+40 22 s22/6 -5163.44878234
+40 22 s22/8 -5045.57023204
+40 22 s22/10 -5077.34842893
+40 23 s23/1 -3195.09963137
+40 23 s23/3 -4083.00238199
+40 23 s23/6 -3343.03813699
+40 23 s23/8 -3692.5758183
+40 23 s23/10 -2921.14528812
+40 25 s25/1 -2474.2456049
+40 25 s25/3 -2495.90369101
+40 25 s25/6 -2700.66256782
+40 25 s25/8 -2093.23218401
+40 25 s25/10 -2753.63733789
+40 28 s28/1 -3607.32239622
+40 28 s28/3 -3523.64440717
+40 28 s28/6 -3508.00347721
+40 28 s28/8 -3794.96537331
+40 28 s28/10 -3545.02350553
+40 30 s30/1 -4117.68401116
+40 30 s30/3 -4318.14358145
+40 30 s30/6 -3970.30405567
+40 30 s30/8 -4663.03394225
+40 30 s30/10 -4114.2734629
+40 31 s31/1 -3883.11730819
+40 31 s31/3 -4347.05405545
+40 31 s31/6 -3585.00166747
+40 31 s31/8 -3752.95802879
+40 31 s31/10 -4361.37878865
+40 32 s32/1 -3198.90321628
+40 32 s32/3 -3536.7907758
+40 32 s32/6 -3207.0830193
+40 32 s32/8 -3269.19701762
+40 32 s32/10 -3209.67847964
+40 35 s35/1 -3144.80178138
+40 35 s35/3 -2695.41443799
+40 35 s35/6 -2639.71050693
+40 35 s35/8 -2324.91676937
+40 35 s35/10 -2033.60969477
+40 37 s37/1 -3242.39681112
+40 37 s37/3 -3311.51818371
+40 37 s37/6 -4308.81184137
+40 37 s37/8 -3954.90331952
+40 37 s37/10 -3302.59396222
+40 38 s38/1 -3399.74494682
+40 38 s38/3 -3670.11719236
+40 38 s38/6 -3704.4046877
+40 38 s38/8 -3711.69159941
+40 38 s38/10 -3659.77792774
+40 40 s40/1 -2186.09198446
+40 40 s40/3 -2228.13430956
+40 40 s40/6 -2470.78602967
+40 40 s40/8 -2214.25145046
+40 40 s40/10 -2276.02148295
diff --git a/bob/bio/base/test/data/scores-cmc-5col.txt b/bob/bio/base/test/data/scores-cmc-5col.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f69a0a26dffc648dc131d2093dddbd2588289186
--- /dev/null
+++ b/bob/bio/base/test/data/scores-cmc-5col.txt
@@ -0,0 +1,2000 @@
+3 s3 3 s3/1 -1379.79268746
+3 s3 3 s3/3 -1634.53276051
+3 s3 3 s3/6 -1727.90866176
+3 s3 3 s3/8 -1330.68401315
+3 s3 3 s3/10 -1912.77343391
+3 s3 4 s4/1 -1746.88596714
+3 s3 4 s4/3 -1613.06319303
+3 s3 4 s4/6 -2313.24329277
+3 s3 4 s4/8 -1591.98392217
+3 s3 4 s4/10 -2730.9754808
+3 s3 7 s7/1 -3460.44008764
+3 s3 7 s7/3 -3433.49050371
+3 s3 7 s7/6 -3089.89562483
+3 s3 7 s7/8 -3432.42457034
+3 s3 7 s7/10 -3079.0440811
+3 s3 8 s8/1 -3620.2592394
+3 s3 8 s8/3 -3269.98024589
+3 s3 8 s8/6 -3358.21797555
+3 s3 8 s8/8 -3387.03907938
+3 s3 8 s8/10 -3171.50666852
+3 s3 9 s9/1 -2811.95946617
+3 s3 9 s9/3 -2664.59585669
+3 s3 9 s9/6 -2656.05911704
+3 s3 9 s9/8 -2443.67278587
+3 s3 9 s9/10 -2850.31782429
+3 s3 13 s13/1 -2946.82573528
+3 s3 13 s13/3 -3583.79672567
+3 s3 13 s13/6 -2963.54066016
+3 s3 13 s13/8 -2868.46385067
+3 s3 13 s13/10 -2538.48690592
+3 s3 15 s15/1 -3173.69053082
+3 s3 15 s15/3 -3178.53876882
+3 s3 15 s15/6 -3111.42098722
+3 s3 15 s15/8 -3329.41061343
+3 s3 15 s15/10 -2596.58956879
+3 s3 18 s18/1 -3182.79708708
+3 s3 18 s18/3 -2614.69595605
+3 s3 18 s18/6 -2706.60809944
+3 s3 18 s18/8 -2840.19223113
+3 s3 18 s18/10 -2862.66900744
+3 s3 19 s19/1 -3536.77408534
+3 s3 19 s19/3 -4027.07052594
+3 s3 19 s19/6 -3672.1595268
+3 s3 19 s19/8 -3986.46152677
+3 s3 19 s19/10 -3253.32219871
+3 s3 22 s22/1 -4010.21487048
+3 s3 22 s22/3 -3830.02378375
+3 s3 22 s22/6 -4432.88810546
+3 s3 22 s22/8 -4157.95710081
+3 s3 22 s22/10 -4366.73686546
+3 s3 23 s23/1 -3053.33185632
+3 s3 23 s23/3 -3919.97013765
+3 s3 23 s23/6 -3288.54921504
+3 s3 23 s23/8 -3445.7429271
+3 s3 23 s23/10 -2728.4009081
+3 s3 25 s25/1 -2077.78964037
+3 s3 25 s25/3 -1996.27706821
+3 s3 25 s25/6 -2158.13414247
+3 s3 25 s25/8 -2365.446406
+3 s3 25 s25/10 -2113.26873798
+3 s3 28 s28/1 -3442.83435448
+3 s3 28 s28/3 -3163.25423353
+3 s3 28 s28/6 -3227.02394654
+3 s3 28 s28/8 -3383.5929893
+3 s3 28 s28/10 -3270.67275578
+3 s3 30 s30/1 -3399.50034429
+3 s3 30 s30/3 -3755.26703911
+3 s3 30 s30/6 -3390.40001552
+3 s3 30 s30/8 -4088.11071666
+3 s3 30 s30/10 -3448.70029605
+3 s3 31 s31/1 -3317.91933517
+3 s3 31 s31/3 -4129.53432195
+3 s3 31 s31/6 -2703.85344626
+3 s3 31 s31/8 -3028.36256979
+3 s3 31 s31/10 -4117.12107523
+3 s3 32 s32/1 -3451.07982123
+3 s3 32 s32/3 -3659.08758621
+3 s3 32 s32/6 -2912.5121953
+3 s3 32 s32/8 -3239.29507593
+3 s3 32 s32/10 -2816.61664649
+3 s3 35 s35/1 -3532.22591289
+3 s3 35 s35/3 -2825.64434863
+3 s3 35 s35/6 -2226.87247619
+3 s3 35 s35/8 -2273.17374368
+3 s3 35 s35/10 -2807.78371377
+3 s3 37 s37/1 -3090.7830507
+3 s3 37 s37/3 -3356.19444943
+3 s3 37 s37/6 -3819.78140964
+3 s3 37 s37/8 -3280.30431209
+3 s3 37 s37/10 -3019.52908155
+3 s3 38 s38/1 -3047.63407732
+3 s3 38 s38/3 -2972.12269097
+3 s3 38 s38/6 -3484.48437412
+3 s3 38 s38/8 -3216.05224462
+3 s3 38 s38/10 -3207.45635903
+3 s3 40 s40/1 -2506.31589548
+3 s3 40 s40/3 -2738.67714294
+3 s3 40 s40/6 -2826.35311781
+3 s3 40 s40/8 -2477.55650197
+3 s3 40 s40/10 -2856.55209634
+4 s4 3 s3/1 -2097.51280034
+4 s4 3 s3/3 -2023.3387048
+4 s4 3 s3/6 -2217.05890884
+4 s4 3 s3/8 -2328.42194559
+4 s4 3 s3/10 -1579.12873829
+4 s4 4 s4/1 -2109.51091365
+4 s4 4 s4/3 -2397.45985327
+4 s4 4 s4/6 -2674.80222663
+4 s4 4 s4/8 -2048.16132875
+4 s4 4 s4/10 -1597.37572542
+4 s4 7 s7/1 -3368.69187597
+4 s4 7 s7/3 -3371.00271615
+4 s4 7 s7/6 -3232.68335763
+4 s4 7 s7/8 -3607.3979377
+4 s4 7 s7/10 -2884.55057149
+4 s4 8 s8/1 -4303.76466702
+4 s4 8 s8/3 -3202.42396848
+4 s4 8 s8/6 -3372.60526358
+4 s4 8 s8/8 -3351.99028682
+4 s4 8 s8/10 -2875.5348275
+4 s4 9 s9/1 -2860.08677303
+4 s4 9 s9/3 -2688.67567353
+4 s4 9 s9/6 -3232.40160873
+4 s4 9 s9/8 -2632.11421778
+4 s4 9 s9/10 -2286.6605215
+4 s4 13 s13/1 -4233.37474823
+4 s4 13 s13/3 -4777.76108956
+4 s4 13 s13/6 -3509.80014011
+4 s4 13 s13/8 -4071.49161933
+4 s4 13 s13/10 -3663.00400217
+4 s4 15 s15/1 -3090.32050098
+4 s4 15 s15/3 -3109.87978493
+4 s4 15 s15/6 -3244.80395029
+4 s4 15 s15/8 -3159.54011618
+4 s4 15 s15/10 -3212.33935998
+4 s4 18 s18/1 -3029.88191105
+4 s4 18 s18/3 -3693.98946937
+4 s4 18 s18/6 -3365.9813891
+4 s4 18 s18/8 -3671.60318908
+4 s4 18 s18/10 -3439.17926362
+4 s4 19 s19/1 -4126.33284024
+4 s4 19 s19/3 -4687.64632666
+4 s4 19 s19/6 -4503.65118444
+4 s4 19 s19/8 -4597.81186541
+4 s4 19 s19/10 -4061.93959722
+4 s4 22 s22/1 -4420.20420385
+4 s4 22 s22/3 -4122.6265905
+4 s4 22 s22/6 -4991.81040461
+4 s4 22 s22/8 -4531.38441564
+4 s4 22 s22/10 -4980.44450294
+4 s4 23 s23/1 -3401.81702162
+4 s4 23 s23/3 -4028.1336055
+4 s4 23 s23/6 -3978.45100619
+4 s4 23 s23/8 -3211.22978325
+4 s4 23 s23/10 -3198.10535623
+4 s4 25 s25/1 -2062.04530856
+4 s4 25 s25/3 -1864.81104842
+4 s4 25 s25/6 -2407.68073618
+4 s4 25 s25/8 -3439.82293636
+4 s4 25 s25/10 -1794.81628586
+4 s4 28 s28/1 -4540.54004502
+4 s4 28 s28/3 -4383.64097847
+4 s4 28 s28/6 -4281.67440812
+4 s4 28 s28/8 -3946.61365052
+4 s4 28 s28/10 -4569.28625396
+4 s4 30 s30/1 -3051.1905347
+4 s4 30 s30/3 -3573.25826858
+4 s4 30 s30/6 -3172.93119916
+4 s4 30 s30/8 -4035.35954145
+4 s4 30 s30/10 -3361.40514185
+4 s4 31 s31/1 -3252.21215713
+4 s4 31 s31/3 -4491.10730478
+4 s4 31 s31/6 -2883.97999623
+4 s4 31 s31/8 -2974.33442689
+4 s4 31 s31/10 -4419.81756879
+4 s4 32 s32/1 -3701.92675808
+4 s4 32 s32/3 -4230.76047786
+4 s4 32 s32/6 -3251.25421788
+4 s4 32 s32/8 -3866.64264384
+4 s4 32 s32/10 -3237.44016449
+4 s4 35 s35/1 -4204.25090013
+4 s4 35 s35/3 -3758.36177331
+4 s4 35 s35/6 -2154.19941863
+4 s4 35 s35/8 -2145.22688345
+4 s4 35 s35/10 -3437.97238277
+4 s4 37 s37/1 -4096.71829358
+4 s4 37 s37/3 -4415.32539877
+4 s4 37 s37/6 -4645.02754118
+4 s4 37 s37/8 -4196.70618568
+4 s4 37 s37/10 -4103.73478556
+4 s4 38 s38/1 -3692.77721021
+4 s4 38 s38/3 -3596.5152585
+4 s4 38 s38/6 -4024.46292833
+4 s4 38 s38/8 -3013.42746448
+4 s4 38 s38/10 -3585.91031401
+4 s4 40 s40/1 -3217.76780761
+4 s4 40 s40/3 -2798.59798876
+4 s4 40 s40/6 -3653.68846351
+4 s4 40 s40/8 -3265.06174969
+4 s4 40 s40/10 -4288.3030138
+7 s7 3 s3/1 -3120.00216408
+7 s7 3 s3/3 -2988.66583317
+7 s7 3 s3/6 -2928.16408153
+7 s7 3 s3/8 -3234.07830596
+7 s7 3 s3/10 -2929.70625522
+7 s7 4 s4/1 -3459.39856577
+7 s7 4 s4/3 -3822.00572827
+7 s7 4 s4/6 -3925.86211815
+7 s7 4 s4/8 -3681.6492638
+7 s7 4 s4/10 -3313.51262759
+7 s7 7 s7/1 -617.825862238
+7 s7 7 s7/3 -867.409063056
+7 s7 7 s7/6 -1353.44151952
+7 s7 7 s7/8 -1609.78693924
+7 s7 7 s7/10 -1305.90153291
+7 s7 8 s8/1 -4327.87306526
+7 s7 8 s8/3 -3735.28132801
+7 s7 8 s8/6 -3899.4043867
+7 s7 8 s8/8 -4159.10909214
+7 s7 8 s8/10 -3690.00289726
+7 s7 9 s9/1 -3461.41683118
+7 s7 9 s9/3 -3474.96610279
+7 s7 9 s9/6 -3796.28874482
+7 s7 9 s9/8 -3248.35661343
+7 s7 9 s9/10 -3331.48914238
+7 s7 13 s13/1 -4921.81558057
+7 s7 13 s13/3 -5177.0115092
+7 s7 13 s13/6 -4377.79358814
+7 s7 13 s13/8 -4549.47680222
+7 s7 13 s13/10 -4268.93263282
+7 s7 15 s15/1 -3076.7368174
+7 s7 15 s15/3 -3047.13247253
+7 s7 15 s15/6 -3249.84902365
+7 s7 15 s15/8 -3150.50121815
+7 s7 15 s15/10 -3452.85315844
+7 s7 18 s18/1 -3945.39914918
+7 s7 18 s18/3 -4458.14092777
+7 s7 18 s18/6 -4013.01623566
+7 s7 18 s18/8 -4338.24226246
+7 s7 18 s18/10 -3961.85437891
+7 s7 19 s19/1 -4809.91164653
+7 s7 19 s19/3 -5232.22205615
+7 s7 19 s19/6 -5157.79783698
+7 s7 19 s19/8 -4651.29311084
+7 s7 19 s19/10 -4874.47981006
+7 s7 22 s22/1 -4459.6222356
+7 s7 22 s22/3 -4377.94066581
+7 s7 22 s22/6 -4686.89847305
+7 s7 22 s22/8 -4587.77483596
+7 s7 22 s22/10 -4960.77430892
+7 s7 23 s23/1 -2844.66296646
+7 s7 23 s23/3 -3577.80820325
+7 s7 23 s23/6 -3760.03833299
+7 s7 23 s23/8 -2592.30467393
+7 s7 23 s23/10 -2782.98926037
+7 s7 25 s25/1 -3709.91905593
+7 s7 25 s25/3 -3673.52485981
+7 s7 25 s25/6 -4135.41309534
+7 s7 25 s25/8 -4498.09934416
+7 s7 25 s25/10 -3867.02458523
+7 s7 28 s28/1 -4903.59623882
+7 s7 28 s28/3 -4959.06234558
+7 s7 28 s28/6 -4757.67310498
+7 s7 28 s28/8 -4397.00986327
+7 s7 28 s28/10 -5163.55107447
+7 s7 30 s30/1 -3564.22134558
+7 s7 30 s30/3 -3884.05161515
+7 s7 30 s30/6 -3278.45824218
+7 s7 30 s30/8 -4203.96866458
+7 s7 30 s30/10 -3703.03644002
+7 s7 31 s31/1 -3610.5222855
+7 s7 31 s31/3 -4647.7502073
+7 s7 31 s31/6 -3826.85642829
+7 s7 31 s31/8 -3697.79390825
+7 s7 31 s31/10 -4711.21976699
+7 s7 32 s32/1 -4224.76328171
+7 s7 32 s32/3 -4880.3701751
+7 s7 32 s32/6 -3467.34232266
+7 s7 32 s32/8 -4205.0790813
+7 s7 32 s32/10 -3366.64775879
+7 s7 35 s35/1 -4139.19915643
+7 s7 35 s35/3 -4165.24385506
+7 s7 35 s35/6 -3757.11460823
+7 s7 35 s35/8 -3488.0609092
+7 s7 35 s35/10 -3316.41532002
+7 s7 37 s37/1 -4439.26346467
+7 s7 37 s37/3 -4628.42859719
+7 s7 37 s37/6 -4800.49047203
+7 s7 37 s37/8 -4425.21313548
+7 s7 37 s37/10 -4472.06844594
+7 s7 38 s38/1 -3637.57257635
+7 s7 38 s38/3 -3831.59619911
+7 s7 38 s38/6 -3844.91237951
+7 s7 38 s38/8 -3161.92143097
+7 s7 38 s38/10 -3168.10019452
+7 s7 40 s40/1 -3577.73736278
+7 s7 40 s40/3 -3146.39774768
+7 s7 40 s40/6 -3882.04884366
+7 s7 40 s40/8 -3735.30412249
+7 s7 40 s40/10 -4467.95343226
+8 s8 3 s3/1 -3816.49167388
+8 s8 3 s3/3 -4243.79743359
+8 s8 3 s3/6 -3082.51718778
+8 s8 3 s3/8 -3020.22874228
+8 s8 3 s3/10 -4113.09549687
+8 s8 4 s4/1 -3039.48610771
+8 s8 4 s4/3 -3040.63946246
+8 s8 4 s4/6 -3395.10221087
+8 s8 4 s4/8 -3116.55675349
+8 s8 4 s4/10 -4497.62739774
+8 s8 7 s7/1 -4211.6114398
+8 s8 7 s7/3 -3931.41737091
+8 s8 7 s7/6 -3580.80042267
+8 s8 7 s7/8 -3709.35948031
+8 s8 7 s7/10 -4510.99928392
+8 s8 8 s8/1 -1135.46945823
+8 s8 8 s8/3 -1664.95236718
+8 s8 8 s8/6 -1745.06667956
+8 s8 8 s8/8 -1874.43093948
+8 s8 8 s8/10 -2061.08463491
+8 s8 9 s9/1 -4297.44821021
+8 s8 9 s9/3 -4353.85917889
+8 s8 9 s9/6 -3575.52734928
+8 s8 9 s9/8 -3475.1781057
+8 s8 9 s9/10 -4719.13057395
+8 s8 13 s13/1 -4636.95144656
+8 s8 13 s13/3 -4732.44942349
+8 s8 13 s13/6 -4704.23970245
+8 s8 13 s13/8 -4514.0326596
+8 s8 13 s13/10 -4266.08581029
+8 s8 15 s15/1 -3669.79436722
+8 s8 15 s15/3 -3580.75949187
+8 s8 15 s15/6 -3609.71332974
+8 s8 15 s15/8 -3755.57239855
+8 s8 15 s15/10 -3543.09126099
+8 s8 18 s18/1 -4961.2173049
+8 s8 18 s18/3 -4109.75653182
+8 s8 18 s18/6 -3995.44195704
+8 s8 18 s18/8 -4177.49528886
+8 s8 18 s18/10 -3950.04207524
+8 s8 19 s19/1 -4297.15335629
+8 s8 19 s19/3 -4870.31852193
+8 s8 19 s19/6 -4496.97200871
+8 s8 19 s19/8 -4094.66435512
+8 s8 19 s19/10 -3822.2449824
+8 s8 22 s22/1 -4780.99227159
+8 s8 22 s22/3 -4689.028013
+8 s8 22 s22/6 -4984.82882451
+8 s8 22 s22/8 -4879.72886553
+8 s8 22 s22/10 -5098.05356772
+8 s8 23 s23/1 -3405.79008991
+8 s8 23 s23/3 -4776.51868726
+8 s8 23 s23/6 -4161.72307492
+8 s8 23 s23/8 -4788.46294731
+8 s8 23 s23/10 -3315.41957354
+8 s8 25 s25/1 -3824.59345334
+8 s8 25 s25/3 -3845.76304451
+8 s8 25 s25/6 -3763.12504434
+8 s8 25 s25/8 -3761.5899582
+8 s8 25 s25/10 -3905.03364425
+8 s8 28 s28/1 -4877.23858214
+8 s8 28 s28/3 -4705.39011288
+8 s8 28 s28/6 -4772.27918626
+8 s8 28 s28/8 -5550.62266467
+8 s8 28 s28/10 -4717.01599088
+8 s8 30 s30/1 -4084.52503825
+8 s8 30 s30/3 -4221.1789981
+8 s8 30 s30/6 -4061.9396941
+8 s8 30 s30/8 -4709.78243598
+8 s8 30 s30/10 -3900.24932223
+8 s8 31 s31/1 -4796.206716
+8 s8 31 s31/3 -5007.39195856
+8 s8 31 s31/6 -4423.3107164
+8 s8 31 s31/8 -4652.91164347
+8 s8 31 s31/10 -4980.18129086
+8 s8 32 s32/1 -3938.07008877
+8 s8 32 s32/3 -4224.23005286
+8 s8 32 s32/6 -2928.42135463
+8 s8 32 s32/8 -3585.26122854
+8 s8 32 s32/10 -3020.08375318
+8 s8 35 s35/1 -4733.303325
+8 s8 35 s35/3 -4275.11431188
+8 s8 35 s35/6 -3467.16231594
+8 s8 35 s35/8 -3506.0442336
+8 s8 35 s35/10 -4471.58251982
+8 s8 37 s37/1 -5197.10341632
+8 s8 37 s37/3 -5296.46506571
+8 s8 37 s37/6 -5060.04946633
+8 s8 37 s37/8 -4485.87436358
+8 s8 37 s37/10 -4939.53354307
+8 s8 38 s38/1 -3295.6245965
+8 s8 38 s38/3 -3303.72233957
+8 s8 38 s38/6 -3557.30039322
+8 s8 38 s38/8 -3781.97830608
+8 s8 38 s38/10 -3744.9474251
+8 s8 40 s40/1 -4572.35498313
+8 s8 40 s40/3 -4854.67113335
+8 s8 40 s40/6 -4103.05579492
+8 s8 40 s40/8 -4230.86819166
+8 s8 40 s40/10 -3904.31330825
+9 s9 3 s3/1 -2547.5104482
+9 s9 3 s3/3 -2725.45115096
+9 s9 3 s3/6 -2211.99297617
+9 s9 3 s3/8 -2416.50020167
+9 s9 3 s3/10 -2808.00169181
+9 s9 4 s4/1 -2252.65199646
+9 s9 4 s4/3 -2590.48954693
+9 s9 4 s4/6 -3289.80948945
+9 s9 4 s4/8 -2569.14238439
+9 s9 4 s4/10 -2649.76082109
+9 s9 7 s7/1 -3300.80205386
+9 s9 7 s7/3 -3384.85442682
+9 s9 7 s7/6 -3308.89117021
+9 s9 7 s7/8 -3280.71373687
+9 s9 7 s7/10 -3315.55371503
+9 s9 8 s8/1 -4185.21171568
+9 s9 8 s8/3 -3634.51475298
+9 s9 8 s8/6 -4019.79386655
+9 s9 8 s8/8 -3900.67066506
+9 s9 8 s8/10 -3532.26591473
+9 s9 9 s9/1 -1232.98008048
+9 s9 9 s9/3 -1256.06667593
+9 s9 9 s9/6 -1764.52243494
+9 s9 9 s9/8 -1447.87853552
+9 s9 9 s9/10 -1789.71184484
+9 s9 13 s13/1 -4619.25396528
+9 s9 13 s13/3 -5175.65502321
+9 s9 13 s13/6 -4272.85697332
+9 s9 13 s13/8 -4553.62609701
+9 s9 13 s13/10 -4244.44673611
+9 s9 15 s15/1 -3454.43840637
+9 s9 15 s15/3 -3439.87009412
+9 s9 15 s15/6 -3578.29135252
+9 s9 15 s15/8 -3440.83204868
+9 s9 15 s15/10 -2665.60947707
+9 s9 18 s18/1 -4148.87008937
+9 s9 18 s18/3 -4109.69400345
+9 s9 18 s18/6 -4091.07132553
+9 s9 18 s18/8 -4208.3489515
+9 s9 18 s18/10 -3757.36612039
+9 s9 19 s19/1 -4807.20953164
+9 s9 19 s19/3 -5347.47059831
+9 s9 19 s19/6 -5037.02683897
+9 s9 19 s19/8 -5158.78820124
+9 s9 19 s19/10 -4623.00188
+9 s9 22 s22/1 -4154.24807601
+9 s9 22 s22/3 -3844.22286129
+9 s9 22 s22/6 -4415.27940247
+9 s9 22 s22/8 -4209.98015364
+9 s9 22 s22/10 -4700.9501879
+9 s9 23 s23/1 -2403.64952559
+9 s9 23 s23/3 -2965.62721504
+9 s9 23 s23/6 -2970.82455651
+9 s9 23 s23/8 -2439.9060999
+9 s9 23 s23/10 -2362.75062609
+9 s9 25 s25/1 -2186.76811782
+9 s9 25 s25/3 -2250.01746741
+9 s9 25 s25/6 -2913.21012077
+9 s9 25 s25/8 -3486.83051857
+9 s9 25 s25/10 -2463.4559735
+9 s9 28 s28/1 -4918.87479674
+9 s9 28 s28/3 -4681.85746463
+9 s9 28 s28/6 -4617.28665292
+9 s9 28 s28/8 -4548.91590351
+9 s9 28 s28/10 -4964.8811564
+9 s9 30 s30/1 -2468.85347323
+9 s9 30 s30/3 -2684.22105025
+9 s9 30 s30/6 -2352.19611749
+9 s9 30 s30/8 -3203.79571838
+9 s9 30 s30/10 -2589.19072649
+9 s9 31 s31/1 -1990.71715309
+9 s9 31 s31/3 -4574.3250072
+9 s9 31 s31/6 -2638.76143027
+9 s9 31 s31/8 -2136.9668398
+9 s9 31 s31/10 -4586.19479594
+9 s9 32 s32/1 -4540.36181713
+9 s9 32 s32/3 -4868.08338276
+9 s9 32 s32/6 -4037.78030625
+9 s9 32 s32/8 -4490.67607519
+9 s9 32 s32/10 -3923.63980576
+9 s9 35 s35/1 -3121.69389479
+9 s9 35 s35/3 -3916.72829133
+9 s9 35 s35/6 -3123.62025962
+9 s9 35 s35/8 -2480.64668786
+9 s9 35 s35/10 -3432.45445572
+9 s9 37 s37/1 -4479.69370996
+9 s9 37 s37/3 -4742.56540091
+9 s9 37 s37/6 -4993.89089683
+9 s9 37 s37/8 -4566.20131271
+9 s9 37 s37/10 -4537.43975603
+9 s9 38 s38/1 -2505.17244521
+9 s9 38 s38/3 -2707.94431745
+9 s9 38 s38/6 -2761.29272417
+9 s9 38 s38/8 -2263.62593044
+9 s9 38 s38/10 -2398.09045021
+9 s9 40 s40/1 -2928.99104151
+9 s9 40 s40/3 -3022.18661213
+9 s9 40 s40/6 -2909.42717431
+9 s9 40 s40/8 -2900.50106801
+9 s9 40 s40/10 -3514.24554484
+13 s13 3 s3/1 -3202.38137554
+13 s13 3 s3/3 -3308.2248404
+13 s13 3 s3/6 -3501.44047001
+13 s13 3 s3/8 -3262.35823784
+13 s13 3 s3/10 -3444.20525571
+13 s13 4 s4/1 -3649.59387841
+13 s13 4 s4/3 -3390.63212187
+13 s13 4 s4/6 -3246.33460094
+13 s13 4 s4/8 -3342.89496156
+13 s13 4 s4/10 -4299.54590767
+13 s13 7 s7/1 -4715.98664504
+13 s13 7 s7/3 -4609.27291027
+13 s13 7 s7/6 -4422.0260616
+13 s13 7 s7/8 -4722.80244759
+13 s13 7 s7/10 -4029.53815479
+13 s13 8 s8/1 -4670.41935822
+13 s13 8 s8/3 -4525.99460014
+13 s13 8 s8/6 -4406.83573849
+13 s13 8 s8/8 -4474.32175203
+13 s13 8 s8/10 -4572.86719878
+13 s13 9 s9/1 -4637.22294275
+13 s13 9 s9/3 -4500.651687
+13 s13 9 s9/6 -4463.61015407
+13 s13 9 s9/8 -4243.16691824
+13 s13 9 s9/10 -4572.15435639
+13 s13 13 s13/1 -1025.77704523
+13 s13 13 s13/3 -1783.98005114
+13 s13 13 s13/6 -1558.11784716
+13 s13 13 s13/8 -1039.99583084
+13 s13 13 s13/10 -703.448590077
+13 s13 15 s15/1 -4038.32937849
+13 s13 15 s15/3 -4158.46410153
+13 s13 15 s15/6 -3796.56417856
+13 s13 15 s15/8 -4429.3755221
+13 s13 15 s15/10 -3585.52994631
+13 s13 18 s18/1 -2812.99173883
+13 s13 18 s18/3 -1891.55964525
+13 s13 18 s18/6 -2035.67549695
+13 s13 18 s18/8 -1978.19724817
+13 s13 18 s18/10 -2499.42504522
+13 s13 19 s19/1 -3567.82071157
+13 s13 19 s19/3 -3234.31779564
+13 s13 19 s19/6 -3159.33639979
+13 s13 19 s19/8 -3323.52201903
+13 s13 19 s19/10 -3551.06114754
+13 s13 22 s22/1 -5414.57148439
+13 s13 22 s22/3 -5371.51231446
+13 s13 22 s22/6 -5895.08586155
+13 s13 22 s22/8 -5541.10555282
+13 s13 22 s22/10 -5289.97985403
+13 s13 23 s23/1 -4783.79443316
+13 s13 23 s23/3 -5184.20935404
+13 s13 23 s23/6 -4767.83616152
+13 s13 23 s23/8 -5121.71712236
+13 s13 23 s23/10 -4559.26698216
+13 s13 25 s25/1 -3377.53134774
+13 s13 25 s25/3 -3115.54927275
+13 s13 25 s25/6 -2950.2693355
+13 s13 25 s25/8 -2610.67305436
+13 s13 25 s25/10 -3284.9945593
+13 s13 28 s28/1 -2818.43584739
+13 s13 28 s28/3 -2939.87837017
+13 s13 28 s28/6 -2959.54612292
+13 s13 28 s28/8 -3249.15642063
+13 s13 28 s28/10 -2605.52287392
+13 s13 30 s30/1 -5339.28315308
+13 s13 30 s30/3 -5611.91473319
+13 s13 30 s30/6 -5330.75403669
+13 s13 30 s30/8 -5777.47373497
+13 s13 30 s30/10 -5300.57333828
+13 s13 31 s31/1 -5210.82295907
+13 s13 31 s31/3 -4412.76465696
+13 s13 31 s31/6 -4441.92121769
+13 s13 31 s31/8 -4896.76699795
+13 s13 31 s31/10 -4488.13181919
+13 s13 32 s32/1 -3150.51061775
+13 s13 32 s32/3 -3159.71478883
+13 s13 32 s32/6 -3334.54053001
+13 s13 32 s32/8 -3056.73154297
+13 s13 32 s32/10 -3413.7973795
+13 s13 35 s35/1 -3886.54628516
+13 s13 35 s35/3 -3043.08940014
+13 s13 35 s35/6 -2749.45139543
+13 s13 35 s35/8 -3165.90623178
+13 s13 35 s35/10 -3046.81538122
+13 s13 37 s37/1 -2678.74294941
+13 s13 37 s37/3 -2658.9158326
+13 s13 37 s37/6 -3609.67071608
+13 s13 37 s37/8 -3538.43631387
+13 s13 37 s37/10 -2501.21295259
+13 s13 38 s38/1 -4953.92150692
+13 s13 38 s38/3 -4742.48319921
+13 s13 38 s38/6 -5178.55887189
+13 s13 38 s38/8 -5038.90368513
+13 s13 38 s38/10 -4841.33560269
+13 s13 40 s40/1 -2809.70264194
+13 s13 40 s40/3 -3157.01332876
+13 s13 40 s40/6 -2927.3338441
+13 s13 40 s40/8 -2688.96600375
+13 s13 40 s40/10 -3069.88991179
+15 s15 3 s3/1 -2580.30354292
+15 s15 3 s3/3 -2834.29603042
+15 s15 3 s3/6 -2759.19839368
+15 s15 3 s3/8 -2783.20695581
+15 s15 3 s3/10 -3143.83963287
+15 s15 4 s4/1 -2202.64057116
+15 s15 4 s4/3 -2301.81039791
+15 s15 4 s4/6 -3097.5947528
+15 s15 4 s4/8 -2350.44748544
+15 s15 4 s4/10 -3349.64729233
+15 s15 7 s7/1 -3311.13835445
+15 s15 7 s7/3 -3267.20955526
+15 s15 7 s7/6 -2929.4992405
+15 s15 7 s7/8 -3137.60235246
+15 s15 7 s7/10 -3259.5085004
+15 s15 8 s8/1 -3351.22118121
+15 s15 8 s8/3 -3589.75913922
+15 s15 8 s8/6 -3772.85395682
+15 s15 8 s8/8 -3625.2943284
+15 s15 8 s8/10 -3654.16304296
+15 s15 9 s9/1 -2915.57607571
+15 s15 9 s9/3 -2894.11208415
+15 s15 9 s9/6 -2772.64507605
+15 s15 9 s9/8 -2588.56558412
+15 s15 9 s9/10 -3200.31211964
+15 s15 13 s13/1 -3586.37478927
+15 s15 13 s13/3 -3774.84487141
+15 s15 13 s13/6 -3542.40649551
+15 s15 13 s13/8 -3742.37638037
+15 s15 13 s13/10 -3370.21784657
+15 s15 15 s15/1 -2402.53690896
+15 s15 15 s15/3 -2367.48473176
+15 s15 15 s15/6 -2374.53446452
+15 s15 15 s15/8 -2022.0055133
+15 s15 15 s15/10 -969.500884681
+15 s15 18 s18/1 -3871.88457482
+15 s15 18 s18/3 -3148.77140084
+15 s15 18 s18/6 -3291.11248654
+15 s15 18 s18/8 -3218.72499924
+15 s15 18 s18/10 -3401.64969692
+15 s15 19 s19/1 -3757.87263186
+15 s15 19 s19/3 -4112.05649595
+15 s15 19 s19/6 -3812.79868872
+15 s15 19 s19/8 -4000.182565
+15 s15 19 s19/10 -3583.69493135
+15 s15 22 s22/1 -3195.0359962
+15 s15 22 s22/3 -3028.62720878
+15 s15 22 s22/6 -3498.44994816
+15 s15 22 s22/8 -3283.34848436
+15 s15 22 s22/10 -3446.01197175
+15 s15 23 s23/1 -3070.25974401
+15 s15 23 s23/3 -3390.20344442
+15 s15 23 s23/6 -2932.20788748
+15 s15 23 s23/8 -3571.3765668
+15 s15 23 s23/10 -2954.78677002
+15 s15 25 s25/1 -2611.29833149
+15 s15 25 s25/3 -2829.31199376
+15 s15 25 s25/6 -2714.51118348
+15 s15 25 s25/8 -2870.18228171
+15 s15 25 s25/10 -2864.16113222
+15 s15 28 s28/1 -3753.4390575
+15 s15 28 s28/3 -3623.60109655
+15 s15 28 s28/6 -3554.51786063
+15 s15 28 s28/8 -4121.24848957
+15 s15 28 s28/10 -3803.49807022
+15 s15 30 s30/1 -2649.16787496
+15 s15 30 s30/3 -2898.3050272
+15 s15 30 s30/6 -2667.58480765
+15 s15 30 s30/8 -3007.14301998
+15 s15 30 s30/10 -2629.9532381
+15 s15 31 s31/1 -2816.97617563
+15 s15 31 s31/3 -3076.41676091
+15 s15 31 s31/6 -2482.64472589
+15 s15 31 s31/8 -2679.15146696
+15 s15 31 s31/10 -3032.7179238
+15 s15 32 s32/1 -3455.24452617
+15 s15 32 s32/3 -3442.20655852
+15 s15 32 s32/6 -2990.03785573
+15 s15 32 s32/8 -3263.88075526
+15 s15 32 s32/10 -2841.40823188
+15 s15 35 s35/1 -2748.56316738
+15 s15 35 s35/3 -2025.04895307
+15 s15 35 s35/6 -2608.84048224
+15 s15 35 s35/8 -2225.51881792
+15 s15 35 s35/10 -2699.40465375
+15 s15 37 s37/1 -3776.23292984
+15 s15 37 s37/3 -3875.69905416
+15 s15 37 s37/6 -3703.36249652
+15 s15 37 s37/8 -3265.46678469
+15 s15 37 s37/10 -3826.94635927
+15 s15 38 s38/1 -3084.26750791
+15 s15 38 s38/3 -2851.27680759
+15 s15 38 s38/6 -3295.81461978
+15 s15 38 s38/8 -3172.81880218
+15 s15 38 s38/10 -2947.70788332
+15 s15 40 s40/1 -2943.88908446
+15 s15 40 s40/3 -3270.57500985
+15 s15 40 s40/6 -3019.89230379
+15 s15 40 s40/8 -2933.41439825
+15 s15 40 s40/10 -2891.00228583
+18 s18 3 s3/1 -2956.0754384
+18 s18 3 s3/3 -2753.84726042
+18 s18 3 s3/6 -3202.07741089
+18 s18 3 s3/8 -3223.11593887
+18 s18 3 s3/10 -2672.34954412
+18 s18 4 s4/1 -3433.27996686
+18 s18 4 s4/3 -3560.49800004
+18 s18 4 s4/6 -3365.12571015
+18 s18 4 s4/8 -3343.40806464
+18 s18 4 s4/10 -3335.1372178
+18 s18 7 s7/1 -4104.2010016
+18 s18 7 s7/3 -3962.80832438
+18 s18 7 s7/6 -3984.14020527
+18 s18 7 s7/8 -4326.38507592
+18 s18 7 s7/10 -3257.72684289
+18 s18 8 s8/1 -4836.19576879
+18 s18 8 s8/3 -4152.65556388
+18 s18 8 s8/6 -4134.79509243
+18 s18 8 s8/8 -4138.08421509
+18 s18 8 s8/10 -4040.64411074
+18 s18 9 s9/1 -4398.74565735
+18 s18 9 s9/3 -4257.16821011
+18 s18 9 s9/6 -4452.68844392
+18 s18 9 s9/8 -3882.39685689
+18 s18 9 s9/10 -3796.72563078
+18 s18 13 s13/1 -2740.04630919
+18 s18 13 s13/3 -3060.0403958
+18 s18 13 s13/6 -1630.54131366
+18 s18 13 s13/8 -2421.86464267
+18 s18 13 s13/10 -1997.96008334
+18 s18 15 s15/1 -3876.18244178
+18 s18 15 s15/3 -4022.47338995
+18 s18 15 s15/6 -3795.16118689
+18 s18 15 s15/8 -4223.76072291
+18 s18 15 s15/10 -3537.02525272
+18 s18 18 s18/1 -1368.23821308
+18 s18 18 s18/3 -2066.23727685
+18 s18 18 s18/6 -1587.61885353
+18 s18 18 s18/8 -1839.87833423
+18 s18 18 s18/10 -1990.61368518
+18 s18 19 s19/1 -4252.46720452
+18 s18 19 s19/3 -4139.21533354
+18 s18 19 s19/6 -4281.91841669
+18 s18 19 s19/8 -4104.2220241
+18 s18 19 s19/10 -4395.90138652
+18 s18 22 s22/1 -5777.64079119
+18 s18 22 s22/3 -5629.23262098
+18 s18 22 s22/6 -6322.34503807
+18 s18 22 s22/8 -5891.32768241
+18 s18 22 s22/10 -5932.51211239
+18 s18 23 s23/1 -4440.91979543
+18 s18 23 s23/3 -4879.48453038
+18 s18 23 s23/6 -4783.21865357
+18 s18 23 s23/8 -4380.11974451
+18 s18 23 s23/10 -4314.32765436
+18 s18 25 s25/1 -2878.87604183
+18 s18 25 s25/3 -2601.15384147
+18 s18 25 s25/6 -2763.80042895
+18 s18 25 s25/8 -3275.1127543
+18 s18 25 s25/10 -2710.48883585
+18 s18 28 s28/1 -3883.4795926
+18 s18 28 s28/3 -4014.70519937
+18 s18 28 s28/6 -3864.86883847
+18 s18 28 s28/8 -3617.13881658
+18 s18 28 s28/10 -3927.90765349
+18 s18 30 s30/1 -4917.40113865
+18 s18 30 s30/3 -5253.20232186
+18 s18 30 s30/6 -4902.57477108
+18 s18 30 s30/8 -5610.87560505
+18 s18 30 s30/10 -5071.17081244
+18 s18 31 s31/1 -4970.03856356
+18 s18 31 s31/3 -4780.61996987
+18 s18 31 s31/6 -4481.51880791
+18 s18 31 s31/8 -4749.72667526
+18 s18 31 s31/10 -4752.82800544
+18 s18 32 s32/1 -2884.34375405
+18 s18 32 s32/3 -3357.01185028
+18 s18 32 s32/6 -3294.4650071
+18 s18 32 s32/8 -3358.04252319
+18 s18 32 s32/10 -3465.1118564
+18 s18 35 s35/1 -4054.0884318
+18 s18 35 s35/3 -3541.25317234
+18 s18 35 s35/6 -2447.59004413
+18 s18 35 s35/8 -2683.93015099
+18 s18 35 s35/10 -2927.94916434
+18 s18 37 s37/1 -3388.73624303
+18 s18 37 s37/3 -3528.1627107
+18 s18 37 s37/6 -4547.2080635
+18 s18 37 s37/8 -4411.99514613
+18 s18 37 s37/10 -3340.94174374
+18 s18 38 s38/1 -4926.36256402
+18 s18 38 s38/3 -4839.07834759
+18 s18 38 s38/6 -5135.8908713
+18 s18 38 s38/8 -4499.47476968
+18 s18 38 s38/10 -4760.28286303
+18 s18 40 s40/1 -2584.2597622
+18 s18 40 s40/3 -2220.28936413
+18 s18 40 s40/6 -3041.32775422
+18 s18 40 s40/8 -2592.87675242
+18 s18 40 s40/10 -3699.5280574
+19 s19 3 s3/1 -4005.79246239
+19 s19 3 s3/3 -4118.92914119
+19 s19 3 s3/6 -3833.14889994
+19 s19 3 s3/8 -3715.575243
+19 s19 3 s3/10 -3939.12020766
+19 s19 4 s4/1 -3860.16054019
+19 s19 4 s4/3 -3381.42907685
+19 s19 4 s4/6 -2945.51696829
+19 s19 4 s4/8 -3243.10737747
+19 s19 4 s4/10 -4452.30579568
+19 s19 7 s7/1 -4507.31651077
+19 s19 7 s7/3 -4382.64231377
+19 s19 7 s7/6 -4072.18663786
+19 s19 7 s7/8 -4514.54034327
+19 s19 7 s7/10 -4232.66998104
+19 s19 8 s8/1 -3990.13253476
+19 s19 8 s8/3 -3726.14317857
+19 s19 8 s8/6 -3455.3955025
+19 s19 8 s8/8 -3531.65964868
+19 s19 8 s8/10 -3811.69795385
+19 s19 9 s9/1 -4804.84536787
+19 s19 9 s9/3 -4630.67492625
+19 s19 9 s9/6 -4542.81319946
+19 s19 9 s9/8 -4591.6733388
+19 s19 9 s9/10 -4912.24892349
+19 s19 13 s13/1 -3408.93242688
+19 s19 13 s13/3 -3636.10644374
+19 s19 13 s13/6 -3575.5230924
+19 s19 13 s13/8 -3289.4655635
+19 s19 13 s13/10 -3252.51422672
+19 s19 15 s15/1 -2502.05494556
+19 s19 15 s15/3 -2560.5900693
+19 s19 15 s15/6 -2174.31152183
+19 s19 15 s15/8 -3363.01313433
+19 s19 15 s15/10 -4132.71151481
+19 s19 18 s18/1 -4098.47532505
+19 s19 18 s18/3 -3791.90925274
+19 s19 18 s18/6 -3671.29856609
+19 s19 18 s18/8 -3836.71681672
+19 s19 18 s18/10 -4058.53157732
+19 s19 19 s19/1 -1655.10609509
+19 s19 19 s19/3 -1856.32442417
+19 s19 19 s19/6 -1981.77662831
+19 s19 19 s19/8 -1523.05351521
+19 s19 19 s19/10 -1793.32063537
+19 s19 22 s22/1 -4542.93709979
+19 s19 22 s22/3 -4635.20062189
+19 s19 22 s22/6 -5138.72256328
+19 s19 22 s22/8 -4765.76162168
+19 s19 22 s22/10 -4569.45199841
+19 s19 23 s23/1 -5065.46201531
+19 s19 23 s23/3 -5420.00135699
+19 s19 23 s23/6 -5058.84946146
+19 s19 23 s23/8 -5477.31680922
+19 s19 23 s23/10 -4714.11885335
+19 s19 25 s25/1 -4100.03600349
+19 s19 25 s25/3 -3788.16763441
+19 s19 25 s25/6 -3668.54705235
+19 s19 25 s25/8 -3174.69288854
+19 s19 25 s25/10 -3891.93512538
+19 s19 28 s28/1 -3672.44822887
+19 s19 28 s28/3 -3812.86840783
+19 s19 28 s28/6 -3780.88145851
+19 s19 28 s28/8 -4165.96288079
+19 s19 28 s28/10 -3337.29227785
+19 s19 30 s30/1 -5068.60509747
+19 s19 30 s30/3 -5434.14163217
+19 s19 30 s30/6 -5091.08219443
+19 s19 30 s30/8 -5324.80076583
+19 s19 30 s30/10 -4972.50450074
+19 s19 31 s31/1 -5305.66141746
+19 s19 31 s31/3 -3515.22861155
+19 s19 31 s31/6 -4189.50566417
+19 s19 31 s31/8 -4843.40808253
+19 s19 31 s31/10 -3660.63476966
+19 s19 32 s32/1 -2757.87174686
+19 s19 32 s32/3 -2711.40948091
+19 s19 32 s32/6 -2238.58130064
+19 s19 32 s32/8 -2184.17893198
+19 s19 32 s32/10 -2245.49686462
+19 s19 35 s35/1 -4935.13588897
+19 s19 35 s35/3 -3622.32708653
+19 s19 35 s35/6 -3149.32892904
+19 s19 35 s35/8 -3679.30587397
+19 s19 35 s35/10 -3981.87228096
+19 s19 37 s37/1 -4190.64319758
+19 s19 37 s37/3 -4273.59867669
+19 s19 37 s37/6 -3188.35987423
+19 s19 37 s37/8 -2939.93025623
+19 s19 37 s37/10 -3739.14927102
+19 s19 38 s38/1 -5132.75426835
+19 s19 38 s38/3 -4887.07661704
+19 s19 38 s38/6 -5341.51844801
+19 s19 38 s38/8 -5280.0711527
+19 s19 38 s38/10 -5097.22377921
+19 s19 40 s40/1 -4408.92556724
+19 s19 40 s40/3 -4593.0477807
+19 s19 40 s40/6 -4322.70610622
+19 s19 40 s40/8 -4277.09971507
+19 s19 40 s40/10 -4340.68119243
+22 s22 3 s3/1 -4013.83712581
+22 s22 3 s3/3 -4245.36091725
+22 s22 3 s3/6 -4722.0005028
+22 s22 3 s3/8 -4557.14551599
+22 s22 3 s3/10 -4681.20048979
+22 s22 4 s4/1 -3972.68768043
+22 s22 4 s4/3 -3803.29638751
+22 s22 4 s4/6 -4846.51452184
+22 s22 4 s4/8 -3932.32391055
+22 s22 4 s4/10 -4979.62265907
+22 s22 7 s7/1 -4500.57252797
+22 s22 7 s7/3 -4711.79647694
+22 s22 7 s7/6 -4246.06155028
+22 s22 7 s7/8 -4473.03310168
+22 s22 7 s7/10 -4771.9361284
+22 s22 8 s8/1 -4808.75178772
+22 s22 8 s8/3 -5343.98374147
+22 s22 8 s8/6 -5345.90674104
+22 s22 8 s8/8 -5506.97670535
+22 s22 8 s8/10 -5362.94961502
+22 s22 9 s9/1 -3961.80579929
+22 s22 9 s9/3 -3938.10362431
+22 s22 9 s9/6 -4430.72639074
+22 s22 9 s9/8 -4573.51790429
+22 s22 9 s9/10 -4746.78613148
+22 s22 13 s13/1 -5118.0573909
+22 s22 13 s13/3 -5607.88818019
+22 s22 13 s13/6 -5450.28639594
+22 s22 13 s13/8 -5618.92461221
+22 s22 13 s13/10 -5269.30155745
+22 s22 15 s15/1 -3288.79672215
+22 s22 15 s15/3 -3155.55321591
+22 s22 15 s15/6 -3290.84168107
+22 s22 15 s15/8 -3060.21058005
+22 s22 15 s15/10 -3611.64723744
+22 s22 18 s18/1 -6041.21843213
+22 s22 18 s18/3 -5627.85835651
+22 s22 18 s18/6 -5861.88863557
+22 s22 18 s18/8 -5749.26554893
+22 s22 18 s18/10 -6014.4979931
+22 s22 19 s19/1 -4535.04894157
+22 s22 19 s19/3 -5014.09830014
+22 s22 19 s19/6 -4377.88594459
+22 s22 19 s19/8 -4849.96254847
+22 s22 19 s19/10 -4155.11215747
+22 s22 22 s22/1 -515.267348009
+22 s22 22 s22/3 -948.789791163
+22 s22 22 s22/6 -1236.73608805
+22 s22 22 s22/8 -703.084336005
+22 s22 22 s22/10 -974.100293608
+22 s22 23 s23/1 -4848.46219366
+22 s22 23 s23/3 -4427.04439093
+22 s22 23 s23/6 -4246.68145015
+22 s22 23 s23/8 -4982.13108183
+22 s22 23 s23/10 -4667.97047257
+22 s22 25 s25/1 -4786.34227314
+22 s22 25 s25/3 -4911.21676656
+22 s22 25 s25/6 -4626.34028371
+22 s22 25 s25/8 -4656.62335836
+22 s22 25 s25/10 -4872.79827361
+22 s22 28 s28/1 -4443.72189883
+22 s22 28 s28/3 -4186.33599304
+22 s22 28 s28/6 -4236.66798511
+22 s22 28 s28/8 -4657.9993282
+22 s22 28 s28/10 -4475.19769706
+22 s22 30 s30/1 -3498.14355065
+22 s22 30 s30/3 -3666.29410946
+22 s22 30 s30/6 -3665.83521491
+22 s22 30 s30/8 -3217.52750188
+22 s22 30 s30/10 -3434.77055482
+22 s22 31 s31/1 -3556.91714853
+22 s22 31 s31/3 -3458.06518471
+22 s22 31 s31/6 -3016.7938301
+22 s22 31 s31/8 -3298.13128919
+22 s22 31 s31/10 -3434.44289401
+22 s22 32 s32/1 -5419.57225464
+22 s22 32 s32/3 -5171.4314143
+22 s22 32 s32/6 -4530.98788336
+22 s22 32 s32/8 -4837.08556526
+22 s22 32 s32/10 -4175.5812598
+22 s22 35 s35/1 -4552.24712413
+22 s22 35 s35/3 -3474.81249522
+22 s22 35 s35/6 -4649.99115585
+22 s22 35 s35/8 -4618.95104803
+22 s22 35 s35/10 -4853.86653993
+22 s22 37 s37/1 -4657.89159791
+22 s22 37 s37/3 -4753.32433721
+22 s22 37 s37/6 -3407.21749321
+22 s22 37 s37/8 -2896.36740895
+22 s22 37 s37/10 -4695.07449402
+22 s22 38 s38/1 -4441.09611284
+22 s22 38 s38/3 -3904.35113202
+22 s22 38 s38/6 -4643.11936678
+22 s22 38 s38/8 -4656.44212352
+22 s22 38 s38/10 -4053.67652122
+22 s22 40 s40/1 -4775.90517716
+22 s22 40 s40/3 -5412.87280174
+22 s22 40 s40/6 -4934.41367373
+22 s22 40 s40/8 -4823.481109
+22 s22 40 s40/10 -4752.20632024
+23 s23 3 s3/1 -3065.793728
+23 s23 3 s3/3 -3304.1012835
+23 s23 3 s3/6 -2697.94897454
+23 s23 3 s3/8 -2973.96709773
+23 s23 3 s3/10 -3566.87643249
+23 s23 4 s4/1 -3094.90242262
+23 s23 4 s4/3 -3411.1778258
+23 s23 4 s4/6 -3857.43636003
+23 s23 4 s4/8 -3478.50057655
+23 s23 4 s4/10 -3162.81838569
+23 s23 7 s7/1 -2970.79992083
+23 s23 7 s7/3 -3061.24569793
+23 s23 7 s7/6 -3027.32222561
+23 s23 7 s7/8 -2632.47938729
+23 s23 7 s7/10 -3661.11323529
+23 s23 8 s8/1 -4030.10186955
+23 s23 8 s8/3 -4046.05381812
+23 s23 8 s8/6 -4444.70155607
+23 s23 8 s8/8 -4195.29697767
+23 s23 8 s8/10 -3971.18744652
+23 s23 9 s9/1 -2465.22492143
+23 s23 9 s9/3 -2631.16651264
+23 s23 9 s9/6 -2331.92162879
+23 s23 9 s9/8 -2595.47426281
+23 s23 9 s9/10 -3109.15007245
+23 s23 13 s13/1 -4925.13286069
+23 s23 13 s13/3 -5261.47692111
+23 s23 13 s13/6 -4728.2214681
+23 s23 13 s13/8 -4804.98067266
+23 s23 13 s13/10 -4585.90879842
+23 s23 15 s15/1 -3513.75609217
+23 s23 15 s15/3 -3547.3463239
+23 s23 15 s15/6 -3652.02243904
+23 s23 15 s15/8 -3701.23646049
+23 s23 15 s15/10 -2773.22918254
+23 s23 18 s18/1 -4497.83217492
+23 s23 18 s18/3 -4301.17531852
+23 s23 18 s18/6 -4468.58853409
+23 s23 18 s18/8 -4424.05826795
+23 s23 18 s18/10 -4098.27151373
+23 s23 19 s19/1 -5223.28531335
+23 s23 19 s19/3 -5610.25680194
+23 s23 19 s19/6 -5351.32214373
+23 s23 19 s19/8 -5291.98946574
+23 s23 19 s19/10 -5051.51557636
+23 s23 22 s22/1 -4207.6908045
+23 s23 22 s22/3 -4053.78539765
+23 s23 22 s22/6 -4258.27826468
+23 s23 22 s22/8 -4411.93016966
+23 s23 22 s22/10 -4706.94088805
+23 s23 23 s23/1 -1879.51262825
+23 s23 23 s23/3 -1794.12311521
+23 s23 23 s23/6 -1253.49476703
+23 s23 23 s23/8 -1932.52036884
+23 s23 23 s23/10 -1955.91394431
+23 s23 25 s25/1 -3123.01825674
+23 s23 25 s25/3 -3316.35999994
+23 s23 25 s25/6 -3614.98555187
+23 s23 25 s25/8 -3803.60236161
+23 s23 25 s25/10 -3402.73744394
+23 s23 28 s28/1 -5279.40944257
+23 s23 28 s28/3 -5064.11538426
+23 s23 28 s28/6 -5055.93827636
+23 s23 28 s28/8 -5065.31467415
+23 s23 28 s28/10 -5178.60269835
+23 s23 30 s30/1 -2554.16599194
+23 s23 30 s30/3 -2376.32433571
+23 s23 30 s30/6 -2383.73666842
+23 s23 30 s30/8 -3071.95287764
+23 s23 30 s30/10 -2516.99715024
+23 s23 31 s31/1 -2762.73930966
+23 s23 31 s31/3 -4528.00262345
+23 s23 31 s31/6 -3396.31487831
+23 s23 31 s31/8 -3130.10792911
+23 s23 31 s31/10 -4470.28306039
+23 s23 32 s32/1 -4537.19613397
+23 s23 32 s32/3 -4949.68831805
+23 s23 32 s32/6 -4004.08246528
+23 s23 32 s32/8 -4583.91867321
+23 s23 32 s32/10 -3911.71276254
+23 s23 35 s35/1 -3178.23727789
+23 s23 35 s35/3 -4169.62277632
+23 s23 35 s35/6 -3801.6848293
+23 s23 35 s35/8 -3398.16793702
+23 s23 35 s35/10 -3728.28743801
+23 s23 37 s37/1 -5014.94351534
+23 s23 37 s37/3 -5172.0063639
+23 s23 37 s37/6 -5156.52421938
+23 s23 37 s37/8 -4788.3829074
+23 s23 37 s37/10 -5104.5348761
+23 s23 38 s38/1 -1880.96858467
+23 s23 38 s38/3 -2573.59823519
+23 s23 38 s38/6 -1714.16722371
+23 s23 38 s38/8 -2167.66742222
+23 s23 38 s38/10 -1955.26863906
+23 s23 40 s40/1 -3445.08418791
+23 s23 40 s40/3 -3641.3180666
+23 s23 40 s40/6 -3453.03156199
+23 s23 40 s40/8 -3560.2184106
+23 s23 40 s40/10 -3218.5535354
+25 s25 3 s3/1 -2329.44030111
+25 s25 3 s3/3 -2840.82679839
+25 s25 3 s3/6 -2617.51310471
+25 s25 3 s3/8 -2589.40533444
+25 s25 3 s3/10 -3131.96090955
+25 s25 4 s4/1 -2341.42599985
+25 s25 4 s4/3 -2138.24343048
+25 s25 4 s4/6 -2588.53367105
+25 s25 4 s4/8 -2112.51058765
+25 s25 4 s4/10 -3405.71001087
+25 s25 7 s7/1 -4405.81440483
+25 s25 7 s7/3 -4315.60479214
+25 s25 7 s7/6 -4059.91436578
+25 s25 7 s7/8 -4347.02735436
+25 s25 7 s7/10 -4085.14799994
+25 s25 8 s8/1 -3964.4355233
+25 s25 8 s8/3 -3848.83262637
+25 s25 8 s8/6 -3972.95654206
+25 s25 8 s8/8 -3711.48917503
+25 s25 8 s8/10 -3858.17849827
+25 s25 9 s9/1 -3333.50104347
+25 s25 9 s9/3 -3143.60390272
+25 s25 9 s9/6 -3055.56925526
+25 s25 9 s9/8 -2993.60713502
+25 s25 9 s9/10 -3472.42961378
+25 s25 13 s13/1 -2481.39989591
+25 s25 13 s13/3 -3310.77716289
+25 s25 13 s13/6 -2880.99606547
+25 s25 13 s13/8 -2766.27796515
+25 s25 13 s13/10 -2532.27222606
+25 s25 15 s15/1 -3279.68222934
+25 s25 15 s15/3 -3377.99742875
+25 s25 15 s15/6 -3150.34334081
+25 s25 15 s15/8 -3544.02251423
+25 s25 15 s15/10 -2544.41193594
+25 s25 18 s18/1 -3428.56105084
+25 s25 18 s18/3 -2314.42745202
+25 s25 18 s18/6 -2886.36192677
+25 s25 18 s18/8 -2545.05739956
+25 s25 18 s18/10 -2908.12292822
+25 s25 19 s19/1 -3343.86910217
+25 s25 19 s19/3 -3543.28909774
+25 s25 19 s19/6 -3365.40096021
+25 s25 19 s19/8 -3876.75857854
+25 s25 19 s19/10 -3189.69426311
+25 s25 22 s22/1 -4304.68450911
+25 s25 22 s22/3 -4163.02903211
+25 s25 22 s22/6 -4817.65197756
+25 s25 22 s22/8 -4451.18722857
+25 s25 22 s22/10 -4471.29497265
+25 s25 23 s23/1 -3794.61832674
+25 s25 23 s23/3 -4168.8206655
+25 s25 23 s23/6 -3523.84366372
+25 s25 23 s23/8 -4313.06370365
+25 s25 23 s23/10 -3608.02088704
+25 s25 25 s25/1 -1838.60862847
+25 s25 25 s25/3 -1782.56863456
+25 s25 25 s25/6 -1216.40330853
+25 s25 25 s25/8 -1750.899971
+25 s25 25 s25/10 -1838.89845752
+25 s25 28 s28/1 -3634.10212113
+25 s25 28 s28/3 -3424.76087525
+25 s25 28 s28/6 -3470.36152622
+25 s25 28 s28/8 -3840.14976053
+25 s25 28 s28/10 -3294.02273488
+25 s25 30 s30/1 -3732.82801593
+25 s25 30 s30/3 -4034.50397355
+25 s25 30 s30/6 -3895.80456991
+25 s25 30 s30/8 -4159.03526867
+25 s25 30 s30/10 -3659.54249067
+25 s25 31 s31/1 -3770.18624237
+25 s25 31 s31/3 -3487.74961013
+25 s25 31 s31/6 -2903.11810446
+25 s25 31 s31/8 -3406.07700979
+25 s25 31 s31/10 -3491.37591069
+25 s25 32 s32/1 -3090.8704628
+25 s25 32 s32/3 -2982.2893244
+25 s25 32 s32/6 -2928.50863376
+25 s25 32 s32/8 -2970.6854678
+25 s25 32 s32/10 -2948.27100708
+25 s25 35 s35/1 -3170.61334149
+25 s25 35 s35/3 -2696.64961689
+25 s25 35 s35/6 -1972.04360821
+25 s25 35 s35/8 -2161.00210149
+25 s25 35 s35/10 -3099.22511213
+25 s25 37 s37/1 -3605.089065
+25 s25 37 s37/3 -3797.33965343
+25 s25 37 s37/6 -3754.47967655
+25 s25 37 s37/8 -3353.7051036
+25 s25 37 s37/10 -3503.75382349
+25 s25 38 s38/1 -3641.71938148
+25 s25 38 s38/3 -3350.24606883
+25 s25 38 s38/6 -3906.65418999
+25 s25 38 s38/8 -3910.46997475
+25 s25 38 s38/10 -3809.94789038
+25 s25 40 s40/1 -2884.1708444
+25 s25 40 s40/3 -3383.93941208
+25 s25 40 s40/6 -2857.00240553
+25 s25 40 s40/8 -2697.34629589
+25 s25 40 s40/10 -2657.30514148
+28 s28 3 s3/1 -3343.13203827
+28 s28 3 s3/3 -3479.74879865
+28 s28 3 s3/6 -3647.43620707
+28 s28 3 s3/8 -3523.3625319
+28 s28 3 s3/10 -3513.08010005
+28 s28 4 s4/1 -3536.27254189
+28 s28 4 s4/3 -3179.88974284
+28 s28 4 s4/6 -3287.28292174
+28 s28 4 s4/8 -3081.13132712
+28 s28 4 s4/10 -4084.05996736
+28 s28 7 s7/1 -4099.21523338
+28 s28 7 s7/3 -4161.40756193
+28 s28 7 s7/6 -3784.13515954
+28 s28 7 s7/8 -4253.64258383
+28 s28 7 s7/10 -3818.67816343
+28 s28 8 s8/1 -4332.70279236
+28 s28 8 s8/3 -4307.15653445
+28 s28 8 s8/6 -4173.91805596
+28 s28 8 s8/8 -4294.37274636
+28 s28 8 s8/10 -4255.55759304
+28 s28 9 s9/1 -4363.99319121
+28 s28 9 s9/3 -4119.6475689
+28 s28 9 s9/6 -4347.27499476
+28 s28 9 s9/8 -4355.09835002
+28 s28 9 s9/10 -4454.41667374
+28 s28 13 s13/1 -3427.68004988
+28 s28 13 s13/3 -3894.83224322
+28 s28 13 s13/6 -3518.23779878
+28 s28 13 s13/8 -3597.2422859
+28 s28 13 s13/10 -3331.20191065
+28 s28 15 s15/1 -2323.51302233
+28 s28 15 s15/3 -2362.00431219
+28 s28 15 s15/6 -2125.98012646
+28 s28 15 s15/8 -3053.4200304
+28 s28 15 s15/10 -3712.17094447
+28 s28 18 s18/1 -4130.08684075
+28 s28 18 s18/3 -3912.59060716
+28 s28 18 s18/6 -3915.74148171
+28 s28 18 s18/8 -3952.48281946
+28 s28 18 s18/10 -4313.03277019
+28 s28 19 s19/1 -2330.25832055
+28 s28 19 s19/3 -2587.91598855
+28 s28 19 s19/6 -2453.72496914
+28 s28 19 s19/8 -2614.40674008
+28 s28 19 s19/10 -2369.94510467
+28 s28 22 s22/1 -3586.97324551
+28 s28 22 s22/3 -3704.40336174
+28 s28 22 s22/6 -4209.35570582
+28 s28 22 s22/8 -3860.98889304
+28 s28 22 s22/10 -3711.03609186
+28 s28 23 s23/1 -4726.31138129
+28 s28 23 s23/3 -4879.52411067
+28 s28 23 s23/6 -4595.7550428
+28 s28 23 s23/8 -4931.96090397
+28 s28 23 s23/10 -4391.21594075
+28 s28 25 s25/1 -3802.92084037
+28 s28 25 s25/3 -3634.05810549
+28 s28 25 s25/6 -3465.07743388
+28 s28 25 s25/8 -3264.71440694
+28 s28 25 s25/10 -3666.63727597
+28 s28 28 s28/1 -2986.81952345
+28 s28 28 s28/3 -3081.51548619
+28 s28 28 s28/6 -2984.96527253
+28 s28 28 s28/8 -3279.0341711
+28 s28 28 s28/10 -2852.94390455
+28 s28 30 s30/1 -4583.97997175
+28 s28 30 s30/3 -4963.26130459
+28 s28 30 s30/6 -4652.29130916
+28 s28 30 s30/8 -4858.98844591
+28 s28 30 s30/10 -4539.14989958
+28 s28 31 s31/1 -4601.00652661
+28 s28 31 s31/3 -3130.82374316
+28 s28 31 s31/6 -3477.47758598
+28 s28 31 s31/8 -4159.77114721
+28 s28 31 s31/10 -3147.93322094
+28 s28 32 s32/1 -3170.92803926
+28 s28 32 s32/3 -3075.19829312
+28 s28 32 s32/6 -2584.91437959
+28 s28 32 s32/8 -2642.44907404
+28 s28 32 s32/10 -2362.34409511
+28 s28 35 s35/1 -4535.74623183
+28 s28 35 s35/3 -3186.07643383
+28 s28 35 s35/6 -3156.70592316
+28 s28 35 s35/8 -3493.69792028
+28 s28 35 s35/10 -3704.77841057
+28 s28 37 s37/1 -3406.47248485
+28 s28 37 s37/3 -3507.23804154
+28 s28 37 s37/6 -2084.05575339
+28 s28 37 s37/8 -1769.18045321
+28 s28 37 s37/10 -3134.97429258
+28 s28 38 s38/1 -4887.38217448
+28 s28 38 s38/3 -4504.3661083
+28 s28 38 s38/6 -5127.43366899
+28 s28 38 s38/8 -4986.48662022
+28 s28 38 s38/10 -4667.74987614
+28 s28 40 s40/1 -3958.09669873
+28 s28 40 s40/3 -4200.01409183
+28 s28 40 s40/6 -4210.01283002
+28 s28 40 s40/8 -3954.86517811
+28 s28 40 s40/10 -4202.50025715
+30 s30 3 s3/1 -3913.00733265
+30 s30 3 s3/3 -4345.05141324
+30 s30 3 s3/6 -4031.3020103
+30 s30 3 s3/8 -4218.16474898
+30 s30 3 s3/10 -4701.93820993
+30 s30 4 s4/1 -3481.8768697
+30 s30 4 s4/3 -3739.48900015
+30 s30 4 s4/6 -4692.20061636
+30 s30 4 s4/8 -3835.0624544
+30 s30 4 s4/10 -4319.02602269
+30 s30 7 s7/1 -4063.53450929
+30 s30 7 s7/3 -4139.64880935
+30 s30 7 s7/6 -4012.38820175
+30 s30 7 s7/8 -3830.81385156
+30 s30 7 s7/10 -4624.7437418
+30 s30 8 s8/1 -4619.44653813
+30 s30 8 s8/3 -4833.26913827
+30 s30 8 s8/6 -5224.74104042
+30 s30 8 s8/8 -4904.41346544
+30 s30 8 s8/10 -4847.99263946
+30 s30 9 s9/1 -2975.73424387
+30 s30 9 s9/3 -3139.78450061
+30 s30 9 s9/6 -3170.31878614
+30 s30 9 s9/8 -3313.98776978
+30 s30 9 s9/10 -3925.41954159
+30 s30 13 s13/1 -5798.30896077
+30 s30 13 s13/3 -6244.65250104
+30 s30 13 s13/6 -5926.20292869
+30 s30 13 s13/8 -6036.52752935
+30 s30 13 s13/10 -5783.59604252
+30 s30 15 s15/1 -3763.88171871
+30 s30 15 s15/3 -3689.04823233
+30 s30 15 s15/6 -3919.43102002
+30 s30 15 s15/8 -3318.33723667
+30 s30 15 s15/10 -3002.84890822
+30 s30 18 s18/1 -5962.32886757
+30 s30 18 s18/3 -5524.26290721
+30 s30 18 s18/6 -5772.92084517
+30 s30 18 s18/8 -5592.16865828
+30 s30 18 s18/10 -5499.46776906
+30 s30 19 s19/1 -5471.7855931
+30 s30 19 s19/3 -6047.05163418
+30 s30 19 s19/6 -5699.94451026
+30 s30 19 s19/8 -5979.04374791
+30 s30 19 s19/10 -5254.62480286
+30 s30 22 s22/1 -3146.86740793
+30 s30 22 s22/3 -2879.21295297
+30 s30 22 s22/6 -3061.91597599
+30 s30 22 s22/8 -3258.40420461
+30 s30 22 s22/10 -3761.46166507
+30 s30 23 s23/1 -3375.6338731
+30 s30 23 s23/3 -2978.92747129
+30 s30 23 s23/6 -2705.31036504
+30 s30 23 s23/8 -3598.22134369
+30 s30 23 s23/10 -3394.24856588
+30 s30 25 s25/1 -4041.15819454
+30 s30 25 s25/3 -4297.37052267
+30 s30 25 s25/6 -4308.49765575
+30 s30 25 s25/8 -4652.21834027
+30 s30 25 s25/10 -4336.26693869
+30 s30 28 s28/1 -6076.53361463
+30 s30 28 s28/3 -5816.51880993
+30 s30 28 s28/6 -5833.38920666
+30 s30 28 s28/8 -6053.47393294
+30 s30 28 s28/10 -5992.22370309
+30 s30 30 s30/1 -1695.33118524
+30 s30 30 s30/3 -1608.11413011
+30 s30 30 s30/6 -1499.75038695
+30 s30 30 s30/8 -825.90900339
+30 s30 30 s30/10 -1437.95656679
+30 s30 31 s31/1 -2356.43835638
+30 s30 31 s31/3 -4055.42384883
+30 s30 31 s31/6 -2919.51134664
+30 s30 31 s31/8 -2633.93536299
+30 s30 31 s31/10 -4006.795115
+30 s30 32 s32/1 -5481.03063405
+30 s30 32 s32/3 -5526.14236159
+30 s30 32 s32/6 -4775.53057542
+30 s30 32 s32/8 -5291.11139842
+30 s30 32 s32/10 -4528.57215715
+30 s30 35 s35/1 -3640.3288671
+30 s30 35 s35/3 -4208.79565148
+30 s30 35 s35/6 -4518.29965451
+30 s30 35 s35/8 -4062.94446209
+30 s30 35 s35/10 -4649.9587983
+30 s30 37 s37/1 -5984.78222918
+30 s30 37 s37/3 -6136.4322262
+30 s30 37 s37/6 -5474.86705904
+30 s30 37 s37/8 -4947.21766845
+30 s30 37 s37/10 -6085.5670564
+30 s30 38 s38/1 -3028.99255218
+30 s30 38 s38/3 -2918.55614479
+30 s30 38 s38/6 -3039.57294451
+30 s30 38 s38/8 -3207.95262708
+30 s30 38 s38/10 -2745.00190154
+30 s30 40 s40/1 -4634.95426544
+30 s30 40 s40/3 -5014.31076122
+30 s30 40 s40/6 -4476.16998797
+30 s30 40 s40/8 -4603.99325218
+30 s30 40 s40/10 -4357.37992428
+31 s31 3 s3/1 -3294.69415772
+31 s31 3 s3/3 -3557.88055283
+31 s31 3 s3/6 -3617.60373216
+31 s31 3 s3/8 -3736.1793475
+31 s31 3 s3/10 -4055.32742762
+31 s31 4 s4/1 -3043.46778458
+31 s31 4 s4/3 -3023.23998174
+31 s31 4 s4/6 -3728.16930154
+31 s31 4 s4/8 -2978.33707274
+31 s31 4 s4/10 -3803.69514613
+31 s31 7 s7/1 -3908.23309344
+31 s31 7 s7/3 -3946.16493716
+31 s31 7 s7/6 -3857.43168016
+31 s31 7 s7/8 -4039.50737097
+31 s31 7 s7/10 -3910.4052828
+31 s31 8 s8/1 -4523.85343244
+31 s31 8 s8/3 -4652.36177247
+31 s31 8 s8/6 -4903.43793328
+31 s31 8 s8/8 -4586.26265549
+31 s31 8 s8/10 -4635.5875901
+31 s31 9 s9/1 -3171.57454251
+31 s31 9 s9/3 -3068.93748052
+31 s31 9 s9/6 -3304.14498655
+31 s31 9 s9/8 -3462.79992375
+31 s31 9 s9/10 -3660.99143487
+31 s31 13 s13/1 -4425.26237254
+31 s31 13 s13/3 -4887.90456047
+31 s31 13 s13/6 -4543.10357587
+31 s31 13 s13/8 -4634.50875902
+31 s31 13 s13/10 -4423.75586687
+31 s31 15 s15/1 -2653.96880799
+31 s31 15 s15/3 -2674.72545803
+31 s31 15 s15/6 -2745.06735481
+31 s31 15 s15/8 -2346.42288294
+31 s31 15 s15/10 -2495.08709261
+31 s31 18 s18/1 -4789.84400569
+31 s31 18 s18/3 -4304.64348271
+31 s31 18 s18/6 -4618.95118142
+31 s31 18 s18/8 -4359.95159701
+31 s31 18 s18/10 -4574.80266252
+31 s31 19 s19/1 -3802.18582905
+31 s31 19 s19/3 -4279.32466407
+31 s31 19 s19/6 -4223.2929879
+31 s31 19 s19/8 -4694.10862641
+31 s31 19 s19/10 -3880.49209192
+31 s31 22 s22/1 -2743.51602101
+31 s31 22 s22/3 -2593.27686403
+31 s31 22 s22/6 -3133.32442951
+31 s31 22 s22/8 -2997.20411043
+31 s31 22 s22/10 -3149.36484519
+31 s31 23 s23/1 -3905.79070148
+31 s31 23 s23/3 -3679.30549599
+31 s31 23 s23/6 -3307.17298559
+31 s31 23 s23/8 -4001.95959155
+31 s31 23 s23/10 -3759.27839067
+31 s31 25 s25/1 -3366.66588954
+31 s31 25 s25/3 -3515.54391224
+31 s31 25 s25/6 -3318.17438283
+31 s31 25 s25/8 -3615.32411462
+31 s31 25 s25/10 -3476.17240873
+31 s31 28 s28/1 -4713.20512491
+31 s31 28 s28/3 -4579.26031206
+31 s31 28 s28/6 -4544.75232505
+31 s31 28 s28/8 -4801.17980935
+31 s31 28 s28/10 -4593.27737246
+31 s31 30 s30/1 -2674.14867654
+31 s31 30 s30/3 -3005.96043866
+31 s31 30 s30/6 -2829.01846893
+31 s31 30 s30/8 -2483.52177124
+31 s31 30 s30/10 -2549.22458936
+31 s31 31 s31/1 -2724.2754152
+31 s31 31 s31/3 -1857.41403824
+31 s31 31 s31/6 -1973.44433813
+31 s31 31 s31/8 -2513.49716235
+31 s31 31 s31/10 -1820.97103732
+31 s31 32 s32/1 -3973.23686415
+31 s31 32 s32/3 -3943.5738161
+31 s31 32 s32/6 -3606.32094631
+31 s31 32 s32/8 -3785.05453983
+31 s31 32 s32/10 -3356.11317668
+31 s31 35 s35/1 -3137.66816407
+31 s31 35 s35/3 -2852.55321543
+31 s31 35 s35/6 -3241.79608545
+31 s31 35 s35/8 -3022.29091214
+31 s31 35 s35/10 -3552.58870649
+31 s31 37 s37/1 -4703.79279182
+31 s31 37 s37/3 -4833.07734018
+31 s31 37 s37/6 -3907.52926699
+31 s31 37 s37/8 -3487.72961561
+31 s31 37 s37/10 -4719.02596974
+31 s31 38 s38/1 -3804.69487163
+31 s31 38 s38/3 -3545.79490704
+31 s31 38 s38/6 -3960.3768924
+31 s31 38 s38/8 -3950.49614872
+31 s31 38 s38/10 -3699.42709121
+31 s31 40 s40/1 -3886.98211706
+31 s31 40 s40/3 -4191.18238079
+31 s31 40 s40/6 -4066.15707928
+31 s31 40 s40/8 -3980.62440027
+31 s31 40 s40/10 -3984.41323747
+32 s32 3 s3/1 -3481.44865816
+32 s32 3 s3/3 -3595.59422267
+32 s32 3 s3/6 -3340.32436965
+32 s32 3 s3/8 -3530.55916379
+32 s32 3 s3/10 -3733.86113116
+32 s32 4 s4/1 -3415.99834875
+32 s32 4 s4/3 -3352.85775891
+32 s32 4 s4/6 -3257.52441401
+32 s32 4 s4/8 -3216.48660203
+32 s32 4 s4/10 -3879.77419768
+32 s32 7 s7/1 -3996.80171914
+32 s32 7 s7/3 -3800.22323738
+32 s32 7 s7/6 -3599.63763993
+32 s32 7 s7/8 -4023.09287769
+32 s32 7 s7/10 -3723.8961306
+32 s32 8 s8/1 -3927.44454704
+32 s32 8 s8/3 -3676.39887399
+32 s32 8 s8/6 -3720.73898374
+32 s32 8 s8/8 -3447.80882094
+32 s32 8 s8/10 -3643.68488641
+32 s32 9 s9/1 -4359.49267419
+32 s32 9 s9/3 -4222.77898444
+32 s32 9 s9/6 -4216.79980363
+32 s32 9 s9/8 -4140.4437327
+32 s32 9 s9/10 -4450.82974639
+32 s32 13 s13/1 -3308.04268181
+32 s32 13 s13/3 -3580.13299752
+32 s32 13 s13/6 -3159.09017895
+32 s32 13 s13/8 -3283.76704583
+32 s32 13 s13/10 -3080.31334708
+32 s32 15 s15/1 -2398.62231509
+32 s32 15 s15/3 -2503.02526136
+32 s32 15 s15/6 -2209.21900396
+32 s32 15 s15/8 -3036.37839137
+32 s32 15 s15/10 -3490.34409742
+32 s32 18 s18/1 -3303.33083543
+32 s32 18 s18/3 -2913.41746349
+32 s32 18 s18/6 -3008.40792755
+32 s32 18 s18/8 -2873.03663611
+32 s32 18 s18/10 -3197.93494951
+32 s32 19 s19/1 -2619.90662239
+32 s32 19 s19/3 -2734.07164667
+32 s32 19 s19/6 -3126.62695763
+32 s32 19 s19/8 -2986.49752003
+32 s32 19 s19/10 -2953.1627146
+32 s32 22 s22/1 -4760.38387621
+32 s32 22 s22/3 -4753.34213918
+32 s32 22 s22/6 -5278.21922142
+32 s32 22 s22/8 -5031.68731869
+32 s32 22 s22/10 -5008.58954608
+32 s32 23 s23/1 -4424.88536858
+32 s32 23 s23/3 -4720.8973672
+32 s32 23 s23/6 -4350.28166904
+32 s32 23 s23/8 -4771.40699913
+32 s32 23 s23/10 -4202.95712702
+32 s32 25 s25/1 -3402.83132332
+32 s32 25 s25/3 -3225.41484415
+32 s32 25 s25/6 -3027.31174396
+32 s32 25 s25/8 -3207.78734977
+32 s32 25 s25/10 -3260.90211767
+32 s32 28 s28/1 -4262.18547504
+32 s32 28 s28/3 -4313.88973205
+32 s32 28 s28/6 -4300.78708628
+32 s32 28 s28/8 -4384.79956853
+32 s32 28 s28/10 -3808.79171646
+32 s32 30 s30/1 -4586.57713103
+32 s32 30 s30/3 -4857.61993231
+32 s32 30 s30/6 -4608.97429863
+32 s32 30 s30/8 -4894.14196906
+32 s32 30 s30/10 -4530.84126705
+32 s32 31 s31/1 -4965.28305801
+32 s32 31 s31/3 -3232.97665263
+32 s32 31 s31/6 -4109.43022166
+32 s32 31 s31/8 -4700.69670199
+32 s32 31 s31/10 -3158.6222623
+32 s32 32 s32/1 -1400.04142319
+32 s32 32 s32/3 -1471.63862249
+32 s32 32 s32/6 -1516.39381803
+32 s32 32 s32/8 -1179.08179137
+32 s32 32 s32/10 -1606.25051683
+32 s32 35 s35/1 -3998.48265398
+32 s32 35 s35/3 -3357.37138441
+32 s32 35 s35/6 -2802.69294465
+32 s32 35 s35/8 -3137.78371976
+32 s32 35 s35/10 -3394.4396583
+32 s32 37 s37/1 -4383.78071256
+32 s32 37 s37/3 -4454.22960435
+32 s32 37 s37/6 -3651.92757765
+32 s32 37 s37/8 -3432.14617407
+32 s32 37 s37/10 -4075.51765463
+32 s32 38 s38/1 -4684.65223915
+32 s32 38 s38/3 -4481.2456882
+32 s32 38 s38/6 -4819.61377814
+32 s32 38 s38/8 -4752.66048128
+32 s32 38 s38/10 -4679.25783168
+32 s32 40 s40/1 -3713.20737165
+32 s32 40 s40/3 -3993.88791391
+32 s32 40 s40/6 -3706.94187692
+32 s32 40 s40/8 -3660.09483497
+32 s32 40 s40/10 -3638.98252641
+35 s35 3 s3/1 -2629.99743718
+35 s35 3 s3/3 -2728.48998423
+35 s35 3 s3/6 -2929.77990244
+35 s35 3 s3/8 -2737.72206345
+35 s35 3 s3/10 -2949.71829906
+35 s35 4 s4/1 -2601.23631638
+35 s35 4 s4/3 -2396.55979124
+35 s35 4 s4/6 -2546.29151109
+35 s35 4 s4/8 -2339.13926292
+35 s35 4 s4/10 -3324.81878496
+35 s35 7 s7/1 -3913.13111744
+35 s35 7 s7/3 -3876.07567135
+35 s35 7 s7/6 -3672.47456635
+35 s35 7 s7/8 -3980.36207192
+35 s35 7 s7/10 -3347.45454423
+35 s35 8 s8/1 -4038.67376066
+35 s35 8 s8/3 -3806.1353599
+35 s35 8 s8/6 -3898.74319573
+35 s35 8 s8/8 -3816.06122627
+35 s35 8 s8/10 -3849.60319515
+35 s35 9 s9/1 -3502.24046593
+35 s35 9 s9/3 -3385.56018459
+35 s35 9 s9/6 -3406.93863815
+35 s35 9 s9/8 -3107.60749355
+35 s35 9 s9/10 -3389.4402753
+35 s35 13 s13/1 -2624.28110155
+35 s35 13 s13/3 -2765.94302571
+35 s35 13 s13/6 -2543.86600788
+35 s35 13 s13/8 -2650.98496007
+35 s35 13 s13/10 -2343.05172093
+35 s35 15 s15/1 -2993.10453694
+35 s35 15 s15/3 -3076.91109514
+35 s35 15 s15/6 -2861.95651434
+35 s35 15 s15/8 -3031.66118545
+35 s35 15 s15/10 -2109.33741856
+35 s35 18 s18/1 -3035.49730933
+35 s35 18 s18/3 -2313.33089252
+35 s35 18 s18/6 -2511.11161463
+35 s35 18 s18/8 -2454.69728093
+35 s35 18 s18/10 -2654.99253428
+35 s35 19 s19/1 -3399.99579481
+35 s35 19 s19/3 -3545.84878311
+35 s35 19 s19/6 -3342.75380654
+35 s35 19 s19/8 -3644.82417017
+35 s35 19 s19/10 -3342.46548391
+35 s35 22 s22/1 -4144.58588782
+35 s35 22 s22/3 -4013.39977843
+35 s35 22 s22/6 -4569.5954763
+35 s35 22 s22/8 -4253.70722731
+35 s35 22 s22/10 -4172.92650511
+35 s35 23 s23/1 -3879.24107414
+35 s35 23 s23/3 -4182.86068514
+35 s35 23 s23/6 -3826.88461692
+35 s35 23 s23/8 -4164.38029282
+35 s35 23 s23/10 -3700.40739818
+35 s35 25 s25/1 -2353.51220217
+35 s35 25 s25/3 -2351.75940108
+35 s35 25 s25/6 -2215.93558444
+35 s35 25 s25/8 -2281.75100329
+35 s35 25 s25/10 -2396.53146639
+35 s35 28 s28/1 -3242.62293578
+35 s35 28 s28/3 -3145.54405433
+35 s35 28 s28/6 -3161.69901133
+35 s35 28 s28/8 -3460.48280145
+35 s35 28 s28/10 -3130.20867157
+35 s35 30 s30/1 -3719.69872843
+35 s35 30 s30/3 -4033.57701225
+35 s35 30 s30/6 -3835.96540364
+35 s35 30 s30/8 -4213.43393094
+35 s35 30 s30/10 -3737.83513544
+35 s35 31 s31/1 -3637.87436761
+35 s35 31 s31/3 -3257.6985864
+35 s35 31 s31/6 -2823.29980411
+35 s35 31 s31/8 -3301.15243938
+35 s35 31 s31/10 -3281.1310619
+35 s35 32 s32/1 -2982.21528736
+35 s35 32 s32/3 -3153.57772893
+35 s35 32 s32/6 -2910.44123827
+35 s35 32 s32/8 -2934.4008954
+35 s35 32 s32/10 -2908.80485422
+35 s35 35 s35/1 -3027.39385142
+35 s35 35 s35/3 -1977.74812817
+35 s35 35 s35/6 -1777.94978034
+35 s35 35 s35/8 -1726.81146917
+35 s35 35 s35/10 -2337.52098854
+35 s35 37 s37/1 -3083.80116802
+35 s35 37 s37/3 -3175.91404615
+35 s35 37 s37/6 -3564.29392185
+35 s35 37 s37/8 -3242.77652296
+35 s35 37 s37/10 -3104.98121563
+35 s35 38 s38/1 -3949.35061046
+35 s35 38 s38/3 -3787.29739957
+35 s35 38 s38/6 -4217.60402972
+35 s35 38 s38/8 -3878.23065452
+35 s35 38 s38/10 -3938.91071819
+35 s35 40 s40/1 -2492.86221414
+35 s35 40 s40/3 -2685.54559886
+35 s35 40 s40/6 -2855.14417866
+35 s35 40 s40/8 -2565.77623868
+35 s35 40 s40/10 -3047.82986247
+37 s37 3 s3/1 -3347.73193542
+37 s37 3 s3/3 -3386.29089298
+37 s37 3 s3/6 -4145.74220476
+37 s37 3 s3/8 -3841.49225099
+37 s37 3 s3/10 -3708.19810549
+37 s37 4 s4/1 -3992.94431208
+37 s37 4 s4/3 -3674.34102399
+37 s37 4 s4/6 -4056.12617671
+37 s37 4 s4/8 -3687.67324754
+37 s37 4 s4/10 -4723.12608509
+37 s37 7 s7/1 -4671.00523462
+37 s37 7 s7/3 -4852.12652774
+37 s37 7 s7/6 -4358.69169597
+37 s37 7 s7/8 -4761.07266948
+37 s37 7 s7/10 -4244.93718081
+37 s37 8 s8/1 -4888.13275433
+37 s37 8 s8/3 -5222.4471334
+37 s37 8 s8/6 -4989.53297198
+37 s37 8 s8/8 -5380.61437698
+37 s37 8 s8/10 -5245.10245345
+37 s37 9 s9/1 -4461.97197329
+37 s37 9 s9/3 -4317.86362434
+37 s37 9 s9/6 -4763.27936789
+37 s37 9 s9/8 -4706.75225409
+37 s37 9 s9/10 -4762.90492801
+37 s37 13 s13/1 -2705.98850595
+37 s37 13 s13/3 -3492.47406384
+37 s37 13 s13/6 -3208.28121704
+37 s37 13 s13/8 -3204.92184035
+37 s37 13 s13/10 -2846.81650282
+37 s37 15 s15/1 -3475.5819192
+37 s37 15 s15/3 -3500.44254169
+37 s37 15 s15/6 -3253.21773129
+37 s37 15 s15/8 -3869.45696446
+37 s37 15 s15/10 -3735.74466224
+37 s37 18 s18/1 -4248.18462448
+37 s37 18 s18/3 -3835.2689915
+37 s37 18 s18/6 -3988.82120835
+37 s37 18 s18/8 -4000.35744946
+37 s37 18 s18/10 -4415.8952017
+37 s37 19 s19/1 -3428.65549423
+37 s37 19 s19/3 -3334.64597979
+37 s37 19 s19/6 -2745.93723939
+37 s37 19 s19/8 -3126.11526158
+37 s37 19 s19/10 -3246.85900974
+37 s37 22 s22/1 -3802.08835708
+37 s37 22 s22/3 -3898.95474126
+37 s37 22 s22/6 -4369.19801658
+37 s37 22 s22/8 -3907.1245176
+37 s37 22 s22/10 -3607.64737813
+37 s37 23 s23/1 -5205.00445868
+37 s37 23 s23/3 -5168.54275138
+37 s37 23 s23/6 -4980.94796855
+37 s37 23 s23/8 -5350.01537911
+37 s37 23 s23/10 -4959.9234081
+37 s37 25 s25/1 -4059.25815544
+37 s37 25 s25/3 -3953.32278429
+37 s37 25 s25/6 -3640.25144807
+37 s37 25 s25/8 -3478.25513417
+37 s37 25 s25/10 -3985.58588488
+37 s37 28 s28/1 -1770.3525039
+37 s37 28 s28/3 -1862.35119548
+37 s37 28 s28/6 -1796.32858027
+37 s37 28 s28/8 -2230.13715335
+37 s37 28 s28/10 -1843.95641805
+37 s37 30 s30/1 -5135.49776734
+37 s37 30 s30/3 -5424.60823062
+37 s37 30 s30/6 -5200.91129295
+37 s37 30 s30/8 -5356.54450147
+37 s37 30 s30/10 -5130.36181483
+37 s37 31 s31/1 -4813.52373089
+37 s37 31 s31/3 -3874.07295501
+37 s37 31 s31/6 -3843.42289871
+37 s37 31 s31/8 -4411.64509181
+37 s37 31 s31/10 -3863.04735893
+37 s37 32 s32/1 -3947.16038218
+37 s37 32 s32/3 -3669.46229069
+37 s37 32 s32/6 -3563.89629466
+37 s37 32 s32/8 -3431.84465293
+37 s37 32 s32/10 -3416.12471004
+37 s37 35 s35/1 -4310.62579244
+37 s37 35 s35/3 -2845.25367679
+37 s37 35 s35/6 -3678.21231785
+37 s37 35 s35/8 -3958.77686193
+37 s37 35 s35/10 -3708.69894331
+37 s37 37 s37/1 -2026.73809469
+37 s37 37 s37/3 -2076.5065985
+37 s37 37 s37/6 -1322.12745022
+37 s37 37 s37/8 -1420.40271347
+37 s37 37 s37/10 -1799.09150143
+37 s37 38 s38/1 -5194.52366806
+37 s37 38 s38/3 -4756.94476628
+37 s37 38 s38/6 -5457.50111132
+37 s37 38 s38/8 -5315.70013416
+37 s37 38 s38/10 -4868.01182272
+37 s37 40 s40/1 -3517.01393705
+37 s37 40 s40/3 -4115.52328612
+37 s37 40 s40/6 -3826.76525207
+37 s37 40 s40/8 -3550.5571365
+37 s37 40 s40/10 -3838.17065346
+38 s38 3 s3/1 -2500.66524809
+38 s38 3 s3/3 -3113.76487532
+38 s38 3 s3/6 -2268.34645822
+38 s38 3 s3/8 -2518.65944776
+38 s38 3 s3/10 -3312.4448462
+38 s38 4 s4/1 -2358.3472841
+38 s38 4 s4/3 -2820.58463101
+38 s38 4 s4/6 -3767.53975525
+38 s38 4 s4/8 -2905.51038405
+38 s38 4 s4/10 -3364.95835537
+38 s38 7 s7/1 -3079.51500683
+38 s38 7 s7/3 -2995.94686187
+38 s38 7 s7/6 -2728.64006669
+38 s38 7 s7/8 -2632.18971995
+38 s38 7 s7/10 -3580.2942623
+38 s38 8 s8/1 -3401.48475841
+38 s38 8 s8/3 -3170.84565396
+38 s38 8 s8/6 -3565.07308101
+38 s38 8 s8/8 -3542.05330799
+38 s38 8 s8/10 -3205.57917872
+38 s38 9 s9/1 -2443.45811206
+38 s38 9 s9/3 -2624.20317848
+38 s38 9 s9/6 -2452.88289599
+38 s38 9 s9/8 -2045.23427053
+38 s38 9 s9/10 -3276.71105312
+38 s38 13 s13/1 -4721.97426652
+38 s38 13 s13/3 -5226.71057651
+38 s38 13 s13/6 -4680.83782604
+38 s38 13 s13/8 -4765.99705531
+38 s38 13 s13/10 -4423.14289953
+38 s38 15 s15/1 -3688.28384289
+38 s38 15 s15/3 -3598.51972277
+38 s38 15 s15/6 -3768.57386495
+38 s38 15 s15/8 -3455.04650083
+38 s38 15 s15/10 -2655.02750604
+38 s38 18 s18/1 -4745.50875736
+38 s38 18 s18/3 -4292.87295517
+38 s38 18 s18/6 -4286.22959369
+38 s38 18 s18/8 -4323.9459001
+38 s38 18 s18/10 -4070.24822599
+38 s38 19 s19/1 -5065.02813215
+38 s38 19 s19/3 -5596.88172312
+38 s38 19 s19/6 -5112.50499266
+38 s38 19 s19/8 -5196.17038292
+38 s38 19 s19/10 -4680.31338835
+38 s38 22 s22/1 -4021.19787287
+38 s38 22 s22/3 -3786.51071329
+38 s38 22 s22/6 -4126.76659422
+38 s38 22 s22/8 -4065.28029675
+38 s38 22 s22/10 -4500.77994993
+38 s38 23 s23/1 -1661.15610539
+38 s38 23 s23/3 -3004.62043703
+38 s38 23 s23/6 -2592.15772151
+38 s38 23 s23/8 -2839.53533334
+38 s38 23 s23/10 -1886.64429816
+38 s38 25 s25/1 -2759.63230835
+38 s38 25 s25/3 -3053.91603984
+38 s38 25 s25/6 -3286.6060079
+38 s38 25 s25/8 -3919.08978822
+38 s38 25 s25/10 -3123.42430915
+38 s38 28 s28/1 -4986.3941653
+38 s38 28 s28/3 -4693.8398904
+38 s38 28 s28/6 -4733.98872901
+38 s38 28 s28/8 -5112.93431814
+38 s38 28 s28/10 -4951.60499646
+38 s38 30 s30/1 -2171.70657427
+38 s38 30 s30/3 -2248.55987093
+38 s38 30 s30/6 -2181.24702757
+38 s38 30 s30/8 -3093.05158571
+38 s38 30 s30/10 -2149.11586703
+38 s38 31 s31/1 -2676.45733009
+38 s38 31 s31/3 -4915.56732116
+38 s38 31 s31/6 -3152.65508137
+38 s38 31 s31/8 -2864.95806167
+38 s38 31 s31/10 -4942.57718181
+38 s38 32 s32/1 -4855.40392521
+38 s38 32 s32/3 -5162.90276935
+38 s38 32 s32/6 -3858.1984399
+38 s38 32 s32/8 -4687.73273849
+38 s38 32 s32/10 -3771.2787541
+38 s38 35 s35/1 -3397.84237105
+38 s38 35 s35/3 -4119.31301927
+38 s38 35 s35/6 -3394.96054168
+38 s38 35 s35/8 -3015.43872493
+38 s38 35 s35/10 -4064.95202992
+38 s38 37 s37/1 -4882.73064872
+38 s38 37 s37/3 -5081.54156869
+38 s38 37 s37/6 -5186.66678655
+38 s38 37 s37/8 -4640.2911261
+38 s38 37 s37/10 -4932.9113395
+38 s38 38 s38/1 -1436.2690717
+38 s38 38 s38/3 -1193.10987941
+38 s38 38 s38/6 -1871.70903439
+38 s38 38 s38/8 -1502.77950363
+38 s38 38 s38/10 -1295.39466213
+38 s38 40 s40/1 -3610.15958833
+38 s38 40 s40/3 -3930.3899188
+38 s38 40 s40/6 -3367.88066228
+38 s38 40 s40/8 -3469.37561895
+38 s38 40 s40/10 -3436.14514204
+40 s40 3 s3/1 -2651.09965589
+40 s40 3 s3/3 -2683.04351464
+40 s40 3 s3/6 -2445.93813943
+40 s40 3 s3/8 -2073.66669064
+40 s40 3 s3/10 -2813.14996979
+40 s40 4 s4/1 -2568.59239584
+40 s40 4 s4/3 -2532.61350347
+40 s40 4 s4/6 -2594.61908498
+40 s40 4 s4/8 -2621.96322247
+40 s40 4 s4/10 -3338.43480092
+40 s40 7 s7/1 -3678.20163099
+40 s40 7 s7/3 -3596.8945058
+40 s40 7 s7/6 -3396.75831689
+40 s40 7 s7/8 -3567.20188339
+40 s40 7 s7/10 -3221.24213788
+40 s40 8 s8/1 -3715.39341458
+40 s40 8 s8/3 -3571.88906273
+40 s40 8 s8/6 -3730.13258897
+40 s40 8 s8/8 -3603.12267398
+40 s40 8 s8/10 -3590.12354748
+40 s40 9 s9/1 -3548.4965001
+40 s40 9 s9/3 -3472.79256194
+40 s40 9 s9/6 -2863.6915347
+40 s40 9 s9/8 -2720.70479404
+40 s40 9 s9/10 -3294.53578043
+40 s40 13 s13/1 -2815.20644872
+40 s40 13 s13/3 -2764.01526588
+40 s40 13 s13/6 -2694.45585779
+40 s40 13 s13/8 -2500.66028557
+40 s40 13 s13/10 -2249.42220386
+40 s40 15 s15/1 -3607.07793083
+40 s40 15 s15/3 -3681.10792076
+40 s40 15 s15/6 -3516.22845085
+40 s40 15 s15/8 -3790.99726558
+40 s40 15 s15/10 -2371.56146064
+40 s40 18 s18/1 -2885.25365973
+40 s40 18 s18/3 -1730.26525228
+40 s40 18 s18/6 -1920.5352865
+40 s40 18 s18/8 -2041.83010019
+40 s40 18 s18/10 -1902.29679874
+40 s40 19 s19/1 -4146.34040048
+40 s40 19 s19/3 -4291.00986689
+40 s40 19 s19/6 -4104.42545501
+40 s40 19 s19/8 -4078.28359243
+40 s40 19 s19/10 -3964.82241087
+40 s40 22 s22/1 -4923.93362995
+40 s40 22 s22/3 -4790.15479765
+40 s40 22 s22/6 -5163.44878234
+40 s40 22 s22/8 -5045.57023204
+40 s40 22 s22/10 -5077.34842893
+40 s40 23 s23/1 -3195.09963137
+40 s40 23 s23/3 -4083.00238199
+40 s40 23 s23/6 -3343.03813699
+40 s40 23 s23/8 -3692.5758183
+40 s40 23 s23/10 -2921.14528812
+40 s40 25 s25/1 -2474.2456049
+40 s40 25 s25/3 -2495.90369101
+40 s40 25 s25/6 -2700.66256782
+40 s40 25 s25/8 -2093.23218401
+40 s40 25 s25/10 -2753.63733789
+40 s40 28 s28/1 -3607.32239622
+40 s40 28 s28/3 -3523.64440717
+40 s40 28 s28/6 -3508.00347721
+40 s40 28 s28/8 -3794.96537331
+40 s40 28 s28/10 -3545.02350553
+40 s40 30 s30/1 -4117.68401116
+40 s40 30 s30/3 -4318.14358145
+40 s40 30 s30/6 -3970.30405567
+40 s40 30 s30/8 -4663.03394225
+40 s40 30 s30/10 -4114.2734629
+40 s40 31 s31/1 -3883.11730819
+40 s40 31 s31/3 -4347.05405545
+40 s40 31 s31/6 -3585.00166747
+40 s40 31 s31/8 -3752.95802879
+40 s40 31 s31/10 -4361.37878865
+40 s40 32 s32/1 -3198.90321628
+40 s40 32 s32/3 -3536.7907758
+40 s40 32 s32/6 -3207.0830193
+40 s40 32 s32/8 -3269.19701762
+40 s40 32 s32/10 -3209.67847964
+40 s40 35 s35/1 -3144.80178138
+40 s40 35 s35/3 -2695.41443799
+40 s40 35 s35/6 -2639.71050693
+40 s40 35 s35/8 -2324.91676937
+40 s40 35 s35/10 -2033.60969477
+40 s40 37 s37/1 -3242.39681112
+40 s40 37 s37/3 -3311.51818371
+40 s40 37 s37/6 -4308.81184137
+40 s40 37 s37/8 -3954.90331952
+40 s40 37 s37/10 -3302.59396222
+40 s40 38 s38/1 -3399.74494682
+40 s40 38 s38/3 -3670.11719236
+40 s40 38 s38/6 -3704.4046877
+40 s40 38 s38/8 -3711.69159941
+40 s40 38 s38/10 -3659.77792774
+40 s40 40 s40/1 -2186.09198446
+40 s40 40 s40/3 -2228.13430956
+40 s40 40 s40/6 -2470.78602967
+40 s40 40 s40/8 -2214.25145046
+40 s40 40 s40/10 -2276.02148295
diff --git a/bob/bio/base/test/data/scores.mask b/bob/bio/base/test/data/scores.mask
new file mode 100644
index 0000000000000000000000000000000000000000..287c3f4dd2529898ffb161538333f16763a770a1
--- /dev/null
+++ b/bob/bio/base/test/data/scores.mask
@@ -0,0 +1,5 @@
+S2
+unknown-gallery.lst
+unknown-probe.lst
+MB 100 20 xV4
+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
\ No newline at end of file
diff --git a/bob/bio/base/test/data/scores.mtx b/bob/bio/base/test/data/scores.mtx
new file mode 100644
index 0000000000000000000000000000000000000000..e148dbf80e4699b8bec08bcf34a88cb2a9cbde59
Binary files /dev/null and b/bob/bio/base/test/data/scores.mtx differ
diff --git a/bob/bio/base/test/data/search.mask b/bob/bio/base/test/data/search.mask
new file mode 100644
index 0000000000000000000000000000000000000000..46ac522954d5eefa938bb579f0df8a32ccc69330
Binary files /dev/null and b/bob/bio/base/test/data/search.mask differ
diff --git a/bob/bio/base/test/data/search.mtx b/bob/bio/base/test/data/search.mtx
new file mode 100644
index 0000000000000000000000000000000000000000..5b0872e0667b3cc6210378d24ff74d710ec47003
Binary files /dev/null and b/bob/bio/base/test/data/search.mtx differ
diff --git a/bob/bio/base/test/data/test-4col.txt b/bob/bio/base/test/data/test-4col.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3cc4dfeae1fcf413808e118a85d874d8d5849777
--- /dev/null
+++ b/bob/bio/base/test/data/test-4col.txt
@@ -0,0 +1,910 @@
+f_1014 f_1014 x 0.175237
+f_1014 f_1014 x 0.304839
+f_1014 f_1014 x 0.256713
+f_1014 f_1014 x 0.37347
+f_1014 f_1014 x 0.4842
+f_1014 f_1016 x -0.132795
+f_1014 f_1016 x -0.090261
+f_1014 f_1016 x -0.116631
+f_1014 f_1016 x -0.067892
+f_1014 f_1016 x -0.101526
+f_1015 f_1015 x 0.054443
+f_1015 f_1015 x 0.258395
+f_1015 f_1015 x 0.210023
+f_1015 f_1015 x 0.19985
+f_1015 f_1015 x 0.25951
+f_1015 f_1017 x -0.106891
+f_1015 f_1017 x -0.167279
+f_1015 f_1017 x -0.158916
+f_1015 f_1017 x -0.177507
+f_1015 f_1017 x -0.125337
+f_1016 f_1016 x 0.21881
+f_1016 f_1016 x 0.126132
+f_1016 f_1016 x 0.37815
+f_1016 f_1016 x 0.222685
+f_1016 f_1016 x 0.307243
+f_1016 f_1018 x -0.049229
+f_1016 f_1018 x -0.1148
+f_1016 f_1018 x -0.111412
+f_1016 f_1018 x -0.126608
+f_1016 f_1018 x -0.084573
+f_1017 f_1017 x -0.017341
+f_1017 f_1017 x 0.026926
+f_1017 f_1017 x 0.11222
+f_1017 f_1017 x 0.037274
+f_1017 f_1017 x 0.028239
+f_1017 f_1019 x -0.068405
+f_1017 f_1019 x -0.086171
+f_1017 f_1019 x -0.135923
+f_1017 f_1019 x -0.081824
+f_1017 f_1019 x -0.178919
+f_1018 f_1018 x 0.237832
+f_1018 f_1018 x 0.21383
+f_1018 f_1018 x 0.197277
+f_1018 f_1018 x 0.004259
+f_1018 f_1018 x 0.244453
+f_1018 f_1020 x -0.147546
+f_1018 f_1020 x -0.043125
+f_1018 f_1020 x -0.173616
+f_1018 f_1020 x -0.143199
+f_1018 f_1020 x -0.105378
+f_1019 f_1019 x 0.042442
+f_1019 f_1019 x 0.115268
+f_1019 f_1019 x 0.170583
+f_1019 f_1019 x 0.206193
+f_1019 f_1019 x 0.096731
+f_1019 f_1021 x -0.15031
+f_1019 f_1021 x -0.132395
+f_1019 f_1021 x -0.169058
+f_1019 f_1021 x -0.156056
+f_1019 f_1021 x -0.155288
+f_1020 f_1020 x 0.03643
+f_1020 f_1020 x 0.117264
+f_1020 f_1020 x 0.285537
+f_1020 f_1020 x 0.359734
+f_1020 f_1020 x 0.382881
+f_1020 f_1022 x 0.015456
+f_1020 f_1022 x -0.098693
+f_1020 f_1022 x 0.001723
+f_1020 f_1022 x -0.069837
+f_1020 f_1022 x 0.010294
+f_1021 f_1021 x 0.101494
+f_1021 f_1021 x 0.182224
+f_1021 f_1021 x 0.012012
+f_1021 f_1021 x 0.035786
+f_1021 f_1021 x 0.178588
+f_1021 f_1023 x -0.012187
+f_1021 f_1023 x -0.150579
+f_1021 f_1023 x -0.076234
+f_1021 f_1023 x -0.078789
+f_1021 f_1023 x -0.047604
+f_1022 f_1022 x 0.286642
+f_1022 f_1022 x -0.043404
+f_1022 f_1022 x 0.141256
+f_1022 f_1022 x 0.203942
+f_1022 f_1022 x 0.116838
+f_1022 f_1024 x -0.064643
+f_1022 f_1024 x -0.095398
+f_1022 f_1024 x -0.093624
+f_1022 f_1024 x -0.086501
+f_1022 f_1024 x -0.114908
+f_1023 f_1023 x 0.164015
+f_1023 f_1023 x 0.333836
+f_1023 f_1023 x 0.227632
+f_1023 f_1023 x 0.221866
+f_1023 f_1023 x 0.256993
+f_1023 f_1025 x -0.212049
+f_1023 f_1025 x -0.214593
+f_1023 f_1025 x -0.178651
+f_1023 f_1025 x -0.116316
+f_1023 f_1025 x -0.16932
+f_1024 f_1024 x 0.315482
+f_1024 f_1024 x 0.186705
+f_1024 f_1024 x 0.174492
+f_1024 f_1024 x 0.182486
+f_1024 f_1024 x 0.197654
+f_1024 f_1026 x -0.104582
+f_1024 f_1026 x -0.14075
+f_1024 f_1026 x -0.091511
+f_1024 f_1026 x -0.151864
+f_1024 f_1026 x -0.136013
+f_1025 f_1014 x -0.119154
+f_1025 f_1014 x -0.150153
+f_1025 f_1014 x -0.087496
+f_1025 f_1014 x -0.132967
+f_1025 f_1014 x -0.074032
+f_1025 f_1025 x -0.098941
+f_1025 f_1025 x -0.056289
+f_1025 f_1025 x -0.185361
+f_1025 f_1025 x 0.017452
+f_1025 f_1025 x 0.17846
+f_1026 f_1015 x -0.145975
+f_1026 f_1015 x -0.145888
+f_1026 f_1015 x -0.177149
+f_1026 f_1015 x -0.166486
+f_1026 f_1015 x -0.202473
+f_1026 f_1026 x 0.307376
+f_1026 f_1026 x 0.154666
+f_1026 f_1026 x 0.131216
+f_1026 f_1026 x 0.131029
+f_1026 f_1026 x 0.067151
+m_1040 m_1040 x 0.135275
+m_1040 m_1040 x 0.249472
+m_1040 m_1040 x 0.185975
+m_1040 m_1040 x 0.141155
+m_1040 m_1040 x 0.361171
+m_1040 m_1042 x -0.152226
+m_1040 m_1042 x -0.15413
+m_1040 m_1042 x -0.022675
+m_1040 m_1042 x -0.03507
+m_1040 m_1042 x -0.108974
+m_1041 m_1041 x 0.256448
+m_1041 m_1041 x 0.244108
+m_1041 m_1041 x 0.28142
+m_1041 m_1041 x 0.131366
+m_1041 m_1041 x 0.238593
+m_1041 m_1043 x -0.109183
+m_1041 m_1043 x -0.078833
+m_1041 m_1043 x -0.072502
+m_1041 m_1043 x -0.066688
+m_1041 m_1043 x -0.205101
+m_1042 m_1042 x 0.018683
+m_1042 m_1042 x 0.250633
+m_1042 m_1042 x 0.311741
+m_1042 m_1042 x 0.169665
+m_1042 m_1042 x 0.180004
+m_1042 m_1044 x -0.098772
+m_1042 m_1044 x -0.176161
+m_1042 m_1044 x -0.115254
+m_1042 m_1044 x -0.128812
+m_1042 m_1044 x -0.109547
+m_1043 m_1043 x 0.129869
+m_1043 m_1043 x 0.383131
+m_1043 m_1043 x 0.294704
+m_1043 m_1043 x 0.374444
+m_1043 m_1043 x 0.326108
+m_1043 m_1045 x -0.170887
+m_1043 m_1045 x -0.139108
+m_1043 m_1045 x -0.174187
+m_1043 m_1045 x -0.176998
+m_1043 m_1045 x -0.159841
+m_1044 m_1044 x 0.120106
+m_1044 m_1044 x 0.008721
+m_1044 m_1044 x 0.156735
+m_1044 m_1044 x 0.10402
+m_1044 m_1044 x 0.103297
+m_1044 m_1046 x -0.06416
+m_1044 m_1046 x -0.111405
+m_1044 m_1046 x -0.128987
+m_1044 m_1046 x -0.115382
+m_1044 m_1046 x -0.179751
+m_1045 m_1045 x 0.226013
+m_1045 m_1045 x 0.30898
+m_1045 m_1045 x 0.244402
+m_1045 m_1045 x 0.185819
+m_1045 m_1045 x 0.352065
+m_1045 m_1047 x -0.165835
+m_1045 m_1047 x -0.198608
+m_1045 m_1047 x -0.147002
+m_1045 m_1047 x -0.149473
+m_1045 m_1047 x -0.223582
+m_1046 m_1046 x 0.327642
+m_1046 m_1046 x 0.163479
+m_1046 m_1046 x 0.194457
+m_1046 m_1046 x 0.248568
+m_1046 m_1046 x 0.276627
+m_1046 m_1048 x -0.23229
+m_1046 m_1048 x -0.2629
+m_1046 m_1048 x -0.231205
+m_1046 m_1048 x -0.189854
+m_1046 m_1048 x -0.24022
+m_1047 m_1047 x 0.107771
+m_1047 m_1047 x 0.287596
+m_1047 m_1047 x 0.340219
+m_1047 m_1047 x 0.110695
+m_1047 m_1047 x 0.273247
+m_1047 m_1049 x -0.113823
+m_1047 m_1049 x -0.206661
+m_1047 m_1049 x -0.09003
+m_1047 m_1049 x -0.172021
+m_1047 m_1049 x -0.18018
+m_1048 m_1048 x 0.231718
+m_1048 m_1048 x 0.032567
+m_1048 m_1048 x 0.37068
+m_1048 m_1048 x 0.531794
+m_1048 m_1048 x 0.251853
+m_1048 m_1050 x -0.039807
+m_1048 m_1050 x -0.158791
+m_1048 m_1050 x -0.123597
+m_1048 m_1050 x -0.195967
+m_1048 m_1050 x -0.10318
+m_1049 m_1049 x 0.137166
+m_1049 m_1049 x 0.07881
+m_1049 m_1049 x 0.122634
+m_1049 m_1049 x 0.067998
+m_1049 m_1049 x 0.032458
+m_1049 m_1051 x -0.045168
+m_1049 m_1051 x -0.07624
+m_1049 m_1051 x -0.010425
+m_1049 m_1051 x -0.007416
+m_1049 m_1051 x -0.104273
+m_1050 m_1050 x 0.198104
+m_1050 m_1050 x 0.238023
+m_1050 m_1050 x 0.325879
+m_1050 m_1050 x 0.212732
+m_1050 m_1050 x 0.07356
+m_1050 m_1052 x -0.136036
+m_1050 m_1052 x -0.04766
+m_1050 m_1052 x -0.15562
+m_1050 m_1052 x -0.159182
+m_1050 m_1052 x -0.166221
+m_1051 m_1040 x -0.045368
+m_1051 m_1040 x -0.094739
+m_1051 m_1040 x -0.073475
+m_1051 m_1040 x -0.166177
+m_1051 m_1040 x -0.174827
+m_1051 m_1051 x 0.457431
+m_1051 m_1051 x 0.155697
+m_1051 m_1051 x 0.479951
+m_1051 m_1051 x 0.281574
+m_1051 m_1051 x 0.206361
+m_1052 m_1041 x -0.193203
+m_1052 m_1041 x -0.083981
+m_1052 m_1041 x -0.100523
+m_1052 m_1041 x -0.13021
+m_1052 m_1041 x -0.174762
+m_1052 m_1052 x 0.092376
+m_1052 m_1052 x 0.095863
+m_1052 m_1052 x 0.070707
+m_1052 m_1052 x 0.120926
+m_1052 m_1052 x 0.053403
+f_1014 f_1014 x 0.437731
+f_1014 f_1014 x 0.318402
+f_1014 f_1014 x 0.428893
+f_1014 f_1014 x 0.453113
+f_1014 f_1014 x 0.495515
+f_1014 f_1017 x -0.11742
+f_1014 f_1017 x -0.070269
+f_1014 f_1017 x -0.106312
+f_1014 f_1017 x -0.144875
+f_1014 f_1017 x -0.094553
+f_1015 f_1015 x 0.22944
+f_1015 f_1015 x 0.143853
+f_1015 f_1015 x 0.345441
+f_1015 f_1015 x 0.292318
+f_1015 f_1015 x 0.489542
+f_1015 f_1018 x -0.167798
+f_1015 f_1018 x -0.079764
+f_1015 f_1018 x -0.097843
+f_1015 f_1018 x -0.155892
+f_1015 f_1018 x -0.132385
+f_1016 f_1016 x 0.160622
+f_1016 f_1016 x 0.171162
+f_1016 f_1016 x 0.157513
+f_1016 f_1016 x 0.135925
+f_1016 f_1016 x 0.06149
+f_1016 f_1019 x -0.050159
+f_1016 f_1019 x -0.057178
+f_1016 f_1019 x -0.074997
+f_1016 f_1019 x -0.051324
+f_1016 f_1019 x -0.048703
+f_1017 f_1017 x 0.209104
+f_1017 f_1017 x 0.175552
+f_1017 f_1017 x 0.137198
+f_1017 f_1017 x 0.171513
+f_1017 f_1017 x 0.130996
+f_1017 f_1020 x -0.243561
+f_1017 f_1020 x -0.115798
+f_1017 f_1020 x -0.034842
+f_1017 f_1020 x -0.131362
+f_1017 f_1020 x -0.159915
+f_1018 f_1018 x -0.005463
+f_1018 f_1018 x 0.206381
+f_1018 f_1018 x 0.146986
+f_1018 f_1018 x 0.069634
+f_1018 f_1018 x 0.037562
+f_1018 f_1021 x -0.147572
+f_1018 f_1021 x -0.098223
+f_1018 f_1021 x -0.139565
+f_1018 f_1021 x -0.110759
+f_1018 f_1021 x -0.147047
+f_1019 f_1019 x 0.249895
+f_1019 f_1019 x 0.278538
+f_1019 f_1019 x 0.259574
+f_1019 f_1019 x 0.17637
+f_1019 f_1019 x 0.157258
+f_1019 f_1022 x -0.118328
+f_1019 f_1022 x -0.041292
+f_1019 f_1022 x -0.052633
+f_1019 f_1022 x -0.080992
+f_1019 f_1022 x -0.127107
+f_1020 f_1020 x 0.218971
+f_1020 f_1020 x 0.04365
+f_1020 f_1020 x 0.088146
+f_1020 f_1020 x 0.160735
+f_1020 f_1020 x 0.171037
+f_1020 f_1023 x -0.143461
+f_1020 f_1023 x -0.125433
+f_1020 f_1023 x -0.129891
+f_1020 f_1023 x -0.187145
+f_1020 f_1023 x -0.177769
+f_1021 f_1021 x -0.000116
+f_1021 f_1021 x 0.01191
+f_1021 f_1021 x -0.076906
+f_1021 f_1021 x -0.115962
+f_1021 f_1021 x -0.065717
+f_1021 f_1024 x -0.219317
+f_1021 f_1024 x -0.20047
+f_1021 f_1024 x -0.219448
+f_1021 f_1024 x -0.181918
+f_1021 f_1024 x -0.221209
+f_1022 f_1022 x 0.092949
+f_1022 f_1022 x 0.13708
+f_1022 f_1022 x 0.007386
+f_1022 f_1022 x 0.04151
+f_1022 f_1022 x 0.076811
+f_1022 f_1025 x -0.148761
+f_1022 f_1025 x -0.186116
+f_1022 f_1025 x -0.149164
+f_1022 f_1025 x -0.171441
+f_1022 f_1025 x -0.2179
+f_1023 f_1023 x 0.155696
+f_1023 f_1023 x 0.065824
+f_1023 f_1023 x 0.091544
+f_1023 f_1023 x 0.109188
+f_1023 f_1023 x 0.132669
+f_1023 f_1026 x -0.107141
+f_1023 f_1026 x -0.112328
+f_1023 f_1026 x -0.117225
+f_1023 f_1026 x -0.054713
+f_1023 f_1026 x -0.045185
+f_1024 f_1014 x -0.029009
+f_1024 f_1014 x -0.142735
+f_1024 f_1014 x -0.10747
+f_1024 f_1014 x -0.046912
+f_1024 f_1014 x -0.078291
+f_1024 f_1024 x 0.155625
+f_1024 f_1024 x 0.218861
+f_1024 f_1024 x 0.24453
+f_1024 f_1024 x 0.164316
+f_1024 f_1024 x 0.037576
+f_1025 f_1015 x -0.120623
+f_1025 f_1015 x -0.150187
+f_1025 f_1015 x -0.15106
+f_1025 f_1015 x -0.042806
+f_1025 f_1015 x -0.120825
+f_1025 f_1025 x 0.187759
+f_1025 f_1025 x 0.014105
+f_1025 f_1025 x 0.01868
+f_1025 f_1025 x 0.000269
+f_1025 f_1025 x 0.129064
+f_1026 f_1016 x -0.090137
+f_1026 f_1016 x -0.191546
+f_1026 f_1016 x -0.202833
+f_1026 f_1016 x -0.06334
+f_1026 f_1016 x -0.180062
+f_1026 f_1026 x 0.112111
+f_1026 f_1026 x 0.265684
+f_1026 f_1026 x 0.164375
+f_1026 f_1026 x 0.167411
+f_1026 f_1026 x 0.127449
+m_1040 m_1040 x 0.209957
+m_1040 m_1040 x 0.271467
+m_1040 m_1040 x 0.4301
+m_1040 m_1040 x 0.33632
+m_1040 m_1040 x 0.387182
+m_1040 m_1043 x -0.089345
+m_1040 m_1043 x -0.060908
+m_1040 m_1043 x -0.003329
+m_1040 m_1043 x -0.050925
+m_1040 m_1043 x -0.085675
+m_1041 m_1041 x 0.182627
+m_1041 m_1041 x 0.200762
+m_1041 m_1041 x 0.117049
+m_1041 m_1041 x 0.276846
+m_1041 m_1041 x 0.099233
+m_1041 m_1044 x -0.086125
+m_1041 m_1044 x -0.157261
+m_1041 m_1044 x -0.133127
+m_1041 m_1044 x -0.054866
+m_1041 m_1044 x -0.076243
+m_1042 m_1042 x 0.07247
+m_1042 m_1042 x 0.247412
+m_1042 m_1042 x 0.15837
+m_1042 m_1042 x 0.178847
+m_1042 m_1042 x 0.24374
+m_1042 m_1045 x -0.140707
+m_1042 m_1045 x -0.079508
+m_1042 m_1045 x -0.143072
+m_1042 m_1045 x -0.150436
+m_1042 m_1045 x -0.106972
+m_1043 m_1043 x 0.173801
+m_1043 m_1043 x 0.218501
+m_1043 m_1043 x 0.026206
+m_1043 m_1043 x -0.002241
+m_1043 m_1043 x -0.004563
+m_1043 m_1046 x -0.104471
+m_1043 m_1046 x -0.059102
+m_1043 m_1046 x -0.086887
+m_1043 m_1046 x -0.0566
+m_1043 m_1046 x -0.020795
+m_1044 m_1044 x 0.032542
+m_1044 m_1044 x 0.110404
+m_1044 m_1044 x 0.044183
+m_1044 m_1044 x 0.097114
+m_1044 m_1044 x 0.160409
+m_1044 m_1047 x -0.156181
+m_1044 m_1047 x -0.14282
+m_1044 m_1047 x -0.085566
+m_1044 m_1047 x -0.125108
+m_1044 m_1047 x -0.115352
+m_1045 m_1045 x 0.172385
+m_1045 m_1045 x 0.126612
+m_1045 m_1045 x 0.077574
+m_1045 m_1045 x 0.289203
+m_1045 m_1045 x 0.253339
+m_1045 m_1048 x -0.256196
+m_1045 m_1048 x -0.253315
+m_1045 m_1048 x -0.22607
+m_1045 m_1048 x -0.118963
+m_1045 m_1048 x -0.170421
+m_1046 m_1046 x -0.021949
+m_1046 m_1046 x -0.013185
+m_1046 m_1046 x 0.2579
+m_1046 m_1046 x 0.142666
+m_1046 m_1046 x 0.317434
+m_1046 m_1049 x -0.119188
+m_1046 m_1049 x -0.111455
+m_1046 m_1049 x -0.06934
+m_1046 m_1049 x -0.140823
+m_1046 m_1049 x -0.16487
+m_1047 m_1047 x 0.048617
+m_1047 m_1047 x 0.091316
+m_1047 m_1047 x 0.108092
+m_1047 m_1047 x 0.042686
+m_1047 m_1047 x 0.082616
+m_1047 m_1050 x -0.086422
+m_1047 m_1050 x -0.135674
+m_1047 m_1050 x -0.092624
+m_1047 m_1050 x -0.221991
+m_1047 m_1050 x -0.072428
+m_1048 m_1048 x -0.040296
+m_1048 m_1048 x 0.304093
+m_1048 m_1048 x 0.274446
+m_1048 m_1048 x 0.218834
+m_1048 m_1048 x 0.019644
+m_1048 m_1051 x -0.081076
+m_1048 m_1051 x -0.106185
+m_1048 m_1051 x -0.146137
+m_1048 m_1051 x -0.1589
+m_1048 m_1051 x -0.156646
+m_1049 m_1049 x 0.08706
+m_1049 m_1049 x 0.190712
+m_1049 m_1049 x 0.157489
+m_1049 m_1049 x 0.050289
+m_1049 m_1049 x 0.115878
+m_1049 m_1052 x -0.055599
+m_1049 m_1052 x -0.077193
+m_1049 m_1052 x -0.065377
+m_1049 m_1052 x -0.021629
+m_1049 m_1052 x -0.083342
+m_1050 m_1040 x -0.096163
+m_1050 m_1040 x -0.137793
+m_1050 m_1040 x -0.186286
+m_1050 m_1040 x -0.141722
+m_1050 m_1040 x -0.099895
+m_1050 m_1050 x 0.018712
+m_1050 m_1050 x 0.061794
+m_1050 m_1050 x -0.00523
+m_1050 m_1050 x 0.117835
+m_1050 m_1050 x -0.07796
+m_1051 m_1041 x -0.090685
+m_1051 m_1041 x -0.14119
+m_1051 m_1041 x -0.084481
+m_1051 m_1041 x -0.144805
+m_1051 m_1041 x -0.149656
+m_1051 m_1051 x 0.149061
+m_1051 m_1051 x 0.298765
+m_1051 m_1051 x 0.194495
+m_1051 m_1051 x 0.272661
+m_1051 m_1051 x 0.252346
+m_1052 m_1042 x -0.149167
+m_1052 m_1042 x -0.16615
+m_1052 m_1042 x -0.276333
+m_1052 m_1042 x -0.188244
+m_1052 m_1042 x -0.199263
+m_1052 m_1052 x 0.074832
+m_1052 m_1052 x 0.111728
+m_1052 m_1052 x 0.011147
+m_1052 m_1052 x 0.096093
+m_1052 m_1052 x 0.014352
+f_1014 f_1014 x 0.108577
+f_1014 f_1014 x 0.227893
+f_1014 f_1014 x 0.253652
+f_1014 f_1014 x 0.32725
+f_1014 f_1014 x 0.340216
+f_1014 f_1018 x -0.102353
+f_1014 f_1018 x -0.111658
+f_1014 f_1018 x -0.065165
+f_1014 f_1018 x -0.090465
+f_1014 f_1018 x -0.087901
+f_1015 f_1015 x 0.276852
+f_1015 f_1015 x 0.324612
+f_1015 f_1015 x 0.336296
+f_1015 f_1015 x 0.235154
+f_1015 f_1015 x 0.256454
+f_1015 f_1019 x -0.078625
+f_1015 f_1019 x -0.109084
+f_1015 f_1019 x -0.059179
+f_1015 f_1019 x -0.147283
+f_1015 f_1019 x -0.151253
+f_1016 f_1016 x 0.09251
+f_1016 f_1016 x 0.238722
+f_1016 f_1016 x 0.120821
+f_1016 f_1016 x 0.203909
+f_1016 f_1016 x 0.031465
+f_1016 f_1020 x -0.080126
+f_1016 f_1020 x -0.164751
+f_1016 f_1020 x -0.121187
+f_1016 f_1020 x -0.082511
+f_1016 f_1020 x -0.113241
+f_1017 f_1017 x 0.028233
+f_1017 f_1017 x 0.148459
+f_1017 f_1017 x -0.018476
+f_1017 f_1017 x 0.061587
+f_1017 f_1017 x 0.021536
+f_1017 f_1021 x 0.016132
+f_1017 f_1021 x -0.121139
+f_1017 f_1021 x -0.060869
+f_1017 f_1021 x -0.09941
+f_1017 f_1021 x -0.118627
+f_1018 f_1018 x 0.158122
+f_1018 f_1018 x 0.126481
+f_1018 f_1018 x 0.071357
+f_1018 f_1018 x 0.098801
+f_1018 f_1018 x 0.141165
+f_1018 f_1022 x -0.064997
+f_1018 f_1022 x -0.045456
+f_1018 f_1022 x -0.123946
+f_1018 f_1022 x -0.100114
+f_1018 f_1022 x -0.101694
+f_1019 f_1019 x 0.092109
+f_1019 f_1019 x 0.097601
+f_1019 f_1019 x 0.180552
+f_1019 f_1019 x 0.099773
+f_1019 f_1019 x 0.169073
+f_1019 f_1023 x -0.052974
+f_1019 f_1023 x -0.10636
+f_1019 f_1023 x -0.135503
+f_1019 f_1023 x -0.079938
+f_1019 f_1023 x -0.055776
+f_1020 f_1020 x 0.260382
+f_1020 f_1020 x 0.119577
+f_1020 f_1020 x -0.004131
+f_1020 f_1020 x 0.098814
+f_1020 f_1020 x 0.086
+f_1020 f_1024 x -0.028026
+f_1020 f_1024 x -0.026484
+f_1020 f_1024 x -0.072186
+f_1020 f_1024 x -0.06285
+f_1020 f_1024 x 0.003419
+f_1021 f_1021 x 0.039163
+f_1021 f_1021 x 0.033955
+f_1021 f_1021 x 0.062135
+f_1021 f_1021 x 0.010597
+f_1021 f_1021 x 0.091413
+f_1021 f_1025 x -0.248219
+f_1021 f_1025 x -0.151833
+f_1021 f_1025 x -0.176115
+f_1021 f_1025 x -0.131918
+f_1021 f_1025 x -0.077725
+f_1022 f_1022 x 0.180838
+f_1022 f_1022 x 0.143177
+f_1022 f_1022 x 0.232578
+f_1022 f_1022 x 0.289811
+f_1022 f_1022 x 0.114453
+f_1022 f_1026 x -0.158982
+f_1022 f_1026 x -0.060544
+f_1022 f_1026 x -0.105571
+f_1022 f_1026 x -0.176789
+f_1022 f_1026 x -0.077864
+f_1023 f_1014 x -0.107909
+f_1023 f_1014 x -0.12447
+f_1023 f_1014 x -0.081167
+f_1023 f_1014 x -0.036152
+f_1023 f_1014 x -0.067161
+f_1023 f_1023 x 0.15069
+f_1023 f_1023 x 0.233796
+f_1023 f_1023 x 0.205184
+f_1023 f_1023 x 0.017664
+f_1023 f_1023 x 0.151249
+f_1024 f_1015 x -0.109158
+f_1024 f_1015 x -0.069678
+f_1024 f_1015 x -0.130969
+f_1024 f_1015 x -0.104467
+f_1024 f_1015 x -0.141174
+f_1024 f_1024 x 0.263034
+f_1024 f_1024 x 0.273758
+f_1024 f_1024 x 0.216361
+f_1024 f_1024 x 0.234225
+f_1024 f_1024 x 0.195322
+f_1025 f_1016 x -0.07368
+f_1025 f_1016 x -0.013295
+f_1025 f_1016 x -0.052979
+f_1025 f_1016 x -0.080032
+f_1025 f_1016 x -0.046169
+f_1025 f_1025 x 0.040995
+f_1025 f_1025 x 0.015184
+f_1025 f_1025 x -0.038587
+f_1025 f_1025 x 0.115313
+f_1025 f_1025 x -0.025057
+f_1026 f_1017 x -0.134662
+f_1026 f_1017 x -0.173454
+f_1026 f_1017 x -0.107414
+f_1026 f_1017 x -0.072375
+f_1026 f_1017 x -0.096127
+f_1026 f_1026 x -0.027845
+f_1026 f_1026 x -0.109461
+f_1026 f_1026 x 0.14858
+f_1026 f_1026 x -0.049125
+f_1026 f_1026 x 0.001497
+m_1040 m_1040 x 0.221399
+m_1040 m_1040 x 0.279534
+m_1040 m_1040 x 0.199229
+m_1040 m_1040 x 0.133006
+m_1040 m_1040 x 0.082303
+m_1040 m_1044 x -0.049536
+m_1040 m_1044 x -0.113089
+m_1040 m_1044 x -0.149159
+m_1040 m_1044 x -0.116671
+m_1040 m_1044 x -0.111438
+m_1041 m_1041 x 0.051518
+m_1041 m_1041 x 0.08079
+m_1041 m_1041 x 0.071167
+m_1041 m_1041 x 0.077873
+m_1041 m_1041 x 0.120539
+m_1041 m_1045 x -0.109798
+m_1041 m_1045 x -0.019602
+m_1041 m_1045 x -0.018571
+m_1041 m_1045 x -0.097454
+m_1041 m_1045 x -0.14162
+m_1042 m_1042 x 0.239908
+m_1042 m_1042 x 0.394366
+m_1042 m_1042 x 0.424995
+m_1042 m_1042 x 0.362606
+m_1042 m_1042 x 0.083466
+m_1042 m_1046 x -0.082171
+m_1042 m_1046 x -0.082347
+m_1042 m_1046 x 0.019412
+m_1042 m_1046 x -0.132104
+m_1042 m_1046 x -0.10197
+m_1043 m_1043 x 0.141103
+m_1043 m_1043 x 0.151438
+m_1043 m_1043 x 0.123697
+m_1043 m_1043 x 0.187986
+m_1043 m_1043 x 0.112817
+m_1043 m_1047 x -0.077024
+m_1043 m_1047 x -0.042302
+m_1043 m_1047 x -0.026802
+m_1043 m_1047 x -0.083944
+m_1043 m_1047 x -0.155431
+m_1044 m_1044 x -0.028161
+m_1044 m_1044 x 0.054529
+m_1044 m_1044 x 0.13168
+m_1044 m_1044 x 0.038872
+m_1044 m_1044 x 0.077572
+m_1044 m_1048 x -0.213132
+m_1044 m_1048 x -0.193029
+m_1044 m_1048 x -0.200924
+m_1044 m_1048 x -0.16708
+m_1044 m_1048 x -0.204056
+m_1045 m_1045 x 0.153144
+m_1045 m_1045 x 0.093438
+m_1045 m_1045 x 0.087949
+m_1045 m_1045 x 0.160263
+m_1045 m_1045 x 0.084367
+m_1045 m_1049 x -0.045984
+m_1045 m_1049 x -0.118589
+m_1045 m_1049 x -0.018129
+m_1045 m_1049 x -0.108371
+m_1045 m_1049 x -0.158667
+m_1046 m_1046 x -0.106347
+m_1046 m_1046 x 0.159463
+m_1046 m_1046 x 0.269966
+m_1046 m_1046 x 0.168759
+m_1046 m_1046 x 0.289834
+m_1046 m_1050 x -0.101596
+m_1046 m_1050 x -0.128711
+m_1046 m_1050 x -0.059498
+m_1046 m_1050 x -0.173279
+m_1046 m_1050 x -0.110372
+m_1047 m_1047 x 0.071048
+m_1047 m_1047 x 0.20056
+m_1047 m_1047 x 0.176091
+m_1047 m_1047 x 0.098561
+m_1047 m_1047 x 0.164626
+m_1047 m_1051 x -0.093315
+m_1047 m_1051 x -0.018984
+m_1047 m_1051 x -0.103095
+m_1047 m_1051 x -0.077934
+m_1047 m_1051 x -0.118351
+m_1048 m_1048 x 0.377338
+m_1048 m_1048 x 0.424671
+m_1048 m_1048 x 0.297769
+m_1048 m_1048 x -0.005302
+m_1048 m_1048 x 0.196666
+m_1048 m_1052 x -0.069208
+m_1048 m_1052 x -0.177879
+m_1048 m_1052 x -0.10231
+m_1048 m_1052 x -0.122667
+m_1048 m_1052 x -0.068862
+m_1049 m_1040 x -0.153227
+m_1049 m_1040 x -0.184595
+m_1049 m_1040 x -0.136615
+m_1049 m_1040 x -0.077627
+m_1049 m_1040 x -0.106458
+m_1049 m_1049 x 0.111003
+m_1049 m_1049 x 0.101531
+m_1049 m_1049 x 0.123256
+m_1049 m_1049 x 0.12464
+m_1049 m_1049 x 0.051604
+m_1050 m_1041 x -0.054181
+m_1050 m_1041 x -0.140659
+m_1050 m_1041 x -0.129502
+m_1050 m_1041 x -0.108929
+m_1050 m_1041 x -0.032078
+m_1050 m_1050 x 0.126906
+m_1050 m_1050 x 0.13685
+m_1050 m_1050 x 0.033093
+m_1050 m_1050 x 0.047939
+m_1050 m_1050 x -0.013868
+m_1051 m_1042 x -0.153977
+m_1051 m_1042 x -0.113284
+m_1051 m_1042 x -0.23003
+m_1051 m_1042 x -0.186212
+m_1051 m_1042 x -0.145767
+m_1051 m_1051 x 0.235478
+m_1051 m_1051 x 0.207846
+m_1051 m_1051 x 0.278796
+m_1051 m_1051 x 0.142962
+m_1051 m_1051 x 0.180351
+m_1052 m_1043 x -0.178691
+m_1052 m_1043 x -0.197601
+m_1052 m_1043 x -0.129918
+m_1052 m_1043 x -0.167795
+m_1052 m_1043 x -0.175029
+m_1052 m_1052 x 0.082763
+m_1052 m_1052 x 0.112163
+m_1052 m_1052 x 0.188003
+m_1052 m_1052 x 0.044418
+m_1052 m_1052 x 0.127454
+f_1014 f_1015 x 0.014841
+f_1014 f_1015 x -0.026769
+f_1014 f_1015 x -0.080662
+f_1014 f_1015 x -0.085209
+f_1014 f_1015 x -0.072679
+f_1015 f_1016 x -0.164857
+f_1015 f_1016 x -0.178725
+f_1015 f_1016 x -0.128464
+f_1015 f_1016 x -0.214679
+f_1015 f_1016 x -0.134944
+f_1016 f_1017 x -0.014597
+f_1016 f_1017 x -0.071501
+f_1016 f_1017 x -0.128072
+f_1016 f_1017 x -0.123337
+f_1016 f_1017 x -0.116541
+f_1017 f_1018 x -0.141496
+f_1017 f_1018 x -0.196624
+f_1017 f_1018 x -0.173068
+f_1017 f_1018 x -0.230658
+f_1017 f_1018 x -0.205358
+f_1018 f_1019 x -0.048368
+f_1018 f_1019 x -0.043071
+f_1018 f_1019 x -0.049429
+f_1018 f_1019 x -0.014632
+f_1018 f_1019 x -0.093057
+f_1019 f_1020 x -0.124173
+f_1019 f_1020 x -0.122335
+f_1019 f_1020 x -0.078392
+f_1019 f_1020 x -0.211568
+f_1019 f_1020 x -0.221264
+f_1020 f_1021 x -0.190812
+f_1020 f_1021 x -0.130903
+f_1020 f_1021 x -0.148297
+f_1020 f_1021 x -0.218195
+f_1020 f_1021 x -0.130123
+f_1021 f_1022 x -0.020938
+f_1021 f_1022 x 0.032565
+f_1021 f_1022 x 0.029753
+f_1021 f_1022 x 0.008387
+f_1021 f_1022 x -0.029518
+f_1022 f_1023 x -0.065429
+f_1022 f_1023 x -0.0499
+f_1022 f_1023 x -0.092752
+f_1022 f_1023 x -0.115253
+f_1022 f_1023 x -0.043749
+f_1023 f_1024 x -0.160373
+f_1023 f_1024 x -0.073335
+f_1023 f_1024 x -0.05861
+f_1023 f_1024 x -0.094012
+f_1023 f_1024 x -0.056688
+f_1024 f_1025 x -0.328486
+f_1024 f_1025 x -0.308301
+f_1024 f_1025 x -0.220186
+f_1024 f_1025 x -0.365362
+f_1024 f_1025 x -0.178491
+f_1025 f_1026 x -0.098447
+f_1025 f_1026 x -0.079008
+f_1025 f_1026 x -0.120396
+f_1025 f_1026 x -0.092791
+f_1025 f_1026 x -0.052482
+f_1026 f_1014 x -0.066869
+f_1026 f_1014 x -0.139432
+f_1026 f_1014 x -0.037634
+f_1026 f_1014 x -0.20375
+f_1026 f_1014 x -0.132627
+m_1040 m_1041 x -0.045661
+m_1040 m_1041 x -0.025406
+m_1040 m_1041 x -0.075282
+m_1040 m_1041 x -0.05577
+m_1040 m_1041 x -0.070087
+m_1041 m_1042 x -0.205976
+m_1041 m_1042 x -0.130663
+m_1041 m_1042 x -0.081094
+m_1041 m_1042 x -0.097618
+m_1041 m_1042 x -0.021077
+m_1042 m_1043 x -0.037937
+m_1042 m_1043 x -0.002371
+m_1042 m_1043 x 0.012176
+m_1042 m_1043 x -0.093591
+m_1042 m_1043 x -0.038423
+m_1043 m_1044 x -0.101432
+m_1043 m_1044 x -0.039491
+m_1043 m_1044 x -0.11965
+m_1043 m_1044 x -0.109702
+m_1043 m_1044 x -0.156936
+m_1044 m_1045 x -0.085479
+m_1044 m_1045 x -0.13362
+m_1044 m_1045 x -0.12149
+m_1044 m_1045 x -0.075713
+m_1044 m_1045 x -0.08801
+m_1045 m_1046 x -0.106102
+m_1045 m_1046 x -0.141614
+m_1045 m_1046 x -0.150365
+m_1045 m_1046 x -0.123084
+m_1045 m_1046 x -0.201897
+m_1046 m_1047 x -0.125069
+m_1046 m_1047 x -0.168533
+m_1046 m_1047 x -0.112757
+m_1046 m_1047 x -0.1736
+m_1046 m_1047 x -0.172724
+m_1047 m_1048 x -0.166386
+m_1047 m_1048 x -0.170671
+m_1047 m_1048 x -0.058329
+m_1047 m_1048 x -0.109204
+m_1047 m_1048 x -0.122232
+m_1048 m_1049 x -0.204613
+m_1048 m_1049 x -0.219919
+m_1048 m_1049 x -0.146424
+m_1048 m_1049 x -0.16871
+m_1048 m_1049 x -0.142253
+m_1049 m_1050 x -0.051034
+m_1049 m_1050 x -0.103298
+m_1049 m_1050 x -0.035702
+m_1049 m_1050 x -0.100288
+m_1049 m_1050 x -0.00913
+m_1050 m_1051 x -0.073954
+m_1050 m_1051 x -0.099813
+m_1050 m_1051 x -0.044652
+m_1050 m_1051 x -0.043802
+m_1050 m_1051 x -0.139938
+m_1051 m_1052 x -0.109771
+m_1051 m_1052 x -0.121056
+m_1051 m_1052 x -0.102811
+m_1051 m_1052 x -0.097827
+m_1051 m_1052 x -0.106235
+m_1052 m_1040 x -0.129523
+m_1052 m_1040 x -0.167863
+m_1052 m_1040 x -0.179332
+m_1052 m_1040 x -0.169263
+m_1052 m_1040 x -0.188729
diff --git a/bob/bio/base/test/data/test-5col.txt b/bob/bio/base/test/data/test-5col.txt
new file mode 100644
index 0000000000000000000000000000000000000000..430047a567c7fbd0ab3ec68ab5888732324b9b8c
--- /dev/null
+++ b/bob/bio/base/test/data/test-5col.txt
@@ -0,0 +1,910 @@
+f_1014 x f_1014 x 0.175237
+f_1014 x f_1014 x 0.304839
+f_1014 x f_1014 x 0.256713
+f_1014 x f_1014 x 0.37347
+f_1014 x f_1014 x 0.4842
+f_1014 x f_1016 x -0.132795
+f_1014 x f_1016 x -0.090261
+f_1014 x f_1016 x -0.116631
+f_1014 x f_1016 x -0.067892
+f_1014 x f_1016 x -0.101526
+f_1015 x f_1015 x 0.054443
+f_1015 x f_1015 x 0.258395
+f_1015 x f_1015 x 0.210023
+f_1015 x f_1015 x 0.19985
+f_1015 x f_1015 x 0.25951
+f_1015 x f_1017 x -0.106891
+f_1015 x f_1017 x -0.167279
+f_1015 x f_1017 x -0.158916
+f_1015 x f_1017 x -0.177507
+f_1015 x f_1017 x -0.125337
+f_1016 x f_1016 x 0.21881
+f_1016 x f_1016 x 0.126132
+f_1016 x f_1016 x 0.37815
+f_1016 x f_1016 x 0.222685
+f_1016 x f_1016 x 0.307243
+f_1016 x f_1018 x -0.049229
+f_1016 x f_1018 x -0.1148
+f_1016 x f_1018 x -0.111412
+f_1016 x f_1018 x -0.126608
+f_1016 x f_1018 x -0.084573
+f_1017 x f_1017 x -0.017341
+f_1017 x f_1017 x 0.026926
+f_1017 x f_1017 x 0.11222
+f_1017 x f_1017 x 0.037274
+f_1017 x f_1017 x 0.028239
+f_1017 x f_1019 x -0.068405
+f_1017 x f_1019 x -0.086171
+f_1017 x f_1019 x -0.135923
+f_1017 x f_1019 x -0.081824
+f_1017 x f_1019 x -0.178919
+f_1018 x f_1018 x 0.237832
+f_1018 x f_1018 x 0.21383
+f_1018 x f_1018 x 0.197277
+f_1018 x f_1018 x 0.004259
+f_1018 x f_1018 x 0.244453
+f_1018 x f_1020 x -0.147546
+f_1018 x f_1020 x -0.043125
+f_1018 x f_1020 x -0.173616
+f_1018 x f_1020 x -0.143199
+f_1018 x f_1020 x -0.105378
+f_1019 x f_1019 x 0.042442
+f_1019 x f_1019 x 0.115268
+f_1019 x f_1019 x 0.170583
+f_1019 x f_1019 x 0.206193
+f_1019 x f_1019 x 0.096731
+f_1019 x f_1021 x -0.15031
+f_1019 x f_1021 x -0.132395
+f_1019 x f_1021 x -0.169058
+f_1019 x f_1021 x -0.156056
+f_1019 x f_1021 x -0.155288
+f_1020 x f_1020 x 0.03643
+f_1020 x f_1020 x 0.117264
+f_1020 x f_1020 x 0.285537
+f_1020 x f_1020 x 0.359734
+f_1020 x f_1020 x 0.382881
+f_1020 x f_1022 x 0.015456
+f_1020 x f_1022 x -0.098693
+f_1020 x f_1022 x 0.001723
+f_1020 x f_1022 x -0.069837
+f_1020 x f_1022 x 0.010294
+f_1021 x f_1021 x 0.101494
+f_1021 x f_1021 x 0.182224
+f_1021 x f_1021 x 0.012012
+f_1021 x f_1021 x 0.035786
+f_1021 x f_1021 x 0.178588
+f_1021 x f_1023 x -0.012187
+f_1021 x f_1023 x -0.150579
+f_1021 x f_1023 x -0.076234
+f_1021 x f_1023 x -0.078789
+f_1021 x f_1023 x -0.047604
+f_1022 x f_1022 x 0.286642
+f_1022 x f_1022 x -0.043404
+f_1022 x f_1022 x 0.141256
+f_1022 x f_1022 x 0.203942
+f_1022 x f_1022 x 0.116838
+f_1022 x f_1024 x -0.064643
+f_1022 x f_1024 x -0.095398
+f_1022 x f_1024 x -0.093624
+f_1022 x f_1024 x -0.086501
+f_1022 x f_1024 x -0.114908
+f_1023 x f_1023 x 0.164015
+f_1023 x f_1023 x 0.333836
+f_1023 x f_1023 x 0.227632
+f_1023 x f_1023 x 0.221866
+f_1023 x f_1023 x 0.256993
+f_1023 x f_1025 x -0.212049
+f_1023 x f_1025 x -0.214593
+f_1023 x f_1025 x -0.178651
+f_1023 x f_1025 x -0.116316
+f_1023 x f_1025 x -0.16932
+f_1024 x f_1024 x 0.315482
+f_1024 x f_1024 x 0.186705
+f_1024 x f_1024 x 0.174492
+f_1024 x f_1024 x 0.182486
+f_1024 x f_1024 x 0.197654
+f_1024 x f_1026 x -0.104582
+f_1024 x f_1026 x -0.14075
+f_1024 x f_1026 x -0.091511
+f_1024 x f_1026 x -0.151864
+f_1024 x f_1026 x -0.136013
+f_1025 x f_1014 x -0.119154
+f_1025 x f_1014 x -0.150153
+f_1025 x f_1014 x -0.087496
+f_1025 x f_1014 x -0.132967
+f_1025 x f_1014 x -0.074032
+f_1025 x f_1025 x -0.098941
+f_1025 x f_1025 x -0.056289
+f_1025 x f_1025 x -0.185361
+f_1025 x f_1025 x 0.017452
+f_1025 x f_1025 x 0.17846
+f_1026 x f_1015 x -0.145975
+f_1026 x f_1015 x -0.145888
+f_1026 x f_1015 x -0.177149
+f_1026 x f_1015 x -0.166486
+f_1026 x f_1015 x -0.202473
+f_1026 x f_1026 x 0.307376
+f_1026 x f_1026 x 0.154666
+f_1026 x f_1026 x 0.131216
+f_1026 x f_1026 x 0.131029
+f_1026 x f_1026 x 0.067151
+m_1040 x m_1040 x 0.135275
+m_1040 x m_1040 x 0.249472
+m_1040 x m_1040 x 0.185975
+m_1040 x m_1040 x 0.141155
+m_1040 x m_1040 x 0.361171
+m_1040 x m_1042 x -0.152226
+m_1040 x m_1042 x -0.15413
+m_1040 x m_1042 x -0.022675
+m_1040 x m_1042 x -0.03507
+m_1040 x m_1042 x -0.108974
+m_1041 x m_1041 x 0.256448
+m_1041 x m_1041 x 0.244108
+m_1041 x m_1041 x 0.28142
+m_1041 x m_1041 x 0.131366
+m_1041 x m_1041 x 0.238593
+m_1041 x m_1043 x -0.109183
+m_1041 x m_1043 x -0.078833
+m_1041 x m_1043 x -0.072502
+m_1041 x m_1043 x -0.066688
+m_1041 x m_1043 x -0.205101
+m_1042 x m_1042 x 0.018683
+m_1042 x m_1042 x 0.250633
+m_1042 x m_1042 x 0.311741
+m_1042 x m_1042 x 0.169665
+m_1042 x m_1042 x 0.180004
+m_1042 x m_1044 x -0.098772
+m_1042 x m_1044 x -0.176161
+m_1042 x m_1044 x -0.115254
+m_1042 x m_1044 x -0.128812
+m_1042 x m_1044 x -0.109547
+m_1043 x m_1043 x 0.129869
+m_1043 x m_1043 x 0.383131
+m_1043 x m_1043 x 0.294704
+m_1043 x m_1043 x 0.374444
+m_1043 x m_1043 x 0.326108
+m_1043 x m_1045 x -0.170887
+m_1043 x m_1045 x -0.139108
+m_1043 x m_1045 x -0.174187
+m_1043 x m_1045 x -0.176998
+m_1043 x m_1045 x -0.159841
+m_1044 x m_1044 x 0.120106
+m_1044 x m_1044 x 0.008721
+m_1044 x m_1044 x 0.156735
+m_1044 x m_1044 x 0.10402
+m_1044 x m_1044 x 0.103297
+m_1044 x m_1046 x -0.06416
+m_1044 x m_1046 x -0.111405
+m_1044 x m_1046 x -0.128987
+m_1044 x m_1046 x -0.115382
+m_1044 x m_1046 x -0.179751
+m_1045 x m_1045 x 0.226013
+m_1045 x m_1045 x 0.30898
+m_1045 x m_1045 x 0.244402
+m_1045 x m_1045 x 0.185819
+m_1045 x m_1045 x 0.352065
+m_1045 x m_1047 x -0.165835
+m_1045 x m_1047 x -0.198608
+m_1045 x m_1047 x -0.147002
+m_1045 x m_1047 x -0.149473
+m_1045 x m_1047 x -0.223582
+m_1046 x m_1046 x 0.327642
+m_1046 x m_1046 x 0.163479
+m_1046 x m_1046 x 0.194457
+m_1046 x m_1046 x 0.248568
+m_1046 x m_1046 x 0.276627
+m_1046 x m_1048 x -0.23229
+m_1046 x m_1048 x -0.2629
+m_1046 x m_1048 x -0.231205
+m_1046 x m_1048 x -0.189854
+m_1046 x m_1048 x -0.24022
+m_1047 x m_1047 x 0.107771
+m_1047 x m_1047 x 0.287596
+m_1047 x m_1047 x 0.340219
+m_1047 x m_1047 x 0.110695
+m_1047 x m_1047 x 0.273247
+m_1047 x m_1049 x -0.113823
+m_1047 x m_1049 x -0.206661
+m_1047 x m_1049 x -0.09003
+m_1047 x m_1049 x -0.172021
+m_1047 x m_1049 x -0.18018
+m_1048 x m_1048 x 0.231718
+m_1048 x m_1048 x 0.032567
+m_1048 x m_1048 x 0.37068
+m_1048 x m_1048 x 0.531794
+m_1048 x m_1048 x 0.251853
+m_1048 x m_1050 x -0.039807
+m_1048 x m_1050 x -0.158791
+m_1048 x m_1050 x -0.123597
+m_1048 x m_1050 x -0.195967
+m_1048 x m_1050 x -0.10318
+m_1049 x m_1049 x 0.137166
+m_1049 x m_1049 x 0.07881
+m_1049 x m_1049 x 0.122634
+m_1049 x m_1049 x 0.067998
+m_1049 x m_1049 x 0.032458
+m_1049 x m_1051 x -0.045168
+m_1049 x m_1051 x -0.07624
+m_1049 x m_1051 x -0.010425
+m_1049 x m_1051 x -0.007416
+m_1049 x m_1051 x -0.104273
+m_1050 x m_1050 x 0.198104
+m_1050 x m_1050 x 0.238023
+m_1050 x m_1050 x 0.325879
+m_1050 x m_1050 x 0.212732
+m_1050 x m_1050 x 0.07356
+m_1050 x m_1052 x -0.136036
+m_1050 x m_1052 x -0.04766
+m_1050 x m_1052 x -0.15562
+m_1050 x m_1052 x -0.159182
+m_1050 x m_1052 x -0.166221
+m_1051 x m_1040 x -0.045368
+m_1051 x m_1040 x -0.094739
+m_1051 x m_1040 x -0.073475
+m_1051 x m_1040 x -0.166177
+m_1051 x m_1040 x -0.174827
+m_1051 x m_1051 x 0.457431
+m_1051 x m_1051 x 0.155697
+m_1051 x m_1051 x 0.479951
+m_1051 x m_1051 x 0.281574
+m_1051 x m_1051 x 0.206361
+m_1052 x m_1041 x -0.193203
+m_1052 x m_1041 x -0.083981
+m_1052 x m_1041 x -0.100523
+m_1052 x m_1041 x -0.13021
+m_1052 x m_1041 x -0.174762
+m_1052 x m_1052 x 0.092376
+m_1052 x m_1052 x 0.095863
+m_1052 x m_1052 x 0.070707
+m_1052 x m_1052 x 0.120926
+m_1052 x m_1052 x 0.053403
+f_1014 x f_1014 x 0.437731
+f_1014 x f_1014 x 0.318402
+f_1014 x f_1014 x 0.428893
+f_1014 x f_1014 x 0.453113
+f_1014 x f_1014 x 0.495515
+f_1014 x f_1017 x -0.11742
+f_1014 x f_1017 x -0.070269
+f_1014 x f_1017 x -0.106312
+f_1014 x f_1017 x -0.144875
+f_1014 x f_1017 x -0.094553
+f_1015 x f_1015 x 0.22944
+f_1015 x f_1015 x 0.143853
+f_1015 x f_1015 x 0.345441
+f_1015 x f_1015 x 0.292318
+f_1015 x f_1015 x 0.489542
+f_1015 x f_1018 x -0.167798
+f_1015 x f_1018 x -0.079764
+f_1015 x f_1018 x -0.097843
+f_1015 x f_1018 x -0.155892
+f_1015 x f_1018 x -0.132385
+f_1016 x f_1016 x 0.160622
+f_1016 x f_1016 x 0.171162
+f_1016 x f_1016 x 0.157513
+f_1016 x f_1016 x 0.135925
+f_1016 x f_1016 x 0.06149
+f_1016 x f_1019 x -0.050159
+f_1016 x f_1019 x -0.057178
+f_1016 x f_1019 x -0.074997
+f_1016 x f_1019 x -0.051324
+f_1016 x f_1019 x -0.048703
+f_1017 x f_1017 x 0.209104
+f_1017 x f_1017 x 0.175552
+f_1017 x f_1017 x 0.137198
+f_1017 x f_1017 x 0.171513
+f_1017 x f_1017 x 0.130996
+f_1017 x f_1020 x -0.243561
+f_1017 x f_1020 x -0.115798
+f_1017 x f_1020 x -0.034842
+f_1017 x f_1020 x -0.131362
+f_1017 x f_1020 x -0.159915
+f_1018 x f_1018 x -0.005463
+f_1018 x f_1018 x 0.206381
+f_1018 x f_1018 x 0.146986
+f_1018 x f_1018 x 0.069634
+f_1018 x f_1018 x 0.037562
+f_1018 x f_1021 x -0.147572
+f_1018 x f_1021 x -0.098223
+f_1018 x f_1021 x -0.139565
+f_1018 x f_1021 x -0.110759
+f_1018 x f_1021 x -0.147047
+f_1019 x f_1019 x 0.249895
+f_1019 x f_1019 x 0.278538
+f_1019 x f_1019 x 0.259574
+f_1019 x f_1019 x 0.17637
+f_1019 x f_1019 x 0.157258
+f_1019 x f_1022 x -0.118328
+f_1019 x f_1022 x -0.041292
+f_1019 x f_1022 x -0.052633
+f_1019 x f_1022 x -0.080992
+f_1019 x f_1022 x -0.127107
+f_1020 x f_1020 x 0.218971
+f_1020 x f_1020 x 0.04365
+f_1020 x f_1020 x 0.088146
+f_1020 x f_1020 x 0.160735
+f_1020 x f_1020 x 0.171037
+f_1020 x f_1023 x -0.143461
+f_1020 x f_1023 x -0.125433
+f_1020 x f_1023 x -0.129891
+f_1020 x f_1023 x -0.187145
+f_1020 x f_1023 x -0.177769
+f_1021 x f_1021 x -0.000116
+f_1021 x f_1021 x 0.01191
+f_1021 x f_1021 x -0.076906
+f_1021 x f_1021 x -0.115962
+f_1021 x f_1021 x -0.065717
+f_1021 x f_1024 x -0.219317
+f_1021 x f_1024 x -0.20047
+f_1021 x f_1024 x -0.219448
+f_1021 x f_1024 x -0.181918
+f_1021 x f_1024 x -0.221209
+f_1022 x f_1022 x 0.092949
+f_1022 x f_1022 x 0.13708
+f_1022 x f_1022 x 0.007386
+f_1022 x f_1022 x 0.04151
+f_1022 x f_1022 x 0.076811
+f_1022 x f_1025 x -0.148761
+f_1022 x f_1025 x -0.186116
+f_1022 x f_1025 x -0.149164
+f_1022 x f_1025 x -0.171441
+f_1022 x f_1025 x -0.2179
+f_1023 x f_1023 x 0.155696
+f_1023 x f_1023 x 0.065824
+f_1023 x f_1023 x 0.091544
+f_1023 x f_1023 x 0.109188
+f_1023 x f_1023 x 0.132669
+f_1023 x f_1026 x -0.107141
+f_1023 x f_1026 x -0.112328
+f_1023 x f_1026 x -0.117225
+f_1023 x f_1026 x -0.054713
+f_1023 x f_1026 x -0.045185
+f_1024 x f_1014 x -0.029009
+f_1024 x f_1014 x -0.142735
+f_1024 x f_1014 x -0.10747
+f_1024 x f_1014 x -0.046912
+f_1024 x f_1014 x -0.078291
+f_1024 x f_1024 x 0.155625
+f_1024 x f_1024 x 0.218861
+f_1024 x f_1024 x 0.24453
+f_1024 x f_1024 x 0.164316
+f_1024 x f_1024 x 0.037576
+f_1025 x f_1015 x -0.120623
+f_1025 x f_1015 x -0.150187
+f_1025 x f_1015 x -0.15106
+f_1025 x f_1015 x -0.042806
+f_1025 x f_1015 x -0.120825
+f_1025 x f_1025 x 0.187759
+f_1025 x f_1025 x 0.014105
+f_1025 x f_1025 x 0.01868
+f_1025 x f_1025 x 0.000269
+f_1025 x f_1025 x 0.129064
+f_1026 x f_1016 x -0.090137
+f_1026 x f_1016 x -0.191546
+f_1026 x f_1016 x -0.202833
+f_1026 x f_1016 x -0.06334
+f_1026 x f_1016 x -0.180062
+f_1026 x f_1026 x 0.112111
+f_1026 x f_1026 x 0.265684
+f_1026 x f_1026 x 0.164375
+f_1026 x f_1026 x 0.167411
+f_1026 x f_1026 x 0.127449
+m_1040 x m_1040 x 0.209957
+m_1040 x m_1040 x 0.271467
+m_1040 x m_1040 x 0.4301
+m_1040 x m_1040 x 0.33632
+m_1040 x m_1040 x 0.387182
+m_1040 x m_1043 x -0.089345
+m_1040 x m_1043 x -0.060908
+m_1040 x m_1043 x -0.003329
+m_1040 x m_1043 x -0.050925
+m_1040 x m_1043 x -0.085675
+m_1041 x m_1041 x 0.182627
+m_1041 x m_1041 x 0.200762
+m_1041 x m_1041 x 0.117049
+m_1041 x m_1041 x 0.276846
+m_1041 x m_1041 x 0.099233
+m_1041 x m_1044 x -0.086125
+m_1041 x m_1044 x -0.157261
+m_1041 x m_1044 x -0.133127
+m_1041 x m_1044 x -0.054866
+m_1041 x m_1044 x -0.076243
+m_1042 x m_1042 x 0.07247
+m_1042 x m_1042 x 0.247412
+m_1042 x m_1042 x 0.15837
+m_1042 x m_1042 x 0.178847
+m_1042 x m_1042 x 0.24374
+m_1042 x m_1045 x -0.140707
+m_1042 x m_1045 x -0.079508
+m_1042 x m_1045 x -0.143072
+m_1042 x m_1045 x -0.150436
+m_1042 x m_1045 x -0.106972
+m_1043 x m_1043 x 0.173801
+m_1043 x m_1043 x 0.218501
+m_1043 x m_1043 x 0.026206
+m_1043 x m_1043 x -0.002241
+m_1043 x m_1043 x -0.004563
+m_1043 x m_1046 x -0.104471
+m_1043 x m_1046 x -0.059102
+m_1043 x m_1046 x -0.086887
+m_1043 x m_1046 x -0.0566
+m_1043 x m_1046 x -0.020795
+m_1044 x m_1044 x 0.032542
+m_1044 x m_1044 x 0.110404
+m_1044 x m_1044 x 0.044183
+m_1044 x m_1044 x 0.097114
+m_1044 x m_1044 x 0.160409
+m_1044 x m_1047 x -0.156181
+m_1044 x m_1047 x -0.14282
+m_1044 x m_1047 x -0.085566
+m_1044 x m_1047 x -0.125108
+m_1044 x m_1047 x -0.115352
+m_1045 x m_1045 x 0.172385
+m_1045 x m_1045 x 0.126612
+m_1045 x m_1045 x 0.077574
+m_1045 x m_1045 x 0.289203
+m_1045 x m_1045 x 0.253339
+m_1045 x m_1048 x -0.256196
+m_1045 x m_1048 x -0.253315
+m_1045 x m_1048 x -0.22607
+m_1045 x m_1048 x -0.118963
+m_1045 x m_1048 x -0.170421
+m_1046 x m_1046 x -0.021949
+m_1046 x m_1046 x -0.013185
+m_1046 x m_1046 x 0.2579
+m_1046 x m_1046 x 0.142666
+m_1046 x m_1046 x 0.317434
+m_1046 x m_1049 x -0.119188
+m_1046 x m_1049 x -0.111455
+m_1046 x m_1049 x -0.06934
+m_1046 x m_1049 x -0.140823
+m_1046 x m_1049 x -0.16487
+m_1047 x m_1047 x 0.048617
+m_1047 x m_1047 x 0.091316
+m_1047 x m_1047 x 0.108092
+m_1047 x m_1047 x 0.042686
+m_1047 x m_1047 x 0.082616
+m_1047 x m_1050 x -0.086422
+m_1047 x m_1050 x -0.135674
+m_1047 x m_1050 x -0.092624
+m_1047 x m_1050 x -0.221991
+m_1047 x m_1050 x -0.072428
+m_1048 x m_1048 x -0.040296
+m_1048 x m_1048 x 0.304093
+m_1048 x m_1048 x 0.274446
+m_1048 x m_1048 x 0.218834
+m_1048 x m_1048 x 0.019644
+m_1048 x m_1051 x -0.081076
+m_1048 x m_1051 x -0.106185
+m_1048 x m_1051 x -0.146137
+m_1048 x m_1051 x -0.1589
+m_1048 x m_1051 x -0.156646
+m_1049 x m_1049 x 0.08706
+m_1049 x m_1049 x 0.190712
+m_1049 x m_1049 x 0.157489
+m_1049 x m_1049 x 0.050289
+m_1049 x m_1049 x 0.115878
+m_1049 x m_1052 x -0.055599
+m_1049 x m_1052 x -0.077193
+m_1049 x m_1052 x -0.065377
+m_1049 x m_1052 x -0.021629
+m_1049 x m_1052 x -0.083342
+m_1050 x m_1040 x -0.096163
+m_1050 x m_1040 x -0.137793
+m_1050 x m_1040 x -0.186286
+m_1050 x m_1040 x -0.141722
+m_1050 x m_1040 x -0.099895
+m_1050 x m_1050 x 0.018712
+m_1050 x m_1050 x 0.061794
+m_1050 x m_1050 x -0.00523
+m_1050 x m_1050 x 0.117835
+m_1050 x m_1050 x -0.07796
+m_1051 x m_1041 x -0.090685
+m_1051 x m_1041 x -0.14119
+m_1051 x m_1041 x -0.084481
+m_1051 x m_1041 x -0.144805
+m_1051 x m_1041 x -0.149656
+m_1051 x m_1051 x 0.149061
+m_1051 x m_1051 x 0.298765
+m_1051 x m_1051 x 0.194495
+m_1051 x m_1051 x 0.272661
+m_1051 x m_1051 x 0.252346
+m_1052 x m_1042 x -0.149167
+m_1052 x m_1042 x -0.16615
+m_1052 x m_1042 x -0.276333
+m_1052 x m_1042 x -0.188244
+m_1052 x m_1042 x -0.199263
+m_1052 x m_1052 x 0.074832
+m_1052 x m_1052 x 0.111728
+m_1052 x m_1052 x 0.011147
+m_1052 x m_1052 x 0.096093
+m_1052 x m_1052 x 0.014352
+f_1014 x f_1014 x 0.108577
+f_1014 x f_1014 x 0.227893
+f_1014 x f_1014 x 0.253652
+f_1014 x f_1014 x 0.32725
+f_1014 x f_1014 x 0.340216
+f_1014 x f_1018 x -0.102353
+f_1014 x f_1018 x -0.111658
+f_1014 x f_1018 x -0.065165
+f_1014 x f_1018 x -0.090465
+f_1014 x f_1018 x -0.087901
+f_1015 x f_1015 x 0.276852
+f_1015 x f_1015 x 0.324612
+f_1015 x f_1015 x 0.336296
+f_1015 x f_1015 x 0.235154
+f_1015 x f_1015 x 0.256454
+f_1015 x f_1019 x -0.078625
+f_1015 x f_1019 x -0.109084
+f_1015 x f_1019 x -0.059179
+f_1015 x f_1019 x -0.147283
+f_1015 x f_1019 x -0.151253
+f_1016 x f_1016 x 0.09251
+f_1016 x f_1016 x 0.238722
+f_1016 x f_1016 x 0.120821
+f_1016 x f_1016 x 0.203909
+f_1016 x f_1016 x 0.031465
+f_1016 x f_1020 x -0.080126
+f_1016 x f_1020 x -0.164751
+f_1016 x f_1020 x -0.121187
+f_1016 x f_1020 x -0.082511
+f_1016 x f_1020 x -0.113241
+f_1017 x f_1017 x 0.028233
+f_1017 x f_1017 x 0.148459
+f_1017 x f_1017 x -0.018476
+f_1017 x f_1017 x 0.061587
+f_1017 x f_1017 x 0.021536
+f_1017 x f_1021 x 0.016132
+f_1017 x f_1021 x -0.121139
+f_1017 x f_1021 x -0.060869
+f_1017 x f_1021 x -0.09941
+f_1017 x f_1021 x -0.118627
+f_1018 x f_1018 x 0.158122
+f_1018 x f_1018 x 0.126481
+f_1018 x f_1018 x 0.071357
+f_1018 x f_1018 x 0.098801
+f_1018 x f_1018 x 0.141165
+f_1018 x f_1022 x -0.064997
+f_1018 x f_1022 x -0.045456
+f_1018 x f_1022 x -0.123946
+f_1018 x f_1022 x -0.100114
+f_1018 x f_1022 x -0.101694
+f_1019 x f_1019 x 0.092109
+f_1019 x f_1019 x 0.097601
+f_1019 x f_1019 x 0.180552
+f_1019 x f_1019 x 0.099773
+f_1019 x f_1019 x 0.169073
+f_1019 x f_1023 x -0.052974
+f_1019 x f_1023 x -0.10636
+f_1019 x f_1023 x -0.135503
+f_1019 x f_1023 x -0.079938
+f_1019 x f_1023 x -0.055776
+f_1020 x f_1020 x 0.260382
+f_1020 x f_1020 x 0.119577
+f_1020 x f_1020 x -0.004131
+f_1020 x f_1020 x 0.098814
+f_1020 x f_1020 x 0.086
+f_1020 x f_1024 x -0.028026
+f_1020 x f_1024 x -0.026484
+f_1020 x f_1024 x -0.072186
+f_1020 x f_1024 x -0.06285
+f_1020 x f_1024 x 0.003419
+f_1021 x f_1021 x 0.039163
+f_1021 x f_1021 x 0.033955
+f_1021 x f_1021 x 0.062135
+f_1021 x f_1021 x 0.010597
+f_1021 x f_1021 x 0.091413
+f_1021 x f_1025 x -0.248219
+f_1021 x f_1025 x -0.151833
+f_1021 x f_1025 x -0.176115
+f_1021 x f_1025 x -0.131918
+f_1021 x f_1025 x -0.077725
+f_1022 x f_1022 x 0.180838
+f_1022 x f_1022 x 0.143177
+f_1022 x f_1022 x 0.232578
+f_1022 x f_1022 x 0.289811
+f_1022 x f_1022 x 0.114453
+f_1022 x f_1026 x -0.158982
+f_1022 x f_1026 x -0.060544
+f_1022 x f_1026 x -0.105571
+f_1022 x f_1026 x -0.176789
+f_1022 x f_1026 x -0.077864
+f_1023 x f_1014 x -0.107909
+f_1023 x f_1014 x -0.12447
+f_1023 x f_1014 x -0.081167
+f_1023 x f_1014 x -0.036152
+f_1023 x f_1014 x -0.067161
+f_1023 x f_1023 x 0.15069
+f_1023 x f_1023 x 0.233796
+f_1023 x f_1023 x 0.205184
+f_1023 x f_1023 x 0.017664
+f_1023 x f_1023 x 0.151249
+f_1024 x f_1015 x -0.109158
+f_1024 x f_1015 x -0.069678
+f_1024 x f_1015 x -0.130969
+f_1024 x f_1015 x -0.104467
+f_1024 x f_1015 x -0.141174
+f_1024 x f_1024 x 0.263034
+f_1024 x f_1024 x 0.273758
+f_1024 x f_1024 x 0.216361
+f_1024 x f_1024 x 0.234225
+f_1024 x f_1024 x 0.195322
+f_1025 x f_1016 x -0.07368
+f_1025 x f_1016 x -0.013295
+f_1025 x f_1016 x -0.052979
+f_1025 x f_1016 x -0.080032
+f_1025 x f_1016 x -0.046169
+f_1025 x f_1025 x 0.040995
+f_1025 x f_1025 x 0.015184
+f_1025 x f_1025 x -0.038587
+f_1025 x f_1025 x 0.115313
+f_1025 x f_1025 x -0.025057
+f_1026 x f_1017 x -0.134662
+f_1026 x f_1017 x -0.173454
+f_1026 x f_1017 x -0.107414
+f_1026 x f_1017 x -0.072375
+f_1026 x f_1017 x -0.096127
+f_1026 x f_1026 x -0.027845
+f_1026 x f_1026 x -0.109461
+f_1026 x f_1026 x 0.14858
+f_1026 x f_1026 x -0.049125
+f_1026 x f_1026 x 0.001497
+m_1040 x m_1040 x 0.221399
+m_1040 x m_1040 x 0.279534
+m_1040 x m_1040 x 0.199229
+m_1040 x m_1040 x 0.133006
+m_1040 x m_1040 x 0.082303
+m_1040 x m_1044 x -0.049536
+m_1040 x m_1044 x -0.113089
+m_1040 x m_1044 x -0.149159
+m_1040 x m_1044 x -0.116671
+m_1040 x m_1044 x -0.111438
+m_1041 x m_1041 x 0.051518
+m_1041 x m_1041 x 0.08079
+m_1041 x m_1041 x 0.071167
+m_1041 x m_1041 x 0.077873
+m_1041 x m_1041 x 0.120539
+m_1041 x m_1045 x -0.109798
+m_1041 x m_1045 x -0.019602
+m_1041 x m_1045 x -0.018571
+m_1041 x m_1045 x -0.097454
+m_1041 x m_1045 x -0.14162
+m_1042 x m_1042 x 0.239908
+m_1042 x m_1042 x 0.394366
+m_1042 x m_1042 x 0.424995
+m_1042 x m_1042 x 0.362606
+m_1042 x m_1042 x 0.083466
+m_1042 x m_1046 x -0.082171
+m_1042 x m_1046 x -0.082347
+m_1042 x m_1046 x 0.019412
+m_1042 x m_1046 x -0.132104
+m_1042 x m_1046 x -0.10197
+m_1043 x m_1043 x 0.141103
+m_1043 x m_1043 x 0.151438
+m_1043 x m_1043 x 0.123697
+m_1043 x m_1043 x 0.187986
+m_1043 x m_1043 x 0.112817
+m_1043 x m_1047 x -0.077024
+m_1043 x m_1047 x -0.042302
+m_1043 x m_1047 x -0.026802
+m_1043 x m_1047 x -0.083944
+m_1043 x m_1047 x -0.155431
+m_1044 x m_1044 x -0.028161
+m_1044 x m_1044 x 0.054529
+m_1044 x m_1044 x 0.13168
+m_1044 x m_1044 x 0.038872
+m_1044 x m_1044 x 0.077572
+m_1044 x m_1048 x -0.213132
+m_1044 x m_1048 x -0.193029
+m_1044 x m_1048 x -0.200924
+m_1044 x m_1048 x -0.16708
+m_1044 x m_1048 x -0.204056
+m_1045 x m_1045 x 0.153144
+m_1045 x m_1045 x 0.093438
+m_1045 x m_1045 x 0.087949
+m_1045 x m_1045 x 0.160263
+m_1045 x m_1045 x 0.084367
+m_1045 x m_1049 x -0.045984
+m_1045 x m_1049 x -0.118589
+m_1045 x m_1049 x -0.018129
+m_1045 x m_1049 x -0.108371
+m_1045 x m_1049 x -0.158667
+m_1046 x m_1046 x -0.106347
+m_1046 x m_1046 x 0.159463
+m_1046 x m_1046 x 0.269966
+m_1046 x m_1046 x 0.168759
+m_1046 x m_1046 x 0.289834
+m_1046 x m_1050 x -0.101596
+m_1046 x m_1050 x -0.128711
+m_1046 x m_1050 x -0.059498
+m_1046 x m_1050 x -0.173279
+m_1046 x m_1050 x -0.110372
+m_1047 x m_1047 x 0.071048
+m_1047 x m_1047 x 0.20056
+m_1047 x m_1047 x 0.176091
+m_1047 x m_1047 x 0.098561
+m_1047 x m_1047 x 0.164626
+m_1047 x m_1051 x -0.093315
+m_1047 x m_1051 x -0.018984
+m_1047 x m_1051 x -0.103095
+m_1047 x m_1051 x -0.077934
+m_1047 x m_1051 x -0.118351
+m_1048 x m_1048 x 0.377338
+m_1048 x m_1048 x 0.424671
+m_1048 x m_1048 x 0.297769
+m_1048 x m_1048 x -0.005302
+m_1048 x m_1048 x 0.196666
+m_1048 x m_1052 x -0.069208
+m_1048 x m_1052 x -0.177879
+m_1048 x m_1052 x -0.10231
+m_1048 x m_1052 x -0.122667
+m_1048 x m_1052 x -0.068862
+m_1049 x m_1040 x -0.153227
+m_1049 x m_1040 x -0.184595
+m_1049 x m_1040 x -0.136615
+m_1049 x m_1040 x -0.077627
+m_1049 x m_1040 x -0.106458
+m_1049 x m_1049 x 0.111003
+m_1049 x m_1049 x 0.101531
+m_1049 x m_1049 x 0.123256
+m_1049 x m_1049 x 0.12464
+m_1049 x m_1049 x 0.051604
+m_1050 x m_1041 x -0.054181
+m_1050 x m_1041 x -0.140659
+m_1050 x m_1041 x -0.129502
+m_1050 x m_1041 x -0.108929
+m_1050 x m_1041 x -0.032078
+m_1050 x m_1050 x 0.126906
+m_1050 x m_1050 x 0.13685
+m_1050 x m_1050 x 0.033093
+m_1050 x m_1050 x 0.047939
+m_1050 x m_1050 x -0.013868
+m_1051 x m_1042 x -0.153977
+m_1051 x m_1042 x -0.113284
+m_1051 x m_1042 x -0.23003
+m_1051 x m_1042 x -0.186212
+m_1051 x m_1042 x -0.145767
+m_1051 x m_1051 x 0.235478
+m_1051 x m_1051 x 0.207846
+m_1051 x m_1051 x 0.278796
+m_1051 x m_1051 x 0.142962
+m_1051 x m_1051 x 0.180351
+m_1052 x m_1043 x -0.178691
+m_1052 x m_1043 x -0.197601
+m_1052 x m_1043 x -0.129918
+m_1052 x m_1043 x -0.167795
+m_1052 x m_1043 x -0.175029
+m_1052 x m_1052 x 0.082763
+m_1052 x m_1052 x 0.112163
+m_1052 x m_1052 x 0.188003
+m_1052 x m_1052 x 0.044418
+m_1052 x m_1052 x 0.127454
+f_1014 x f_1015 x 0.014841
+f_1014 x f_1015 x -0.026769
+f_1014 x f_1015 x -0.080662
+f_1014 x f_1015 x -0.085209
+f_1014 x f_1015 x -0.072679
+f_1015 x f_1016 x -0.164857
+f_1015 x f_1016 x -0.178725
+f_1015 x f_1016 x -0.128464
+f_1015 x f_1016 x -0.214679
+f_1015 x f_1016 x -0.134944
+f_1016 x f_1017 x -0.014597
+f_1016 x f_1017 x -0.071501
+f_1016 x f_1017 x -0.128072
+f_1016 x f_1017 x -0.123337
+f_1016 x f_1017 x -0.116541
+f_1017 x f_1018 x -0.141496
+f_1017 x f_1018 x -0.196624
+f_1017 x f_1018 x -0.173068
+f_1017 x f_1018 x -0.230658
+f_1017 x f_1018 x -0.205358
+f_1018 x f_1019 x -0.048368
+f_1018 x f_1019 x -0.043071
+f_1018 x f_1019 x -0.049429
+f_1018 x f_1019 x -0.014632
+f_1018 x f_1019 x -0.093057
+f_1019 x f_1020 x -0.124173
+f_1019 x f_1020 x -0.122335
+f_1019 x f_1020 x -0.078392
+f_1019 x f_1020 x -0.211568
+f_1019 x f_1020 x -0.221264
+f_1020 x f_1021 x -0.190812
+f_1020 x f_1021 x -0.130903
+f_1020 x f_1021 x -0.148297
+f_1020 x f_1021 x -0.218195
+f_1020 x f_1021 x -0.130123
+f_1021 x f_1022 x -0.020938
+f_1021 x f_1022 x 0.032565
+f_1021 x f_1022 x 0.029753
+f_1021 x f_1022 x 0.008387
+f_1021 x f_1022 x -0.029518
+f_1022 x f_1023 x -0.065429
+f_1022 x f_1023 x -0.0499
+f_1022 x f_1023 x -0.092752
+f_1022 x f_1023 x -0.115253
+f_1022 x f_1023 x -0.043749
+f_1023 x f_1024 x -0.160373
+f_1023 x f_1024 x -0.073335
+f_1023 x f_1024 x -0.05861
+f_1023 x f_1024 x -0.094012
+f_1023 x f_1024 x -0.056688
+f_1024 x f_1025 x -0.328486
+f_1024 x f_1025 x -0.308301
+f_1024 x f_1025 x -0.220186
+f_1024 x f_1025 x -0.365362
+f_1024 x f_1025 x -0.178491
+f_1025 x f_1026 x -0.098447
+f_1025 x f_1026 x -0.079008
+f_1025 x f_1026 x -0.120396
+f_1025 x f_1026 x -0.092791
+f_1025 x f_1026 x -0.052482
+f_1026 x f_1014 x -0.066869
+f_1026 x f_1014 x -0.139432
+f_1026 x f_1014 x -0.037634
+f_1026 x f_1014 x -0.20375
+f_1026 x f_1014 x -0.132627
+m_1040 x m_1041 x -0.045661
+m_1040 x m_1041 x -0.025406
+m_1040 x m_1041 x -0.075282
+m_1040 x m_1041 x -0.05577
+m_1040 x m_1041 x -0.070087
+m_1041 x m_1042 x -0.205976
+m_1041 x m_1042 x -0.130663
+m_1041 x m_1042 x -0.081094
+m_1041 x m_1042 x -0.097618
+m_1041 x m_1042 x -0.021077
+m_1042 x m_1043 x -0.037937
+m_1042 x m_1043 x -0.002371
+m_1042 x m_1043 x 0.012176
+m_1042 x m_1043 x -0.093591
+m_1042 x m_1043 x -0.038423
+m_1043 x m_1044 x -0.101432
+m_1043 x m_1044 x -0.039491
+m_1043 x m_1044 x -0.11965
+m_1043 x m_1044 x -0.109702
+m_1043 x m_1044 x -0.156936
+m_1044 x m_1045 x -0.085479
+m_1044 x m_1045 x -0.13362
+m_1044 x m_1045 x -0.12149
+m_1044 x m_1045 x -0.075713
+m_1044 x m_1045 x -0.08801
+m_1045 x m_1046 x -0.106102
+m_1045 x m_1046 x -0.141614
+m_1045 x m_1046 x -0.150365
+m_1045 x m_1046 x -0.123084
+m_1045 x m_1046 x -0.201897
+m_1046 x m_1047 x -0.125069
+m_1046 x m_1047 x -0.168533
+m_1046 x m_1047 x -0.112757
+m_1046 x m_1047 x -0.1736
+m_1046 x m_1047 x -0.172724
+m_1047 x m_1048 x -0.166386
+m_1047 x m_1048 x -0.170671
+m_1047 x m_1048 x -0.058329
+m_1047 x m_1048 x -0.109204
+m_1047 x m_1048 x -0.122232
+m_1048 x m_1049 x -0.204613
+m_1048 x m_1049 x -0.219919
+m_1048 x m_1049 x -0.146424
+m_1048 x m_1049 x -0.16871
+m_1048 x m_1049 x -0.142253
+m_1049 x m_1050 x -0.051034
+m_1049 x m_1050 x -0.103298
+m_1049 x m_1050 x -0.035702
+m_1049 x m_1050 x -0.100288
+m_1049 x m_1050 x -0.00913
+m_1050 x m_1051 x -0.073954
+m_1050 x m_1051 x -0.099813
+m_1050 x m_1051 x -0.044652
+m_1050 x m_1051 x -0.043802
+m_1050 x m_1051 x -0.139938
+m_1051 x m_1052 x -0.109771
+m_1051 x m_1052 x -0.121056
+m_1051 x m_1052 x -0.102811
+m_1051 x m_1052 x -0.097827
+m_1051 x m_1052 x -0.106235
+m_1052 x m_1040 x -0.129523
+m_1052 x m_1040 x -0.167863
+m_1052 x m_1040 x -0.179332
+m_1052 x m_1040 x -0.169263
+m_1052 x m_1040 x -0.188729
diff --git a/bob/bio/base/test/test_commands.py b/bob/bio/base/test/test_commands.py
new file mode 100644
index 0000000000000000000000000000000000000000..7ed0a6a6faadf3ab59a9537738ebb2f636a9783d
--- /dev/null
+++ b/bob/bio/base/test/test_commands.py
@@ -0,0 +1,315 @@
+'''Tests for bob.measure scripts'''
+
+import sys
+import filecmp
+import click
+from click.testing import CliRunner
+import pkg_resources
+from ..script import commands
+
+def test_metrics():
+    dev1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-4col.txt')
+    runner = CliRunner()
+    result = runner.invoke(commands.metrics, ['--no-evaluation', dev1])
+    with runner.isolated_filesystem():
+        with open('tmp', 'w') as f:
+            f.write(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+    dev2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-5col.txt')
+    test1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-4col.txt')
+    test2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-5col.txt')
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, [dev1, test1, dev2, test2]
+        )
+        with open('tmp', 'w') as f:
+            f.write(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, ['-l', 'tmp', '-lg', 'A,B',
+                               dev1, test1, dev2, test2]
+        )
+        assert result.exit_code == 0, (result.exit_code, result.output)
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, ['-l', 'tmp', dev1, test2]
+        )
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, ['-l', 'tmp', '-T', '0.1',
+                               '--criterion', 'mindcf', '--cost', 0.9,
+                               dev1, test2]
+        )
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, ['--no-evaluation', '-l', 'tmp',
+                               '--criterion', 'mindcf', '--cost', 0.9,
+                               dev1]
+        )
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, ['--criterion', 'cllr', dev1, test2]
+        )
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, ['--no-evaluation', '-l', 'tmp', '--criterion', 'cllr',
+                               '--cost', 0.9, dev1]
+        )
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, ['--criterion', 'rr', '-T',
+                               '0.1', dev1, test2]
+        )
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(
+            commands.metrics, ['--no-evaluation', '-l', 'tmp', '--criterion', 'rr',
+                               dev1, dev2]
+        )
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+
+def test_roc():
+    dev1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-4col.txt')
+    runner = CliRunner()
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.roc, ['--no-evaluation', '--output',
+                                              'test.pdf',dev1])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+    dev2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-5col.txt')
+    test1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-4col.txt')
+    test2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-5col.txt')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.roc, ['--split', '--output',
+                                              'test.pdf', '-S', '-lc',
+                                              'lower-left',
+                                              dev1, test1, dev2, test2])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.roc, ['--output',
+                                              'test.pdf', '--legends', 'A,B', 
+                                              dev1, test1, dev2, test2])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    dev_nonorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-nonorm-dev')
+    dev_ztnorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-ztnorm-dev')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.roc, [
+            '--min-far-value', '1e-6',
+            '--lines-at', '1e-5',
+            '-v', '--legends', 'A',
+            dev_nonorm, dev_ztnorm
+        ])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+
+def test_det():
+    dev1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-4col.txt')
+    runner = CliRunner()
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.det, ['--no-evaluation', dev1, '-S'])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+    dev2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-5col.txt')
+    test1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-4col.txt')
+    test2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-5col.txt')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.det, ['--split', '--output',
+                                              'test.pdf', '--legends', 'A,B',
+                                              dev1, test1, dev2, test2])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.det, ['--output',
+                                              'test.pdf',
+                                              dev1, test1, dev2, test2])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+    dev_nonorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-nonorm-dev')
+    dev_ztnorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-ztnorm-dev')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.det, [
+            '--min-far-value', '1e-6',
+            '--lines-at', '1e-5',
+            '-v', '--legends', 'A',
+            dev_nonorm, dev_ztnorm
+        ])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+def test_epc():
+    dev1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-4col.txt')
+    test1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-4col.txt')
+    runner = CliRunner()
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.epc, [dev1, test1])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+    dev2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-4col.tar.gz')
+    test2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-5col.txt')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.epc, ['--output', 'test.pdf',
+                                              '--legends', 'A,B', '-S',
+                                              dev1, test1, dev2, test2])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    dev_nonorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-nonorm-dev')
+    dev_ztnorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-ztnorm-dev')
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.epc, [
+            '-v', '--legends', 'A',
+            dev_nonorm, dev_ztnorm
+        ])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+
+def test_hist():
+    dev1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-4col.txt')
+    dev2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/dev-5col.txt')
+    test1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-4col.txt')
+    test2 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/test-5col.txt')
+    runner = CliRunner()
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.hist, ['--no-evaluation', dev1])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.hist, ['--criterion', 'min-hter', '--output',
+                                               'HISTO.pdf', '-b',
+                                               '30,auto','--no-evaluation', dev1, dev2])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.hist, ['--criterion', 'eer', '--output',
+                                               'HISTO.pdf', '-b', '30',
+                                               '-lg', 'A,B', dev1, test1, dev2,
+                                               test2])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+
+def test_cmc():
+    dev1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/scores-cmc-5col.txt')
+    runner = CliRunner()
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.cmc, ['--no-evaluation', dev1])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+    test1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/scores-cmc-4col.txt')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.cmc, ['--output', 'test.pdf',
+                                              '--legends', 'A,B', '-S',
+                                              dev1, test1, dev1, test1])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+    dev_nonorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-nonorm-dev')
+    dev_ztnorm = pkg_resources.resource_filename('bob.bio.base.test',
+                                                 'data/scores-ztnorm-dev')
+
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.cmc, [
+            '-v', '--legends', 'A',
+            dev_nonorm, dev_ztnorm
+        ])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+
+
+
+
+def test_dir():
+    dev1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                           'data/scores-nonorm-openset-dev')
+    runner = CliRunner()
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.dir, ['--no-evaluation', dev1, '--rank', 2])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
+    test1 = pkg_resources.resource_filename('bob.bio.base.test',
+                                            'data/scores-nonorm-openset-dev')
+    with runner.isolated_filesystem():
+        result = runner.invoke(commands.dir, ['--output', 'test.pdf',
+                                              '--legends', 'A,B', '-S',
+                                              '--min-far-value', '1e-6',
+                                              dev1, test1, dev1, test1])
+        if result.output:
+            click.echo(result.output)
+        assert result.exit_code == 0, (result.exit_code, result.output)
diff --git a/bob/bio/base/test/test_io.py b/bob/bio/base/test/test_io.py
new file mode 100644
index 0000000000000000000000000000000000000000..fa908d46bf2b6c49c56edbc159ac0efc898cf6da
--- /dev/null
+++ b/bob/bio/base/test/test_io.py
@@ -0,0 +1,326 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Andre Anjos <andre.anjos@idiap.ch>
+# Wed 11 Dec 15:14:08 2013 CET
+#
+# Copyright (C) 2011-2013 Idiap Research Institute, Martigny, Switzerland
+
+"""Tests the IO functionality of bob.bio.base.score."""
+
+import numpy
+import tempfile
+import os
+import shutil
+import pkg_resources
+
+from .. import score
+
+
+def test_load_scores():
+  # This function tests the IO functionality of loading score files in
+  # different ways
+
+  load_functions = {'4col': score.four_column,
+                    '5col': score.five_column}
+  cols = {'4col': 4, '5col': 5}
+
+  for variant in cols:
+    normal_score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/dev-%s.txt' % variant)
+    normal_scores = list(load_functions[variant](normal_score_file))
+
+    assert len(normal_scores) == 910
+    assert all(len(s) == cols[variant] for s in normal_scores)
+
+    # read the compressed score file
+    compressed_score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/dev-%s.tar.gz' % variant)
+    compressed_scores = list(load_functions[variant](compressed_score_file))
+
+    assert len(compressed_scores) == len(normal_scores)
+    assert all(len(c) == cols[variant] for c in compressed_scores)
+    assert all(c[i] == s[i] for c, s in zip(compressed_scores,
+                                            normal_scores) for i in range(cols[variant]))
+
+    # Use auto-estimated score file contents
+    # read score file in normal way
+    normal_scores = list(score.scores(normal_score_file))
+
+    assert len(normal_scores) == 910
+    assert all(len(s) == cols[variant] for s in normal_scores)
+
+    # read the compressed score file
+    compressed_scores = list(score.scores(compressed_score_file))
+
+    assert len(compressed_scores) == len(normal_scores)
+    assert all(len(c) == cols[variant] for c in compressed_scores)
+    assert all(c[i] == s[i] for c, s in zip(compressed_scores,
+                                            normal_scores) for i in range(cols[variant]))
+
+
+def test_split_scores():
+  # This function tests the IO functionality of loading score files in
+  # different ways
+
+  split_functions = {'4col': score.split_four_column,
+                     '5col': score.split_five_column}
+  cols = {'4col': 4, '5col': 5}
+
+  for variant in cols:
+    # read score file in normal way
+    normal_score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/dev-%s.txt' % variant)
+    negatives, positives = split_functions[variant](normal_score_file)
+
+    assert len(negatives) == 520, len(negatives)
+    assert len(positives) == 390, len(positives)
+
+    # read the compressed score file
+    compressed_score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/dev-%s.tar.gz' % variant)
+    negatives, positives = split_functions[variant](compressed_score_file)
+
+    assert len(negatives) == 520, len(negatives)
+    assert len(positives) == 390, len(positives)
+
+    # Use auto-estimated score file contents
+    # read score file in normal way
+    negatives, positives = score.split(normal_score_file)
+
+    assert len(negatives) == 520, len(negatives)
+    assert len(positives) == 390, len(positives)
+
+    # read the compressed score file
+    negatives, positives = score.split(compressed_score_file)
+
+    assert len(negatives) == 520, len(negatives)
+    assert len(positives) == 390, len(positives)
+
+
+def test_load_score():
+  # This function tests the IO functionality of loading score files in
+  # different ways
+
+  scores = []
+  cols = {'4col': 4, '5col': 5}
+
+  for variant in cols:
+    compressed_score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/dev-%s.tar.gz' % variant)
+    normal_score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/dev-%s.txt' % variant)
+    normal_scores = score.load_score(
+        normal_score_file, cols[variant])
+
+    assert len(normal_scores) == 910
+    assert len(normal_scores.dtype) == cols[variant]
+
+    # read the compressed score file
+    compressed_score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/dev-%s.tar.gz' % variant)
+    compressed_scores = score.load_score(
+        compressed_score_file, cols[variant])
+
+    assert len(compressed_scores) == len(normal_scores)
+    assert len(compressed_scores.dtype) == cols[variant]
+    for name in normal_scores.dtype.names:
+      assert all(normal_scores[name] == compressed_scores[name])
+
+    # test minimal loading
+    minimal_scores = score.load_score(
+        normal_score_file, minimal=True)
+    assert len(minimal_scores) == 910
+    assert len(minimal_scores.dtype) == 3
+    assert minimal_scores.dtype.names == ('claimed_id', 'real_id', 'score')
+
+
+def test_dump_score():
+  # This function tests the IO functionality of dumping score files
+
+  scores = []
+  cols = {'4col': 4, '5col': 5}
+
+  for variant in cols:
+    # read score file
+    normal_score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/dev-%s.txt' % variant)
+    normal_scores = score.load_score(
+        normal_score_file, cols[variant])
+
+    with tempfile.TemporaryFile() as f:
+      score.dump_score(f, normal_scores)
+      f.seek(0)
+      loaded_scores = score.load_score(f, cols[variant])
+
+    for name in normal_scores.dtype.names:
+      assert all(normal_scores[name] == loaded_scores[name])
+
+
+def _check_binary_identical(name1, name2):
+  # see: http://www.peterbe.com/plog/using-md5-to-check-equality-between-files
+  from hashlib import md5
+  # tests if two files are binary identical
+  with open(name1, 'rb') as f1:
+    with open(name2, 'rb') as f2:
+      assert md5(f1.read()).digest() == md5(f2.read()).digest()
+
+
+def test_openbr_verify():
+  # This function tests that the conversion to the OpenBR verify file works
+  # as expected
+  temp_dir = tempfile.mkdtemp(prefix='bob_test')
+
+  # define output files
+  openbr_extensions = ('.mtx', '.mask')
+  matrix_file, mask_file = [os.path.join(
+      temp_dir, "scores%s") % ext for ext in openbr_extensions]
+
+  try:
+    for variant in ('4col', '5col'):
+      # get score file
+      score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/scores-cmc-%s.txt' % variant)
+
+      # first round, do not define keyword arguments -- let the file get the
+      # gallery and probe ids automatically
+      kwargs = {}
+      for i in range(2):
+        # get the files by automatically obtaining the identities
+        score.write_matrix(
+            score_file, matrix_file, mask_file, score_file_format="%sumn" % variant, **kwargs)
+
+        assert os.path.isfile(matrix_file) and os.path.isfile(mask_file)
+
+        # check that they are binary identical to the reference files (which
+        # are tested to work and give the same results with OpenBR)
+        matrix_ref, mask_ref = [pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/scores%s' % ext) for ext in openbr_extensions]
+        _check_binary_identical(matrix_file, matrix_ref)
+        _check_binary_identical(mask_file, mask_ref)
+
+        # define new kwargs for second round, i.e., define model and probe names
+        # these names are identical to what is found in the score file, which
+        # in turn comes from the AT&T database
+        model_type = {"4col": "%d", "5col": "s%d"}[variant]
+        dev_ids = (3, 4, 7, 8, 9, 13, 15, 18, 19, 22, 23,
+                   25, 28, 30, 31, 32, 35, 37, 38, 40)
+        kwargs['model_names'] = [model_type % c for c in dev_ids]
+        kwargs['probe_names'] = ["s%d/%d" %
+                                 (c, i) for c in dev_ids for i in (1, 3, 6, 8, 10)]
+
+  finally:
+    shutil.rmtree(temp_dir)
+
+
+def test_openbr_search():
+  # This function tests that the conversion to the OpenBR search file works
+  # as expected
+  temp_dir = tempfile.mkdtemp(prefix='bob_test')
+
+  # define output files
+  openbr_extensions = ('.mtx', '.mask')
+  matrix_file, mask_file = [os.path.join(
+      temp_dir, "search%s") % ext for ext in openbr_extensions]
+
+  try:
+    for variant in ('4col', '5col'):
+      # get score file
+      score_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/scores-cmc-%s.txt' % variant)
+
+      # first round, do not define keyword arguments -- let the file get the
+      # gallery and probe ids automatically
+      kwargs = {}
+      for i in range(2):
+        # get the files by automatically obtaining the identities
+        score.write_matrix(
+            score_file, matrix_file, mask_file, score_file_format="%sumn" % variant, search=50, **kwargs)
+
+        assert os.path.isfile(matrix_file) and os.path.isfile(mask_file)
+
+        # check that they are binary identical to the reference files (which
+        # are tested to work and give the same results with OpenBR)
+        matrix_ref, mask_ref = [pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/search%s' % ext) for ext in openbr_extensions]
+        _check_binary_identical(matrix_file, matrix_ref)
+        _check_binary_identical(mask_file, mask_ref)
+
+        # define new kwargs for second round, i.e., define model and probe names
+        # these names are identical to what is found in the score file, which
+        # in turn comes from the AT&T database
+        model_type = {"4col": "%d", "5col": "s%d"}[variant]
+        dev_ids = (3, 4, 7, 8, 9, 13, 15, 18, 19, 22, 23,
+                   25, 28, 30, 31, 32, 35, 37, 38, 40)
+        kwargs['model_names'] = [model_type % c for c in dev_ids]
+        kwargs['probe_names'] = ["s%d/%d" %
+                                 (c, i) for c in dev_ids for i in (1, 3, 6, 8, 10)]
+
+  finally:
+    shutil.rmtree(temp_dir)
+
+
+def test_from_openbr():
+  # This function tests that the conversion from the OpenBR matrices work as
+  # expected
+  temp_dir = tempfile.mkdtemp(prefix='bob_test')
+
+  # define input files
+  openbr_extensions = ('.mtx', '.mask')
+  matrix_file, mask_file = [pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/scores%s' % ext) for ext in openbr_extensions]
+
+  score_file = os.path.join(temp_dir, "scores")
+  load_functions = {'4col': score.four_column,
+                    '5col': score.five_column}
+
+  try:
+    for variant in load_functions:
+      # first, do not define keyword arguments -- let the file get the model
+      # and probe ids being created automatically
+      score.write_score_file(
+          matrix_file, mask_file, score_file, score_file_format="%sumn" % variant)
+      assert os.path.exists(score_file)
+      # read the score file with bobs functionality
+      columns = list(load_functions[variant](score_file))
+
+      # check the contents
+      assert len(columns) == 2000
+
+      # now, generate model and probe names and ids
+      model_type = {"4col": "%d", "5col": "s%d"}[variant]
+      dev_ids = (3, 4, 7, 8, 9, 13, 15, 18, 19, 22, 23,
+                 25, 28, 30, 31, 32, 35, 37, 38, 40)
+      model_names = ["s%d" % c for c in dev_ids]
+      probe_names = ["s%d/%d" % (c, i)
+                     for c in dev_ids for i in (1, 3, 6, 8, 10)]
+      models_ids = ["%d" % c for c in dev_ids]
+      probes_ids = ["%d" % c for c in dev_ids for i in (1, 3, 6, 8, 10)]
+
+      score.write_score_file(matrix_file, mask_file, score_file, models_ids=models_ids, probes_ids=probes_ids,
+                                          model_names=model_names, probe_names=probe_names, score_file_format="%sumn" % variant)
+
+      # check that we re-generated the bob score file
+      reference_file = pkg_resources.resource_filename(
+        'bob.bio.base.test', 'data/scores-cmc-%s.txt' % variant)
+
+      # assert that we can (almost) reproduce the score file
+      # ... read both files
+      columns = list(load_functions[variant](score_file))
+      reference = list(load_functions[variant](reference_file))
+      assert len(columns) == len(reference)
+      for i in range(len(columns)):
+        for j in range(len(columns[i]) - 1):
+          # check that the model and probe names are fine
+          assert columns[i][j] == reference[i][j], str(
+              columns[i]) + " != " + str(reference[i])
+        # check that the score is close (OpenBR write scores in float32
+        # precision only)
+        assert abs(columns[i][-1] - numpy.float32(reference[i][-1])
+                   ) <= 1e-8, str(columns[i][-1]) + " != " + str(reference[i][-1])
+
+        #assert numpy.isclose(columns[i][-1], reference[i][-1], atol = 1e-3, rtol=1e-8), str(columns[i][-1]) + " != " + str(reference[i][-1])
+        assert numpy.allclose(columns[i][-1], reference[i][-1], atol=1e-3,
+                              rtol=1e-8), str(columns[i][-1]) + " != " + str(reference[i][-1])
+
+  finally:
+    shutil.rmtree(temp_dir)
diff --git a/bob/bio/base/test/test_scripts.py b/bob/bio/base/test/test_scripts.py
index 072a431b03af1eea9afa23d96ddb211a1ec9e183..582739bff49af10c640b25bb69f3c0bc3c0a37f6 100644
--- a/bob/bio/base/test/test_scripts.py
+++ b/bob/bio/base/test/test_scripts.py
@@ -8,6 +8,7 @@ import nose
 import bob.io.image
 import bob.bio.base
 from . import utils
+from .. import score
 
 from nose.plugins.skip import SkipTest
 
@@ -20,7 +21,6 @@ data_dir = pkg_resources.resource_filename('bob.bio.base', 'test/data')
 
 def _verify(parameters, test_dir, sub_dir, ref_modifier="", score_modifier=('scores',''), counts=3, check_zt=True):
   from bob.bio.base.script.verify import main
-  import bob.measure
   try:
     main(parameters)
 
@@ -42,7 +42,7 @@ def _verify(parameters, test_dir, sub_dir, ref_modifier="", score_modifier=('sco
       d = []
       # read reference and new data
       for score_file in (score_files[i], reference_files[i]):
-        f = bob.measure.load.open_file(score_file)
+        f = score.open_file(score_file)
         d_ = []
         for line in f:
           if isinstance(line, bytes): line = line.decode('utf-8')
@@ -278,7 +278,6 @@ def test_verify_filelist():
   ]
 
   from bob.bio.base.script.verify import main
-  import bob.measure
   try:
     main(parameters)
 
@@ -292,8 +291,8 @@ def test_verify_filelist():
 
     for i in (0,1):
       # load scores
-      a1, b1 = bob.measure.load.split_four_column(score_files[i])
-      a2, b2 = bob.measure.load.split_four_column(reference_files[i])
+      a1, b1 = score.split_four_column(score_files[i])
+      a2, b2 = score.split_four_column(reference_files[i])
       # sort scores
       a1 = sorted(a1); a2 = sorted(a2); b1 = sorted(b1); b2 = sorted(b2)
 
@@ -323,7 +322,6 @@ def test_verify_missing():
   ]
 
   from bob.bio.base.script.verify import main
-  import bob.measure
   try:
     main(parameters)
 
@@ -336,7 +334,7 @@ def test_verify_missing():
 
     for i in (0,1):
       # load scores
-      a, b = bob.measure.load.split_four_column(score_files[i])
+      a, b = score.split_four_column(score_files[i])
 
       assert numpy.all(numpy.isnan(a))
       assert numpy.all(numpy.isnan(b))
@@ -479,82 +477,20 @@ def test_fusion():
 
   # execute the script
   from bob.bio.base.script.fuse_scores import main
-  import bob.measure
   try:
     main(parameters)
 
     # assert that we can read the two files, and that they contain the same number of lines as the original file
     for i in (0,1):
       assert os.path.exists(output_files[i])
-      r = bob.measure.load.four_column(reference_files[i])
-      o = bob.measure.load.four_column(output_files[i])
+      r = score.four_column(reference_files[i])
+      o = score.four_column(output_files[i])
       assert len(list(r)) == len(list(o))
   finally:
     shutil.rmtree(test_dir)
 
 
 
-def test_evaluate_closedset():
-  # tests our 'evaluate' script using the reference files
-  test_dir = tempfile.mkdtemp(prefix='bobtest_')
-  reference_files = ('scores-nonorm-dev', 'scores-ztnorm-dev')
-  plots = [os.path.join(test_dir, '%s.pdf')%f for f in ['roc', 'cmc', 'det', 'epc']]
-  parameters = [
-    '--dev-files', reference_files[0], reference_files[1],
-    '--eval-files', reference_files[0], reference_files[1],
-    '--directory', data_dir,  # will not be ignored since reference files are relative
-    '--legends', 'no norm', 'ZT norm',
-    '--criterion', 'HTER',
-    '--roc', plots[0],
-    '--cmc', plots[1],
-    '--det', plots[2],
-    '--epc', plots[3],
-    '--rr',
-    '--thresholds', '5000', '0',
-    '--min-far-value', '1e-6',
-    '--far-line-at', '1e-5',
-    '-v',
-  ]
-
-  # execute the script
-  from bob.bio.base.script.evaluate import main
-  try:
-    main(parameters)
-    for i in range(4):
-      assert os.path.exists(plots[i])
-      os.remove(plots[i])
-  finally:
-    if os.path.exists(test_dir):
-      shutil.rmtree(test_dir)
-
-def test_evaluate_openset():
-  # tests our 'evaluate' script using the reference files
-  test_dir = tempfile.mkdtemp(prefix='bobtest_')
-  reference_file = os.path.join(data_dir, 'scores-nonorm-openset-dev')
-  plot = os.path.join(test_dir, 'dir.pdf')
-  parameters = [
-    '--dev-files', reference_file,
-    '--eval-files', reference_file,
-    '--directory', "/non/existing/directory", # will be ignored since reference_file is absolute
-    '--legends', 'Test',
-    '--dir', plot,
-    '--min-far-value', '1e-6',
-    '-v',
-  ]
-
-  # execute the script
-  from bob.bio.base.script.evaluate import main
-  try:
-    main(parameters)
-    assert os.path.exists(plot)
-    os.remove(plot)
-  finally:
-    if os.path.exists(test_dir):
-      shutil.rmtree(test_dir)
-
-
-
-
 def test_resources():
   # simply test that the resorces script works
   from bob.bio.base.script.resources import resources, databases
diff --git a/bob/bio/base/tools/scoring.py b/bob/bio/base/tools/scoring.py
index 18aed256117d7c06dcb5dab84b50c25c5305ded0..eb634b96d9f286dffa9a588effa0cd2a204b4719 100644
--- a/bob/bio/base/tools/scoring.py
+++ b/bob/bio/base/tools/scoring.py
@@ -1,7 +1,6 @@
 import bob.io.base
 import bob.learn.em
 import bob.learn.linear
-import bob.measure
 import numpy
 import os, sys
 import tarfile
@@ -12,6 +11,7 @@ logger = logging.getLogger("bob.bio.base")
 
 from .FileSelector import FileSelector
 from .. import utils
+from .. import score
 
 def _scores(algorithm, reader, model, probe_objects, allow_missing_files):
   """Compute scores for the given model and a list of probes.
@@ -62,12 +62,12 @@ def _scores(algorithm, reader, model, probe_objects, allow_missing_files):
 
 
 def _open_to_read(score_file):
-  """Checks for the existence of the normal and the compressed version of the file, and calls :py:func:`bob.measure.load.open_file` for the existing one."""
+  """Checks for the existence of the normal and the compressed version of the file, and calls :py:func:`bob.bio.base.score.open_file` for the existing one."""
   if not os.path.exists(score_file):
     score_file += '.tar.bz2'
     if not os.path.exists(score_file):
       raise IOError("The score file '%s' cannot be found. Aborting!" % score_file)
-  return bob.measure.load.open_file(score_file)
+  return score.open_file(score_file)
 
 
 def _open_to_write(score_file, write_compressed):
@@ -115,7 +115,8 @@ def _delete(score_file, write_compressed):
 
 
 def _save_scores(score_file, scores, probe_objects, client_id, write_compressed):
-  """Saves the scores of one model into a text file that can be interpreted by :py:func:`bob.measure.load.split_four_column`."""
+  """Saves the scores of one model into a text file that can be interpreted by
+  :py:func:`bob.bio.base.score.split_four_column`."""
   assert len(probe_objects) == scores.shape[1]
 
   # open file for writing
@@ -493,7 +494,9 @@ def _concat(score_files, output, write_compressed, model_ids):
 def concatenate(compute_zt_norm, groups = ['dev', 'eval'], write_compressed = False, add_model_id = False):
   """Concatenates all results into one (or two) score files per group.
 
-  Score files, which were generated per model, are concatenated into a single score file, which can be interpreter by :py:func:`bob.measure.load.split_four_column`.
+  Score files, which were generated per model, are concatenated into a single
+  score file, which can be interpreter by
+  :py:func:`bob.bio.base.score.load.split_four_column`.
   The score files are always re-computed, regardless if they exist or not.
 
   **Parameters:**
@@ -563,7 +566,7 @@ def calibrate(compute_zt_norm, groups = ['dev', 'eval'], prior = 0.5, write_comp
     logger.info(" - Calibration: Training calibration for type %s from group %s", norm, groups[0])
     llr_trainer = bob.learn.linear.CGLogRegTrainer(prior, 1e-16, 100000)
 
-    training_scores = list(bob.measure.load.split_four_column(training_score_file))
+    training_scores = list(score.split_four_column(training_score_file))
     for i in (0,1):
       h = numpy.array(training_scores[i])
       # remove NaN's
@@ -582,7 +585,7 @@ def calibrate(compute_zt_norm, groups = ['dev', 'eval'], prior = 0.5, write_comp
       logger.info(" - Calibration: calibrating scores from '%s' to '%s'", score_file, calibrated_file)
 
       # iterate through the score file and calibrate scores
-      scores = bob.measure.load.four_column(_open_to_read(score_file))
+      scores = score.four_column(_open_to_read(score_file))
 
       f = _open_to_write(calibrated_file, write_compressed)
 
diff --git a/conda/meta.yaml b/conda/meta.yaml
index 70f1afd1c8c7a5aa8a0fada3805c6278e33ebb8c..1287a68b17c6488873393a99ec25da56476cc5d7 100644
--- a/conda/meta.yaml
+++ b/conda/meta.yaml
@@ -10,7 +10,6 @@ build:
     - verify.py         = bob.bio.base.script.verify:main
     - resources.py      = bob.bio.base.script.resources:resources
     - databases.py      = bob.bio.base.script.resources:databases
-    - evaluate.py       = bob.bio.base.script.evaluate:main
     - collect_results.py = bob.bio.base.script.collect_results:main
     - grid_search.py    = bob.bio.base.script.grid_search:main
     - preprocess.py     = bob.bio.base.script.preprocess:main
@@ -58,7 +57,6 @@ test:
     - verify.py --help
     - resources.py --help
     - databases.py --help
-    - evaluate.py --help
     - collect_results.py --help
     - grid_search.py --help
     - preprocess.py --help
@@ -66,6 +64,17 @@ test:
     - enroll.py --help
     - score.py --help
     - fuse_scores.py --help
+    - bob bio --help
+    - bob bio annotate --help
+    - bob bio metrics --help
+    - bob bio roc --help
+    - bob bio det --help
+    - bob bio epc --help
+    - bob bio hist --help
+    - bob bio cmc --help
+    - bob bio dir --help
+    - bob bio gen --help
+    - bob bio evaluate --help
     - nosetests --with-coverage --cover-package={{ name }} -sv {{ name }}
     - sphinx-build -aEW {{ project_dir }}/doc {{ project_dir }}/sphinx
     - sphinx-build -aEb doctest {{ project_dir }}/doc sphinx
diff --git a/doc/experiments.rst b/doc/experiments.rst
index b6dc2190c7aa0a102ec87c1154eead637fa390b8..21160bdcca5abe098e33f7ce030f04bae93c4121 100644
--- a/doc/experiments.rst
+++ b/doc/experiments.rst
@@ -98,11 +98,11 @@ Running the experiment is then as simple as:
 .. note::
    Chain loading is possible through configuration files, i.e., variables of each
    config is available during evaluation of the following config file.
-   
+
    This allows us to spread our experiment setup in several configuration files and have a call similar to this::
-   
+
    $ verify.py config_1.py config_2.py config_n.py
-  
+
    For more information see *Chain Loading* in :ref:`bob.extension.config`.
 
 
@@ -114,7 +114,7 @@ By default, you can find them in a sub-directory the ``result`` directory, but y
 
 .. note::
    At Idiap_, the default result directory differs, see ``verify.py --help`` for your directory.
-   
+
 
 .. _bob.bio.base.command_line:
 
@@ -154,26 +154,133 @@ However, to be consistent, throughout this documentation we document the options
 
 Evaluating Experiments
 ----------------------
-After the experiment has finished successfully, one or more text file containing all the scores are written.
 
-To evaluate the experiment, you can use the generic ``evaluate.py`` script, which has properties for all prevalent evaluation types, such as CMC, DIR, ROC and DET plots, as well as computing recognition rates, EER/HTER, Cllr and minDCF.
-Additionally, a combination of different algorithms can be plotted into the same files.
-Just specify all the score files that you want to evaluate using the ``--dev-files`` option, and possible legends for the plots (in the same order) using the ``--legends`` option, and the according plots will be generated.
-For example, to create a ROC curve for the experiment above, use:
+After the experiment has finished successfully, one or more text file
+containing all the scores are written. In this section, commands that helps to
+quickly evaluate a set of scores by generating metrics or plots are presented
+here. The scripts take as input either a 4-column or 5-column data format as
+specified in the documentation of
+:py:func:`bob.bio.base.score.load.four_column` or
+:py:func:`bob.bio.base.score.load.five_column`.
+
+Please note that there exists another file called ``Experiment.info`` inside
+the result directory. This file is a pure text file and contains the complete
+configuration of the experiment. With this configuration it is possible to
+inspect all default parameters of the algorithms, and even to re-run the exact
+same experiment.
+
+Metrics
+=======
+
+To calculate the threshold using a certain criterion (EER (default), FAR or
+min.HTER) on a development set and apply it on an evaluation set, just do:
+
+.. code-block:: sh
+
+    $ bob bio metrics {dev,test}-4col.txt --legends ExpA --criterion min-hter
+
+    [Min. criterion: MIN-HTER ] Threshold on Development set `ExpA`: -4.830500e-03
+    ======  ======================  =================
+    ExpA    Development dev-4col    Eval. test-4col
+    ======  ======================  =================
+    FtA     0.0%                    0.0%
+    FMR     6.7% (35/520)           2.5% (13/520)
+    FNMR    6.7% (26/390)           6.2% (24/390)
+    FAR     6.7%                    2.5%
+    FRR     6.7%                    6.2%
+    HTER    6.7%                    4.3%
+    ======  ======================  =================
+
+.. note::
+    You can compute analysis on development set(s) only by passing option
+    ``--no-evaluation``. See metrics --help for further options.
+
+You can also compute measure such as recognition rate (``rr``), Cllr and
+minCllr (``cllr``) and minDCF (``mindcf``) by passing the corresponding option.
+For example:
+
+.. code-block:: sh
+
+    bob bio metrics {dev,test}-4col.txt --legends ExpA --criterion cllr
+
+    ======  ======================  ================
+    Computing  Cllr and minCllr...
+    =======  ======================  ================
+    None     Development dev-4col    eval test-4col
+    =======  ======================  ================
+    Cllr     0.9%                    0.9%
+    minCllr  0.2%                    0.2%
+    =======  ======================  ================
+
+.. note::
+    You must provide files in the correct format depending on the measure you
+    want to compute. For example, recognition rate takes cmc type files. See
+    :py:func:`bob.bio.base.score.load.cmc`.
+
+Plots
+=====
+
+Customizable plotting commands are available in the :py:mod:`bob.bio.base`
+module. They take a list of development and/or evaluation files and generate a
+single PDF file containing the plots. Available plots are:
+
+*  ``roc`` (receiver operating characteristic)
+
+*  ``det`` (detection error trade-off)
+
+*  ``epc`` (expected performance curve)
+
+*  ``hist`` (histograms of scores with threshold line)
+
+*  ``cmc`` (cumulative match characteristic)
+
+*  ``dir`` (detection & identification rate)
+
+Use the ``--help`` option on the above-cited commands to find-out about more
+options.
+
+
+For example, to generate a CMC curve from development and evaluation datasets:
 
 .. code-block:: sh
 
-   $ evaluate.py --dev-files results/pca-experiment/male/nonorm/scores-dev --legend MOBIO --roc MOBIO_MALE_ROC.pdf -vv
+    $bob bio cmc -v --output 'my_cmc.pdf' dev-1.txt eval-1.txt
+    dev-2.txt eval-2.txt
 
-Please note that there exists another file called ``Experiment.info`` inside the result directory.
-This file is a pure text file and contains the complete configuration of the experiment.
-With this configuration it is possible to inspect all default parameters of the algorithms, and even to re-run the exact same experiment.
+where `my_cmc.pdf` will contain CMC curves for the two experiments.
+
+.. note::
+    By default, ``det``, ``roc``, ``cmc`` and ``dir`` plot development and
+    evaluation curves on
+    different plots. You can force gather everything in the same plot using
+    ``--no-split`` option.
+
+.. note::
+    The ``--figsize`` and ``--style`` options are two powerful options that can
+    dramatically change the appearance of your figures. Try them! (e.g.
+    ``--figsize 12,10 --style grayscale``)
+
+Evaluate
+========
+
+A convenient command `evaluate` is provided to generate multiple metrics and
+plots for a list of experiments. It generates two `metrics` outputs with EER,
+HTER, Cllr, minDCF criteria along with `roc`, `det`, `epc`, `hist` plots for
+each experiment. For example:
+
+.. code-block:: sh
+
+    $bob bio evaluate -v -l 'my_metrics.txt' -o 'my_plots.pdf' {sys1,sys2}/{dev,eval}
+
+will output metrics and plots for the two experiments (dev and eval pairs) in
+`my_metrics.txt` and `my_plots.pdf`, respectively.
 
 
 .. _running_in_parallel:
 
 Running in Parallel
 -------------------
+
 One important property of the ``verify.py`` script is that it can run in parallel, using either several processes on the local machine, or an SGE grid.
 To achieve that, ``bob.bio`` is well-integrated with our SGE grid toolkit GridTK_, which we have selected as a python package in the :ref:`Installation <bob.bio.base.installation>` section.
 The ``verify.py`` script can submit jobs either to the SGE grid, or to a local scheduler, keeping track of dependencies between the jobs.
@@ -210,7 +317,7 @@ One set of command line options change the directory structure of the output.
 By default, intermediate (temporary) files are by default written to the ``temp`` directory, which can be overridden by the ``temp_directory`` variable, which expects relative or absolute paths.
 
 Re-using Parts of Experiments
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+=============================
 If you want to re-use parts previous experiments, you can specify the directories (which are relative to the ``temp_directory``, but you can also specify absolute paths):
 
 * ``preprocessed_directory``
@@ -245,7 +352,7 @@ This option is particularly useful for debugging purposes.
 
 
 Database-dependent Variables
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+============================
 Many databases define several protocols that can be executed.
 To change the protocol, you can either modify the configuration file, or simply use the ``protocol`` variable.
 
@@ -264,13 +371,13 @@ Other Variables
 ---------------
 
 Calibration
-~~~~~~~~~~~
+===========
 For some applications it is interesting to get calibrated scores.
 Simply set the variable ``calibrate_scores = True`` and another set of score files will be created by training the score calibration on the scores of the ``'dev'`` group and execute it to all available groups.
 The scores will be located at the same directory as the **nonorm** and **ztnorm** scores, and the file names are **calibrated-dev** (and **calibrated-eval** if applicable).
 
 Unsuccessful Preprocessing
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+==========================
 In some cases, the preprocessor is not able to preprocess the data (e.g., for face image processing the face detector might not detect the face).
 If you expect such cases to happen, you might want to use the ``allow_missing_files`` variable.
 When this variable is set to ``True``, missing files will be handled correctly throughout the whole processing chain, i.e.:
diff --git a/doc/index.rst b/doc/index.rst
index 59c610e4569e3f3b516883877b853dbb27acaba6..2b966a5d00794c070ff4578ccbe667253e593a4f 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -78,6 +78,7 @@ Users Guide
    filelist-guide
    more
    annotations
+   openbr
 
 
 Reference Manual
diff --git a/doc/openbr.rst b/doc/openbr.rst
new file mode 100644
index 0000000000000000000000000000000000000000..348d3b77d861a7c0c29eb4aa65887d86a5b6e3c9
--- /dev/null
+++ b/doc/openbr.rst
@@ -0,0 +1,105 @@
+
+.. _bob.bio.base.openbr:
+
+=====================
+Score file conversion
+=====================
+Sometimes, it is required to export the score files generated by Bob to a
+different format, e.g., to be able to generate a plot comparing Bob's systems
+with other systems.  In this package, we provide source code to convert between
+different types of score files.
+
+Bob to OpenBR
+-------------
+One of the supported formats is the matrix format that the National Institute
+of Standards and Technology (NIST) uses, and which is supported by OpenBR_.
+The scores are stored in two binary matrices, where the first matrix (usually
+with a ``.mtx`` filename extension) contains the raw scores, while a second
+mask matrix (extension ``.mask``) contains information, which scores are
+positives, and which are negatives.
+To convert from Bob's four column or five column score file to a pair of these
+matrices, you can use the :py:func:`bob.bio.base.score.openbr.write_matrix` function.
+In the simplest way, this function takes a score file
+``'five-column-sore-file'`` and writes the pair ``'openbr.mtx', 'openbr.mask'``
+of OpenBR_ compatible files:
+
+.. code-block:: py
+
+    >>> bob.bio.base.score.openbr.write_matrix('five-column-sore-file', 'openbr.mtx', 'openbr.mask', score_file_format = '5column')
+
+In this way, the score file will be parsed and the matrices will be written in
+the same order that is obtained from the score file.
+For most of the applications, this should be sufficient, but as the identity
+information is lost in the matrix files, no deeper analysis is possible anymore
+when just using the matrices.  To enforce an order of the models and probes
+inside the matrices, you can use the ``model_names`` and ``probe_names``
+parameters of :py:func:`bob.bio.base.score.openbr.write_matrix`:
+
+* The ``probe_names`` parameter lists the ``path`` elements stored in the score
+  files, which are the fourth column in a ``5column`` file, and the third
+  column in a ``4column`` file, see :py:func:`bob.bio.base.score.load.five_column` and
+  :py:func:`bob.bio.base.score.load.four_column`.
+
+* The ``model_names`` parameter is a bit more complicated.  In a ``5column``
+  format score file, the model names are defined by the second column of that
+  file, see :py:func:`bob.bio.base.score.load.five_column`.  In a ``4column`` format
+  score file, the model information is not contained, but only the client
+  information of the model.  Hence, for the ``4column`` format, the
+  ``model_names`` actually lists the client ids found in the first column, see
+  :py:func:`bob.bio.base.score.load.four_column`.
+
+.. warning::
+
+  The model information is lost, but required to write the matrix files.  In
+  the ``4column`` format, we use client ids instead of the model
+  information.  Hence, when several models exist per client, this function
+  will not work as expected.
+
+Additionally, there are fields in the matrix files, which define the gallery
+and probe list files that were used to generate the matrix.  These file names
+can be selected with the ``gallery_file_name`` and ``probe_file_name`` keyword
+parameters of :py:func:`bob.bio.base.score.openbr.write_matrix`.
+Finally, OpenBR defines a specific ``'search'`` score file format, which is
+designed to be used to compute CMC curves.  The score matrix contains
+descendingly sorted and possibly truncated list of scores, i.e., for each
+probe, a sorted list of all scores for the models is generated.  To generate
+these special score file format, you can specify the ``search`` parameter.  It
+specifies the number of highest scores per probe that should be kept.  If the
+``search`` parameter is set to a negative value, all scores will be kept.  If
+the ``search`` parameter is higher as the actual number of models, ``NaN``
+scores will be appended, and the according mask values will be set to ``0``
+(i.e., to be ignored).
+OpenBR to Bob
+-------------
+On the other hand, you might also want to generate a Bob-compatible (four or
+five column) score file based on a pair of OpenBR matrix and mask files.  This
+is possible by using the :py:func:`bob.bio.base.score.openbr.write_score_file`
+function.  At the basic, it takes the given pair of matrix and mask files, as
+well as the desired output score file:
+
+.. code-block:: py
+
+    >>> bob.bio.base.score.openbr.write_score_file('openbr.mtx', 'openbr.mask', 'four-column-sore-file')
+
+This score file is sufficient to compute a CMC curve (see `bob.measure`), however it
+does not contain relevant client ids or paths for models and probes.
+Particularly, it assumes that each client has exactly one associated model.
+To add/correct these information, you can use additional parameters to
+:py:func:`bob.bio.base.score.openbr.write_score_file`.  Client ids of models and
+probes can be added using the ``models_ids`` and ``probes_ids`` keyword
+arguments.  The length of these lists must be identical to the number of models
+and probes as given in the matrix files, **and they must be in the same order
+as used to compute the OpenBR matrix**.  This includes that the same
+same-client and different-client pairs as indicated by the OpenBR mask will be
+generated, which will be checked inside the function.
+To add model and probe path information, the ``model_names`` and
+``probe_names`` parameters, which need to have the same size and order as the
+``models_ids`` and ``probes_ids``.  These information are simply stored in the
+score file, and no further check is applied.
+
+.. note:: The ``model_names`` parameter is used only when writing score files in ``score_file_format='5column'``, in the ``'4column'`` format, this parameter is ignored.
+
+
+.. Place youre references here:
+.. _openbr: http://openbiometrics.org
+
diff --git a/doc/py_api.rst b/doc/py_api.rst
index c9841b2bcc2bd386e1cdf21b04a4e7a30a1dd806..aa008ee90d1707ac667605085534cc71ade0f0e3 100644
--- a/doc/py_api.rst
+++ b/doc/py_api.rst
@@ -93,6 +93,34 @@ Scoring
    bob.bio.base.tools.compute_scores
    bob.bio.base.tools.concatenate
    bob.bio.base.tools.calibrate
+   bob.bio.base.script.figure.Metrics
+
+Loading data
+------------
+.. autosummary::
+   bob.bio.base.score.load.open_file
+   bob.bio.base.score.load.scores
+   bob.bio.base.score.load.split
+   bob.bio.base.score.load.cmc
+   bob.bio.base.score.load.four_column
+   bob.bio.base.score.load.split_four_column
+   bob.bio.base.score.load.cmc_four_column
+   bob.bio.base.score.load.five_column
+   bob.bio.base.score.load.split_five_column
+   bob.bio.base.score.load.cmc_five_column
+
+Plotting
+--------
+.. autosummary::
+   bob.bio.base.script.figure.Cmc
+   bob.bio.base.script.figure.Dir
+   bob.bio.base.script.figure.Hist
+
+OpenBR conversions
+------------------
+.. autosummary::
+   bob.bio.base.score.openbr.write_matrix
+   bob.bio.base.score.openbr.write_score_file
 
 Details
 -------
@@ -108,5 +136,10 @@ Details
 
    .. autoclass:: FileSelector
 
+.. automodule:: bob.bio.base.score.load
+.. automodule:: bob.bio.base.score.openbr
+.. automodule:: bob.bio.base.script.figure
+.. automodule:: bob.bio.base.script.commands
+.. automodule:: bob.bio.base.script.gen
 
 .. include:: links.rst
diff --git a/setup.py b/setup.py
index d33d06d3c71f8cf11d37a92bb4181b464c3adf73..58dbbfcf7880f7182c00812da011b0704b980d21 100644
--- a/setup.py
+++ b/setup.py
@@ -73,7 +73,6 @@ setup(
         'verify.py         = bob.bio.base.script.verify:main',
         'resources.py      = bob.bio.base.script.resources:resources',
         'databases.py      = bob.bio.base.script.resources:databases',
-        'evaluate.py       = bob.bio.base.script.evaluate:main',
         'collect_results.py = bob.bio.base.script.collect_results:main',
         'grid_search.py    = bob.bio.base.script.grid_search:main',
         'preprocess.py     = bob.bio.base.script.preprocess:main',
@@ -139,6 +138,15 @@ setup(
       # bob bio scripts
       'bob.bio.cli': [
         'annotate          = bob.bio.base.script.annotate:annotate',
+        'metrics           = bob.bio.base.script.commands:metrics',
+        'roc               = bob.bio.base.script.commands:roc',
+        'det               = bob.bio.base.script.commands:det',
+        'epc               = bob.bio.base.script.commands:epc',
+        'hist              = bob.bio.base.script.commands:hist',
+        'cmc               = bob.bio.base.script.commands:cmc',
+        'dir               = bob.bio.base.script.commands:dir',
+        'gen               = bob.bio.base.script.gen:gen',
+        'evaluate          = bob.bio.base.script.commands:evaluate',
       ],
 
       # annotators