From 36dc7f5de6edf1696a8d4f339ebbf92511a2b6b7 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Fri, 12 Apr 2019 17:52:08 +0200
Subject: [PATCH 1/6] =?UTF-8?q?Fix=20#187=20:=20Section=20param=C3=A9tr?=
 =?UTF-8?q?=C3=A9e:=20varier=20un=20param=C3=A8tre=20fait=20=C3=A9chouer?=
 =?UTF-8?q?=20le=20calcul?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../section-param/section-param.config.json   | 122 -----------------
 .../fixedvar-results/var-results.component.ts |   9 +-
 .../results-graph/results-graph.component.ts  |   2 +-
 .../definition/concrete/form-courbe-remous.ts |   3 +
 .../concrete/form-lechapt-calmon.ts           |  10 +-
 .../concrete/form-parallel-structures.ts      |   3 +
 .../concrete/form-regime-uniforme.ts          |   4 -
 .../concrete/form-section-parametree.ts       |  18 ++-
 .../definition/form-compute-fixedvar.ts       |   6 +-
 .../form-compute-section-parametree.ts        | 129 +++---------------
 src/app/formulaire/definition/form-compute.ts |   1 -
 .../definition/form-result-section.ts         |   9 +-
 src/app/results/var-results.ts                |  47 ++++---
 13 files changed, 75 insertions(+), 288 deletions(-)

diff --git a/src/app/calculators/section-param/section-param.config.json b/src/app/calculators/section-param/section-param.config.json
index 9268cc7e3..23d9f8f39 100644
--- a/src/app/calculators/section-param/section-param.config.json
+++ b/src/app/calculators/section-param/section-param.config.json
@@ -150,128 +150,6 @@
             }
         ]
     },
-    {
-        "id": "fs_computed_var",
-        "type": "fieldset",
-        "dep_exist": [
-            {
-                "refid": "LargeurFond",
-                "cond": "isvar"
-            },
-            {
-                "refid": "Fruit",
-                "cond": "isvar"
-            },
-            {
-                "refid": "D",
-                "cond": "isvar"
-            },
-            {
-                "refid": "k",
-                "cond": "isvar"
-            },
-            {
-                "refid": "LargeurBerge",
-                "cond": "isvar"
-            },
-            {
-                "refid": "Ks",
-                "cond": "isvar"
-            },
-            {
-                "refid": "If",
-                "cond": "isvar"
-            },
-            {
-                "refid": "YB",
-                "cond": "isvar"
-            },
-            {
-                "refid": "Q",
-                "cond": "isvar"
-            },
-            {
-                "refid": "Y",
-                "cond": "isvar"
-            }
-        ],
-        "fields": [
-            {
-                "id": "select_target",
-                "type": "select",
-                "select": [
-                    {
-                        "id": "select_target_Hs",
-                        "value": "Hs"
-                    },
-                    {
-                        "id": "select_target_Hsc",
-                        "value": "Hsc"
-                    },
-                    {
-                        "id": "select_target_B",
-                        "value": "B"
-                    },
-                    {
-                        "id": "select_target_P",
-                        "value": "P"
-                    },
-                    {
-                        "id": "select_target_S",
-                        "value": "S"
-                    },
-                    {
-                        "id": "select_target_R",
-                        "value": "R"
-                    },
-                    {
-                        "id": "select_target_V",
-                        "value": "V"
-                    },
-                    {
-                        "id": "select_target_Fr",
-                        "value": "Fr"
-                    },
-                    {
-                        "id": "select_target_Yc",
-                        "value": "Yc"
-                    },
-                    {
-                        "id": "select_target_Yn",
-                        "value": "Yn"
-                    },
-                    {
-                        "id": "select_target_Yf",
-                        "value": "Yf"
-                    },
-                    {
-                        "id": "select_target_Yt",
-                        "value": "Yt"
-                    },
-                    {
-                        "id": "select_target_Yco",
-                        "value": "Yco"
-                    },
-                    {
-                        "id": "select_target_J",
-                        "value": "J"
-                    },
-                    {
-                        "id": "select_target_I-J",
-                        "value": "I-J"
-                    },
-                    {
-                        "id": "select_target_Imp",
-                        "value": "Imp"
-                    },
-                    {
-                        "id": "select_target_Tau0",
-                        "value": "Tau0"
-                    }
-                ]
-            }
-        ]
-    },
     {
         "type": "options",
         "defaultNodeType": "SectionRectangle",
diff --git a/src/app/components/fixedvar-results/var-results.component.ts b/src/app/components/fixedvar-results/var-results.component.ts
index 824c6a76c..926e5b2a7 100644
--- a/src/app/components/fixedvar-results/var-results.component.ts
+++ b/src/app/components/fixedvar-results/var-results.component.ts
@@ -51,7 +51,10 @@ export class VarResultsComponent {
             }
 
             this._headers.push(this._varResults.variableParamHeader);
-            this._headers.push(this._varResults.calculatedParameterHeader);
+            if (this._varResults.calculatedParameterHeader) {
+                this._headers.push(this._varResults.calculatedParameterHeader);
+            }
+
             this._headers = this._headers.concat(this._varResults.extraResultHeaders);
         }
     }
