From 8b88c00ceefa448ab285186a666952a6a3e2c5a8 Mon Sep 17 00:00:00 2001 From: troufflard <> Date: Wed, 7 Sep 2016 15:02:58 +0000 Subject: [PATCH] Creation du repertoire Tests_en_attente_debug/ dedie aux nouveaux tests en attente de debug; Modif en consequence des scripts verifier_exeHZ.pl, verifier_exeHZ.zsh, Perl/genere_catalogue_tests.pl et Perl/verif_existence_repertoire_test.pl de maniere a ce qu ils ne tiennent pas compte des tests presents dans ce repertoire; legere modif du script Perl/test.pl : desormais, les scripts de type .verif recoivent une 3eme argument (le nom du .info du test en cours); Actualisation de la documentation utilisateur --- Doc/doc_procedure_verification.tex | 62 ++++++---- Perl/genere_catalogue_tests.pl | 7 +- Perl/test.pl | 2 +- Perl/verif_existence_repertoire_test.pl | 7 +- .../Test_R_RESTART_1D/README | 46 +++++++ .../Test_R_RESTART_1D/barre_1elt.her | 19 +++ .../Test_R_RESTART_1D/test_RESTART_1D.CVisu1 | 114 ++++++++++++++++++ .../Test_R_RESTART_1D/test_RESTART_1D.CVisu2 | 114 ++++++++++++++++++ .../Test_R_RESTART_1D/test_RESTART_1D.info | 71 +++++++++++ .../test_RESTART_1D.posttrait1 | 82 +++++++++++++ .../test_RESTART_1D_princ.maple.ref1 | 100 +++++++++++++++ catalogue_tests.pdf | Bin 288617 -> 289137 bytes doc_procedure_verification.pdf | Bin 246521 -> 248807 bytes verifier_exeHZ.pl | 10 +- verifier_exeHZ.zsh | 23 +++- 15 files changed, 625 insertions(+), 32 deletions(-) create mode 100755 Tests_en_attente_debug/Test_R_RESTART_1D/README create mode 100644 Tests_en_attente_debug/Test_R_RESTART_1D/barre_1elt.her create mode 100644 Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.CVisu1 create mode 100644 Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.CVisu2 create mode 100644 Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.info create mode 100755 Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.posttrait1 create mode 100644 Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D_princ.maple.ref1 diff --git a/Doc/doc_procedure_verification.tex b/Doc/doc_procedure_verification.tex index e0c8f1c..c653082 100644 --- a/Doc/doc_procedure_verification.tex +++ b/Doc/doc_procedure_verification.tex @@ -161,8 +161,10 @@ L'arborescence du projet CVS est la suivante :\\ edge from parent path={(\tikzparentnode.south) |- (\tikzchildnode.west)}] \node[draw] {\bf Verif\_Herezh\rm} child { node[draw, anchor=west] {Batterie (répertoire contenant les répertoires de test)}} + child { node[draw, anchor=west] {Doc (répertoire dédié à la rédaction de la documentation utilisateur)}} child { node[draw, anchor=west] {Perl (répertoire contenant divers scripts Perl pour exécuter la vérification)}} child { node[draw, anchor=west] {Rapport (répertoire contenant les rapports de vérification)}} + child { node[draw, anchor=west] {Tests\_en\_attente\_debug (répertoire contenant des tests en attente pour cause de bugs)}} child { node[anchor=west] {verifier\_exeHZ.zsh (script de lancement de la vérification)}} child { node[anchor=west] {verifier\_exeHZ.pl (script de lancement de la vérification (nouvelle version)} }; @@ -275,6 +277,9 @@ On distingue actuellement deux sortes de tests selon le temps de calcul : les te \item[$\bullet$] \verb|AUTRES| : tests difficiles à classer. Ce répertoire peut aussi servir de lieu de dép\^ot temporaire avant transfert vers une rubrique dédiée. \end{itemize} +\color{red} Dans le cas d'un nouveau test révélant un bug encore non résolu dans Herezh++, le test doit \^etre stocké dans le répertoire \verb|Tests_en_attente_debug| (merci d'en informer un référent du projet). +\color{black} + \begin{figure}[H] \centering \begin{tikzpicture}[% @@ -287,8 +292,9 @@ On distingue actuellement deux sortes de tests selon le temps de calcul : les te child { node[draw, anchor=west] {CONTACT}} child { node[draw, anchor=west] {CONDITIONS\_LIMITES}} child { node[draw, anchor=west] {LOI\_DE\_COMPORTEMENT}} + child { node[draw, anchor=west] {SORTIES}} child { node[draw, anchor=west] {TYPE\_DE\_CALCUL}} - child { node[draw, anchor=west] {TYPE\_DE\_CHARGEMENT}} + child { node[draw, anchor=west] {TYPE\_CHARGEMENT}} child { node[draw, anchor=west] {UTILITAIRES}} } child[missing] { } @@ -298,6 +304,7 @@ On distingue actuellement deux sortes de tests selon le temps de calcul : les te child[missing] { } child[missing] { } child[missing] { } + child[missing] { } child { node[draw, anchor=west] {CALCUL\_COMPLET}} child { node[draw, anchor=west] {AUTRES}}; \end{tikzpicture} @@ -723,24 +730,26 @@ Chaque ligne contient une r %% \subsubsection*{$\bullet$ \texttt{.verif} :} \begin{itemize} -\item[] Ce fichier est un exécutable dont la fonction est de fournir le résultat de la vérification. Il doit effectuer les traitements nécessaires pour déterminer si le test est \verb|OK| ou \verb|ECHEC|. Le contenu du script est totalement libre mais il doit obligatoirement indiquer le résultat de la vérification en affichant la ligne suivante : +\item[] Ce fichier est un exécutable dont la fonction est de fournir le résultat de la vérification. Il doit effectuer les traitements nécessaires pour déterminer si le test est \verb|OK| ou \verb|ECHEC|. Le contenu du script est totalement libre mais il doit obligatoirement indiquer le résultat de la vérification en affichant une des 2 lignes suivantes : \hspace*{2cm}\begin{minipage}{\textwidth} \begin{verbatim} -resultat verification : OK (ou ECHEC) +resultat verification : OK +resultat verification : ECHEC \end{verbatim} \end{minipage} En plus de cette ligne, cet exécutable peut tout à fait afficher d'autres informations à titre facultatif.\\ -Il est important de noter que cet exécutable reçoit 2 arguments lorsqu'il est appelé. Le programmeur pourra donc utiliser s'il le souhaite les arguments suivants : +Il est important de noter que cet exécutable reçoit 3 arguments lorsqu'il est appelé. Le programmeur pourra donc utiliser s'il le souhaite les arguments suivants : \noindent\rule{0.8\textwidth}{0.5pt}\\ \hspace*{2cm}\begin{minipage}{0.6\textwidth} \begin{itemize} \item[- argument 1 :] nom de l'exécutable Herezh++ (en chemin absolu) \item[- argument 2 :] nom du fichier de redirection de l'affichage du calcul Herezh++ (fichier \verb|.log|) +\item[- argument 3 :] nom du fichier \verb|.info| \end{itemize} \end{minipage} \noindent\rule{0.8\textwidth}{0.5pt}\\ @@ -771,11 +780,12 @@ HZppfast ligne_1 ligne_2 ... ligne_N | tee nom_calcul.log %% \subsubsection*{$\bullet$ \texttt{.pretrait} :} \begin{itemize} -\item[] Le but de ce fichier est d'effectuer des traitements juste \bf avant \rm le calcul. Ce fichier doit \^etre un exécutable programmé dans un langage quelconque mais le mieux est de suivre les m\^emes recommandations que pour le fichier \verb|.verif|. Le script \verb|.pretrait| fournit un indicateur de réussite ou d'échec. Il doit donc afficher la ligne suivante :\\ +\item[] Le but de ce fichier est d'effectuer des traitements juste \bf avant \rm le calcul. Ce fichier doit \^etre un exécutable programmé dans un langage quelconque mais le mieux est de suivre les m\^emes recommandations que pour le fichier \verb|.verif|. Le script \verb|.pretrait| fournit un indicateur de réussite ou d'échec. Il doit donc afficher une des 2 lignes suivantes :\\ \hspace*{2cm}\begin{minipage}{\textwidth} \begin{verbatim} -resultat pretrait : OK (ou ECHEC) +resultat pretrait : OK +resultat pretrait : ECHEC \end{verbatim} \end{minipage} @@ -794,11 +804,12 @@ Ce script re %% \subsubsection*{$\bullet$ \texttt{.posttrait} :} \begin{itemize} -\item[] Le but de ce fichier est d'effectuer des traitements juste \bf après \rm le calcul. Il suit la m\^eme logique que le fichier \verb|.pretrait| avec 3 différences : 1) le message de réussite/échec n'a pas la m\^eme syntaxe, 2) il reçoit 3 arguments, 3) il est exécuté après le calcul Herezh++. Ce fichier doit \^etre un exécutable programmé dans un langage quelconque mais le mieux est de suivre les m\^emes recommandations que pour le fichier \verb|.verif|. Le script \verb|.posttrait| fournit un indicateur de réussite ou d'échec. Il doit donc afficher la ligne suivante :\\ +\item[] Le but de ce fichier est d'effectuer des traitements juste \bf après \rm le calcul. Il suit la m\^eme logique que le fichier \verb|.pretrait| avec 3 différences : 1) le message de réussite/échec n'a pas la m\^eme syntaxe, 2) il reçoit 3 arguments, 3) il est exécuté après le calcul Herezh++. Ce fichier doit \^etre un exécutable programmé dans un langage quelconque mais le mieux est de suivre les m\^emes recommandations que pour le fichier \verb|.verif|. Le script \verb|.posttrait| fournit un indicateur de réussite ou d'échec. Il doit donc afficher une des 2 lignes suivantes :\\ \hspace*{2cm}\begin{minipage}{\textwidth} \begin{verbatim} -resultat posttrait : OK (ou ECHEC) +resultat posttrait : OK +resultat posttrait : ECHEC \end{verbatim} \end{minipage} @@ -996,51 +1007,51 @@ Compte-tenu des diverses architectures des machines utilisateur, il est possible \item[-] création d'un nouveau script (\verb|Perl/genere_catalogue_tests.pl|). Il génère automatiquement une documentation sur les tests (résumé et index pour recherche par mots-clés). Ce document est placé à la racine du projet sous le nom \verb|documentation_tests.pdf|. Le mode de fonctionnement (lecture des fichiers README de chaque test) impose une nouvelle contrainte sur la forme des fichiers README (interdiction d'utiliser des lignes de 3 tirets ou plus dans le corps d'une rubrique README car ce motif signifie la fin d'une rubrique). Cette contrainte est le choix actuel mais peut \^etre modifié à tout moment en définissant une balise de fin de rubrique à utiliser dans les fichiers README (par exemple : \verb|fin_rubrique|) et en indiquant sa syntaxe dans la variable \verb|$MOTIF_FIN_RUBRIQUE| du script \verb|Perl/genere_catalogue_tests.pl|.\\ \item[-] Apparition d'une nouvelle rubrique README : \it Auteur \rm (renseigne le ou les auteurs du test avec prénom, nom, adresse mail). rubrique qui appara\^it dans la documentation des tests. \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2015-07-13 (Julien Troufflard) : \begin{itemize} \item[-] changement du nom du fichier de catalogue de tests (désormais s'appellera \verb|catalogue_test.pdf| au lieu de \verb|documentation_tests.pdf|)\\ \item[-] le fichier .pdf de la document utilisateur principale est désormais archivé sous CVS. Il s'appelle \verb|doc_procedure_verification.pdf| et est placé à la racine du projet (il s'agit simplement du fichier généré par \verb|Doc/doc_procedure_verification.tex|) \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2015-07-15 (Julien Troufflard) : \begin{itemize} \item[-] ajout d'une nouvelle version du script de lancement de la batterie. Cette nouvelle version en Perl s'appelle \verb|verifier_exeHZ.pl|. Elle reproduit la m\^eme chose que la version actuelle en zsh mais propose en plus des options pour éviter de lancer tous les tests. La version précédente \verb|verifier_exeHZ| est conservée mais renommée en \verb|verifier_exeHZ.zsh|. A terme, cette version zsh sera supprimée du projet CVS. \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2015-07-16 (Julien Troufflard) : \begin{itemize} \item[-] modif du script de génération automatique du catalogue de tests (script \verb|Perl/genere_catalogue_tests.pl|). Désormais, il est possible d'insérer des figures via une syntaxe par balises dans les fichiers README des tests. La méthode est expliquée à la section \ref{section_fichiers_obligatoires} "Fichiers obligatoires" (fichier \verb|README|)\\ \item[-] ajout du script \verb|Perl/verif_existence_repertoire_test.pl|. Permet de savoir si un nom de répertoire de test existe déjà dans la batterie. Est utile au moment de l'ajout d'un nouveau test pour aider à choisir le nom et éviter de choisir un nom déjà existant (m\^eme si ce n'est pas dans le m\^eme répertoire de destination car le catalogue des tests ne tient pas compte du chemin complet). Explication de son utilisation à la section \ref{subsection_vue_ensemble}\\ \item[-] méthodologie pour ajouter un nouveau test : il n'y avait aucune section exposant clairement les étapes à suivre pour créer et ajouter un test, d'où la création de la section \ref{subsection_methodologie} \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2015-09-29 (Julien Troufflard) : \begin{itemize} \item[-] modif du script \verb|Perl/verifier_exeHZ.pl| : le package \verb|Term::ReadKey| n'est pas forcément installé sur toutes les machines. Pour éviter d'\^etre pénalisé par ce package, son existence est vérifiée via la subroutine \verb|check_install| du package \verb|Module::Load::Conditional| et, si il existe, l'appel à \verb|Term::ReadKey| est fait via \verb|require| au lieu de \verb|use|. Cette manière de faire pourra \^etre appliquée partout où il y a un doute sur l'existence d'un package et définir ainsi un moyen de contourner l'absence d'un package.\\ \item[-] modif du script \verb|Perl/test.pl| : il y avait une faille dans la subroutine \verb|lancement_commande|. Sur certaines machines, la redirection \verb|tee| ne se fait pas instantanément. Ceci conduisait à croire que le fichier de redirection n'était pas créé et donc renvoyait un problème lié à la redirection de l'affichage. Désormais, un délai est accordé pour attendre la création de ce fichier (environ 2 secondes maximum avec un check de l'existence du fichier de redirection toutes les millisecondes). De manière indirecte, ceci a conduit à créer un nouvel indicateur de status pour signaler si le calcul ne se lance pas (\verb|probleme lancement calcul|). \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2015-09-30 (Julien Troufflard) : \begin{itemize} \item[-] modif de l'en-t\^ete de tous les scripts perl (y compris les \verb|.verif| de la batterie) : amélioration de la portabilité en modifiant le shebang selon \url{https://en.wikipedia.org/wiki/Shebang_\%28Unix\%29#Portability}. Désormais, les scripts commencent par \verb|#!/usr/bin/env perl| au lieu du chemin absolu \verb|#!/usr/bin/perl| qui pourrait ne pas fonctionner sur certaines machines à l'architecture atypique (et actualisation de la section \ref{section_fichiers_facultatifs} pour signaler cette habitude à prendre pour les fichiers \verb|.verif|).\\ remarque : modif également pour le script zsh \verb|verifier_exeHZ.zsh| \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2015-11-24 (Julien Troufflard) : \begin{itemize} \item[-] modif script \verb|Perl/genere_catalogue_tests.pl| :\\ 1) possibilité d'insérer un espace "{\textbackslash}hspace" entre les figures \verb|\figures| (voir section \ref{section_fichiers_obligatoires} concernant le fichier \verb|README|)\\ 2) possibilité d'insérer des formules et caractères mathématiques dans les fichiers \verb|README| entre simples \$ ou doubles \$\$ (voir section \ref{section_fichiers_obligatoires} concernant le fichier \verb|README|) \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2015-11-25 (Julien Troufflard) : \begin{itemize} \item[-] modif script \verb|Perl/genere_rapport.pl| : modifification de l'en-t\^ete du rapport de tests avec notamment l'affichage du nom de la machine (via variable environnement \$HOST) @@ -1053,8 +1064,8 @@ remarque : modif - dans la subroutine \verb|lancement_commande()| : lancement de Herezh via la tournure \verb/tsch -c "time HZ -f fic.info" | tee fic.log/ pour récuperer le temps CPU dans le fichier .log (l'utilisation de \verb|tcsh -c|, c'est uniquement pour que le résultat de \verb|time| soit bien récupéré sur \verb|STDOUT|, donc dans \verb|fic.log|)\\ - juste après l'appel à \verb|lancement_commande()| $\Rightarrow$ saisie du temps de calcul dans le \verb|.log| et affichage dans le rapport de test (juste après le nom du test) \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2015-11-25(bis) (Julien Troufflard) : \begin{itemize} \item[-] modif scripts \verb|Perl/genere_catalogue_tests.pl| et \verb|Perl/genere_rapport.pl| : suppression de l'option \verb|-s| dans le shebang (inutile et en plus génère un bug sur Linux quand on utilise la tournure \verb|#/usr/bin/env perl -s|) @@ -1064,8 +1075,8 @@ remarque : modif 1) modification de la comparaison pour gérer le cas où le nombre est très petit (par exemple : 1.e-15 comparé à 1.e-30 génère une erreur relative énorme). Ce problème avait été déjà pensé dans la version historique de la vérification Herezh (Laurent Mahéo) mais malheureusement non traité dans la nouvelle version. Désormais, on traite ce problème en arrondissant les grandeurs à 1.e-12 près.\\ 2) correction d'une erreur dans la comparaison absolue : par erreur, la comparaison se faisait toujours par rapport à la précision absolue par défaut (\verb|$PREC_ABSOLU|) sans tenir compte de l'éventuelle modification par fichier \verb|.precision| \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2016-02-12 (Julien Troufflard) : \begin{itemize} \item[-] modif script \verb|Perl/genere_catalogue_tests.pl| :\\ @@ -1078,34 +1089,43 @@ remarque : modif \item[-] ajout dans la documentation d'un paragraphe concernant la génération du catalogue de tests (section \ref{section_actualisation_catalogue_tests}) \item[-] ajout dans la documentation d'un paragraphe regroupant les personnes référentes à contacter (section \ref{section_personnes_referentes}) \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2016-03-11 (Julien Troufflard) : \begin{itemize} \item[-] modif des scripts \verb|verifier_exeHZ.pl| et \verb|Perl/test.pl| dans le but de permettre un arr\^et Ctrl-c propre en cours de batterie :\\ pour ces 2 scripts, une gestion des signaux d'interruption \verb|INT| et \verb|TERM| a été introduite (subroutine \verb|arret_force()| et un fichier (texte) temporaire est utilisé pour permettre un dialogue entre les 2 processus (fichier de nom \verb|//tmp/verifier_exeHZ_2_test_$PID.com/| où \verb|$PID| est le pid du processus \verb|verifier_exeHZ.pl|). Un nouveau status de test existe désormais dans le rapport de test : \verb|ECHEC : ***INTERRUPTION PAR L UTILISATEUR***|. A noter que le rapport de test est tout de m\^eme généré en bonne et due forme pour les tests déjà terminés avant Ctrl-c (mais le rapport n'est pas automatiquement affiché). A noter également que, étant données les modifs de \verb|Perl/test.pl|, l'interruption \verb|ctrl+c| n'est pas trop mal avec la version \verb|zsh| \verb|verifier_exeHZ.zsh| mais c'est tout de m\^eme moins bien ma\^itrisé (à éviter). \item[-] la section \ref{section_lancement_batterie_tests} de ce document a été divisé en 2 sous-sections. Une section est dédiée à la procédure d'interruption \verb|ctrl+c| (pour expliquer mais aussi pour pointer du doigt le fait qu'une interruption volontaire n'est pas toujours une opération sans conséquences). \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2016-03-24 (Julien Troufflard) : \begin{itemize} \item[-] modif du script \verb|Perl/test.pl| : ajout de la possibilité de faire des traitements avant et après calcul via un script \verb|.pretrait| et \verb|.posttrait| (voir section \ref{section_fichiers_facultatifs}) \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2016-07-01 (Julien Troufflard) : \begin{itemize} \item[-] ajout d'une section FAQ dans cette doc (section \ref{section_FAQ}) \item[-] modif du script \verb|Perl/test.pl| : affichage du répertoire de travail dans le terminal (répertoire \verb|$repertoire_de_travail|) \end{itemize}%tiret -~\\ +~\\ \item[$\bullet$] 2016-08-30 (Julien Troufflard) : \begin{itemize} \item[-] modif du script \verb|Perl/genere_catalogue_tests.pl| : Désormais, on peut écrire directement du code latex dans les fichiers \verb|README| en utilisant les balises \verb|\latex_brut| et \verb|\fin_latex_brut| (voir section \ref{section_fichiers_obligatoires}) \end{itemize}%tiret +~\\ +\item[$\bullet$] 2016-09-07 (Julien Troufflard) : +\begin{itemize} +\item[-] ajout d'un nouveau répertoire dans l'arborescence : le répertoire \verb|Tests_en_attente_debug/| est créé dans le but d'y placer des nouveaux tests qui ne fonctionnent pas encore. Ils sont en attente de debuggage pour \^etre à terme déplacés dans un endroit approprié du répertoire \verb|Batterie/| une fois résolu. \bf {\color{red} Attention :} \rm il s'agit bien d'y placer des \underline{nouveaux} tests qui ne marchent pas encore. Il n'est pas question d'y déplacer d'anciens tests déjà présents dans \verb|Batterie/| sous le prétexte qu'ils ne fonctionnent plus suite à un changement de version Herezh +\item[-] modif des scripts \verb|verifier_exeHZ.pl|, \verb|verifier_exeHZ.zsh|, \verb|Perl/genere_catalogue_tests.pl|, \verb|Perl/verif_existence_repertoire_test.pl| : on omet le répertoire \verb|Tests_en_attente_debug/| pour lister les tests de la batterie (via l'option \verb|-not -path| dans la commande linux \verb|find|) +\item[-] modif du script \verb|Perl/test.pl| : ajout d'un 3ème argument pour le script \verb|.verif|. Désormais, le nom du fichier \verb|.info| est fourni en 3ème argument (voir la partie relative au script \verb|.verif| en section \ref{section_fichiers_facultatifs}) +\end{itemize}%tiret + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %template d ajout d une nouvelle mise à jour (composé d'une puce "bullet" avec Date et auteur de la modif, suivie d une série de puce "-" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Perl/genere_catalogue_tests.pl b/Perl/genere_catalogue_tests.pl index a9333f1..42e0b3a 100755 --- a/Perl/genere_catalogue_tests.pl +++ b/Perl/genere_catalogue_tests.pl @@ -174,11 +174,14 @@ verif_commande('makeindex') or die "\nErreur (prog:$NOM_PROG) : commande makeind ######################################################################################################### # liste des repertoires de test ######################################################################################################### +# +# RAPPEL : le repertoire Tests_en_attente_debug n est pas concerne (on le squizze avec une option "-not -path" dans la recherche find +# #liste des repertoires de tests rapides (Test_R) -my @REP_TESTS_R = map {chomp($_); $_} qx(find . -name "Test_R*" -type d); +my @REP_TESTS_R = map {chomp($_); $_} qx(find . -not -path "*Tests_en_attente_debug*" -name "Test_R*" -type d); #print "$_\n" for @REP_TESTS_R; exit; #liste des repertoires de tests rapides (Test_R) -my @REP_TESTS_L = map {chomp($_); $_} qx(find . -name "Test_L*" -type d); +my @REP_TESTS_L = map {chomp($_); $_} qx(find . -not -path "*Tests_en_attente_debug*" -name "Test_L*" -type d); #print "$_\n" for @REP_TESTS_L; exit; diff --git a/Perl/test.pl b/Perl/test.pl index 6152955..b395460 100755 --- a/Perl/test.pl +++ b/Perl/test.pl @@ -766,7 +766,7 @@ BOUCLE_TEST:for(my $no_test=1; $no_test<=$nb_CVisu; $no_test++) { print " \#----------------\n"; print " \# Debut de l affichage produit par le script $script_verif\n"; print " \#----------------\n"; - system("$script_verif $hzchemin $fichier_test.log | tee $script_verif.log"); + system("$script_verif $hzchemin $fichier_test.log $fichier_test.info | tee $script_verif.log"); print " \#----------------\n"; print " \# Fin de l affichage produit par le script $script_verif\n"; print " \#----------------\n"; diff --git a/Perl/verif_existence_repertoire_test.pl b/Perl/verif_existence_repertoire_test.pl index 987eebe..91893ca 100755 --- a/Perl/verif_existence_repertoire_test.pl +++ b/Perl/verif_existence_repertoire_test.pl @@ -86,10 +86,13 @@ my ($nom_rep_propose_sans_type) = $nom_rep_propose =~ /^Test_[RL]_+(\S+)/; #liste des repertoires de test existants (en chemin complet) +## +## RAPPEL : le repertoire Tests_en_attente_debug n est pas concerne (on le squizze avec une option "-not -path" dans la recherche find +## #--tests rapides (Test_R_) -my @rep_tests_existants_R = map {chomp; $_} qx(find . -name "Test_R_*" -type d); +my @rep_tests_existants_R = map {chomp; $_} qx(find . -not -path "*Tests_en_attente_debug*" -name "Test_R_*" -type d); #--tests rapides (Test_L_) -my @rep_tests_existants_L = map {chomp; $_} qx(find . -name "Test_L_*" -type d); +my @rep_tests_existants_L = map {chomp; $_} qx(find . -not -path "*Tests_en_attente_debug*" -name "Test_L_*" -type d); ###print "$_\n" for (@rep_tests_existants_R, @rep_tests_existants_L); exit; #comparaison entre les repertoires @rep_tests_existants et le repertoire propose en argument $nom_rep_propose diff --git a/Tests_en_attente_debug/Test_R_RESTART_1D/README b/Tests_en_attente_debug/Test_R_RESTART_1D/README new file mode 100755 index 0000000..d96fd23 --- /dev/null +++ b/Tests_en_attente_debug/Test_R_RESTART_1D/README @@ -0,0 +1,46 @@ +------------------------------------------------------ +Auteur +------------------------------------------------------ +Julien Troufflard (troufflard@univ-ubs.fr) + + +------------------------------------------------------ +Mots-cles +------------------------------------------------------ +RESTART + + +------------------------------------------------------ +But du test +------------------------------------------------------ +Vérification du RESTART pour un élément 1D + + +------------------------------------------------------ +Description du calcul +------------------------------------------------------ +Calcul simple de traction sur une barre (POUT BIE1) encastrée-libre afin de vérifier le fonctionnement d un RESTART. Le calcul se fait en deux parties. Jusqu'au temps 1, la barre est soumise à une force ponctuelle. Ensuite, le deuxième calcul (RESTART) soumet la barre à la meme force jusqu au temps 2. Si la relecture des informations est faite correctement lors du RESTART, les contraintes, déformations et déplacements doivent donc rester inchangés à l'issue de ce deuxième calcul. + +\latex_brut +Test implanté suite à la modif Herezh en réponse à la demande \#119 sur le site d Herezh : + + \url{http://kleger.univ-ubs.fr/Herezh/issues/119} (voir ce lien pour plus d infos) + +\fin_latex_brut + + +--------------------------------------------------- +Informations sur les fichiers facultatifs +--------------------------------------------------- +Le script test_RESTART_1D.posttrait1 permet de changer le TEMPSFIN pour le deuxième calcul, et de sauvegarder le .maple du premier calcul dans le but de le comparer au .maple du deuxième calcul. En fait, le .maple du premier calcul est sauvegardé en tant que .maple.ref2, de manière à provoquer une comparaison de .maple classique à l issue du deuxième calcul. Le script test_RESTART_1D.posttrait1 remplace le temps 1 par un temps de 2 dans ce .maple.ref2, de manière à rendre possible la comparaison au .maple du deuxième calcul. + + +------------------------------------------------------------- +Grandeurs de comparaison +------------------------------------------------------------- +au point d intégration 1 de l élément 1 : + - contrainte : SIG11 + - déformation : EPS11 + +au noeud 2 (lieu d application de la force ponctuelle) : + - déplacement : X1 diff --git a/Tests_en_attente_debug/Test_R_RESTART_1D/barre_1elt.her b/Tests_en_attente_debug/Test_R_RESTART_1D/barre_1elt.her new file mode 100644 index 0000000..6154680 --- /dev/null +++ b/Tests_en_attente_debug/Test_R_RESTART_1D/barre_1elt.her @@ -0,0 +1,19 @@ +nom_maillage barre_1elt + +noeuds +2 NOEUDS + +1 0 0 0 +2 1 0 0 + +N1 1 +N2 2 + +elements +1 ELEMENTS + +1 POUT BIE1 1 2 + +A_to 1 1 + +E_to 1 diff --git a/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.CVisu1 b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.CVisu1 new file mode 100644 index 0000000..5ae0e4b --- /dev/null +++ b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.CVisu1 @@ -0,0 +1,114 @@ +############################################################################################### +# Fichier de commande pour la visualisation elements finis # +# Herezh++ V6.709 # +# Copyright (c) 1997-2015, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + debut_fichier_commande_visu # >>>>>> le mot cle: + # permet au programme de se positionner au debut du fichier, il est indispensable + + + # ================================================================================= + # || ***** demande d une visualisation maple: ***** || + # ================================================================================= + # un mot cle de debut (debut_visualisation_maple) + # un mot cle de fin ( fin_visualisation_maple) + # la seule presence de ces deux mots cle suffit a activer la visualisation maple + debut_visualisation_maple + + # ----------------------------- definition de la liste des increments a balayer: ---------------- + debut_list_increment # un mot cle de debut de liste + actif 1 # <0 ou 1> indique si l ordre est actif ou non + # une liste d entier separee par des blancs, ou le mot cle (tous_les_increments) + # un mot cle de fin de liste ( fin_list_increment) + dernier_increment fin_list_increment + + # ----------------------------- choix des maillages a visualiser: ---------------- + # la liste est facultative, par defaut la visualisation concerne le premier maillage + debut_choix_maillage # un mot cle de debut, + actif 0 # <0 ou 1> indique si l ordre est actif ou non + # une liste d entiers , puis , sur une meme ligne + 1 fin_choix_maillage + + # ----------------------------- definition des grandeurs a visualiser (maple): ---------------- + debut_grandeurs_maple # un mot cle de debut (debut_grandeurs_maple), + actif 1 # <0 ou 1> indique si l ordre est actif ou non + # les grandeurs globales (energie, puissance ....) un mot cle de debut, le nom des grandeurs puis un mot de fin + debut_grandeurs_globales fin_grandeurs_globales + # ensuite pour chaque maillage:, + # le numero du maillage , + # les infos pour la visualisation eventuelle des torseurs de reaction, + # les infos pour la visualisation eventuelle aux noeud, + # - tout d abord les ddl principaux (position, deplacements, temperature etc.) + # - puis les ddl etendus et particulieres qui peuvent representer des grandeurs diverses + # les infos pour la visualisation eventuelle aux elements, + # - tout d abord les grandeurs generiques (deformations, contraintes etc.) + # - puis les grandeurs particulieres, par exemple specifique a une loi de comp ou une mesure de def + # enfin un mot cle de fin ( fin_grandeurs_maple) + 1 # le numero de maillage + # les torseurs de reaction: un mot cle de debut: debut_list_torseur_reaction + # une liste de nom , puis + debut_list_torseur_reaction fin_list_torseur_reaction + debut_liste_ddl_et_noeud # ** debut des ddl principaux aux noeuds + # debut de la liste de noeuds, puis une liste de numero de noeud , puis + deb_list_noeud 2 fin_list_noeud + # debut de la liste des ref de noeuds, puis une liste de nom , puis + deb_list_ref_noeud fin_list_ref_noeud + # debut de la liste des ddl a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_noeud X1 fin_list_ddl_noeud + type_sortie_ddl_retenue= 0 + # debut de la liste des ddl etendus a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_etendu_noeud fin_list_ddl_etendu_noeud # fin des ddl etendu aux noeuds + # debut de la liste des grandeurs particulieres a considerer aux noeuds, (une liste de string), puis + deb_list_GrandParticuliere_noeud fin_list_GrandParticuliere_noeud # fin des grandeurs particulieres aux noeuds + fin_liste_ddl_et_noeud # fin des grandeurs aux noeuds + debut_liste_ddl_ptinteg # ** debut des grandeurs aux elements + # debut de la liste des elements et points d integration, une liste de (un element, un numero de pt d integ), puis + deb_list_NbElement_NbPtInteg fin_list_NbElement_NbPtInteg + # debut de la liste des ref d elements, puis une liste de: nom + numero d integ, puis + deb_list_ref_element E_tout 1 fin_list_ref_element + # debut de la liste des ref de ptinteg d elements, puis une liste de: nom puis + deb_list_ref_ptinteg_element fin_list_ref_ptinteg_element + # debut de la liste des ddl a considerer pour les elements, (une liste de ddl), puis + deb_list_ddl_element SIG11 EPS11 fin_list_ddl_element + # debut de la liste des grandeurs particulieres a considerer pour les elements, (une liste de string), puis + deb_list_GrandParticuliere_element fin_list_GrandParticuliere_element # fin des grandeurs particulieres aux elements + # tableau de grandeurs evoluees aux elements a visualiser, un par maillage + deb_list_GrandEvoluee_element fin_list_GrandEvoluee_element + fin_liste_ddl_ptinteg # fin des grandeurs aux elements +# informations particuliere dans le cas ou il y a une animation +# type_xi indique si oui ou non les grandeurs a tracer sont aux noeuds (sinon c est au elements) +# x1 et x2 indiquent les noms des ddls des grandeurs en x et y. accroi_x1 et accroi_x2 indiquent +# si oui ou non x1 et x2 represente l accroissement entre 0 et t de la grandeur ou bien la grandeur elle meme. + debut_info_particulier grandeur_au_noeud? 1 x1= NU_DDL x2= NU_DDL accroi_x1= 0 accroi_x2= 1 fin_info_particulier +# un parametre de pilotage du style de sortie + parametre_style_de_sortie 1 +# un parametre indiquant si les tenseurs sont en absolue (rep 1) ou suivant un repere ad hoc +# (tangent pour les coques, suivant la fibre moyenne pour les element 1D ) + tenseur_en_absolue_ 0 + fin_grandeurs_maple # fin des grandeurs a visualiser au format maple + + # ----------------------------- definition des parametres d animation: ---------------- + debut_animation # un mot cle de debut de liste (debut_animation) + actif 0 # <0 ou 1> indique si l ordre est actif ou non + # des parametres avec des valeurs: (sur une meme ligne) + cycleInterval 8 # cycleInterval (indique le temps en seconde du cycle de l animation) + fin_animation # un mot cle de fin + + fin_visualisation_maple + # ================================================================================= + # || fin de la visualisation maple || + # ================================================================================= + + + + + + fin_fichier_commande_visu # <<<<<< le mot cle permet + # l arret de la lecture des commandes, apres ce mot cle, aucune commande n est lu, de plus + # sans le mot cle de fin de fichier, le fichier n est pas valide + + ############################################################################################### diff --git a/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.CVisu2 b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.CVisu2 new file mode 100644 index 0000000..5ae0e4b --- /dev/null +++ b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.CVisu2 @@ -0,0 +1,114 @@ +############################################################################################### +# Fichier de commande pour la visualisation elements finis # +# Herezh++ V6.709 # +# Copyright (c) 1997-2015, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + debut_fichier_commande_visu # >>>>>> le mot cle: + # permet au programme de se positionner au debut du fichier, il est indispensable + + + # ================================================================================= + # || ***** demande d une visualisation maple: ***** || + # ================================================================================= + # un mot cle de debut (debut_visualisation_maple) + # un mot cle de fin ( fin_visualisation_maple) + # la seule presence de ces deux mots cle suffit a activer la visualisation maple + debut_visualisation_maple + + # ----------------------------- definition de la liste des increments a balayer: ---------------- + debut_list_increment # un mot cle de debut de liste + actif 1 # <0 ou 1> indique si l ordre est actif ou non + # une liste d entier separee par des blancs, ou le mot cle (tous_les_increments) + # un mot cle de fin de liste ( fin_list_increment) + dernier_increment fin_list_increment + + # ----------------------------- choix des maillages a visualiser: ---------------- + # la liste est facultative, par defaut la visualisation concerne le premier maillage + debut_choix_maillage # un mot cle de debut, + actif 0 # <0 ou 1> indique si l ordre est actif ou non + # une liste d entiers , puis , sur une meme ligne + 1 fin_choix_maillage + + # ----------------------------- definition des grandeurs a visualiser (maple): ---------------- + debut_grandeurs_maple # un mot cle de debut (debut_grandeurs_maple), + actif 1 # <0 ou 1> indique si l ordre est actif ou non + # les grandeurs globales (energie, puissance ....) un mot cle de debut, le nom des grandeurs puis un mot de fin + debut_grandeurs_globales fin_grandeurs_globales + # ensuite pour chaque maillage:, + # le numero du maillage , + # les infos pour la visualisation eventuelle des torseurs de reaction, + # les infos pour la visualisation eventuelle aux noeud, + # - tout d abord les ddl principaux (position, deplacements, temperature etc.) + # - puis les ddl etendus et particulieres qui peuvent representer des grandeurs diverses + # les infos pour la visualisation eventuelle aux elements, + # - tout d abord les grandeurs generiques (deformations, contraintes etc.) + # - puis les grandeurs particulieres, par exemple specifique a une loi de comp ou une mesure de def + # enfin un mot cle de fin ( fin_grandeurs_maple) + 1 # le numero de maillage + # les torseurs de reaction: un mot cle de debut: debut_list_torseur_reaction + # une liste de nom , puis + debut_list_torseur_reaction fin_list_torseur_reaction + debut_liste_ddl_et_noeud # ** debut des ddl principaux aux noeuds + # debut de la liste de noeuds, puis une liste de numero de noeud , puis + deb_list_noeud 2 fin_list_noeud + # debut de la liste des ref de noeuds, puis une liste de nom , puis + deb_list_ref_noeud fin_list_ref_noeud + # debut de la liste des ddl a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_noeud X1 fin_list_ddl_noeud + type_sortie_ddl_retenue= 0 + # debut de la liste des ddl etendus a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_etendu_noeud fin_list_ddl_etendu_noeud # fin des ddl etendu aux noeuds + # debut de la liste des grandeurs particulieres a considerer aux noeuds, (une liste de string), puis + deb_list_GrandParticuliere_noeud fin_list_GrandParticuliere_noeud # fin des grandeurs particulieres aux noeuds + fin_liste_ddl_et_noeud # fin des grandeurs aux noeuds + debut_liste_ddl_ptinteg # ** debut des grandeurs aux elements + # debut de la liste des elements et points d integration, une liste de (un element, un numero de pt d integ), puis + deb_list_NbElement_NbPtInteg fin_list_NbElement_NbPtInteg + # debut de la liste des ref d elements, puis une liste de: nom + numero d integ, puis + deb_list_ref_element E_tout 1 fin_list_ref_element + # debut de la liste des ref de ptinteg d elements, puis une liste de: nom puis + deb_list_ref_ptinteg_element fin_list_ref_ptinteg_element + # debut de la liste des ddl a considerer pour les elements, (une liste de ddl), puis + deb_list_ddl_element SIG11 EPS11 fin_list_ddl_element + # debut de la liste des grandeurs particulieres a considerer pour les elements, (une liste de string), puis + deb_list_GrandParticuliere_element fin_list_GrandParticuliere_element # fin des grandeurs particulieres aux elements + # tableau de grandeurs evoluees aux elements a visualiser, un par maillage + deb_list_GrandEvoluee_element fin_list_GrandEvoluee_element + fin_liste_ddl_ptinteg # fin des grandeurs aux elements +# informations particuliere dans le cas ou il y a une animation +# type_xi indique si oui ou non les grandeurs a tracer sont aux noeuds (sinon c est au elements) +# x1 et x2 indiquent les noms des ddls des grandeurs en x et y. accroi_x1 et accroi_x2 indiquent +# si oui ou non x1 et x2 represente l accroissement entre 0 et t de la grandeur ou bien la grandeur elle meme. + debut_info_particulier grandeur_au_noeud? 1 x1= NU_DDL x2= NU_DDL accroi_x1= 0 accroi_x2= 1 fin_info_particulier +# un parametre de pilotage du style de sortie + parametre_style_de_sortie 1 +# un parametre indiquant si les tenseurs sont en absolue (rep 1) ou suivant un repere ad hoc +# (tangent pour les coques, suivant la fibre moyenne pour les element 1D ) + tenseur_en_absolue_ 0 + fin_grandeurs_maple # fin des grandeurs a visualiser au format maple + + # ----------------------------- definition des parametres d animation: ---------------- + debut_animation # un mot cle de debut de liste (debut_animation) + actif 0 # <0 ou 1> indique si l ordre est actif ou non + # des parametres avec des valeurs: (sur une meme ligne) + cycleInterval 8 # cycleInterval (indique le temps en seconde du cycle de l animation) + fin_animation # un mot cle de fin + + fin_visualisation_maple + # ================================================================================= + # || fin de la visualisation maple || + # ================================================================================= + + + + + + fin_fichier_commande_visu # <<<<<< le mot cle permet + # l arret de la lecture des commandes, apres ce mot cle, aucune commande n est lu, de plus + # sans le mot cle de fin de fichier, le fichier n est pas valide + + ############################################################################################### diff --git a/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.info b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.info new file mode 100644 index 0000000..812ea6c --- /dev/null +++ b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.info @@ -0,0 +1,71 @@ +dimension 3 + +niveau_commentaire 3 + +TYPE_DE_CALCUL +non_dynamique avec plus lectureCommandesVisu + + +< barre_1elt.her + + +les_courbes_1D + rampe COURBEPOLYLINEAIRE_1_D + Debut_des_coordonnees_des_points + Coordonnee dim= 2 0. 0. + Coordonnee dim= 2 1. 1. + Coordonnee dim= 2 2. 1. + Fin_des_coordonnees_des_points + + +choix_materiaux +E_tout MAT + + +materiaux +MAT ISOELAS1D +1000. 0.3 + + +masse_volumique +E_tout 1. + + +sections +E_tout 0.1 + + +charges +N2 PONCTUELLE 10 0 0 COURBE_CHARGE: rampe ECHELLE: 1 + + +blocages +N1 UX UY UZ +N2 UY UZ + + +controle +DELTAtMINI 1. +DELTAtMAXI 1. +TEMPSFIN 1. +DELTAt 1. +ITERATIONS 15 +PRECISION 1e-3 +SAUVEGARDE 1 +MAXINCRE 9999999 +NORME Residu/Reaction_et_VarRes + + +para_pilotage_equi_global + + +para_syteme_lineaire + + +para_affichage + + +resultats pas_de_sortie_finale_ +COPIE 0 + +_fin_point_info_ diff --git a/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.posttrait1 b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.posttrait1 new file mode 100755 index 0000000..ee74292 --- /dev/null +++ b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D.posttrait1 @@ -0,0 +1,82 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use English; +use File::Basename; +use Cwd; +my $NOM_PROG = basename $PROGRAM_NAME; + +# +# +# les buts de ce script sont : +# 1- changer le TEMPSFIN (passer de 1 a 2) +# 2- conserver le .maple du calcul en vue d une comparaison future avec le .maple du calcul .CVisu2 +# (ce .maple sera nomme test_RESTART_1D_princ.maple.ref2, c est-a-dire que l on va faire en sorte +# qu il devienne un .maple de reference pour le futur deuxieme calcul .CVisu2) +# 3- changement du temps dans le .maple test_RESTART_1D_princ.maple.ref2 +# (comme ce .maple provient du calcul .CVisu1 pour un TEMPSFIN egal a 1, on modifie arbitrairement le +# temps ecrit dans le .maple pour pouvoir le comparer proprement au calcul .CVisu2 pour un TEMPSFIN egal +# a 2. Sinon, il y a aura forcement ECHEC de la comparaison de maple pour le calcul .CVisu2 a cause d une +# difference de grandeur en colonne 1) +# +# + +#chemin absolu vers l executable Herezh +my $hzchemin = shift(@ARGV); + +#nom du fichier .info +my $finfo = shift(@ARGV); + + +#------------------------ +#changement TEMPSFIN +#------------------------ +#ouverture .info d origine +open(FIC1, "<$finfo") or do { + print "Erreur (prog:$NOM_PROG) : probleme en ouverture du fichier $finfo ($!)...\n\n"; + print "resultat posttrait : ECHEC\n"; + }; +open(FIC2, ">$finfo.tmp") or do { + print "Erreur (prog:$NOM_PROG) : probleme en ouverture du fichier $finfo.tmp ($!)...\n\n"; + print "resultat posttrait : ECHEC\n"; + }; +while() { + + #modif TEMPSFIN + $_ = 'TEMPSFIN 2.' if(/^\s*TEMPSFIN /); + + #ecriture dans le fichier temporaire + print FIC2; +} +close(FIC2); +close(FIC1); + +#remplacement du .info d origine par le .info temporaire +system("mv -f $finfo.tmp $finfo"); + + +#------------------------ +#sauvegarde du .maple en .maple.ref2 +#------------------------ +(my $fmaple = $finfo) =~ s/.info$/_princ.maple/; +#verif existence du fichier .maple +(-e $fmaple) or do { + print "Erreur (prog:$NOM_PROG) : fichier maple $fmaple introuvable...\n\n"; + print "resultat posttrait : ECHEC\n"; + }; +#recopie du .maple sous le nom sauvegarde_maple_CVisu1.maple +system("cp $fmaple $fmaple.ref2"); + +#verif existence fichier sauvegarde_maple_CVisu1.maple +(-e "$fmaple.ref2") or do { + print "Erreur (prog:$NOM_PROG) : fichier $fmaple.ref2 n a pas ete cree...\n\n"; + print "resultat posttrait : ECHEC\n"; + }; + +#reussite du script +print "resultat posttrait : OK\n"; + + +print "coucou\n"; +sleep 10; +print "couycou\n"; diff --git a/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D_princ.maple.ref1 b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D_princ.maple.ref1 new file mode 100644 index 0000000..df5b930 --- /dev/null +++ b/Tests_en_attente_debug/Test_R_RESTART_1D/test_RESTART_1D_princ.maple.ref1 @@ -0,0 +1,100 @@ +#fichier au format maple6 +############################################################################################### +# Visualisation elements finis : Herezh++ V6.770 # +# Copyright (c) 1997-2016, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + # entete des donnees : informations gererales: on trouve successivement: + # >> le nombre de grandeurs globales (peut etre nul) suivi des identificateurs + # precedes du numero de colonne entre crochet + # >> le nombre de maillages m, et dimension de l'espace de travail + # puis pour chaque maillage, + # >> le nombre de torseurs de reaction (peut etre nul), le nombre total de reel qui va etre ecrit + # correspondant aux composantes des torseurs, puis les noms de ref associee suivi des positions + # des composantes entre crochet accolees a un identificateur: R pour reaction, M pour moment + # ensuite pour les moyennes, sommes, maxi etc. calculees sur des references de noeuds + # >> le nombre de ref de noeuds, nombre total de grandeurs associees + # puis pour chaque maillage + # le numero de maillage puis pour chaque reference de noeuds + # le nom de la reference, le nombre de noeud de la ref, le nombre de grandeurs qui vont etre ecrites + # puis entre crochet la position suivi de la signification de chaque grandeur + # + # ensuite pour les moyennes, sommes, maxi etc. calculees sur des references d'elements ou de pti + # >> le nombre de ref d'element+ref de pti, nombre total de grandeurs associees + # puis pour chaque maillage + # le numero de maillage puis pour chaque reference d'element et de pti + # le nom de la reference, le nombre d'element de la ref, le nombre de grandeurs qui vont etre ecrites + # puis entre crochet la position suivi de la signification de chaque grandeur + # + # puis pour chaque maillage + # >> le nombre de noeud n (peut etre nul) ou il y a des grandeurs en sortie , + # puis le nombre des grandeurs p1 correspondantes, la position entre crochet des coordonnees + # et enfin l'idendificateur de ces grandeurs(p1 chaines de caractere) + # precedes du numero de colonne correspondant entre crochet + # puis pour chaque maillage + # >> le nombre de couples element-pt_integ (peut etre nulle) ou il y a des grandeurs en sortie , + # les grandeurs aux elements sont decomposees en 2 listes: la premiere de quantite P2 correspondant + # a des grandeurs generiques, la seconde de quantite P3 corresponds aux grandeurs specifiques, + # on trouve donc a la suite du nombre d'element: le nombre P2, suivi de P2 identificateurs de ddl + # chacun precedes du numero de colonne entre crochet + # puis le nombre P3, suivi de P3 identificateurs+categorie+type (chaines de caracteres), + # suivi entre crochet, de la plage des numeros de colonnes, correspondant + # chacun sur une ligne differentes + # ==== NB: pour les grandeurs specifique tensorielle: exemple d'ordre en 2D: + # tenseur symetrique, A(1,1) A(2,1) A(2,2), non symetrique A(1,1) A(1,2) A(2,1) A(2,2) + # en 3D c'est: tenseur symetrique, A(1,1) A(2,1) A(2,2) A(3,1) A(3,2) A(3,3) + # non symetrique A(1,1) A(1,2) A(2,1) A(2,2) A(2,3) A(3,1) A(3,2) A(3,3) + # ** dans le cas ou il n'y a qu'un seul increment en sortie, pour les grandeurs aux noeuds et aux elements, + # ** les informations peuvent etre decoupees selon: une ligne = un noeud, et le temps n'est pas indique + # ** ( cf: parametre_style_de_sortie = 0) + +#==================================================================== +#|| recapitulatif des differentes grandeurs par colonne || +#==================================================================== +#---------------------------------- grandeur globales ------------------------------------ +#0 (nombre de grandeurs globales) +#---------------------------------- maillage et dimension -------------------------------- +#1 3 (nombre de maillages et dimension) +#---------------------------------- torseurs de reactions -------------------------------- +#0 0 (nombre de torseurs et nombre total de grandeurs associees) +# +#-------- moyenne, somme, maxi etc. de grandeurs aux noeuds pour des ref --------------- +#0 0 (nombre de ref de noeud et nombre total de grandeurs associees) +# +#-------- moyenne, somme, maxi etc. de grandeurs aux elements pour des ref --------------- +#0 0 (nombre de ref d'element et nombre total de grandeurs associees) +# +#---------------------------------- grandeurs aux noeuds -------------------------------- +#1 1 (nombre de noeuds, nombre total de grandeurs associees) +# noeud_2 [2]X [3]Y [4]Z [5]X1 ; +# +#---------------------------------- grandeurs aux elements ------------------------------ +#1 2 00 (nombre total d'elements, nombre totale de grandeurs associees, nombre de grandeurs particulieres, nombre de grandeurs tensorielles) +# reference E_tout : element_1 pt_integ_1: [7]X [8]Y [9]Z [10] SIG11 [11] EPS11 +# +# +#==================================================================== +#|| fin du recapitulatif des differentes grandeurs || +#==================================================================== + + # ensuite les donnees sont organisees sur differentes lignes, chaques lignes correspondant + # a un calcul (par exemple un pas de temps), sur chaque ligne il y a m enregistrement, chacun + # correspondant a un maillage. On trouve pour chaque enregistrement successivement : + # s'il y a des grandeurs globales: le temps puis les grandeurs globales, + # puis s'il y a des torseurs de reaction : + # de nouveau le temps, les composantes de la resultante puis les composantes du moments + # donc en 1D -> 1 reels (resultante), en 2D -> 3 reels (resultante 2, moment 1) et en 3D 6 reels + # puis s'il y a des grandeurs aux noeuds: de nouveau le temps + # les coordonnees a t du premier noeud suivi des p1 grandeurs correspondant au premier noeud + # puis les coordonnees du second noeud, les p1 grandeurs etc. pour tous les noeuds + # puis s'il y a des grandeur aux elements: + # le temps, puis les coordonnees a t du point d'integration d'un element (pour les grandeurs generiques) + # suivi des p2 grandeurs correspondantes puis les coordonnees a t du point d'integration + # correspondant aux grandeurs specifiques suivi des p3 grandeurs correspondantes + # puis les coordonnees d'un second point d'integration d'un element, les p2 grandeurs + # etc. pour tous les points d'integration - element + + 1.000000000000e+00 1.129446618973e+00 0.000000000000e+00 0.000000000000e+00 1.129446618973e+00 1.000000000000e+00 5.647233094863e-01 0.000000000000e+00 0.000000000000e+00 1.080428555928e+02 1.080428555928e-01 diff --git a/catalogue_tests.pdf b/catalogue_tests.pdf index adb1c821de3605516dd7422cbef42742ca79a915..872129e1b7793c352b11818a6cd424401c6e5ba1 100644 GIT binary patch delta 17180 zcmafaQ*fY76lI)=ZQHh;Ol*6?iS6WzZQHi(OzdQ0PHda|?{4kZzU@Ol+^%!0tE;-cA(oC?*9&nNneOc5UXK>K=XBa2y9Wt8ZSE;V{3NflB`_1C93rk|gX&)pW%F5TZj zPw1r^-w+izll;bQ*nJ<4?rOhF0Rjd|%|#^l{V!qdl`j0*eWcbl>{%?}{_A>(s10*m zue=`yqNs=mToh6tAsdz0*lc>9N%mrTv@Pn^mB{w`(x&^3D%mLO$Y*O4g#U-Xl~K2F zUn|!I^hM0JK}nHw&-whX1*x@ndD5qt#GYH5?AWI|MQss|C?G;e&&FQ_!h{)Y(#k)T zcp4VLZcv9w*O5A+w2AvWz3 zH^3Dj6nuSvSS}R~3ZGq=W74Ura$iyO`_$J+d&m>gNX!kb`_l4z>{J;9Sy0qms-hCA z8IO+@!7J$2SzmCwe23(bMY^OE1)hTfCn9za68VvX|H#0V44wg9eKkaui_Ew3#vJ9o zXc`*d7(#m2Tc(1UdipVSqg=iZJ<(a^HA=f$o8kn)qw$@u4-f1?GW@Oio=Q1r{*)3u zmq=ruw>GT$Uk*I4;)T{X(s(Oqp8*MX0lw@bFzcZ`&2fpbHvW{04cVtED*iwC<*0N~ zMbqR)gHNN@PPTwwtUcon2s!b~4eenvD(pxV-ffyiS&mR?zp7wDp;t(Uebe^rlGV%D z$HJsf`^LRm@*X*VKv#}?sZV)b#yBW6)C;b&npTM|SF!ghYC7h$=aKbdqMPvGN8>g= znC$JI+>^KEDw%4=LaVEqu8>Idj9YE$`~saF5|{EC9vK3kVo;t(*Q9O`9A~c$vE$i?9KG13x&3I&A(b71UFJN3=UsbHBN??4{6( z+FWNPQEi8xDIN19LHi6k^vpjAnybAPW*WUNYdSylD}t=0rdtvhLv)bP{yi5TI9sOK zJZyQ%+|Lihhs<86)8ekLTCV85$aSd1VB|je(aTWiE}Nvua73sGZN)HJ6lEdt+|8l> z+0)y^9j+svkw03D^TqAY%OVKv%$^a9mU13z;5N68HDiukRu{XFhq`|-gZe8I$-tkU zN}3yj&L-V_UQzbARqNRSIenD|Q?b34DreIn#|{hBz{kmrVbX4t$k~u49rtzf&(@ft ztJj!0GSo(Hzy596Uo6smp>MlPBc;yek-#FNF6~!zKF7|04S-%$6@`ueb%h$NdUb0W zY6qBOhuh4dCemS{QV0y(Cu0>dto(KzASfh*nr-E+^u#nPzDh!YzLJ#W*j&6%g12OD zXrBhaaRd9~dEXyCY&;xYoH+UYQndeeWAT4g3J(ye0EW4QIfqIuun+o#dh+L7MiZO* z2}9r)5r{l6?>(p*lCWVlI_*qp%<*}dWtfDvG>uCIp`RqU<_@-1|2nO`C8j{TQ5*?8 zu)5}UO&Fj<14+4ID}0;$P$Fq+soAA7y%B-PMJ5;`(X>;8pXXTa_L^OZ@LR&LJ@|`h z?_uIi$Z}^p<5kWotG6LuPhv!-Cj<=NKF*@wi90w6C)`kCK3KcV1aeMShs(zX9Gp1t zhABM*lZ0b|0s<6jGi``;6d55D-o{AYJqDPmTC1|H&C2?XT)Y}GhO&L;+W6wQ4P^j! z0=EaTuZfv(Lo_Ah1gbo5W==-H{SN61=Hd#>hF|~$b*VjlkL;wFVIxJ!d2;Wm@%!bH zX)aRtEqB0B8@30*r7_yhw!#SdDQ1-05Jcw8>Rn1(_46F+(=i0g@S?5GFBS#_TiC)&B1?>#N=wmKtaq_?Pxx-@@azj897nKx_(z*hPtq`{`2W%VRH|E1*R8jgif^&x( zGO|ZJ%|J9&3=C^?`s+>O*=OW*MOFSK`Is5FvZ{Wimi|M9zlAD}EvU z?~;C(p&@=bUcizv9K;A{kFplQ+sSd#vT=^zpDhMMYDRr}#^yoY+(PSSGh3icU2_gP zJZhk&rv0pTi-{5OZ%q4HIpp4+|8{s4qJWQ|&n>Acp6UclM{W)iWGtVbi9GDb#mnLC zT2s525HB7f5VH7^4g36@Uho8l&mJXX6si7$n*Ht}T|zg!a}j<4znj6r!J&(xj_+mf zy|CB*sq#DR&Mpc`^%+U>mmXw z3`3+do&Kjww7@7F;^>qxsx|w(*&F_%K=hx316lH)0j%R=i_yLVOeC`6gA8pKKkX+O zi>HI>({XJ{a_oC_LZgs|nPrff;o$a(elM$DY<9QCb#!NY{k4B9DiTTV-&do)-syv$E;Rs4DCJuGekGa^NOflB8jU zQ?jWkiGH_@4)KUve-3b~AXk=X<0gpYv88UlL5D1=u)~ul76=9SGN&7D5R09M|KaXg zL94i59uCj1H5p%-$*$ki)zi0c|A=GES=e8xGZ0}s8GWLu<8d&V3Nu36%wgH-uqU|J z7nw>MMBB<_vc}ANFws*6PZB;637M-9z1dCjLxgT)>ATuJDh9saSIWMXUq8ks`vdFZ zDX~e00j{3joS5T#pWg$EE_BmDght~v5WX#&`ZJ~X!%%R^2E4korXR5Tt7yT~Z`T;=%4TQn$YZWyS@83W2U#gu#?f5R zj%O-Zc^_*Ocmp(=v7mo01LSY1xUS1;2)h1A`9&T?DI|z`2L%ixApbBX;V5k&zmb!kqmTrWnurc(L^mN@~+9W7_k2{CtT1a3)Hx+pML%$t?`?&q-)x zV8U`TQ=x0P{`SnTcw|)YL9%&A?kplkm;6_mijkvRN;n{Pc9HeN$M5ZJcwDhA&iPac zdFEcORYk_gQtqi!PYr2YQsBTtHjW-0A7{dh%PDDd82Y&(LH{0IuZSj6KBx4VchvTw zrz;Do;{odTMd*-}xNJ~sMV#iojgweuj~VFFZTe(c{wV@VMQE{JZ`UM9O)+NkU-Gg2 z**482_becqaSi4inx35AlA3b1#*T_{82Z{MVmq~r71y@Ij_G>vVfT|zW?0Qvng$Bm zq?V9J{n?(XOsyY!x%Gu>O>>URMl{uTxNOa6Z}XnrP(rtIAFkzM;KIbgVW_tgNIECD z5HtD4xflXpd)EA2{4#}!t{iasi%u!m#%w<5?pJSn$ zn<-tL%|qI-2j7rVji%n^kYOse*X)f_;C)WH=S38MOD=a zg|z*~{!7Sd- zd;lpvrXpGWd+Sbq`|L~l8@?2IDsfM!Q{I+Z4xWaanqA8qV3jXQEC#m&E=wpGtk7F7 zE-&)wrwM!Cg0YmZX^`wuCbxR5#FVjHSW^Vr?2(Xb!*DjPf!*G-hMVl)Ml!<`Q?X1s zZ4vrDawjIt=Knaf6LYQx)x5-Cz8DG7kvKKt0bQ^s`z3(Vzg zbkKN8AjAd5GXroSU>&Re!U`@rI`ZL73@=O^yfvJw^DtmRupd~$gDCJ$e!ySpz-%H% z8D?tX?P1LR0mxksn*ISg5C|~t0O7B15aU=d5b1cjKlu57pyIs&Nf_QXb*?>lnP2w315Z8LN)p-mX#20mDVH{KFFI5~oUIyVs*u4j- zI?yHuH*lUn&^TD#a2)Kjhm(I`9MF7VghDoD7Xx!bM#DlNnEi%5pbqtp9|TuS z*MuD3Ety`u;d37bdEBI_%wx6R@Y-H~XPJ z3Kv8~f1W>6I5)U9Fad?%XrIamtuJIk2EAl|2#i2{4hW$^Ud~_NCr=U#j+o19Mul#6 zo+oRI$SH~n#y`sT`fT_1nBD!c=&-Q-Q<9*6>>eM1-ZjR0)c6IbS=tI45gw6kkTLS&g(59&8`7?Y4)Hu!L zkMbY~>8yVNTaw{P?0*PsYGEBYo8H7yg}iDE#mwOX0@aNb;th2n`zJslzTz$&8>egt zxxyC7$bhW=xS;!MvXXpr=6gf5k@0&}5GNN1&wOyAh(F^);5U07_!7?b@Ain`t84kp z$5L4RCZ2*IaOq@kb$Exz;Pri9C2tIl{H)OgABLoWkpI?|{cQsKMV$8q5gRm>|JGNZ zxE)B>J`lkV;#Srtk!y&$`skSUQR5lRC*br!6qW|!b_`7QON}Eu&7Q_(cm)!CQ-3Xi zvtdb%jxyY2mBb;u#eH}m`VU+gu{{j)q-Pk_yUIJ9tEa5OaV_Vt6#QN%$U&FXsFN7w zOv3}{lf_3SqWd{U;TrxZZgEfQs=yx?%A!9T2njA11apj5wQPFrWc;aAylT#8l0$xq z>-#3r*pLd9oT#LE8-Cv&(B?J$KYQlTA@7>Sj(MW;O`$IgRG>^reqX5(4@0ab}XwYf=AbZx#%X zeVhf(J5)-?Pyb4biWMr#g*wD?u}U9Pd@)GpT5eahGsBie*ru~x8wf61GJ*Mudv!tInL*i0w(-ex%S|WuJg}EN%&bV3I_hWV~5Y zf5>hwT{yaIcN1wyr2l|=eEKL3>y-m^1J@kcOUzTQB=1V%N@Bo)QhLJqZPme5=ej#@ zHBz>8`-(l#5Yj&k18@goNqZvp@q{J zor`0$Ey`aG)GxkQDJsaUVw^OSJxLXvL3O8MD3uC^kSG`QRdl*+Z%C<|CG6X!l-aIt z2lHCJXe}@0@cR8SI}jMC;DSKoiK~UfU?teDrEW~uh~)vNZzZ&IGwmwO-L7t3ua+N$ zz3Ns`5KoL0$17B}IIL$XwsJCA_0)Rq2=0@~Cf1)(FNq0w14Ib}6Sxk>Mp(dWLeZbg zA?%oLJs8z2G|7tHiu~Ir#^Xg^HwPJ)%WLK~5bwY;SMTZfyeBSIffJyKeWEw9xyMXT z%Q_pu?X2O1fk9-Ey)-$*tz45qY&;o@o;A30nFF7iyu({6ywN7-a(xVzGcq|lQz9UL zu;~T_os{GxK{JT}W|$*DPr-&@^cB--2rSCQ^iA3ED~ ziQJdS|7-tQQRk-nB~he#-;5Ggoia-AS2=O9kMsb15yO7^wgahgRyUVU%eJV+wX-p$ zJ+y`%zW@@AGUocvdd?<@#?N&ysi*CX#KeD2n6Q=G(wt5uL{Wej-()DUKptt111D+y z=>qEX#9qs8BbQntzwj__S|PJXJ2F9SLmkeYK?R^3Gc$*mU;p zX0_Qm!LYcF->f?r7<_bO%WjVTAp}{5Hx(2Ot2IBR6q~$Tge)h&`!nwTc$-gI#p8rT znBDmW5b3T=1RVoGc{o_Mptb7jUs37?)|eR2r}ZQEhv@QYH>D+RA%q+);zVz%`aCsY z?QKuJ;=_uc`$wo_-p;NXNI0Mtu&P@58Wg7vr9r&J|%OT`CWk&Z3FQ^aq z^t-np7gm4Rp~QmB3L<8!v_Lb;P{lM3iy*|LHrv{G&tq?MEoV5ujr5~hv*9O}MYZHy zW^#S}o=KH2Z5jB3&K7=r1`YoY>6cKAI3@#M93EWK*gAz@indFQfzeSd8x0jkjhJrR z1ukw4Cp7>CPDkdOF=ym&m%Ix5+j47}rL9_ls)+=j=QT<69qz8Hc*=3MZO+I4NC6g@ zTpOMKjK8d54#{P?m9TUCZAl8b>2q;y6?nEt0gaZ;4MSd0j*pwHT&;cqh+)ir`x&Mq z$Bk>$6VKocytwaveeZXf{nyPHrzrb3IL9ZP=@3vjl1N`o0sr2x)u`o3n2V%7mYVyc z`x=bi%ye>SlmZ)Un_gjuaVey};b@{)hf0KiVjy&@q{FKG;Rb6S=b6a zCQ0X<$9j2RU2wmm*E#KW>`sEf8dPjUdEU+w{~0qTsfLV-@TqZ185KgyXq~5 ztha}&y}i!soXE%MQP|@NR=KV=#%r$JT1!q*W}c%9c@JM7CUl5eMJ*x2NEOreMAHLA zRiaDeqASOvpk7l&TV3Uxap@e&R>19QaJ(FY9b2t<*$CyHjUgd;lR8l#rJy{z?YmPfm-*fGDKUK)>6Y8~HOzf!P&X@fA{6NdF^2`&qi)@k)w zBjbDTw5vFw5vQzu6bTwU{VoM7toohW=&!`|C%XLv@>*0k`%LQCDZ1e@;ILivlt*e?L)VBSL%7&i%2eb)#RX&f zIyIo*u&ZxM6^|3&)a|hSs-3~H9w~D>9p$Z#Y%FaZCU(gb-Vu-{d`pxZxmVz1^ym#a z5eC{(|76NF`Q|1}=-w;@s{+zL!@?B?;zqoG<>t1SximZoV>62N;2uqdMY%x~G`C9q z+P1qe60`AB&sqA?yM%rNtAD50(=V5@3oQG)Ta>y*czyDTelM`KYD;kuomB%yJX-3-(r6zoxy` zaLT+asoXRYy1%%q{ju6V_S)}`exlCYvM%+cDB9L**Qs?ETSZ`!;9yVR)^LpqDzZ_f z0{eU#=gfYw!2{tl76cp-7fhwH)*L`g=QEwVFQLEYPf<~St<35eR|a|nyibacuL!a5 zuex>aI-1kxS|85}O4;cgQ;SOd_%WqhyhS{_9MOU_dJnc zWI!8h4}Wo`GNa~g-1KG4rN)J~wA1=3Ix9x*+~eWVpkMJ2>ks@%akUFEg}bajIZjAQbCaR|6&V+C*0rJE=ShTU3a;Juhuy zZ$cSo_UphDcl>+WEeq}zu_|lLkAZ?a;ezewYerQVgf%&vLcieyA7>>x4zqG&E+~_k zI>Qe)Q&FB{Aq%|K2|&;UI1oC4^G>dw$+N6}vhi~(r-@KvH922qWk(E>J&Q=mdN5hD zEw;@@{d4S*1PdTJX2_6qX(5+}Ss&;%Gf~a)I+`S(XoQLRvaD59)eFHHnQZxC>3o|m zjn?VbiSWi7`dUc7({Lr+!flG%h`|y|HVQ3UoOYce;RZkp&Syo$XArYvPjw3Ra5^ud z<3BbNE+N?aYq5?atKdTjSbsppSVu3Msx^2N}Fk>1liDge@a)XY*@=f1zYpEDhxKjhmg zSA)JYd4c`$1Fo(g2Ur|tDzHXLnT7Zftip<%))e5`L_IHeXLx#ArG9dWaF6(Pi#biA zih^u|Mt814MGt~SAgHglDyb*G$YZ_L9Y}2_$^^NxlpE_fR%d0FZ%`u#QKyjUCh+2C zk(Gweg1s%0=9lsgAxmBn@7j70Qsyj`&#LVNzkvy&?%+oR7-@r4;tV5)yCr8F3lqO z4?rDTFl<&-oYTgo`Y^|flHPzYxT%f=sq*Vi24KOQoc~Zw#!xx^*=b-X?8`e-aI({==eyxr z{adqg5n#xi-lfhKQJxXv7jJV1J)dXiW^BceKn0ddV}Y(nDjWV6(9?VxhBt~QjjH5I z^Lwl`q;cEd=y0clswsfQADv&T+Wp8zq}E)`GqQ7os-Ve@CC-?Y^@A{tNXDro zWf<)MLaF9N5kxDG1DAS~1Bc{7CqD*2xSy6Wiz=nW-$|Yil0)8XI8~H=b9(Bj;kS5G zZA-qGU(6AQdZ|8Z-q%atp<}T50Imy`^Upm7UZGTN{HixEEz!DqDU+OpFAN9~lr%Gf zvH}P+@4u8kHYb}XVz(OleC}X z?AiI(-rIg}z9p9Yk|Be6;HoCqfFlz={DXj|GpVR7cv%y>s zFPD!D|E59mW%;+NjGNyTOUfqC7h{c+$!e?0;T3K5+spj&;h)iz)jMQOVPxh#pBk#G zKy*~{?A#l#_`=llIb(6^7*M$xdIlr&_qDk<>+jBcq0&E~9RCvfC@SsYM9AJR$(-L| z`M1AuClm>mVPua#f!(bnRDyLP*7ImhPl+RT^58|DXs_A$FCT^;YcO+| zr*myi3eSeY&-xRUpo-`y^aVq_&XuUabQ87K8P~Qs0=eOE$aF%UbXF!=@C>-@f7EYa zgvRx`%@E!Cs=I>=xd3n6H&ff5X;qfhTD}Cr%&gDyq1EZF8<{`f4C8Gnf@>^&N)(CQ zHK>?ulDlr)&Te@JO<&AufI~M0D6;yR##6@{-n-ucr_ z#zw;z$X?`J;0VH#R5P~;*shM-bon95>xV92^~n?(YRJy4@&Pck-D_>gMK@XKLxdYj zy@5p(P}I{D6D>kMWm5D{+`n2$F_vGrUSRXDz41iXW;LTNCU0ZTI93XFcQz$M)ahL< zwh&j6+MbJ7j3^@kpjv^bUh<0KQQ^)qZ28QOuBR;O81%3U`iCI3ZwNfu|#VH-`Dy&EX7@f zh$xwZ$%mkODw14&u6_jglqJU*@)osHedAit*9>a0`F0XEjjr#Rf^}C)IUD?yoOR6q ziNG8;)QJw1_)`zC{VlItx?zVVd}SpjrsaVOsTf)ClX24pJu>p6y{ z>l1i0oTNHSvd(NjfYJ}Tte$4xXUwZDy{3mLo?EJaBr`Yb#0B+1^LamwEFo=dY+Mal zO+QYzr@UsISe-(CABG4LJ3xu4f~7I?Q+0?F^EQVIaX(1~X`X2$Ytc1^<|tgInF3^l zmF3=2G{DMmj>8!q)B;7-{${knw1TcYzUNk``PW}g*4H092Y7b3Hzr{Ns7L5XSw3)y z0~DqGzB|=2&@wF+VKaz60hJ6njHB4ccXWhBT`7)1AgOc&*Uo2|*xbfx4pW3L@5W5dC%V{G_Quik05p@(axR)5)XcU^v0c2;*nZ{P?Hw(km zWVF=pVQ5g@H(VO2ikzxfu~zK4UXa)=seNLIY+i?`dlpIN$P*0R<;d-CcT>Pjzv0#JjT!qXya!IaU_-6&tUWE*? zMr0&*X3wJiUnS_>YfQU9OYU%PW0DIM0gt5*Zlk4f<5IiCLCM}`wsfjE7RfvUguKEY zINuUGHB%89y3T8Ip=}o0dGC3V`Pec28{pNVTlT8uZ}eoxCi&~&<^mgR$Xwn@Si!rA zBN4Nx?vJpbt{pLt+>sobSZ*NqmnKPe`QlKJ_s{piQ|0R6m`C&YM^ehJ(dm?gP)!j6v2S98- z7%c{4Zf4n=qY+)@)}X*&c_NiDNCuWG<#@a^#Vf?M@b875qfS(*t6g~z*u80f(W%GK z@|jy0Td{^qUN5yY-e3%QN&cq&#L%w6u~_dP zx{PZwa#@4;WJx_yB5$K+!^!()Zq zFukmGAEArz$JiT8Zy|Ls%l-1);kf*+_-Yy*5?RRCJ2O~^vVK8O@THDGzQ&4pXO zFMk|FCpxlJsaJ%U0=mEynzp@11E;UQ5%1ZC^Q5fx+_s2@ z;#U(qTEYproV$whPz8LELH%BnCay0ceCh6Fy*6E?u!z2kC#Q{fG!@wnf`$;uf$;`a z_|s)Z?Iixcqr&}brgcq!8vxc1Vf#!=Ew-2&Y4i%3!gd|j%$#j-r0%fl8xfz7lM=r1%B#vh zL}Y1nv!SVNE^uzZW%4}tQGl_TS4>mTz;=xmt*|~<^e2g-t?Dr4B5<+~7BhQ%P}zK) z4GQY8RSQd}hTt>N*|&x1McA@($lx>FJ`#H4b$w$QVNUzY(enp^TyI|!iIwlXWsbR@ zY-q^1_hvg6<$}B^MV%_Q5As+mHj&`0331IUiK18EB*yNRUd>Y1+O6lW7zbgRTdK^) z&sL7MVXxnxiJGPevH)H$4q@oOM?~@D1em&fPyvLiT@2BHApu))ur#Ag+$-nz#LSWG ziH}BE_*23s&s`X@&-zUfhOskS_A-U8K6n~4X>y03v9oozqL{Zfw3iFRKgb-%*XskT z*sLHqPSsvRk=bY}rs;F?gu!RQD)Fma7$}bfR4~IO{L1s~?*Sc1sf`D5{_Cz$2sYE-ia7&PSwy?&eX7IFPh4s6+h z!baG{uHT>DAK&dOo7r3pQzfc!W)T?cBlBQHu_~D3x^WC%_8hjmr^$Vn5M?Z$_fkOT ztm+%+?@P*Icm*E3wYyb_gUeY_hVXLjh;~UWu5L;U?zEeWdJ#Lq8U~w>y-FfQTJDgp z7({+AqRTE6#pM_dr^*@>TBOXZ-E(-)r27>-c}qvqQxJecu-O<^Lpc)_@`9pIg?O}; z6=l*^ggljG9`J3WKU_Tl+jgv5&i*Vuuyts!hYyjrpW3}A z9rfp@4`%5@E#bQi2eC9}9TG++b@AJ%mQkCj%1w4YOW>A%R{JK{KL#d_kNASywLt2qeLh+Fqvwv*IcGxD_jY;|Z z;VBVk?{eiG-1&?Tm)i7TpRE0)V0t_y!H-*Q40N1Y4TtKkznv%&iMMcCZTD=$f{{ov zVL?ODJ;FBFT8agjIYM1mxosM~oNKifHMVr<;(?UJGj0Lvn@?s?^K^g`MharC-5En&QgA9<39PyxI=LQlmQUpu$Sx+4bLc%&6Zu!%fAO+{e?iqYM z10dgL0BT$ONg6~xdF%M@OfJ^~ipg?tpF1@rsJT4?uD|Vx-KS;b163_>` zi=%Xuj&Al3e9>vwGa!vCtt2_Fee5C%lxUVSs{TH-E>G$txjksU{bwqQ%TiF!&>(lijGdyw z98uWh;Sy@%MAR}PX&hCI8Nk$o@^R#^!kIOD0-p$ri3t8Lsf1fkIKjk{Ry`rukOgv6 z(lcluaF->OgY*e(q98>jV|Wpq-0r86rxcy!$X7RMrjC|caF9?%*@{FxraiiJ1qvkN z)|h(pIx`?iHRym{MFO*9z{l&epM2$y$aC47++9#V7$jqhX@$a}G!WBunw5*iyA$2t zu8v5d=mH=ocz5c*(-i59SVSnI6VXzSbSL*b;%p02lqxOZk{vEZb91`&>A4ESEe>t* zq~*2JZjao=c-Ich@Xk3F1O=F7=v7hLD>i4{&~!Xu-|A5hqhemW;7i%~?JZ@-l6I+d z#`YaZk4F>|lSJuK0$M1|h7I9=HMvg*Q{5-nL{X>LdG|dY5{XY ze2Jm_tPKJ6%KbasdH&ZF3ol98A~Z*QluX-C5%S}=jdc7w2Jl==l3Px4K@XngDyG}R z_6}D*am)P*yIs&15vzS=MPfQn7p zrw4Qv28E?4#Ob?NF(Ch(+`8*AXX!GcIDTpVM^r1E0-W|t8R1hWiXvCs-(>{>)BJ?- zxz8C_tzj_|YTUcrZ{m0o3txp~MRE!i`dY!y>FIA!xqaxRHjfH$sxm~@|07=^X5(aK zPZL@HPaCeg;q;$2-1k^>s;Ea7^Qx^0D}Jz z4k|IlrG^9>Hb~5sb0=O54qIwgC|7EiBwU2Ir6_X@Mj?udiWtYB=M-{jf}R$;9$5*x zWw2ysK5i8BX^Es5N2E1ZA}hO$1k4U~4ab zyjV~9A_==~3CTuY+?;AIjV&#cX7Wz;wig&;?{Df)}G0NLLL-v;G`gYYM$QI>yH zKPo`^!i-A1;*?I@PAW=3O}XG9CKuE}=`U|)y3e94yUC&my~aJohUq@l1nWNKtQVU< z%ZnVsQL}<-g^RZ<=-&u>4w|&Dg%pp!`2*2$)C=T*d>Ndute$X}JLb`UBwz^2D0{%G ze~*3{9M+v>fv71r&N3Qkrbz8BA@m4#hO4PJa5$YFvwDfa(_=uH(GTw)kaH=7 zEDb4qY@u}5N|%^HGeE5i2MeYc=XD}d(?uZoVJ2N&bl8Hc4Njm1;TuXSERqBX2?qRw z*Dj)_H7X8~EEwaorWVdF@SH2)U$emvNhnaKZfqx66K0^2%xk`tYVFukKdW~QiHhSt zoJ<&B`5VM7pkhj`UsIH^NtjUgfl|`VkBW}Tj%z_H?Tq~52`P_)XmQ7%s~NM3lAC|x%0?BtjrXn_re4(~Feq%ttOVOSNSMAvBLfjoG|7;W zDeSoK>dpLhAax6rKLrLl6gUmNt4f}XTBx(uS1Em;<7+XmhTKYMY*53_pOEp@p={=` zwfUsQ+ZNSnvM5yS@1hrp%PMA56G^d%|%q{sWiU2aR8#&K(Fg#>l$kXiZ-OaFNTDAypTyR)jj zSO;`4Q~bH?rG&nH7?KtJJU?%TW%GS>AuC{t`+Kjyv7$e4e_S^~Uyyi16f3SWUC?-s zd=2L|VO>yo4;wUbU1&a~_Lz)b2)xJm8WF8sU+maSjg)CtrN*QgnKym}#b{mx=g^Oo z0nJsv-(6emq)Jz5_<$UGg*wJwg$<$$7r~rahn{xqCZ=k$dFthv-srUB>Q6V0+{U^K zx=*eFB0`5OAA1~*V@)_WsJQ4`pP8BOPJVj}o58Q4FC$gA0dpJ9jFy|f!_r+^3Nz+5 zGe;-wrfK^Ud{Lpp8m#Ay`pEV!c~gD$lc!6Gz9u`hM^#Ug;{f|~gknX9k!-6C6D3T4 z<0sF9zkFG_ZN)uBSyJf z&Rgua;lkjW6`&(-k2r9Wi zwKw%7`RF~#2i`vK$aJgtbR|0~Mf`%oIL(u$qxTYOidf%j{FnXUYgAiZ+)f|q3{b}s z%l6tMe9bF5Cp~6^Eycf8>t$(xK)Mcjf91%MVeFk@2(&gORh>2yq#`*M-Q9lt8`>Y8 zC7aSIbjWAF&5n~F2>FJV=^`@Q)T6sOm~QPxy59NlBD#rnWCoyM#>7+Yx2-vNj20RJ6xklA*tOvI)U615cs2Hw( zZb#3qQ#@t7VqEHw@iXmxQK*L2A15(Q9wpT`d~mQTZ_R0rd1%sZ)yTPHt-bi*5iE2x zht597uPBhnG9{hn&N#I#6sUma*U_BjUTX3_pKsbvUAk%|EIWA0A1`iMyt6UpY&y~r z0K8_(MT-p(Onsj6!}kJl)~-Lps?X*k+|eEiIFc{2(+z0%+Wv{VK-sQ9S%}I1o?p?d zqKUPc#GjGh)}YSZKi+#uR(DH8>pnJS-|!=v&Q2hx?&j;&Zr;Hw2zysdJ<4fz1V4TJ zptqG1SznE5UZ=}p@Lu}T8lK$_X)$d}1rQHg8ePUwFS!=Xk>G+-Yyh}5>H&xYpa^h-!3}Ax@t{U zme*Q*-Sh+WHyW(ZFV+RSYWuHB0qk|&uF~0BhWaj=$kLhG(GyRH9+sdupUn>@EYG+<4c8Ue(O}g~XJ!epX~pXv-59K@E+hKN-&a04 z+4>CYWC6A4`ub_&n(Izkd}-X@qdXM`HGD7n-DMGearuO4i0>D}2frHERW_&JyKVJx z{WU0D0O^q2hexZeq6(@9z#HC6CBD|1-s?elLRoQ@vu1I9x)S?{B-d@^@vlGO#&HmK zk}oeg%E6n)Pg2YNO7cJ3DVKNdTul>h(uGtH1+sHRufi1txq`;14<`?g?pxqq&G^;e zhdSeh#>FjJ>MZo}9)=a9UT^TUb49L(Wncp94>W4|qYxYC^XQeOfQ?4`hCHn1X`9z_K0TN8Td8a?YbULxCHx!dafXt^u5EDsZ3@N_w!POP)rIdJ0UaCwowGL`@eM%*)u4ul8Gvw+e++fOy!d0}ENZjiHGMDP;~7 zw-UXJbF$qXqZJ*esiMAQ?BwrPD(lZQm$9`xRck6+ILrV9D&69GeM0Db!(J5Q7_Ej9=zyWX>WHXxHcBnrn;`Ya7dwnrjfHPH_b&rQd^I z%rZcn8NlS&0nw^R6i(a%S66PCmAxT}-$PYH|=mWN^DF$NkmC}=NBInm`F-0Q?SwK0j`)_i($z^Q~SyI)l$gp`~g4kE8mh9SDp4}sE{>PsO; zZ6oU<<<`9ywXTlpn1xi;4R)3BLue$y!{R=TnX<;|s0gaX1YK(byb_1`LjKGJiH&v3 zWY@#_Wcn~9{t_3(1!(`tX2ajkyGl970ERao#%UWm=QTX1Jt*gK=d>ZOtsuWH#gnfA zgRkWT>_S`j%eP-i*Nl78^%}@w?YH*WrPa9ku_D0fy<;x4@lk5g(s>)TdPAJ}cu3YV zZDEl`HgdFD&%4p|e)^obB!r%Pl+@0#*GkfQ4kSg4Q(0yiI@FB!M{k`!`{ELcw8;L@ zQhj0B9=f&S&&i8fQ1s#KgVp)wE_+5oW}b&AIh-@u` zFTYau`-%Wd!n98Vh)ftBW-b;^R#q0)w0uJd-2W#WGK4r+VdW8#5R+tP=HOQRF#?Nqbx5c)q|Mi`rL+8PPk8utboy?38x40)n#$aB2&lq_)h z;TocRVcMXy^D{u9ypcwLRr9^&e)>kgTl1u)1&eh*Vsn+{>wp}fu6`NMF{x_CQtqb&Hp`tSi0{n@;Xd2S^DQL^E&oA z@ev5Nc$R1q%`r)Hlw}ypqZpZGWDj9U8h>c%D$(Fy=v-mdi$`2o1sGeL8Z6ZSfe<$$ z`Mmt%WW(viUpp}s!MPH2g{SxG@MxAB^N2>3@s#uE-XRJS9)vY0HE8!>?cvLTrS*zI zIP6PTf>VID1B`r2Rq}Meq-BrgWx8g+db1yU$vbYlf;D|X%dc$^t^s~6khXr(b_CLP z@YH@*El~FXTBWMPT|q7Ib0csYm5DPE-q|J3hpeid6IRW%dEMIW!XiBa38Id-@GHml ze)k}+$wpoQH3IcftR*lWx>XKgO$5wTp;R`3eR;rN;nrLj;GTC7Jw{07K%D59ZoIml zpc+FmoFpILHr8H@p7Q0_?yKUWXi=ES@w&B}I$LD(3lUmYnx8L_B z@AtP@wORp#@9+{l^>bds&687a#1LuXUp2ed!E5pqvJ5W=(cx{S!n^E; z?-W4aT`N@Nmh-Bn`gwOD&PRW5R=LZRN z(R?*~uJ*~dIHOvUVH@*XAp|vd*>bjybLBV|gPh=!KI}{d$A24EcNlQav#x1@&Q{aT zylNrM=EemQ?ljyx2a>O&zz4;?6(6;h768yT{h$@5D2Lh*7ASAHSulCM1Zfd|UFzt< zN`^aK5;|P?;bMX`*RW>uZ#vDj4f15n7Mwts>YpE+J-~=XP^rI5JhxUcR5LsHe(yBT zvxeltd&bQVrVwZhN90E*lmqbI#Dd3`sCX*yGj9<<@-8R@vH2wYj{vv=NB!QJqpCCw z#w~n*_L`i}fk|8x5>Bbo1#kt-SomT>ezSmcs5FQ3POff&s}{C~71_2P}aVumM&reDho`_keP~2G%*(l)+64-}m5>ga8Vlg12h2@bA02!TY5u z3s3aCMB)>PPc?vaCqj~HE&SXimpVWUQUf4=(}{VR$`AFAy zeeqV5MIybCG}(A^%;2gr091_Ks;SA`|gok({Y;$!q{M**2mWI8d>62*`h zV~I>BGM&hD(#SdkG^oab#uG_S8cI_@qlhFY4InBaY3z{Xq+v4$G-9ZOq`^Xd6ZuVl z}Bsr1fL@}gAKz>sMBsr1fv<%2}q8QRDAjyd&r~80RCuN#qNSn;93^0Ua00qGO zjiftP0#>0|4YmO$abyt09e|}MGA1I89T^U>9y9>Paoi2|05+qz7c>I~b8H1|fE_7z z00u#1L`P;h~{@gV31EJ~5-9Q(k3A;4gchXE^790W%I>5ju-1h72CW8gSoZ;B@Y zn`#^dr@(2z1{G=X$j%za!2~!5Xza*B71>_n1;8#9r@;)E1(yJg9oeel6~NgZuK}$P zHvs!poCgcw7FYzg0h?A-l1D5&n^yAffMqKbrex-TO)IW}b->aaNq3%Eap4_*{BpBG zU7xOk6$XFORly1$Jl0jw3R|D*s=^9S+H_TE#lk~fRavofOIOua9DhSs)J9HLbFEw2 z<%veF&5~&3L?b5}Inl^<%xT9Y8o4GN(a4ELPBe0Dn?xfg8adI(iAGK|a_yabey;6H zE9VN}KbBnE|2;rRaxI^PBqt;hx&9B>wBmYmIV2lP+5g=9q?hrM0uvW=bYXIIcyeWC R3Nko1Gcqs=B_%~qMhb12e767q delta 16697 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 k1GcQVUYEOMVmtsZAwQxx{;r z8QCVqz$_0}YCrw9kYI)Z#~zn6S!ee$z<{LIkAJti1qv<$6uf?d?s)ul_2k(rECZ4z zLJAzLE&@dp!f3!HPneLwY8`wI-|4b5MHEvm!u8Xx&5Jz3VWZo;D*eBI#vKc7k38H) z6oqvK7bwgktim%yXv8QE&AO}2*yzvIn*ei^q*MkmQHhj($m?mNIzK}=&D@C4Xq*9< zuL3L*f>~(#9l0Mf^iTt znGlIxf2&B5P@fkgr^cOZVEz$7b}9t8Am9SG_PgI5QGkQmUf7cl!@xLEj1fC90^S^k zWNt_t#R`c3Ubgzm$jazUI5mQbAblft$y+nl&by^necHC0&-Bx{e6I*b?7 z%i5If0odSkOr#|8?k1tBE!5faOMTwst$GJBO=il>IGw5o8c|r>)5NJjxAM0# zn6f5!X8kk=z7pPkU3c4A>;(&$;3oxrs@Jsyn%y(f#)IO2_rn2m&iF@tsmpw~lJZ@! zUv@c(2@UxJxEvc@?nR-SX6H)1cR4HIWYG$l;>X}E5AAGR-AaCRHa1WmobBxxucU)4 zLgQgy@A)4YaveypvOyNTD|Y4XjU3u0)MIkPC9vW)u;4rj@~s06lU~IbR`0iy^}vbP zGZTxJX+ML$Na(cNzRq2Gt2pE0p4ttQ(QfUROP$iRuY96J!Hbe zef{&L>W0e0sT@+Bvg)pl?sj?4EbZYOvAID<3y0X`v1ONix&NCE@2>CaE!I>*@EHC%D^xu*iy}v6mlsQb5sv$mI&1TOKV=?(CH=lk^jwHQ9T9sk*eGjKB(n)eXg`e+(;{FvTuBKN6V`fhgf=a&?o46iLPt z!Ez*pNUqA{^M-79oa4>EnxSjAJ4QC;xF4!5*|g2}x2u1jU;jw+gkY58oaiA4rHDuh zGnlu3#T>ug(hP1W+oqClRJY}1Q<(ot7?6w2$1UZXss&r3hn!Xj%i{?lDCeB&v3CSZ zgmIqiXojdv?G$g+7M{uGP&8XAHlwQbGu<4!EtPIwcvQVI{ev^F3vUK)LHj$iWM0RuOxUolDd#ZUnd#-O|eRK~`c_e*ovUbkYiK!Q1@`hFV20uh5? z(Ij}&UPFRQH@^ertDF9nZLD=na6VB?x9NZBB#rqLZ&PjMrmW%^&;HnPJ9X1G7MPpb)HkRyo zQ|d4QbH{^%w`a1uoThI8Gy{m)lI9)PQD3&*ZP8SH;roc|11v9#?%FV*1s3g9vsZtw zoW*FbfW=V)yJ--xrn1 zIxxV|fY9np-dXbpEcT|OTSMcK);m}?=+utP($`Y)Kh^lv+8OF`Pdzuk%d6g|4>nu| zyxHrgJJs21?5!K(A5js7Vu{jBz#4xf;+d?cplOJCsPrQ&lPVX&8U;)>VnMS!n-U}eg- z`l=4c+ANdVl&!C;i-UGG#CEobm>xf9+cYtZ^Vt4I*I>5D0XowIdbMsB^*#wP|vla^k4p#Bq$+ zYGwXhoVBX<0RqXtA5<64(~gddLpu&GH|zKl(9Szz-hnW^27!KE#}a?>pw==S97R~@ zHA5hbV@m4+`Z!VqPC&$;UfwQLv#Gs$nIEgx`^)hnU)owww?~I2cxlc_Ohywi0S_J@lv2`u_;Vpe_u$C(_K_eY|e;Sc04L?jgu8;LNdf+vz9DRV9ok|BaQ zhnT43;*&A=)9e`3(G=VTufYIjAqaZhzwmy4Na7VtL*xvGhb_P`#79a!i20-fs}68= zR^G_q`pY&?HPL@=y!T&b|0$?7DvZ65LJ#`+H=LBvY0h%F1mCskA%PvpINa6Ar;873 zQxk|Kq|112n`oA>FIEY&ewaOVSWQqt*9VV3(1r<`X(Snvd5W`yiX3GkgFBKV!6mTx zVE`a+P?4HAV9fqr0CfJ#X{I?Vfh^e+fhDu8nYS`9e6N3tcvq=8i!bV&FNH%p>3v_z zR8ve}JoM4yM5T;I=)>cRJt0h=yF&Ue)*1(5=TMtLv!T#1?Q|`mKnwfCfE^@-3|*TT z!PaJZ-1=!XidlxZfMUZkjEIz!o)bh40hiB>VVc4I&7X>)v$6*%pX2{R3>O-DaAYvw=?F=43=4D(wmk5+02EynGA~-8Ug!lG4N4-u2W{Dur+RSBT zP8q6mLLyKV*5(d{lq?ff|wI~Fz$5R zvt9QO&+q3(b@p#1ssV;4!%8qkI0fSuaY0k4rv=Pn!d>FlyNwaE#NNI^?3UNvS|7s;(q8dInou&(8Gth6oxFu zUd0;?7S%ttodRO5ZKs*Mr?(SLk$|el7W;oGYz{Zn+8*H$0hvE{k8qCc)_-h^SflyJ zJy%Xtx58KnE~NGyp61VEtkkH2UVw#FY?8D}#VlNoNS@zu6!}iVudn)+O>aRr~UXp^oO!UJA*zh0gbE8im zq=>VlKaV~A+EUkH4YofNKT47r+BKHU;XBO|0T;QT$kb-}0e_8sfALvop3r^b*ahD> zR-k4C!o?Zr1f)M^xUW8IAB@1){{!Kc=`^#V8H*7EH!wAm0W~OpwOZeE+cpw@_g}%u zOXO*U;y1{=xsH?i#)%tSdALbh4}ck%6q z#R4*q?js((IpKrnFSC=MUyC>rj!9v3H2V@c&0=LDrxF%B7tI#Y$B8+e8p9{o)qPsz zb-K>W;&iI4n=G<_8XI=9&gyl2`upr}k4%t$&6Kth_48;d6Xu)7La@XbuNEu_r$D!4!Ungm(Mzr;i@aXv#eI`eH=VDWY`H{Rr_xQ< zK`3kfq*h&4>+Fxr`DDxl7WxX8TuR>;d5+0yDE$O`Wd6%S$LnXtBjg?vB>8TvM(>F-xOOF zK?6DPjCz~lx_NlO)}*WvrcYd|Q;6Xt=v_1wf>dG8PFBz?^CI}P2r`NXRoT2OV2aF7 zk@qKe{x$u7hM|#hJZW(k7!?`2;0?S11wL39vv|_b;3D-Fq2*@<@>Snenm|^q%iQAu z5{t5pI)1kdh70t6)tXuXHRj>XLt3HNKfhLSmv72Srg;pL@spT=qjxtX*e9muOc~M2 zed30%HE3*eE0 z)p+HJ3gcZs6#*Ippy0E|v?g&+d5~^t4b6IkvsaTA_x;cWF$$sgAR}EB26$Hp$07j; z$H^uVzohGRR^{0k07fyD$X1e8F`;cN!~8^O8+yNdo>re}1;9k-L|tsHZ2VgX z>!u=qv1LlnPh9BxhMb4|#Ul|_n8dJg^X4S_=sy#^^akb`eSH;-&fEOhq6%Y_$;d24 z63vDW{4#1FQ2F;$16i;8;mbiTm8zFZ9n(q!7%?+ew`>t^@KHYu(2UiF=dZ8dozE_> z-`#z9clrLq#aJ*B%cM-&4=_P0zGwZS#G)^MvB>*$A)&OvC!~^m^{@aWk8}nduyRylD z<2rcP?$N^pzuDl}ldPKt1|37Y^Ruh-4_9~R*KdEjx|of!jx)VY0mwQFd)}WJ@}#C7 zL=-yf(97$(2~AADz8t}nO`n8XC9nxAl`2KVY03GD!iEw8o>ewSrK6`ax}ev^uFULa@D(uovif{J1^WN`HW*mtmc;O@Szs(G#F(ARAU~w`?A~)7aV49(xx-{e7Q*=f$AN zfzrk^A4TUIt$ouqHFh(<2#h`2Fl4T-=$QW@=-#hb1-G+IhB?Y z86>3-dP)Mc?^IY{N1CcZ-4WG`J{BIp z#Dq`EbvuJqn_AOQ7ev!A*WR*!3CuI5zX1YSi~0*VOq=KTQ(x88)T3k%QdRT0%6)N) zy*)cmMqw6yXNL`*8o0qvg<;&U=T3xQ`NBtY?l)|F&Qm`id^&mVR~mGRvLWwqPeU=< z$MDslQu;pF3N{nQuSgxAd~WXP;|#aJd0AzxnIJGIYU*+s>@GGA|C&{Q*?+$N^wSIa zbV=C{o8Gsb$CyQ#Bi@2f{vhRR+SFrMy|fL^aYp|f9ygS7ZJh|MWf*yqf+KaJaE=Kr zyJd2HmlbzdFBa?UZjm82BTGmCuhe!8VTxTr2G4_I&oO^uD=&Not*F-&qi%lb$E<3T z84*}mX25tKwT9^TP?dOpQl9)HTT?b0J8fUg0s%!NxnR;5sQNV=?rk(*oqUTx@J-~U zPvBgVz^UP15e~zDQ>mF%kawb~V@YhG0@MkUmMa?pffFZf5>;7ra_hxgGgHZ#lQGoL z{tyCI;FJ;Z@UPpRucE#O8x;nn*V2)wL-$>L=~%#uVX840OatYr+Xn8^gl@E8buz|h^}8c_L9CUc%JtW?8w}u^ zi?_`Y$SV03UENi;Y9!c8RHI7D+h3Te%M#zrXw4=YaV^kDS1vnn>I zf(vk5mm;zjz%;P09e^sxYJD`U5KsqZ_P`pX2-a%=GnSJx#P)nQu3OC`xNe<43|K3f zvam|}z;;JRflUakXV)f zKqlg-Y@+~wSCg2&@vF}VZBcI)|p$SS0T(eVJ;?(jIW7T_=m z*0+GDij_O4LJ$U)g|Wv%3tITT5+MlDf#vVNjV%|6`?d0t(j><%7o`AS)3Z9dL=6Y- z%O7KZ(?GQi%e-roZt-@qX9L_AdA6}RkUR#qDhJ1&0eQN^X`?wRN4j~VSnpplA@^sA}R@HXqGZxY z2^@%T5;G`lcrw7ZJ52bF9jO&eOCsrn|JgE;PlCKXRL4*p%Og+KBDOFgz2{WjN{!^A z&UxA%#MYswXc>ld(Y)v*|P#P60EM0W~Op)mmL|TSpFk*RPnz?#pQSHJky00By7B7HEN> z&cp5od2my05o{n8jtr##zK2(GB3X)cZQZynVC#NSb2;SU8ImJ%O(l_AA|V`WV#jqW zNsHjxld9udlGQj`s#wirSJrM~$I%F9yq84v|X^9!f zijR(aS}IQPPBnaVTv&W`$kyIw)G>f7C&o>0@x(%(lDH`T3*iG#i3KN6pP^Db6+970 z2z27&IDtNlNwJE~7|OG?7^TIOhY=Dtyhw1P;YIPzj*%3Dc4*IJ7&z1~9VgJAxg_C= zL2y^3@r*GwF{%l35gVRBwuYvE&|f_4%aCmzR?sA!V;BtFD;|l#>@8$EUa!L}l8QrL zct?$5J`9a4P9&+fm>8VYp$cwlubQmk^_Uhkv|=14zzK}XFom(f9`K53>9cr;nZhti z@NifN)3yd3VWtF6#EGX$CBB6*X%JSNzszPB?oM?|nKt~mf3=33$cib^bwNspM z@?ucK1o(j)85+BUlc1ApSOAZ`h8tl!$1MzoBjCZ6lDF_2rsaeEDux;ChdKLTziI)+ z5Uw~0BLTFnbQlQ}X%rR(d>b_#aNfch!_nb80H+B>1OU;BkYK0OYRue$ZHJv14r~qI z2$3G{K!mhzfgwq~1dafIs!q6K1Vm@I*^?);`ODvbTcr8d%jIf4n_pc2ydJK9c)R@n zZ2rya>X*gUtAao*ujl`oe?R~B6%7}&`A>^C>-5ScHwnYG9C1gU5r^J$Z4Q~Q(~~D@ zev#(itzNFu{8{?yJ-+pJwaosH^z`Wrf9I>vDGOq<8s%;SD`Z1|q}OV>7dx)S_0Jy_ z$uylRH`d^qHQ--!hpDSVGvYh#(RP)1mR^BSF!E1n{_p?%7vYt)0S>)qjG30#@7}%M z%BK0Zt9Prbi{CEaERt-#^5Sy6UR*5`Z!Z7&Vg233`f|NUG~AfYpRbndL6heo4)V=y zTm-TCaDl<+FRoU9Z!Q*?6-IpaJk4J&KCIL0eM7yt{B<#d3d{9kxqhDlz4&^Vdhi<@#fZ#i(lSeezW?J1_N5RJU|w|f`+Rb-jNo(ya4|YEA zU@s5x;3kOPZdoAB32CFvZeaIxD?iH!5CxQ^_0(zxz9GPYPf!w<-iGBR$YaXqW)(YXHK z+h4D*7W+#$+!_h^*s$J{JrUMNWmz+_$h&3L4Ea%%Ex>N2zhzuA(IJHTeIUf-2M}sg zLI~wYZh(xoj?4>nNn z#X!B^MRj}|pfm4+%-nB_!Drl5Pn}w}hlyLefbIiPUq!G>C^P238cH4%eWB z;&M7AosgD@G!rr{0wqKno`iC#p_}K*ep;6aqfn*g@=28_kO~Tn(W>Z#syGh~rH{IQ zMD;*CUKg9vMbL#cIpyj!pr#E?|IGcgBK0;wsf|xrc4f_K_Q=bNX0b2Va{kohcql_y zKVS&+GZ{kLmI<~@VOyrKEmPQ*DNMFU-5zawtWz?GAT%s?6-vpWf&i|7Xl!_WwpiFh z#gxeegOI8qnE;CwO{S8g#EUem89!=&*iw;<|DkEG1~y})esD$Trlme=*ea^1*crtE z%ZGwE5W|WkTf9B0QGnT8vFOI`#IQ9DQUG=&Hp%KEtAhM0+KxA>fOp7jyebpAM_R+8 zd!vc;O@r|+O{PyfRbszLlUPHjI95EQq0NSHZbcupCXgD{kR(B!($tf{Rf3d%Sfpp~ zcF#m077uIVGvQs?Q0P$&RIclq?}5Io4AEl#TRJwiK%oGeM)kn#S!@JhT$%6ew$H@|i$;kggUC4)K9DcZy;`iD~;mzLuZpN|I zoPE+A6~Q{xU>G&e@!KOog`P|Z;D@Ma64>_dw&RWcZ}CYw4eU~@&J#hld(Y)v-^q( z2$P}269Y0dFq83RDSx$D-IL?C4S(Oi!ks>>JXv$a4}IPArQNyfrOhPmWS@GuW@wxC zG9ybqeQeWA{`dj}DN9=UHkX+`i3C890Kp$XDqbB|@#?QP@$CDT$D8|iLasPxMUsfs z<6)I4mdj+7$%5rswtC#JK14snJX?Q!{M-FInU7_8%w)gc|!Pr9?8dUG<>T4a%zE=@~~28ln!LatQ`+Rp0@sIRLw@PQ@P zs)!>^{l21koqxJK>Zxa4r!$S-b@srB`2Cv0DDVn+V8azt%G-IKP1>3YEfhr&h$1qd zdi%Ui6qo>NaMd*AvKZ)>8U~`NBBh1Fcc;r;UsC)1dcz|F;~VqK(^p^7Am=DxmYTk> zzji$+$Eh1H(S{{>>uCJ)M$h9YNm*J*usdT}>SONxzkkl>gT@U@xQae(4!>@ykJw3~ zsy_WlD`&Pk)Fknz7d#)1YqW|YavD`(R*^6fbDH(xNyGNT+KVJA?XhxA@Ka4z*-Ko2 zKp)r(agn*WAU3+jdZlOGgu#BS=^zM+HrcYmdp)d#5$$a?DC#Vj3Bi3w99t5nGLtw; z$g+cW2Y&^2>a1JZoVwqZHiSg!_ixIa6h#OK=ov+Fk5TGtbS7T(t>H8JP#fbGnHo{D8Bpq5{U4e zDSw^@nYv#LLXgRZAbk7q{_Vq(Dj7qDEQVM`IO8tMC0q~yp#>q4AaUQ5P`hjFxg(k( z#DpwRce)%UGNhGu+Zbw|v~6hw!Uj@k+mKQNEP%(4x~swW8|Si3o-;1x)Ny0&nAZ?% zF?}{fC=Gq*8O(+ zDZ1t%9N7Tq$#|_KRt?sVki^r?vG=tg0v?jex@kXQ)pqOBH&BLU>a+KDIh~G?+&5;q zT&$0cKAlYO^SUoa`lj(28Z!!yc7N3AJ6qZ|)Br6l0u!;Tnq0H3`zHt1zD#JTG1x-j z?Ih8T%gG9i)E}(3k2jxg5C`KGhs>-PU#VC!uxqtD-F)~MulB$Ki2E3uM=U^({(Ve@jiMBz&n>gvNr<+%MP;Bp@in14cUuWvfA z-81Or*J{-%?w=sLb zc3(k^8RhNhwCbaoYQ)kSHW}^=7<*X(C0IHQz>zCl8JNV=RV*aPB4zod`eJ2$T!J~F zSQ_U+>ZJ!aB90+a3hzkuihm>JtJ{xfrN30OpEZF424`|G!CgzP#JrRlOVj*IVty&s zNmrb)I16_dhflfs3_byKgy1sCqJNVJVJWgbeoQqGZ?6%Wu~pp?hGvMNo(nixQVVXH zM~Iv|>QSX3b2+ZvWRi}`wr5Ldi(>&_mSJsMPVWpSheVJb+!=*0+<*7Zw$vR!-yKot zMihHUEx5Z(kL$(5tlaQ!LZ!FUN;E7HSY?>l+v$7N%;`|N+D>2Yi*dLw`ju{$YJt+{ zeH9n(?6~V9cFfP_baq)d&aom;JdPgji1z@ejYoGxe7DX8?n4d-LSq4S15?b97K zei>T-KuxA8L-)VkQ(gJa)Bz$!VIPOc*8MR+gYl$N(|3q*y#=FZt6j3x6Y;;h>=91f^PIh=#XCr+Ji6kWLAOcz@621V43oJMnuq@jIk< zXFrUhV~s7ya@A(B*uvofDqI1gis(B`X(}IT2u)pg%?CDAbSFckH;a%77x=Ug0W<&j zhx@*5?zgtOH`Vh}0w`j*q!04$QH9hylvV+@mCxF^lq()^RyY_^K3h|ewWMcpxf>x9 zR^)2xnAxgbp?`jcFkHMV!i6%+^U-C|<(4fzDlJT?I7`Jf_s~Qx$d{)o7%#@T@|8yw z32V#oRRs#?Boklss^W8N_y2wN%`OisQjSX-tT`Pt1Jx%t2)vF6doRA9?!J4SvVM@e z6_1JoB;omJsXZ@rQCnSAv!|4>s?lp0>iJCB2<%WRF@NfQT`s1+(UmJsM=t@kAqrs0 zkY=#&&?8QV8?TBpy2K!HAxq%{3nMYg3~9&=X*5dn3v=Lm4Ug!mG?`^qM208Wg{aO~}2(C{-|-$!X#6BBw)) z?x+o!Z_9TgZ!p-jeZWmO}IQIB1frPd{pUde1 z2`5MobDr_;-JGm1AC@bJ$>DRyq=^39)7Kqhjei**d&51Kx^CCK(C7+;q{|5!jFl>m zz9lZ58n4vtr5ob^Y`NYjHl0kho7%b<>pnpax8dLX%#?r*vGh;Gt@KAuk3`fF#DQvO zO#POqzY+~Y&GkpWN_?ol3dtNok4wmbfa|gFkMBHP91B;U{{aTeFKG&8Ze(+Ga%Ev{ z3YVNc0SJ?poD~5vm+;jBDwEcn4}TF~dh9Wc+1(@q1j#n`GBW`Ezd^ zidB+DwY=>aY=8vF#iWZxvPf2a^@&WPeUwDs-zAIk_m6jPzEe7qQWVyz=Z!#Ir1^C04vr_HrBnSKkI)_u zIKZcF9C0J#3fB#5+)5*i;eVBs#|9?D;Wg-^0a}4&75(S+WxPJGa;#xqRTS~xz%&(C z=Z=-DmO8t#Ja#*hIqduyf2xus4Nnmcy>h@RHzGAAJYhcF;Dk&fa#@Uer|#%?dpDq+ zI3w&aPwi;xrYg_FX!UMbn;e>~fSnIFOFaBk_rt0UQfM`r;QF3yD1YnODZ*C4A?dV; z|IlEWd$-8rYBUqrrbS`v0b!kS+T~iK?pg#{Rd;vyqG$scJS^xlnpOMmopJwng zI`^T9W%V37eL0-nr-qdPoA#ZVMCjU%Z6gJypC>ys*P4>?(-NgKKvVV}XU<2CU42nTDeBvY)WlYxrJd z!rFXt?9WwKKdqi4Bw%?70GvUwXUe!QyZUrq8$VSd%kyh-6Z*aeTa?Xsk1Tb0f@QTn z*(rizEbDexm+oBQit#@N1eRThEJNRee^b+OVAcDDYk&9+f z#M8FIKMSLJ;h+Ds=5sf6eEaaj+lSQ?8ZCjeoT}o&!hG5xAMlvn0p{prV>HsMkpUBuA$0XW86D&xWB9H#z6%T+fR#=Gu z(?mbs{Us!}q4^T(iBXX$fK}wYAKRB!kwlW!-!8Js*5rk!0+2R1=Sv_p_W|VS8RTH| z50ISy_47C1P^S-xO*~D57WSn>&Hvq}{@4tlA%DYp@f34mQ}c?|>Q$?WZQaKHBpi4) zfw!pJr{lGwGMN$@vc=aP)#^8hQ7QD0UzVDW{rPHc{_Va&X1Q4#Nx4~@gggQSC6`O` zZa6n%+afo6k>`bG%FVMtf!3>uSrv&;dcs+E0wlCVsjSaKtB{USZ0D)j8$PCH{NqV7 zSbx(Kj|YjTWoDVCI9mfQ~Rk$@R2z zGSvV{HcWkftLKbB`K|V{{-5L+?z#FMNq-cXt067dkjxsYPDpG=BnDMYMS#RSik^+q zkciwB1PF0?$g09slA3qEeD-0|(>M*clY^0L1V%xBA69A7GK3&Sac<7@fC2)er>`~8 zxJm)FPkWvM9$uPnng7j)n)n|IiT}X{^M@aZ_!AClPgQG~mah3mJ0?D(h;JhS&@FkYm zaHsxH0B<3H)4u)+1GKmI{0~t;{pA!;rHM$g-%n6)%UWQJV{LK?!}Ch^Tseol=3}vnj%`A`zt^d((5E7$1tvtH1flk^kKZRae&KwZ|dn57XIoHuYZxI>&KZ1 z{{B=J6kHaRs?o^l>hY>a!r~=50&WIP)QO!rCzP zA;M+&rrjp5gOUb}kutsd?i8GVDj_zCIdg$2-c>wjFjv3&3Sl7crg}lnufIZsH)ZeZ zkNEfln6tQSq))@P?)wQ5y&63-DS8e-qS>8ml4*W;QnQCAHG6o{{8;dGq1ae&c}*tD zM3E(uSf3OsgO7IjWX~s(ovz;C1DGq=gNx?0B6?onDH|?t_@GllCztd1^?g+HeO!Ye zh-;leP6x-f31l3;ETF4`7uo=?{|57mC=8d8JpmJw%B2+oGc=MlDSxe5S&!Q|5`NFG z@Xkxin3ye6JfwN+>2!8`(MYlx_W*;;tf9zqM}RCjmSiOR>$i%BWUA%1v)CsdDw4&j z`s$#<+0!hX{ry#F+h3QjuHRBIqm(2uK9Vv?LPmij zeHz)OyD~R~K5v{6#(TQ2U11Jr@_lNK%TD6Im?)uU3(5)5ntv_wZ)w)%TO(Ci8ZjAw zG<3Vgxqq8$ZS7oD>)FqHJ6_v1tIN8o@&-o=_{sgP&I*CWltd9fuaroVgbvEHR|`1_ z6`L(sOyY!@Zx493h~3%o$+HD^Rlj9XZR*LB1qlZZjihn^C)|55fXX*lZJ$V%c5S^) z+X7`ngCmK@lb>945G@W;?v4JcYQ-rF>$|5qmvq@Q?qT#Hf z7sY^+(oC(53&C!dmRVQ6B%_EE8TYmc#*nVk&8En{q)++(MMiHw-u>(G?%nO(>bLhF zm-lz8w}1B!t2d9H8phIyz<&w=XGB73cDVuH6jN{_t@hf`{o27bbJx#HZ3{SPj33}F%cw*lM6ysNPl7)Il8>Dp8PP1l?5I+V#&Ht${3L> zu`ZMjE;No9V!u7%Iisi#N57^m=(WhN-@bo$yS#t@ZuR)?9<1gXF$+=~V0*oU4Obsm zRb8#t->Y=1eZZ8@RRDfTy^A435bQPAoO3{$^yQv^%eUHdvRG-$z}8_%_sbLp3l=h+6*^MkG1J_$u?jr<$bBG@THsIMT#gNMAZBxsDP8`yrfgo+Uv|AdR zIo>R9$k^+6ItT$_;NX=F=#ognz=4S{xOHwr%KnaM7*gqE30rM|+W0h;j^`|lo!Tl&FFD?{{S4^FK_NY-u>omXw#ua z7TdHa%ii0Ktq83{c~*q{3|0g#ip3|ah=-B!FCjNpG)E_(hlAzlP>z&34TaW+w!g_B zU7Rj#c-0a4S;{`fit>;F^?}LvQWjBk4tq2hDDb z#I!WT*4+u4ZHiIGXYP5Ge}h~Yd7HY|f&mLmQQriJ(-b|Giqpi)L{EZrVTqqXHM$t8 zO|~y~tsyCk&+{k@w5pC^dzjP2NPkE~)Vcc%GAwiHAI2ehHBA zK-+Y?-9B$La;rM;)(tckjY^PMGG7x5D2E^dL%g3fD8-;E^1~kwrNyE=hO)3Ilzl+Z zgkv1T6tHZUJIQ0;tv-yh{9{pT0>rN8<~1WG#_Vmd`681v;knhWDgerj=W(pxOk*YV9GBug=5k`*TVEF&} zXERDsx!T^*+v7}mRqxtU%7uQc`Vg_GCIbM}NuuYbDeShngU*?(7+jBvFR9lh?W0U( zF~?O%XgsQh-D63S_ce8rKzi4hjyClK3i7&LWaa3+XR>6C;EX;mUVj(cV=(w!3PHe3 z1{2o@ewe$g5s%ICGJS16pd-N+?bAyV&2&?spW9;L(?2i3w6@wLzTg!G7>_O!tzgoT z9g1~s8Gm#cRip?PBiDBJc&K7k(!23K`c8^1AxsVyq@U!_^=#^W<|}AB=oIEh1sTMX z#-%(`XX~+*I}A^xUVrQTsAwNjFC2O4+-CGjHmW9cys!lrR5~%lQ%_>|2uL0Vy4r-c zxk{hR17B#Y6FciG^Yj@G7{kJ%5rJcRt zO_q@`78m)LAp&P3i+T1ktdGVAg(M8LFnFJ5P=5ZQGETsW(;sBYNn&Jr8{dKG+{#)a zrxI|;{fgm6TXk#wN>N+3rGWvqsD9JyA9bWj6S!0th+HNlO8EKPLDI~<%fap=ceok9 z!J2Rfgq3aWLw`90Y=a}bM<3_vVsE~c=MouCSQ!5p%UNpQc$U}) zgdE=!aQeGxQoQaFt1$JoGj0IZ;Cq&tJTLSFALrO5CKV@rlv=0w0)hvWmd%lIS+4gj zu%{gmkiM@>dwe6jU}`TgB|0Nieh15#Jwz~Rmp5Rk6HVFibAt44txC`nTEkY!6Gb0oBL^%D&L=h0o zxB#0BmJ#8q57$tdyQ8nt{bv)^pcu;xN|2Y~*~1}Gtjrn5U{Bt8WwW;dO z(|@;1;at6Px5eRn`TP3E^VdQT50ol!wHE#-E8)Aouj%0N zt=(fb$BXcMS4SPoA3QBwAf{vIT~1?OG=FzXpl*_e09BpTz=oag42`wD1A*7FikYPA1;i?mRDpC}%!x#KZhx)I zmv1g#E>~LkfDD6no;`bZ_4E4j`ug45_0=yw)7smMYg+w@zTd5{e!BYYVtx7U8h`L- zbtLrMAkr-zml(RBAunoE()4pJ*;rfbxo30?7wY1Y4x|am;0FG=Ou#=hDkdtp;fOB%>3N z<(Yc{!RN5Y*Mk?S`zwYZLU@cZX=AU*0>{aLT*WTEt$2@_vknmit`~|{Z-3vKGCRk& zI^iWkebw;mmmA4h~7S#FbV(&|_^0lA(s_2!Rpke073T;Yl|L{g#J6s*kjN;ztoa=SUSW zr8-YQ+K1b>bQffRO%{M$y;G1SOth_AW|wUnt8Cl0ZQHAC+wM}A*=5_dtu9;VKYQPM zAMWFPm>HQdGcrcx{Bq=q8PNDjPNQ+0v|7q_$2TQA_aD8mKo3>||0jty93cFQ7PSK1 zKp$+`my$rsm)JLk-_|joQ>nNUJwGuO+sd8Uqak`*sYEnduZFv@c7*yy)2kSRsY~6w zwFVa?x(zu7_0Gw~J_%*KAiq$=!v2R*-o=jC8F=ErSu_Wqi(gl$=9qoArz^AHz+=mA=fFAOrrEC=5i z9^!@H$%06AS0nX84Aj}pSdl&S$|?Qzww24yEjp?KLi@`0*NCBe3{FRJA(^utzQ59) zgbVcJ1A_Co?w{Q)-C;%M+~lE7nDs<#(@yY2tY^@i%h=q%&G|Q5r@TQk1ir9%Vr_7- z8ut%$(%h@;S1iysxzl=z(Bic6K88oAZ_||D=$+t}-4F>%m_P)=oK#-3XiS6H8bvG4 zcrp&>r@*Ke=P(o6lQQh{D*G(LOYXc_e$K~ZP07qT3}Gxv1E--dwkb~m?YgL4Uc@6S zeh!P2f593%r8rj8)XO-I?G)4X)p+rb?yyxWVMiRFhct=$ulgRs8-K_&&y1=eQc)lk zT%E*5j~(PU2Yh+osm^<*p`+MylOwQ=iTg2ySac znrctu4`A2tD!;zK*EMxm7888Dgn}Ebi$z*%y@sgC|CR~Wt3v?$X$R7%z9lu7)s*-w zB@y8ZaL6GIqD5i+dRvR$!G6Edk!`|BY2N_$u5EVKNB(2G5e-S6=3t4^+MkRQhVP4t z{>(Ln#~*@+*KYj<1QD`7!oV#T6&>z}Eb*-8Fz-vpiEubhbksxHGkZhSoGkRU?bC`c z!i&>c^^NJs>DrRxYvXK7>U}jDj~RF?+A*eAkOzZo3Vau)8OR`jZL|0^lsS}h-g-Kj-Za(7m@Rl zB6!6f`G@Jj@=@ZDv$_bTpH0!sTTvyAHv$o@U&>cM$OA$>MRCS_1TEk6N5+Qq$Q;LR$*f77@!{8Fe;my zOm;{&m!dVnt(wXinT^Or!uGtX)W#JpaR~gh`FC-`QfO3DUg&kk7Ov*VspFpJNh=U? z@k;DOlaB`H3A%V2Ola*yYE-bx(W~OSL`q!dHZzK)TR~@}e8;{*Z>@#licIRqRlqS^ zT9`0*);)VGm$)9GVbj^O!E>A9H7r@kEOLR23sxEahF9M#zBAR`y+Ji8i5}HFijO4? z)#z+lOq(Z6;hG&C;xuWS>Ncr+m#-sMLkW8HZ;GHqDljB2LpvnJou7XU9`#UFAlB;5 zuWiG8^g@IFsk*JN*W-1M(3bax5J0dNxG%^P(+O4ooLx}%hWZFH|KNu@it;Lfx>J5 z-Q7p)tr&11^ZaU6oiu~9gUHs$C}>zQ1jCz5%hUTad25dpV^6t0PE^B)IdF@UPvMh) zXgfPYfYZ`?#N9#nq23p4mFZULuhUe$>d>;na;f`j2L3lVOvgs1Y>=PeSdLxK*oPER zWr{7RBXO*fg~RvjtDy(8BtyJVm>p(5F#hNO= z)jopnT+?Z-AFT8;`G*fv9Z(=iZ4krlk(lOM!Y8+5)7I_`i-a6JN7y@b`2M^~`5m>I z^UBq0K_4=!JR3q@C2EWYaVbAaJEtTfC1ZU^BT)9z?~L;pt3+Vp><0VR^e1s+hNeLi z1-L!in2Et(Jkv4sxS8FG&~Y^*vbyMUHDlM9)5u_MIXoWVj4WiZt@K;)Pglix?aSXmT57w(?*)>ByJi(>#-8L~a1*&zZyA53n}__<|Y#j6Py? zxZ&zf%$0&@*+Am;1#8uXnDIY46PuHXn2FfY#0HL!4-Oz_?qKO=Ma;&`N&G)>c385! z;~_C}_{|%}7N#sbjsOC`##iEVv(DSfRlkf>25l>u$;%7CYpc0(VH=I9i}m4_MJOLO zaTLQ($1!L5T^O4b;$=i?;VLSzub)?iZdPAE#X>Tl`cD9-;EeWBlr>T_9xbJ9N6bfb zrOy1enufgMCVGPDxRxOGOGE1_P%m(t{iIk>l&5;s3HR+T@Ip3u!})x7h*PVxCUgGL zJX3=2rbnLNLsQ*iJuo$`H9DM;9`@Y(Ld1|!5}nZU!dQly3*r}0p5gb2(Ka3|5P?SU z4X(a%3*LJL1J+oF)`7xU#I**&V4I;DPFqp*V#Dj*puvS+XhUWLi2y1ZSVvJ0TGU4I zp!n+?w}L4iyeniRK+v!M&B5-OXw$5wQ1yb0u*uSOHK9l5vBi$jp8*z+DUq%#eGYl? zJ`?kJlp~J0kc>1TXbLSnU28~ce=goxfsu%m!JbO*hgqSo1>@%j3t#(DO$zt#?wf>W^18Zu{2%#SpNb~mZM%6U&X|h z!<0yMis4aNXoF>*E2yQIjTTDXl|hR$D=n~4Bcp1HRA6=VsH3#zR8mY(`GW8sL(4MJ z7ul-i`NH2Khar?gnBifGSuu%0AeBvoAeoYxtwDk=V5ekI)#}ri))w^W3Hw0xsAY`m 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 diff --git a/verifier_exeHZ.pl b/verifier_exeHZ.pl index 78e694e..0a4c452 100755 --- a/verifier_exeHZ.pl +++ b/verifier_exeHZ.pl @@ -342,7 +342,10 @@ unless($is_opt_L or $is_opt_rpt) { $NOM_FIC_RAPPORT = "Rapport/rapport_test_R.txt"; #recherche des tests Test_R dans l arborescence (utilisation de find et suppression de chaque retour a la ligne avec chomp) - my @LISTE_TESTS_R = map {chomp; $_} qx(find . -name "Test_R*" -type d); + ## + ## RAPPEL : le repertoire Tests_en_attente_debug n est pas concerne (on le squizze avec une option "-not -path" dans la recherche find + ## + my @LISTE_TESTS_R = map {chomp; $_} qx(find . -not -path "*Tests_en_attente_debug*" -name "Test_R*" -type d); #si il n y a aucun test dans @LISTE_TESTS_R => on le signale if($#LISTE_TESTS_R == -1) { @@ -389,7 +392,10 @@ unless($is_opt_R or $is_opt_rpt) { $NOM_FIC_RAPPORT = "Rapport/rapport_test_L.txt"; #recherche des tests Test_L dans l arborescence (utilisation de find et suppression de chaque retour a la ligne avec chomp) - my @LISTE_TESTS_L = map {chomp; $_} qx(find . -name "Test_L*" -type d); + ## + ## RAPPEL : le repertoire Tests_en_attente_debug n est pas concerne (on le squizze avec une option "-not -path" dans la recherche find + ## + my @LISTE_TESTS_L = map {chomp; $_} qx(find . -not -path "*Tests_en_attente_debug*" -name "Test_L*" -type d); #si il n y a aucun test dans @LISTE_TESTS_L => on le signale if($#LISTE_TESTS_L == -1) { diff --git a/verifier_exeHZ.zsh b/verifier_exeHZ.zsh index 3cd1f87..bdf2a63 100755 --- a/verifier_exeHZ.zsh +++ b/verifier_exeHZ.zsh @@ -58,6 +58,21 @@ fi + +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# +# REMARQUE : le repertoire Tests_en_attente_debug/ n est pas pris en compte pour la recherche +# des tests a lancer (utilisation de l option "-not -path" dans les commandes find +# +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + #################################### ### PROGRAMME POUR TESTS RAPIDES ### #################################### @@ -80,7 +95,7 @@ mv -f Rapport/rapport_test_R.txt Rapport/rapport_test_R_OLD.txt ###--- le chemin de tous ces répertoires /Test_R* ---### ###-------------------------------------------------------### mv Rapport/Liste_Tests_R.txt Rapport/Liste_Tests_R_OLD.txt -foreach f (`find . -name "Test_R*" -type d`) +foreach f (`find . -not -path "*Tests_en_attente_debug*" -name "Test_R*" -type d`) echo $f >> Rapport/Liste_Tests_R.txt end @@ -94,7 +109,7 @@ end #- Execution de "test.pl nom_repertoire type_calcul" -# #- une fois que l'on est placé au bon endroit -# #-----------------------------------------------------# -foreach f (`find . -name "Test_R*" -type d`) +foreach f (`find . -not -path "*Tests_en_attente_debug*" -name "Test_R*" -type d`) ./Perl/test.pl $f $cmd_herezh end @@ -128,7 +143,7 @@ mv -f Rapport/rapport_test_L.txt Rapport/rapport_test_L_OLD.txt ###--- le chemin de tous ces répertoires /Test_L ---### ###-------------------------------------------------------### mv Rapport/Liste_Tests_L.txt Rapport/Liste_Tests_L_OLD.txt -foreach f (`find . -name "Test_L*" -type d`) +foreach f (`find . -not -path "*Tests_en_attente_debug*" -name "Test_L*" -type d`) echo $f >> Rapport/Liste_Tests_L.txt end @@ -142,7 +157,7 @@ end #- Execution de "test.pl nom_repertoire type_calcul" -# #- une fois que l'on est placé au bon endroit -# #-----------------------------------------------------# -foreach f (`find . -name "Test_L*" -type d`) +foreach f (`find . -not -path "*Tests_en_attente_debug*" -name "Test_L*" -type d`) ./Perl/test.pl $f $cmd_herezh end