From f7dd156b45c178b9fbf0f12930a63314ddf10fe1 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Thu, 23 May 2019 13:02:40 +0200
Subject: [PATCH 1/9] =?UTF-8?q?M=C3=A0J=20jalhyd=5Fbranch?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 jalhyd_branch | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/jalhyd_branch b/jalhyd_branch
index 507bddeeb..94f89b3b0 100644
--- a/jalhyd_branch
+++ b/jalhyd_branch
@@ -1,2 +1 @@
-33-ajout-du-calcul-d-une-passe-a-bassin
-
+62-fonctionnalite-plusieurs-parametres-qui-varient-nghyd-126
\ No newline at end of file
-- 
GitLab


From da21bbcd5dfcaa7342b3109298e67e061d088923 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Fri, 24 May 2019 10:01:24 +0200
Subject: [PATCH 2/9] updated package-lock

---
 package-lock.json | 2180 +--------------------------------------------
 1 file changed, 6 insertions(+), 2174 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 21d7266f4..f828b90e1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7220,2180 +7220,7 @@
       }
     },
     "jalhyd": {
-      "version": "file:../jalhyd",
-      "dependencies": {
-        "@types/jasmine": {
-          "version": "2.8.8",
-          "bundled": true
-        },
-        "@types/node": {
-          "version": "10.5.2",
-          "bundled": true
-        },
-        "accepts": {
-          "version": "1.3.5",
-          "bundled": true,
-          "requires": {
-            "mime-types": "~2.1.18",
-            "negotiator": "0.6.1"
-          }
-        },
-        "after": {
-          "version": "0.8.2",
-          "bundled": true
-        },
-        "ansi-regex": {
-          "version": "2.1.1",
-          "bundled": true
-        },
-        "ansi-styles": {
-          "version": "2.2.1",
-          "bundled": true
-        },
-        "anymatch": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "micromatch": "^3.1.4",
-            "normalize-path": "^2.1.1"
-          },
-          "dependencies": {
-            "normalize-path": {
-              "version": "2.1.1",
-              "bundled": true,
-              "requires": {
-                "remove-trailing-separator": "^1.0.1"
-              }
-            }
-          }
-        },
-        "argparse": {
-          "version": "1.0.10",
-          "bundled": true,
-          "requires": {
-            "sprintf-js": "~1.0.2"
-          }
-        },
-        "arr-diff": {
-          "version": "4.0.0",
-          "bundled": true
-        },
-        "arr-flatten": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "arr-union": {
-          "version": "3.1.0",
-          "bundled": true
-        },
-        "array-unique": {
-          "version": "0.3.2",
-          "bundled": true
-        },
-        "arraybuffer.slice": {
-          "version": "0.0.7",
-          "bundled": true
-        },
-        "assign-symbols": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "async": {
-          "version": "2.6.2",
-          "bundled": true,
-          "requires": {
-            "lodash": "^4.17.11"
-          },
-          "dependencies": {
-            "lodash": {
-              "version": "4.17.11",
-              "bundled": true
-            }
-          }
-        },
-        "async-each": {
-          "version": "1.0.3",
-          "bundled": true
-        },
-        "async-limiter": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "atob": {
-          "version": "2.1.2",
-          "bundled": true
-        },
-        "babel-code-frame": {
-          "version": "6.26.0",
-          "bundled": true,
-          "requires": {
-            "chalk": "^1.1.3",
-            "esutils": "^2.0.2",
-            "js-tokens": "^3.0.2"
-          },
-          "dependencies": {
-            "chalk": {
-              "version": "1.1.3",
-              "bundled": true,
-              "requires": {
-                "ansi-styles": "^2.2.1",
-                "escape-string-regexp": "^1.0.2",
-                "has-ansi": "^2.0.0",
-                "strip-ansi": "^3.0.0",
-                "supports-color": "^2.0.0"
-              }
-            }
-          }
-        },
-        "backo2": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "balanced-match": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "base": {
-          "version": "0.11.2",
-          "bundled": true,
-          "requires": {
-            "cache-base": "^1.0.1",
-            "class-utils": "^0.3.5",
-            "component-emitter": "^1.2.1",
-            "define-property": "^1.0.0",
-            "isobject": "^3.0.1",
-            "mixin-deep": "^1.2.0",
-            "pascalcase": "^0.1.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "is-descriptor": "^1.0.0"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-data-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-descriptor": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "is-accessor-descriptor": "^1.0.0",
-                "is-data-descriptor": "^1.0.0",
-                "kind-of": "^6.0.2"
-              }
-            },
-            "kind-of": {
-              "version": "6.0.2",
-              "bundled": true
-            }
-          }
-        },
-        "base64-arraybuffer": {
-          "version": "0.1.5",
-          "bundled": true
-        },
-        "base64-js": {
-          "version": "1.3.0",
-          "bundled": true
-        },
-        "base64id": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "better-assert": {
-          "version": "1.0.2",
-          "bundled": true,
-          "requires": {
-            "callsite": "1.0.0"
-          }
-        },
-        "binary-extensions": {
-          "version": "1.13.1",
-          "bundled": true
-        },
-        "blob": {
-          "version": "0.0.5",
-          "bundled": true
-        },
-        "bluebird": {
-          "version": "3.5.4",
-          "bundled": true
-        },
-        "body-parser": {
-          "version": "1.18.3",
-          "bundled": true,
-          "requires": {
-            "bytes": "3.0.0",
-            "content-type": "~1.0.4",
-            "debug": "2.6.9",
-            "depd": "~1.1.2",
-            "http-errors": "~1.6.3",
-            "iconv-lite": "0.4.23",
-            "on-finished": "~2.3.0",
-            "qs": "6.5.2",
-            "raw-body": "2.3.3",
-            "type-is": "~1.6.16"
-          }
-        },
-        "brace-expansion": {
-          "version": "1.1.8",
-          "bundled": true,
-          "requires": {
-            "balanced-match": "^1.0.0",
-            "concat-map": "0.0.1"
-          }
-        },
-        "braces": {
-          "version": "2.3.2",
-          "bundled": true,
-          "requires": {
-            "arr-flatten": "^1.1.0",
-            "array-unique": "^0.3.2",
-            "extend-shallow": "^2.0.1",
-            "fill-range": "^4.0.0",
-            "isobject": "^3.0.1",
-            "repeat-element": "^1.1.2",
-            "snapdragon": "^0.8.1",
-            "snapdragon-node": "^2.0.1",
-            "split-string": "^3.0.2",
-            "to-regex": "^3.0.1"
-          }
-        },
-        "buffer": {
-          "version": "5.2.1",
-          "bundled": true,
-          "requires": {
-            "base64-js": "^1.0.2",
-            "ieee754": "^1.1.4"
-          }
-        },
-        "buffer-alloc": {
-          "version": "1.2.0",
-          "bundled": true,
-          "requires": {
-            "buffer-alloc-unsafe": "^1.1.0",
-            "buffer-fill": "^1.0.0"
-          }
-        },
-        "buffer-alloc-unsafe": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "buffer-fill": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "builtin-modules": {
-          "version": "1.1.1",
-          "bundled": true
-        },
-        "bytes": {
-          "version": "3.0.0",
-          "bundled": true
-        },
-        "cache-base": {
-          "version": "1.0.1",
-          "bundled": true,
-          "requires": {
-            "collection-visit": "^1.0.0",
-            "component-emitter": "^1.2.1",
-            "get-value": "^2.0.6",
-            "has-value": "^1.0.0",
-            "isobject": "^3.0.1",
-            "set-value": "^2.0.0",
-            "to-object-path": "^0.3.0",
-            "union-value": "^1.0.0",
-            "unset-value": "^1.0.0"
-          }
-        },
-        "callsite": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "chalk": {
-          "version": "2.3.0",
-          "bundled": true,
-          "requires": {
-            "ansi-styles": "^3.1.0",
-            "escape-string-regexp": "^1.0.5",
-            "supports-color": "^4.0.0"
-          },
-          "dependencies": {
-            "ansi-styles": {
-              "version": "3.2.0",
-              "bundled": true,
-              "requires": {
-                "color-convert": "^1.9.0"
-              }
-            },
-            "supports-color": {
-              "version": "4.5.0",
-              "bundled": true,
-              "requires": {
-                "has-flag": "^2.0.0"
-              }
-            }
-          }
-        },
-        "chokidar": {
-          "version": "2.1.5",
-          "bundled": true,
-          "requires": {
-            "anymatch": "^2.0.0",
-            "async-each": "^1.0.1",
-            "braces": "^2.3.2",
-            "glob-parent": "^3.1.0",
-            "inherits": "^2.0.3",
-            "is-binary-path": "^1.0.0",
-            "is-glob": "^4.0.0",
-            "normalize-path": "^3.0.0",
-            "path-is-absolute": "^1.0.0",
-            "readdirp": "^2.2.1",
-            "upath": "^1.1.1"
-          }
-        },
-        "class-utils": {
-          "version": "0.3.6",
-          "bundled": true,
-          "requires": {
-            "arr-union": "^3.1.0",
-            "define-property": "^0.2.5",
-            "isobject": "^3.0.0",
-            "static-extend": "^0.1.1"
-          }
-        },
-        "coffeescript": {
-          "version": "2.3.1",
-          "bundled": true
-        },
-        "collection-visit": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "map-visit": "^1.0.0",
-            "object-visit": "^1.0.0"
-          }
-        },
-        "color-convert": {
-          "version": "1.9.1",
-          "bundled": true,
-          "requires": {
-            "color-name": "^1.1.1"
-          }
-        },
-        "color-name": {
-          "version": "1.1.3",
-          "bundled": true
-        },
-        "colors": {
-          "version": "1.3.3",
-          "bundled": true
-        },
-        "commander": {
-          "version": "2.12.2",
-          "bundled": true
-        },
-        "component-bind": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "component-emitter": {
-          "version": "1.3.0",
-          "bundled": true
-        },
-        "component-inherit": {
-          "version": "0.0.3",
-          "bundled": true
-        },
-        "concat-map": {
-          "version": "0.0.1",
-          "bundled": true
-        },
-        "connect": {
-          "version": "3.6.6",
-          "bundled": true,
-          "requires": {
-            "debug": "2.6.9",
-            "finalhandler": "1.1.0",
-            "parseurl": "~1.3.2",
-            "utils-merge": "1.0.1"
-          }
-        },
-        "content-type": {
-          "version": "1.0.4",
-          "bundled": true
-        },
-        "cookie": {
-          "version": "0.3.1",
-          "bundled": true
-        },
-        "copy-descriptor": {
-          "version": "0.1.1",
-          "bundled": true
-        },
-        "core-js": {
-          "version": "2.6.5",
-          "bundled": true
-        },
-        "core-util-is": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "custom-event": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "date-format": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "debug": {
-          "version": "2.6.9",
-          "bundled": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "decode-uri-component": {
-          "version": "0.2.0",
-          "bundled": true
-        },
-        "define-property": {
-          "version": "0.2.5",
-          "bundled": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "depd": {
-          "version": "1.1.2",
-          "bundled": true
-        },
-        "di": {
-          "version": "0.0.1",
-          "bundled": true
-        },
-        "diff": {
-          "version": "3.4.0",
-          "bundled": true
-        },
-        "dom-serialize": {
-          "version": "2.2.1",
-          "bundled": true,
-          "requires": {
-            "custom-event": "~1.0.0",
-            "ent": "~2.2.0",
-            "extend": "^3.0.0",
-            "void-elements": "^2.0.0"
-          }
-        },
-        "ee-first": {
-          "version": "1.1.1",
-          "bundled": true
-        },
-        "encodeurl": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "engine.io": {
-          "version": "3.2.1",
-          "bundled": true,
-          "requires": {
-            "accepts": "~1.3.4",
-            "base64id": "1.0.0",
-            "cookie": "0.3.1",
-            "debug": "~3.1.0",
-            "engine.io-parser": "~2.1.0",
-            "ws": "~3.3.1"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "3.1.0",
-              "bundled": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
-          }
-        },
-        "engine.io-client": {
-          "version": "3.2.1",
-          "bundled": true,
-          "requires": {
-            "component-emitter": "1.2.1",
-            "component-inherit": "0.0.3",
-            "debug": "~3.1.0",
-            "engine.io-parser": "~2.1.1",
-            "has-cors": "1.1.0",
-            "indexof": "0.0.1",
-            "parseqs": "0.0.5",
-            "parseuri": "0.0.5",
-            "ws": "~3.3.1",
-            "xmlhttprequest-ssl": "~1.5.4",
-            "yeast": "0.1.2"
-          },
-          "dependencies": {
-            "component-emitter": {
-              "version": "1.2.1",
-              "bundled": true
-            },
-            "debug": {
-              "version": "3.1.0",
-              "bundled": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
-          }
-        },
-        "engine.io-parser": {
-          "version": "2.1.3",
-          "bundled": true,
-          "requires": {
-            "after": "0.8.2",
-            "arraybuffer.slice": "~0.0.7",
-            "base64-arraybuffer": "0.1.5",
-            "blob": "0.0.5",
-            "has-binary2": "~1.0.2"
-          }
-        },
-        "ent": {
-          "version": "2.2.0",
-          "bundled": true
-        },
-        "escape-html": {
-          "version": "1.0.3",
-          "bundled": true
-        },
-        "escape-string-regexp": {
-          "version": "1.0.5",
-          "bundled": true
-        },
-        "esprima": {
-          "version": "4.0.1",
-          "bundled": true
-        },
-        "esutils": {
-          "version": "2.0.2",
-          "bundled": true
-        },
-        "eventemitter3": {
-          "version": "3.1.0",
-          "bundled": true
-        },
-        "expand-brackets": {
-          "version": "2.1.4",
-          "bundled": true,
-          "requires": {
-            "debug": "^2.3.3",
-            "define-property": "^0.2.5",
-            "extend-shallow": "^2.0.1",
-            "posix-character-classes": "^0.1.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          }
-        },
-        "extend": {
-          "version": "3.0.2",
-          "bundled": true
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "bundled": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "extglob": {
-          "version": "2.0.4",
-          "bundled": true,
-          "requires": {
-            "array-unique": "^0.3.2",
-            "define-property": "^1.0.0",
-            "expand-brackets": "^2.1.4",
-            "extend-shallow": "^2.0.1",
-            "fragment-cache": "^0.2.1",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "is-descriptor": "^1.0.0"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-data-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-descriptor": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "is-accessor-descriptor": "^1.0.0",
-                "is-data-descriptor": "^1.0.0",
-                "kind-of": "^6.0.2"
-              }
-            },
-            "kind-of": {
-              "version": "6.0.2",
-              "bundled": true
-            }
-          }
-        },
-        "fill-range": {
-          "version": "4.0.0",
-          "bundled": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1",
-            "to-regex-range": "^2.1.0"
-          }
-        },
-        "finalhandler": {
-          "version": "1.1.0",
-          "bundled": true,
-          "requires": {
-            "debug": "2.6.9",
-            "encodeurl": "~1.0.1",
-            "escape-html": "~1.0.3",
-            "on-finished": "~2.3.0",
-            "parseurl": "~1.3.2",
-            "statuses": "~1.3.1",
-            "unpipe": "~1.0.0"
-          },
-          "dependencies": {
-            "statuses": {
-              "version": "1.3.1",
-              "bundled": true
-            }
-          }
-        },
-        "flatted": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "follow-redirects": {
-          "version": "1.7.0",
-          "bundled": true,
-          "requires": {
-            "debug": "^3.2.6"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "3.2.6",
-              "bundled": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            },
-            "ms": {
-              "version": "2.1.1",
-              "bundled": true
-            }
-          }
-        },
-        "for-in": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "fragment-cache": {
-          "version": "0.2.1",
-          "bundled": true,
-          "requires": {
-            "map-cache": "^0.2.2"
-          }
-        },
-        "fs-access": {
-          "version": "1.0.1",
-          "bundled": true,
-          "requires": {
-            "null-check": "^1.0.0"
-          }
-        },
-        "fs-extra": {
-          "version": "7.0.1",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "^4.1.2",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
-          }
-        },
-        "fs.realpath": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "get-value": {
-          "version": "2.0.6",
-          "bundled": true
-        },
-        "glob": {
-          "version": "7.1.2",
-          "bundled": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "glob-parent": {
-          "version": "3.1.0",
-          "bundled": true,
-          "requires": {
-            "is-glob": "^3.1.0",
-            "path-dirname": "^1.0.0"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "3.1.0",
-              "bundled": true,
-              "requires": {
-                "is-extglob": "^2.1.0"
-              }
-            }
-          }
-        },
-        "globule": {
-          "version": "1.2.1",
-          "bundled": true,
-          "requires": {
-            "glob": "~7.1.1",
-            "lodash": "~4.17.10",
-            "minimatch": "~3.0.2"
-          }
-        },
-        "graceful-fs": {
-          "version": "4.1.15",
-          "bundled": true
-        },
-        "has-ansi": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "has-binary2": {
-          "version": "1.0.3",
-          "bundled": true,
-          "requires": {
-            "isarray": "2.0.1"
-          },
-          "dependencies": {
-            "isarray": {
-              "version": "2.0.1",
-              "bundled": true
-            }
-          }
-        },
-        "has-cors": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "has-flag": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "has-value": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "get-value": "^2.0.6",
-            "has-values": "^1.0.0",
-            "isobject": "^3.0.0"
-          }
-        },
-        "has-values": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "kind-of": "^4.0.0"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "4.0.0",
-              "bundled": true,
-              "requires": {
-                "is-buffer": "^1.1.5"
-              }
-            }
-          }
-        },
-        "http-errors": {
-          "version": "1.6.3",
-          "bundled": true,
-          "requires": {
-            "depd": "~1.1.2",
-            "inherits": "2.0.3",
-            "setprototypeof": "1.1.0",
-            "statuses": ">= 1.4.0 < 2"
-          }
-        },
-        "http-proxy": {
-          "version": "1.17.0",
-          "bundled": true,
-          "requires": {
-            "eventemitter3": "^3.0.0",
-            "follow-redirects": "^1.0.0",
-            "requires-port": "^1.0.0"
-          }
-        },
-        "iconv-lite": {
-          "version": "0.4.23",
-          "bundled": true,
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        },
-        "ieee754": {
-          "version": "1.1.13",
-          "bundled": true
-        },
-        "indexof": {
-          "version": "0.0.1",
-          "bundled": true
-        },
-        "inflight": {
-          "version": "1.0.6",
-          "bundled": true,
-          "requires": {
-            "once": "^1.3.0",
-            "wrappy": "1"
-          }
-        },
-        "inherits": {
-          "version": "2.0.3",
-          "bundled": true
-        },
-        "is-accessor-descriptor": {
-          "version": "0.1.6",
-          "bundled": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          }
-        },
-        "is-binary-path": {
-          "version": "1.0.1",
-          "bundled": true,
-          "requires": {
-            "binary-extensions": "^1.0.0"
-          }
-        },
-        "is-buffer": {
-          "version": "1.1.6",
-          "bundled": true
-        },
-        "is-data-descriptor": {
-          "version": "0.1.4",
-          "bundled": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          }
-        },
-        "is-descriptor": {
-          "version": "0.1.6",
-          "bundled": true,
-          "requires": {
-            "is-accessor-descriptor": "^0.1.6",
-            "is-data-descriptor": "^0.1.4",
-            "kind-of": "^5.0.0"
-          },
-          "dependencies": {
-            "kind-of": {
-              "version": "5.1.0",
-              "bundled": true
-            }
-          }
-        },
-        "is-extendable": {
-          "version": "0.1.1",
-          "bundled": true
-        },
-        "is-extglob": {
-          "version": "2.1.1",
-          "bundled": true
-        },
-        "is-glob": {
-          "version": "4.0.1",
-          "bundled": true,
-          "requires": {
-            "is-extglob": "^2.1.1"
-          }
-        },
-        "is-number": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          }
-        },
-        "is-plain-object": {
-          "version": "2.0.4",
-          "bundled": true,
-          "requires": {
-            "isobject": "^3.0.1"
-          }
-        },
-        "is-windows": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "isbinaryfile": {
-          "version": "3.0.3",
-          "bundled": true,
-          "requires": {
-            "buffer-alloc": "^1.2.0"
-          }
-        },
-        "isexe": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "isobject": {
-          "version": "3.0.1",
-          "bundled": true
-        },
-        "jasmine": {
-          "version": "3.4.0",
-          "bundled": true,
-          "requires": {
-            "glob": "^7.1.3",
-            "jasmine-core": "~3.4.0"
-          },
-          "dependencies": {
-            "glob": {
-              "version": "7.1.3",
-              "bundled": true,
-              "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-              }
-            }
-          }
-        },
-        "jasmine-core": {
-          "version": "3.4.0",
-          "bundled": true
-        },
-        "jasmine-node": {
-          "version": "1.15.0",
-          "bundled": true,
-          "requires": {
-            "coffeescript": ">=1.0.1",
-            "gaze": "~1.1.2",
-            "jasmine-growl-reporter": "~1.0.1",
-            "jasmine-reporters": "~1.0.0",
-            "mkdirp": "~0.3.5",
-            "requirejs": ">=0.27.1",
-            "underscore": ">= 1.3.1",
-            "walkdir": ">= 0.0.1"
-          },
-          "dependencies": {
-            "gaze": {
-              "version": "1.1.3",
-              "bundled": true,
-              "requires": {
-                "globule": "^1.0.0"
-              }
-            },
-            "growl": {
-              "version": "1.10.5",
-              "bundled": true
-            },
-            "jasmine-growl-reporter": {
-              "version": "1.0.1",
-              "bundled": true,
-              "requires": {
-                "growl": "^1.10.2"
-              }
-            }
-          }
-        },
-        "jasmine-reporters": {
-          "version": "1.0.2",
-          "bundled": true,
-          "requires": {
-            "mkdirp": "~0.3.5"
-          }
-        },
-        "js-tokens": {
-          "version": "3.0.2",
-          "bundled": true
-        },
-        "js-yaml": {
-          "version": "3.13.1",
-          "bundled": true,
-          "requires": {
-            "argparse": "^1.0.7",
-            "esprima": "^4.0.0"
-          }
-        },
-        "jsonfile": {
-          "version": "4.0.0",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "^4.1.6"
-          }
-        },
-        "karma": {
-          "version": "4.1.0",
-          "bundled": true,
-          "requires": {
-            "bluebird": "^3.3.0",
-            "body-parser": "^1.16.1",
-            "braces": "^2.3.2",
-            "chokidar": "^2.0.3",
-            "colors": "^1.1.0",
-            "connect": "^3.6.0",
-            "core-js": "^2.2.0",
-            "di": "^0.0.1",
-            "dom-serialize": "^2.2.0",
-            "flatted": "^2.0.0",
-            "glob": "^7.1.1",
-            "graceful-fs": "^4.1.2",
-            "http-proxy": "^1.13.0",
-            "isbinaryfile": "^3.0.0",
-            "lodash": "^4.17.11",
-            "log4js": "^4.0.0",
-            "mime": "^2.3.1",
-            "minimatch": "^3.0.2",
-            "optimist": "^0.6.1",
-            "qjobs": "^1.1.4",
-            "range-parser": "^1.2.0",
-            "rimraf": "^2.6.0",
-            "safe-buffer": "^5.0.1",
-            "socket.io": "2.1.1",
-            "source-map": "^0.6.1",
-            "tmp": "0.0.33",
-            "useragent": "2.3.0"
-          },
-          "dependencies": {
-            "lodash": {
-              "version": "4.17.11",
-              "bundled": true
-            }
-          }
-        },
-        "karma-chrome-launcher": {
-          "version": "2.2.0",
-          "bundled": true,
-          "requires": {
-            "fs-access": "^1.0.0",
-            "which": "^1.2.1"
-          }
-        },
-        "karma-jasmine": {
-          "version": "2.0.1",
-          "bundled": true,
-          "requires": {
-            "jasmine-core": "^3.3"
-          },
-          "dependencies": {
-            "jasmine-core": {
-              "version": "3.4.0",
-              "bundled": true
-            }
-          }
-        },
-        "karma-jasmine-html-reporter": {
-          "version": "1.4.0",
-          "bundled": true
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "bundled": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        },
-        "lodash": {
-          "version": "4.17.11",
-          "bundled": true
-        },
-        "log4js": {
-          "version": "4.1.0",
-          "bundled": true,
-          "requires": {
-            "date-format": "^2.0.0",
-            "debug": "^4.1.1",
-            "flatted": "^2.0.0",
-            "rfdc": "^1.1.2",
-            "streamroller": "^1.0.4"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "4.1.1",
-              "bundled": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            },
-            "ms": {
-              "version": "2.1.1",
-              "bundled": true
-            }
-          }
-        },
-        "lru-cache": {
-          "version": "4.1.5",
-          "bundled": true,
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "map-cache": {
-          "version": "0.2.2",
-          "bundled": true
-        },
-        "map-visit": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "object-visit": "^1.0.0"
-          }
-        },
-        "media-typer": {
-          "version": "0.3.0",
-          "bundled": true
-        },
-        "micromatch": {
-          "version": "3.1.10",
-          "bundled": true,
-          "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "braces": "^2.3.1",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "extglob": "^2.0.4",
-            "fragment-cache": "^0.2.1",
-            "kind-of": "^6.0.2",
-            "nanomatch": "^1.2.9",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.2"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "2.0.2",
-              "bundled": true,
-              "requires": {
-                "is-descriptor": "^1.0.2",
-                "isobject": "^3.0.1"
-              }
-            },
-            "extend-shallow": {
-              "version": "3.0.2",
-              "bundled": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-data-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-descriptor": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "is-accessor-descriptor": "^1.0.0",
-                "is-data-descriptor": "^1.0.0",
-                "kind-of": "^6.0.2"
-              }
-            },
-            "is-extendable": {
-              "version": "1.0.1",
-              "bundled": true,
-              "requires": {
-                "is-plain-object": "^2.0.4"
-              }
-            },
-            "kind-of": {
-              "version": "6.0.2",
-              "bundled": true
-            }
-          }
-        },
-        "mime": {
-          "version": "2.4.2",
-          "bundled": true
-        },
-        "mime-db": {
-          "version": "1.39.0",
-          "bundled": true
-        },
-        "mime-types": {
-          "version": "2.1.23",
-          "bundled": true,
-          "requires": {
-            "mime-db": "~1.39.0"
-          }
-        },
-        "minimatch": {
-          "version": "3.0.4",
-          "bundled": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        },
-        "minimist": {
-          "version": "0.0.10",
-          "bundled": true
-        },
-        "mixin-deep": {
-          "version": "1.3.1",
-          "bundled": true,
-          "requires": {
-            "for-in": "^1.0.2",
-            "is-extendable": "^1.0.1"
-          },
-          "dependencies": {
-            "is-extendable": {
-              "version": "1.0.1",
-              "bundled": true,
-              "requires": {
-                "is-plain-object": "^2.0.4"
-              }
-            }
-          }
-        },
-        "mkdirp": {
-          "version": "0.3.5",
-          "bundled": true
-        },
-        "ms": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "nanomatch": {
-          "version": "1.2.13",
-          "bundled": true,
-          "requires": {
-            "arr-diff": "^4.0.0",
-            "array-unique": "^0.3.2",
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "fragment-cache": "^0.2.1",
-            "is-windows": "^1.0.2",
-            "kind-of": "^6.0.2",
-            "object.pick": "^1.3.0",
-            "regex-not": "^1.0.0",
-            "snapdragon": "^0.8.1",
-            "to-regex": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "2.0.2",
-              "bundled": true,
-              "requires": {
-                "is-descriptor": "^1.0.2",
-                "isobject": "^3.0.1"
-              }
-            },
-            "extend-shallow": {
-              "version": "3.0.2",
-              "bundled": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-data-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-descriptor": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "is-accessor-descriptor": "^1.0.0",
-                "is-data-descriptor": "^1.0.0",
-                "kind-of": "^6.0.2"
-              }
-            },
-            "is-extendable": {
-              "version": "1.0.1",
-              "bundled": true,
-              "requires": {
-                "is-plain-object": "^2.0.4"
-              }
-            },
-            "kind-of": {
-              "version": "6.0.2",
-              "bundled": true
-            }
-          }
-        },
-        "negotiator": {
-          "version": "0.6.1",
-          "bundled": true
-        },
-        "normalize-path": {
-          "version": "3.0.0",
-          "bundled": true
-        },
-        "null-check": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "object-component": {
-          "version": "0.0.3",
-          "bundled": true
-        },
-        "object-copy": {
-          "version": "0.1.0",
-          "bundled": true,
-          "requires": {
-            "copy-descriptor": "^0.1.0",
-            "define-property": "^0.2.5",
-            "kind-of": "^3.0.3"
-          }
-        },
-        "object-visit": {
-          "version": "1.0.1",
-          "bundled": true,
-          "requires": {
-            "isobject": "^3.0.0"
-          }
-        },
-        "object.pick": {
-          "version": "1.3.0",
-          "bundled": true,
-          "requires": {
-            "isobject": "^3.0.1"
-          }
-        },
-        "on-finished": {
-          "version": "2.3.0",
-          "bundled": true,
-          "requires": {
-            "ee-first": "1.1.1"
-          }
-        },
-        "once": {
-          "version": "1.4.0",
-          "bundled": true,
-          "requires": {
-            "wrappy": "1"
-          }
-        },
-        "optimist": {
-          "version": "0.6.1",
-          "bundled": true,
-          "requires": {
-            "minimist": "~0.0.1",
-            "wordwrap": "~0.0.2"
-          }
-        },
-        "os-tmpdir": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "parseqs": {
-          "version": "0.0.5",
-          "bundled": true,
-          "requires": {
-            "better-assert": "~1.0.0"
-          }
-        },
-        "parseuri": {
-          "version": "0.0.5",
-          "bundled": true,
-          "requires": {
-            "better-assert": "~1.0.0"
-          }
-        },
-        "parseurl": {
-          "version": "1.3.3",
-          "bundled": true
-        },
-        "pascalcase": {
-          "version": "0.1.1",
-          "bundled": true
-        },
-        "path-dirname": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "path-is-absolute": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "path-parse": {
-          "version": "1.0.5",
-          "bundled": true
-        },
-        "posix-character-classes": {
-          "version": "0.1.1",
-          "bundled": true
-        },
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "pseudomap": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "qjobs": {
-          "version": "1.2.0",
-          "bundled": true
-        },
-        "qs": {
-          "version": "6.5.2",
-          "bundled": true
-        },
-        "range-parser": {
-          "version": "1.2.0",
-          "bundled": true
-        },
-        "raw-body": {
-          "version": "2.3.3",
-          "bundled": true,
-          "requires": {
-            "bytes": "3.0.0",
-            "http-errors": "1.6.3",
-            "iconv-lite": "0.4.23",
-            "unpipe": "1.0.0"
-          }
-        },
-        "readable-stream": {
-          "version": "2.3.6",
-          "bundled": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.3",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~2.0.0",
-            "safe-buffer": "~5.1.1",
-            "string_decoder": "~1.1.1",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "readdirp": {
-          "version": "2.2.1",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "^4.1.11",
-            "micromatch": "^3.1.10",
-            "readable-stream": "^2.0.2"
-          }
-        },
-        "regex-not": {
-          "version": "1.0.2",
-          "bundled": true,
-          "requires": {
-            "extend-shallow": "^3.0.2",
-            "safe-regex": "^1.1.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "3.0.2",
-              "bundled": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            },
-            "is-extendable": {
-              "version": "1.0.1",
-              "bundled": true,
-              "requires": {
-                "is-plain-object": "^2.0.4"
-              }
-            }
-          }
-        },
-        "remove-trailing-separator": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "repeat-element": {
-          "version": "1.1.3",
-          "bundled": true
-        },
-        "repeat-string": {
-          "version": "1.6.1",
-          "bundled": true
-        },
-        "requirejs": {
-          "version": "2.3.6",
-          "bundled": true
-        },
-        "requires-port": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "resolve": {
-          "version": "1.5.0",
-          "bundled": true,
-          "requires": {
-            "path-parse": "^1.0.5"
-          }
-        },
-        "resolve-url": {
-          "version": "0.2.1",
-          "bundled": true
-        },
-        "ret": {
-          "version": "0.1.15",
-          "bundled": true
-        },
-        "rfdc": {
-          "version": "1.1.2",
-          "bundled": true
-        },
-        "rimraf": {
-          "version": "2.6.3",
-          "bundled": true,
-          "requires": {
-            "glob": "^7.1.3"
-          },
-          "dependencies": {
-            "glob": {
-              "version": "7.1.3",
-              "bundled": true,
-              "requires": {
-                "fs.realpath": "^1.0.0",
-                "inflight": "^1.0.4",
-                "inherits": "2",
-                "minimatch": "^3.0.4",
-                "once": "^1.3.0",
-                "path-is-absolute": "^1.0.0"
-              }
-            }
-          }
-        },
-        "safe-buffer": {
-          "version": "5.1.2",
-          "bundled": true
-        },
-        "safe-regex": {
-          "version": "1.1.0",
-          "bundled": true,
-          "requires": {
-            "ret": "~0.1.10"
-          }
-        },
-        "safer-buffer": {
-          "version": "2.1.2",
-          "bundled": true
-        },
-        "semver": {
-          "version": "5.4.1",
-          "bundled": true
-        },
-        "set-value": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "extend-shallow": "^2.0.1",
-            "is-extendable": "^0.1.1",
-            "is-plain-object": "^2.0.3",
-            "split-string": "^3.0.1"
-          }
-        },
-        "setprototypeof": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "snapdragon": {
-          "version": "0.8.2",
-          "bundled": true,
-          "requires": {
-            "base": "^0.11.1",
-            "debug": "^2.2.0",
-            "define-property": "^0.2.5",
-            "extend-shallow": "^2.0.1",
-            "map-cache": "^0.2.2",
-            "source-map": "^0.5.6",
-            "source-map-resolve": "^0.5.0",
-            "use": "^3.1.0"
-          },
-          "dependencies": {
-            "source-map": {
-              "version": "0.5.7",
-              "bundled": true
-            }
-          }
-        },
-        "snapdragon-node": {
-          "version": "2.1.1",
-          "bundled": true,
-          "requires": {
-            "define-property": "^1.0.0",
-            "isobject": "^3.0.0",
-            "snapdragon-util": "^3.0.1"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "is-descriptor": "^1.0.0"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-data-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-descriptor": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "is-accessor-descriptor": "^1.0.0",
-                "is-data-descriptor": "^1.0.0",
-                "kind-of": "^6.0.2"
-              }
-            },
-            "kind-of": {
-              "version": "6.0.2",
-              "bundled": true
-            }
-          }
-        },
-        "snapdragon-util": {
-          "version": "3.0.1",
-          "bundled": true,
-          "requires": {
-            "kind-of": "^3.2.0"
-          }
-        },
-        "socket.io": {
-          "version": "2.1.1",
-          "bundled": true,
-          "requires": {
-            "debug": "~3.1.0",
-            "engine.io": "~3.2.0",
-            "has-binary2": "~1.0.2",
-            "socket.io-adapter": "~1.1.0",
-            "socket.io-client": "2.1.1",
-            "socket.io-parser": "~3.2.0"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "3.1.0",
-              "bundled": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
-          }
-        },
-        "socket.io-adapter": {
-          "version": "1.1.1",
-          "bundled": true
-        },
-        "socket.io-client": {
-          "version": "2.1.1",
-          "bundled": true,
-          "requires": {
-            "backo2": "1.0.2",
-            "base64-arraybuffer": "0.1.5",
-            "component-bind": "1.0.0",
-            "component-emitter": "1.2.1",
-            "debug": "~3.1.0",
-            "engine.io-client": "~3.2.0",
-            "has-binary2": "~1.0.2",
-            "has-cors": "1.1.0",
-            "indexof": "0.0.1",
-            "object-component": "0.0.3",
-            "parseqs": "0.0.5",
-            "parseuri": "0.0.5",
-            "socket.io-parser": "~3.2.0",
-            "to-array": "0.1.4"
-          },
-          "dependencies": {
-            "component-emitter": {
-              "version": "1.2.1",
-              "bundled": true
-            },
-            "debug": {
-              "version": "3.1.0",
-              "bundled": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            }
-          }
-        },
-        "socket.io-parser": {
-          "version": "3.2.0",
-          "bundled": true,
-          "requires": {
-            "component-emitter": "1.2.1",
-            "debug": "~3.1.0",
-            "isarray": "2.0.1"
-          },
-          "dependencies": {
-            "component-emitter": {
-              "version": "1.2.1",
-              "bundled": true
-            },
-            "debug": {
-              "version": "3.1.0",
-              "bundled": true,
-              "requires": {
-                "ms": "2.0.0"
-              }
-            },
-            "isarray": {
-              "version": "2.0.1",
-              "bundled": true
-            }
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "bundled": true
-        },
-        "source-map-resolve": {
-          "version": "0.5.2",
-          "bundled": true,
-          "requires": {
-            "atob": "^2.1.1",
-            "decode-uri-component": "^0.2.0",
-            "resolve-url": "^0.2.1",
-            "source-map-url": "^0.4.0",
-            "urix": "^0.1.0"
-          }
-        },
-        "source-map-url": {
-          "version": "0.4.0",
-          "bundled": true
-        },
-        "split-string": {
-          "version": "3.1.0",
-          "bundled": true,
-          "requires": {
-            "extend-shallow": "^3.0.0"
-          },
-          "dependencies": {
-            "extend-shallow": {
-              "version": "3.0.2",
-              "bundled": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            },
-            "is-extendable": {
-              "version": "1.0.1",
-              "bundled": true,
-              "requires": {
-                "is-plain-object": "^2.0.4"
-              }
-            }
-          }
-        },
-        "sprintf-js": {
-          "version": "1.0.3",
-          "bundled": true
-        },
-        "static-extend": {
-          "version": "0.1.2",
-          "bundled": true,
-          "requires": {
-            "define-property": "^0.2.5",
-            "object-copy": "^0.1.0"
-          }
-        },
-        "statuses": {
-          "version": "1.5.0",
-          "bundled": true
-        },
-        "streamroller": {
-          "version": "1.0.4",
-          "bundled": true,
-          "requires": {
-            "async": "^2.6.1",
-            "date-format": "^2.0.0",
-            "debug": "^3.1.0",
-            "fs-extra": "^7.0.0",
-            "lodash": "^4.17.10"
-          },
-          "dependencies": {
-            "debug": {
-              "version": "3.2.6",
-              "bundled": true,
-              "requires": {
-                "ms": "^2.1.1"
-              }
-            },
-            "ms": {
-              "version": "2.1.1",
-              "bundled": true
-            }
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "bundled": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "bundled": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "tmp": {
-          "version": "0.0.33",
-          "bundled": true,
-          "requires": {
-            "os-tmpdir": "~1.0.2"
-          }
-        },
-        "to-array": {
-          "version": "0.1.4",
-          "bundled": true
-        },
-        "to-object-path": {
-          "version": "0.3.0",
-          "bundled": true,
-          "requires": {
-            "kind-of": "^3.0.2"
-          }
-        },
-        "to-regex": {
-          "version": "3.0.2",
-          "bundled": true,
-          "requires": {
-            "define-property": "^2.0.2",
-            "extend-shallow": "^3.0.2",
-            "regex-not": "^1.0.2",
-            "safe-regex": "^1.1.0"
-          },
-          "dependencies": {
-            "define-property": {
-              "version": "2.0.2",
-              "bundled": true,
-              "requires": {
-                "is-descriptor": "^1.0.2",
-                "isobject": "^3.0.1"
-              }
-            },
-            "extend-shallow": {
-              "version": "3.0.2",
-              "bundled": true,
-              "requires": {
-                "assign-symbols": "^1.0.0",
-                "is-extendable": "^1.0.1"
-              }
-            },
-            "is-accessor-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-data-descriptor": {
-              "version": "1.0.0",
-              "bundled": true,
-              "requires": {
-                "kind-of": "^6.0.0"
-              }
-            },
-            "is-descriptor": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "is-accessor-descriptor": "^1.0.0",
-                "is-data-descriptor": "^1.0.0",
-                "kind-of": "^6.0.2"
-              }
-            },
-            "is-extendable": {
-              "version": "1.0.1",
-              "bundled": true,
-              "requires": {
-                "is-plain-object": "^2.0.4"
-              }
-            },
-            "kind-of": {
-              "version": "6.0.2",
-              "bundled": true
-            }
-          }
-        },
-        "to-regex-range": {
-          "version": "2.1.1",
-          "bundled": true,
-          "requires": {
-            "is-number": "^3.0.0",
-            "repeat-string": "^1.6.1"
-          }
-        },
-        "tslib": {
-          "version": "1.8.1",
-          "bundled": true
-        },
-        "tslint": {
-          "version": "5.11.0",
-          "bundled": true,
-          "requires": {
-            "babel-code-frame": "^6.22.0",
-            "builtin-modules": "^1.1.1",
-            "chalk": "^2.3.0",
-            "commander": "^2.12.1",
-            "diff": "^3.2.0",
-            "glob": "^7.1.1",
-            "js-yaml": "^3.7.0",
-            "minimatch": "^3.0.4",
-            "resolve": "^1.3.2",
-            "semver": "^5.3.0",
-            "tslib": "^1.8.0",
-            "tsutils": "^2.27.2"
-          },
-          "dependencies": {
-            "tsutils": {
-              "version": "2.28.0",
-              "bundled": true,
-              "requires": {
-                "tslib": "^1.8.1"
-              }
-            }
-          }
-        },
-        "type-is": {
-          "version": "1.6.16",
-          "bundled": true,
-          "requires": {
-            "media-typer": "0.3.0",
-            "mime-types": "~2.1.18"
-          }
-        },
-        "typescript": {
-          "version": "2.9.2",
-          "bundled": true
-        },
-        "ultron": {
-          "version": "1.1.1",
-          "bundled": true
-        },
-        "underscore": {
-          "version": "1.8.3",
-          "bundled": true
-        },
-        "union-value": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "arr-union": "^3.1.0",
-            "get-value": "^2.0.6",
-            "is-extendable": "^0.1.1",
-            "set-value": "^0.4.3"
-          },
-          "dependencies": {
-            "set-value": {
-              "version": "0.4.3",
-              "bundled": true,
-              "requires": {
-                "extend-shallow": "^2.0.1",
-                "is-extendable": "^0.1.1",
-                "is-plain-object": "^2.0.1",
-                "to-object-path": "^0.3.0"
-              }
-            }
-          }
-        },
-        "universalify": {
-          "version": "0.1.2",
-          "bundled": true
-        },
-        "unpipe": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "unset-value": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "has-value": "^0.3.1",
-            "isobject": "^3.0.0"
-          },
-          "dependencies": {
-            "has-value": {
-              "version": "0.3.1",
-              "bundled": true,
-              "requires": {
-                "get-value": "^2.0.3",
-                "has-values": "^0.1.4",
-                "isobject": "^2.0.0"
-              },
-              "dependencies": {
-                "isobject": {
-                  "version": "2.1.0",
-                  "bundled": true,
-                  "requires": {
-                    "isarray": "1.0.0"
-                  }
-                }
-              }
-            },
-            "has-values": {
-              "version": "0.1.4",
-              "bundled": true
-            }
-          }
-        },
-        "upath": {
-          "version": "1.1.2",
-          "bundled": true
-        },
-        "urix": {
-          "version": "0.1.0",
-          "bundled": true
-        },
-        "use": {
-          "version": "3.1.1",
-          "bundled": true
-        },
-        "useragent": {
-          "version": "2.3.0",
-          "bundled": true,
-          "requires": {
-            "lru-cache": "4.1.x",
-            "tmp": "0.0.x"
-          }
-        },
-        "util-deprecate": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "utils-merge": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "void-elements": {
-          "version": "2.0.1",
-          "bundled": true
-        },
-        "walkdir": {
-          "version": "0.0.12",
-          "bundled": true
-        },
-        "which": {
-          "version": "1.3.1",
-          "bundled": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        },
-        "wordwrap": {
-          "version": "0.0.3",
-          "bundled": true
-        },
-        "wrappy": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "ws": {
-          "version": "3.3.3",
-          "bundled": true,
-          "requires": {
-            "async-limiter": "~1.0.0",
-            "safe-buffer": "~5.1.0",
-            "ultron": "~1.1.0"
-          }
-        },
-        "xmlhttprequest-ssl": {
-          "version": "1.5.5",
-          "bundled": true
-        },
-        "yallist": {
-          "version": "2.1.2",
-          "bundled": true
-        },
-        "yeast": {
-          "version": "0.1.2",
-          "bundled": true
-        }
-      }
+      "version": "file:../jalhyd"
     },
     "jasmine": {
       "version": "2.8.0",
@@ -12709,6 +10536,11 @@
         "ajv-keywords": "^3.1.0"
       }
     },