@@ -82,7 +85,9 @@ export class VarResultsComponent {
                     const list = [ r.param ];
 
                     // 2. result
-                    list.push(re.vCalc.toFixed(nDigits));
+                    if (re.vCalc) { // sometimes does no exist (ex: Section Parametree)
+                        list.push(re.vCalc.toFixed(nDigits));
+                    }
 
                     // 3. extra results
                     for (const erk of this._varResults.extraResultKeys) {
diff --git a/src/app/components/results-graph/results-graph.component.ts b/src/app/components/results-graph/results-graph.component.ts
index ec43b3499..13757e3bd 100644
--- a/src/app/components/results-graph/results-graph.component.ts
+++ b/src/app/components/results-graph/results-graph.component.ts
@@ -99,7 +99,7 @@ export class ResultsGraphComponent implements AfterContentInit, Observer {
      */
     public getChartAxisLabel(symbol: string) {
         // 1. calculated param ?
-        if (this._results.calculatedParameter.symbol === symbol) {
+        if (this._results.calculatedParameter && this._results.calculatedParameter.symbol === symbol) {
             return this._results.calculatedParameterHeader;
         } else
         // 2. variated param ?
diff --git a/src/app/formulaire/definition/concrete/form-courbe-remous.ts b/src/app/formulaire/definition/concrete/form-courbe-remous.ts
index 99be68efb..6306ccb1e 100644
--- a/src/app/formulaire/definition/concrete/form-courbe-remous.ts
+++ b/src/app/formulaire/definition/concrete/form-courbe-remous.ts
@@ -19,6 +19,9 @@ export class FormulaireCourbeRemous extends FormulaireBase {
         super();
         this._formSection = new FormDefSection(this);
         this._formResult = new FormResultRemous(this);
+
+        // remove obsolete observer set by super()
+        this.removeObserver(this._formCompute);
         this._formCompute = new FormComputeCourbeRemous(this, this._formSection, (this._formResult as FormResultRemous));
         // default properties
         this._props["methodeResolution"] = MethodeResolution.Trapezes;
diff --git a/src/app/formulaire/definition/concrete/form-lechapt-calmon.ts b/src/app/formulaire/definition/concrete/form-lechapt-calmon.ts
index db2991206..524994ec4 100644
--- a/src/app/formulaire/definition/concrete/form-lechapt-calmon.ts
+++ b/src/app/formulaire/definition/concrete/form-lechapt-calmon.ts
@@ -2,22 +2,14 @@ import { Observer } from "jalhyd";
 import { SelectField } from "../../select-field";
 import { FormulaireBase } from "./form-base";
 import { NgParamInputComponent } from "../../../components/ngparam-input/ngparam-input.component";
-import { FormResultFixedVar } from "../form-result-fixedvar";
-import { FormComputeFixedVar } from "../form-compute-fixedvar";
 
 export class FormulaireLechaptCalmon extends FormulaireBase implements Observer {
 
-    constructor() {
-        super();
-        this._formResult = new FormResultFixedVar(this, false);
-        this._formCompute = new FormComputeFixedVar(this, (this._formResult as FormResultFixedVar));
-    }
-
     protected completeParse(json: {}) {
         super.completeParse(json);
         // abonnement au changement de valeur du select de matériau
         this.getFormulaireNodeById("select_material").addObserver(this);
-        // abonnement au changement de valeur de l'un dex trois champs affectés par le changement de matériau
+        // abonnement au changement de valeur de l'un des trois champs affectés par le changement de matériau
         this.getParamFromSymbol("L").addObserver(this);
         this.getParamFromSymbol("M").addObserver(this);
         this.getParamFromSymbol("N").addObserver(this);
diff --git a/src/app/formulaire/definition/concrete/form-parallel-structures.ts b/src/app/formulaire/definition/concrete/form-parallel-structures.ts
index ec840a970..09e007bb6 100644
--- a/src/app/formulaire/definition/concrete/form-parallel-structures.ts
+++ b/src/app/formulaire/definition/concrete/form-parallel-structures.ts
@@ -24,6 +24,9 @@ export class FormulaireParallelStructure extends FormulaireBase {
         super();
         this._formResult = new FormResultFixedVar(this, false);
         this._formParallelStruct = new FormDefParallelStructures();
+
+        // remove obsolete observer set by super()
+        this.removeObserver(this._formCompute);
         this._formCompute = new FormComputeParallelStructures(this, this._formParallelStruct, (this._formResult as FormResultFixedVar));
     }
 
diff --git a/src/app/formulaire/definition/concrete/form-regime-uniforme.ts b/src/app/formulaire/definition/concrete/form-regime-uniforme.ts
index 3d846e31d..68ca39d99 100644
--- a/src/app/formulaire/definition/concrete/form-regime-uniforme.ts
+++ b/src/app/formulaire/definition/concrete/form-regime-uniforme.ts
@@ -1,8 +1,6 @@
 import { IObservable, Observer } from "jalhyd";
-import { FormResultFixedVar } from "../form-result-fixedvar";
 import { FormDefSection } from "../form-def-section";
 import { FieldSet } from "../../fieldset";
-import { FormComputeFixedVar } from "../form-compute-fixedvar";
 import { FormulaireBase } from "./form-base";
 
 export class FormulaireRegimeUniforme extends FormulaireBase implements Observer {
@@ -12,8 +10,6 @@ export class FormulaireRegimeUniforme extends FormulaireBase implements Observer
     constructor() {
         super();
         this._formSection = new FormDefSection(this);
-        this._formResult = new FormResultFixedVar(this, true);
-        this._formCompute = new FormComputeFixedVar(this, (this._formResult as FormResultFixedVar));
     }
 
     protected parseOptions(json: {}) {
diff --git a/src/app/formulaire/definition/concrete/form-section-parametree.ts b/src/app/formulaire/definition/concrete/form-section-parametree.ts
index 1a3ef62b1..48300e727 100644
--- a/src/app/formulaire/definition/concrete/form-section-parametree.ts
+++ b/src/app/formulaire/definition/concrete/form-section-parametree.ts
@@ -1,4 +1,4 @@
-import { IObservable } from "jalhyd";
+import { IObservable, Nub } from "jalhyd";
 
 import { FormResultSection } from "../form-result-section";
 import { FormDefSection } from "../form-def-section";
@@ -13,8 +13,12 @@ export class FormulaireSectionParametree extends FormulaireBase {
     constructor() {
         super();
         this._formSection = new FormDefSection(this);
-        this._formResult = new FormResultSection(this, this._formSection);
+        this._formResult = new FormResultSection(this);
+
+        // remove obsolete observer set by super()
+        this.removeObserver(this._formCompute);
         this._formCompute = new FormComputeSectionParametree(this, this._formSection, (this._formResult as FormResultSection));
+
         // default properties
         this._props["varCalc"] = "Hs";
     }
@@ -32,7 +36,15 @@ export class FormulaireSectionParametree extends FormulaireBase {
 
     update(sender: IObservable, data: any) {
 
-        super.update(sender, data);
+        // super.update(sender, data);
+        if (sender instanceof Nub) {
+            switch (data.action) {
+                case "resultUpdated":
+                    // forward Nub results update notification to FormCompute objects
+                    this.notifyNubResultUpdated(sender);
+                    break;
+            }
+        }
 
         // changement de propriété du FieldSet contenant le select de choix du type de section
         if (sender instanceof FieldSet && data.action === "propertyChange") {
diff --git a/src/app/formulaire/definition/form-compute-fixedvar.ts b/src/app/formulaire/definition/form-compute-fixedvar.ts
index 205e9e9dc..69995f72b 100644
--- a/src/app/formulaire/definition/form-compute-fixedvar.ts
+++ b/src/app/formulaire/definition/form-compute-fixedvar.ts
@@ -43,11 +43,7 @@ export class FormComputeFixedVar extends FormCompute {
     }
 
     protected compute() {
-        const nub: Nub = this._formBase.currentNub;
-        const computedParam: NgParameter = this.getComputedParameter();
-
-        const res: Result = this.runNubCalc(nub);
-
+        this.runNubCalc(this._formBase.currentNub);
         this.reaffectResultComponents();
     }
 
diff --git a/src/app/formulaire/definition/form-compute-section-parametree.ts b/src/app/formulaire/definition/form-compute-section-parametree.ts
index 4c78233a0..d30352a57 100644
--- a/src/app/formulaire/definition/form-compute-section-parametree.ts
+++ b/src/app/formulaire/definition/form-compute-section-parametree.ts
@@ -1,20 +1,15 @@
-import { SectionParametree, acSection, Result, ParamDomain, ParamDefinition, ParamDomainValue } from "jalhyd";
+import { SectionParametree, acSection, Result, ParamDefinition, Nub } from "jalhyd";
 
 import { FormCompute } from "./form-compute";
-import { NgParameter } from "../ngparam";
-import { FormResult } from "./form-result";
 import { FormDefSection } from "./form-def-section";
 import { FormResultSection } from "./form-result-section";
 import { VarResults } from "../../results/var-results";
 import { SectionResults } from "../../results/section-results";
 import { FormulaireDefinition } from "./form-definition";
-import { FormulaireNode } from "../formulaire-node";
 
 export class FormComputeSectionParametree extends FormCompute {
 
-    private tmpResult: Result;
-
-    constructor(formBase: FormulaireDefinition, private _formSection: FormDefSection, formResult: FormResult) {
+    constructor(formBase: FormulaireDefinition, private _formSection: FormDefSection, formResult: FormResultSection) {
         super(formBase, formResult);
     }
 
@@ -30,119 +25,33 @@ export class FormComputeSectionParametree extends FormCompute {
         return this._formSectionResult.sectionResults;
     }
 
-    /**
-     * calcul de la section paramétrée dans le cas d'un paramètre à varier
-     * @param varParam paramètre à varier
-     */
-    private doComputeSectionVar(varParam: NgParameter) {
-
-        this._formSectionResult.addSectionFixedParameters(false);
-
-        // paramètre à calculer en fonction du paramètre à varier
-        const computedParamInfo = this._formSection.getSectionComputedParam();
-
-        const sectNub: SectionParametree = this._formBase.currentNub as SectionParametree;
-        const sect: acSection = sectNub.section;
-
-        this._sectionResults.section = sect;
-
-        this._varResults.variatedParameter = varParam;
-
-        const computedParam: NgParameter = this.createParameter(computedParamInfo.symbol, this._formBase);
-        this._varResults.calculatedParameter = computedParam;
-
-        this._varResults.result = this.runNubCalc(sectNub);
-        this._varResults.update(false);
-    }
-
     protected compute() {
-        const varParam = this._formSection.getSectionVariatedParameter();
-        if (varParam !== undefined) {
-            this.doComputeSectionVar(varParam);
-            return;
-        }
-
-        const sectNub: SectionParametree = this._formBase.currentNub as SectionParametree;
-
-        this.tmpResult = sectNub.CalcSerie(
-            undefined, // valeur initiale, non utilisée dans ce cas
-            undefined // variable à calculer, non utilisée
-        );
-
+        this.runNubCalc(this._formBase.currentNub);
         this.reaffectResultComponents();
     }
 
+    protected runNubCalc(nub: Nub, computedParam?: ParamDefinition): Result {
+        return nub.CalcSerie();
+    }
+
     protected reaffectResultComponents() {
         const sectNub: SectionParametree = this._formBase.currentNub as SectionParametree;
         const sect: acSection = sectNub.section;
         this._sectionResults.section = sect;
 
-        // résultats de section (avec le graphique de section)
-        this._sectionResults.result = this.tmpResult;
-
-        // résultats complémentaires des paramètres fixés
-        this._formSectionResult.addSectionFixedParameters(false);
-        this._formSectionResult.fixedResults.result = this.tmpResult;
-    }
-
-    /**
-     *
-     * @param calcType crée un NgParameter n'appartenant pas à un ComputeNode
-     * @param symbol symbole du paramètre à créer
-     */
-    private createParameter(symbol: string, parent: FormulaireNode): NgParameter {
-        let p: NgParameter;
-        const dom = new ParamDomain(ParamDomainValue.POS_NULL);
-        p = new NgParameter(new ParamDefinition(null, symbol, dom), parent);
-        p.confId = symbol;
-
-        switch (symbol) {
-            case "Hs":
-            case "Hsc":
-            case "B":
-            case "P":
-            case "R":
-            case "Yc":
-            case "Yn":
-            case "Yf":
-            case "Yt":
-            case "Yco":
-            case "J":
-                p.unit = "m";
-                break;
-
-            case "S":
-                p.unit = "m2";
-                break;
-
-            case "V":
-                p.unit = "m/s";
-                break;
-
-            case "I-J":
-                p.unit = "m/m";
-                break;
-
-            case "Fr":
-                p.unit = "";
-                break;
-
-            case "Imp":
-                p.unit = "N";
-                break;
-
-            case "Tau0":
-                p.unit = "Pa";
-                break;
-
-            case "Pr":
-                break;
-
-            default:
-                throw new Error(`ParamService.createParameter() : symbole ${symbol} non pris en charge`);
+        const varParam = this._formSection.getSectionVariatedParameter();
+        if (varParam) {
+            // résultats variés avec tous les résultats complémentaires
+            this._varResults.variatedParameter = varParam;
+            this._varResults.result = sectNub.result;
+            this._varResults.update(false);
+        } else {
+            // résultats de section (avec le graphique de section)
+            this._sectionResults.result = sectNub.result;
+            // résultats complémentaires des paramètres fixés
+            this._formSectionResult.addSectionFixedParameters(false);
+            this._formSectionResult.fixedResults.result = sectNub.result;
         }
-        p.updateLocalisation(this._formBase.specificLocalisation);
 
-        return p;
     }
 }
diff --git a/src/app/formulaire/definition/form-compute.ts b/src/app/formulaire/definition/form-compute.ts
index 5f077f0c2..64dd70555 100644
--- a/src/app/formulaire/definition/form-compute.ts
+++ b/src/app/formulaire/definition/form-compute.ts
@@ -2,7 +2,6 @@ import { Nub, Result, ParamDomainValue, Observer, ParamDefinition } from "jalhyd
 
 import { FormResult } from "./form-result";
 import { FormulaireDefinition } from "./form-definition";
-import { NgParameter } from "../ngparam";
 
 export abstract class FormCompute implements Observer {
 
diff --git a/src/app/formulaire/definition/form-result-section.ts b/src/app/formulaire/definition/form-result-section.ts
index 868b1de8e..836a95edf 100644
--- a/src/app/formulaire/definition/form-result-section.ts
+++ b/src/app/formulaire/definition/form-result-section.ts
@@ -1,7 +1,5 @@
 import { SectionResults } from "../../results/section-results";
-import { ResultElement } from "jalhyd";
-import { ParamRadioConfig, NgParameter } from "../ngparam";
-import { FormDefSection } from "./form-def-section";
+import { ParamRadioConfig } from "../ngparam";
 import { FixedResults } from "../../results/fixed-results";
 import { VarResults } from "../../results/var-results";
 import { FormResult } from "./form-result";
@@ -11,8 +9,6 @@ import { CalculatorResults } from "../../results/calculator-results";
 export class FormResultSection extends FormResult {
     private _formBase: FormulaireDefinition;
 
-    private _formSection: FormDefSection;
-
     /**
      * résultats fixes/variables
      */
@@ -24,13 +20,12 @@ export class FormResultSection extends FormResult {
      */
     private _sectionResults: SectionResults;
 
-    constructor(base: FormulaireDefinition, formSection: FormDefSection) {
+    constructor(base: FormulaireDefinition) {
         super();
         this._formBase = base;
         this._fixedResults = new FixedResults();
         this._varResults = new VarResults();
         this._sectionResults = new SectionResults();
-        this._formSection = formSection;
     }
 
     public get fixedResults() {
diff --git a/src/app/results/var-results.ts b/src/app/results/var-results.ts
index 51208365d..da0be9d5f 100644
--- a/src/app/results/var-results.ts
+++ b/src/app/results/var-results.ts
@@ -39,7 +39,7 @@ export class VarResults extends CalculatedParamResults {
     /**
      * clés des résultats complémentaires
      */
-    private _extraResultKeys: string[];
+    public extraResultKeys: string[];
 
     /**
      * entête des colonnes des résultats supplémentaires
@@ -74,7 +74,7 @@ export class VarResults extends CalculatedParamResults {
         super.reset();
         this._variableParamHeader = undefined;
         this._extraResultHeaders = [];
-        this._extraResultKeys = [];
+        this.extraResultKeys = [];
         this._yValues = [];
     }
 
@@ -103,14 +103,6 @@ export class VarResults extends CalculatedParamResults {
         return this._extraResultHeaders;
     }
 
-    public get extraResultKeys() {
-        return this._extraResultKeys;
-    }
-
-    public set extraResultKeys(k: string[]) {
-        this._extraResultKeys = k;
-    }
-
     /**
      * Returns the series of values for the required variated parameter / result element
      * @param symbol parameter / result symbol (ex: "Q")
@@ -118,7 +110,7 @@ export class VarResults extends CalculatedParamResults {
     public getValuesSeries(symbol: string) {
         const series = [];
         // 1. calculated param ?
-        if (this._calculatedParam.symbol === symbol) {
+        if (this._calculatedParam && this._calculatedParam.symbol === symbol) {
             if (this.result) {
                 for (const r of this.result.resultElements) {
                     series.push(r.vCalc);
@@ -149,9 +141,11 @@ export class VarResults extends CalculatedParamResults {
      * as X or Y chart axis
      * @param except exclude this symbol from the list
      */
-    public getAvailableChartAxis() {
-        const res = [];
-        res.push(this.calculatedParameter.symbol);
+    public getAvailableChartAxis(): string[] {
+        const res: string[] = [];
+        if (this.calculatedParameter) {
+            res.push(this.calculatedParameter.symbol);
+        }
         res.push(this.variatedParameter.symbol);
         for (const erk of this.extraResultKeys) {
             res.push(erk);
@@ -164,31 +158,36 @@ export class VarResults extends CalculatedParamResults {
             this._variableParamHeader = CalculatorResults.paramLabel(this.variatedParameter, displaySymbol);
         }
 
-        // set axis selectors values the first time
-        this.chartX = this.chartX || this.variatedParameter.symbol;
-        this.chartY = this.chartY || this.calculatedParameter.symbol;
-
         // valeurs du paramètre à calculer
         for (const r of this.result.resultElements) {
             this._yValues.push(r.vCalc);
         }
 
         // clés des résultats supplémentaires
-
-        if (this._extraResultKeys.length === 0) {
+        if (this.extraResultKeys.length === 0) {
             for (const re of this.result.resultElements) { // re:ResultElement
                 for (const erk in re.extraResults) {
-                    if (!this._extraResultKeys.includes(erk)) {
-                        this._extraResultKeys.push(erk);
+                    if (!this.extraResultKeys.includes(erk)) {
+                        this.extraResultKeys.push(erk);
                     }
                 }
             }
         }
 
-        // entêtes des résultats supplémentaires
+        // set axis selectors values the first time
+        let defaultY = this.chartY;
+        if (this.calculatedParameter) {
+            defaultY = this.calculatedParameter.symbol;
+        } else if (this.extraResultKeys.length > 0) {
+            defaultY = this.extraResultKeys[0];
+        }
+        this.chartX = this.chartX || this.variatedParameter.symbol;
+        this.chartY = defaultY;
 
+        // entêtes des résultats supplémentaires
         const intlService = ServiceFactory.instance.i18nService;
-        for (const k of this._extraResultKeys) {
+        this._extraResultHeaders = [];
+        for (const k of this.extraResultKeys) {
             this._extraResultHeaders.push(intlService.getExtraResLabel(k));
         }
 
-- 
GitLab


From acbb18c9d5ee02552c1bcbc0db6639f6185f3196 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Fri, 12 Apr 2019 17:53:36 +0200
Subject: [PATCH 2/6] =?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, 2 insertions(+), 1 deletion(-)

diff --git a/jalhyd_branch b/jalhyd_branch
index e9797aa3c..1d743538b 100644
--- a/jalhyd_branch
+++ b/jalhyd_branch
@@ -1 +1,2 @@
-26-ajout-de-la-calculette-passe-a-bassins-calcul-du-nombre-de-bassins
+75-section-parametree-calculer-systematiquement-toutes-les-variables-meme-avec-un-parametre-qui-varie
+
-- 
GitLab


From 147d6103a213b2883b44267f06c82dd8067e58fd Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 15 Apr 2019 11:21:36 +0200
Subject: [PATCH 3/6] =?UTF-8?q?Traduction=20de=20"language"=20dans=20le=20?=
 =?UTF-8?q?formulaire=20de=20param=C3=A8tres?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/app/components/app-setup/app-setup.component.html | 2 +-
 src/app/components/app-setup/app-setup.component.ts   | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/app/components/app-setup/app-setup.component.html b/src/app/components/app-setup/app-setup.component.html
index 448b38977..4bc1959f9 100644
--- a/src/app/components/app-setup/app-setup.component.html
+++ b/src/app/components/app-setup/app-setup.component.html
@@ -77,7 +77,7 @@
 
         <!-- langue -->
         <mat-form-field>
-            <mat-select placeholder="Language" [(value)]="currentLanguageCode" data-testid="language-select">
+            <mat-select [placeholder]="uitextLanguage" [(value)]="currentLanguageCode" data-testid="language-select">
                 <mat-option *ngFor="let l of availableLanguages | keyvalue" [value]="l.key">
                     {{ l.value }}
                 </mat-option>
diff --git a/src/app/components/app-setup/app-setup.component.ts b/src/app/components/app-setup/app-setup.component.ts
index 87b96145b..42acbc4eb 100644
--- a/src/app/components/app-setup/app-setup.component.ts
+++ b/src/app/components/app-setup/app-setup.component.ts
@@ -56,6 +56,10 @@ export class ApplicationSetupComponent extends BaseComponent implements Observer
         return this.intlService.localizeText("INFO_SETUP_TITLE");
     }
 
+    public get uitextLanguage(): string {
+        return this.intlService.localizeText("INFO_SETUP_LANGUAGE");
+    }
+
     public get uitextDisplayAccuracy(): string {
         return this.intlService.localizeText("INFO_SETUP_PRECISION_AFFICHAGE");
     }
-- 
GitLab


From 6950d74d5324aa5d25b65f7ab8a3aac3c52ab277 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 15 Apr 2019 11:22:00 +0200
Subject: [PATCH 4/6] Fix #161

---
 .../calculator-list.component.html            |  23 ++++++++++++++++++
 .../calculator-list.component.scss            |   9 ++++++-
 .../calculator-list.component.ts              |  18 +++++++++++++-
 src/assets/images/logo_afb_m.jpg              | Bin 0 -> 17558 bytes
 src/assets/images/logo_irstea_m.jpg           | Bin 0 -> 41478 bytes
 src/locale/messages.en.json                   |   3 +++
 src/locale/messages.fr.json                   |   3 +++
 7 files changed, 54 insertions(+), 2 deletions(-)
 create mode 100644 src/assets/images/logo_afb_m.jpg
 create mode 100644 src/assets/images/logo_irstea_m.jpg

diff --git a/src/app/components/calculator-list/calculator-list.component.html b/src/app/components/calculator-list/calculator-list.component.html
index 25c88f025..2f9231bab 100644
--- a/src/app/components/calculator-list/calculator-list.component.html
+++ b/src/app/components/calculator-list/calculator-list.component.html
@@ -1,5 +1,28 @@
 <div class="container" fxLayout="row wrap" fxLayoutAlign="space-evenly stretch">
 
+    <mat-card class="welcome-card" *ngIf="nbOpenCalculators === 0">
+
+        <mat-card-header>
+            <!-- <img mat-card-avatar src="https://s3.amazonaws.com/pix.iemoji.com/images/emoji/apple/ios-12/256/water-wave.png"> -->
+            <mat-card-title>{{ uitextWelcomeTitle }}</mat-card-title>
+            <mat-card-subtitle>{{ uitextWelcomeSubtitle }}</mat-card-subtitle>
+        </mat-card-header>
+
+        <mat-card-content [innerHTML]="uitextWelcomeContent">
+        </mat-card-content>
+
+        <img mat-card-image src="../../assets/images/logo_irstea_m.jpg">
+
+        <img mat-card-image src="../../assets/images/logo_afb_m.jpg">
+
+        <mat-card-actions>
+            <div class="container" fxLayout="column" fxLayoutAlign="left" fxLayoutGap="10px">
+                <button mat-raised-button color="accent" class="theme-calculator"></button>
+            </div>
+        </mat-card-actions>
+
+    </mat-card>
+
     <mat-card *ngFor="let theme of items" class="compute-nodes-theme">
 
         <mat-card-header>
diff --git a/src/app/components/calculator-list/calculator-list.component.scss b/src/app/components/calculator-list/calculator-list.component.scss
index 460061c0f..c0edcccd7 100644
--- a/src/app/components/calculator-list/calculator-list.component.scss
+++ b/src/app/components/calculator-list/calculator-list.component.scss
@@ -1,4 +1,4 @@
-mat-card.compute-nodes-theme {
+mat-card.compute-nodes-theme, mat-card.welcome-card {
     width: 300px;
     margin: 1em;
 
@@ -47,3 +47,10 @@ mat-card.compute-nodes-theme {
         }
     }
 }
+
+mat-card.welcome-card {
+
+    .mat-card-content {
+        line-height: 1.4em;
+    }
+}
diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts
index b2c4cdb66..1e13c7ec4 100644
--- a/src/app/components/calculator-list/calculator-list.component.ts
+++ b/src/app/components/calculator-list/calculator-list.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit } from "@angular/core";
 import { Router } from "@angular/router";
 
-import { CalculatorType, EnumEx } from "jalhyd";
+import { CalculatorType, EnumEx, Session } from "jalhyd";
 
 import { FormulaireDefinition } from "../../formulaire/definition/form-definition";
 import { ServiceFactory } from "../../services/service-factory";
@@ -108,10 +108,26 @@ export class CalculatorListComponent implements OnInit {
         });
     }
 
+    public get nbOpenCalculators() {
+        return Session.getInstance().getNumberOfNubs();
+    }
+
     public get items() {
         return this._items;
     }
 
+    public get uitextWelcomeTitle() {
+        return "Cassiopée";
+    }
+
+    public get uitextWelcomeSubtitle() {
+        return ServiceFactory.instance.i18nService.localizeText("INFO_WELCOME_SUBTITLE");
+    }
+
+    public get uitextWelcomeContent() {
+        return ServiceFactory.instance.i18nService.localizeText("INFO_WELCOME_CONTENT");
+    }
+
     // interface Observer
 
     update(sender: any, data: any): void {
diff --git a/src/assets/images/logo_afb_m.jpg b/src/assets/images/logo_afb_m.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9c85a0b09163911cf49b2943941d0ba0a637fa90
GIT binary patch
literal 17558
zcmdqIWmF}-(=WQQ!QEYl!QBUU9UM09Fu1$J;O-3W?(VJ|8{FMtaQDmeyyyJadDlJb
z%9s1$X7}pOPSUlKbXBVAm&(V|#})uZT3kvT00ssIko^1sKHdS}MU=#ZROFR-NX(4s
zE$mFpNL-j1m`JFc9nEdbNTj4CNTe0SBuHGin5gMU?41p)%$?jx_((X};XYOYA^-?*
z@PDq)1o?SE!9YPlLPEhoLw|umfI~olhl7VlL_$MBL_$S^heyFeK}E;F#Kc5E#>T<I
zz(K>n#Q28@7{up0kWjEtP_P(?@Q4`yuhT~#02Kxh3>FIkh6(^j1%p5Z`xpQa0Kfp?
z5dVzzKj{nfXCJ}9VLof|Kg<8A{ZAbL009XG4)q24V+DW!@mYxifdT-4y(#@KE&eaE
z;J7`N?Pfj~;?ldISu@rcAyeo>np=A7cK)~aYrEEIneQC5)y&Flzb~AOV;o5@Zi`Y~
z=>%W*b**(MI;C=7rC-pj4W1*sKxqzCgIu>*Wgh@?>Au_h-Ha0NWxTz9`ZM79Ek!l&
zpv?D$b^j+&=SE~r7ovHL%YaM-^oDY_m}Rl89e~I{$*qkj^F6WCGG4q@!L^N5$m>qS
z)n=G7(yJ}aEN-ElqQ2g!($x(*y?nH|V7AjxW<IUtDv`r<#bmu6=#Hlo(LVN)OqzlB
zNIuwjW~=xC;5&F|bGVplCW>_V05l&NEut`TtNTxcgYH~uFPPO7m(r+*0=$puRo|tv
z9do}Xom817kO0U!fMgwR?4%3wi&@-bAp~woF2xa7TXA=0`%2MfoApX=S>Cy)7b1_&
z&sa^P8Cx-EL>YBi<97m)`4*n=-5SapWWnCEQxZ1aH>#W!wxq{0c>5wV&D}#Shx3c2
zwl<AV23~OMlaXzIb~Oo2I!7M~Mmo57j|vIh_upEdIhp}r)kLf|PyL5#e0Ho-nLzt<
z4VOuG)@mXS<H-V^x3g@AULuzB<rM3mwe^(Z4Q`|LNRcmH_mePJ+qIN-<}s4KNFB4C
zMp%_$tmRmI92Ap5-kg7}OOg2PR#Lb*NB)Zuzye8n+(TMf^Z}O-lwb(}=tz$dgj6@t
zmd5?ga-ux|#G%6T7*@;6r1#h%*hBrH`odI{o;#dt|IK~jczd%U{cy0vd@}t=AcFZt
zext5?xF^e*p+|&W6_hpH^NMcQnf-p*PqoEjTXSqRkC$=fwRH39oJRPqg=81Am>aT$
zyMwBZM(PxgIp1__>4jOMv#dj5K>&&#pBmqIOudIZa}<~JZ&x~DH_W@8h4H%-!wip`
zY9Wi}>)X9I^F2Ol^J@6XjoOZoQaaxhEP8t@&+mWqzN<{ir7NEme(3;tINL}O9SD8D
zRXgowRxWjP&vqHq+C8?GOQ)S*4{%@Uq}95ykg)Xpey11p`PJ~}4ucPG&utAnEIk)E
z0AMKFi^p1<3G#AqD^Aw7pu(cP7mNOimzkAc?kDRq@t-nbv%KQCS+DYV!d)=so6krY
z9natJ$<$WuXI!@&mYdA-7CIG-@(#rPmE5-+WqR1c+Yf|r^~2Lsl*Zl~t%(gYAsPa@
zZXrlbXHoCYgE1#I>in9SQ71O4S;EoQH%#ZB5@Yhe6WK3eIsdH~IwS|8#LDlVGU(m{
zr~g(5059y1mbqT)Ly>V9*C+q=7*0SoNK3#tp1a5POlQ=fE?N>w7*No63d*E|=ulmf
zu3Mp5W3=l2o`OV325><_Qj1eCU;y>;^Z;N`(fYKKdy)I(Q;Z`BA(|wR6gg=#7%K99
z2~NsKm;OjW)y>Q+?%M}-Qb1b;8qAITth8&p&aG*jtWtePtD{c}Rc-mfl121yNB?^#
z|2O}jKNmSV6u{@={JF+K!2J6F03e~jApl@sFi_Djp;6GWNZ8mpm=(xa^qD?aJ($nc
z5DW_Z1289G%fu0un2I2FiIvU+A=gwKDc<>;71Nnv1r>Fv={NGqM%zAJ-iWDOC}ye2
z0w%s!&vN+fNw^Pae>%eSUQ8&G@f%SKsk@$veV8;;=IkHlZcm>94M=Sy+*QPCM2K{x
zddTCdX)&E^=&Ab7=r#VCCvU}JP*i2)Da{)k&t&k+kA7`bkrYJ!RQ|N)M6}x4*oV&V
z>vx=7O=DH?cecI^AsKibS~f}Tr{6l^f<qO`y=^BVVecKsv~|0Z<YBlb+aHMOM-Yrf
z;T#t=I^;#EblP@Xoi}fZ^Jv1+>KY?iE8ac;2dB&;h;^9waEoZiXLL}9L#gH3>qS41
z)-BeAJ?a4dO;}atEkPr`Nl8bG%P``d&Zb@@<9NZa8d+N!9{`i1<Rx#2E@qdc`obtj
zN`to7Kc>ojlhyOnzxTm>+5ckJ5mw}lczcsAs?p4<wOQuTBoXwv#sT^GWEtA4-UfSm
z1CEfHarw2Hz$<;(=ZEu2@_8<vVP|{nlldaZK0Ej@O7Q5#nu(P+{u3iU+tT7av6OOE
z&6Rl{`#0+!Y{u7Y$^6}nkS8lb(2|dJ%r=FwP?D->8&>-s`{jYu(mv}u=*k};Jed^_
zy*HFqad(8>onAh8@bgMQHBsF~LNmHp+bYVbFH@6UeP4K1{0C|sKkAK;V&xK_x~=A;
zg~+^d-86N#GqMh@3Fdkh>UC{dnTGznPIp^vS+R>Myz_qXUXXp+_r-~_;j+vHc2!%C
z$CEbNVurb9CFAbE&VH>ZCw2Mt{o=#ed1+sSm8<4X%l(D^Jgv)^*eZ63x1eU`&Y07U
zyNbES?lvs(@z31GJMN9;cB!SW>qK?5v`5H>w+q^BgNeTcuXQkFox`U1TUSpIjI5Dv
zHD@+;=5s5}yeMm#gMRQ5HoDriV`6BRvchfpE!XS53yvpn@^CX59t2+N;hdv8YZC4t
zg|eb34i}F<7fb%Dy&xlRdZv773FsPXc>5L3$nD?OgMcN#W_jgXI_ZE;5o=>QC6zv4
zQu@BY{Z$6}R3fy)0Fdz)?gMb<cB*XAi`q5#=tNihWRV8S(g&U4n%(QhywmT}OY>Rf
z9tJlP$tS#JD^eXBBHBuE6R$Z7`;ZK=zZ(DSzpApvo%jIEYVYlum?zbcAg&nLo<Hk&
zY8XQF#+w;ScBMaQyS~12MIL+rj;rjbG=SOV1z0mdxg;XMWp_NLbPbNmaO<Ulh~+F=
z=Y?aTW8P)i4**(`YLaqpYPxCf;hroOghP>=o%mqKxvLZR9lBoOR-D!$jnibA%eIq*
zv=NI&Oe-x~Q%@iD5?l8a9@v3@hs;H>s1h0rhYu^{RE0;DemldR_K0g3WtnZxbvbD~
z=*$U2xs*&o01yD&)t79YWQUw+x#Jx~r|JCwtf8}zR*MkaGEe<~aO>T-I{5%xaC^l8
zo^d1Iv(E^B(_lf(S}(3Z>&x|Dw31D`|4_V}Bz7`hmwDf-6FGc5l4id>wN6o-1{pf?
z(i?!HyWV`v_97|XZ8Pf<vJUl}104wpe+A#Pd{b?b(^0LMbV{!}`k`kK^p=aRpK-_x
zMn<0XE0(9An_2t$3uT6cm0VxotQHUVIo<KuqMpe^<^Yxuyw<H4)HGe4ve<-EFy6Nn
zFpjV>M-(J->{%&J?|ZB9WKjC5*jtR0@$exxLud%1&kRjdl{=7F4*AYGqRJ@j@yT%=
zS`F&ZwgK**w~xW}j;~k{42t)NvM+}lYH!Z72j*M;(NN6*LF8x<AvU*BS4hV4chP|S
zB=*S)nIDJTcJk?29l{06I`th0Sh90Y%j*CU3@XV6|K}gFP5b#pMwExGec1QjevnMa
zc|?7GZlp$~cPkJkeh*bsK&=x~SZb*&^C(sC#t?1nq2W6Igl!1dvY$E9yOycaiL_uN
zs?N!qMIql0)0%tGN107reEj6!55T8-VfeJR!NI{k4Sz6j=zmoZ7&rg|6^$7Mos>mL
z5t4+A)c`}7oJmkbLErCR1@mce3xIt98njF^q_gc|dqy)CY-O>4NH`K)+Px+rp+w_X
z^bQ%K-UFU6-l7y#qnV4gvRcGk2A_pL_OnrOM_=2t3`BNpZ3ik-pK}_g(A#$7F#fXA
zc|(@<Z6FKTuYN)I|E-)dX_9=rC3lw8_1b60iZ-JKoevZ_{cLouHC`Ek%(U{NFL(AB
zE=A-!g5$|zNJux(?N5WFvH4C;SUxTThX9kD%r)>FV}6i4?wAgSe!^F11jpko0S=#v
z^wmbM@V#{Nos46br3uEtBsmxdEjQ?f?t2%x4|2^>c`Y;X6^+^K%fM^J&BFcr(g~&z
zD!$3M?<#}v?f_Pu8yR`Xj&=Eg>*@}2*TKBuY|Uu0YH=L%x?~gHE1T=N8#rosjfu-o
zW~iPFLvM)&+O{1F)k~Aonh2XfM5w`N4Ed5RAv*}1Fn!19l;^g&oaWz#_p1i*Q7%b~
zYu84~{&Cb+k<#9#T6zz#x9?YT`BvZVhzBai5E_P^4{tvJ;{{tMM(@i;m^=8rIAjXQ
z2^<UKlaG(#s|at8&?PuKD9B6z9t+AmeWFxCCIkQyB`Z5Rz=?z?2aG!vJvtR!A1M`_
z=&SSYm{SjdQ%@=(J24?U`lpldHHF@P_}L7qVt}0`@<3&kPJWrbUI^;PF2#7G#JJ-l
z8X37j$M^a1$+6!Olmv^$-ym2r>aFQU>(OgAnZUyWQRT9(0v8XNy0;rtI1mohDmuob
zHh__9I3Sf%v?Aq<F&3+Vzs=)fbNX)&R|GWrxiKmFaVKyb8V1W?$sP#4bL3@IploJ0
z+>i&S`Wr5ynWkkA4$mxdbyMEoGT_YU_cEQ{j61&dR9j<jEY+g<35?p2LtYDzmChQb
zo>`R1uTwnkq2pbt8kMi6fjVa9iy+Wn?)k!vuH^ULnehi+Ir^uF4EL9FrTziTk}V05
zrc>CuDV!KxWpH$(D0@1Q97UoIgG3<$CT~Cg)itqleoZpGRibr5JuiP&^ZO(<<<xMo
z-^r9azTsUYl^Of_k-6YhwQlH57bmGb1BKEFsp8^fbE{6y*4K~|-KZ|qPtqz?j&#EK
zCLv}(#PS_=jaAd+Qu?@=0mCOkLak4twgc5xK6+0PpHj$&3IKxy1A~Ny`T_y_uRjY8
z_;jgJq0rDtnNcu41yRW!lZ4Damz9k@uC`Z1d77MpNl;kd!0&SVU!es5FQIg@aE)&I
z!f*Mb;Xd#2sV-h9RC_9({>S)!_)efgD{2jh8`MZG0w&2j=XwEJ2AdicGgF|3isbU3
zm)>iX)a1XDUe%1T?C#WRXH!c<-FsA)Wr7$nzr#<4#~c(XS%Jml4&l~JYNe^^@IJCR
zp;#3r7L&GgkO~_{oG#f&tB7QNWN0mU;t!8pFj?7bLa|V%@PaV$lwM<4-F~K`#7Aui
zXoQznBg{Q$SRK|6{dzc!R7v@OcCS)gkDmHS&$5=>)SL;r&zsNI$7g8U$dBsGB8rf2
zatXQ*iBA*%MX=ebGXIr3)nxAti&2hn=$E^lx^<)A$}qN$t)j~Y)8(y-Rc6V3q+Q`0
zy)B5U<uyfXt|MDarGP87@XYi4QL$yc?Hd1;t}I=pZ95CO|C!!6GavQJxfn345!OC?
zO82_^`~kSqNbwcgyE0L_Z4~N(rYk)`TS{>;3fA1T;=>wGv+5^zaJCUj+cPC-p|{Eg
z@PQ(Y2<;5C=rby9>xkL0N_qABdPfx+Tv9WJagG+c*1WNsVn#}rJr!*UYZ_ii)zrz=
z8)42Q+M|-wQAKo8+vj&r)m8{DZQzC`z8lfW_cAkcXsB1*%l5Wzt2CX#E~NBcy<vsC
z%BP%{Ap<)uzP;Wu)m&?iKVk*7&$n%3FvkjD9h6RV2SsVWign2-m$?XK@muB1S*e;v
z3+<I@MgMsvU<x-3IF_VO8LPIO+7o;cp1L?`;$*UFW>Ia(e3c``VyQarRN#!%5apjK
znB*%|SK!fG0@3U*v`r8Q7J|pfEiqVuqI1~E?d(B_`Up!d+?BRXM4_iqX@8-%g2@6#
z{2zGc$~sHBh^)#^#8h0BVklNB>ZQqH>@+uxF?f2!Z~|k#Dl6eT*euykSG=`6Q<`cg
zryw}WijbQHv_kyJER1ULJ%_0ZQS*fO0Awo9ZX9*|0;;h^joTP%^vzh=8Z7x3HpFzK
z<jtF#y$txW=Y9at_g~5z_lgC8F)8e4wab6)Rp{lo;-uGj6~v!2^SriGYVoITHD#wT
z3bp5_2DJ7X;aSzO+=7UzG5mJyEAh|_srBMF8$AcfAHG*xhs3F+SBTHBdhX*8o7erW
z?Tv#+*N^oJ0ka|x=l*V;h$=y>Z<hf~M{4Wf7k^C<Lbo?CR`kE31np%peH&{Q>L<vo
z1;O<3_Zy(V-lx;rW5;z<Fazwdj;Q<|6PzLi3B=+6>H5EI@`om;Ajx``FwPR0{amzQ
zi~wE{->h;YA?lXIr|MpK=iwNMrhlxd;p2$lK%3M~w;`Mvg}e1`ny<!4s0VF+M|`3)
z3UD*@VW9iBBe4<i`o0q;>6=sS*^Yd;4?koafCJY4w#1i&%dJH&KEad>KQgbT^64j-
zS#Qmvc|J>Tm(kO%L<gg3y!i+1++ChLDp`7$LUzwpVLEfpvN20_J^FeGixrO-teP&z
zaJ9yGtRe>olUnhlO-LST8V;Hmgxy}J`6k%X8Iwg=<@G%H;l;l>^0vi>NBunv`CAy5
z7d7#cocztuF!hP0W%%o1s9qL!9i1=houZ&~84CLTV_8yRYi9iZNm2MhcHpYgnoDuF
zjZID=`}9U@B|p4ELPPasrAlTc5^<|u@z)f>Wdk{cnu%72owDOu5msDcDCfuvUc=X`
zXGUY-yV*&pplaR{=h(~h)G~5eBL=3+kJ?w=vT4F{2z4%-JIfz<(--Ak1ggin9`=%_
z3NNMQdLg0}B5F8I+X4~uY7SIlQ(36*R7BbJw|Yjc{96Ju%TJa3-nR%B6D<N_ajab;
z_^%qu%5wz7R&^WYQW;2mOHE9r?_}>)jk;LNV=0i6lglQRT<3%Bv#d=i!~GAMoJ%QX
z^BEpp#A&k{D{)>6VfP_NjiDU7=31@tuI`fL7Z*?T{D=bxQxlKnc_!{F{9f29a~&T5
zl^rA1rKfG>dU~t#5N;)TBV~>-XTg&<?N+i`Yjv-_Cly=J_4zl==8cfqe1(_C*EU9G
z%m@9${#zYorJFYua1or^n}<7~aT@c_RbCYjZ?_05iSTw!ol}kKiT1=|hpqEwPx_6D
zX@@eV;c=B>mvPUK7$SzMdHxcVp=B2}r?-WH#^DqP=oKtiD_RjQZS!4(?L@VTWS5;`
zs4uD45u@MR(aVzdiVb>yuMv0Wjbmvp%c11)$*!8g%N3~BDLFc8cI3M6k!}y_7Ay>h
za0s2@Rn|=O-zX~7+Q{u^Nv~<ChBKJ}Hmg>dBZ~5EmJf!%Xf;I>F1gWDcGUdl4Gbb-
z3)s>*>B?ky`!yWwLEmdu*-;C(Y2l+cEwVsS;d$`bQb`GGu)2YS2~ryVE~k^&&tA4f
z{3{dILUq*$_qmL%$h~d+RI!q+3CGW29our;6;Ftu87U$bcxp>0vemqjopP%p?GVF(
zAM<ATsd2?VVHL1X&>IE{_6ro$KPvb09{?2+jT8!<nT$<H(ZD`&=2P=J#C;)W6;?9z
zuk9sq42Vz2#iUTszx*_Z>!$xp^MV1s2z=r#P7(wZut-I_dC`|qC;0fvGNg6%n0;af
zORZ64@<?8rDwSd9rKWO(5^}m+H_?sJ`DlW|Sh&#_d3ivG<)Dc{(`~Y&Q^oCBhO@dW
zjF}Ou{Fhme3KxjKRTh%=D2McS4*M3r`fXG%?1hr?OSeRw)G<*dudha}y<y@$XXH8j
z;P6?MvvN3oVQjQflO4$;i3)cc*XP=#lVY^Dji;Q&n--s53S$qeanAn;0yV|i6CVka
zu0%W(h?nhcBd!H>T{s~jvPr+x+}N|;B+i>jcgIrd*0y7(sO*J0Vao`_KhD`c(q>6o
zH&yJf3It0NpBA$fH69*5y3M<mh#y)cK$L+b)tnUeYi6IAx-H|(bO71fTROe3PX?rE
z{1zqG)o98DPb2BgbBy2GY|H%-Y;D1z%fQN<>xILyeUtsJl3+5HDb)C49#56j%h}pV
zrzBibKq$x#-DW|po`fIq5M9<UgWJX-KUp(+CpRI8Vy`gV@W&9$pl1QUvy5v2k|wWb
zX|6~GHu2b2)VKXj&e7@Jf+Z0a)ELATA52o%%0?E3A9X(GKlnS^(pgC;Z8~?<^VR%Y
ze+~1Cn#dIfuH4)SqHMUkMPZ1wA(QfvFo(>$YQ#J8LRgBfGJ8xO2s|1TgTU2HT@H68
z8LT>e-PF9RICj^<>CM=cT_`?{Fh%&pXPAs@*rG$XOP$}2i|dwKYAQB9M*h<m@8I~7
zEz&K{ca?^()m<P&j$(@Af}_=8BUv@YjnSyEQc~sh)A0C9wS5qp1RVn2NWj#ip5!wt
zMqr{JuzOV$IiP#yjY#1cj2lWcFLa(Jnf*6{C|_}qq@FJDCO6^OXwKzcy?hE+KZ6J6
zZ^<ljNZW0-)CXYSpndhWByWv*B-b{rS(q#%eJ%UnsqrLhDAtJO+3Spw;3Yq(cJ7ui
z;h;wr4{R<gNZKC-?OJXWBvEc)V2>p?%epI?KRT&&ZNDDv?BIO>_8@L5^e%lGPwify
z>LKPlq8uGN9vVuCQGOfYg>k_p9*ktz+Cbzr44j^;v`DdagFOWOGe4vO-=pac6~0qd
zv}jM*Kr1Ruisg?by3Exljblm7?rN`hr+tFSB6{+}_e0n0p5D10HGkC96vpN(M*N}I
zF>m51vMxKl)})Brnkp(F7!|8?VxGjbMR54f9Cp<of=;CorpuX*$*0}Pq>wkX7AJ;E
z&m$Bz$U3|J{M%B8Oq9=p58G{iYJ(`fz#`;4yuQSKuCLA}ff3)Nq9j*Bp_~ZQDN5mO
zT3vD;8Hi~lK}MtZH$wSWlcjljknCg2d;xvoUkPuM=5IkI=esK1%UHK&>y$p+m6c}9
zrM?Z~T@lY6t`AVapHvA5#@X$9Ld4hMpm0o&kmqP1wquB1CCPO6k%hG;{xdfne#=79
zM#M$~=dI@RGdqdvvq_L1gIP14`J3Sr*HZfQM#gwl3a1X&xOL_SKogkvY_{+LFjh#@
za5$JV<77h<NfW5|EJp$*tMIUB<C#g-1##@7OKaQ=dD;}E8E=jF!e#xH|5j85Jg+x>
zM^}<|qw16jjg80F8<>kNPZ|g1>-K8z`%u<0k36l6+k7t*OfVU>{h21kxq?2Z8B7mV
zpbu?dl(EC!*{YcqXO?gv0p_{cmS2xLN}MTb7)z;O>tJqoM!&SG;IxpJbfBiX!(btq
z1UfK*_%FJV4*Xa3y1Vz=Z->W<WBvoWR%@6S3R{ji2@K}+>mFPgv~5yY9hT6{I}_DD
zjiKii*uEbCOV8i|-&Cv`^-jSVPZOw9#Fy^rPH05b8Av+MPev|<y`PQW2*W~8R(ehF
zRJJu?$ysE$zSUP*Z?o`uuome4b}HCaYVxQ+Tfz?a=Cw#T5893Wg!z<xZf?tof7XmC
zZ~9Nz2Fahp$qEvbOvE?~A->yXRIUkZmGs_kCeM=%Sd*HJRW{aC7yF(nR}@{t{IIsI
zER!2BlwIiTWhcNAnl;F|$PKhsr?299KII_##OvCvih{8*OL@S>LfNrf1O!C&dY_&t
zfD;9Dt#W6TLEhg#KVF`O+#WoLv#YxqZ6H{f=-E}lDI}3gdn13?fIZ2rSjVHg?75BD
zI!YoWL@h$`p?v-aIw=oZNKwtBn+j+|?D|0kCz62sw{;qM<uR~S*r)WU<Vs<CyjN*6
zlm7wS2uzBwxGc>|Hhz$`mP3a|vd6V=gs*E;G&Pje2-MbCk}D24{_8JKu_F0wLI|E_
z8um*gJ4u9kjOB%5;n>I_Kja&`t$jh+?ZNIE4bV`&+(c1~G;9vt*I2<y3q!Z*4GPBy
z50V5fbpl-+?sj%)4M#KXYiMYoLuwRqp43)Q3>BuO3*0^a6O`eXuRk7x0h;TWp_}5<
zoAlL>Gdp%a<t8l|h04D@xofScy_UPSyFvslvU?m*nebY<B`9_%vQ{aUT--{~h)&>)
zfr!Gs1z=fX()75%J#)MZ$=d6Ou{uSVzt^>gDk;xq$#&;fnLvl}OCKn>CG7qGIh$iD
z7WEElGPwEx)O^$7DYeIOokDj3-Usjq%rF5XY1?>qlDBapcLtX3)rff6W;_D6V<<RD
z)0SIYwAF^zrLW9ZP|1xgP4SK_f65?KBb4P$;hT^r@>oKrnbW`H-_&ApY=p7IOXzrI
zMsw?+Nv-je13AAHR}~~6T#Jl}CI1Ye;kp1B0PC^lKLD7^gCXVZqgg7miFi#a<_-7J
zM0`2du;d|Vs_Hc6iB4*Nm`6@2+)T$vY}AoBEANRd4PAbnq2cbNpmw0v{yo~V;4)iz
zj7kZ<gCJqr;neT4{(cG;I(QQj{a0Sz+VIWHdKVif^$8NlsL72h-ZiC8EIyM=jYo}z
zrut_o{0@6)hdEZpPgd`#coH<Qv~;J|A8wt`KhX;^-IReGVt}Ks_B~X9VP-KRYg};8
z{?5hM6_aQ`O50&Cha+Z6@r^vctVXGd28agDFg;}5IqUzo$gLL5Ao`ifI1CiaYFR01
z=lR3C6xZ7%%lj-w^>iNzWych#2m90Abb7RHoPPeU9HPUOo)VXp-$t!`=<eDRjFQGQ
z9hs717wK~S8lS<Yi>&4gt}fcrkxJ^yBKEeHwB&kzoZY!<;!>bR1Txlawz<Jx58aJz
z(Z+dU%gh_$d~K7J+wYn<BT56hR2R^_YNvmN3NUOHZAn`t)j3(-JjqSBOGW?9)Fi5A
zlX*;lV~5F|PfxQZdR$`?SIW@&8@&}TZ%ga=)o$O2Z1A;sPh5I+@is7wG)?w<NX#Lb
zR|U6GQ6U$7Y3NFA%7WD4#y+2Lt^JN^!W<HggN%b}-NE*%5pYeMM#3E*W92(~BJk&T
zTKwRlvkueoUt(CtB!f7;Mng>zLx1Bb2|;b?sD)Ny?)z=qCQ^S|>sc<17OXAOiNA1S
z2Bjl>Q4C4VYcf>?HRA#K487#4TvLCub`Rg*D})nX4@X5yNhn!*EVl=l+tm(oT>C8W
zAP1EjpOdrL)J}u$j}*NviG%yaO|rzm6r4_I(IZjg0<#glHcckAV*bim!RAGF0NpbS
zZR=PTZcNE0cv>hapO0stt*s-S9tAFsuA+l^>4(43EM@YX?!A+7jrE7PM^@h3Bx5#^
z1UZgTAeH48tRx`v4}Jgc3|E?(^wh_8R7?-BVzpZQCB23vyP^hTME2937Do!TWz8Je
zvbSVSHWlsug_GqPGiG?Yf$5U++MJB0j7N^Zhw+OYH4!XRc=T2Z$yz3@;m+j??-|wQ
zkoBHmOhpcoz>Rd+US9@$+{7qBOh~?Eo7Hc7pqKG<97_uT(A1qX805F}bz^9?b_PNv
zeLdMlHC=KPn$srfI$7-3`kSUKt==k40n__I4YOn`MKq+EZob7T*D^{Z?Hh!5#cR={
zW{pfpBxp1;TpS`-Xl~(80Ok~3EKgZ<f`u^C0WZThFs$c=y77R`B&(?0U;P9Iz0!j@
zYJk`=ivbP>zJa9-+0>}{iv&(FuYx!d?hS3;7Ng=x6WI!Z)(Sd?rZ~HkLQjXqQEm0|
zq<AE8YPLO%FzA=GECf1A_lO};qoPSfna*Vi6O9I8m4maHrtAt@v7k78=7|OM6=L{>
zd9?mkG^2ue=7luP+NFV|s78`xs(HCNVD$5FKbmQpB%vzLM7i0nE0lp147%mtu|$X`
zweN^QkrUtdK!L@{$S=j8z8EdaXQ<AnHwFa>0r+R9`_mT#ppr6w`d}#b{&APNwY}3M
z+gD5q`hx#+hg*R3bB9~6WCQg0BH^T8Ry(W5PRmMf!qJJ7^(q=UPc%s)h!?CHPr=-<
z#DLOAmt-{@`|ayEYc$IC>E1A>LDJao87sLeaBL^%t@B#N7XBQ2qQ2UsvMAByC<<sW
zGOcJY__|?!>+JKw2KC<?=byWCF|F3gx#i#Fj#vR-n-(e5RpBG5svD4?VT=;aw%yGP
zo7>1y*F++|o_Irbbj@N^y>D-5^mc?a4rD?fZ8&<VWqL})5NPqdx#>t29IA9Y_mEn5
zx&k#0;X3&*ZOXFcg7nu*uphs@z&2n3St{JsZ`h<+s!<Kg1Yw5cecg4zOQ^@XZ7bMq
zx&mMPTIwr&D+N30D)adbOVtR*W;kfsoWjt;qX-X&oug6-oUE%3PfQh!z_#np6Nz0n
zP{Ft7=uN`K`@fzSPr3w5Ta7?xn6?56UmoGFnLdrL=ddNrv3Z|;LfDdKGoP7}wtTp%
z--gMCZ>vgi7t#KUkGG-Z^Wa~)2u;wbkfbDb_;Z;F2hi8dr>?dYQs#}PZ;Atgf_|#$
zjJe*EOLVVb##W?r42w_wR8xx~IrplTtV__aDzADZY3IY0&%VRfAT;pmch+c2FD7!_
z{s5%HC`=!}o_XuP@)#}9^s{Z*j|&o8NZ9uiv>t+cyi2}x%F`CPMTk=E)2c|HwsQ4R
zRC8n@&mpqh;WQNwJEx{L9hM^$^=&*FM~NzRMf*&d`|@eH*Nm5Bl|Bs*IR)+fgkTdJ
z8~lCza`|k9d_wXA;1UwYJXeRRr8c77ooz0d)H>937lpB9!dLa0$Fm2wJjF7z`&9iN
zBXvoL7L9n&<+_b`+meFVHGGbrinkxoG;-^7drC(XysGT4$L*(ft9PGqXJKD+|017s
zj9Yc9B4AUS$1!aM3^PA;uck>h3D;~dKJX0=4Rp3CC5}0GmX|h%421&AV^LaK8Vdhi
z_SJ{H7)FaQRH3$}_VSTST$DouUL4XK;4hSu79pf^c`*zJF1$W_|KpD;qMLW1k%~l5
z$+j8;uTmGLA#2=I?2jj>vgbK2=zdW)FrYY>HnnKjrd^~y6Y#H@uSL4>b_0^lTmD=d
zS@7|puVfM?E`rL%wz4gN7XIh{!r`~)i1Scs2N`OQy3bHRfJ7BmX><P$Kobx7y*%aB
zMlb3EK>Mx^c9cBjSe?jF-+frfJ1gu?43)ugtum8k3TVvls0MFa(?gEC6oIIF1+Vug
zyAnOGD`ST1*_V@iX+R9;L@CW{2^z>J^`7DqQX2@-oyKUgegum;DauduCpvJ#eu@fF
z+O*ANg*IQLN#{EV&RQI269;qKyPs+pTYbImX>a1K_AQVTx66A4M?&Pw&Xjd3_^b1t
zL*EGb^;R4OFmAZw%cNuiT7C>O$Ftbf4Z!uU@XUc8fpy(y<1p@BO^eV)FOVIw%6laP
zOQVf0Io*GK|K?PnkvBYJ6d71fv6q}VX@vWtfV|?(crJA2^9RgA0o&U`TlMUD?s+)K
z#;~h#artD7&u7p4z8b;POmY#}0Bd=slZtk0dVMJrc&&QpV`L0BFe4+y(4WEj7z1yN
zJzaa7&00rMyq59CKySt6Wu}ox3%mICb|}7m@BKccLh}F}V-b;a&17KuiB=2(s5!nn
zVy^KhRW&@M=p*u7S)tzswI}fzg-@2AWUq}ZScLVT@qa7tKlOr|6aBB3hA{M#dFx-#
zhlK_jn9>uJH`HLwyBKjo5RYwrUOfj}ije5jAKFuFC189KU}up|z4yxl3m#0VNwk{l
zEZHfOLk={A{;cEOiU0MV)ZPKy=5IMaXKi3gmD5?E{H`-}2a%zmy`Ep`6yZj$i^ZNP
zIhlcL_qj8DQyiZRLEDw{W<)!*fj3(~GaAuxf|=7u2VnpLTz_|;znP)77WjMsn4)k4
z=`^-fO`Gfz<SUd5w$Af;7`%9V?J5U{s=wR0`XNCHcNIwIDc3q`<NB$@16NSj3;S^#
zx8P|N=w63^sn6;|2+c0OAKWH~>9u|U)c)O`{=d0F<!Cug8Qi~rdo?WaccQ;f4iBZF
zFo#nJjrKhuI5Q+EYbsYHxlz!N$(#9`;Naxhs#trB>R{ufKT1qQt8JH1^dRfX-|@94
z&3%kH1uXF#BJ1lQ!voWwig`j(?mQ1`It}`bWg|C1s*}h~x6DB*ooc228TBSjv~jkw
ztENKGB3j1E9maEie>2)GqiZlBGBniB%{kdPswe##Y<?*hkSM6-8uypy%{kVF=lvxa
zS4TRjN1Hh0j(A|T)xm!4ckw`I^Ey3v#TX>K3mTG3aKen0naZfI2C8vgG8bG7Ju{eF
z?c~t;^r~e`x1o|+k;mw=+f8+f{6=_D;a|A0Q8DbTu)JE=+;o=qc`n%0Xijt%Ruxt{
zP4(o)usUph2jE5Z75y2FNXmf9fcS=wm#QKZwp0m8>>T!+34-4mz86DrkZQ}~4p&!5
z;ght%3kWCQ9j&>X#q<i3x<|(h8zHwGUCXKZAR_fLht4)~>>i5hK<pM-CcW8%dqfSE
z+Tz?R7ad7B>CPt)&aO{cMNcC-{dFQ^tC+7aN*uK&lf`xez7|e##J#rQf*=&u*D44&
z%TT31q9w+0QSV9s(Z`$2Gye=aR?hf(uiDiG8{uH{>+eoA0?aU<k#+3EzNRhHeGip>
zj@`6R7gTb=k&46F{Ur_D2@HJ8Q6Z0{Pqvf{v3Pzz9|UiK7Ra<G4A5sRU6Vf{c`+PF
zT3_J%J%k)wGg1!%c4JY?R84GqOE>nSXrYgql95;=Q<Y;*<M>3y1KFhq@*#3!4@iH=
z^{hBRO7g3D$<Wmx@dF@RVz<wM$Lfi!wF7yNQ_6xlM6#f>Q2C~~hJ`O7O3Co7h^aoo
zX9IIn|0R6WAg%k3_|s(hHx&7EZ3O^O;-x75pIjclts`s0SkzRKcq_9h>m^4i0yNr?
zF4WWd{CLWK8l~t}F;m2U8&T~g8H8qLo=pR*F&=_PhzFxzUq>7L8wv}N3Y3gQwb8wn
zq6iS8h?n$}A&FO@0GG}Qh>;>mr)@}(O?KA;NZcsh>DN->Qp9QplLka;VR2U|;)Fy<
z>svX+OO7OwvCLb{uQ(IT>PddBigJ*o2!N%C7Xrk?LjFTj3Nl`ZB=)~aBP0NpBH(j?
zlK+em?LQ-xL|K9X_)9_h0e&UG7OYZXph*D~s3_1xApw%$;BsGnL*@v6HvS)E|CjlZ
zq(FlO#Qukl5Fp{xSfoPz*I4|FSNXIS|4siIizuJgB8k0!E|WrB?WMk7?|(v7P(A=u
z9{7Wu%Mb-(Bl_jUs6ZQd!*_DY?K2{Zzo!dWe}?hM#_b^)v`IX23bUnDaJIGumSlKT
zbfCsu!(m{5pAx!Ut%f;#i~gEMAEkzKAB|^$PvvgkqgWxE;-(nQmsc=X!{TcIQ!L<L
z%1jrWy3$@V$TPn7R(Rn~8#LCH@KX?xDb1iHjp&j_6zf2N2~S9sHi~HGs#3)fu4b5p
zYD!93TL^8W;Olpuv{%x`>n#Y#0i@a<IzQCn9k9PiD}R0}CzSKTR1oWgI{%_p2SnKy
z-36<LI)!x@(+;4{r3(T52)|JB#U14kz%YElijSrB4+4D^7i{^3lZsDG&p4~husqQI
zH~TWl*P(G84@#)sEwn<UqE-OqiWALPh{n*QD)O2X_w>{SRuLKj0dj^?feZ<EI}7J8
z0o97#A;k<0xuKguDuES}6QrOrv#KG0YHN;U3<(iDM+KdWl@=2b%0BIsS$vjvt5Qr$
zYTFM-K)PECsGhQmI{SEpRi)Y{F)_n#a%UoF9YBW6^0l)Jt|*S%lH{i|xfTwnij*Z8
zcA&275eaSCT2orxTt_QqoHu$z5J7ZMfySYS7B--Lmwo^F?qy=jb0DtjdLU0`v*J17
z(F+o<X;z{c`)pKkZL5gKOo`tFTuJWz@1M5dDphiLmNWiaAvJB+18-qZBrYUvpP8J~
zFNnpyXDG@RDGlx6iKQmb5mqq?62ruOJCnEX2LQP@eIfUlHJT=2_V@&Q6dDkOGyP8<
zG5sEnTC^6!L$V=qT7T|16>Ua3V5AoGh!6qu%axd)Q?ikaQ5dx}FWelY;xAb}WM%i6
z*>YBlIRd6>rh4%%I3k>3K;O9Corn80!^QL9Ki<wi3=9VGkGJzb4mSKxZ^s_RKQ4Eg
zq_+2xY5PiF(C$Bx9iKd0QoD8LI<!%17*Senc0nAD>aD-kJbA@XrK!qj9$sUc^_3hc
zdqo9|<kkb!ms6P`7tKZJLq_8WKR?xA!{qZzQIv~u;p!NrtgkGazEIPmolz30=V<kS
zr-VSwi-soMxaHgZL}6L2=F{Mi1hnpzeMlK&J=>Ufn<!p#Og2>|3|(Hu29F^zVWWP*
zj;>`vRtj{-w2E5u6;C)X+FCXFTX>Sg^6_-qx1h+Y+@cpRVFt1F-{Tzgek9V2nV8zc
z*bq9zR7`MGxLi}Lx7DepN^`S5{55cANT>;1H9aD7*`)P+#I5P#qsMRkj-+Z_+;Ti^
z;@D+)iw-D|Hme^15~iF(fehL27p(+wtaX%<jhe5iIy0LrWpH=_cgl1stdub*zn@-7
z2!*tI|Hc~LM0XMAE;#8{515pwddLhHR4AvPi&VDbyHs=FHY`^$;LcexWK{1k1swN#
zqvH!BhA`vyep7J@|4O2jW^J$K1~A4|1<{M7s^Xo|@jH0p5!tR_d()7urVk^LT-?cv
zE*^Mh51Fy7IS6DJYDV_O;qCB?H4=D8$Kena%JO*cwzu#PFB-QKX?4eNXBMfdM>Uh-
z2hE08wbktyWV0fd!m0#aNS%f!!ie9imaU@V{Gr>WaFVh`v=Y%AVdqSB&2}G%&%#@P
zR0-MC{Uhc&*^wQuSNC%niO6%T#fH=CmiMsL7d5Q}QLcReE~nXO`}cc277#5kOa|5J
z#*uc+4B~m96<_~_><9MX=J)tvg|<rXCAAkKEw9fh>?jD9Be;7?%gL|ID$|kZGQrF8
zayQ(E>W_l5-$&<y_xPhvW|G~Ujsw^6l=hsk{?0N8wZBLpgUeoozSaU%qB>0vl^zG<
zL~|x89>DwK@_eFPOwz-qAnk01fERnDGEKB)8tMXuhZsHk3OyhQ%R`JRNVV4j$Ww2-
z(HJOc46$RfK>Y)&OUMm<Au#SGUJ@h7iw0gy0hcyV5+ket?hJjwQ7ndeOr1nX0_hY(
zz3TUsDMlDjEaj-vLc>;Wgk7AWaK|-GThNZgl|sE5&_P{sr|6KStD>Dt9o08E6$&Ot
zRwgszC4WhbmZ|s|=SZK$$&g=Ra<T2OKj!B}7wCg=S*M+|81(f~N2~>1tO9uVID`16
zzfzjVvO9+WW|8M_C0QRD1iLLK`v`B5n|h3aSz@x~KX%e@>vrW*)@3Kgr@Cvi$cf6@
zJ5KH$XXy;R-f8tCgW12|Xhj8wJsG3QW9fM>qCs_UHq7h?qUr{Q^x0{fIRXQz%$&t~
zd4V&Te{!Afte;Q&INYGg6(0Mx%lS<>V$iap+c=yXvTDf`<tc5mxn-?idsi`Gjv*B1
z$-rMQg5niCk8-h!&i(Y@g&}Dmt|jS;lTSBwHC6N7`=PjT*$P&-Bwi1mquK{R$IvDG
zu01WM$}@oZSs<QK`2b^ZAvvvn@S$SL%^!sU*Ru<m!}XaUd%>unARc2Qm6DCVyFtcT
z^|WzNue|~zqB!s7J~)0z_ocI(?gC<it-AwdwNE|Kz{$#`^sk<aO61PH4{--PLhbVP
zKxI<g`U>mZAM3Pa(~XviWtY>m7(VdJ#$$l~CnD{bA%x^temYfQuQM$%J=}r)+m46K
zkuTw9`-KlEv5|&YFE!_}>uOBD$oJj=7g-)|Ap7N{J1ua^(qYhO2Wwn4{q1E~_~=K+
z^V)o2%<O)$-|Ua^Ia--{pAK`(ILhdCvUE15HJ__?{U3z)yt^i<A}C16irz-4CE80*
z689;89s}DgqM{6Y@zXokg=xx5S0~x&@vOcxkrk^o_V%K!SonpDW8E*#5ZN3Q8`5Dx
z5=BaY0XnZI1fWFg5L1j<FJLVz$=KA8>N+>FVfqXJJZj{nbeQ%DO&c6OxC;ct4*O)i
zv*%&r>22%4sh{xQn_*6dDUJ?MFEkZ)Y6vFVXSY%Qv{&Q%Uah9=_`-Yu@NctdcOJ9I
zUsYfIU(H`(Kl7h(mg=W!ph5XOzVV5KecCo)|HdQ$J`cnF1B9U%d;(!4xu1$bP@#7E
zO8-AN*r#SVf&Uqb{zsy*`+3M|B;!|xMYa|9CkOENxKuzi4u;j=wB|7mwN!KA$4otn
zg1I<t%~AHni!<+oE>z&?itPos61w~ZX&0()jMaxFDKBpaE{XjAQr|oO5>Ghtu8vHv
ztqk3EseZePTvuu2iesD(OlOz_+L6l(6`MMdXBbl6jRo_`NpBO4*A>(O;O=!iaAj@S
zv^Pjhu7-t8U#_1Lt_SZO#B%ko>e<cJ3O-}D<cG8i83Bf#p|3X^{FIzfAi|!vBEoB&
znjvINVjt$g=?6BC`6U;(E>_**fZ(h{960;eE?X~qZBm<JV|>NdO0o{55;zoh`mKjn
z<<Cv0BYLnV<(*)OMmUo%A#ME^*mQTEm7H`hx;49CU#*q+<z3ik>Z$1PgV-E$tL(nW
z!t(y2dgyl7*C^`DU1s|(bC0nyDDuY=)rVM&K%rda%OsngZv|bDG+<vl-Z7Pb##+?%
zdXPf+XzvSE?v)QtOP=B;?gxOef|r6wL%*x%*$|XjHcCAmuIEY!*m-vP)8WS476n6+
z4lQwr8LKKHV$LdmY8jzQ^{4L~Qtq`q6|;90f0{>B^q7EmUi|c4p~ni{M_6Q&bqlGc
z#g92$IsSq5xf<8YXvhzqysE~r8HTJ}K1Nc23$R54+s#C)(8qP9f^Nu;g|3xxX2-#K
zW$(y=g9<wfmZ?pijN~z^gTn24F*HBCn_vCa^#ee_r;US>|LBldum@$UqVx2-Sjz=o
z>zB>OVW5CPs2%&?R^?sU-g@j%#UPqR%f>Nv!6_EbH0<NVt;9X?(<QfiW7mL@Bg=W$
z%dBj!09Y7zf}mp0a~zpAq)aeE!g2=dU?>@M$z~tx(XMy;;PjvJ3lv-cFHsZ>>X-K>
zY^`QvRe=J-o0>@7F@p3*S>fB8dk6SBuOfO9ls+ikuf=bv(HUZLwRy=Cjy9L({;)tm
z=LG|&7zIs(*(8}=Jc_WWooQ1INkP_A+XukBw_<t)f_U$*GGEc#ml%>b0vkC!Dhm%_
zjGe2!h~goie~k_>!z#Y3)peY~kCB(K9+(u*3ncph{DOf)*EYUD{Q?t<{OXY-^~!7G
zP(rCg?GJF3nt8YH{bj7zlk7@pQ$u}xqxy$8v}<q|+`6=2ULrfbRe>Tvz41~#x^_qo
z{7lSS-p}Z_&v3t1NJ#4o`D{3H6V<BV48af3BsIZyK&KRRt4Y@E1+FYi)m-!p(FWG_
ztR05}QE0)%ScbV56G^9b2gdw`LYMHfE^pF2)iq+)-n}h?vG6R~T<)cIBn0oQdR(qo
z*QAZ00hPli;`<)-YLqPq>yj|J>04mq8UjG=;RRU+LRp3YJ{e-fC$)|(zsero8KpXv
z;1pXHh8ekbSn8Kr!qEiMoX^nk4_~Es=H^hm5SR&lMh}1+bp=<jpPw6xH84?*EHV08
zUq1?=7-WVmit^g)?^nt$&yu!_`JQqX6N?t)mOB(98M0rxtsK>22~1%?4$dD$V$zoe
zXpR4H+5U;`y*3GJTE)t*u-9?a6I-Gp5y#Tipvp_7j}e4NSct&&MNsiOI)UaPP{W{A
zZ&C+)^rvazYDP*K6yYyYU2rFsRuZxusew$RQ7R&Tli+<{?kVotz~Gxqte36W0WjEp
zu{laIFt!*ZE8SIjkiHO%0y0=kZ$!y;#cK9kcVyvcgb@&LU$6V};iUeR4Wz%;Qctm;
zs+erTvVRM9G4mT&wn&*e1&#Sr=O>PZIsn^jjU308D4Plw3XzRTpM^c}NO-B38e#UK
zG2o7RlkcGJC4kmoe<Q_7_7#{(@wY?Yc1g)|ya734U-hbm%VYtJ8#sx*j7EsAfxCbR
zNRNP&-(Igq4sIbNm@68d^BdQ6<(9d4Jv}yYQu&2!+-w^qGdRs0<aV!{R*TT1xsAMf
zkS1u#NPJ8v_Wd18Hq3O2&_EkkXnnqHg~!5S>J36Pi4pXNKC}?1m@cwZg+)90*e3=$
z;Uhjch>QFS+6vIw2A5##0x{eU5>JTM)aRze5KB^(kYCk{LAaII*RR(TINFvBZDAgA
zyaw8})R+>vDE#mN10p~$RW7T3ua&`V!dSL>WzB&~4Iuv{6Mr7XH|YMvbkMXylR(o~
zq#(#Nqr`!>hQR3lvVHl}cc$bY`Y6ygo7wXls5KNf=_X95M~$a7<VB;gC8wAQo_&Cm
z#(G$6*n*j0RPM`x^u7wVc(_<68lTIsn?y|!B}!U-Z17?+e=YZK?zLdzv@~7k;D0(&
zaVZF)DD}^_udZ>B0c-Q<W}W=%M9iIiure*X>Rd1yUltV#o~{B_1`U4BwhR71l>7NU
zI|Qg}dyyXAd#(9X`y3GZm<o-Q13^6KTmR)xz`oge<Sb?Fa7d~u@vIxeSI!!;Y@<hS
zR8C@tVE8M6WZWbF??&>=UXLt)Aq-GNWAynY=r0A(@{3+>2hqdbF!`EY{o#dn4V4!8
zSxR8sS*RkQrkxE!8AVBm{WrV~W$yKPL%rc)e;q^6Ns^I`nQ;O$F4%A9VTsA`cx-HE
zF~Es)I6Q5;7X<s*^%qx)v^zsKB`LbDQzbJ}Nzjr=rKx(-he?>3z<C4{?O=DtA~Uh@
z0$qh;+uAy}X?#Y0*^Ej8JNwBXO|Z;))i0vIJP$bLd*%^|#@Q8&r;awB>jyrv83x@m
zLatDh=E}R!9>$Za(9kMeF&+EmfhS8oMy+vGa~C?(xnB@_&#Oo*-$dN!<yeqQo8f)?
zKAN*2%h7c^mb;YJnssQ@a@Uk=KoS#zz*lh(f)e&aH`tvD`}utslZgihy2kXCq95$1
z2f{qFM)V5lgW%JUUZZd`zpCZFgM?U5xCk73>NU9X+95VnBIE-6D8MKfT-D28=LYrF
z>~3=x`72v!50P@P7;ErJHpc7jBpD`0#RJ#lPg%FVup$fT{H<A?7TLO3LK*6vw$Uwt
zo|zCRJ{t>@5>Jxw>|c}1t)e6x?_Y2*B@JO+$3;#BK2Of${6wd4Vn2T)?asZ`c*o3&
z-<kTuIlowu)%gJkGdoF`v&|1Q#K;ttn>Zo<3&NmM$Q2HO`}Yy_e}3c%6#rA$d&DGD
zpkCl6?>pQ7`m+<!2Fh>c1>ZiQu;Ut4&@VLPalyB;>!ysrQHdrdO8<i7OTusYyn+R<
z7<0CMU|A$}c%Rt}%`{n}o3;@hjaOVqCmtUw75u9=71$Ca;SLxEd5v7?c1=|w9r9_^
zMb0L79R}-KldxY8ppe~um$89}1jvlv@mrGv#8Mdq95fZzQ|IAShxCI6BHu~nPFUS2
z-TOyB#^xe2Wre_kg2jG45GVwKXjpJ6m!>>q9um2D-D0m{Z8)-WVRVT|Ga#y^8^^-H
z1^@bC+aOIh{0R4>fs&Ij6jsv8$-~&_h!!{ujd6yQSW|a<)C_j?AUyMP33j>gCX%OV
z*J`(`#rw)|#Uvhi0a@|7;E3wbaBs8*9I^a`7CH;ng|yvblhYK#4s*XeCWI>Odf=i6
zu1XcO<wR>!^$;2P!wx&pELB(5Sa5q#u}oF9yu%pG*GJk;B{tKbl2*k+n&cv=ZH$k#
zwCI<pX9(fb9W|vH0%Y(d>GU9M(=ZGX=dZFo55)2m!9|xHQLJI<Uue_#5tss?<xon+
z^<OWV3P%_jG}>#+tHwMq3N@5|0_tu?(mXIuKyXZ396F0g>6$bRwv}XK?}9_-x!fPL
zT}-OMf~jyw=*<=Tc^oSHjV);C6<AyvwT4v3<^D&F!cl`XjN}#wbZcCYbDfu^>e2=$
zmv}+gfg+Le#$a0|sv<W0q28-hXDeBHT-SxRtw_IO*>tu~a|D}9aVZ&M+(K{_NXYd`
zzM`_=#9K3|_$$1&I80!Zgdt0oqYXhUjK{?0_dYTY@qnW%K$3g|uxJ}o`tFi}#}jnI
zKg>uwhd{fRIRvW7f_1I-Kn%rD#_Cci{vQF#05$(%io7Ki^(jP6VT2m7qhn323rTsx
zFVc!cqe1I<fNlUB3WZcQ;d?NkV*{lc39)V>?KI)LDh+bqlpHOFb-w{j@Zq7Mq!qCZ
zjcv+0V<SQZXw6V2Bgnj?SsDgZ4=ou_(Ja&&R{Uc_0GJU>0U@^akT`b;!~nNh6Sj{6
zr({9X5P)J%FjCF&!#8aPgN#)8X$%!YsvC25)N7>`L#QK5hL=r2@j<0+>jXale}}(b
c{afqb`%iwWJyi8sgMDQG097xfnJ2IR*&V-|Q2+n{

literal 0
HcmV?d00001

diff --git a/src/assets/images/logo_irstea_m.jpg b/src/assets/images/logo_irstea_m.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..dafe45d15da77d93d3cb3c6f317c9cc5de6440f7
GIT binary patch
literal 41478
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%0DOR(!cwC(PC{~?#e$KtDa}`&Kt$%a
cSWgJ3a;atIy|^irMw6z(5O)6n2LAy6*)TqXxc~qF

literal 0
HcmV?d00001

diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index 76628a095..c1d177f0d 100644
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -212,6 +212,7 @@
     "INFO_REQUIRES": "requires",
     "INFO_SECTIONPARAMETREE_TITRE": "Parametric section",
     "INFO_SECTIONPARAMETREE_TITRE_COURT": "Param. section",
+    "INFO_SETUP_LANGUAGE": "Language",
     "INFO_SETUP_NEWTON_MAX_ITER": "Newton iteration limit",
     "INFO_SETUP_PRECISION_AFFICHAGE": "Display accuracy",
     "INFO_SETUP_PRECISION_CALCUL": "Computation accuracy",
@@ -233,6 +234,8 @@
     "INFO_THEME_HYDRAULIQUE_EN_CHARGE_DESCRIPTION": "Modules for calculating head losses in pressure pipes",
     "INFO_THEME_LOIS_D_OUVRAGES_TITRE": "Hydraulic structures",
     "INFO_THEME_LOIS_D_OUVRAGES_DESCRIPTION": "Flow calculation for hydraulic devices (gates, weir, orifices)",
+    "INFO_WELCOME_SUBTITLE": "Hydraulic calculators",
+    "INFO_WELCOME_CONTENT": "<p>The Cassiopée software was developed by <a href=\"https://www.afbiodiversite.fr\">AFB</a> (French Agency for Biodiversity) and <a href=\"https://www.irstea.fr/en\">Irstea</a> (National Institute for Environmental and Agricultural Science and Research).</p><p>It includes tools for designing fish passes, and hydraulic calculation tools useful for environmental and agricultural engineering.</p><p>For more information, consult <a href=\"assets/docs-fr/mentions_legales\">legal notice</a> and <a href=\"assets/docs-fr\">documentation</a>.</p>",
     "WARNING_REMOUS_ARRET_CRITIQUE": "Calculation stopped: critical elevation reached at abscissa %x%",
     "WARNING_STRUCTUREKIVI_HP_TROP_ELEVE": "h/p must not be greater than 2.5. h/p is forced to 2.5",
     "WARNING_STRUCTUREKIVI_PELLE_TROP_FAIBLE": "Threshold height should be greater than 0.1 m. Beta coefficient is forced to 0"
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index 4a03ee164..6a1b4efdb 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -212,6 +212,7 @@
     "INFO_REQUIRES": "dépend de",
     "INFO_SECTIONPARAMETREE_TITRE": "Section paramétrée",
     "INFO_SECTIONPARAMETREE_TITRE_COURT": "Sec. param.",
+    "INFO_SETUP_LANGUAGE": "Langue",
     "INFO_SETUP_NEWTON_MAX_ITER": "Newton : nombre d'itérations maximum",
     "INFO_SETUP_PRECISION_AFFICHAGE": "Précision d'affichage",
     "INFO_SETUP_PRECISION_CALCUL": "Précision de calcul",
@@ -233,6 +234,8 @@
     "INFO_THEME_HYDRAULIQUE_EN_CHARGE_DESCRIPTION": "Modules de calcul de perte de charge dans les conduites sous pression",
     "INFO_THEME_LOIS_D_OUVRAGES_TITRE": "Lois d'ouvrages",
     "INFO_THEME_LOIS_D_OUVRAGES_DESCRIPTION": "Calculs basés sur les lois de débits d'ouvrages hydrauliques (Vannes, seuils, orifices)",
+    "INFO_WELCOME_SUBTITLE": "Modules de calcul hydrauliques",
+    "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par l'<a href=\"https://www.afbiodiversite.fr\">AFB</a> (Agence Française pour la Biodiversité) et <a href=\"https://www.irstea.fr\">Irstea</a> (Institut national de Recherche en Sciences et Technologies pour l’Environnement et l’Agriculture).</p><p>Il regroupe des outils d'aide à la conception de passes à poissons et des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs-fr/mentions_legales\">mentions légales</a> et la <a href=\"assets/docs-fr\">documentation</a>.</p>",
     "WARNING_REMOUS_ARRET_CRITIQUE": "Arrêt du calcul&nbsp;: hauteur critique atteinte à l'abscisse %x%",
     "WARNING_STRUCTUREKIVI_HP_TROP_ELEVE": "h/p ne doit pas être supérieur à 2,5. h/p est forcé à 2,5",
     "WARNING_STRUCTUREKIVI_PELLE_TROP_FAIBLE": "La pelle du seuil doit mesurer au moins 0,1 m. Le coefficient béta est forcé à 0"
-- 
GitLab


From 3134d3e3f4b07cd585264b497e8f452a8467c640 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 15 Apr 2019 14:01:31 +0200
Subject: [PATCH 5/6] Fix #175

---
 .../param-link/param-link.component.html      | 14 ++++++-
 .../param-link/param-link.component.scss      | 18 ++++++--
 .../param-link/param-link.component.ts        | 42 +++++++++++++++++++
 src/locale/messages.en.json                   |  3 ++
 src/locale/messages.fr.json                   |  3 ++
 5 files changed, 76 insertions(+), 4 deletions(-)

diff --git a/src/app/components/param-link/param-link.component.html b/src/app/components/param-link/param-link.component.html
index 9f8fce8bf..d24d7c0ed 100644
--- a/src/app/components/param-link/param-link.component.html
+++ b/src/app/components/param-link/param-link.component.html
@@ -7,7 +7,19 @@
     </mat-select>
 </mat-form-field>
 
-<mat-icon #tooltip="matTooltip" [matTooltip]="tooltipText" matTooltipClass="linked-param-tooltip"
+<div class="status-icons-container">
+    <mat-icon [title]="uitextVariated" class="status-info" *ngIf="isVariable">
+        show_chart
+    </mat-icon>
+    <mat-icon [title]="uitextCalculated" class="status-info" *ngIf="isCalculated && ! isAwaitingCalculation">
+        check_circle
+    </mat-icon>
+    <mat-icon [title]="uitextAwaitingCalculation" class="status-info" *ngIf="isAwaitingCalculation">
+        timelapse
+    </mat-icon>
+</div>
+
+<mat-icon id="info-tooltip" #tooltip="matTooltip" [matTooltip]="tooltipText" matTooltipClass="linked-param-tooltip"
     (click)="tooltip.toggle()"
     (mouseenter)="$event.stopImmediatePropagation()" (mouseleave)="$event.stopImmediatePropagation()">
     info_outline
diff --git a/src/app/components/param-link/param-link.component.scss b/src/app/components/param-link/param-link.component.scss
index 13d6d32f0..fc6224f86 100644
--- a/src/app/components/param-link/param-link.component.scss
+++ b/src/app/components/param-link/param-link.component.scss
@@ -32,11 +32,23 @@
         }
     }
 
-    mat-icon {
+    .status-icons-container {
         position: absolute;
-        top: 7px;
+        top: -8px;
+        right: 8px;
+
+        > mat-icon {
+            transform: scale(0.7);
+            color: grey;
+            cursor: default;
+        }
+    }
+
+    mat-icon#info-tooltip {
+        position: absolute;
+        top: 12px;
         right: 8px;
-        transform: scale(0.9);
         cursor: pointer;
+        transform: scale(0.9);
     }
 }
diff --git a/src/app/components/param-link/param-link.component.ts b/src/app/components/param-link/param-link.component.ts
index 7c3e8887e..53e88589e 100644
--- a/src/app/components/param-link/param-link.component.ts
+++ b/src/app/components/param-link/param-link.component.ts
@@ -46,6 +46,36 @@ export class ParamLinkComponent implements OnChanges, Observer, OnDestroy {
         return  "linked_" + this.param.symbol;
     }
 
+    public get isVariable(): boolean {
+        return this.param.paramDefinition.hasMultipleValues;
+    }
+
+    /**
+     * Returns true if current target needs to be calculated,
+     * whether the result is already available or not
+     */
+    public get isCalculated(): boolean {
+        const refValue = this.param.paramDefinition.referencedValue;
+        return (refValue.isResult() || refValue.isExtraResult());
+    }
+
+    /**
+     * Returns true if current target needs to be calculated,
+     * but result is not yet available
+     */
+    public get isAwaitingCalculation(): boolean {
+        if (this.isCalculated) {
+            const refValue = this.param.paramDefinition.referencedValue;
+            try {
+                refValue.getParamValues();
+                return false;
+            } catch (e) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     constructor(
         private intlService: I18nService
     ) {
@@ -100,6 +130,18 @@ export class ParamLinkComponent implements OnChanges, Observer, OnDestroy {
         return this._currentIndex !== -1 && this.param.isValid;
     }
 
+    public get uitextVariated() {
+        return this.intlService.localizeText("INFO_PARAMFIELD_VARIATED");
+    }
+
+    public get uitextCalculated() {
+        return this.intlService.localizeText("INFO_PARAMFIELD_CALCULATED");
+    }
+
+    public get uitextAwaitingCalculation() {
+        return this.intlService.localizeText("INFO_PARAMFIELD_AWAITING_CALCULATION");
+    }
+
     /**
      * Label d'une entrée du select des paramètres liés
      */
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index 76628a095..d8d592240 100644
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -166,6 +166,8 @@
     "INFO_PABPUISSANCE_TITRE_COURT": "FL: diss. power",
     "INFO_PARALLELSTRUCTURE_TITRE": "Parallel structures",
     "INFO_PARALLELSTRUCTURE_TITRE_COURT": "// structures",
+    "INFO_PARAMFIELD_AWAITING_CALCULATION": "Awaiting calculation",
+    "INFO_PARAMFIELD_CALCULATED": "Calculated",
     "INFO_PARAMFIELD_GRAPH_TYPE": "Graph type",
     "INFO_PARAMFIELD_GRAPH_TYPE_HISTOGRAM": "Histogram",
     "INFO_PARAMFIELD_GRAPH_SELECT_X_AXIS": "Variable for X axis",
@@ -191,6 +193,7 @@
     "INFO_PARAMFIELD_PARAMVARIER_VALUES_FORMAT_ERROR": "Incorrect format; accepted separator: %s",
     "INFO_PARAMFIELD_VALEURMAXI": "To maximum value",
     "INFO_PARAMFIELD_VALEURMINI": "From minimum value",
+    "INFO_PARAMFIELD_VARIATED": "Variated",
     "INFO_PARAMMODE_MINMAX": "Min/max",
     "INFO_PARAMMODE_LIST": "Values list",
     "INFO_REGIMEUNIFORME_TITRE": "Uniform flow calculation",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index 4a03ee164..d269ba5f0 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -166,6 +166,8 @@
     "INFO_PABPUISSANCE_TITRE_COURT": "PAB&nbsp;: puissance",
     "INFO_PARALLELSTRUCTURE_TITRE": "Lois d'ouvrages",
     "INFO_PARALLELSTRUCTURE_TITRE_COURT": "Ouvrages",
+    "INFO_PARAMFIELD_AWAITING_CALCULATION": "En attente de calcul",
+    "INFO_PARAMFIELD_CALCULATED": "Calculé",
     "INFO_PARAMFIELD_GRAPH_TYPE": "Type de graphe",
     "INFO_PARAMFIELD_GRAPH_TYPE_HISTOGRAM": "Histogramme",
     "INFO_PARAMFIELD_GRAPH_SELECT_X_AXIS": "Variable en abscisse",
@@ -191,6 +193,7 @@
     "INFO_PARAMFIELD_PARAMVARIER_VALUES_FORMAT_ERROR": "Format incorrect; séparateurs acceptés: %s",
     "INFO_PARAMFIELD_VALEURMAXI": "À la valeur maximum",
     "INFO_PARAMFIELD_VALEURMINI": "De la valeur minimum",
+    "INFO_PARAMFIELD_VARIATED": "Varié",
     "INFO_PARAMMODE_MINMAX": "Min/max",
     "INFO_PARAMMODE_LIST": "Liste de valeurs",
     "INFO_REGIMEUNIFORME_TITRE": "Régime uniforme",
-- 
GitLab


From 9a4d88e23e0efac79b53bbe33e56ea91f2b5d8aa Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 16 Apr 2019 09:41:10 +0200
Subject: [PATCH 6/6] Traduction

---
 src/locale/messages.fr.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index 6a1b4efdb..07c428681 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -234,7 +234,7 @@
     "INFO_THEME_HYDRAULIQUE_EN_CHARGE_DESCRIPTION": "Modules de calcul de perte de charge dans les conduites sous pression",
     "INFO_THEME_LOIS_D_OUVRAGES_TITRE": "Lois d'ouvrages",
     "INFO_THEME_LOIS_D_OUVRAGES_DESCRIPTION": "Calculs basés sur les lois de débits d'ouvrages hydrauliques (Vannes, seuils, orifices)",
-    "INFO_WELCOME_SUBTITLE": "Modules de calcul hydrauliques",
+    "INFO_WELCOME_SUBTITLE": "Modules de calcul d'hydraulique",
     "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par l'<a href=\"https://www.afbiodiversite.fr\">AFB</a> (Agence Française pour la Biodiversité) et <a href=\"https://www.irstea.fr\">Irstea</a> (Institut national de Recherche en Sciences et Technologies pour l’Environnement et l’Agriculture).</p><p>Il regroupe des outils d'aide à la conception de passes à poissons et des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs-fr/mentions_legales\">mentions légales</a> et la <a href=\"assets/docs-fr\">documentation</a>.</p>",
     "WARNING_REMOUS_ARRET_CRITIQUE": "Arrêt du calcul&nbsp;: hauteur critique atteinte à l'abscisse %x%",
     "WARNING_STRUCTUREKIVI_HP_TROP_ELEVE": "h/p ne doit pas être supérieur à 2,5. h/p est forcé à 2,5",
-- 
GitLab