+    "screenfull": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-4.2.0.tgz",
+      "integrity": "sha512-qpyI9XbwuMJElWRP5vTgxkFAl4k7HpyhIqBFOZEwX9QBXn0MAuRSpn7LOc6/4CeSwoz61oBu1VPV+2fbIWC+5Q=="
+    },
     "scss-tokenizer": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
-- 
GitLab


From 1d9cd6b06d81a025015392b8aaed9290600b44fc Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Fri, 24 May 2019 17:04:36 +0200
Subject: [PATCH 3/9] =?UTF-8?q?Suite=20#213=20:=20suppression=20du=20lissa?=
 =?UTF-8?q?ge=20sur=20le=20graphique=20de=20param=C3=A8tres=20vari=C3=A9s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dialog-edit-param-values.component.ts                    | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts
index bb9168725..5bc041da5 100644
--- a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts
+++ b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts
@@ -104,6 +104,11 @@ export class DialogEditParamValuesComponent implements OnInit {
                     }
                 }]
             },
+            elements: {
+                line: {
+                    tension: 0
+                }
+            },
             tooltips: {
                 callbacks: {
                     label: function(tooltipItem) {
-- 
GitLab


From 7f206e034e0301f7ad59906ac7b049a9d4646f8f Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Fri, 24 May 2019 17:38:05 +0200
Subject: [PATCH 4/9] =?UTF-8?q?Modale=20de=20param=C3=A8tre=20vari=C3=A9:?=
 =?UTF-8?q?=20d=C3=A9lection=20de=20la=20strat=C3=A9gie=20d'extension?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dialog-edit-param-values.component.html   |  9 +++++++
 .../dialog-edit-param-values.component.ts     | 27 ++++++++++++++++++-
 .../param-field-line.component.ts             |  2 +-
 src/locale/messages.en.json                   |  3 +++
 src/locale/messages.fr.json                   |  3 +++
 5 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html
index 8fbe604a5..43f8a3a0f 100644
--- a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html
+++ b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html
@@ -105,6 +105,15 @@
         </form>
     </div>
 
+    <mat-form-field>
+      <mat-select [placeholder]="uitextExtensionStrategy" [(value)]="selectedExtensionStrategy"
+        data-testid="variable-extension-strategy-select">
+          <mat-option *ngFor="let e of extensionStrategies" [value]="e.value">
+              {{ e.label }}
+          </mat-option>
+      </mat-select>
+    </mat-form-field>
+
   </div>
 
   <div mat-dialog-content *ngIf="viewChart">
diff --git a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts
index 5bc041da5..803de5b0b 100644
--- a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts
+++ b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts
@@ -3,7 +3,7 @@ import { Inject, Component, OnInit } from "@angular/core";
 import { FormBuilder, FormGroup, Validators } from "@angular/forms";
 import { I18nService } from "../../services/internationalisation/internationalisation.service";
 import { NgParameter } from "../../formulaire/ngparam";
-import { ParamValueMode } from "jalhyd";
+import { ParamValueMode, ExtensionStrategy } from "jalhyd";
 import { sprintf } from "sprintf-js";
 import { ApplicationSetupService } from "../../services/app-setup/app-setup.service";
 
@@ -23,6 +23,9 @@ export class DialogEditParamValuesComponent implements OnInit {
     /** available decimal separators */
     public decimalSeparators: { label: string; value: string; }[];
 
+    /** available extension strategies */
+    public extensionStrategies: { value: ExtensionStrategy; label: string; }[];
+
     /** current decimal separator */
     public decimalSeparator: string;
 
@@ -76,6 +79,16 @@ export class DialogEditParamValuesComponent implements OnInit {
             }
         ];
         this.decimalSeparator = this.decimalSeparators[0].value;
+        this.extensionStrategies = [
+            {
+                value: ExtensionStrategy.REPEAT_LAST,
+                label: this.intlService.localizeText("INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_REPEAT_LAST")
+            },
+            {
+                value: ExtensionStrategy.RECYCLE,
+                label: this.intlService.localizeText("INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_RECYCLE")
+            }
+        ];
 
         // chart configuration
         const nDigits = this.appSetupService.displayDigits;
@@ -171,6 +184,14 @@ export class DialogEditParamValuesComponent implements OnInit {
         this.param.valueMode = v;
     }
 
+    public get selectedExtensionStrategy() {
+        return this.param.paramDefinition.extensionStrategy;
+    }
+
+    public set selectedExtensionStrategy(es) {
+        this.param.paramDefinition.extensionStrategy = es;
+    }
+
     public get isMinMax() {
         return this.param.valueMode === ParamValueMode.MINMAX;
     }
@@ -412,6 +433,10 @@ export class DialogEditParamValuesComponent implements OnInit {
         return this.intlService.localizeText("INFO_PARAMFIELD_PARAMVARIER_IMPORT_FICHIER");
     }
 
+    public get uitextExtensionStrategy() {
+        return this.intlService.localizeText("INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY");
+    }
+
     public ngOnInit() {
         this.initVariableValues();
     }
diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts
index df956b33a..5b105c01f 100644
--- a/src/app/components/param-field-line/param-field-line.component.ts
+++ b/src/app/components/param-field-line/param-field-line.component.ts
@@ -197,7 +197,7 @@ export class ParamFieldLineComponent implements OnChanges {
         let ret = true;
         if (this.param.paramDefinition.isCalculated) {
             const nub = this.param.paramDefinition.parentNub;
-            const p = nub.findFirstSingleParameter(this.param.paramDefinition);
+            const p = nub.findFirstCalculableParameter(this.param.paramDefinition);
             ret = (p !== undefined);
         }
         return ret;
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index b521d5451..32364c098 100644
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -212,6 +212,9 @@
     "INFO_PARAMFIELD_PARAMFIXE": "Fixed",
     "INFO_PARAMFIELD_PARAMLIE_LABEL": "Linked parameter",
     "INFO_PARAMFIELD_PARAMLIE": "Link",
+    "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY": "Values list extension strategy",
+    "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_REPEAT_LAST": "Repeat last value",
+    "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_RECYCLE": "Recycle values",
     "INFO_PARAMFIELD_PARAMVARIER_IMPORT_FICHIER": "Import file",
     "INFO_PARAMFIELD_PARAMVARIER_MINMAXSTEP": "min: %s, max: %s, step: %s",
     "INFO_PARAMFIELD_PARAMVARIER_MODE": "Mode",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index efa2d9ba8..7228186b3 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -212,6 +212,9 @@
     "INFO_PARAMFIELD_PARAMFIXE": "fixé",
     "INFO_PARAMFIELD_PARAMLIE_LABEL": "Paramètre lié",
     "INFO_PARAMFIELD_PARAMLIE": "lié",
+    "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY": "Stratégie d'extension de la liste de valeurs",
+    "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_REPEAT_LAST": "Répéter la dernière valeur",
+    "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_RECYCLE": "Réutiliser les valeurs",
     "INFO_PARAMFIELD_PARAMVARIER_IMPORT_FICHIER": "Importer un fichier",
     "INFO_PARAMFIELD_PARAMVARIER_MINMAXSTEP": "min : %s, max : %s, pas : %s",
     "INFO_PARAMFIELD_PARAMVARIER_MODE": "Mode",
-- 
GitLab


From 4359a78290ed6b507fea68b40bd7fc9608d4cb6c Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 27 May 2019 12:22:40 +0200
Subject: [PATCH 5/9] =?UTF-8?q?R=C3=A9sultats=20des=20param=C3=A8tres=20va?=
 =?UTF-8?q?riables=20multiples?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../fixedvar-results/var-results.component.ts | 87 +++++++++++-------
 .../remous-results.component.ts               |  2 +-
 .../definition/form-compute-fixedvar.ts       | 28 +++---
 .../form-compute-section-parametree.ts        |  6 +-
 .../formulaire/definition/form-def-section.ts |  4 +-
 src/app/formulaire/ngparam.ts                 |  8 ++
 src/app/results/remous-results.ts             |  2 +-
 src/app/results/var-results.ts                | 88 ++++++++++---------
 8 files changed, 130 insertions(+), 95 deletions(-)

diff --git a/src/app/components/fixedvar-results/var-results.component.ts b/src/app/components/fixedvar-results/var-results.component.ts
index 2151ddd92..f737e1d4c 100644
--- a/src/app/components/fixedvar-results/var-results.component.ts
+++ b/src/app/components/fixedvar-results/var-results.component.ts
@@ -15,6 +15,9 @@ import { ResultsComponent } from "./results.component";
 })
 export class VarResultsComponent extends ResultsComponent {
 
+    /** size of the longest variated parameter */
+    public size: number;
+
     /** résultats non mis en forme */
     protected _varResults: VarResults;
 
@@ -33,54 +36,56 @@ export class VarResultsComponent extends ResultsComponent {
         super();
     }
 
+    /** Refreshes results and builds the dataset */
     public set results(r: VarResults) {
         this._varResults = r;
-
         this._results = [];
         this._headers = [];
 
+        const nDigits = this.appSetupService.displayDigits;
+
         if (this._varResults) {
-            const nDigits = this.appSetupService.displayDigits;
-            let i = 0;
-            for (const x of this._varResults.variatedParameter.valuesIterator) {
-                const pval = x.toFixed(nDigits);
-                this._results.push({ "param": pval, "result": this._varResults.resultElements[i] });
-                i++;
+            // A. build headers
+            for (let i = 0; i < this._varResults.variatedParameters.length; i++) {
+                this._headers.push(this._varResults.variableParamHeaders[i]);
             }
-
-            this._headers.push(this._varResults.variableParamHeader);
             if (this._varResults.calculatedParameterHeader) {
                 this._headers.push(this._varResults.calculatedParameterHeader);
             }
-
             this._headers = this._headers.concat(this._varResults.extraResultHeaders);
-        }
-    }
 
-    public get hasResults(): boolean {
-        return this._varResults && this._varResults.hasResults;
-    }
-
-    public get headers() {
-        return this._headers;
-    }
+            // B. pre-extract variable parameters valueslet longest = 0;
+            const varValues = [];
+            // find longest list
+            this.size = 0;
+            for (let i = 0; i < this._varResults.variatedParameters.length; i++) {
+                const vs = this._varResults.variatedParameters[i].valuesIterator.count();
+                if (vs > this.size) {
+                    this.size = vs;
+                }
+            }
+            // get extended values lists for each variable parameter
+            for (const v of this._varResults.variatedParameters) {
+                const vv = [];
+                const iter = v.getExtendedValuesIterator(this.size);
+                while (iter.hasNext) {
+                    const nv = iter.next();
+                    vv.push(nv.value.toFixed(nDigits));
+                }
+                varValues.push(vv);
+            }
 
-    /**
-     * Returns a combination of and results and extraResults for mat-table
-     */
-    public get dataSet() {
-        const data = [];
-        const nDigits = this.appSetupService.displayDigits;
-        if (this._results) {
-            for (let i = 0; i < this._results.length; i++) {
-                const r = this._results[i];
+            // C. build dataset
+            for (let i = 0; i < this._varResults.resultElements.length; i++) {
                 const re: ResultElement = this._varResults.resultElements[i];
-
                 if (re) {
-                    // for each computation step, build ordered list of : variable param value; result; extra results
+                    // build ordered list of : variable params values; result; extra results
+                    const list = [];
 
-                    // 1. variable param value
-                    const list = [ r.param ];
+                    // 1. variable params values for this computation step
+                    for (const vv of varValues) {
+                        list.push(vv[i]);
+                    }
 
                     // 2. result
                     if (re.vCalc) { // sometimes does no exist (ex: Section Parametree)
@@ -97,11 +102,25 @@ export class VarResultsComponent extends ResultsComponent {
                         }
 
                     }
-                    data.push(list);
+                    this._results.push(list);
                 }
             }
         }
-        return data;
+    }
+
+    public get hasResults(): boolean {
+        return this._varResults && this._varResults.hasResults;
+    }
+
+    public get headers() {
+        return this._headers;
+    }
+
+    /**
+     * Returns a combination of results and extraResults for mat-table
+     */
+    public get dataSet() {
+        return this._results;
     }
 
     public exportAsSpreadsheet() {
diff --git a/src/app/components/remous-results/remous-results.component.ts b/src/app/components/remous-results/remous-results.component.ts
index f11fa831b..f5328dc13 100644
--- a/src/app/components/remous-results/remous-results.component.ts
+++ b/src/app/components/remous-results/remous-results.component.ts
@@ -368,7 +368,7 @@ export class RemousResultsComponent extends ResultsComponent implements DoCheck
     }
 
     private get abscisseIterator(): INumberIterator {
-        return this._remousResults.varResults.variatedParameter.paramDefinition.valuesIterator;
+        return this._remousResults.varResults.variatedParameters[0].paramDefinition.valuesIterator;
     }
 
     private connectRessaut(lineFlu: LineData, lineTor: LineData) {
diff --git a/src/app/formulaire/definition/form-compute-fixedvar.ts b/src/app/formulaire/definition/form-compute-fixedvar.ts
index 875a52747..08c12186f 100644
--- a/src/app/formulaire/definition/form-compute-fixedvar.ts
+++ b/src/app/formulaire/definition/form-compute-fixedvar.ts
@@ -1,4 +1,4 @@
-import { Nub, Result, ComputeNode } from "jalhyd";
+import { Nub } from "jalhyd";
 
 import { FormCompute } from "./form-compute";
 import { NgParameter, ParamRadioConfig } from "../ngparam";
@@ -14,18 +14,18 @@ export class FormComputeFixedVar extends FormCompute {
         return this._formResult as FormResultFixedVar;
     }
 
-    private getVariatedParameter(): NgParameter {
-        const res = this._formBase.getDisplayedParamFromState(ParamRadioConfig.VAR);
-        if (res !== undefined) {
-            return res;
-        }
-
-        const pms = this._formBase.getDisplayedParamListFromState(ParamRadioConfig.LINK);
-        for (const p of pms) {
-            if (p.paramDefinition.hasMultipleValues) {
-                return p;
+    private getVariatedParameters(): NgParameter[] {
+        let res: NgParameter[] = [];
+        res = this._formBase.getDisplayedParamListFromState(ParamRadioConfig.VAR);
+        if (res.length === 0) {
+            const pms = this._formBase.getDisplayedParamListFromState(ParamRadioConfig.LINK);
+            for (const p of pms) {
+                if (p.paramDefinition.hasMultipleValues) {
+                    res.push(p);
+                }
             }
         }
+        return res;
     }
 
     private getComputedParameter(): NgParameter {
@@ -42,15 +42,15 @@ export class FormComputeFixedVar extends FormCompute {
         const computedParam: NgParameter = this.getComputedParameter();
         this.formResult.resetResults(); // to avoid adding fixed parameters more than once (see below)
         this.formResult.addFixedParameters();
-        const varParam: NgParameter = this.getVariatedParameter();
+        const varParams: NgParameter[] = this.getVariatedParameters();
 
-        if (varParam === undefined) {
+        if (varParams.length === 0) {
             // pas de paramètre à varier
             this.formResult.fixedResults.result = nub.result;
             this.formResult.fixedResults.calculatedParameter = computedParam;
         } else {
             // il y a un paramètre à varier
-            this.formResult.varResults.variatedParameter = varParam;
+            this.formResult.varResults.variatedParameters = varParams;
             this.formResult.varResults.calculatedParameter = computedParam;
 
             this.formResult.varResults.result = nub.result;
diff --git a/src/app/formulaire/definition/form-compute-section-parametree.ts b/src/app/formulaire/definition/form-compute-section-parametree.ts
index d30352a57..3e833eed4 100644
--- a/src/app/formulaire/definition/form-compute-section-parametree.ts
+++ b/src/app/formulaire/definition/form-compute-section-parametree.ts
@@ -39,10 +39,10 @@ export class FormComputeSectionParametree extends FormCompute {
         const sect: acSection = sectNub.section;
         this._sectionResults.section = sect;
 
-        const varParam = this._formSection.getSectionVariatedParameter();
-        if (varParam) {
+        const varParams = this._formSection.getSectionVariatedParameters();
+        if (varParams.length > 0) {
             // résultats variés avec tous les résultats complémentaires
-            this._varResults.variatedParameter = varParam;
+            this._varResults.variatedParameters = varParams;
             this._varResults.result = sectNub.result;
             this._varResults.update(false);
         } else {
diff --git a/src/app/formulaire/definition/form-def-section.ts b/src/app/formulaire/definition/form-def-section.ts
index 309a06613..a2c011e8d 100644
--- a/src/app/formulaire/definition/form-def-section.ts
+++ b/src/app/formulaire/definition/form-def-section.ts
@@ -18,8 +18,8 @@ export class FormDefSection {
         return this._sectionSourceId !== undefined;
     }
 
-    public getSectionVariatedParameter(): NgParameter {
-        return this._formBase.getDisplayedParamFromState(ParamRadioConfig.VAR);
+    public getSectionVariatedParameters(): NgParameter[] {
+        return this._formBase.getDisplayedParamListFromState(ParamRadioConfig.VAR);
     }
 
     public getSectionComputedParam(): { symbol: string, label: string } {
diff --git a/src/app/formulaire/ngparam.ts b/src/app/formulaire/ngparam.ts
index 0154d6ae4..679d3b1f3 100644
--- a/src/app/formulaire/ngparam.ts
+++ b/src/app/formulaire/ngparam.ts
@@ -237,6 +237,10 @@ export class NgParameter extends InputField implements Observer {
         return this._paramDef.valueList;
     }
 
+    public get inferredValuesList() {
+        return this._paramDef.getInferredValuesList();
+    }
+
     public get isValid() {
         if (this.radioState === undefined) {
             return false;
@@ -296,6 +300,10 @@ export class NgParameter extends InputField implements Observer {
         }
     }
 
+    public getExtendedValuesIterator(size: number): INumberIterator {
+        return this._paramDef.getExtendedValuesIterator(size);
+    }
+
     /**
      * notification envoyée après la modification de la valeur du paramètre
      */
diff --git a/src/app/results/remous-results.ts b/src/app/results/remous-results.ts
index 1127bf61f..6d6e1f6e1 100644
--- a/src/app/results/remous-results.ts
+++ b/src/app/results/remous-results.ts
@@ -137,7 +137,7 @@ export class RemousResults extends CalculatorResults {
         this._log.addLog(this._result.globalLog);
 
         this._varResults = new VarResults();
-        this._varResults.variatedParameter = new NgParameter(this._xValues, undefined);
+        this._varResults.variatedParameters = [ new NgParameter(this._xValues, undefined) ];
         this._varResults.calculatedParameter
             = new NgParameter(new ParamDefinition(null, "Ligne d'eau", ParamDomainValue.POS_NULL), undefined);
         this._varResults.result = this._result;
diff --git a/src/app/results/var-results.ts b/src/app/results/var-results.ts
index 891f7c008..f00cfdabb 100644
--- a/src/app/results/var-results.ts
+++ b/src/app/results/var-results.ts
@@ -8,14 +8,14 @@ import { GraphType } from "./graph-type";
 
 export class VarResults extends CalculatedParamResults implements PlottableData {
     /**
-     * paramètre varié
+     * paramètres variés
      */
-    private _variatedParam: NgParameter;
+    private _variatedParams: NgParameter[];
 
     /**
-     * titre de la 1ère colonne des résultats variés
+     * titre des colonnes des résultats variés
      */
-    private _variableParamHeader: string;
+    private _variableParamHeaders: string[];
 
     /**
      * clés des résultats complémentaires
@@ -53,23 +53,25 @@ export class VarResults extends CalculatedParamResults implements PlottableData
 
     public reset() {
         super.reset();
-        this._variableParamHeader = undefined;
+        this._variableParamHeaders = [];
         this._extraResultHeaders = [];
         this.extraResultKeys = [];
         this._yValues = [];
     }
 
-    public get variatedParameter(): NgParameter {
-        return this._variatedParam;
+    public get variatedParameters(): NgParameter[] {
+        return this._variatedParams;
     }
 
-    public set variatedParameter(p: NgParameter) {
-        this._variatedParam = p;
-        this._variableParamHeader = CalculatorResults.paramLabel(this._variatedParam, true);
+    public set variatedParameters(p: NgParameter[]) {
+        this._variatedParams = p;
+        this._variableParamHeaders = this._variatedParams.map((v) => {
+            return CalculatorResults.paramLabel(v, true);
+        });
     }
 
-    public get variableParamHeader() {
-        return this._variableParamHeader;
+    public get variableParamHeaders() {
+        return this._variableParamHeaders;
     }
 
     public get yValues() {
@@ -88,20 +90,21 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         // 1. calculated param ?
         if (this.calculatedParameter && this.calculatedParameter.symbol === symbol) {
             return this.calculatedParameterHeader;
-        } else
+        }
         // 2. variated param ?
-        if (this.variatedParameter.symbol === symbol) {
-            return this.variableParamHeader;
-        } else {
-            // 3. Result element ?
-            // calculator type for translation
-            const sn = this.result.sourceNub;
-            let ct = sn.calcType;
-            if (sn.parent) {
-                ct = sn.parent.calcType;
+        for (let i = 0; i < this.variatedParameters.length; i++) {
+            if (this._variatedParams[i].symbol === symbol) {
+                return this.variableParamHeaders[i];
             }
-            return ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct, symbol);
         }
+        // 3. Result element ?
+        // calculator type for translation
+        const sn = this.result.sourceNub;
+        let ct = sn.calcType;
+        if (sn.parent) {
+            ct = sn.parent.calcType;
+        }
+        return ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct, symbol);
     }
 
     /**
@@ -117,19 +120,20 @@ export class VarResults extends CalculatedParamResults implements PlottableData
                     series.push(r.vCalc);
                 }
             }
-        } else
+        }
         // 2. variated param ?
-        if (this.variatedParameter.symbol === symbol) {
-            for (const v of this.variatedParameter.valuesIterator) {
-                series.push(v);
+        for (let i = 0; i < this.variatedParameters.length; i++) {
+            if (this._variatedParams[i].symbol === symbol) {
+                for (const v of this.variatedParameters[i].valuesIterator) {
+                    series.push(v);
+                }
             }
-        } else {
-            // 3. Result element ?
-            for (const r of this.result.resultElements) { // re:ResultElement
-                for (const k in r.extraResults) {
-                    if (k === symbol) {
-                        series.push(r.extraResults[k]);
-                    }
+        }
+        // 3. Result element ?
+        for (const r of this.result.resultElements) { // re:ResultElement
+            for (const k in r.extraResults) {
+                if (k === symbol) {
+                    series.push(r.extraResults[k]);
                 }
             }
         }
@@ -146,7 +150,9 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         if (this.calculatedParameter) {
             res.push(this.calculatedParameter.symbol);
         }
-        res.push(this.variatedParameter.symbol);
+        for (const v of this._variatedParams) {
+            res.push(v.symbol);
+        }
         for (const erk of this.extraResultKeys) {
             res.push(erk);
         }
@@ -154,8 +160,10 @@ export class VarResults extends CalculatedParamResults implements PlottableData
     }
 
     public update(displaySymbol: boolean) {
-        if (this._variableParamHeader === undefined) {
-            this._variableParamHeader = CalculatorResults.paramLabel(this.variatedParameter, displaySymbol);
+        if (this._variableParamHeaders.length === 0) {
+            this._variableParamHeaders = this._variatedParams.map((v) => {
+                return CalculatorResults.paramLabel(v, true);
+            });
         }
 
         // valeurs du paramètre à calculer
@@ -181,7 +189,7 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         } else if (this.extraResultKeys.length > 0) {
             defaultY = this.extraResultKeys[0];
         }
-        this.chartX = this.chartX || this.variatedParameter.symbol;
+        this.chartX = this.chartX || this.variatedParameters[0].symbol;
         this.chartY = defaultY;
 
         // calculator type for translation
@@ -202,10 +210,10 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         // (might be the previous variated parameter, that is not accessible anymore)
         const aca = this.getAvailableChartAxis();
         if (! aca.includes(this.chartX)) {
-            this.chartX = this.variatedParameter.symbol;
+            this.chartX = this.variatedParameters[0].symbol;
         }
         if (! aca.includes(this.chartY)) {
-            this.chartY = this.variatedParameter.symbol;
+            this.chartY = this.variatedParameters[0].symbol;
         }
     }
 }
-- 
GitLab


From cb132c956425eaf2d1f9fcb0978aeb8beeba93e2 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 27 May 2019 14:13:54 +0200
Subject: [PATCH 6/9] =?UTF-8?q?R=C3=A9sultats=20multivari=C3=A9s:=20correc?=
 =?UTF-8?q?tion=20nombre=20d'abscisses?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/app/results/var-results.ts | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/app/results/var-results.ts b/src/app/results/var-results.ts
index f00cfdabb..1807b0f02 100644
--- a/src/app/results/var-results.ts
+++ b/src/app/results/var-results.ts
@@ -41,6 +41,9 @@ export class VarResults extends CalculatedParamResults implements PlottableData
      */
     public chartY: string;
 
+    /** size of the longest variated parameter */
+    public size: number;
+
     /**
      * tableau des ordonnées du graphe des résultats variés
      */
@@ -124,7 +127,8 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         // 2. variated param ?
         for (let i = 0; i < this.variatedParameters.length; i++) {
             if (this._variatedParams[i].symbol === symbol) {
-                for (const v of this.variatedParameters[i].valuesIterator) {
+                const iter = this.variatedParameters[i].getExtendedValuesIterator(this.size);
+                for (const v of iter) {
                     series.push(v);
                 }
             }
@@ -166,6 +170,15 @@ export class VarResults extends CalculatedParamResults implements PlottableData
             });
         }
 
+        // liste la plus longue
+        this.size = 0;
+        for (const v of this._variatedParams) {
+            const s = v.valuesIterator.count();
+            if (s > this.size) {
+                this.size = s;
+            }
+        }
+
         // valeurs du paramètre à calculer
         for (const r of this.result.resultElements) {
             this._yValues.push(r.vCalc);
-- 
GitLab


From e1ba75a4da96e9371de1f326ec3f87aefabd8e1a Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 27 May 2019 14:36:45 +0200
Subject: [PATCH 7/9] =?UTF-8?q?Graphique=20de=20r=C3=A9sultats=20multivari?=
 =?UTF-8?q?=C3=A9s:=20le=20param=C3=A8tre=20le=20plus=20long=20est=20chois?=
 =?UTF-8?q?i=20comme=20abscisse=20par=20d=C3=A9faut?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/app/results/var-results.ts | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/app/results/var-results.ts b/src/app/results/var-results.ts
index 1807b0f02..4f7fcf28a 100644
--- a/src/app/results/var-results.ts
+++ b/src/app/results/var-results.ts
@@ -44,6 +44,9 @@ export class VarResults extends CalculatedParamResults implements PlottableData
     /** size of the longest variated parameter */
     public size: number;
 
+    /** index of the longest variated parameter */
+    public longest: number;
+
     /**
      * tableau des ordonnées du graphe des résultats variés
      */
@@ -60,6 +63,7 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         this._extraResultHeaders = [];
         this.extraResultKeys = [];
         this._yValues = [];
+        this.longest = 0;
     }
 
     public get variatedParameters(): NgParameter[] {
@@ -172,11 +176,14 @@ export class VarResults extends CalculatedParamResults implements PlottableData
 
         // liste la plus longue
         this.size = 0;
+        let i = 0;
         for (const v of this._variatedParams) {
             const s = v.valuesIterator.count();
             if (s > this.size) {
                 this.size = s;
+                this.longest = i;
             }
+            i++;
         }
 
         // valeurs du paramètre à calculer
@@ -202,7 +209,7 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         } else if (this.extraResultKeys.length > 0) {
             defaultY = this.extraResultKeys[0];
         }
-        this.chartX = this.chartX || this.variatedParameters[0].symbol;
+        this.chartX = this.chartX || this.variatedParameters[this.longest].symbol;
         this.chartY = defaultY;
 
         // calculator type for translation
-- 
GitLab


From 83a4732e64ea8998da1dd0ac867701b77b6ce915 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 27 May 2019 15:02:59 +0200
Subject: [PATCH 8/9] =?UTF-8?q?Axes=20des=20graphiques:=20nom=20complet=20?=
 =?UTF-8?q?avec=20unit=C3=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../results-graph/results-graph.component.ts  | 23 +++++++++++++++----
 src/app/results/plottable-data.ts             |  8 ++++++-
 src/app/results/plottable-pab-results.ts      |  6 ++++-
 src/app/results/var-results.ts                | 13 +++++++++--
 4 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/src/app/components/results-graph/results-graph.component.ts b/src/app/components/results-graph/results-graph.component.ts
index efd025288..9cc50d8e7 100644
--- a/src/app/components/results-graph/results-graph.component.ts
+++ b/src/app/components/results-graph/results-graph.component.ts
@@ -104,7 +104,7 @@ export class ResultsGraphComponent extends ResultsComponent implements AfterCont
     /**
      * Returns a human readable description of any param / result symbol
      */
-    public getChartAxisLabel(symbol: string) {
+    public getChartAxisLabel(symbol: string): string {
         return this._results.getChartAxisLabel(symbol);
     }
 
@@ -135,6 +135,19 @@ export class ResultsGraphComponent extends ResultsComponent implements AfterCont
         this._graphTypeComponent.addObserver(this);
     }
 
+    /**
+     * Calls getChartAxisLabel() and removes the symbol prefix
+     * (cannot rebuild a clean label here)
+     */
+    private axisLabelWithoutSymbol(symbol: string) {
+        let l = this._results.getChartAxisLabel(symbol);
+        const i = l.indexOf(": ");
+        if (i !== -1) {
+            l = l.substring(i + 2);
+        }
+        return l;
+    }
+
     /** forces Angular to rebuild the chart @see bug #137 */
     private forceRebuild() {
         this.displayChart = false;
@@ -172,13 +185,13 @@ export class ResultsGraphComponent extends ResultsComponent implements AfterCont
                 },
                 scaleLabel: {
                     display: true,
-                    labelString: this.chartX
+                    labelString: this.axisLabelWithoutSymbol(this.chartX)
                 }
             }],
             yAxes: [{
                 scaleLabel: {
                     display: true,
-                    labelString: this.chartY
+                    labelString: this.axisLabelWithoutSymbol(this.chartY)
                 }
             }]
         };
@@ -224,7 +237,7 @@ export class ResultsGraphComponent extends ResultsComponent implements AfterCont
                 },
                 scaleLabel: {
                     display: true,
-                    labelString: this.chartX
+                    labelString: this.axisLabelWithoutSymbol(this.chartX)
                 }
             }],
             yAxes: [{
@@ -235,7 +248,7 @@ export class ResultsGraphComponent extends ResultsComponent implements AfterCont
                 },
                 scaleLabel: {
                     display: true,
-                    labelString: this.chartY
+                    labelString: this.axisLabelWithoutSymbol(this.chartY)
                 }
             }]
         };
diff --git a/src/app/results/plottable-data.ts b/src/app/results/plottable-data.ts
index 609c388aa..d750529b7 100644
--- a/src/app/results/plottable-data.ts
+++ b/src/app/results/plottable-data.ts
@@ -14,7 +14,13 @@ export interface PlottableData {
      * (usually a variable symbol like "Q", "Z1"…)
      * @param symbol parameter / result symbol (ex: "Q")
      */
-    getChartAxisLabel(symbol: string);
+    getChartAxisLabel(symbol: string): string;
+
+    /**
+     * Returns the translated name of the given symbol (usually an extraResult)
+     * if available, with its unit, but without the symbol itself
+     */
+    expandLabelFromSymbol(symbol: string): string;
 
     /**
      * Returns a list of plottable parameters / result elements, that can be defined
diff --git a/src/app/results/plottable-pab-results.ts b/src/app/results/plottable-pab-results.ts
index c8cdd2964..b8bfe90c9 100644
--- a/src/app/results/plottable-pab-results.ts
+++ b/src/app/results/plottable-pab-results.ts
@@ -29,10 +29,14 @@ export class PlottablePabResults implements PlottableData {
      * Returns the label to display, for an element of getAvailableChartAxis()
      * @param symbol parameter / result symbol (ex: "Q")
      */
-    public getChartAxisLabel(symbol: string) {
+    public getChartAxisLabel(symbol: string): string {
         return this.pabResults.headers[this.pabResults.columns.indexOf(symbol)];
     }
 
+    public expandLabelFromSymbol(symbol: string): string {
+        return symbol;
+    }
+
     /**
      * Returns a list of plottable parameters / result elements, that can be defined
      * as X or Y chart axis
diff --git a/src/app/results/var-results.ts b/src/app/results/var-results.ts
index 4f7fcf28a..95898befc 100644
--- a/src/app/results/var-results.ts
+++ b/src/app/results/var-results.ts
@@ -93,7 +93,7 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         return this._extraResultHeaders;
     }
 
-    public getChartAxisLabel(symbol: string) {
+    public getChartAxisLabel(symbol: string): string {
         // 1. calculated param ?
         if (this.calculatedParameter && this.calculatedParameter.symbol === symbol) {
             return this.calculatedParameterHeader;
@@ -104,7 +104,16 @@ export class VarResults extends CalculatedParamResults implements PlottableData
                 return this.variableParamHeaders[i];
             }
         }
-        // 3. Result element ?
+        // 3. Result element
+        return this.expandLabelFromSymbol(symbol);
+
+    }
+
+    /**
+     * Returns the translated name of the given symbol (usually an extraResult) with
+     * its unit, but without the symbol itself
+     */
+    public expandLabelFromSymbol(symbol: string): string {
         // calculator type for translation
         const sn = this.result.sourceNub;
         let ct = sn.calcType;
-- 
GitLab


From 2cadfcac11efb57c34b9864bf689fc8e0b7bf650 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 27 May 2019 15:34:01 +0200
Subject: [PATCH 9/9] =?UTF-8?q?Graphiques:=20am=C3=A9lioration=20des=20inf?=
 =?UTF-8?q?obulles=20pour=20les=20param=C3=A8tres=20multivari=C3=A9s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../results-graph/results-graph.component.ts  | 40 +++++++++++++++++--
 src/app/results/plottable-data.ts             |  6 +++
 src/app/results/plottable-pab-results.ts      |  5 +++
 src/app/results/var-results.ts                | 10 +++++
 4 files changed, 57 insertions(+), 4 deletions(-)

diff --git a/src/app/components/results-graph/results-graph.component.ts b/src/app/components/results-graph/results-graph.component.ts
index 9cc50d8e7..5cc0a4590 100644
--- a/src/app/components/results-graph/results-graph.component.ts
+++ b/src/app/components/results-graph/results-graph.component.ts
@@ -195,10 +195,26 @@ export class ResultsGraphComponent extends ResultsComponent implements AfterCont
                 }
             }]
         };
+        const that = this;
         this.graph_options["tooltips"] = {
+            displayColors: false,
             callbacks: {
-                label: function(tooltipItem, data) {
-                    return Number(tooltipItem.yLabel).toFixed(nDigits);
+                title: (tooltipItems, data) => {
+                    return this.chartY + " = " + Number(tooltipItems[0].yLabel).toFixed(nDigits);
+                },
+                label: (tooltipItem, data) => {
+                    const lines: string[] = [];
+                    for (const v of that._results.getVariatingParametersSymbols()) {
+                        const series = that._results.getValuesSeries(v);
+                        const line = v + " = " + series[tooltipItem.index].toFixed(nDigits);
+                        if (v === this.chartX) {
+                            lines.unshift("");
+                            lines.unshift(line);
+                        } else {
+                            lines.push(line);
+                        }
+                    }
+                    return lines;
                 }
             }
         };
@@ -252,10 +268,26 @@ export class ResultsGraphComponent extends ResultsComponent implements AfterCont
                 }
             }]
         };
+        const that = this;
         this.graph_options["tooltips"] = {
+            displayColors: false,
             callbacks: {
-                label: function(tooltipItem, data) {
-                    return "(" + Number(tooltipItem.xLabel).toFixed(nDigits) + ", " + Number(tooltipItem.yLabel).toFixed(nDigits) + ")";
+                title: (tooltipItems, data) => {
+                    return this.chartY + " = " + Number(tooltipItems[0].yLabel).toFixed(nDigits);
+                },
+                label: (tooltipItem, data) => {
+                    const lines: string[] = [];
+                    for (const v of that._results.getVariatingParametersSymbols()) {
+                        const series = that._results.getValuesSeries(v);
+                        const line = v + " = " + series[tooltipItem.index].toFixed(nDigits);
+                        if (v === this.chartX) {
+                            lines.unshift("");
+                            lines.unshift(line);
+                        } else {
+                            lines.push(line);
+                        }
+                    }
+                    return lines;
                 }
             }
         };
diff --git a/src/app/results/plottable-data.ts b/src/app/results/plottable-data.ts
index d750529b7..a5493b94b 100644
--- a/src/app/results/plottable-data.ts
+++ b/src/app/results/plottable-data.ts
@@ -33,4 +33,10 @@ export interface PlottableData {
      * @param symbol parameter / result symbol (ex: "Q")
      */
     getValuesSeries(symbol: string): any[];
+
+    /**
+     * Returns the list of variating parameters
+     * (used by tooltip functions)
+     */
+    getVariatingParametersSymbols(): string[];
 }
diff --git a/src/app/results/plottable-pab-results.ts b/src/app/results/plottable-pab-results.ts
index b8bfe90c9..27e5685d9 100644
--- a/src/app/results/plottable-pab-results.ts
+++ b/src/app/results/plottable-pab-results.ts
@@ -45,6 +45,11 @@ export class PlottablePabResults implements PlottableData {
         return this.pabResults.columns;
     }
 
+    // just to implement interface
+    public getVariatingParametersSymbols(): string[] {
+        return [];
+    }
+
     /**
      * Returns the series of values for the required symbol
      * @param symbol parameter / result symbol (ex: "Q")
diff --git a/src/app/results/var-results.ts b/src/app/results/var-results.ts
index 95898befc..b01195b15 100644
--- a/src/app/results/var-results.ts
+++ b/src/app/results/var-results.ts
@@ -176,6 +176,16 @@ export class VarResults extends CalculatedParamResults implements PlottableData
         return res;
     }
 
+    /**
+     * Returns the list of variating parameters
+     * (used by tooltip functions)
+     */
+    public getVariatingParametersSymbols(): string[] {
+        return this._variatedParams.map((vp) => {
+            return vp.symbol;
+        });
+    }
+
     public update(displaySymbol: boolean) {
         if (this._variableParamHeaders.length === 0) {
             this._variableParamHeaders = this._variatedParams.map((v) => {
-- 
GitLab