summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-05-27 03:01:31 +0000
committerNorbert Preining <norbert@preining.info>2022-05-27 03:01:31 +0000
commit84a5593d3fb9d03aac5677678bcc4c92e8c9a9c4 (patch)
tree0212ba38147bcfe80e5c1a853071a6e6a45b87d7 /macros/latex
parent02d941fa9c9895bb08a84ac9afe3559abd1ba8ad (diff)
CTAN sync 202205270301
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/fancyvrb/Changes1
-rw-r--r--macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdfbin141127 -> 141454 bytes
-rw-r--r--macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex10
-rw-r--r--macros/latex/contrib/fancyvrb/latex/fancyvrb.sty4
-rw-r--r--macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdfbin7679593 -> 8451374 bytes
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty2218
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfC-Calculatriceold.mp195
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp55
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp1
-rw-r--r--macros/latex/contrib/profcollege/metapost/PfCMonde.mp150
-rw-r--r--macros/latex/contrib/profcollege/metapost/datastest/Casia.dat5
-rw-r--r--macros/latex/contrib/profcollege/metapost/datastest/russie3.dat8819
-rw-r--r--macros/latex/contrib/profcollege/metapost/datastest/russie3bis.dat465
13 files changed, 11153 insertions, 770 deletions
diff --git a/macros/latex/contrib/fancyvrb/Changes b/macros/latex/contrib/fancyvrb/Changes
index 8053f8e8d7..a90f370d89 100644
--- a/macros/latex/contrib/fancyvrb/Changes
+++ b/macros/latex/contrib/fancyvrb/Changes
@@ -1,4 +1,5 @@
--- fancyvrb.sty
+4.2a 2022/05/26 - updated documentation (hv)
4.2 2022/04/12 - change option file_ext to fileext (hv)
4.1b 2021/12/21 - fix for ~ in message (hv)
4.1a 2021/11/24 - updated filedate (hv)
diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
index a797fa6253..2850067b7a 100644
--- a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
+++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
index 66b211391f..ec5cc930ce 100644
--- a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
+++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
@@ -831,6 +831,15 @@ interpreted (using tabs is in fact a rather old-fashioned style of coding):
\end{Verbatim}
\end{SideBySideExample}
+
+Escaping of ] is needed to prevent ]] at the end which is not allowed. ALternatively
+you can write \verb|commandchars={+[]}| or \verb|commandchars=+{[}{]}|. Escaping is needed
+for all active characters. Pay attention that you do not use characters which are used
+in the code of \texttt{fancyvrb} itself, e.g. \verb|<>|
+
+
+
+
\ifChangeBar\begin{changebar}\fi
Using this way, it is also possible to put labels to be able, later, to
make reference to some lines of the verbatim environments:
@@ -848,6 +857,7 @@ make reference to some lines of the verbatim environments:
\end{SideBySideExample}
\ifChangeBar\end{changebar}\fi
+
\subsubsection{Margins}
\begin{optlist}
diff --git a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
index cd7a2478a1..a8d4922c3d 100644
--- a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
+++ b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
@@ -13,8 +13,8 @@
%% verbatim environments and commands and extensive documentation.
%%
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{4.2}
-\def\filedate{2022/04/12}
+\def\fileversion{4.2a}
+\def\filedate{2022/05/26}
\ProvidesPackage{fancyvrb}[\filedate\space \fileversion\space verbatim text (tvz,hv)]
%\message{Style option: `fancyvrb' v\fileversion \space <\filedate> (tvz)}
\csname fancyvrb@loaded\endcsname
diff --git a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
index 77976e2bf7..09b8ebd0b5 100644
--- a/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
+++ b/macros/latex/contrib/profcollege/doc/ProfCollege-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index 5e1c717793..ac3760389a 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
@@ -3,7 +3,7 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfCollege}[2022/03/10 v0.99-m Aide pour l'utilisation de LaTeX au collège]
+\ProvidesPackage{ProfCollege}[2022/06/01 v0.99-o Aide pour l'utilisation de LaTeX au college]
\RequirePackage{verbatim}
@@ -129,6 +129,12 @@
}
\makeatother
+% Pb ProfCollege<->Chinois soulev\'e par Denis
+% Solution by egreg :)
+\newcommand\getstrut[1]{%
+ \the\expandafter#1\expanded{\strutbox}%
+}
+
% Colorer uniquement la barre de soulignement
% https://tex.stackexchange.com/questions/9466/color-underline-a-formula/153884
\def\mathunderline#1#2{\color{#1}\underline{{\color{black}#2}}\color{black}}
@@ -158,7 +164,7 @@
}
\newcommand\LogoTW[2]{%
-\setbox1=\hbox{\includegraphics[scale=#2]{#1}}
+\setbox1=\hbox{\includegraphics[scale=#2]{#1}}%
\begin{tikzpicture}%
\clip (0,0) circle (4mm);
\draw (0,0) circle (4mm);
@@ -168,12 +174,12 @@
\end{tikzpicture}%
}%
-\makeatletter
+\makeatletter%
\def\Dotfill{%
-\leavevmode
-\cleaders \hb@xt@ .44em{\hss\xleaders\hrule width0.33em\hss}\hfill
-\kern\z@}
-\makeatother
+\leavevmode%
+\cleaders \hb@xt@ .44em{\hss\xleaders\hrule width0.33em\hss}\hfill%
+\kern\z@}%
+\makeatother%
\newcommand\pointilles[1][]{%
\ifx\bla#1\bla%
@@ -331,6 +337,68 @@
}
%%%
+% Geometrie
+%%%
+\setKVdefault[Geometrie]{CoinBG={(0,0)},CoinHD={(10u,10u)},TypeTrace="Instruments"}%
+
+\ifluatex
+\NewDocumentEnvironment{Geometrie}{o +b}{%
+ \useKVdefault[Geometrie]%
+ \setKV[Geometrie]{#1}%
+ \mplibforcehmode
+ \begin{mplibcode}
+ % input PfCMPFr;
+ pair Coinbg,Coinhd;
+ Coinbg=\useKV[Geometrie]{CoinBG};
+ Coinhd=\useKV[Geometrie]{CoinHD};
+ if \useKV[Geometrie]{TypeTrace}="Instruments":
+ typetrace:="normal";
+ elseif \useKV[Geometrie]{TypeTrace}="MainLevee":
+ typetrace:="mainlevee";
+ elseif \useKV[Geometrie]{TypeTrace}="Espace":
+ typetrace:="3D";
+ typerepre:="persp";
+ fi;
+ xa=xpart(Coinbg);
+ xb=xpart(Coinhd);
+ ya=ypart(Coinbg);
+ yb=ypart(Coinhd);
+ feuille(xa,ya,xb,yb);
+ _tfig:=if (xb-xa)>(yb-ya): (xb-xa) else: (yb-ya) fi;
+ _tfig:=2*_tfig;
+ #2%
+ \end{mplibcode}
+}{}
+\else
+\NewDocumentEnvironment{Geometrie}{o +b}{%
+ \useKVdefault[Geometrie]%
+ \setKV[Geometrie]{#1}%
+ \begin{mpost}[mpsettings={
+ pair Coinbg,Coinhd;
+ Coinbg=\useKV[Geometrie]{CoinBG};
+ Coinhd=\useKV[Geometrie]{CoinHD};
+ if \useKV[Geometrie]{TypeTrace}="Instruments":
+ typetrace:="normal";
+ elseif \useKV[Geometrie]{TypeTrace}="MainLevee":
+ typetrace:="mainlevee";
+ elseif \useKV[Geometrie]{TypeTrace}="Espace":
+ typetrace:="3D";
+ typerepre:="persp";
+ fi;}
+ ]%
+ xa=xpart(Coinbg);
+ xb=xpart(Coinhd);;
+ ya=ypart(Coinbg);
+ yb=ypart(Coinhd);
+ feuille(xa,ya,xb,yb);
+ _tfig:=if (xb-xa)>(yb-ya): (xb-xa) else: (yb-ya) fi;
+ _tfig:=2*_tfig;
+ #2%
+ \end{mpost}
+}{}
+\fi%
+
+%%%
% Smiley
%%%
%%https://tex.stackexchange.com/questions/3695/smileys-in-latex/227226
@@ -518,11 +586,140 @@
}%\raisebox
}
+%%%%%
+% Enquête
+%%%%%
+\setKVdefault[ClesEnquete]{Perso=Qui ?,Objet=Quoi ?,Lieu=Où ?,Largeur=4.5cm}
+
+\newcommand\Enquete[1][]{%
+ \useKVdefault[ClesEnquete]%
+ \setKV[ClesEnquete]{#1}%
+}
+
+\newcommand\ListePersonnages[1]{%
+ \setsepchar{§}%
+ \readlist*\RetiensListePersonnages{#1}
+}
+
+\newcommand\ListeObjets[1]{%
+ \setsepchar{§}%
+ \readlist*\RetiensListeObjets{#1}
+}
+
+\newcommand\ListeLieux[1]{%
+ \setsepchar{§}%
+ \readlist*\RetiensListeLieux{#1}
+}
+
+\newcommand\MelangeListe[2]{%
+ % #1 Liste à mélanger
+ % #2 Nombre d'éléments à conserver
+ \setsepchar{,}\ignoreemptyitems
+ \readlist*\ListeInter{#1}
+ \xdef\faa{}% Liste construite
+ \xdef\fii{}% Liste détruite
+ % on crée les #2 premieres solutions.
+ \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
+ \xintifboolexpr{\ListeInterlen>1}{%
+ \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
+ \xdef\faa{\faa \ListeInter[\Alea],}%
+ \xdef\fii{}%
+ \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
+ \xintifboolexpr{##2 == \Alea}{%
+ }{%
+ \xdef\fii{\fii \ListeInter[##2],}%
+ }%
+ }%
+ }{%
+ \xdef\faa{\faa \ListeInter[1]}%
+ }%
+ \readlist*\ListeInter{\fii}%
+ }%
+}%
+
+\newcommand\ListeQuestions[1]{%
+ \setsepchar[*]{§*/}%
+ \readlist*\RetiensListeQuestions{#1}
+ % On crée la liste des numéros des questions
+ \xdef\foo{}%
+ \xintFor* ##1 in {\xintSeq{1}{\RetiensListeQuestionslen}}\do{%
+ \xdef\foo{\foo ##1,}%
+ }%
+ % Mélange des questions
+ % on crée les 6 premieres solutions.
+ \MelangeListe{\foo}{\fpeval{\RetiensListePersonnageslen}}%
+ \readlist*\ListeMelangeePersonnages{\faa}%
+ \readlist*\ListeRestante{\fii}%\ListeRestante[]
+ \MelangeListe{\faa}{\fpeval{\RetiensListePersonnageslen-1}}%
+ \readlist*\ListefuuPerso{\faa}%
+ % on crée les 6 solutions suivantes.
+ \xdef\fuuu{}%
+ \foreachitem\compteur\in\ListeRestante{\xdef\fuuu{\fuuu,\ListeRestante[\compteurcnt]}}%
+ \MelangeListe{\fuuu}{\fpeval{\RetiensListeObjetslen}}%
+ \readlist*\ListeMelangeeObjets{\faa}%
+ \readlist*\ListeRestante{\fii}%
+ \MelangeListe{\faa}{\fpeval{\RetiensListeObjetslen-1}}%
+ \readlist*\ListefuuObjets{\faa}%
+ % on crée les dernieres solutions.
+ \xdef\fuuu{}%
+ \foreachitem\compteur\in\ListeRestante{\xdef\fuuu{\fuuu,\ListeRestante[\compteurcnt]}}%
+ \MelangeListe{\fuuu}{\fpeval{\RetiensListeLieuxlen}}
+ \readlist*\ListeMelangeeLieux{\faa}%
+ %% \readlist*\ListeRestante{\fii}%
+ \MelangeListe{\faa}{\fpeval{\RetiensListeLieuxlen-1}}%
+ \readlist*\ListefuuLieux{\faa}%
+ % --------------
+ % Liste des questions sauvegardees
+ \xdef\fuu{}%
+ \foreachitem\compteur\in\ListefuuPerso{\xdef\fuu{\fuu,\ListefuuPerso[\compteurcnt]}}%
+ \foreachitem\compteur\in\ListefuuObjets{\xdef\fuu{\fuu,\ListefuuObjets[\compteurcnt]}}%
+ \foreachitem\compteur\in\ListefuuLieux{\xdef\fuu{\fuu,\ListefuuLieux[\compteurcnt]}}%
+ \ignoreemptyitems\setsepchar{,}%
+ \MelangeListe{\fuu}{\fpeval{\RetiensListePersonnageslen+\RetiensListeObjetslen+\RetiensListeLieuxlen-3}}%
+ \readlist*\ListeMelangeeQuestions{\faa}%
+}
+
+\newcommand\AffichageQuestions{%
+ \begin{enumerate}
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\RetiensListePersonnageslen+\RetiensListeObjetslen+\RetiensListeLieuxlen-3}}}\do{%
+ \item\xdef\Compteur{\ListeMelangeeQuestions[##1]}\RetiensListeQuestions[\Compteur,1]
+ }
+ \end{enumerate}
+}
+
+\newcommand\AffichageTableau{%
+ \begin{tabular}{|>{\PfCTBstrut$\square$~}m{\useKV[ClesEnquete]{Largeur}}|}
+ \hline
+ \rowcolor{gray!15}\multicolumn{1}{|c|}{\PfCTBstrut\useKV[ClesEnquete]{Perso}}\\
+ \hline
+ \xintFor* ##1 in {\xintSeq{1}{\RetiensListePersonnageslen}}\do{%
+ \RetiensListePersonnages[##1]\xdef\PfCCompteurMelange{\ListeMelangeePersonnages[##1]} $\star$ \RetiensListeQuestions[\PfCCompteurMelange,2]\\
+ }
+ %
+ \hline
+ \rowcolor{gray!15}\multicolumn{1}{|c|}{\PfCTBstrut\useKV[ClesEnquete]{Objet}}\\
+ \hline
+ \xintFor* ##1 in {\xintSeq{1}{\RetiensListeObjetslen}}\do{%
+ \RetiensListeObjets[##1]\xdef\PfCCompteurMelange{\ListeMelangeeObjets[##1]} $\star$ \RetiensListeQuestions[\PfCCompteurMelange,2]\\
+ }
+ %
+ \hline
+ \rowcolor{gray!15}\multicolumn{1}{|c|}{\PfCTBstrut\useKV[ClesEnquete]{Lieu}}\\
+ \hline
+ \xintFor* ##1 in {\xintSeq{1}{\RetiensListeLieuxlen}}\do{%
+ \RetiensListeLieux[##1]\xdef\PfCCompteurMelange{\ListeMelangeeLieux[##1]} $\star$ \RetiensListeQuestions[\PfCCompteurMelange,2]
+ \\
+ }
+ \hline
+ \end{tabular}
+}%
+
+
%%%
% Modele en barre
%%%
\setKVdefault[ClesModeleBarre]{Hauteur=0.5cm,Largeur=1cm,Separation=0,Homogene=false}%Separation pour conserver le lien avec les équations.
-\defKV[ClesModeleBarre]{Longueur=\setKV[ClesModeleBarre]{Homogene}}
+\defKV[ClesModeleBarre]{Longueur=\setKV[ClesModeleBarre]{Homogene}}%
\newtoks\toklistemodelbarresup%
\toklistemodelbarresup{}%
@@ -560,7 +757,7 @@
}%
\newcommand\PfCMPDessineModelBarre[2]{%
- \begin{mplibcode}
+ \begin{mplibcode}%
Longueur:=\useKV[ClesModeleBarre]{Longueur};
Hauteur:=\useKV[ClesModeleBarre]{Hauteur};
@@ -674,7 +871,7 @@
endfor;
endfor;
\end{mplibcode}
-}
+}%
\newcommand\PfCMPDessineModelBarreNonHomogene[2]{%
\ifluatex%
@@ -777,10 +974,10 @@
MBnbdepla:=0;
for k=1 upto MBnbcolinf:
for l=1 upto MBnbinfoinf[k]:
- trace Brique(MBColInf[k],MBnbcasesinf[k][l])(MBTextcasesinf[k][l]) shifted(MBnbdepla*VecteurDepla+u*(0,-0.5));
+ trace Brique(MBColInf[k],MBnbcasesinf[k][l])(MBTextcasesinf[k][l]) shifted(MBnbdepla*VecteurDepla+(0,-Hauteur));
if MBnbcasesinf[k][l]<0:
for j=1 upto (abs(MBnbcasesinf[k][l])-1):
- trace ((0,0)--(0,Hauteur)) shifted((MBnbdepla+j)*VecteurDepla+u*(0,-0.5)) withcolor black;
+ trace ((0,0)--(0,Hauteur)) shifted((MBnbdepla+j)*VecteurDepla+(0,-Hauteur)) withcolor black;
endfor;
fi;
MBnbdepla:=MBnbdepla+abs(MBnbcasesinf[k][l]);
@@ -788,10 +985,10 @@
endfor;
if Separation>0:
- draw u*(Separation,-0.75)--u*(Separation,0.75) withpen pencircle scaled 1.5 dashed evenly withcolor red;
+ draw (u*Separation,-1.5Hauteur)--(u*Separation,1.5Hauteur) withpen pencircle scaled 1.5 dashed evenly withcolor red;
fi;
- \end{mplibcode}
+ \end{mplibcode}%
\else
\begin{mpost}[mpsettings={Longueur:=\useKV[ClesModeleBarre]{Largeur};Hauteur:=\useKV[ClesModeleBarre]{Hauteur};Separation:=\useKV[ClesModeleBarre]{Separation};}]
vardef Brique(expr col,nbfois)(text t)=
@@ -903,7 +1100,7 @@
\end{mpost}
\fi
-}
+}%
%%%
% Fiche m\'emorisation active
@@ -996,6 +1193,17 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
}%
}%
+\newcommand\DivisionD[3][]{%
+ \useKVdefault[ClesOperations]%
+ \setKV[ClesOperations]{#1}%
+ \setcounter{divxlop}{0}%
+ \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}%
+ \opdiv[decimalsepsymbol={,},lineheight=1.5em,columnwidth=1.5em,displayintermediary=all,voperator=bottom,intermediarystyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},remainderstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}%
+ \foreach \i in {1,...,\thedivxlop}{%
+ \PfCentoure{A\i}{A\i}%
+ }%
+}%
+
\newcommand\Multiplication[3][]{%
\useKVdefault[ClesOperations]%
\setKV[ClesOperations]{#1}%
@@ -1032,7 +1240,7 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
%%%
% Cartographie
%%%
-\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2021/texmf-dist/metapost/profcollege/datastest/"}
+\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2022/texmf-dist/metapost/profcollege/datastest/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2}
\defKV[Cartographie]{EchelleCarte=\setKV[Cartographie]{Carte}}
\defKV[Cartographie]{Pays=\setKV[Cartographie]{PaysSeul}}
\defKV[Cartographie]{Villes=\setKV[Cartographie]{VillesSup}}
@@ -1041,43 +1249,164 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
\ifluatex
\useKVdefault[Cartographie]
\setKV[Cartographie]{#1}
- \mplibforcehmode
- \begin{mplibcode}
- input PfCMonde;
- string arborescence;
- arborescence:=\useKV[Cartographie]{Arborescence};
- LargeurCadre=\useKV[Cartographie]{Largeur};
- HauteurCadre=\useKV[Cartographie]{Hauteur};
- distanceecran=100*\useKV[Cartographie]{Echelle};
- fleuves:=\useKV[Cartographie]{Fleuves};
- boolean Carte,Impression,VillesSup;
- Carte=\useKV[Cartographie]{Carte};
- Impression=\useKV[Cartographie]{Impression};
- VillesSup=\useKV[Cartographie]{VillesSup};
- couleurfond:=\useKV[Cartographie]{CouleurFond};
- if Impression:
- noncolore:=true;
- payscolor:=0.85white;
- couleurfond:=white;
- couleurfleuve:=couleurfond;
- fi;
- capitales:=\useKV[Cartographie]{Capitales};
- All:=\useKV[Cartographie]{All};
- Europe:=\useKV[Cartographie]{Europe};
- Asie:=\useKV[Cartographie]{Asie};
- Amsud:=\useKV[Cartographie]{Amsud};
- Amnord:=\useKV[Cartographie]{Amnord};
- Amcentrale:=\useKV[Cartographie]{Amcentre};
- Caraibes:=\useKV[Cartographie]{Caraibes};
- Afrique:=\useKV[Cartographie]{Afrique};
- if Carte:
- Echelle:=\useKV[Cartographie]{AfficheEchelle};
- figure(-0.5u*LargeurCadre,-0.5u*HauteurCadre,0.5u*LargeurCadre,0.5u*HauteurCadre);
- if \useKV[Cartographie]{PaysSeul}:
- projection:="bonne";
- theta:=#2;
- phi:=#3;
- zoom(echelle(#2,#3,\useKV[Cartographie]{EchelleCarte}));
+ \ifboolKV[Cartographie]{Projection}{%
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCMonde;
+ string arborescence;
+ arborescence:=\useKV[Cartographie]{Arborescence};
+ boolean Impression,VillesSup;
+ VillesSup=\useKV[Cartographie]{VillesSup};
+ Impression=\useKV[Cartographie]{Impression};
+
+ maillage:=true;
+ fleuves:=false;
+ lacs:=false;
+ capitales:=false;
+
+ if Impression:
+ noncolore:=true;
+ payscolor:=white;
+ else:
+ noncolore:=true;
+ payscolor:=\useKV[Cartographie]{CouleurPays};
+ fi;
+
+ projection:=\useKV[Cartographie]{TypeProjection};
+ feuillet:=u*(-20,-20)--u*(20,-20)--u*(20,20)--u*(-20,20)--cycle;
+ drawoptions(withpen pencircle scaled 0.5 withcolor 0.5white);
+ Projection(3,48,\useKV[Cartographie]{Echelle});
+ drawoptions();
+
+ if projection="mercator":
+ clip currentpicture to (mercatorc(-85,-180)--mercatorc(-85,180)--mercatorc(85,180)--mercatorc(85,-180)--cycle);
+ draw mercatorc(0,-180)--mercatorc(0,180);
+ draw mercatorc(-85,0)--mercatorc(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),mercatorc(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(0,k*10));
+ endfor;
+ elseif projection="cylindrique":
+ clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle);
+ draw cylindriquec(0,-180)--cylindriquec(0,180);
+ draw cylindriquec(-85,0)--cylindriquec(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,k*10));
+ endfor;
+ elseif projection="winkel":
+ clip currentpicture to (winkelc(-85,-180)--winkelc(-85,180) for k=-80 step 5 until 85:--winkelc(k,180) endfor --winkelc(85,-180) for k=80 step -5 until -85:--winkelc(k,-180) endfor --cycle);
+ draw winkelc(0,-180)--winkelc(0,180);
+ draw winkelc(-85,0)--winkelc(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),winkelc(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(0,k*10));
+ endfor;
+ elseif projection="cylindrique":
+ clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle);
+ draw cylindriquec(0,-180)--cylindriquec(0,180);
+ draw cylindriquec(-85,0)--cylindriquec(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,k*10));
+ endfor;
+ elseif projection="simple":
+ clip currentpicture to (simplec(-85,-180)--simplec(-85,180)--simplec(85,180)--simplec(85,-180)--cycle);
+ draw simplec(0,-180)--simplec(0,180);
+ draw simplec(-85,0)--simplec(85,0);
+ label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),simplec(0,0));
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8:
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(-k*10,0));
+ label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(k*10,0));
+ endfor;
+ for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18:
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(0,-k*10));
+ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(0,k*10));
+ endfor;
+ fi;
+ if VillesSup:
+ nomfichiermul:=\useKV[Cartographie]{Villes};
+ nblec:=scantokens readfrom nomfichiermul;
+ drawoptions(withcolor (0.15,0.15,0.15));
+ for p=1 upto nblec:
+ pair Coord[],latlon;string p_;
+ latlon=scantokens readfrom nomfichiermul;
+ p_=scantokens readfrom nomfichiermul;
+ if projection="mercator":
+ Coord[p]=mercatorc(ypart(latlon),xpart(latlon));
+ elseif projection="winkel":
+ Coord[p]=winkelc(ypart(latlon),xpart(latlon));
+ elseif projection="cylindrique":
+ Coord[p]=cylindriquec(ypart(latlon),xpart(latlon));
+ elseif projection="simple":
+ Coord[p]=simplec(ypart(latlon),xpart(latlon));
+ fi;
+ marque_p:="croix";
+ pointe(Coord[p]);
+ label.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]);
+ endfor;
+ drawoptions();
+ closefrom nomfichiermul;
+ fi;
+ \end{mplibcode}
+ }{%
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCMonde;
+ string arborescence;
+ arborescence:=\useKV[Cartographie]{Arborescence};
+ LargeurCadre=\useKV[Cartographie]{Largeur};
+ HauteurCadre=\useKV[Cartographie]{Hauteur};
+ distanceecran=100*\useKV[Cartographie]{Echelle};
+ fleuves:=\useKV[Cartographie]{Fleuves};
+ boolean Carte,Impression,VillesSup;
+ Carte=\useKV[Cartographie]{Carte};
+ Impression=\useKV[Cartographie]{Impression};
+ VillesSup=\useKV[Cartographie]{VillesSup};
+ couleurfond:=\useKV[Cartographie]{CouleurFond};
+ if Impression:
+ noncolore:=true;
+ payscolor:=0.85white;
+ couleurfond:=white;
+ couleurfleuve:=couleurfond;
+ fi;
+ capitales:=\useKV[Cartographie]{Capitales};
+ All:=\useKV[Cartographie]{All};
+ Europe:=\useKV[Cartographie]{Europe};
+ Asie:=\useKV[Cartographie]{Asie};
+ Amsud:=\useKV[Cartographie]{Amsud};
+ Amnord:=\useKV[Cartographie]{Amnord};
+ Amcentrale:=\useKV[Cartographie]{Amcentre};
+ Caraibes:=\useKV[Cartographie]{Caraibes};
+ Afrique:=\useKV[Cartographie]{Afrique};
+ if Carte:
+ Echelle:=\useKV[Cartographie]{AfficheEchelle};
+ figure(-0.5u*LargeurCadre,-0.5u*HauteurCadre,0.5u*LargeurCadre,0.5u*HauteurCadre);
+ if \useKV[Cartographie]{PaysSeul}:
+ projection:="bonne";
+ theta:=#2;
+ phi:=#3;
+ zoom(echelle(#2,#3,\useKV[Cartographie]{EchelleCarte}));
fill (bonnec(-90,-180) for k=-85 step 5 until 90:..bonnec(k,-180) endfor)..reverse(bonnec(-90,180) for k=-85 step 5 until 90:..bonnec(k,180) endfor)..cycle withcolor couleurfond;
lecturep(arborescence&\useKV[Cartographie]{Pays}&".dat",couleurfond);%
trace feuillet withpen pencircle scaled 2;
@@ -1090,30 +1419,31 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
draw ((Xa,Ya)+u*(1,1.1))--((Xa,Ya)+u*(1,0.9));
draw (((Xa,Ya)+u*(1,1.1))--((Xa,Ya)+u*(1,0.9))) shifted(u*(1,0));
fi;
- else:
+ else:
projection:="bonne";
Projection(#2,#3,echelle(#2,#3,\useKV[Cartographie]{EchelleCarte}));
trace feuillet withpen pencircle scaled 2;
fi;
if VillesSup:
- nomfichiermul:=\useKV[Cartographie]{Villes};
- nblec:=scantokens readfrom nomfichiermul;
- drawoptions(withcolor (0.15,0.15,0.15));
- projection:="bonne";
- for p=1 upto nblec:
- pair Coord[],latlon;string p_;
- latlon=scantokens readfrom nomfichiermul;
- p_=scantokens readfrom nomfichiermul;
- Coord[p]=bonnec(ypart(latlon),xpart(latlon));
- dotlabel.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]);
- endfor;
- drawoptions();
- closefrom nomfichiermul;
+ nomfichiermul:=\useKV[Cartographie]{Villes};
+ nblec:=scantokens readfrom nomfichiermul;
+ drawoptions(withcolor (0.15,0.15,0.15));
+ projection:="bonne";
+ for p=1 upto nblec:
+ pair Coord[],latlon;string p_;
+ latlon=scantokens readfrom nomfichiermul;
+ p_=scantokens readfrom nomfichiermul;
+ Coord[p]=bonnec(ypart(latlon),xpart(latlon));
+ dotlabel.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]);
+ endfor;
+ drawoptions();
+ closefrom nomfichiermul;
fi;
- else:
- mappemonde(#2,#3);
- fi;
- \end{mplibcode}
+ else:
+ mappemonde(#2,#3);
+ fi;
+ \end{mplibcode}
+ }
\else
\PackageWarning{ProfCollege}{"La commande Cartographie n'est compatible qu'avec LuaLaTeX."}
\fi
@@ -3580,7 +3910,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\node[anchor=west,xshift=2em,text width=0.8*0.25\paperwidth] (Test\i)
at (S\i) {\ListeAutoQ[\i,2]};%
\node[anchor=north,yshift=-1em,text width=0.85*0.25\paperwidth] (TestEn\i)
- at (T\i) {\textbf{\useKV[Autonomie]{TitreAtoi} :} \ListeAutoEn[\i,1]};%
+ at (T\i) {\textbf{\useKV[Autonomie]{TitreAtoi}} \ListeAutoEn[\i,1]};%
\ifboolKV[Autonomie]{Enigme}{%
\node[anchor=south,yshift=1em,text width=0.85*0.25\paperwidth] (TestREn\i)
at (U\i) {%
@@ -6298,14 +6628,14 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\end{tikzpicture}
}
-\newcommand{\DrawArrowSimple}[1]{%
+\newcommand\DrawArrowSimple[1]{%
\begin{tikzpicture}[overlay,remember picture]
\draw[-stealth,out=50,in=140,DCFlechesh,transform canvas={yshift=2pt}] (Distri-#1.north) to (Distri-2.north);
\draw[-stealth,out=50,in=140,DCFlechesh!50,transform canvas={yshift=2pt}] (Distri-#1.north) to (Distri-3.north);
\end{tikzpicture}
}
-\newcommand{\DrawArrowSimpleRenverse}[1]{%
+\newcommand\DrawArrowSimpleRenverse[1]{%
\begin{tikzpicture}[overlay,remember picture]
\draw[-stealth,out=140,in=50,DCFlechesh,transform canvas={yshift=2pt}] (Distri-#1.north) to (Distri-0.north);
\draw[-stealth,out=140,in=50,DCFlechesh!50,transform canvas={yshift=2pt}] (Distri-#1.north) to (Distri-1.north);
@@ -6319,7 +6649,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
% y a dans un "seul calcul".
\setcounter{NbCalculDistri}{0}
-\setKVdefault[ClesDistributivite]{Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0,Tuile=false,Vide=false,Impression=false}%,AideAdd=false:inutile ?
+\setKVdefault[ClesDistributivite]{Cours=false,Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0,Tuile=false,Vide=false,Impression=false}%,AideAdd=false:inutile ?
\newcommand\Tuile[4]{%
\ifluatex
@@ -6696,186 +7026,241 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\colorlet{DCReduction}{\useKV[ClesDistributivite]{CouleurReduction}}%
\colorlet{DCFlechesh}{\useKV[ClesDistributivite]{CouleurFH}}%
\colorlet{DCFlechesb}{\useKV[ClesDistributivite]{CouleurFB}}%
- \ifboolKV[ClesDistributivite]{Tuile}{%
- \Tuile{#2}{#3}{#4}{#5}%
- }{%
+ \ifboolKV[ClesDistributivite]{Cours}{%
\ensuremath{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Echange}>0}{%
- \DistriEchange[#1]{#2}{#3}{#4}{#5}%
- }{%
- \ifboolKV[ClesDistributivite]{Remarquable}{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
- \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi%
- }{}
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\ifx\bla#4\bla\xintifboolexpr{#3>0}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2+2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{#3}+\num{#3}^2}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{\fpeval{0-#3}}+\num{\fpeval{0-#3}}^2}\else\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-\num{#3}^2\fi}{}
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
- \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
- \stepcounter{NbCalculDistri}%
- \ifx\bla#4\bla%
- \xdef\Multi{\fpeval{#2*#2}}%
- \xdef\Multij{\fpeval{#2*#3}}%
- \xdef\Multik{\fpeval{#3*#2}}%
- \xdef\Multil{\fpeval{#3*#3}}%
- %% ils sont red\'efinis pour pouvoir envisager la somme de deux
- %% expressions \`a d\'evelopper
- \xdef\Multim{\fpeval{#2*#3+#3*#2}}%
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
- \Affichage{\Multi}{\Multim}{\Multil}%
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#2}}\xdef\SommeB{\fpeval{\SommeB+#2*#3+#3*#2}}\xdef\SommeC{\fpeval{\SommeC+#3*#3}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#2}}\xdef\SommeB{\fpeval{\SommeB-#2*#3-#3*#2}}\xdef\SommeC{\fpeval{\SommeC-#3*#3}}}{}%
- \else%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
+ \xintifboolexpr{#2==0}{%
+ }{\xintifboolexpr{#3==0}{}{(}}\xintifboolexpr{#2==0}{\Tikzmark{}}{\Tikzmark{a}}
+ \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
+ \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{b}%
+ \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
+ \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}%
+ %
+ \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double
+ \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk
+ %
+ \xintifboolexpr{\Multi==0}{\times%
+ \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}%
+ \Tikzmark{c}%
+ \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}%
+ \xintifboolexpr{#5>0}{\xintifboolexpr{#4==0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4==0}{{-}}{-}}{}}\Tikzmark{d}%
+ \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}%
+ \xintifboolexpr{\Multi==0}{%
+ \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}%
+ %
+ =
+ %
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xintifboolexpr{\Multi==0}{}{%
+ \xintifboolexpr{#2<0}{(-}{}a\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(-}{}c\xintifboolexpr{#4<0}{)}{}%
+ }
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xintifboolexpr{\Multij==0}{}{%
+ \xintifboolexpr{\Multi==0}{}{+}%
+ \xintifboolexpr{#2<0}{(-}{}a\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(-}{}d\xintifboolexpr{#5<0}{)}{}%
+ }%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xintifboolexpr{\Multik==0}{}{%
+ \xintifboolexpr{\Multi==0}{}{+}%
+ \xintifboolexpr{#3<0}{(-}{}b\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(-}{}c\xintifboolexpr{#4<0}{)}{}%
+ }%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ \xintifboolexpr{\Multil==0}{}{+%
+ \xintifboolexpr{#3<0}{(-}{}b\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(-}{}d\xintifboolexpr{#5<0}{)}{}%
+ }%
+ % Fleches
+ \ifboolKV[ClesDistributivite]{Fleches}{%
+ \xdef\Multi{\fpeval{#2*#3*#4*#5}}%
+ \xintifboolexpr{\Multi==0}{%
+ \xdef\Multij{\fpeval{#2*#3}}%\relax
+ \xintifboolexpr{\Multij==0}{\xintifboolexpr{#2==0}{\DrawArrowSimple{1}
+ }{\DrawArrowSimple{0}}}{\xintifboolexpr{#4==0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}%
+ }{%
+ \DrawArrow%
+ }%
+ }{}\setcounter{NbDistri}{0}%
+ }%
+ }{%
+ \ifboolKV[ClesDistributivite]{Tuile}{%
+ \Tuile{#2}{#3}{#4}{#5}%
+ }{%
+ \ensuremath{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Echange}>0}{%
+ \DistriEchange[#1]{#2}{#3}{#4}{#5}%
+ }{%
+ \ifboolKV[ClesDistributivite]{Remarquable}{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
+ \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi%
+ }{}
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\ifx\bla#4\bla\xintifboolexpr{#3>0}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2+2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{#3}+\num{#3}^2}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{\fpeval{0-#3}}+\num{\fpeval{0-#3}}^2}\else\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-\num{#3}^2\fi}{}
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
+ \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
+ \stepcounter{NbCalculDistri}%
+ \ifx\bla#4\bla%
+ \xdef\Multi{\fpeval{#2*#2}}%
+ \xdef\Multij{\fpeval{#2*#3}}%
+ \xdef\Multik{\fpeval{#3*#2}}%
+ \xdef\Multil{\fpeval{#3*#3}}%
+ %% ils sont red\'efinis pour pouvoir envisager la somme de deux
+ %% expressions \`a d\'evelopper
+ \xdef\Multim{\fpeval{#2*#3+#3*#2}}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
+ }{%
+ \Affichage{\Multi}{\Multim}{\Multil}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#2}}\xdef\SommeB{\fpeval{\SommeB+#2*#3+#3*#2}}\xdef\SommeC{\fpeval{\SommeC+#3*#3}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#2}}\xdef\SommeB{\fpeval{\SommeB-#2*#3-#3*#2}}\xdef\SommeC{\fpeval{\SommeC-#3*#3}}}{}%
+ \else%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
%% ils sont red\'efinis pour pouvoir envisager la somme de deux
%% expressions \`a d\'evelopper
- \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
- \Affichage{\Multi}{\Multim}{\Multil}%
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
- \fi%
- }{}%
- }{%
- \ifboolKV[ClesDistributivite]{Numerique}{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{%
- \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}%
- }{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==-1}{%
- \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}%
+ \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
}{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{\num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\num{\fpeval{#2+#3}}\times(\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#5)}})}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{\num{#3}\times\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{#3}\times\num{\fpeval{abs(#5)}}}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{\num{\fpeval{#3*#4}}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#3*#5)}}}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==5}{\num{\fpeval{#3*#4+#3*#5}}}{}%
- }%
- }%
+ \Affichage{\Multi}{\Multim}{\Multil}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
+ \fi%
+ }{}%
}{%
- \ifboolKV[ClesDistributivite]{All}{%
- \xdef\NomLettre{\useKV[ClesDistributivite]{NomExpression}}%
- \xdef\NomFin{\useKV[ClesDistributivite]{Fin}}%
- \xdef\NomVariable{\useKV[ClesDistributivite]{Lettre}}%
- \xintFor* ##1 in {\xintSeq {1}{\useKV[ClesDistributivite]{Fin}-1}}\do
- {\NomLettre&=\Distri[Etape=##1,Lettre=\NomVariable]{#2}{#3}{#4}{#5}\\}%
- \NomLettre&=\Distri[Etape=\NomFin,Lettre=\NomVariable]{#2}{#3}{#4}{#5}%
+ \ifboolKV[ClesDistributivite]{Numerique}{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{%
+ \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}%
+ }{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==-1}{%
+ \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}%
+ }{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{\num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\num{\fpeval{#2+#3}}\times(\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#5)}})}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{\num{#3}\times\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{#3}\times\num{\fpeval{abs(#5)}}}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{\num{\fpeval{#3*#4}}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#3*#5)}}}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==5}{\num{\fpeval{#3*#4+#3*#5}}}{}%
+ }%
+ }%
}{%
- % Etape 1
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
- \xintifboolexpr{#2==0}{%
- }{\xintifboolexpr{#3==0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}%
- \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
- \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#3)}}}%
- \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
- \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}%
- %
- \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double
- \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk
- %
- \xintifboolexpr{\Multi==0}{\times%
- \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}%
- \Tikzmark{\Affichage[#1]{0}{#4}{0}}%
- \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}%
- \xintifboolexpr{#5>0}{\xintifboolexpr{#4==0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4==0}{{-}}{-}}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#5)}}}%
- \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}%
- \xintifboolexpr{\Multi==0}{%
- \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}%
- \ifboolKV[ClesDistributivite]{Fleches}{%
- \xdef\Multi{\fpeval{#2*#3*#4*#5}}%
+ \ifboolKV[ClesDistributivite]{All}{%
+ \xdef\NomLettre{\useKV[ClesDistributivite]{NomExpression}}%
+ \xdef\NomFin{\useKV[ClesDistributivite]{Fin}}%
+ \xdef\NomVariable{\useKV[ClesDistributivite]{Lettre}}%
+ \xintFor* ##1 in {\xintSeq {1}{\useKV[ClesDistributivite]{Fin}-1}}\do
+ {\NomLettre&=\Distri[Etape=##1,Lettre=\NomVariable]{#2}{#3}{#4}{#5}\\}%
+ \NomLettre&=\Distri[Etape=\NomFin,Lettre=\NomVariable]{#2}{#3}{#4}{#5}%
+ }{%
+ % Etape 1
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
+ \xintifboolexpr{#2==0}{%
+ }{\xintifboolexpr{#3==0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}%
+ \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
+ \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#3)}}}%
+ \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
+ \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}%
+ %
+ \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double
+ \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk
+ %
+ \xintifboolexpr{\Multi==0}{\times%
+ \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}%
+ \Tikzmark{\Affichage[#1]{0}{#4}{0}}%
+ \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}%
+ \xintifboolexpr{#5>0}{\xintifboolexpr{#4==0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4==0}{{-}}{-}}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#5)}}}%
+ \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}%
\xintifboolexpr{\Multi==0}{%
- \xdef\Multij{\fpeval{#2*#3}}%\relax
- \xintifboolexpr{\Multij==0}{\xintifboolexpr{#2==0}{\DrawArrowSimple{1}}{\DrawArrowSimple{0}}}{\xintifboolexpr{#4==0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}%
- }{%
- \DrawArrow%
+ \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}%
+ \ifboolKV[ClesDistributivite]{Fleches}{%
+ \xdef\Multi{\fpeval{#2*#3*#4*#5}}%
+ \xintifboolexpr{\Multi==0}{%
+ \xdef\Multij{\fpeval{#2*#3}}%\relax
+ \xintifboolexpr{\Multij==0}{\xintifboolexpr{#2==0}{\DrawArrowSimple{1}}{\DrawArrowSimple{0}}}{\xintifboolexpr{#4==0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}%
+ }{%
+ \DrawArrow%
+ }%
+ }{}\setcounter{NbDistri}{0}%
+ }{}
+ % Etape 2
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xintifboolexpr{\Multi==0}{}{%
+ \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
+ }
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xintifboolexpr{\Multij==0}{}{%
+ \xintifboolexpr{\Multi==0}{}{+}%
+ \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
}%
- }{}\setcounter{NbDistri}{0}%
- }{}
- % Etape 2
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xintifboolexpr{\Multi==0}{}{%
- \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
- }
- \xdef\Multij{\fpeval{#2*#5}}%
- \xintifboolexpr{\Multij==0}{}{%
- \xintifboolexpr{\Multi==0}{}{+}%
- \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
- }%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xintifboolexpr{\Multik==0}{}{%
- \xintifboolexpr{\Multi==0}{}{+}%
- \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
- }%
- \xdef\Multil{\fpeval{#3*#5}}%
- \xintifboolexpr{\Multil==0}{}{+%
- \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
- }%
- }{}%
- % Etape 3
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
- \stepcounter{NbCalculDistri}%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
- %% ils sont red\'efinis pour pouvoir envisager la somme de deux
- %% expressions \`a d\'evelopper
- \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
- \ifboolKV[ClesDistributivite]{Reduction}{\mathunderline{DCReduction}{%
- \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{{}+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
- \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xintifboolexpr{\Multik==0}{}{%
+ \xintifboolexpr{\Multi==0}{}{+}%
+ \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
}%
- }{%
- \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
- \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#2==0}{}{+}}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
- }%
- \xintifboolexpr{\Multil==0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}%
- }{}%
- % Etape 4
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
- %% ils sont red\'efinis pour pouvoir envisager la somme de deux
- %% expressions \`a d\'evelopper
- \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
- \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
- \stepcounter{NbCalculDistri}%
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ \xintifboolexpr{\Multil==0}{}{+%
+ \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
+ }%
+ }{}%
+ % Etape 3
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
+ \stepcounter{NbCalculDistri}%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ %% ils sont red\'efinis pour pouvoir envisager la somme de deux
+ %% expressions \`a d\'evelopper
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
- \xintifboolexpr{\Multim==0}{}{%
- \xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
+ \ifboolKV[ClesDistributivite]{Reduction}{\mathunderline{DCReduction}{%
+ \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{{}+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
+ \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
+ }%
+ }{%
+ \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
+ \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#2==0}{}{+}}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
}%
- \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}%
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
- }{}%
+ \xintifboolexpr{\Multil==0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}%
+ }{}%
+ % Etape 4
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ %% ils sont red\'efinis pour pouvoir envisager la somme de deux
+ %% expressions \`a d\'evelopper
+ \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
+ \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
+ \stepcounter{NbCalculDistri}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
+ }{%
+ \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
+ \xintifboolexpr{\Multim==0}{}{%
+ \xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
+ }%
+ \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
+ }{}%
+ }%
}%
}%
}%
@@ -7223,7 +7608,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
%%%
% Nombre Premier
%%%
-\setKVdefault[ClesNombrePremier]{Tableau=false,TableauVertical=false,TableauVerticalVide=false,Exposant=false,Longue=false,All=false,Arbre=false,ArbreVide=false,ArbreComplet=false,ArbreDessine=false,ArbreDessineVide=false,Entoure=false,Entourefin=false,Diviseurs=false,DiviseursT=false,Dot=\dotfill,Impose=false,ImposeAll=false,Potence=false,Decalage=10,Vide=false,CouleurFeuillage=ForestGreen,CouleurTronc=BurlyWood,CouleurFruits=Red,CouleurTexte=white}%
+\setKVdefault[ClesNombrePremier]{Tableau=false,TableauVide=false,TableauVertical=false,TableauVerticalVide=false,Exposant=false,Longue=false,All=false,Arbre=false,ArbreVide=false,ArbreComplet=false,ArbreDessine=false,ArbreDessineVide=false,Entoure=false,Entourefin=false,Diviseurs=false,DiviseursT=false,Dot=\dotfill,Impose=false,ImposeAll=false,Potence=false,Decalage=10,Vide=false,CouleurFeuillage=ForestGreen,CouleurTronc=BurlyWood,CouleurFruits=Red,CouleurTexte=white}%
\defKV[ClesNombrePremier]{Nombre=\ifboolKV[ClesNombrePremier]{ArbreDessine}{}{\ifboolKV[ClesNombrePremier]{ArbreDessineVide}{}{\setKV[ClesNombrePremier]{Impose}}}}%
\defKV[ClesNombrePremier]{AllNombre=\setKV[ClesNombrePremier]{ImposeAll}}%
\defKV[ClesNombrePremier]{Impression=\setKV[ClesNombrePremier]{CouleurFeuillage=white,CouleurTronc=white,CouleurFruits=gris,CouleurTexte=black}}
@@ -7234,6 +7619,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\ifboolKV[ClesNombrePremier]{Impose}{\NombrePremierImpose{#2}{\useKV[ClesNombrePremier]{Nombre}}{\fpeval{#2/\useKV[ClesNombrePremier]{Nombre}}}}{}%
\ifboolKV[ClesNombrePremier]{ImposeAll}{\NombrePremierImposeAll{#2}{\useKV[ClesNombrePremier]{AllNombre}}{\fpeval{#2/\useKV[ClesNombrePremier]{AllNombre}}}}{}%
\ifboolKV[ClesNombrePremier]{Tableau}{\NombrePremier{#2}}{}%
+ \ifboolKV[ClesNombrePremier]{TableauVide}{\NombrePremierVide{#2}}{}%
\ifboolKV[ClesNombrePremier]{Potence}{\NombrePremierPotence{#2}}{}%
\ifboolKV[ClesNombrePremier]{TableauVertical}{\NombrePremierVertical{#2}}{}%
\ifboolKV[ClesNombrePremier]{TableauVerticalVide}{\NombrePremierVerticalVide{#2}}{}%
@@ -7594,6 +7980,32 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\fi
}
+\newcommand\NombrePremierVide[1]{%\'ecrire la d\'ecomposition compl\`ete
+ % #1 le nombre premier \`a tester
+ \newcount\anp\newcount\bnp\newcount\cnp%\newcount\e\newcount\f%
+ \anp=#1\relax
+ \bnp=2\relax
+ \premier=-1\relax
+ % Pour d\'eterminer le nombre d'\'etapes
+ \whiledo{\anp > 1}{%
+ \modulo{\the\anp}{\the\bnp}
+ \ifnum\remainder=0\relax
+ \global\premier=\numexpr\premier+1\relax
+ \cnp=\numexpr\anp/\bnp\relax
+ \anp=\cnp\relax
+ \else%
+ \bnp=\numexpr\bnp+1\relax%
+ \fi%
+ }
+ \ifnum\premier=0
+ Le nombre \num{#1} est un nombre premier.
+ \else
+ \begin{align*}
+ \xintFor* ##1 in {\xintSeq {1}{\premier}}\do {\num{#1}&=\phantom{\PremierEtape{#1}{##1}}\xintifboolexpr{##1<\premier}{\\}{}}%
+ \end{align*}
+ \fi
+}
+
\newcount\premierun
\newcount\premierdeux
@@ -8275,7 +8687,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
% #5 point sur le segment #1#3
% #6 angle de rotation
\ifluatex
- \mplibcodeinherit{enable}
+% \mplibcodeinherit{enable}
\mplibforcehmode
\begin{mplibcode}
u:=\useKV[ClesThales]{Echelle};
@@ -8324,7 +8736,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
label(btex $//$ etex ,K);
drawoptions();
\end{mplibcode}
- \mplibcodeinherit{disable}
+% \mplibcodeinherit{disable}
\else
\begin{mpost}[mpsettings={u:=\useKV[ClesThales]{Echelle};}]
pair A,B,C,M,N,O;%
@@ -9832,7 +10244,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\fi
}
-\setKVdefault[ClesTrigo]{Angle=0,Propor=false,Figure=false,FigureSeule=false,Precision=2,Unite=cm,Sinus=false,Cosinus=false,Tangente=false,Perso=false,Echelle=1cm}%
+\setKVdefault[ClesTrigo]{Angle=0,Propor=false,Figure=false,FigureSeule=false,ValeurExacte=false,Precision=2,Unite=cm,Sinus=false,Cosinus=false,Tangente=false,Perso=false,Echelle=1cm}%
\newcommand\RedactionTrigo{}%
@@ -9863,15 +10275,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\
- \num{#4}\times\cos(\ang{#5})&=\NomA\NomB\\
- \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB%
+ \num{#4}\times\cos(\ang{#5})&=\NomA\NomB%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\
+ \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB}
\end{align*}%
}{%
\begin{align*}
\cos(\widehat{\NomB\NomA\NomC})&=\frac{\NomA\NomB}{\NomA\NomC}\\
\cos(\ang{#5})&=\frac{\NomA\NomB}{\num{#4}}\\
- \num{#4}\times\cos(\ang{#5})&=\NomA\NomB\\
- \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB
+ \num{#4}\times\cos(\ang{#5})&=\NomA\NomB%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB}%
\end{align*}
}%
\else%
@@ -9881,15 +10295,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\begin{align*}
\NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\
\NomA\NomC\times\cos(\ang{#5})&=\num{#3}\\
- \NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}\\
- \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
\end{align*}
}{%
\begin{align*}
\cos(\widehat{\NomB\NomA\NomC})&=\frac{\NomA\NomB}{\NomA\NomC}\\
\cos(\ang{#5})&=\frac{\num{#3}}{\NomA\NomC}\\
- \NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}\\
- \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
\end{align*}%
}%
\else%on calcule l'angle
@@ -9919,15 +10335,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
- \num{#4}\times\sin(\ang{#5})&=\NomB\NomC\\
- \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC%
+ \num{#4}\times\sin(\ang{#5})&=\NomB\NomC%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC}%
\end{align*}%
}{%
\begin{align*}
\sin(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomC}\\
\sin(\ang{#5})&=\frac{\NomB\NomC}{\num{#4}}\\
- \num{#4}\times\sin(\ang{#5})&=\NomB\NomC\\
- \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC%
+ \num{#4}\times\sin(\ang{#5})&=\NomB\NomC%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC}%
\end{align*}%
}%
\else
@@ -9937,15 +10355,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\begin{align*}
\NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
\NomA\NomC\times\sin(\ang{#5})&=\num{#3}\\
- \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}\\
- \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
\end{align*}%
}{%
\begin{align*}
\sin(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomC}\\
\sin(\ang{#5})&=\frac{\num{#3}}{\NomA\NomC}\\
- \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}\\
- \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
\end{align*}%
}%
\else%on calcule l'angle
@@ -9975,15 +10395,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\%
- \num{#4}\times\tan(\ang{#5})&=\NomB\NomC\\%
- \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC%
+ \num{#4}\times\tan(\ang{#5})&=\NomB\NomC%\\%
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC}%
\end{align*}%
}{%
\begin{align*}
\tan(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomB}\\
\tan(\ang{#5})&=\frac{\NomB\NomC}{\num{#4}}\\
- \num{#4}\times\tan(\ang{#5})&=\NomB\NomC\\
- \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC%
+ \num{#4}\times\tan(\ang{#5})&=\NomB\NomC%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC}%
\end{align*}%
}%
\else
@@ -9993,15 +10415,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\begin{align*}
\NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
\NomA\NomB\times\tan(\ang{#5})&=\num{#3}\\
- \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}\\
- \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
\end{align*}%
}{%
\begin{align*}
\tan(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomB}\\
\tan(\ang{#5})&=\frac{\num{#3}}{\NomA\NomB}\\
- \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}\\
- \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}%\\
+ \ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
+ \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
\end{align*}%
}%
\else%on calcule l'angle
@@ -10151,98 +10575,121 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\newcommand\DonneeMin{}%
\newcommand\EffectifMax{}%
-\setKVdefault[ClesStat]{ColVide=0,EffVide=false,%
-FreqVide=false,AngVide=false,ECCVide=false,TotalVide=false,Sondage=false,%
+\setKVdefault[ClesStat]{ColVide=0,CaseVide=false,EffVide=false,%
+FreqVide=false,AngVide=false,ECCVide=false,TotalVide=false,Sondage=false,Liste=false,%
Tableau=false,Stretch=1,Frequence=false,EffectifTotal=false,%
-Etendue=false,Moyenne=false,SET=false,Mediane=false,QuartileUn=false,QuartileTrois=false,Total=false,Concret=false,%
-Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,Origine=0,Angle=false,SemiAngle=false,Qualitatif=false,TableauVide=false,Graphique=false,Batons=true,Pasx=1,Pasy=1,Unitex=0.5,Unitey=0.5,Rayon=3cm,AffichageAngle=false,Liste=false,ECC=false,Coupure=10,CouleurTab=gray!15,ListeCouleurs={white},Hachures=false,Inverse=false,AbscisseRotation=false,Representation=false,EcartHachures=0.25,EpaisseurHachures=1,Longueur=10cm,Hauteur=5mm,Barre=false}
-
+Etendue=false,Moyenne=false,SET=false,ValeurExacte=false,Mediane=false,QuartileUn=false,QuartileTrois=false,Total=false,Concret=false,%
+Unite={},Largeur=1cm,Precision=2,PrecisionF=0,Donnee=Valeurs,Effectif=Effectif,Grille=false,Origine=0,Angle=false,SemiAngle=false,Qualitatif=false,TableauVide=false,ECC=false,Coupure=10,CouleurTab=gray!15,Graphique=false,Batons=true,%
+% Pour les diags batons
+EpaisseurBatons=1,ListeCouleursB={black},Lecture=false,LectureFine=false,AideLecture=false,Reponses=false,DonneesSup=false,AbscisseRotation=false,Tiret=false,AngleRotationAbscisse=0,Pasx=1,Pasy=1,Unitex=0.5,Unitey=0.5,%
+% Pour les diags circulaires
+Rayon=3cm,AffichageAngle=false,AffichageDonnee=false,ListeCouleurs={white},Hachures=false,LectureInverse=false,EcartHachures=0.25,EpaisseurHachures=1,Legende,LegendeVide=false,%
+%Pour les représentations
+Representation=false,%
+%Pour les barres horizontales
+Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false%
+}
+%compl\'ements
+\defKV[ClesStat]{AngleRotationAbscisse=\setKV[ClesStat]{AbscisseRotation}}%
+\defKV[ClesStat]{AffichageDonnees=\setKV[ClesStat]{AffichageAngle=false}\setKV[ClesStat]{AffichageDonnee}}%
+\defKV[ClesStat]{CasesVides=\setKV[ClesStat]{CaseVide}}%
+\defKV[ClesStat]{LegendesVides=\setKV[ClesStat]{LegendeVide}}%
% La construction du tableau
\def\addtotok#1#2{#1\expandafter{\the#1#2}}
\newtoks\tabtoksa\newtoks\tabtoksb\newtoks\tabtoksc
-\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{\ifboolKV[ClesStat]{Qualitatif}{&\cellcolor{\useKV[ClesStat]{CouleurTab}}#1}{&\cellcolor{\useKV[ClesStat]{CouleurTab}}\num{#1}}}\addtotok\tabtoksb{&\num{#2}}}
-\def\buildtab{% %%Tableau sans total
+\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{\ifboolKV[ClesStat]{Qualitatif}{&#1}{&\num{#1}}}\addtotok\tabtoksb{&\num{#2}}}
+%
+\newcounter{PfCCompteLignes}%
+%
+\def\BuildtabStat{% %%Tableau sans total
+ \setcounter{PfCCompteLignes}{0}%
\tabtoksa{\useKV[ClesStat]{Donnee}}\tabtoksb{\useKV[ClesStat]{Effectif}}%
\foreachitem\compteur\in\ListeComplete{\expandafter\updatetoks\compteur\nil}%
- \[%
+ \ifboolKV[ClesStat]{Total}{%
\renewcommand{\arraystretch}{\useKV[ClesStat]{Stretch}}%
- \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{CouleurTab}}}c|*{\fpeval{\ListeCompletelen}}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}%
- \hline%
- \the\tabtoksa\\\hline%
- \xintifboolexpr{\useKV[ClesStat]{ColVide}<1 || \useKV[ClesStat]{ColVide}>\ListeCompletelen}{%
- \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\the\tabtoksb}\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}%
- }{%
- \xintifboolexpr{\useKV[ClesStat]{ColVide}==1}{%
- \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}}\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}%
- }{%
- \xintifboolexpr{\useKV[ClesStat]{ColVide}==\ListeCompletelen}{%
- \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ListeComplete[##1,2]}}&\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\\\hline}{}%
- }{%
- \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ListeComplete[##1,2]}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}}\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculAngle{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}%
- }%
+ \begin{NiceTabular}{c*{\fpeval{\ListeCompletelen+1}}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}}}%
+ \CodeBefore%
+ \rowcolor{\useKV[ClesStat]{CouleurTab}}{1}%
+ \columncolor{\useKV[ClesStat]{CouleurTab}}{1}%
+ \Body%
+ \the\tabtoksa&Total\\%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\the\tabtoksb&\num{\EffectifTotal}}\\%
+ \ifboolKV[ClesStat]{Frequence}{\stepcounter{PfCCompteLignes}Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\num{\CalculFrequence{##1}}}}}&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}\\}{}%
+ \ifboolKV[ClesStat]{Angle}{\stepcounter{PfCCompteLignes}Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}\\}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{\stepcounter{PfCCompteLignes}Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}\\}{}%
+ \ifboolKV[ClesStat]{ECC}{\stepcounter{PfCCompteLignes}E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}\\}{}%
+ \CodeAfter%
+ % On crée la liste des colonnes à vider
+ \xintifboolexpr{\useKV[ClesStat]{ColVide}>0}{%
+ \xdef\FooStat{\useKV[ClesStat]{ColVide}}%
+ \setsepchar{,}%
+ \readlist*\ListeColonnesAVider{\FooStat}%
+ \foreachitem\compteur\in\ListeColonnesAVider{%
+ \tikz\fill[white] (row-2-|col-\fpeval{\compteur+1}) rectangle (last-|col-\fpeval{\compteur+2});%
+ }%
+ }{}%
+ % On crée la liste des cases à vider
+ \ifboolKV[ClesStat]{CaseVide}{%
+ \xdef\FooStatCases{\useKV[ClesStat]{CasesVides}}%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeCasesAVider{\FooStatCases}%
+ \foreachitem\compteur\in\ListeCasesAVider{%
+ \tikz\fill[white] (row-\fpeval{\ListeCasesAVider[\compteurcnt,1]+1}-|col-\fpeval{\ListeCasesAVider[\compteurcnt,2]+1}) rectangle (row-\fpeval{\ListeCasesAVider[\compteurcnt,1]+2}-|col-\fpeval{\ListeCasesAVider[\compteurcnt,2]+2});%
+ }%
+ }{}%
+ % On retrace le tableau
+ %Les colonnes
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\ListeCompletelen+3}}}\do{%
+ \tikz\draw (row-1-|col-##1) -- (last-|col-##1);%
}%
+ % Les lignes
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\thePfCCompteLignes+3}}}\do{%
+ \tikz\draw (row-##1-|col-1) -- (row-##1-|last);%
}%
- \end{tabular}
- \renewcommand{\arraystretch}{1}%
- \]%
-}%
-
-\def\buildtabt{% %%Tableau avec total
- \tabtoksa{\useKV[ClesStat]{Donnee}}\tabtoksb{\useKV[ClesStat]{Effectif}}%
- \foreachitem\compteur\in\ListeComplete{\expandafter\updatetoks\compteur\nil}%
- \[%
+ \end{NiceTabular}%
+ }{%
\renewcommand{\arraystretch}{\useKV[ClesStat]{Stretch}}%
- \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{CouleurTab}}}c|*{\fpeval{\ListeCompletelen+1}}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}%
- \hline%
- \the\tabtoksa&\cellcolor{\useKV[ClesStat]{CouleurTab}}Total\\\hline%
- \xintifboolexpr{\useKV[ClesStat]{ColVide}<1 || \useKV[ClesStat]{ColVide}>\ListeCompletelen}{%
- \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}&}{\the\tabtoksb&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
- }{%
- \xintifboolexpr{\useKV[ClesStat]{ColVide}==1}{%
- \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
- }{%
- \xintifboolexpr{\useKV[ClesStat]{ColVide}==\ListeCompletelen}{%
- \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ListeComplete[##1,2]}&&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
- }{%
- \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ListeComplete[##1,2]}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\fpeval{\useKV[ClesStat]{ColVide}-1}}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\xintFor* ##1 in {\xintSeq {\fpeval{\useKV[ClesStat]{ColVide}+1}}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
- }%
+ \begin{NiceTabular}{c*{\fpeval{\ListeCompletelen}}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}}}%
+ \CodeBefore%
+ \rowcolor{\useKV[ClesStat]{CouleurTab}}{1}%
+ \columncolor{\useKV[ClesStat]{CouleurTab}}{1}%
+ \Body%
+ \the\tabtoksa\\%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\the\tabtoksb}\\%
+ \ifboolKV[ClesStat]{Frequence}{\stepcounter{PfCCompteLignes}Fr\'equence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\num{\CalculFrequence{##1}}}}}\\}{}%
+ \ifboolKV[ClesStat]{Angle}{\stepcounter{PfCCompteLignes}Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{\stepcounter{PfCCompteLignes}Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\}{}%
+ \ifboolKV[ClesStat]{ECC}{\stepcounter{PfCCompteLignes}E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\}{}%
+ \CodeAfter%
+ % On crée la liste des colonnes à vider
+ \xintifboolexpr{\useKV[ClesStat]{ColVide}>0}{%
+ \xdef\FooStat{\useKV[ClesStat]{ColVide}}%
+ \setsepchar{,}%
+ \readlist*\ListeColonnesAVider{\FooStat}%
+ \foreachitem\compteur\in\ListeColonnesAVider{%
+ \tikz\fill[white] (row-2-|col-\fpeval{\compteur+1}) rectangle (last-|col-\fpeval{\compteur+2});%
+ }%
+ }{}%
+ % On crée la liste des cases à vider
+ \ifboolKV[ClesStat]{CaseVide}{%
+ \xdef\FooStatCases{\useKV[ClesStat]{CasesVides}}%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeCasesAVider{\FooStatCases}%
+ \foreachitem\compteur\in\ListeCasesAVider{%
+ \tikz\fill[white] (row-\fpeval{\ListeCasesAVider[\compteurcnt,1]+1}-|col-\fpeval{\ListeCasesAVider[\compteurcnt,2]+1}) rectangle (row-\fpeval{\ListeCasesAVider[\compteurcnt,1]+2}-|col-\fpeval{\ListeCasesAVider[\compteurcnt,2]+2});%
+ }%
+ }{}%
+ % On retrace le tableau
+ %Les colonnes
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\ListeCompletelen+2}}}\do{%
+ \tikz\draw (row-1-|col-##1) -- (last-|col-##1);%
}%
+ % Les lignes
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\thePfCCompteLignes+3}}}\do{%
+ \tikz\draw (row-##1-|col-1) -- (row-##1-|last);%
}%
- \end{tabular}
- \renewcommand{\arraystretch}{1}%
- \]%
+ \end{NiceTabular}%
+ }%
}%
% Pour construire le diagramme en barres horizontales
@@ -10269,7 +10716,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleurs}}%
\readlist*\ListeCouleur{\ListeAvantCouleurs}%
\foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}%
- \[\MPDiagBarreHor{\the\toklistenomhor}{\the\toklistedonhor}{\the\toklisteaffhor}{\the\toklistecouleur}\]%
+ \[\NewMPDiagBarreHor{\the\toklistenomhor}{\the\toklistedonhor}{\the\toklisteaffhor}{\the\toklistecouleur}\]%
}%
% Pour construire le diagramme en bâtons
@@ -10277,7 +10724,11 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\newcommand\buildgraph[1][]{%
\newtoks\toklistepoint%
\foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoks\compteur\nil}%
- \[\MPStat[#1]{\useKV[ClesStat]{Unitex}}{\useKV[ClesStat]{Unitey}}{\the\toklistepoint}{\useKV[ClesStat]{Donnee}}{\useKV[ClesStat]{Effectif}}{\useKV[ClesStat]{Origine}}{\useKV[ClesStat]{AbscisseRotation}}\]%
+ \newtoks\toklistecouleur%
+ \xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleursB}}%
+ \readlist*\ListeCouleur{\ListeAvantCouleurs}%
+ \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}%
+ \[\MPStatNew{\the\toklistepoint}{\the\toklistecouleur}\]%
}%
% Pour construire le diagramme en bâtons qualitatif
@@ -10285,56 +10736,38 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\newcommand\buildgraphq[1][]{%
\newtoks\toklistepointq%
\foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoksq\compteur\nil}%
- \[\MPStatQ[#1]{2*\useKV[ClesStat]{Unitex}}{0.5*\useKV[ClesStat]{Unitey}}{\the\toklistepointq}{\useKV[ClesStat]{Donnee}}{\useKV[ClesStat]{Effectif}}{\useKV[ClesStat]{Origine}}{\useKV[ClesStat]{AbscisseRotation}}\]%
+ \newtoks\toklistecouleur%
+ \xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleursB}}%
+ \readlist*\ListeCouleur{\ListeAvantCouleurs}%
+ \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}%
+ \[\MPStatNew{\the\toklistepointq}{\the\toklistecouleur}\]%
}%
\def\UpdateCoul#1\nil{\addtotok\toklistecouleur{#1,}}%
+\def\UpdateLegende#1\nil{\addtotok\toklistelegende{#1,}}%
% Pour construire le diagramme circulaire qualitatif
\def\buildgraphcq#1{%
- \newtoks\toklistepointq%
- \toklistepointq{}%
- \newtoks\toklistecouleur%
- \toklistecouleur{}%
+ \newtoks\toklistepointq\toklistepointq{}%
+ \newtoks\toklistecouleur\toklistecouleur{}%
+ \newtoks\toklistelegende\toklistelegende{}%
+ \ifboolKV[ClesStat]{LegendeVide}{%
+ \xdef\foo{\useKV[ClesStat]{LegendesVides}}%
+ \readlist*\ListeLegendesAEffacer{\foo}%
+ }{\xdef\foo{0}\readlist*\ListeLegendesAEffacer{\foo}%
+ }%
+ \foreachitem\compteur\in\ListeLegendesAEffacer{\expandafter\UpdateLegende\compteur\nil}%
%
\foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoksq\compteur\nil}%
\xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleurs}}%
\readlist*\ListeCouleur{\ListeAvantCouleurs}%
\foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}%
- \ifboolKV[ClesStat]{AffichageAngle}{%
- \ifboolKV[ClesStat]{Hachures}{%
- \ifboolKV[ClesStat]{Inverse}{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{1}{1}\]%
- }{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{1}{0}\]%
- }%
- }{%
- \ifboolKV[ClesStat]{Inverse}{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{0}{1}\]%
- }{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{0}{0}\]%
- }%
- }%
- }{%
- \ifboolKV[ClesStat]{Hachures}{%
- \ifboolKV[ClesStat]{Inverse}{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{1}{1}\]%
- }{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{1}{0}\]%
- }%
- }{%
- \ifboolKV[ClesStat]{Inverse}{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{0}{1}\]%
- }{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{0}{0}\]%
- }%
- }%
- }%
+ \NewMPStatCirculaireQ{\the\toklistepointq}{#1}{\the\toklistecouleur}{\the\toklistelegende}%
}%
%% calcul des fr\'equences
\newcommand\CalculFrequence[1]{%
- \fpeval{round(\ListeComplete[#1,2]*100/\EffectifTotal,0)}
+ \fpeval{round(\ListeComplete[#1,2]*100/\EffectifTotal,\useKV[ClesStat]{PrecisionF})}
}
%% calcul des angles
@@ -10361,10 +10794,11 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
}
% Construction d'un diagramme en barres horizontal
-\newcommand\MPDiagBarreHor[4]{%
+\newcommand\NewMPDiagBarreHor[4]{%
% #1 Liste des noms
% #2 Liste des valeurs associées
% #3 Liste des valeurs à afficher (si pb calcul MP)
+ % #4 Liste des couleurs
\ifluatex
\mplibforcehmode%
\begin{mplibcode}%
@@ -10374,6 +10808,8 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures};
boolean Hachures;
Hachures=\useKV[ClesStat]{Hachures};
+ boolean Bicolore;
+ Bicolore=\useKV[ClesStat]{Bicolore};
vardef CalculNombreDonneesEtDonneeMax(text t)=
nbdon:=0;%nombre de données
DonneeMax:=0;%donnée DonneeMaximale
@@ -10408,7 +10844,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
(k mod 2)=0: +90 fi,ecarthachures,if (k mod 2)=0 : 0 else: 1 fi)
withpen pencircle scaled epaisseurhachures;
else:
- remplis RectangleDonnee withcolor if unknown Col[k+1]: white else:Col[k+1] fi;
+ remplis RectangleDonnee withcolor if unknown Col[k+1]: if Bicolore:Col[(k mod 2)+1] else: white fi; else:if Bicolore:Col[(k mod 2)+1] else: Col[k+1] fi; fi;
fi;
trace RectangleDonnee;
endfor;
@@ -10435,11 +10871,16 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
AffichageDonnees(#3);
\end{mplibcode}
\else
- \mpxcommands{%
- \xdef\Nom{\expand#1}
- }
- \begin{mpost}[mpsettings={Longueur:=\useKV[ClesStat]{Longueur};Hauteur:=\useKV[ClesStat]{Hauteur};ecarthachures=\useKV[ClesStat]{EcartHachures};epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures};boolean Hachures;Hachures=\useKV[ClesStat]{Hachures};}]
- % Pb avec les noms accentués : pas de solution (27/02/2022)
+ \begin{mpost}[mpsettings={%
+ Longueur:=\useKV[ClesStat]{Longueur};
+ Hauteur:=\useKV[ClesStat]{Hauteur};
+ ecarthachures=\useKV[ClesStat]{EcartHachures};
+ epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures};
+ boolean Hachures;
+ Hachures=\useKV[ClesStat]{Hachures};
+ boolean Bicolore;
+ Bicolore=\useKV[ClesStat]{Bicolore};
+ }]
vardef CalculNombreDonneesEtDonneeMax(text t)=
nbdon:=0;%nombre de données
DonneeMax:=0;%donnée DonneeMaximale
@@ -10474,7 +10915,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
(k mod 2)=0: +90 fi,ecarthachures,if (k mod 2)=0 : 0 else: 1 fi)
withpen pencircle scaled epaisseurhachures;
else:
- remplis RectangleDonnee withcolor if unknown Col[k+1]: white else:Col[k+1] fi;
+ remplis RectangleDonnee withcolor if unknown Col[k+1]: if Bicolore:Col[(k mod 2)+1] else: white fi; else:if Bicolore:Col[(k mod 2)+1] else: Col[k+1] fi; fi;
fi;
trace RectangleDonnee;
endfor;
@@ -10500,43 +10941,142 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
AffichageNom(#1);
AffichageDonnees(#3);
\end{mpost}
- \fi
+ \fi
}%
% la construction du graphique en bâtons pour quantitatif
-\newcommand\MPStat[8][]{%
+\newcommand\MPStatNew[2]{%
\ifluatex
- \mplibforcehmode
+ \mplibforcehmode
\begin{mplibcode}
maxx:=0;
maxy:=0;
- unitex:=#2*cm;
- unitey:=#3*cm;
+ unitex:=\useKV[ClesStat]{Unitex}*cm;
+ unitey:=\useKV[ClesStat]{Unitey}*cm;
+ xpartorigine:=\useKV[ClesStat]{Origine};
+ AngleRotation=\useKV[ClesStat]{AngleRotationAbscisse};
+ boolean Rotation;
+ Rotation=\useKV[ClesStat]{AbscisseRotation};
+ boolean Lecture;
+ Lecture:=\useKV[ClesStat]{Lecture};
+ boolean LectureFine;
+ LectureFine:=\useKV[ClesStat]{LectureFine};
+ boolean AideLecture;
+ AideLecture:=\useKV[ClesStat]{AideLecture};
+ boolean DonneesSup;
+ DonneesSup:=\useKV[ClesStat]{DonneesSup};
+ boolean Reponses;
+ Reponses:=\useKV[ClesStat]{Reponses};
+ epaisseurbatons=\useKV[ClesStat]{EpaisseurBatons};
+ boolean Qualitatif;
+ Qualitatif=\useKV[ClesStat]{Qualitatif};
+ boolean Tiret;
+ Tiret=\useKV[ClesStat]{Tiret};
+ % on r\'ecup\`ere les couleurs
+ color Col[];
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=black;
+ fi;
+ endfor;
+ %
pair A[],B[],P[];
+ vardef toto(text t)=%points quantitatif
n:=0;
- vardef toto(text t)=
for p_=t:
if pair p_:
n:=n+1;
- P[n]=((xpart(p_)-(#7))*unitex,ypart(p_)*unitey);
+ P[n]=((xpart(p_)-(xpartorigine))*unitex,ypart(p_)*unitey);
if xpart(p_)>maxx:
- maxx:=xpart(p_)-(#7);
+ maxx:=xpart(p_)-(xpartorigine);
fi;
if ypart(p_)>maxy:
maxy:=ypart(p_);
fi;
- A[n]=unitex*(xpart(p_)-(#7),0);
+ A[n]=unitex*(xpart(p_)-(xpartorigine),0);
B[n]=unitey*(0,ypart(p_));
- if (#8):
- label.bot(TEX("\num{"&decimal(xpart(p_))&"}") rotated 90,A[n]);
+ fi;
+ endfor;
+ enddef;
+ vardef tata(text t)=%affichage quantitatif
+ l=0;
+ for p_=t:
+ if pair p_:
+ l:=l+1;
+ if Rotation:
+ label.bot(TEX("\num{"&decimal(xpart(p_))&"}") rotated AngleRotation,A[l]);
else :
- label.bot(TEX("\num{"&decimal(xpart(p_))&"}"),A[n]);
+ label.bot(TEX("\num{"&decimal(xpart(p_))&"}"),A[l]);
+ fi;
+ if Reponses:
+ if DonneesSup:
+ label.top(TEX("\num{"&decimal(ypart(p_))&"}"),P[l]);
+ else:
+ if Tiret:
+ trace (B[l]+(-1pt,0))--(B[l]+(1pt,0));
+ label.lft(TEX("\num{"&decimal(p_)&"}"),B[l]);
+ else:
+ dotlabel.lft(TEX("\num{"&decimal(ypart(p_))&"}"),B[l]);
+ fi;
fi;
- label.lft(TEX("\num{"&decimal(ypart(p_))&"}"),B[n]);
fi;
endfor;
enddef;
- toto(#4);
+ vardef tutu(text t)=%points qualitatif
+ n:=0;
+ for p_=t:
+ if numeric p_:
+ P[n]=((n)*unitex,unitey*p_);
+ B[n]=(0,unitey*p_);
+ if p_>maxy:
+ maxy:=p_;
+ fi;
+ else:
+ n:=n+1;
+ A[n]=unitex*(n,0);
+ fi;
+ endfor;
+ maxx:=n;
+ enddef;
+ vardef titi(text t)=%affichage qualitatif
+ l:=0;
+ for p_=t:
+ if numeric p_:
+ if Reponses:
+ if DonneesSup:
+ label.top(TEX("\num{"&decimal(p_)&"}"),P[l]);
+ else:
+ if Tiret:
+ trace (B[l]+(-1pt,0))--(B[l]+(1pt,0));
+ label.lft(TEX("\num{"&decimal(p_)&"}"),B[l]);
+ else:
+ dotlabel.lft(TEX("\num{"&decimal(p_)&"}"),B[l]);
+ fi;
+ fi;
+ fi;
+ else:
+ l:=l+1;
+ if Rotation:
+ if AngleRotation<>0:
+ picture TEXTELABEL;
+ TEXTELABEL=image(
+ labeloffset:=labeloffset*2;
+ label.lft(TEX(p_),A[l]);
+ labeloffset:=labeloffset/2;
+ );
+ trace rotation(TEXTELABEL,A[l],AngleRotation);
+ else :
+ label.bot(TEX(p_),A[l]);
+ fi;
+ fi;
+ fi;
+ endfor;
+ enddef;
+ if Qualitatif: tutu(#1); else: toto(#1); fi;
boolean Grille;
Grille:=\useKV[ClesStat]{Grille};
Pasx:=\useKV[ClesStat]{Pasx};
@@ -10544,192 +11084,249 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
if Grille:
drawoptions(withcolor 0.75white);
for k=0 step Pasx until ((maxx+1)):
- trace (k*unitex,0)--(k*unitex,unitey*(maxy+1));
+ trace (k*unitex,0)--(k*unitex,unitey*(maxy+2*Pasy));
endfor;
- for k=0 step Pasy until ((maxy+1)):
+ for k=0 step Pasy until ((maxy+2*Pasy)):
trace (0,k*unitey)--(unitex*(maxx+1),k*unitey);
endfor;
drawoptions();
fi;
for k=1 upto n:
- draw A[k]--P[k] withpen pencircle scaled 2bp;
+ fill polygone(A[k]-(epaisseurbatons*1pt,0),A[k]+(epaisseurbatons*1pt,0),P[k]+(epaisseurbatons*1pt,0),P[k]-(epaisseurbatons*1pt,0)) withcolor if unknown Col[k]: black else:Col[k] fi;
+ if AideLecture:
draw B[k]--P[k] dashed evenly;
+ fi;
+ endfor;
+ if LectureFine:
+ for k=0 step Pasy until ((maxy+1*Pasy)):
+ if Tiret:
+ trace (1pt,k*unitey)--(-1pt,k*unitey);
+ label.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey));
+ else:
+ dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey));
+ fi;
endfor;
+ fi;
+ if Lecture:
+ for k=0 step Pasy until Pasy:
+ if Tiret:
+ trace (1pt,k*unitey)--(-1pt,k*unitey);
+ label.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey));
+ else:
+ dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey));
+ fi;
+ endfor;
+ fi;
drawarrow (0,0)--unitex*(maxx+1,0);
- drawarrow (0,0)--unitey*(0,maxy+1);
- label.lrt(btex #5 etex,unitex*(maxx+1,0));
- label.urt(btex #6 etex,unitey*(0,maxy+1));
+ drawarrow (0,0)--unitey*(0,maxy+2*Pasy);
+ label.lrt(btex \useKV[ClesStat]{Donnee} etex,unitex*(maxx+1,0));
+ label.urt(btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+2*Pasy));
+ if Qualitatif: titi(#1); else:tata(#1); fi;
\end{mplibcode}
\else
- \mpxcommands{%
- \setKV[ClesStat]{#1}%
- }
- \begin{mpost}[mpsettings={boolean Grille; Grille:=\useKV[ClesStat]{Grille}; Pasx:=\useKV[ClesStat]{Pasx}; Pasy:=\useKV[ClesStat]{Pasy};}]
- maxx:=0;
- maxy:=0;
- unitex:=#2*cm;
- unitey:=#3*cm;
+ \begin{mpost}[mpsettings={%
+ unitex:=\useKV[ClesStat]{Unitex}*cm;
+ unitey:=\useKV[ClesStat]{Unitey}*cm;
+ xpartorigine:=\useKV[ClesStat]{Origine};
+ AngleRotation=\useKV[ClesStat]{AngleRotationAbscisse};
+ boolean Rotation;
+ Rotation=\useKV[ClesStat]{AbscisseRotation};
+ boolean Lecture;
+ Lecture:=\useKV[ClesStat]{Lecture};
+ boolean LectureFine;
+ LectureFine:=\useKV[ClesStat]{LectureFine};
+ boolean AideLecture;
+ AideLecture:=\useKV[ClesStat]{AideLecture};
+ boolean DonneesSup;
+ DonneesSup:=\useKV[ClesStat]{DonneesSup};
+ boolean Reponses;
+ Reponses:=\useKV[ClesStat]{Reponses};
+ epaisseurbatons=\useKV[ClesStat]{EpaisseurBatons};
+ boolean Qualitatif;
+ Qualitatif=\useKV[ClesStat]{Qualitatif};
+ boolean Tiret;
+ Tiret=\useKV[ClesStat]{Tiret};}
+ ]
+ % on r\'ecup\`ere les couleurs
+ color Col[];
+ n:=0;
+ for p_=#2:
+ n:=n+1;
+ if color p_:
+ Col[n]=p_;
+ else:
+ Col[n]=black;
+ fi;
+ endfor;
+ %
pair A[],B[],P[];
+ vardef toto(text t)=%points quantitatif
n:=0;
- vardef toto(text t)=
for p_=t:
if pair p_:
n:=n+1;
- P[n]=((xpart(p_)-(#7))*unitex,ypart(p_)*unitey);
+ P[n]=((xpart(p_)-(xpartorigine))*unitex,ypart(p_)*unitey);
if xpart(p_)>maxx:
- maxx:=xpart(p_)-(#7);
+ maxx:=xpart(p_)-(xpartorigine);
fi;
if ypart(p_)>maxy:
maxy:=ypart(p_);
fi;
- A[n]=unitex*(xpart(p_)-(#7),0);
+ A[n]=unitex*(xpart(p_)-(xpartorigine),0);
B[n]=unitey*(0,ypart(p_));
- if (#8):
- label.bot(LATEX("\num{"&decimal(xpart(p_))&"}") rotated 90,A[n]);
- else :
- label.bot(LATEX("\num{"&decimal(xpart(p_))&"}"),A[n]);
- fi;
- label.lft(LATEX("\num{"&decimal(ypart(p_))&"}"),B[n]);
fi;
endfor;
enddef;
- toto(#4);
- if Grille:
- drawoptions(withcolor 0.75white);
- for k=0 step Pasx until ((maxx+1)):
- trace (k*unitex,0)--(k*unitex,unitey*(maxy+1));
- endfor;
- for k=0 step Pasy until ((maxy+1)):
- trace (0,k*unitey)--(unitex*(maxx+1),k*unitey);
- endfor;
- drawoptions();
+ vardef tata(text t)=%affichage quantitatif
+ l=0;
+ for p_=t:
+ if pair p_:
+ l:=l+1;
+ if Rotation:
+ label.bot(TEX("\num{"&decimal(xpart(p_))&"}") rotated AngleRotation,A[l]);
+ else :
+ label.bot(TEX("\num{"&decimal(xpart(p_))&"}"),A[l]);
+ fi;
+ if Reponses:
+ if DonneesSup:
+ label.top(TEX("\num{"&decimal(ypart(p_))&"}"),P[l]);
+ else:
+ if Tiret:
+ trace (B[l]+(-1pt,0))--(B[l]+(1pt,0));
+ label.lft(TEX("\num{"&decimal(p_)&"}"),B[l]);
+ else:
+ dotlabel.lft(TEX("\num{"&decimal(ypart(p_))&"}"),B[l]);
+ fi;
+ fi;
fi;
- for k=1 upto n:
- draw A[k]--P[k] withpen pencircle scaled 2bp;
- draw B[k]--P[k] dashed evenly;
endfor;
- drawarrow (0,0)--unitex*(maxx+1,0);
- drawarrow (0,0)--unitey*(0,maxy+1);
- label.lrt(\btex \useKV[ClesStat]{Donnee} etex,unitex*(maxx+1,0));
- label.urt(\btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+1));
- \end{mpost}
- \fi
-}
-
-% la construction du graphique en bâtons pour qualitatif
-\newcommand\MPStatQ[8][]{%
- \ifluatex
- \mplibforcehmode
- \begin{mplibcode}
- maxy:=0;
- unitex:=#2*cm;
- unitey:=#3*cm;
- pair A[],B[],P[];
+ enddef;
+ vardef tutu(text t)=%points qualitatif
n:=0;
- vardef toto(text t)=
for p_=t:
if numeric p_:
- P[n]=((n+1)*unitex,unitey*p_);
+ P[n]=((n)*unitex,unitey*p_);
B[n]=(0,unitey*p_);
- label.lft(TEX("\num{"&decimal(p_)&"}"),B[n]);
if p_>maxy:
maxy:=p_;
fi;
+ else:
n:=n+1;
+ A[n]=unitex*(n,0);
+ fi;
+ endfor;
+ maxx:=n;
+ enddef;
+ vardef titi(text t)=%affichage qualitatif
+ l:=0;
+ for p_=t:
+ if numeric p_:
+ if Reponses:
+ if DonneesSup:
+ label.top(TEX("\num{"&decimal(p_)&"}"),P[l]);
+ else:
+ if Tiret:
+ trace (B[l]+(-1pt,0))--(B[l]+(1pt,0));
+ label.lft(TEX("\num{"&decimal(p_)&"}"),B[l]);
else:
- A[n]=unitex*(n+1,0);
- if (#8):
- label.bot(TEX(p_) rotated 90,A[n]);
+ dotlabel.lft(TEX("\num{"&decimal(p_)&"}"),B[l]);
+ fi;
+ fi;
+ fi;
+ else:
+ l:=l+1;
+ if Rotation:
+ if AngleRotation<>0:
+ picture TEXTELABEL;
+ TEXTELABEL=image(
+ labeloffset:=labeloffset*2;
+ label.lft(TEX(p_),A[l]);
+ labeloffset:=labeloffset/2;
+ );
+ trace rotation(TEXTELABEL,A[l],AngleRotation);
else :
- label.bot(TEX(p_),A[n]);
+ label.bot(TEX(p_),A[l]);
+ fi;
fi;
fi;
endfor;
enddef;
- toto(#4);
+ if Qualitatif: tutu(#1); else: toto(#1); fi;
boolean Grille;
Grille:=\useKV[ClesStat]{Grille};
Pasx:=\useKV[ClesStat]{Pasx};
Pasy:=\useKV[ClesStat]{Pasy};
if Grille:
drawoptions(withcolor 0.75white);
- for k=0 step Pasx until ((n+1)):
- trace (k*unitex,0)--(k*unitex,unitey*(maxy+1));
+ for k=0 step Pasx until ((maxx+1)):
+ trace (k*unitex,0)--(k*unitex,unitey*(maxy+2*Pasy));
endfor;
- for k=0 step Pasy until ((maxy+1)):
- trace (0,k*unitey)--(unitex*(n+1),k*unitey);
+ for k=0 step Pasy until ((maxy+2*Pasy)):
+ trace (0,k*unitey)--(unitex*(maxx+1),k*unitey);
endfor;
drawoptions();
fi;
- for k=0 upto n-1:
- draw A[k]--P[k] withpen pencircle scaled 2bp;
+ for k=1 upto n:
+ fill polygone(A[k]-(epaisseurbatons*1pt,0),A[k]+(epaisseurbatons*1pt,0),P[k]+(epaisseurbatons*1pt,0),P[k]-(epaisseurbatons*1pt,0)) withcolor if unknown Col[k]: black else:Col[k] fi;
+ if AideLecture:
draw B[k]--P[k] dashed evenly;
- endfor;
- drawarrow (0,0)--unitex*(n+1,0);
- drawarrow (0,0)--unitey*(0,maxy+1);
- label.lrt(btex #5 etex,unitex*(n+1,0));
- label.urt(btex #6 etex,unitey*(0,maxy+1));
- \end{mplibcode}
- \else
- \mpxcommands{%
- \setKV[ClesStat]{#1}%
- }
- \begin{mpost}[mpsettings={boolean Grille; Grille:=\useKV[ClesStat]{Grille}; Pasx:=\useKV[ClesStat]{Pasx}; Pasy:=\useKV[ClesStat]{Pasy};}]
- maxy:=0;
- unitex:=#2*cm;
- unitey:=#3*cm;
- pair A[],B[],P[];
- n:=0;
- vardef toto(text t)=
- for p_=t:
- if numeric p_:
- P[n]=((n+1)*unitex,unitey*p_);
- B[n]=(0,unitey*p_);
- label.lft(LATEX("\num{"&decimal(p_)&"}"),B[n]);
- if p_>maxy:
- maxy:=p_;
fi;
- n:=n+1;
+ endfor;
+ if LectureFine:
+ for k=0 step Pasy until ((maxy+1*Pasy)):
+ if Tiret:
+ trace (1pt,k*unitey)--(-1pt,k*unitey);
+ label.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey));
else:
- A[n]=unitex*(n+1,0);
- if (#8):
- label.bot(LATEX(p_) rotated 90,A[n]);
- else :
- label.bot(LATEX(p_),A[n]);
+ dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey));
fi;
- fi;
- endfor;
- enddef;
- toto(#4);
- if Grille:
- drawoptions(withcolor 0.75white);
- for k=0 step Pasx until ((n+1)):
- trace (k*unitex,0)--(k*unitex,unitey*(maxy+1));
endfor;
- for k=0 step Pasy until ((maxy+1)):
- trace (0,k*unitey)--(unitex*(n+1),k*unitey);
- endfor;
- drawoptions();
fi;
- for k=0 upto n-1:
- draw A[k]--P[k] withpen pencircle scaled 2bp;
- draw B[k]--P[k] dashed evenly;
+ if Lecture:
+ for k=0 step Pasy until Pasy:
+ if Tiret:
+ trace (1pt,k*unitey)--(-1pt,k*unitey);
+ label.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey));
+ else:
+ dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(0,k*unitey));
+ fi;
endfor;
- drawarrow (0,0)--unitex*(n+1,0);
- drawarrow (0,0)--unitey*(0,maxy+1);
- label.lrt(\btex \useKV[ClesStat]{Donnee} etex,unitex*(n+1,0));
- label.urt(\btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+1));
+ fi;
+ drawarrow (0,0)--unitex*(maxx+1,0);
+ drawarrow (0,0)--unitey*(0,maxy+2*Pasy);
+ label.lrt(btex \useKV[ClesStat]{Donnee} etex,unitex*(maxx+1,0));
+ label.urt(btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+2*Pasy));
+ if Qualitatif: titi(#1); else:tata(#1); fi;
\end{mpost}
\fi
}
% la construction du graphique qualitatif
-\def\MPStatCirculaireQ#1#2#3#4#5#6#7{%
+\def\NewMPStatCirculaireQ#1#2#3#4{%
+ %#1 : la liste des données
+ %#2 : 360 ou 180
+ %#3 : liste des couleurs
+ %#4 : liste des légendes à effacer.
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ Rayon:=\useKV[ClesStat]{Rayon};
ecarthachures=\useKV[ClesStat]{EcartHachures};
epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures};
+ boolean AffichageAngle;
+ AffichageAngle=\useKV[ClesStat]{AffichageAngle};
+ boolean AffichageDonnee;
+ AffichageDonnee=\useKV[ClesStat]{AffichageDonnee};
+ boolean Hachures;
+ Hachures=\useKV[ClesStat]{Hachures};
+ boolean Inverse;
+ Inverse=\useKV[ClesStat]{LectureInverse};
+ boolean Legende;
+ Legende=\useKV[ClesStat]{Legende};
+ boolean LegendeVide;
+ LegendeVide=\useKV[ClesStat]{LegendeVide};
+ boolean Retour;
+ Retour=false;
pair A[],O,B[],C[],D[];
O=(0,0);
n:=0;
@@ -10737,15 +11334,15 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
total[0]=0;
ang[0]:=0;
path cc;
- cc=(fullcircle scaled (2*#1));
+ cc=(fullcircle scaled (2*Rayon));
% on r\'ecup\`ere les couleurs
color Col[];
n:=0;
- for p_=#5:
+ for p_=#3:
n:=n+1;
Col[n]=p_;
endfor;
- if #7=0:
+ if Inverse=false:
A[0]=point(0) of cc;
else:
A[0]=point(180) of cc;
@@ -10760,101 +11357,159 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
endfor;
N=n;
for k=1 upto N:
- ang[k]=(#3/total[N])*total[k];
+ ang[k]=(#2/total[N])*total[k];
endfor;
n:=0;
for p_=t:
if numeric p_:
n:=n+1;
- if #7=0:
- A[n]=A[n-1] rotatedabout(O,p_*(#3/total[N]));
+ if Inverse=false:
+ A[n]=A[n-1] rotatedabout(O,p_*(#2/total[N]));
else:
- A[n]=A[n-1] rotatedabout(O,-p_*(#3/total[N]));
+ A[n]=A[n-1] rotatedabout(O,-p_*(#2/total[N]));
fi;
%hachure ou pas ?
- if #6=0:
- fill (O--if #7=0:arccercle(A[n-1],A[n],O) else:
+ if Hachures=false:
+ fill (O--if Inverse=false:arccercle(A[n-1],A[n],O) else:
arccercle(A[n],A[n-1],O) fi--cycle) withcolor if unknown Col[n]: white else:Col[n] fi;
else:
draw
- Hachurage((O--if #7=0:arccercle(A[n-1],A[n],O)
- else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#3/total[N]) if
+ Hachurage((O--if Inverse=false:arccercle(A[n-1],A[n],O)
+ else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#2/total[N]) if
(n mod 2)=0: +90 else: -90 fi,ecarthachures,if (n mod 2)=0 : 0 else: 1 fi)
- withpen pencircle scaled epaisseurhachures if #4=1: withcolor 0.5white fi;
+ withpen pencircle scaled epaisseurhachures if AffichageAngle: withcolor 0.5white fi;
fi;
- draw A[n-1]--O--A[n] if #6=1: withpen pencircle scaled2 fi;
+ draw A[n-1]--O--A[n] if Hachures: withpen pencircle scaled2 fi;
% Affichage des angles associ\'es
- if #4=1:
- if round(p_*(#3/total[N]))>15:
+ if AffichageAngle:
+ if round(p_*(#2/total[N]))>15:
if (n mod 2)=0:
- marque_a:=20*0.75*#1/cm;
+ marque_a:=20*0.75*Rayon/cm;
else:
- marque_a:=20*0.5*#1/cm;
+ marque_a:=20*0.5*Rayon/cm;
fi;
- if #6=1:
- if #7=0:
+ if Hachures:
+ if Inverse=false:
undraw
- Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}")))));
else:
undraw
- Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}")))));
fi;
fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor
blanc;
fi;
- if #7=0:
+ if Inverse=false:
draw
- Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}")))));
else:
draw
- Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}")))));
+ fi;
+ fi;
+ elseif AffichageDonnee:
+ if round(p_*(#2/total[N]))>15:
+ if (n mod 2)=0:
+ marque_a:=20*0.75*Rayon/cm;
+ else:
+ marque_a:=20*0.5*Rayon/cm;
+ fi;
+ if Hachures:
+ if Inverse=false:
+ undraw
+ Codeangle(A[n-1],O,A[n],0,TEX(""&decimal(p_)&""));
+ else:
+ undraw
+ Codeangle(A[n],O,A[n-1],0,(((TEX(""&decimal(p_)&"")))));
+ fi;
+ fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor
+ blanc;
+ fi;
+ if Inverse=false:
+ draw
+ Codeangle(A[n-1],O,A[n],0,(((TEX(""&decimal(p_)&"")))));
+ else:
+ draw
+ Codeangle(A[n],O,A[n-1],0,(((TEX(""&decimal(p_)&"")))));
fi;
fi;
fi;
%
fi;
endfor;
- if #3=360:
- draw cc if #6=1: withpen pencircle scaled2 fi;
+ if #2=360:
+ draw cc if Hachures: withpen pencircle scaled2 fi;
else:
- draw (subpath(0,length cc/2) of cc)--cycle if #6=1: withpen pencircle scaled2 fi;;
+ draw (subpath(0,length cc/2) of cc)--cycle if Hachures: withpen pencircle scaled2 fi;;
fi;
n:=0;
- path cd[];
+ if Legende:
for p_=t:
if string p_:
n:=n+1;
- C[n]=A[n-1] rotatedabout(O,if #7=1:-1* fi(ang[n]-ang[n-1])/2);
+ C[n]=A[n-1] rotatedabout(O,if Inverse:-1* fi(ang[n]-ang[n-1])/2);
draw 0.95[O,C[n]]--1.05[O,C[n]];
C[n]:=1.05[O,C[n]];
+ Test(n);
if (xpart(C[n])>xpart(O)) and (ypart(C[n])>ypart(O)):
D[n]=C[n]+(0.5cm,0);
draw C[n]--D[n];
- label.urt(TEX(p_),D[n]);
+ if Retour=false:label.urt(TEX(p_),D[n]);fi;
fi;
if (xpart(C[n])<xpart(O)) and (ypart(C[n])>ypart(O)):
D[n]=C[n]-(0.5cm,0);
draw C[n]--D[n];
- label.ulft(TEX(p_),D[n]);
+ if Retour=false:label.ulft(TEX(p_),D[n]);fi;
fi;
if (xpart(C[n])<xpart(O)) and (ypart(C[n])<ypart(O)):
D[n]=C[n]-(0.5cm,0);
draw C[n]--D[n];
- label.llft(TEX(p_),D[n]);
+ if Retour=false:label.llft(TEX(p_),D[n]);fi;
fi;
if (xpart(C[n])>xpart(O)) and (ypart(C[n])<ypart(O)):
D[n]=C[n]+(0.5cm,0);
draw C[n]--D[n];
- label.lrt(TEX(p_),D[n]);
+ if Retour=false:label.lrt(TEX(p_),D[n]);fi;
fi;
fi;
endfor;
+ fi;
enddef;
+ vardef Test(expr nb)=
+ Retour:=false;
+ op:=0;
+ for l_=#4:
+ if l_=nb:
+ op:=op+1;
+ fi;
+ endfor;
+ if op>0:
+ Retour:=true;
+ fi;
+ enddef;
Figure(-10u,-10u,10u,10u);
- toto(#2);
+ toto(#1);
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={ecarthachures=\useKV[ClesStat]{EcartHachures};epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures};}]
+ \begin{mpost}[mpsettings={%
+ Rayon:=\useKV[ClesStat]{Rayon};
+ ecarthachures=\useKV[ClesStat]{EcartHachures};
+ epaisseurhachures=\useKV[ClesStat]{EpaisseurHachures};
+ boolean AffichageAngle;
+ AffichageAngle=\useKV[ClesStat]{AffichageAngle};
+ boolean AffichageDonnee;
+ AffichageDonnee=\useKV[ClesStat]{AffichageDonnee};
+ boolean Hachures;
+ Hachures=\useKV[ClesStat]{Hachures};
+ boolean Inverse;
+ Inverse=\useKV[ClesStat]{LectureInverse};
+ boolean Legende;
+ Legende=\useKV[ClesStat]{Legende};
+ boolean LegendeVide;
+ LegendeVide=\useKV[ClesStat]{LegendeVide};
+ }]
+ boolean Retour;
+ Retour=false;
pair A[],O,B[],C[],D[];
O=(0,0);
n:=0;
@@ -10862,15 +11517,15 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
total[0]=0;
ang[0]:=0;
path cc;
- cc=(fullcircle scaled (2*#1));
+ cc=(fullcircle scaled (2*Rayon));
% on r\'ecup\`ere les couleurs
color Col[];
n:=0;
- for p_=#5:
+ for p_=#3:
n:=n+1;
Col[n]=p_;
endfor;
- if #7=0:
+ if Inverse=false:
A[0]=point(0) of cc;
else:
A[0]=point(180) of cc;
@@ -10885,73 +11540,101 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
endfor;
N=n;
for k=1 upto N:
- ang[k]=(#3/total[N])*total[k];
+ ang[k]=(#2/total[N])*total[k];
endfor;
n:=0;
for p_=t:
if numeric p_:
n:=n+1;
- if #7=0:
- A[n]=A[n-1] rotatedabout(O,p_*(#3/total[N]));
+ if Inverse=false:
+ A[n]=A[n-1] rotatedabout(O,p_*(#2/total[N]));
else:
- A[n]=A[n-1] rotatedabout(O,-p_*(#3/total[N]));
+ A[n]=A[n-1] rotatedabout(O,-p_*(#2/total[N]));
fi;
%hachure ou pas ?
- if #6=0:
- fill (O--if #7=0:arccercle(A[n-1],A[n],O) else:
+ if Hachures=false:
+ fill (O--if Inverse=false:arccercle(A[n-1],A[n],O) else:
arccercle(A[n],A[n-1],O) fi--cycle) withcolor if unknown Col[n]: white else:Col[n] fi;
else:
draw
- Hachurage((O--if #7=0:arccercle(A[n-1],A[n],O)
- else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#3/total[N]) if
+ Hachurage((O--if Inverse=false:arccercle(A[n-1],A[n],O)
+ else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#2/total[N]) if
(n mod 2)=0: +90 else: -90 fi,ecarthachures,if (n mod 2)=0 : 0 else: 1 fi)
- withpen pencircle epaisseurhachures if #4=1: withcolor 0.5white fi;
+ withpen pencircle scaled epaisseurhachures if AffichageAngle: withcolor 0.5white fi;
fi;
- draw A[n-1]--O--A[n] if #6=1: withpen pencircle scaled2 fi;
+ draw A[n-1]--O--A[n] if Hachures: withpen pencircle scaled2 fi;
% Affichage des angles associ\'es
- if #4=1:
- if round(p_*(#3/total[N]))>15:
+ if AffichageAngle:
+ if round(p_*(#2/total[N]))>15:
if (n mod 2)=0:
- marque_a:=20*0.75*#1/cm;
+ marque_a:=20*0.75*Rayon/cm;
else:
- marque_a:=20*0.5*#1/cm;
+ marque_a:=20*0.5*Rayon/cm;
fi;
- if #6=1:
- if #7=0:
+ if Hachures:
+ if Inverse=false:
undraw
- Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}")))));
else:
undraw
- Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}")))));
fi;
fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor
blanc;
fi;
- if #7=0:
+ if Inverse=false:
draw
- Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}")))));
else:
draw
- Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#2/total[N])))&"}")))));
+ fi;
+ fi;
+ elseif AffichageDonnee:
+ if round(p_*(#2/total[N]))>15:
+ if (n mod 2)=0:
+ marque_a:=20*0.75*Rayon/cm;
+ else:
+ marque_a:=20*0.5*Rayon/cm;
+ fi;
+ if Hachures:
+ if Inverse=false:
+ undraw
+ Codeangle(A[n-1],O,A[n],0,LATEX(""&decimal(p_)&""));
+ else:
+ undraw
+ Codeangle(A[n],O,A[n-1],0,(((LATEX(""&decimal(p_)&"")))));
+ fi;
+ fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor
+ blanc;
+ fi;
+ if Inverse=false:
+ draw
+ Codeangle(A[n-1],O,A[n],0,(((LATEX(""&decimal(p_)&"")))));
+ else:
+ draw
+ Codeangle(A[n],O,A[n-1],0,(((LATEX(""&decimal(p_)&"")))));
fi;
fi;
fi;
%
fi;
endfor;
- if #3=360:
- draw cc if #6=1: withpen pencircle scaled2 fi;
+ if #2=360:
+ draw cc if Hachures: withpen pencircle scaled2 fi;
else:
- draw (subpath(0,length cc/2) of cc)--cycle if #6=1: withpen pencircle scaled2 fi;;
+ draw (subpath(0,length cc/2) of cc)--cycle if Hachures: withpen pencircle scaled2 fi;;
fi;
n:=0;
- path cd[];
+ if Legende:
for p_=t:
if string p_:
n:=n+1;
- C[n]=A[n-1] rotatedabout(O,if #7=1:-1* fi(ang[n]-ang[n-1])/2);
+ C[n]=A[n-1] rotatedabout(O,if Inverse:-1* fi(ang[n]-ang[n-1])/2);
draw 0.95[O,C[n]]--1.05[O,C[n]];
C[n]:=1.05[O,C[n]];
+ Test(n);
+ if Retour=false:
if (xpart(C[n])>xpart(O)) and (ypart(C[n])>ypart(O)):
D[n]=C[n]+(0.5cm,0);
draw C[n]--D[n];
@@ -10973,13 +11656,27 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
label.lrt(LATEX(p_),D[n]);
fi;
fi;
+ fi;
endfor;
+ fi;
enddef;
+ vardef Test(expr nb)=
+ Retour:=false;
+ op:=0;
+ for l_=#4:
+ if l_=nb:
+ op:=op+1;
+ fi;
+ endfor;
+ if op>0:
+ Retour:=true;
+ fi;
+ enddef;
Figure(-10u,-10u,10u,10u);
- toto(#2);
+ toto(#1);
\end{mpost}
\fi
-}
+}%
%Pour la m\'ediane.
\DTLgnewdb{mtdb}%
@@ -11154,10 +11851,12 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\ifboolKV[ClesStat]{SET}{}{Le nombre de donn\'ees de la s\'erie est \num{\ListeCompletelen}.\\}%
Donc la moyenne de la s\'erie est \'egale \`a :%
\[\frac{\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}}{\num{\ListeCompletelen}}%\IfInteger{\fpeval{round(\fpeval{\SommeDonnees/\ListeCompletelen},\useKV[ClesStat]{Precision})}}{=}{\approx}
- \opdiv*{\SommeDonnees}{\ListeCompletelen}{resultatmoy}{restemoy}%
- \opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}%
- \opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi%
- \num{\fpeval{round(\SommeDonnees/\ListeCompletelen,\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}.}{.}%
+ \ifboolKV[ClesStat]{ValeurExacte}{}{%
+ \opdiv*{\SommeDonnees}{\ListeCompletelen}{resultatmoy}{restemoy}%
+ \opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}%
+ \opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi%
+ \num{\fpeval{round(\SommeDonnees/\ListeCompletelen,\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}%
+ }%
\]%
}{Pas de moyenne possible pour une s\'erie de donn\'ees \`a caract\`ere qualitatif.}}{}%
% % %% celui de l'\'etendue
@@ -11275,9 +11974,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
}%
% Construction du tableau
\ifboolKV[ClesStat]{Tableau}{%
- \ifboolKV[ClesStat]{Liste}{Pas de tableau possible avec la cl\'e Liste.\\Utilisez plut\^ot la cl\'e Sondage si vous voulez un tableau avec cette liste.}{%
- \ifboolKV[ClesStat]{Total}{\buildtabt}{\buildtab}}}%
- {}%
+ \ifboolKV[ClesStat]{Liste}{Pas de tableau possible avec la cl\'e Liste.\\Utilisez plut\^ot la cl\'e Sondage si vous voulez un tableau avec cette liste.}{\BuildtabStat}}{}%
% Construction du graphique
\ifboolKV[ClesStat]{Graphique}{%
\ifboolKV[ClesStat]{Liste}{Pas de graphique possible avec la cl\'e Liste.\\Utilisez plut\^ot la cl\'e Sondage si vous voulez un graphique avec cette liste.}{%
@@ -11336,10 +12033,12 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
}%
Donc la moyenne de la s\'erie est \'egale \`a :%
\[\frac{\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}}{\num{\EffectifTotal}}%
- \opdiv*{\SommeDonnees}{\EffectifTotal}{resultatmoy}{restemoy}%
- \opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}%
- \opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi%
- \num{\fpeval{round(\SommeDonnees/\EffectifTotal,\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}.}{.}%
+ \ifboolKV[ClesStat]{ValeurExacte}{}{%
+ \opdiv*{\SommeDonnees}{\EffectifTotal}{resultatmoy}{restemoy}%
+ \opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}%
+ \opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi%
+ \num{\fpeval{round(\SommeDonnees/\EffectifTotal,\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}%
+ }%
\]%
}{}%
% % Affichage des r\'eponses.
@@ -11440,10 +12139,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
}%
}%
% Construction de tableau
- \ifboolKV[ClesStat]{Tableau}{\ifboolKV[ClesStat]{Total}{\buildtabt}{%
- \buildtab%
- }
- }{}%
+ \ifboolKV[ClesStat]{Tableau}{\BuildtabStat}{}%
% Construction du graphique ??
\ifboolKV[ClesStat]{Graphique}{%
\ifboolKV[ClesStat]{Angle}{\buildgraphcq{360}}{\ifboolKV[ClesStat]{SemiAngle}{\buildgraphcq{180}}{\buildgraph[#1]}}
@@ -11964,82 +12660,105 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
%%%
% Proportionnalit\'e
%%%
-\setKVdefault[ClesPropor]{GrandeurA=Grandeur A,GrandeurB=Grandeur B,Largeur=1cm,Math=false,Stretch=1,ColorFill=white,CouleurTab=gray!15}%
+\setKVdefault[ClesPropor]{GrandeurA=Grandeur A,GrandeurB=Grandeur B,Largeur=1cm,Math=false,Stretch=1,ColorFill=white,CouleurTab=gray!15,Vertical=false}%
\def\Updatetoksmath#1/#2\nil{\addtotok\tabtoksa{&#1}\addtotok\tabtoksb{&#2}}%
-
-\def\buildtabpropor{%
- \tabtoksa{}\tabtoksb{}%
- \tabtoksa{\useKV[ClesPropor]{GrandeurA}}\tabtoksb{\useKV[ClesPropor]{GrandeurB}}%
- \ifboolKV[ClesPropor]{Math}{%
- \foreachitem\compteur\in\ListeValeur{\expandafter\Updatetoksmath\compteur\nil}%
- }{\foreachitem\compteur\in\ListeValeur{\expandafter\updatetoks\compteur\nil}%
- }%
- \xdef\LongListe{\ListeValeurlen}%
+\def\updatetokspropor#1/#2\nil{\addtotok\tabtoksa{&\num{#1}}\addtotok\tabtoksb{&\num{#2}}}
+\def\Buildtabpropor{%
+ \setcounter{NbProporG}{0}%
+ \setcounter{NbProporD}{0}%
\renewcommand{\arraystretch}{\useKV[ClesPropor]{Stretch}}%
- \begin{tabular}{|>{\columncolor{\useKV[ClesPropor]{CouleurTab}}}c|*{\number\numexpr\ListeValeurlen}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}}%
- \multicolumn{1}{c}{\TikzPHD\setcounter{NbPropor}{1}}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPH}}\\%
- \hhline{*{\number\numexpr\ListeValeurlen+1}{-}}%
- \the\tabtoksa\\%
- \hhline{*{\number\numexpr\ListeValeurlen+1}{-}}%
- \the\tabtoksb\\%
- \hhline{*{\number\numexpr\ListeValeurlen+1}{-}}%
- \multicolumn{1}{c}{\TikzPBD\setcounter{NbPropor}{1}}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPB}}\\%
- \end{tabular}%
+ \ifboolKV[ClesPropor]{Vertical}{%
+ \begin{tabular}{c|*{2}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}c}%
+ \multicolumn{1}{c}{}&\multicolumn{1}{c}{\setcounter{NbPropor}{1}\TikzPH}&\multicolumn{1}{c}{\TikzPH}&\\
+ \hhline{~--~}%
+ &\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurA}&\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurB}&\\
+ \hhline{~--~}%
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{\ListeValeurlen}}}\do{%
+ \stepcounter{NbProporG}\TikzPG&\ifboolKV[ClesPropor]{Math}{\ListeValeur[##1,1]}{\num{\ListeValeur[##1,1]}}&\ifboolKV[ClesPropor]{Math}{\ListeValeur[##1,2]}{\num{\ListeValeur[##1,2]}}&\stepcounter{NbProporD}\TikzPD\\
+ \hhline{~--~}%
+ }%
+ \multicolumn{1}{c}{}&\multicolumn{1}{c}{\setcounter{NbPropor}{1}\TikzPB}&\multicolumn{1}{c}{\TikzPB}&\\
+ \end{tabular}%
+ }{%
+ \tabtoksa{}\tabtoksb{}%
+ \tabtoksa{\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurA}}\tabtoksb{\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurB}}%
+ \ifboolKV[ClesPropor]{Math}{%
+ \foreachitem\compteur\in\ListeValeur{\expandafter\Updatetoksmath\compteur\nil}%
+ }{\foreachitem\compteur\in\ListeValeur{\expandafter\updatetokspropor\compteur\nil}%
+ }%
+ \xdef\LongListe{\ListeValeurlen}%
+ \begin{tabular}{rc|*{\number\numexpr\ListeValeurlen}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}l}%
+ \multicolumn{1}{c}{}&\multicolumn{1}{c}{}\setcounter{NbPropor}{1}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPH}}&\multicolumn{1}{c}{}\\%
+ \hhline{~*{\number\numexpr\ListeValeurlen+1}{-}~}%
+ \multicolumn{1}{c|}{\stepcounter{NbProporG}\TikzPG}&\the\tabtoksa&\multicolumn{1}{c}{\stepcounter{NbProporD}\TikzPD}\\%
+ \hhline{~*{\number\numexpr\ListeValeurlen+1}{-}~}%
+ \multicolumn{1}{c|}{\stepcounter{NbProporG}\TikzPG}&\the\tabtoksb&\multicolumn{1}{c}{\stepcounter{NbProporD}\TikzPD}\\%
+ \hhline{~*{\number\numexpr\ListeValeurlen+1}{-}~}%
+ \multicolumn{1}{c}{\stepcounter{NbProporG}\TikzPG}&\multicolumn{1}{c}{}\setcounter{NbPropor}{1}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPB}}&\multicolumn{1}{c}{}\\%
+ \end{tabular}%
+ }%
\renewcommand{\arraystretch}{1}%
}%
-\newcounter{NbPropor}
+\newcounter{NbPropor}%
-\newcommand{\TikzPH}{%
- \tikz[remember picture,overlay]{%
- \coordinate[name=ProporH-\theNbPropor,yshift=-\the\dp\strutbox*\arraystretch];}%
- \stepcounter{NbPropor}%
- }%
+\newcommand\TikzPH{%
+ \tikz[remember picture,overlay]{%
+ \coordinate[name=ProporH-\theNbPropor,yshift=-\getstrut\dp*\arraystretch];}%
+ \stepcounter{NbPropor}%
+}%
- \newcommand{\TikzPHD}{%
- \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}%
- \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}%
- \xintifboolexpr{\wd1>\wd2}{%
- \tikz[remember picture,overlay]{%
- \coordinate[name=ProporHD,xshift=-0.5\wd1,yshift=-\the\dp\strutbox*\arraystretch];}%
- }{%
- \tikz[remember picture,overlay]{%
- \coordinate[name=ProporHD,xshift=-0.5\wd2,yshift=-\the\dp\strutbox*\arraystretch];}%
- }
- }%
+\newcommand\TikzPB{%
+ \tikz[remember picture, overlay]{%
+ \coordinate[name=ProporB-\theNbPropor,yshift=\getstrut\ht*\arraystretch];}%
+ \stepcounter{NbPropor}%
+}%
- \newcommand{\TikzPB}{%
- \tikz[remember picture, overlay]{%
- \coordinate[name=ProporB-\theNbPropor,yshift=\the\ht\strutbox*\arraystretch];}%
- \stepcounter{NbPropor}%
- }%
+\newcommand\TikzPG{%
+ \tikz[remember picture,overlay]{%
+ \coordinate[name=ProporG-\theNbProporG,xshift=\tabcolsep+\arrayrulewidth,yshift=\getstrut\dp];}%
+}%
+\newcommand\TikzPD{%
+ \tikz[remember picture,overlay]{%
+ \coordinate[name=ProporD-\theNbProporD,xshift=-\tabcolsep-\arrayrulewidth,yshift=\getstrut\dp];}%
+}%
- \newcommand{\TikzPBD}{%
- \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}%
- \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}%
- \xintifboolexpr{\wd1>\wd2}{%
- \tikz[remember picture, overlay]{%
- \coordinate[name=ProporBD,xshift=-0.5*\the\wd1,yshift=\the\ht\strutbox*\arraystretch];}%
- }{%
- \tikz[remember picture, overlay]{%
- \coordinate[name=ProporBD,xshift=-0.5*\the\wd2,yshift=\the\ht\strutbox*\arraystretch];}%
- }
- \stepcounter{NbPropor}%
- }%
-
- \newcommand\FlechesPH[3]{%
- \ifnum#1<#2\relax%
+\newcommand\TikzPHD{%
+ \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}%
+ \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}%
+ \xintifboolexpr{\wd1>\wd2}{%
+ \tikz[remember picture,overlay]{%
+ \coordinate[name=ProporHD,xshift=-0.5\wd1,yshift=-\getstrut\dp*\arraystretch];}%
+ }{%
+ \tikz[remember picture,overlay]{%
+ \coordinate[name=ProporHD,xshift=-0.5\wd2,yshift=-\getstrut\dp*\arraystretch];}%
+ }
+}%
+
+\newcommand\TikzPBD{%
+ \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}%
+ \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}%
+ \xintifboolexpr{\wd1>\wd2}{%
+ \tikz[remember picture, overlay]{%
+ \coordinate[name=ProporBD,xshift=-0.5*\the\wd1,yshift=\getstrut\ht*\arraystretch];}%
+ }{%
+ \tikz[remember picture, overlay]{%
+ \coordinate[name=ProporBD,xshift=-0.5*\the\wd2,yshift=\getstrut\ht*\arraystretch];}%
+ }
+ \stepcounter{NbPropor}%
+}%
+%
+\newcommand\FlechesPH[3]{%
\begin{tikzpicture}[remember picture,overlay]%
+ \ifnum#1<#2\relax%
\draw[-stealth,out=50,in=130] (ProporH-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporH-#2);%
- \end{tikzpicture}%
\else%
-\begin{tikzpicture}[remember picture,overlay]%
\draw[-stealth,out=130,in=50] (ProporH-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporH-#2);%
+ \fi%
\end{tikzpicture}%
- \fi%
}%
-
+%
\newcommand\FlechesPB[3]{%
\ifnum\number#1<\number#2\relax%
\begin{tikzpicture}[remember picture,overlay]%
@@ -12050,18 +12769,63 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\draw[-stealth,out=-130,in=-50] (ProporB-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporB-#2);%
\end{tikzpicture}%
\fi%
-}
+}%
+%
+\newcommand\FlechesPG[3]{%
+ \begin{tikzpicture}[remember picture,overlay]%
+ \ifnum#1<#2\relax%
+ \draw[-stealth,out=-150,in=150] (ProporG-#1) to node[transform canvas={xshift=-1pt},inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5,left]{#3}(ProporG-#2);%
+ \else%
+ \draw[-stealth,out=150,in=-150] (ProporG-#1) to node[transform canvas={xshift=-1pt},inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, left]{#3}(ProporG-#2);%
+ \fi%
+ \end{tikzpicture}%
+}%
+
+\newcommand\FlechesPD[3]{%
+ \begin{tikzpicture}[remember picture,overlay]%
+ \ifnum#1<#2\relax%
+ \draw[-stealth,out=-30,in=30] (ProporD-#1) to node[transform canvas={xshift=1pt},inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5,right]{#3}(ProporD-#2);%
+ \else%
+ \draw[-stealth,out=30,in=-30] (ProporD-#1) to node[transform canvas={xshift=1pt},inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5,right]{#3}(ProporD-#2);%
+ \fi%
+ \end{tikzpicture}%
+}%
+
+\newcommand\FlecheLineaireG[4]{%
+ \begin{tikzpicture}[remember picture,overlay,node distance=1em]%
+ \node[inner sep=0pt] (MilieuH) at ($(ProporG-#1)!0.5!(ProporG-#2)$) {};%
+ \node[circle,draw,inner sep=0pt] [left of=MilieuH] (aux) {#4} ;%
+ \coordinate[left of=aux] (aux1);%
+ \draw[-stealth] (ProporG-#1) -| (aux);%
+ \draw[-stealth] (ProporG-#2) -| (aux);%
+ \draw[-stealth] (aux) -- (aux1) |- (ProporG-#3);%
+ \end{tikzpicture}%
+}%
+
+\newcommand\FlecheLineaireD[4]{%
+ \begin{tikzpicture}[remember picture,overlay,node distance=1em]%
+ \node[inner sep=0pt] (MilieuH) at ($(ProporD-#1)!0.5!(ProporD-#2)$) {};%
+ \node[circle,draw,inner sep=0pt] [right of=MilieuH] (aux) {#4} ;%
+ \coordinate[right of=aux] (aux1);%
+ \draw[-stealth] (ProporD-#1) -| (aux);%
+ \draw[-stealth] (ProporD-#2) -| (aux);%
+ \draw[-stealth] (aux) -- (aux1) |- (ProporD-#3);%
+ \end{tikzpicture}%
+}%
+
+\newcounter{NbProporG}%
+\newcounter{NbProporD}%
\newcommand\Propor[2][]{%
\useKVdefault[ClesPropor]%
\setKV[ClesPropor]{#1}%
\xdef\colorfill{\useKV[ClesPropor]{ColorFill}}%
\xdef\EcartLargeur{\useKV[ClesPropor]{Largeur}}%
-% %on lit la liste \'ecrite sous la forme valeur/effectif
+ % % on lit la liste \'ecrite sous la forme valeur/effectif
\setsepchar[*]{,*/}\ignoreemptyitems%
\readlist*\ListeValeur{#2}%
- \buildtabpropor%
-}
+ \Buildtabpropor%
+}%
\newcommand\FlecheCoef[2][\EcartLargeur]{%
\begin{tikzpicture}[remember picture, overlay]%
@@ -12070,7 +12834,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\coordinate[right of=Point1,node distance=0.5*#1+\tabcolsep] (point1);%
\coordinate[right of=Point2,node distance=0.5*#1+\tabcolsep] (point2);%
\draw[-stealth,out=-20,in=20] (point1) to node[midway,right,inner sep=1pt]{#2}(point2);%
-\end{tikzpicture}%
+ \end{tikzpicture}%
}%
\newcommand\FlecheCoefDebut[2][\tabcolsep+\arrayrulewidth]{%
@@ -12080,7 +12844,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\coordinate[left of=Noeud1,node distance=#1] (noeud1);%
\coordinate[left of=Noeud2,node distance=#1] (noeud2);%
\draw[-stealth,out=160,in=-160] (noeud2) to node[midway,left,inner sep=1pt]{#2}(noeud1);%
-\end{tikzpicture}%
+ \end{tikzpicture}%
}%
\newcommand\FlecheCoefInv[2][1cm]{%
@@ -12090,30 +12854,30 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\coordinate[right of=Point1,node distance=0.5*#1+\tabcolsep] (point1);%
\coordinate[right of=Point2,node distance=0.5*#1+\tabcolsep] (point2);%
\draw[-stealth,out=20,in=-20] (point2) to node[midway,right,inner sep=1pt]{#2}(point1);%
-\end{tikzpicture}%
+ \end{tikzpicture}%
}%
\newcommand\FlecheLineaireH[4]{%
- \begin{tikzpicture}[remember picture,overlay,node distance=\ht\strutbox]
- \node[inner sep=0pt] (MilieuH) at ($(ProporH-#1)!0.5!(ProporH-#2)$) {};
- \node[circle,draw,inner sep=0pt] [above of=MilieuH] (aux) {#4} ;
- \coordinate[above of=aux] (aux1);
- \draw[-stealth] (ProporH-#1) |- (aux);
- \draw[-stealth] (ProporH-#2) |- (aux);
- \draw[-stealth] (aux) -- (aux1) -| (ProporH-#3);
-\end{tikzpicture}
-}
+ \begin{tikzpicture}[remember picture,overlay,node distance=\getstrut\ht]%
+ \node[inner sep=0pt] (MilieuH) at ($(ProporH-#1)!0.5!(ProporH-#2)$) {};%
+ \node[circle,draw,inner sep=0pt] [above of=MilieuH] (aux) {#4} ;%
+ \coordinate[above of=aux] (aux1);%
+ \draw[-stealth] (ProporH-#1) |- (aux);%
+ \draw[-stealth] (ProporH-#2) |- (aux);%
+ \draw[-stealth] (aux) -- (aux1) -| (ProporH-#3);%
+ \end{tikzpicture}%
+}%
\newcommand\FlecheLineaireB[4]{%
- \begin{tikzpicture}[remember picture,overlay,node distance=3mm]
- \node[inner sep=0pt] (MilieuB) at ($(ProporB-#1)!0.5!(ProporB-#2)$) {};
- \node[circle,draw,inner sep=0pt] [below of=MilieuB] (aux) {#4} ;
- \coordinate[below of=aux,node distance=3mm] (aux1);
- \draw[-stealth] (ProporB-#1) |- (aux);
- \draw[-stealth] (ProporB-#2) |- (aux);
- \draw[-stealth] (aux) -- (aux1) -| (ProporB-#3);
-\end{tikzpicture}
-}
+ \begin{tikzpicture}[remember picture,overlay,node distance=3mm]%
+ \node[inner sep=0pt] (MilieuB) at ($(ProporB-#1)!0.5!(ProporB-#2)$) {};%
+ \node[circle,draw,inner sep=0pt] [below of=MilieuB] (aux) {#4};%
+ \coordinate[below of=aux,node distance=3mm] (aux1);%
+ \draw[-stealth] (ProporB-#1) |- (aux);%
+ \draw[-stealth] (ProporB-#2) |- (aux);%
+ \draw[-stealth] (aux) -- (aux1) -| (ProporB-#3);%
+ \end{tikzpicture}%
+}%
%%%
% Application : pourcentage
@@ -12496,13 +13260,13 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\newcommand{\TikzRH}{%
\tikz[remember picture,overlay]{%
- \coordinate[name=ProporH-\theNbPropor,yshift=\the\ht\strutbox*\arraystretch];}%
+ \coordinate[name=ProporH-\theNbPropor,yshift=\getstrut\ht*\arraystretch];}%
\stepcounter{NbPropor}%
}%
\newcommand{\TikzRB}{%
\tikz[remember picture, overlay]{%
- \coordinate[name=ProporB-\theNbPropor,yshift=-\the\dp\strutbox*\arraystretch];}%
+ \coordinate[name=ProporB-\theNbPropor,yshift=-\getstrut\dp*\arraystretch];}%
\stepcounter{NbPropor}%
}%
@@ -17449,7 +18213,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
%%%
% Ecritures d'unit\'es
%%%
-\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false}
+\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,mmin=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false}
%D'apres https://tex.stackexchange.com/questions/38905/time-of-the-day-or-time-period-using-the-package-siunitx
\ExplSyntaxOn
@@ -17698,16 +18462,20 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\newcommand\Vitesse[2][]{%
\useKVdefault[Unites]%
\setKV[Unites]{#1}%
- \ifboolKV[Unites]{mh}{%
- \SI[per-mode=symbol]{#2}{\meter\per\hour}%
+ \ifboolKV[Unites]{mmin}{%
+ \SI[per-mode=symbol]{#2}{\meter\per\minute}%
}{%
- \ifboolKV[Unites]{ms}{%
- \SI[per-mode=symbol]{#2}{\meter\per\second}%
+ \ifboolKV[Unites]{mh}{%
+ \SI[per-mode=symbol]{#2}{\meter\per\hour}%
}{%
- \ifboolKV[Unites]{kms}{%
- \SI[per-mode=symbol]{#2}{\kilo\meter\per\second}%
+ \ifboolKV[Unites]{ms}{%
+ \SI[per-mode=symbol]{#2}{\meter\per\second}%
}{%
- \SI[per-mode=symbol]{#2}{\kilo\meter\per\hour}%
+ \ifboolKV[Unites]{kms}{%
+ \SI[per-mode=symbol]{#2}{\kilo\meter\per\second}%
+ }{%
+ \SI[per-mode=symbol]{#2}{\kilo\meter\per\hour}%
+ }%
}%
}%
}%
@@ -17729,6 +18497,8 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\setKVdefault[ClesTableaux]{Virgule=true,Incline=false,Entiers=false,Decimaux=false,Milliards=false,Millions=false,Micro=false,Nano=false,Partie=false,CouleurG=gray!15,CouleurM=gray!15,Couleurm=gray!15,Couleuru=gray!15,Couleurd=gray!15,Classes=false,Nombres=false,Puissances=false,NbLignes=2,Metre=false,Are=false,Capacite=false,Carre=false,Cube=false,Litre=false,Gramme=false,Fleches=false,FlechesB=false,FlechesH=false,Colonnes=false,Prefixes=false,Escalier=false}
\newcommand\PfCTBstrut{\rule[-1.2ex]{0pt}{3.8ex}} % Top and Bottom strut
+\newcommand\PfCTstrut{\rule{0pt}{3.8ex}} % Top strut
+\newcommand\PfCBstrut{\rule[-1.2ex]{0pt}{0ex}} % Bottom strut
\newcommand\Tableau[2][]{%
\useKVdefault[ClesTableaux]%
@@ -17931,11 +18701,13 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
&\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-2}$}%
&\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-3}$}%
\ifboolKV[ClesTableaux]{Micro}{&%
- \Block[borders={right}]{}{}&%
- &\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-6}$}}{%
+ \Block[borders={right}]{}{}&%
+ \Block[borders={right}]{}{}&
+ \Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-6}$}}{%
\ifboolKV[ClesTableaux]{Nano}{&%
+ \Block[borders={right}]{}{}&%
\Block[borders={right}]{}{}&%
- &\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-6}$}%
+ \Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-6}$}%
&\Block[borders={right}]{}{}%
&\Block[borders={right}]{}{}%
&\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times\num{10}^{-9}$}}{}%
@@ -19460,7 +20232,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\StrSubstitute{\tempa}{**}{^}[\tempab]%
\StrSubstitute{\tempab}{*}{\times}[\tempac]%
\StrSubstitute{\tempac}{/}{\div}[\tempad]%
- $\ifboolKV[ClesProg]{Details}{\num{\NbDepart}\tempad=}{}\xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\etapecnt]}}\num{\NbDepart}$%
+ $\ifboolKV[ClesProg]{Details}{\xintifboolexpr{\NbDepart<0}{(\num{\NbDepart})}{\num{\NbDepart}}\tempad=}{}\xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\etapecnt]}}\num{\NbDepart}$%
}%
\end{enumerate}
}
@@ -19951,10 +20723,10 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\def\barre{\vrule height2.1ex depth.9ex width0pt}%
\def\demibarre{\vrule height1.4ex depth.6ex width0pt}%
-\setKVdefault[Scratch]{Impression=false,Numerotation=false,Echelle=1}
+\setKVdefault[Scratch]{Impression=false,Numerotation=false,Echelle=1}%
\ifluatex
-\NewEnviron{Scratch}[1][]{%
+\NewDocumentEnvironment{Scratch}{o +b}{%
\useKVdefault[Scratch]%
\setKV[Scratch]{#1}%
\mplibforcehmode%
@@ -19963,22 +20735,22 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
input PfCScratch;%
print:=\useKV[Scratch]{Impression};%
NumeroteLignes:=\useKV[Scratch]{Numerotation};%
- \BODY
+ #2%
picture recap;%
recap:=currentpicture scaled \useKV[Scratch]{Echelle};%
- currentpicture:=nullpicture;
- draw recap;
- \end{mplibcode}
-}%
-\else
-\NewEnviron{Scratch}[1][]{%
+ currentpicture:=nullpicture;%
+ draw recap;%
+ \end{mplibcode}%
+ }{}
+\else%
+\NewDocumentEnvironment{Scratch}{o +b}{%
\setKV[Scratch]{#1}%
\begin{mpost}[mpsettings={input PfCScratchpdf;print:=\useKV[Scratch]{Impression};NumeroteLignes:=\useKV[Scratch]{Numerotation};Echelle:=\useKV[Scratch]{Echelle};}]%
- \BODY
+ #2%
picture recap;%
recap:=currentpicture scaled Echelle;%
- currentpicture:=nullpicture;
- draw recap;
+ currentpicture:=nullpicture;%
+ draw recap;%
\end{mpost}
-}%
-\fi \ No newline at end of file
+}{}%
+\fi% \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/metapost/PfC-Calculatriceold.mp b/macros/latex/contrib/profcollege/metapost/PfC-Calculatriceold.mp
new file mode 100644
index 0000000000..0140e24b4d
--- /dev/null
+++ b/macros/latex/contrib/profcollege/metapost/PfC-Calculatriceold.mp
@@ -0,0 +1,195 @@
+prologues:=3;
+
+path carre[];
+
+u:=0.5mm;
+
+vardef BlocAffichage=
+ for k=0 upto 34:
+ carre[k]:=(unitsquare scaled u) shifted(u*(k mod 5,5-(k div 5)));
+ endfor;
+enddef;
+
+vardef Affichage(expr decomp)=
+ save $;
+ picture $;
+ drawoptions(withpen pensquare scaled0.1);
+ $=image(%
+ for k=0 upto 34:
+ if (substring(k,k+1) of decomp)="1":
+ fill carre[k];
+ fi;
+ endfor;
+ );
+ drawoptions();
+ $
+enddef;
+
+nblignes:=0;
+
+boolean print;
+print:=false;
+
+color CouleurEcran;
+CouleurEcran=(107/255,148/255,107/255);
+
+boolean Math;
+Math=true;
+
+decahoriz:=0;
+
+vardef Test(expr cptk,cptnt)=
+ pair decalage;
+ if nblignes mod 2=0:
+ decalage:=u*((20-length(cptnt)+cptk)*6,-8*(nblignes-1));
+ else:
+ decalage:=u*(decahoriz,-8*(nblignes-1));
+ decahoriz:=decahoriz+6;
+ fi;
+ if substring(cptk,cptk+1) of cptnt="A":draw Affichage("01110100011000110001111111000110001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="B":draw Affichage("11110100011000111110100011000111110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="C":draw Affichage("01110100011000010000100001000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="D":draw Affichage("11100100101000110001100011001011100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="E":draw Affichage("11111100001000011111100001000011111") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="F":draw Affichage("11111100001000011111100001000010000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="G":draw Affichage("01110100011000010111100011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="H":draw Affichage("10001100011000111111100011000110001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="I":draw Affichage("01110001000010000100001000010001110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="J":draw Affichage("00111000100001000010000101001001100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="K":draw Affichage("10001100101010011000101001001010001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="L":draw Affichage("10000100001000010000100001000011111") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="M":draw Affichage("10001110111010110101100011000110001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="N":draw Affichage("10001100011100110101100111000110001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="O":draw Affichage("01110100011000110001100011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="P":draw Affichage("11110100011000111110100001000010000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="Q":draw Affichage("01110100011000110001101011001001101") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="R":draw Affichage("11110100011000111110101001001010001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="S":draw Affichage("01111100001000001110000010000111110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="T":draw Affichage("11111001000010000100001000010000100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="U":draw Affichage("10001100011000110001100011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="V":draw Affichage("10001100011000110001100010101000100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="W":draw Affichage("10101101011010110101101011010101010") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="X":draw Affichage("10001100010101000100010101000110001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="Y":draw Affichage("10001100011000101010001000010000100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="Z":draw Affichage("11111000010001000100010001000011111") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="a":draw Affichage("00000000000111100001011111000101111") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="b":draw Affichage("10000100001011011001100011000111110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="c":draw Affichage("00000000000111010000100001000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="d":draw Affichage("00001000010110110011100011000101111") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="e":if Math:
+ draw Affichage("00000000000000000001101000100010100") shifted(decalage);
+ decalage:=u*(decahoriz-1,-8*(nblignes-1));
+ draw Affichage("00000000001001010101101011010110010") shifted(decalage);
+ decahoriz:=decahoriz+6;
+ else:
+ draw Affichage("00000000000111010001111111000001110") shifted(decalage);
+ fi;
+ elseif substring(cptk,cptk+1) of cptnt="@":draw Affichage("00010001000111010001111111000001110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="f":draw Affichage("00110010010100011100010000100001000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="g":draw Affichage("00000011111000110001011110000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="h":draw Affichage("10000100001011011001100011000110001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="i":draw Affichage("00100000000110000100001000010001110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="j":if Math=true:
+ draw Affichage("00011000011110100001000000000000000") shifted(decalage);
+ else:
+ draw Affichage("00010000000011000010000101001001100") shifted(decalage);
+ fi;
+ elseif substring(cptk,cptk+1) of cptnt="k":if Math=true:
+ draw Affichage("11100001000100011100000000000000000") shifted(decalage);
+ else:
+ draw Affichage("10000100001001010100110001010010010") shifted(decalage);
+ fi;
+ elseif substring(cptk,cptk+1) of cptnt="l":if Math=true:
+ draw Affichage("11100010000010011100000000000000000") shifted(decalage);
+ else:
+ draw Affichage("01100001000010000100001000010001110") shifted(decalage);
+ fi;
+ elseif substring(cptk,cptk+1) of cptnt="m":draw Affichage("00000000001101010101101011000110001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="n":draw Affichage("00000000001011011001100011000110001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="o":draw Affichage("00000000000111010001100011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="p":draw Affichage("00000000001111010001111101000010000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="q":if Math=true:
+ draw Affichage("00000000001111101010010100101010001") shifted(decalage);
+ else:
+ draw Affichage("00000000000110110011011110000100001") shifted(decalage);
+ fi;
+ elseif substring(cptk,cptk+1) of cptnt="r":draw Affichage("00000000001011011001100001000010000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="s":draw Affichage("00000000000111010000011100000111110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="t":draw Affichage("01000010001110001000010000100100110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="u":draw Affichage("00000000001000110001100011001101101") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="v":if Math=true:
+ draw Affichage("00111001000010000100101000110000100") shifted(decalage);
+ else:
+ draw Affichage("00000000001000110001100010111000100") shifted(decalage);
+ fi;
+ elseif substring(cptk,cptk+1) of cptnt="w":draw Affichage("00000000001010110101101011010101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="x":draw Affichage("00000000001000101010001000101010001") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="y":draw Affichage("00000000001000110001011110000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="z":draw Affichage("00000000001111100010001000100011111") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="0":draw Affichage("01110100011001110101110011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="1":draw Affichage("00100011000010000100001000010001110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="2":draw Affichage("01110100010000100010001000100011111") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="3":draw Affichage("11111000100010000010000011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="4":draw Affichage("00010001100101010010111110001000010") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="5":draw Affichage("11111100001111000001000011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="6":draw Affichage("00110010001000011110100011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="7":draw Affichage("11111000010001000100010000100001000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="8":draw Affichage("01110100011000101110100011000101110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="9":draw Affichage("01110100011000101111000010001001100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="!":draw Affichage("00100001000010000100000000000000100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="'":draw Affichage("01100001000100000000000000000000000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="(":draw Affichage("00010001000100001000010000010000010") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt=")":draw Affichage("01000001000001000010000100010001000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="*":draw Affichage("00000001001010101110101010010000000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="+":draw Affichage("00000001000010011111001000010000000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt=",":draw Affichage("00000000000000000000011000010001000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="-":draw Affichage("00000000000000011111000000000000000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt=".":draw Affichage("00000000000000000000000000110001100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="/":draw Affichage("00000000010001000100010001000000000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt=":":if Math=true:
+ draw Affichage("00000000000000000000000000000000000") shifted(decalage);
+ else:
+ draw Affichage("00000011000110000000011000110000000") shifted(decalage);
+ fi;
+ elseif substring(cptk,cptk+1) of cptnt=";":if Math=true:
+ draw Affichage("00000001000000011111000000010000000") shifted(decalage);
+ else:
+ draw Affichage("00000011000110000000011000010001000") shifted(decalage);
+ fi;
+ elseif substring(cptk,cptk+1) of cptnt="<":draw Affichage("00010001000100010000010000010000010") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="=":draw Affichage("00000000001111100000111110000000000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt=">":draw Affichage("10000010000010000010001000100010000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="?":draw Affichage("01110100010000100010001000000000100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="[":draw Affichage("01110010000100001000010000100001110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="]":draw Affichage("01110000100001000010000100001001110") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="`":draw Affichage("01000001000001000000000000000000000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="|":draw Affichage("00100001000010000100001000010000100") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt=" ":draw Affichage("00000100010101000100010101000100000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="&":draw Affichage("00000100001100011100110001000000000") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="$":draw Affichage("00000000000000100001000010000111111") shifted(decalage);
+ elseif substring(cptk,cptk+1) of cptnt="^":draw Affichage("00100010101000100000000000000000000") shifted(decalage);
+ fi;
+enddef;
+
+vardef LCD(text nt)(text rep)=
+ decahoriz:=0;
+ nblignes:=nblignes+1;
+ path Ecran;
+ Ecran:=(u*(0,-1)--u*(120,-1)--u*(120,7)--u*(0,7)--cycle) shifted(u*(0,-8*(nblignes-1)));
+ fill Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
+ draw Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
+ for k=0 upto length(nt)-1:
+ BlocAffichage;
+ Test(k,nt);
+ endfor;
+ nblignes:=nblignes+1;
+ Ecran:=(u*(0,-1)--u*(120,-1)--u*(120,7)--u*(0,7)--cycle) shifted(u*(0,-8*(nblignes-1)));
+ fill Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
+ draw Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
+ for k=0 upto length(rep)-1:
+ BlocAffichage;
+ Test(k,rep);
+ endfor;
+enddef;
+
+endinput;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
index 604373e716..3386a78680 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCGeometrie.mp
@@ -574,7 +574,7 @@ vardef demidroite(expr AA,BB)=
save Dem;
path Dem;
if typetrace="mainlevee":
- Dem=segment(AA,BB)..(_tfig/abs(AA-BB))[AA,BB]{dir(angle(BB-AA)+10)}
+ Dem=segment(AA,BB)..(_tfig/abs(AA-BB))[AA,BB]
elseif typetrace="3D":
Dem=Projette(AA)--(_tfig/abs(Projette(AA)-Projette(BB)))[Projette(AA),Projette(BB)]
else:
@@ -667,6 +667,30 @@ vardef chemin(text t)=
$
enddef;
+vardef Triangleqcq(text t)=
+ save PfCTqc;
+ pair pointchoisi[];
+ pointchoisi1:=iso(coinbg,1/4[coinbg,coinbd],iso(coinbg,iso(coinhg,coinhd)),iso(coinhg,coinbg));
+ pointchoisi2:=iso(coinbd,3/4[coinbg,coinbd],iso(coinbd,iso(coinhg,coinhd)),iso(coinhd,coinbd));
+ test:=uniformdeviate(1);
+ choix:=43+uniformdeviate(4);
+ ecart:=abs(45-choix);
+ relation:=60-(ecart/2)+uniformdeviate(ecart);
+ if test<0.5 :
+ pointchoisi3:=droite(pointchoisi1,rotation(pointchoisi2,pointchoisi1,choix)) intersectionpoint droite(pointchoisi2,rotation(pointchoisi1,pointchoisi2,-relation));
+ else :
+ pointchoisi3:=droite(pointchoisi2,rotation(pointchoisi1,pointchoisi2,-choix)) intersectionpoint droite(pointchoisi1,rotation(pointchoisi2,pointchoisi1,relation));
+ fi
+ j:=1;
+ for p_=t:
+ p_=pointchoisi[j];
+ j:=j+1;
+ endfor;
+ path PfCTqc;
+ PfCTqc=polygone(pointchoisi1,pointchoisi2,pointchoisi3);
+ PfCTqc
+enddef;
+
%------------------------------------------------
%Sucres
%------------------------------------------------
@@ -674,7 +698,7 @@ vardef hachurage(expr chemin, angle, ecart, trace)=
save $;
picture $;
path support;
- support=((u*(-37,0))--(u*(37,0))) rotated angle;
+ support=((u*(-50,0))--(u*(50,0))) rotated angle;
if trace=1:
drawoptions(dashed evenly);
elseif trace=2:
@@ -693,6 +717,33 @@ vardef hachurage(expr chemin, angle, ecart, trace)=
drawoptions();
$
enddef;
+
+vardef Hachurage(expr Chemin, Angle, Ecart, Trace)=
+ %Avec écart constant quel que soit l'angle d'inclinaison.
+ save $;
+ picture $;
+ if Trace=0:
+ drawoptions();
+ elseif Trace=1:
+ drawoptions(dashed evenly);
+ elseif Trace=2:
+ drawoptions(dashed dashpattern(on12bp off6bp on3bp off6bp));
+ elseif Trace=3:
+ drawoptions(dashed withdots);
+ fi;
+ path support;
+ support=(u*(-50,0)--u*(50,0)) rotated Angle;
+ $ = image(
+ for j=-200 upto 200:
+ if (support shifted (Ecart*j*u*(cosd(90-Angle),-sind(90-Angle)))) intersectiontimes Chemin<>(-1,-1):
+ draw support shifted (Ecart*j*u*(cosd(90-Angle),-sind(90-Angle)));%));%(cosd(Angle),sind(Angle)));
+ fi
+ endfor;
+ );
+ clip $ to Chemin;
+ drawoptions();
+ $
+enddef;
%fleche pour coter un segment [AB] (Jacques Marot)
vardef cotation(expr aa,bb,ecart,decalage,cote)=
pair m[] ;
diff --git a/macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp b/macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp
index 33d9848b63..abfe21bc10 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCLaTeX.mp
@@ -8,6 +8,7 @@ vardef LATEX primary s =
write "\usepackage{fourier}" to "mptextmp.mp";
write "\usepackage[french]{babel}" to "mptextmp.mp";
write "\begin{document}" to "mptextmp.mp";
+ write "\UseRawInputEncoding" to "mptextmp.mp";
write "etex" to "mptextmp.mp";
write "btex "&s&" etex" to "mptextmp.mp";
write EOF to "mptextmp.mp";
diff --git a/macros/latex/contrib/profcollege/metapost/PfCMonde.mp b/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
index 10906952da..c69de29ac0 100644
--- a/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
+++ b/macros/latex/contrib/profcollege/metapost/PfCMonde.mp
@@ -47,6 +47,16 @@ def MarquePoint(expr p)=
fill fullcircle scaled (marque_r/5) shifted (p) withcolor white;
draw fullcircle scaled (marque_r/5) shifted (p);
fi;
+ elseif marque_p = "croix":
+ drawoptions(withpen pencircle scaled 1.25);
+ if color p:
+ draw (Projgeo(p) shifted (-marque_r/20,marque_r/20))--(Projgeo(p) shifted (marque_r/20,-marque_r/20));
+ draw (Projgeo(p) shifted (-marque_r/20,-marque_r/20))--(Projgeo(p) shifted (marque_r/20,marque_r/20));
+ else:
+ draw ((p) shifted (-marque_r/20,marque_r/20))--((p) shifted (marque_r/20,-marque_r/20));
+ draw ((p) shifted (-marque_r/20,-marque_r/20))--((p) shifted (marque_r/20,marque_r/20));
+ fi;
+ drawoptions();
fi;
enddef;
@@ -113,12 +123,18 @@ vardef arcsind(expr x)=%en degré ici :)
angle((sqrt(1-x**2),x))
enddef;
+vardef arccosd(expr x)=%en degré ici :)
+ angle((x,sqrt(1-x**2)))
+enddef;
+
vardef tand(expr x)=sind(x)/cosd(x)%
enddef;
vardef cotand(expr x)=cosd(x)/sind(x)%
enddef;
+vardef sinc(expr x)=if abs(x)<0.001:1 else:sind(x)*c/x fi enddef;
+
vardef ln(expr t)=mlog(t)/256%
enddef;
@@ -188,25 +204,10 @@ vardef MaillageS=
for l=Vdebut step pasV until (Vfin):
Maillage[100*k+l]=Projgeo((FX(k,l),FY(k,l),FZ(k,l)))--Projgeo((FX(k,l+pasV),FY(k,l+pasV),FZ(k,l+pasV)))--Projgeo((FX(k+pasU,l+pasV),FY(k+pasU,l+pasV),FZ(k+pasU,l+pasV)))--Projgeo((FX(k+pasU,l),FY(k+pasU,l),FZ(k+pasU,l)))--cycle;
if ProduitScalaire(1/2[(FX(k,l),FY(k,l),FZ(k,l)),(FX(k+pasU,l+pasV),FY(k+pasU,l+pasV),FZ(k+pasU,l+pasV))]-pte3,Oeil-pte3)>0:
- %total:=total+1;
- %if total=1:
- % Vmin:=l;
- %fi;
draw Maillage[100*k+l];
fi;
endfor;
endfor;
- %drawoptions();
- %for k=(Udebut+pasU) step pasU until (Ufin-pasU):
- % if abs(round(k*c))<100:
- % label.urt(TEX(""&decimal(round(k*c))&""),Projgeo(rayon*(cosd(round(k*c))*cosd(Theta),cosd(round(k*c))*sind(Theta),sind(round(k*c)))))
- % fi;
- %endfor;
- %Vmax:=0;
- %Vmax:=Vmin+2*((Theta/c)-Vmin);
- %label.top(TEX(""&decimal(round(Vmin*c))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Vmin*c)),cosd(phim+10)*sind(round(Vmin*c)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Vmin*c)),cosd(phim)*sind(round(Vmin*c)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Vmin*c)),cosd(phim)*sind(round(Vmin*c)),sind(phim))));
- %label.top(TEX(""&decimal(round(Theta))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Theta)),cosd(phim+10)*sind(round(Theta)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Theta)),cosd(phim)*sind(round(Theta)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Theta)),cosd(phim)*sind(round(Theta)),sind(phim))));
- %label.top(TEX(""&decimal(round(Vmax*c))&"") rotated angle(Projgeo(rayon*(cosd(phim+10)*cosd(round(Vmax*c)),cosd(phim+10)*sind(round(Vmax*c)),sind(phim+10)))-Projgeo(rayon*(cosd(phim)*cosd(round(Vmax*c)),cosd(phim)*sind(round(Vmax*c)),sind(phim)))),Projgeo(rayon*(cosd(phim)*cosd(round(Vmax*c)),cosd(phim)*sind(round(Vmax*c)),sind(phim))));
enddef;
vardef InitialiseMaillage(expr ud,uf,up,vd,vf,vp)=
@@ -569,6 +570,9 @@ vardef zoom(expr nbzoom)=
elseif projection="cylindrique":
xunit:=2.5*nbzoom;
yunit:=nbzoom*10*cm;
+ elseif projection="winkel":
+ xunit:=nbzoom*0.5*mm;
+ yunit:=nbzoom;
elseif projection="simple":
xunit:=nbzoom*0.5*mm;
yunit:=nbzoom*0.5*mm;
@@ -600,12 +604,26 @@ vardef bonnec(expr aaa,bbb)=
save tt;
pair tt;
rho:=cotand(phi)+(phi-aaa)/c;
- %E:=(((bbb-theta)/c)*cosd(aaa))/rho;
E:=(((bbb-theta)/c)/rho)*cosd(aaa);
tt=xunit*(rho*sind(E*c),cotand(phi)-rho*cosd(E*c));
tt
enddef;
+vardef winkelc(expr aaa,bbb)=
+ save ttw;
+ pair ttw;
+ alphawinkel:=arccosd(cosd(aaa)*cosd(0.5*bbb));
+ if alphawinkel=0:
+ xwinkel:=0;
+ ywinkel:=0;
+ else:
+ xwinkel:=xunit*0.5*(bbb*cosd(arccosd(2/pi))+(2*cosd(aaa)*sind(0.5*bbb)/sinc(alphawinkel)));
+ ywinkel:=yunit*0.5*(aaa+sind(aaa)/sinc(alphawinkel));
+ fi;
+ ttw=(xwinkel,ywinkel);
+ ttw
+enddef;
+
vardef lecturep(expr nomfichier,fond)=
pair Coord[];
nbpts:=scantokens readfrom nomfichier;
@@ -616,6 +634,8 @@ vardef lecturep(expr nomfichier,fond)=
latlon=scantokens readfrom nomfichier;
if projection="mercator":
Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60))
+ elseif projection="winkel":
+ Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60))
elseif projection="cylindrique":
Coord[k]=cylindriquec(xpart(latlon/60),ypart(latlon/60));
elseif projection="simple":
@@ -636,12 +656,12 @@ vardef lecturep(expr nomfichier,fond)=
endfor;
closefrom nomfichier;
path pays;
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkel") or(projection="cylindrique") or (projection="simple") or (projection="bonne"):
ll:=nbpts
fi;
if ll>0:
pays=Coord[1]
- for l=2 upto ll:
+ for l=4 step 3 until ll:%upto ll:
--Coord[l]
endfor;
if noncolore=true:
@@ -651,11 +671,10 @@ vardef lecturep(expr nomfichier,fond)=
fi;
draw pays;
fi;
- %label.top(decimal(nbpts),(0,0));
enddef;
vardef Lectureilesp=
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
nomfichiermul:=arborescence&"Ile.dat";
else:
nomfichiermul:=arborescence&"iles.dat";
@@ -674,7 +693,9 @@ vardef Lectureilesp=
pair latlon;
latlon=scantokens readfrom nomfichiermul;
if projection="mercator":
- Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60))
+ Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60));
+ elseif projection="winkel":
+ Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60));
elseif projection="simple":
Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60));
elseif projection="cylindrique":
@@ -694,7 +715,7 @@ vardef Lectureilesp=
fi;
endfor;
path pays;
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
ll:=nbpts
fi;
if ll>0:
@@ -711,7 +732,7 @@ vardef Lectureilesp=
fi;
endfor;
closefrom nomfichiermul;
- if (projection="mercator") or (projection="cylindrique") or (projection="simple"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple"):
clip currentpicture to feuillet;
fi;
if projection="bonne":
@@ -735,6 +756,8 @@ vardef Lecturevillesp(expr nompays)=
p_=scantokens readfrom nomfichiermul;
if projection="mercator":
Coord[p]=mercatorc(ypart(latlon),xpart(latlon));
+ elseif projection="winkel":
+ Coord[p]=winkelcc(ypart(latlon),xpart(latlon));
elseif projection="simple":
Coord[p]=simplec(ypart(latlon),xpart(latlon));
elseif projection="cylindrique":
@@ -742,7 +765,7 @@ vardef Lecturevillesp(expr nompays)=
elseif projection="bonne":
Coord[p]=bonnec(ypart(latlon),xpart(latlon));
fi;
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
if ecriturevilles=true:
dotlabel.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]);
else:
@@ -797,6 +820,8 @@ vardef Lecturelacsp=
latlon=scantokens readfrom nomfichiermul;
if projection="mercator":
Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60));
+ elseif projection="winkel":
+ Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60));
elseif projection="simple":
Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60));
elseif projection="cylindrique":
@@ -816,7 +841,7 @@ vardef Lecturelacsp=
fi;
endfor;
path lac;
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkelc") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
ll:=nbpts
fi;
if ll>0:
@@ -844,6 +869,8 @@ vardef Lecturelacspsup=
latlon=scantokens readfrom nomfichiermul;
if projection="mercator":
Coord[k]=mercatorc(xpart(latlon),ypart(latlon));
+ elseif projection="winkel":
+ Coord[k]=winkelc(xpart(latlon),ypart(latlon));
elseif projection="simple":
Coord[k]=simplec(xpart(latlon),ypart(latlon));
elseif projection="cylindrique":
@@ -863,7 +890,7 @@ vardef Lecturelacspsup=
fi;
endfor;
path lac;
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
ll:=nbpts
fi;
if ll>0:
@@ -891,6 +918,8 @@ vardef Lecturerivieresp=
latlon=scantokens readfrom nomfichiermul;
if projection="mercator":
Coord[k]=mercatorc(xpart(latlon/60),ypart(latlon/60));
+ elseif projection="winkel":
+ Coord[k]=winkelc(xpart(latlon/60),ypart(latlon/60));
elseif projection="simple":
Coord[k]=simplec(xpart(latlon/60),ypart(latlon/60));
elseif projection="cylindrique":
@@ -910,7 +939,7 @@ vardef Lecturerivieresp=
fi;
endfor;
path riv;
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
ll:=nbpts;
fi;
if ll>0:
@@ -937,6 +966,8 @@ vardef Lecturerivierespsup=
latlon=scantokens readfrom nomfichiermul;
if projection="mercator":
Coord[k]=mercatorc(xpart(latlon),ypart(latlon));
+ elseif projection="winkel":
+ Coord[k]=winkelc(xpart(latlon),ypart(latlon));
elseif projection="simple":
Coord[k]=simplec(xpart(latlon),ypart(latlon));
elseif projection="cylindrique":
@@ -956,7 +987,7 @@ vardef Lecturerivierespsup=
fi;
endfor;
path riv;
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
ll:=nbpts;
fi;
if ll>0:
@@ -983,6 +1014,9 @@ vardef Lecturecapitalesp=
if projection="mercator":
Coord[p]=mercatorc(xpart(latlon/60),ypart(latlon/60));
ll:=1;
+ elseif projection="winkel":
+ Coord[p]=winkelc(xpart(latlon/60),ypart(latlon/60));
+ ll:=1;
elseif projection="simple":
Coord[p]=simplec(xpart(latlon/60),ypart(latlon/60));
ll:=1;
@@ -1007,7 +1041,7 @@ vardef Lecturecapitalesp=
drawoptions(withcolor rouge);
pointe(Coord[p]);
drawoptions();
- if (projection="mercator") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple") or (projection="bonne"):
label.top(TEX(""&p_&""),Coord[p]);
fi;
fi;
@@ -1017,40 +1051,44 @@ vardef Lecturecapitalesp=
enddef;
vardef MeridienParallele=
- if (projection="mercator") or (projection="cylindrique") or (projection="simple"):
+ if (projection="mercator") or (projection="winkel") or (projection="cylindrique") or (projection="simple"):
pair Coord[];
- for k=-80 step 10 until 80:
- for j=-180 step 10 until 180:
+ for k=-85 step 5 until 85:
+ for j=-180 step 10 until 180:
if projection="mercator":
Coord[100*k+j]=mercatorc(k,j);
+ elseif projection="winkel":
+ Coord[100*k+j] = winkelc(k,j);
elseif projection="simple":
- Coord[k]=simplec(k,j);
+ Coord[100*k+j]=simplec(k,j);
elseif projection="cylindrique":
Coord[100*k+j]=cylindriquec(k,j);
fi;
endfor;
endfor;
- for k=-80 step 10 until 80:
+ for k=-85 step 5 until 85:
draw Coord[100*k-180]
- for j=-170 step 10 until 180:
+ for j=-170 step 10 until 180:
--Coord[100*k+j]
- endfor;
+ endfor;
endfor;
pair Coord[];
for k=-180 step 10 until 180:
- for j=-80 step 10 until 80:
+ for j=-85 step 5 until 85:
if projection="mercator":
Coord[0.001*k+10*j]=mercatorc(j,k);
+ elseif projection="winkel":
+ Coord[0.001*k+10*j]=winkelc(j,k);
elseif projection="simple":
- Coord[k]=simplec(j,k);
+ Coord[0.001*k+10*j]=simplec(j,k);
elseif projection="cylindrique":
Coord[0.001*k+10*j]=cylindriquec(j,k);
fi;
endfor;
endfor;
for k=-180 step 10 until 180:
- draw Coord[0.001*k-10*80]
- for j=-70 step 10 until 80:
+ draw Coord[0.001*k-10*85]
+ for j=-80 step 5 until 85:
--Coord[0.001*k+10*j]
endfor;
endfor;
@@ -1154,6 +1192,8 @@ vardef echelle(expr Th,Ph,long)=%long en km.
$=(cm*pi*cosd(Ph)/36)/(long*abs(bonnec(Ph,Th)-bonnec(Ph,Th+5)))*6340;
elseif projection="mercator":
$=(cm*pi*cosd(Ph)*6340/36)/(long*abs(mercatorc(Ph,Th)-mercatorc(Ph,Th+5)));
+ elseif projection="winkel":
+ $=(cm*pi*cosd(Ph)*6340/36)/(long*abs(winkelc(Ph,Th)-winkelc(Ph,Th+5)));
elseif projection="simple":
$=(cm*pi*cosd(Ph)*6340/36)/(long*abs(simplec(Ph,Th)-simplec(Ph,Th+5)));
elseif projection="cylindrique":
@@ -1229,7 +1269,7 @@ vardef Projection(expr TH,PH,Zoom)=
fi;
if maillage=true:
drawoptions(withcolor gris);
- MeridienParallele
+ MeridienParallele;
drawoptions();
fi;
if Echelle=true:
@@ -1299,6 +1339,34 @@ vardef Mercator(expr TH,PH,Zoom)=
fi;
enddef;
+vardef Winkel(expr TH,PH,Zoom)=
+ projection:="winkel";
+ theta:=TH;
+ phi:=PH;
+ zoom(Zoom);
+ Lecture("Cameriquesud.dat");
+ Lecture("Ccaraibes.dat");
+ Lecture("Cameriquecentrale.dat");
+ Lecture("Cameriquenord.dat");
+ Lecture("Casia.dat");
+ Lecture("Ceurope.dat");
+ Lecture("Cafrique.dat");
+ if lacs=true:
+ Lecturelacsp;
+ Lecturelacspsup;
+ fi;
+ Lectureilesp;
+ if capitales=true:
+ Lecturecapitalesp;
+ fi;
+ if fleuves=true:
+ Lecturerivieresp;
+ fi;
+ if maillage=true:
+ MeridienParallele;
+ fi;
+enddef;
+
vardef Cylindrique(expr TH,PH,Zoom)=
projection:="cylindrique";
theta:=TH;
diff --git a/macros/latex/contrib/profcollege/metapost/datastest/Casia.dat b/macros/latex/contrib/profcollege/metapost/datastest/Casia.dat
index c9da4fc717..a74dc0e4a4 100644
--- a/macros/latex/contrib/profcollege/metapost/datastest/Casia.dat
+++ b/macros/latex/contrib/profcollege/metapost/datastest/Casia.dat
@@ -1,5 +1,6 @@
-47
-arborescence&"russie1bis.dat",rouge
+48
+arborescence&"russie3.dat",rouge
+arborescence&"russie3bis.dat",rouge
arborescence&"coreesud.dat",jaune
arborescence&"coreenord.dat",rose
arborescence&"chine.dat",vert
diff --git a/macros/latex/contrib/profcollege/metapost/datastest/russie3.dat b/macros/latex/contrib/profcollege/metapost/datastest/russie3.dat
new file mode 100644
index 0000000000..ffdeb3882a
--- /dev/null
+++ b/macros/latex/contrib/profcollege/metapost/datastest/russie3.dat
@@ -0,0 +1,8819 @@
+8818%9282
+(2603,2401)
+(2604,2395)
+(2610,2392)
+(2614,2383)
+(2617,2381)
+(2619,2377)
+(2635,2358)
+(2642,2346)
+(2649,2338)
+(2650,2332)
+(2656,2325)
+(2660,2316)
+(2661,2300)
+(2663,2297)
+(2663,2292)
+(2665,2289)
+(2669,2287)
+(2671,2283)
+(2673,2284)
+(2674,2282)
+(2673,2280)
+(2676,2276)
+(2678,2276)
+(2680,2273)
+(2682,2272)
+(2684,2267)
+(2680,2269)
+(2678,2269)
+(2678,2265)
+(2680,2258)
+(2679,2254)
+(2680,2249)
+(2683,2246)
+(2684,2243)
+(2691,2239)
+(2692,2238)
+(2694,2239)
+(2699,2232)
+(2706,2211)
+(2706,2202)
+(2708,2197)
+(2711,2195)
+(2712,2195)
+(2712,2202)
+(2713,2205)
+(2714,2206)
+(2714,2210)
+(2716,2218)
+(2719,2218)
+(2718,2207)
+(2720,2206)
+(2721,2205)
+(2721,2206)
+(2721,2207)
+(2719,2208)
+(2720,2209)
+(2722,2211)
+(2722,2209)
+(2723,2206)
+(2720,2202)
+(2720,2200)
+(2725,2205)
+(2726,2210)
+(2720,2228)
+(2718,2226)
+(2716,2227)
+(2716,2224)
+(2715,2224)
+(2714,2225)
+(2714,2227)
+(2715,2234)
+(2716,2235)
+(2717,2239)
+(2718,2230)
+(2719,2229)
+(2720,2230)
+(2720,2242)
+(2718,2243)
+(2722,2251)
+(2720,2250)
+(2721,2253)
+(2720,2256)
+(2718,2256)
+(2718,2254)
+(2718,2257)
+(2720,2258)
+(2718,2259)
+(2719,2260)
+(2718,2264)
+(2720,2262)
+(2722,2264)
+(2724,2266)
+(2723,2263)
+(2725,2264)
+(2727,2262)
+(2727,2265)
+(2729,2261)
+(2734,2262)
+(2735,2259)
+(2736,2258)
+(2734,2257)
+(2733,2260)
+(2733,2258)
+(2731,2259)
+(2730,2258)
+(2727,2259)
+(2726,2258)
+(2725,2257)
+(2726,2255)
+(2738,2255)
+(2740,2257)
+(2739,2258)
+(2738,2257)
+(2737,2262)
+(2740,2260)
+(2744,2268)
+(2746,2270)
+(2750,2273)
+(2759,2275)
+(2762,2276)
+(2763,2281)
+(2764,2284)
+(2763,2286)
+(2761,2282)
+(2762,2284)
+(2758,2282)
+(2757,2284)
+(2756,2285)
+(2754,2284)
+(2750,2280)
+(2749,2283)
+(2751,2283)
+(2753,2285)
+(2762,2288)
+(2763,2290)
+(2767,2290)
+(2768,2294)
+(2762,2306)
+(2761,2308)
+(2762,2314)
+(2766,2314)
+(2773,2298)
+(2776,2296)
+(2781,2290)
+(2784,2285)
+(2784,2280)
+(2783,2278)
+(2782,2281)
+(2781,2280)
+(2784,2274)
+(2789,2269)
+(2800,2264)
+(2797,2271)
+(2797,2281)
+(2801,2287)
+(2801,2292)
+(2804,2296)
+(2801,2298)
+(2799,2303)
+(2798,2308)
+(2799,2315)
+(2801,2316)
+(2802,2314)
+(2804,2310)
+(2805,2305)
+(2804,2303)
+(2803,2303)
+(2805,2302)
+(2806,2304)
+(2810,2305)
+(2812,2309)
+(2810,2313)
+(2813,2327)
+(2817,2332)
+(2817,2336)
+(2820,2342)
+(2822,2345)
+(2820,2346)
+(2821,2350)
+(2820,2356)
+(2825,2358)
+(2827,2363)
+(2828,2360)
+(2825,2356)
+(2828,2356)
+(2829,2355)
+(2831,2355)
+(2832,2357)
+(2835,2356)
+(2837,2345)
+(2835,2342)
+(2835,2337)
+(2833,2336)
+(2831,2336)
+(2831,2333)
+(2830,2331)
+(2829,2325)
+(2828,2317)
+(2828,2313)
+(2827,2313)
+(2828,2309)
+(2833,2313)
+(2835,2327)
+(2837,2329)
+(2835,2327)
+(2834,2314)
+(2830,2308)
+(2828,2307)
+(2828,2298)
+(2827,2294)
+(2828,2294)
+(2831,2294)
+(2834,2296)
+(2835,2300)
+(2838,2299)
+(2838,2294)
+(2839,2294)
+(2842,2296)
+(2843,2298)
+(2845,2299)
+(2848,2298)
+(2852,2298)
+(2854,2300)
+(2857,2303)
+(2857,2308)
+(2858,2307)
+(2858,2312)
+(2859,2318)
+(2862,2321)
+(2861,2326)
+(2862,2327)
+(2865,2327)
+(2869,2328)
+(2869,2330)
+(2872,2330)
+(2872,2332)
+(2872,2337)
+(2872,2342)
+(2870,2347)
+(2871,2352)
+(2872,2357)
+(2873,2362)
+(2871,2366)
+(2872,2368)
+(2870,2372)
+(2870,2374)
+(2870,2379)
+(2870,2385)
+(2873,2387)
+(2876,2388)
+(2880,2389)
+(2883,2389)
+(2885,2393)
+(2888,2394)
+(2891,2397)
+(2893,2397)
+(2894,2401)
+(2896,2401)
+(2899,2399)
+(2898,2396)
+(2899,2391)
+(2901,2395)
+(2903,2395)
+(2906,2394)
+(2908,2391)
+(2910,2391)
+(2911,2392)
+(2915,2390)
+(2915,2386)
+(2916,2381)
+(2918,2381)
+(2921,2383)
+(2924,2383)
+(2927,2386)
+(2930,2388)
+(2934,2390)
+(2936,2387)
+(2940,2383)
+(2943,2380)
+(2944,2382)
+(2943,2387)
+(2944,2392)
+(2944,2396)
+(2945,2397)
+(2947,2399)
+(2951,2402)
+(2951,2405)
+(2954,2408)
+(2955,2412)
+(2959,2411)
+(2964,2410)
+(2967,2410)
+(2970,2413)
+(2974,2413)
+(2977,2409)
+(2977,2403)
+(2976,2398)
+(2974,2394)
+(2974,2388)
+(2977,2381)
+(2980,2378)
+(2984,2377)
+(2985,2375)
+(2986,2368)
+(2985,2361)
+(2986,2356)
+(2991,2353)
+(2993,2350)
+(2990,2346)
+(2989,2342)
+(2989,2337)
+(2992,2336)
+(2992,2331)
+(2994,2327)
+(2996,2322)
+(2999,2322)
+(2999,2321)
+(2998,2319)
+(2999,2317)
+(2998,2312)
+(3000,2308)
+(3000,2302)
+(3002,2302)
+(3005,2300)
+(3005,2298)
+(3005,2297)
+(3004,2292)
+(3003,2292)
+(2998,2293)
+(2996,2289)
+(2996,2287)
+(2995,2283)
+(2997,2281)
+(2998,2281)
+(3000,2277)
+(3003,2275)
+(3003,2272)
+(3005,2268)
+(3008,2263)
+(3011,2259)
+(3015,2258)
+(3018,2258)
+(3018,2257)
+(3020,2252)
+(3023,2248)
+(3026,2248)
+(3026,2246)
+(3026,2241)
+(3023,2237)
+(3021,2230)
+(3021,2226)
+(3021,2220)
+(3021,2216)
+(3019,2208)
+(3016,2201)
+(3014,2197)
+(3017,2194)
+(3018,2196)
+(3018,2191)
+(3020,2186)
+(3018,2179)
+(3021,2178)
+(3022,2176)
+(3025,2173)
+(3026,2171)
+(3027,2164)
+(3027,2159)
+(3026,2149)
+(3024,2148)
+(3022,2142)
+(3023,2137)
+(3027,2136)
+(3029,2132)
+(3031,2128)
+(3036,2125)
+(3036,2126)
+(3039,2125)
+(3040,2130)
+(3043,2129)
+(3047,2129)
+(3049,2125)
+(3053,2123)
+(3056,2124)
+(3057,2121)
+(3061,2120)
+(3062,2125)
+(3064,2125)
+(3064,2118)
+(3063,2117)
+(3063,2113)
+(3066,2111)
+(3069,2108)
+(3073,2108)
+(3073,2103)
+(3074,2098)
+(3072,2094)
+(3071,2089)
+(3071,2085)
+(3072,2081)
+(3075,2079)
+(3075,2078)
+(3075,2073)
+(3074,2067)
+(3076,2063)
+(3075,2058)
+(3075,2056)
+(3079,2059)
+(3083,2059)
+(3082,2057)
+(3084,2053)
+(3087,2056)
+(3091,2058)
+(3094,2056)
+(3096,2052)
+(3098,2048)
+(3101,2048)
+(3102,2055)
+(3103,2060)
+(3104,2067)
+(3106,2067)
+(3110,2066)
+(3111,2063)
+(3111,2056)
+(3115,2055)
+(3115,2053)
+(3118,2048)
+(3121,2046)
+(3125,2045)
+(3125,2047)
+(3128,2048)
+(3129,2045)
+(3131,2044)
+(3133,2040)
+(3135,2036)
+(3138,2035)
+(3138,2032)
+(3142,2029)
+(3141,2022)
+(3140,2017)
+(3138,2013)
+(3141,2011)
+(3141,2010)
+(3141,2007)
+(3142,2003)
+(3141,1998)
+(3143,1992)
+(3140,1988)
+(3138,1983)
+(3136,1979)
+(3135,1974)
+(3137,1970)
+(3135,1968)
+(3135,1962)
+(3136,1961)
+(3139,1955)
+(3139,1948)
+(3140,1942)
+(3138,1942)
+(3135,1943)
+(3131,1941)
+(3128,1942)
+(3126,1938)
+(3125,1934)
+(3123,1928)
+(3123,1923)
+(3122,1918)
+(3122,1917)
+(3125,1916)
+(3126,1914)
+(3126,1908)
+(3127,1908)
+(3131,1907)
+(3132,1903)
+(3133,1903)
+(3136,1902)
+(3136,1901)
+(3138,1897)
+(3142,1898)
+(3145,1897)
+(3148,1897)
+(3151,1896)
+(3152,1898)
+(3152,1900)
+(3154,1900)
+(3155,1895)
+(3158,1894)
+(3162,1892)
+(3164,1897)
+(3168,1895)
+(3171,1893)
+(3172,1888)
+(3177,1883)
+(3180,1879)
+(3182,1875)
+(3182,1878)
+(3182,1879)
+(3185,1881)
+(3186,1883)
+(3189,1883)
+(3192,1886)
+(3192,1888)
+(3192,1890)
+(3191,1895)
+(3193,1898)
+(3193,1901)
+(3190,1907)
+(3187,1911)
+(3187,1914)
+(3185,1918)
+(3185,1924)
+(3185,1929)
+(3186,1931)
+(3186,1934)
+(3188,1938)
+(3191,1942)
+(3191,1945)
+(3194,1949)
+(3197,1952)
+(3198,1954)
+(3200,1959)
+(3200,1964)
+(3201,1964)
+(3204,1966)
+(3208,1966)
+(3208,1959)
+(3210,1958)
+(3209,1956)
+(3211,1956)
+(3213,1951)
+(3215,1947)
+(3219,1947)
+(3219,1945)
+(3221,1950)
+(3224,1948)
+(3224,1942)
+(3226,1938)
+(3227,1933)
+(3228,1929)
+(3228,1923)
+(3228,1918)
+(3227,1912)
+(3228,1908)
+(3228,1906)
+(3229,1907)
+(3230,1907)
+(3233,1909)
+(3236,1911)
+(3239,1912)
+(3242,1914)
+(3244,1909)
+(3247,1907)
+(3247,1901)
+(3248,1900)
+(3248,1894)
+(3250,1890)
+(3252,1889)
+(3254,1884)
+(3255,1879)
+(3259,1879)
+(3262,1878)
+(3265,1877)
+(3268,1874)
+(3269,1872)
+(3270,1866)
+(3273,1868)
+(3275,1871)
+(3280,1872)
+(3280,1871)
+(3280,1865)
+(3281,1860)
+(3282,1861)
+(3284,1856)
+(3287,1851)
+(3288,1846)
+(3290,1846)
+(3293,1850)
+(3297,1852)
+(3298,1857)
+(3300,1858)
+(3302,1856)
+(3302,1861)
+(3306,1860)
+(3309,1861)
+(3310,1859)
+(3311,1859)
+(3312,1857)
+(3315,1855)
+(3317,1851)
+(3320,1850)
+(3321,1853)
+(3324,1856)
+(3327,1854)
+(3330,1857)
+(3334,1858)
+(3337,1856)
+(3338,1851)
+(3336,1846)
+(3339,1843)
+(3339,1841)
+(3342,1839)
+(3344,1837)
+(3346,1831)
+(3349,1828)
+(3349,1822)
+(3351,1817)
+(3352,1812)
+(3350,1806)
+(3351,1800)
+(3351,1794)
+(3349,1790)
+(3347,1787)
+(3347,1786)
+(3348,1785)
+(3348,1783)
+(3347,1777)
+(3343,1774)
+(3342,1769)
+(3344,1767)
+(3345,1762)
+(3347,1762)
+(3350,1764)
+(3353,1765)
+(3356,1768)
+(3358,1763)
+(3359,1756)
+(3361,1750)
+(3363,1746)
+(3362,1740)
+(3360,1735)
+(3357,1731)
+(3358,1728)
+(3359,1723)
+(3362,1722)
+(3366,1720)
+(3367,1713)
+(3365,1707)
+(3363,1702)
+(3363,1699)
+(3365,1697)
+(3368,1694)
+(3370,1689)
+(3370,1691)
+(3374,1692)
+(3379,1693)
+(3383,1690)
+(3384,1691)
+(3388,1689)
+(3391,1686)
+(3395,1688)
+(3397,1682)
+(3400,1681)
+(3403,1678)
+(3406,1676)
+(3409,1679)
+(3410,1677)
+(3410,1675)
+(3412,1671)
+(3412,1666)
+(3411,1660)
+(3412,1661)
+(3415,1661)
+(3415,1663)
+(3419,1664)
+(3422,1664)
+(3425,1665)
+(3426,1663)
+(3427,1665)
+(3430,1669)
+(3433,1671)
+(3436,1672)
+(3439,1670)
+(3441,1666)
+(3443,1661)
+(3445,1657)
+(3446,1651)
+(3448,1651)
+(3449,1653)
+(3452,1652)
+(3452,1645)
+(3453,1639)
+(3456,1642)
+(3459,1643)
+(3462,1645)
+(3463,1652)
+(3465,1652)
+(3468,1650)
+(3469,1653)
+(3470,1659)
+(3470,1665)
+(3472,1670)
+(3475,1668)
+(3475,1665)
+(3477,1661)
+(3480,1662)
+(3480,1659)
+(3481,1660)
+(3482,1659)
+(3482,1664)
+(3481,1667)
+(3479,1668)
+(3477,1674)
+(3476,1674)
+(3475,1671)
+(3474,1675)
+(3471,1677)
+(3472,1685)
+(3471,1688)
+(3475,1691)
+(3478,1688)
+(3480,1689)
+(3484,1683)
+(3487,1682)
+(3489,1678)
+(3490,1677)
+(3490,1671)
+(3491,1668)
+(3490,1665)
+(3489,1659)
+(3488,1657)
+(3490,1656)
+(3490,1655)
+(3491,1656)
+(3494,1655)
+(3494,1651)
+(3499,1652)
+(3498,1659)
+(3501,1658)
+(3508,1667)
+(3506,1666)
+(3506,1668)
+(3509,1671)
+(3514,1670)
+(3520,1666)
+(3531,1668)
+(3534,1663)
+(3537,1663)
+(3539,1664)
+(3542,1666)
+(3546,1667)
+(3549,1670)
+(3551,1673)
+(3554,1674)
+(3556,1678)
+(3557,1684)
+(3559,1691)
+(3560,1691)
+(3564,1693)
+(3566,1688)
+(3568,1683)
+(3573,1684)
+(3576,1684)
+(3582,1680)
+(3586,1681)
+(3588,1685)
+(3585,1691)
+(3581,1693)
+(3580,1702)
+(3582,1705)
+(3589,1706)
+(3591,1710)
+(3592,1712)
+(3590,1715)
+(3589,1720)
+(3587,1722)
+(3587,1724)
+(3588,1727)
+(3587,1730)
+(3589,1733)
+(3590,1739)
+(3594,1742)
+(3596,1739)
+(3596,1742)
+(3598,1743)
+(3599,1746)
+(3600,1752)
+(3596,1786)
+(3592,1802)
+(3592,1809)
+(3593,1813)
+(3597,1812)
+(3598,1815)
+(3599,1813)
+(3601,1797)
+(3605,1794)
+(3608,1793)
+(3611,1786)
+(3612,1773)
+(3610,1765)
+(3610,1750)
+(3611,1741)
+(3615,1738)
+(3619,1730)
+(3622,1729)
+(3620,1727)
+(3623,1716)
+(3626,1715)
+(3634,1706)
+(3633,1710)
+(3631,1712)
+(3627,1721)
+(3628,1723)
+(3634,1720)
+(3635,1719)
+(3636,1717)
+(3634,1716)
+(3636,1713)
+(3638,1715)
+(3637,1718)
+(3637,1721)
+(3640,1719)
+(3640,1724)
+(3643,1724)
+(3644,1720)
+(3641,1715)
+(3640,1704)
+(3637,1703)
+(3637,1699)
+(3636,1700)
+(3636,1697)
+(3634,1694)
+(3632,1693)
+(3633,1689)
+(3632,1689)
+(3632,1684)
+(3631,1683)
+(3632,1675)
+(3631,1674)
+(3634,1671)
+(3643,1686)
+(3646,1689)
+(3648,1696)
+(3652,1701)
+(3657,1711)
+(3658,1718)
+(3662,1722)
+(3666,1729)
+(3675,1753)
+(3682,1762)
+(3686,1769)
+(3689,1772)
+(3691,1779)
+(3696,1789)
+(3699,1790)
+(3704,1799)
+(3719,1820)
+(3730,1838)
+(3732,1839)
+(3738,1856)
+(3742,1859)
+(3747,1869)
+(3748,1870)
+(3750,1876)
+(3757,1879)
+(3759,1883)
+(3768,1888)
+(3775,1895)
+(3776,1892)
+(3779,1891)
+(3787,1877)
+(3793,1873)
+(3799,1858)
+(3801,1855)
+(3804,1847)
+(3809,1829)
+(3813,1824)
+(3816,1815)
+(3824,1800)
+(3825,1801)
+(3829,1816)
+(3835,1821)
+(3841,1833)
+(3845,1837)
+(3851,1833)
+(3853,1835)
+(3855,1834)
+(3855,1827)
+(3859,1823)
+(3861,1809)
+(3864,1803)
+(3868,1805)
+(3871,1803)
+(3875,1804)
+(3878,1811)
+(3880,1813)
+(3884,1807)
+(3886,1808)
+(3888,1803)
+(3888,1788)
+(3895,1779)
+(3900,1776)
+(3904,1778)
+(3907,1792)
+(3909,1789)
+(3911,1792)
+(3913,1791)
+(3913,1778)
+(3915,1776)
+(3921,1785)
+(3931,1785)
+(3934,1792)
+(3938,1783)
+(3941,1801)
+(3940,1807)
+(3943,1808)
+(3950,1806)
+(3959,1799)
+(3968,1795)
+(3979,1778)
+(3990,1773)
+(3995,1766)
+(4002,1760)
+(4010,1746)
+(4015,1745)
+(4021,1748)
+(4038,1772)
+(4051,1796)
+(4054,1799)
+(4060,1799)
+(4062,1802)
+(4069,1782)
+(4085,1761)
+(4092,1722)
+(4112,1707)
+(4124,1725)
+(4131,1729)
+(4133,1724)
+(4132,1709)
+(4134,1706)
+(4135,1707)
+(4142,1731)
+(4143,1737)
+(4142,1740)
+(4142,1747)
+(4147,1755)
+(4155,1759)
+(4159,1759)
+(4163,1781)
+(4166,1789)
+(4166,1797)
+(4170,1806)
+(4173,1808)
+(4175,1811)
+(4178,1809)
+(4178,1804)
+(4179,1804)
+(4180,1809)
+(4178,1818)
+(4173,1831)
+(4172,1848)
+(4173,1855)
+(4175,1857)
+(4181,1857)
+(4182,1854)
+(4187,1848)
+(4188,1853)
+(4185,1876)
+(4183,1884)
+(4181,1884)
+(4177,1878)
+(4181,1886)
+(4182,1887)
+(4181,1892)
+(4182,1892)
+(4181,1908)
+(4182,1908)
+(4184,1901)
+(4188,1903)
+(4190,1904)
+(4191,1909)
+(4188,1921)
+(4186,1923)
+(4187,1924)
+(4187,1926)
+(4194,1919)
+(4195,1915)
+(4198,1916)
+(4197,1925)
+(4193,1935)
+(4193,1941)
+(4191,1950)
+(4188,1950)
+(4187,1955)
+(4187,1959)
+(4188,1962)
+(4185,1986)
+(4184,1988)
+(4179,1987)
+(4177,1983)
+(4175,1972)
+(4178,1949)
+(4179,1946)
+(4178,1942)
+(4179,1930)
+(4183,1931)
+(4185,1927)
+(4180,1926)
+(4179,1918)
+(4178,1924)
+(4174,1921)
+(4176,1928)
+(4174,1937)
+(4175,1943)
+(4174,1946)
+(4172,1944)
+(4170,1950)
+(4170,1945)
+(4166,1937)
+(4166,1931)
+(4166,1937)
+(4168,1945)
+(4169,1947)
+(4169,1952)
+(4170,1953)
+(4169,1955)
+(4169,1957)
+(4170,1960)
+(4169,1972)
+(4168,1974)
+(4167,1968)
+(4165,1967)
+(4168,1974)
+(4168,1985)
+(4161,1970)
+(4158,1969)
+(4159,1972)
+(4158,1974)
+(4163,1978)
+(4164,1985)
+(4167,1999)
+(4166,2001)
+(4167,2007)
+(4165,2011)
+(4164,2010)
+(4162,2005)
+(4162,2010)
+(4161,2009)
+(4158,2002)
+(4158,1997)
+(4156,1994)
+(4156,1995)
+(4157,2004)
+(4156,2008)
+(4155,2006)
+(4154,1998)
+(4154,2004)
+(4153,2004)
+(4152,2005)
+(4153,2012)
+(4151,2011)
+(4149,2004)
+(4146,1996)
+(4145,1987)
+(4144,1982)
+(4137,1981)
+(4143,1984)
+(4146,2006)
+(4148,2007)
+(4149,2010)
+(4152,2014)
+(4159,2015)
+(4160,2023)
+(4159,2025)
+(4158,2023)
+(4159,2027)
+(4158,2032)
+(4160,2031)
+(4160,2037)
+(4159,2045)
+(4159,2061)
+(4158,2065)
+(4157,2065)
+(4156,2076)
+(4155,2080)
+(4154,2099)
+(4151,2098)
+(4153,2102)
+(4153,2106)
+(4151,2111)
+(4153,2116)
+(4156,2109)
+(4156,2120)
+(4150,2159)
+(4147,2164)
+(4148,2165)
+(4146,2175)
+(4144,2176)
+(4143,2180)
+(4141,2196)
+(4137,2205)
+(4130,2234)
+(4128,2234)
+(4127,2242)
+(4124,2247)
+(4124,2255)
+(4119,2269)
+(4113,2282)
+(4110,2284)
+(4109,2292)
+(4108,2293)
+(4106,2300)
+(4104,2304)
+(4100,2304)
+(4101,2307)
+(4097,2326)
+(4102,2310)
+(4102,2311)
+(4101,2316)
+(4103,2316)
+(4103,2317)
+(4099,2327)
+(4098,2336)
+(4097,2337)
+(4096,2336)
+(4088,2362)
+(4084,2371)
+(4082,2391)
+(4087,2387)
+(4090,2382)
+(4090,2384)
+(4090,2387)
+(4086,2396)
+(4082,2399)
+(4080,2405)
+(4077,2408)
+(4076,2416)
+(4074,2417)
+(4074,2422)
+(4071,2425)
+(4070,2419)
+(4065,2429)
+(4065,2433)
+(4068,2434)
+(4069,2440)
+(4067,2441)
+(4063,2449)
+(4064,2455)
+(4063,2460)
+(4058,2463)
+(4053,2459)
+(4052,2461)
+(4048,2460)
+(4048,2465)
+(4045,2469)
+(4035,2467)
+(4034,2468)
+(4033,2475)
+(4034,2479)
+(4032,2482)
+(4029,2480)
+(4027,2483)
+(4025,2480)
+(4021,2482)
+(4020,2480)
+(4020,2476)
+(4017,2478)
+(4010,2473)
+(4007,2468)
+(3995,2444)
+(3992,2443)
+(3990,2436)
+(3987,2434)
+(3984,2427)
+(3980,2411)
+(3977,2404)
+(3974,2391)
+(3972,2384)
+(3971,2372)
+(3968,2361)
+(3967,2355)
+(3966,2336)
+(3965,2330)
+(3963,2313)
+(3965,2278)
+(3968,2256)
+(3972,2244)
+(3975,2229)
+(3976,2218)
+(3978,2183)
+(3983,2141)
+(3983,2131)
+(3985,2123)
+(3987,2120)
+(3988,2112)
+(3992,2102)
+(3996,2093)
+(3996,2087)
+(3992,2073)
+(3992,2068)
+(3997,2061)
+(3998,2062)
+(3998,2071)
+(3999,2071)
+(3999,2069)
+(4000,2059)
+(4000,2052)
+(4001,2050)
+(4000,2049)
+(4000,2045)
+(4003,2049)
+(4006,2049)
+(4002,2046)
+(4001,2043)
+(4002,2042)
+(4001,2041)
+(4001,2036)
+(4003,2033)
+(4002,2032)
+(4002,2030)
+(4006,2026)
+(4008,2020)
+(4008,2018)
+(4010,2015)
+(4007,2015)
+(4009,2011)
+(4007,2012)
+(4005,2018)
+(4007,2011)
+(4004,2013)
+(4006,2009)
+(4004,2013)
+(4003,2012)
+(4009,1991)
+(4019,1969)
+(4023,1968)
+(4025,1978)
+(4025,1966)
+(4028,1956)
+(4028,1947)
+(4030,1942)
+(4028,1924)
+(4030,1913)
+(4029,1911)
+(4029,1915)
+(4027,1915)
+(4027,1926)
+(4027,1935)
+(4025,1941)
+(4024,1937)
+(4022,1950)
+(4018,1954)
+(4017,1952)
+(4017,1943)
+(4016,1950)
+(4014,1949)
+(4013,1945)
+(4013,1953)
+(4010,1961)
+(4008,1961)
+(4006,1975)
+(4004,1976)
+(4004,1972)
+(4004,1971)
+(4004,1966)
+(4003,1968)
+(4001,1978)
+(4001,1991)
+(3999,1999)
+(3997,1999)
+(3999,1988)
+(3996,1984)
+(3996,1973)
+(3995,1972)
+(3994,1986)
+(3996,1987)
+(3995,1993)
+(3997,1993)
+(3997,1995)
+(3995,2005)
+(3993,2007)
+(3992,2012)
+(3991,2012)
+(3991,2009)
+(3994,1990)
+(3993,1990)
+(3993,1984)
+(3992,1977)
+(3991,1977)
+(3990,1987)
+(3992,1993)
+(3991,1998)
+(3989,1999)
+(3988,2012)
+(3989,2016)
+(3989,2018)
+(3987,2015)
+(3986,2024)
+(3985,2023)
+(3984,2011)
+(3982,2019)
+(3981,2020)
+(3981,2006)
+(3979,1999)
+(3979,2010)
+(3980,2017)
+(3979,2019)
+(3978,2017)
+(3976,2033)
+(3973,2034)
+(3975,2038)
+(3975,2046)
+(3972,2050)
+(3971,2049)
+(3969,2061)
+(3965,2073)
+(3964,2074)
+(3963,2077)
+(3959,2083)
+(3957,2080)
+(3956,2083)
+(3954,2082)
+(3955,2086)
+(3954,2091)
+(3953,2092)
+(3949,2090)
+(3950,2094)
+(3946,2092)
+(3945,2094)
+(3943,2098)
+(3942,2095)
+(3948,2081)
+(3943,2081)
+(3943,2085)
+(3940,2082)
+(3940,2084)
+(3936,2087)
+(3935,2084)
+(3931,2083)
+(3929,2078)
+(3927,2081)
+(3927,2070)
+(3924,2070)
+(3925,2062)
+(3923,2063)
+(3923,2059)
+(3923,2058)
+(3923,2064)
+(3921,2068)
+(3917,2068)
+(3917,2072)
+(3915,2072)
+(3915,2078)
+(3914,2076)
+(3911,2081)
+(3910,2078)
+(3909,2080)
+(3907,2080)
+(3906,2087)
+(3903,2085)
+(3903,2088)
+(3902,2089)
+(3899,2082)
+(3898,2086)
+(3891,2097)
+(3888,2092)
+(3886,2085)
+(3885,2088)
+(3886,2090)
+(3887,2094)
+(3886,2101)
+(3883,2089)
+(3882,2090)
+(3878,2098)
+(3875,2090)
+(3873,2089)
+(3873,2085)
+(3871,2091)
+(3871,2097)
+(3867,2097)
+(3866,2106)
+(3863,2108)
+(3862,2119)
+(3860,2126)
+(3860,2135)
+(3864,2134)
+(3859,2152)
+(3855,2154)
+(3851,2160)
+(3854,2162)
+(3855,2165)
+(3849,2173)
+(3849,2177)
+(3846,2173)
+(3844,2177)
+(3841,2177)
+(3840,2187)
+(3838,2189)
+(3838,2196)
+(3835,2201)
+(3836,2206)
+(3834,2211)
+(3836,2216)
+(3834,2219)
+(3833,2230)
+(3829,2237)
+(3828,2244)
+(3829,2252)
+(3831,2255)
+(3833,2255)
+(3835,2259)
+(3834,2269)
+(3836,2280)
+(3841,2285)
+(3849,2283)
+(3854,2274)
+(3858,2281)
+(3860,2274)
+(3861,2277)
+(3862,2271)
+(3863,2268)
+(3867,2268)
+(3867,2266)
+(3866,2262)
+(3864,2260)
+(3862,2258)
+(3863,2255)
+(3863,2250)
+(3861,2241)
+(3863,2231)
+(3870,2220)
+(3883,2203)
+(3885,2193)
+(3890,2190)
+(3890,2194)
+(3892,2188)
+(3897,2186)
+(3897,2191)
+(3896,2195)
+(3895,2199)
+(3899,2210)
+(3901,2209)
+(3905,2212)
+(3910,2210)
+(3911,2211)
+(3912,2222)
+(3909,2238)
+(3908,2246)
+(3903,2263)
+(3901,2265)
+(3898,2265)
+(3893,2279)
+(3891,2284)
+(3891,2293)
+(3892,2305)
+(3888,2302)
+(3886,2304)
+(3888,2299)
+(3887,2295)
+(3887,2290)
+(3886,2283)
+(3884,2282)
+(3882,2288)
+(3879,2282)
+(3878,2283)
+(3880,2290)
+(3883,2291)
+(3885,2298)
+(3885,2301)
+(3885,2309)
+(3886,2309)
+(3888,2305)
+(3889,2308)
+(3887,2319)
+(3885,2336)
+(3874,2373)
+(3873,2385)
+(3875,2385)
+(3876,2395)
+(3877,2393)
+(3876,2387)
+(3880,2390)
+(3877,2403)
+(3873,2411)
+(3874,2421)
+(3872,2430)
+(3874,2432)
+(3884,2425)
+(3885,2425)
+(3886,2428)
+(3885,2431)
+(3886,2431)
+(3888,2427)
+(3896,2422)
+(3901,2417)
+(3903,2408)
+(3913,2397)
+(3923,2383)
+(3931,2383)
+(3934,2386)
+(3937,2391)
+(3941,2407)
+(3947,2425)
+(3958,2442)
+(3960,2460)
+(3964,2481)
+(3969,2492)
+(3970,2499)
+(3971,2499)
+(3980,2515)
+(3990,2528)
+(3992,2533)
+(3988,2555)
+(3987,2559)
+(3985,2560)
+(3984,2555)
+(3983,2553)
+(3985,2580)
+(3985,2598)
+(3980,2603)
+(3979,2614)
+(3976,2620)
+(3974,2622)
+(3972,2618)
+(3969,2607)
+(3966,2602)
+(3966,2598)
+(3962,2601)
+(3962,2607)
+(3958,2611)
+(3962,2611)
+(3964,2603)
+(3965,2603)
+(3968,2610)
+(3969,2618)
+(3971,2622)
+(3971,2631)
+(3965,2643)
+(3961,2641)
+(3952,2651)
+(3956,2651)
+(3960,2647)
+(3965,2650)
+(3971,2645)
+(3979,2647)
+(3988,2655)
+(3990,2662)
+(3997,2664)
+(4000,2674)
+(4000,2669)
+(4007,2662)
+(4008,2662)
+(4010,2669)
+(4014,2668)
+(4015,2671)
+(4016,2669)
+(4021,2664)
+(4023,2658)
+(4026,2663)
+(4025,2656)
+(4030,2650)
+(4031,2642)
+(4030,2634)
+(4032,2627)
+(4033,2625)
+(4040,2625)
+(4046,2629)
+(4060,2642)
+(4061,2645)
+(4059,2647)
+(4061,2649)
+(4062,2649)
+(4062,2644)
+(4067,2648)
+(4073,2645)
+(4073,2646)
+(4073,2652)
+(4075,2656)
+(4076,2653)
+(4075,2648)
+(4077,2648)
+(4078,2648)
+(4079,2653)
+(4079,2649)
+(4080,2649)
+(4083,2660)
+(4084,2665)
+(4083,2657)
+(4082,2651)
+(4097,2654)
+(4104,2640)
+(4108,2624)
+(4117,2599)
+(4120,2596)
+(4121,2602)
+(4121,2610)
+(4118,2618)
+(4118,2625)
+(4115,2631)
+(4112,2644)
+(4112,2652)
+(4114,2688)
+(4114,2716)
+(4108,2760)
+(4107,2761)
+(4107,2757)
+(4106,2756)
+(4099,2762)
+(4099,2766)
+(4093,2777)
+(4092,2780)
+(4093,2781)
+(4088,2792)
+(4087,2791)
+(4086,2788)
+(4086,2793)
+(4080,2794)
+(4076,2799)
+(4075,2803)
+(4069,2803)
+(4068,2800)
+(4070,2780)
+(4068,2769)
+(4066,2749)
+(4066,2737)
+(4064,2723)
+(4062,2718)
+(4061,2721)
+(4056,2720)
+(4055,2718)
+(4055,2709)
+(4049,2697)
+(4041,2695)
+(4037,2708)
+(4030,2736)
+(4025,2739)
+(4018,2747)
+(4014,2749)
+(4011,2759)
+(4009,2762)
+(4012,2794)
+(4010,2796)
+(4009,2792)
+(4007,2789)
+(4004,2783)
+(4006,2790)
+(4009,2795)
+(4010,2815)
+(4011,2817)
+(4011,2823)
+(4015,2844)
+(4014,2854)
+(4012,2854)
+(4013,2856)
+(4016,2855)
+(4019,2862)
+(4022,2865)
+(4027,2865)
+(4031,2861)
+(4034,2867)
+(4040,2866)
+(4046,2877)
+(4048,2876)
+(4054,2869)
+(4055,2870)
+(4059,2880)
+(4058,2886)
+(4056,2884)
+(4055,2886)
+(4061,2895)
+(4061,2901)
+(4060,2906)
+(4060,2912)
+(4062,2918)
+(4063,2921)
+(4062,2924)
+(4061,2923)
+(4061,2929)
+(4062,2931)
+(4060,2939)
+(4059,2938)
+(4058,2940)
+(4058,2946)
+(4059,2943)
+(4060,2943)
+(4063,2933)
+(4064,2926)
+(4066,2928)
+(4070,2928)
+(4076,2915)
+(4076,2920)
+(4072,2928)
+(4071,2937)
+(4072,2954)
+(4079,2979)
+(4085,3001)
+(4083,2999)
+(4081,2991)
+(4082,2998)
+(4084,3002)
+(4087,3004)
+(4096,3035)
+(4102,3047)
+(4101,3050)
+(4100,3053)
+(4101,3065)
+(4103,3068)
+(4103,3077)
+(4106,3086)
+(4105,3090)
+(4106,3094)
+(4107,3095)
+(4107,3092)
+(4109,3095)
+(4109,3107)
+(4112,3123)
+(4115,3132)
+(4112,3131)
+(4110,3123)
+(4109,3123)
+(4110,3131)
+(4109,3141)
+(4108,3141)
+(4108,3137)
+(4105,3137)
+(4103,3128)
+(4098,3136)
+(4100,3139)
+(4101,3147)
+(4104,3154)
+(4105,3160)
+(4108,3164)
+(4109,3163)
+(4112,3155)
+(4115,3149)
+(4117,3150)
+(4117,3157)
+(4119,3158)
+(4118,3151)
+(4117,3147)
+(4115,3144)
+(4116,3137)
+(4132,3193)
+(4135,3208)
+(4138,3230)
+(4141,3266)
+(4140,3274)
+(4138,3271)
+(4139,3267)
+(4137,3260)
+(4136,3238)
+(4136,3225)
+(4134,3216)
+(4133,3216)
+(4131,3221)
+(4131,3224)
+(4133,3221)
+(4133,3223)
+(4131,3241)
+(4129,3239)
+(4128,3231)
+(4125,3229)
+(4122,3230)
+(4119,3223)
+(4116,3225)
+(4110,3234)
+(4104,3237)
+(4103,3231)
+(4101,3229)
+(4100,3228)
+(4104,3221)
+(4104,3217)
+(4104,3215)
+(4101,3221)
+(4100,3220)
+(4101,3215)
+(4102,3206)
+(4101,3203)
+(4100,3202)
+(4101,3200)
+(4096,3192)
+(4095,3195)
+(4094,3200)
+(4095,3208)
+(4095,3222)
+(4094,3230)
+(4093,3232)
+(4093,3240)
+(4095,3246)
+(4099,3252)
+(4095,3250)
+(4092,3252)
+(4092,3254)
+(4098,3268)
+(4098,3271)
+(4098,3273)
+(4091,3279)
+(4090,3289)
+(4095,3296)
+(4097,3295)
+(4099,3291)
+(4100,3295)
+(4104,3296)
+(4106,3300)
+(4106,3304)
+(4108,3306)
+(4110,3312)
+(4111,3314)
+(4113,3319)
+(4114,3328)
+(4114,3335)
+(4114,3341)
+(4116,3350)
+(4120,3358)
+(4118,3368)
+(4116,3380)
+(4118,3391)
+(4117,3392)
+(4115,3390)
+(4118,3394)
+(4118,3398)
+(4114,3412)
+(4112,3425)
+(4113,3437)
+(4115,3444)
+(4119,3447)
+(4121,3452)
+(4124,3455)
+(4125,3475)
+(4127,3479)
+(4129,3477)
+(4131,3478)
+(4133,3494)
+(4132,3495)
+(4130,3492)
+(4127,3495)
+(4125,3502)
+(4124,3500)
+(4124,3505)
+(4126,3506)
+(4127,3497)
+(4130,3495)
+(4134,3497)
+(4137,3511)
+(4140,3536)
+(4140,3554)
+(4139,3554)
+(4138,3541)
+(4136,3533)
+(4134,3546)
+(4126,3565)
+(4125,3566)
+(4122,3564)
+(4123,3556)
+(4122,3551)
+(4118,3547)
+(4117,3544)
+(4114,3544)
+(4112,3547)
+(4109,3545)
+(4105,3544)
+(4104,3548)
+(4103,3562)
+(4100,3579)
+(4102,3590)
+(4108,3598)
+(4116,3592)
+(4118,3586)
+(4121,3589)
+(4123,3594)
+(4123,3597)
+(4122,3600)
+(4121,3605)
+(4123,3628)
+(4125,3636)
+(4134,3650)
+(4134,3658)
+(4135,3655)
+(4140,3657)
+(4145,3656)
+(4148,3653)
+(4150,3644)
+(4147,3644)
+(4147,3638)
+(4148,3635)
+(4153,3636)
+(4159,3633)
+(4168,3618)
+(4171,3613)
+(4173,3613)
+(4174,3608)
+(4178,3609)
+(4180,3617)
+(4180,3630)
+(4180,3640)
+(4183,3638)
+(4184,3643)
+(4189,3642)
+(4191,3646)
+(4192,3652)
+(4191,3663)
+(4192,3666)
+(4190,3669)
+(4190,3676)
+(4188,3684)
+(4186,3695)
+(4187,3704)
+(4185,3721)
+(4185,3750)
+(4182,3785)
+(4180,3805)
+(4171,3857)
+(4159,3899)
+(4157,3900)
+(4157,3896)
+(4158,3892)
+(4155,3887)
+(4153,3888)
+(4150,3886)
+(4149,3888)
+(4152,3897)
+(4155,3895)
+(4156,3903)
+(4151,3923)
+(4148,3952)
+(4146,3954)
+(4146,3946)
+(4147,3944)
+(4148,3939)
+(4145,3941)
+(4142,3966)
+(4140,3975)
+(4137,3981)
+(4134,3995)
+(4133,4013)
+(4131,4027)
+(4128,4022)
+(4125,4029)
+(4122,4032)
+(4121,4040)
+(4115,4058)
+(4110,4068)
+(4111,4062)
+(4109,4067)
+(4108,4074)
+(4105,4090)
+(4100,4095)
+(4098,4094)
+(4094,4091)
+(4094,4096)
+(4091,4097)
+(4093,4103)
+(4093,4106)
+(4099,4114)
+(4099,4119)
+(4100,4114)
+(4102,4114)
+(4116,4134)
+(4128,4141)
+(4130,4146)
+(4132,4147)
+(4132,4139)
+(4134,4137)
+(4135,4147)
+(4135,4148)
+(4136,4144)
+(4137,4153)
+(4136,4142)
+(4138,4141)
+(4135,4127)
+(4135,4119)
+(4139,4108)
+(4145,4101)
+(4157,4083)
+(4161,4082)
+(4163,4087)
+(4173,4086)
+(4173,4084)
+(4171,4080)
+(4169,4082)
+(4169,4077)
+(4171,4067)
+(4175,4058)
+(4177,4050)
+(4177,4041)
+(4181,4025)
+(4182,4019)
+(4179,4020)
+(4179,4019)
+(4178,4011)
+(4174,4015)
+(4171,4016)
+(4174,4008)
+(4185,4006)
+(4200,4012)
+(4202,4015)
+(4203,4019)
+(4201,4020)
+(4199,4018)
+(4197,4021)
+(4199,4031)
+(4201,4035)
+(4206,4040)
+(4206,4037)
+(4209,4038)
+(4211,4035)
+(4208,4034)
+(4213,4025)
+(4223,4032)
+(4225,4036)
+(4227,4035)
+(4228,4038)
+(4232,4033)
+(4245,4040)
+(4249,4036)
+(4250,4026)
+(4248,4020)
+(4247,4007)
+(4246,4001)
+(4253,3997)
+(4257,4006)
+(4260,4010)
+(4263,4010)
+(4265,4014)
+(4266,4009)
+(4264,4009)
+(4263,4005)
+(4261,4006)
+(4260,4001)
+(4261,3997)
+(4263,3997)
+(4270,4009)
+(4278,4015)
+(4278,4025)
+(4285,4055)
+(4286,4055)
+(4290,4071)
+(4291,4077)
+(4300,4093)
+(4301,4097)
+(4300,4101)
+(4303,4098)
+(4309,4108)
+(4315,4113)
+(4319,4114)
+(4322,4119)
+(4334,4124)
+(4339,4127)
+(4339,4129)
+(4347,4131)
+(4349,4135)
+(4352,4132)
+(4359,4138)
+(4359,4143)
+(4360,4139)
+(4363,4141)
+(4368,4154)
+(4376,4159)
+(4378,4162)
+(4378,4172)
+(4378,4185)
+(4377,4188)
+(4376,4187)
+(4375,4174)
+(4373,4173)
+(4373,4176)
+(4374,4218)
+(4373,4245)
+(4374,4259)
+(4374,4274)
+(4375,4292)
+(4372,4306)
+(4370,4320)
+(4369,4317)
+(4369,4310)
+(4368,4313)
+(4370,4326)
+(4362,4370)
+(4362,4363)
+(4360,4364)
+(4359,4369)
+(4356,4363)
+(4353,4366)
+(4351,4371)
+(4349,4368)
+(4344,4368)
+(4337,4373)
+(4332,4364)
+(4327,4363)
+(4322,4354)
+(4315,4351)
+(4311,4340)
+(4309,4339)
+(4303,4342)
+(4301,4334)
+(4296,4332)
+(4294,4324)
+(4294,4321)
+(4295,4317)
+(4291,4309)
+(4288,4308)
+(4278,4323)
+(4272,4341)
+(4269,4355)
+(4268,4358)
+(4265,4361)
+(4261,4357)
+(4252,4370)
+(4242,4366)
+(4237,4361)
+(4232,4366)
+(4225,4367)
+(4224,4361)
+(4221,4352)
+(4216,4345)
+(4211,4357)
+(4205,4354)
+(4203,4349)
+(4199,4352)
+(4194,4359)
+(4191,4361)
+(4185,4359)
+(4181,4353)
+(4180,4354)
+(4179,4350)
+(4171,4357)
+(4166,4358)
+(4165,4355)
+(4165,4349)
+(4163,4354)
+(4157,4359)
+(4153,4351)
+(4151,4349)
+(4139,4353)
+(4133,4358)
+(4131,4363)
+(4115,4411)
+(4109,4419)
+(4107,4419)
+(4106,4416)
+(4109,4416)
+(4107,4408)
+(4102,4405)
+(4093,4386)
+(4090,4388)
+(4085,4384)
+(4077,4392)
+(4071,4392)
+(4069,4384)
+(4063,4389)
+(4061,4387)
+(4063,4383)
+(4061,4377)
+(4061,4373)
+(4059,4373)
+(4058,4371)
+(4057,4357)
+(4056,4353)
+(4051,4353)
+(4048,4344)
+(4044,4347)
+(4039,4344)
+(4038,4336)
+(4040,4331)
+(4038,4328)
+(4038,4322)
+(4036,4322)
+(4034,4332)
+(4030,4334)
+(4029,4330)
+(4032,4327)
+(4029,4328)
+(4028,4315)
+(4027,4321)
+(4025,4319)
+(4024,4321)
+(4022,4316)
+(4019,4312)
+(4018,4308)
+(4015,4305)
+(4015,4303)
+(4017,4298)
+(4016,4295)
+(4015,4292)
+(4017,4286)
+(4018,4282)
+(4017,4279)
+(4016,4280)
+(4015,4287)
+(4014,4283)
+(4012,4291)
+(4010,4289)
+(4007,4293)
+(4006,4291)
+(4003,4296)
+(3999,4294)
+(3998,4282)
+(4001,4282)
+(3999,4280)
+(3998,4276)
+(3999,4270)
+(3997,4274)
+(3998,4264)
+(3996,4263)
+(3995,4267)
+(3994,4262)
+(3995,4257)
+(3993,4259)
+(3992,4259)
+(3990,4243)
+(3995,4220)
+(3997,4217)
+(3999,4219)
+(3999,4224)
+(4001,4228)
+(4001,4236)
+(4003,4238)
+(4003,4241)
+(4004,4244)
+(4005,4244)
+(4005,4234)
+(4004,4232)
+(4004,4237)
+(4003,4228)
+(4002,4233)
+(4001,4219)
+(4003,4209)
+(4004,4211)
+(4005,4205)
+(4008,4199)
+(4011,4197)
+(4012,4194)
+(4011,4193)
+(4010,4194)
+(4009,4187)
+(4009,4182)
+(4010,4175)
+(4009,4174)
+(4008,4178)
+(4007,4176)
+(4010,4164)
+(4009,4159)
+(4010,4150)
+(4008,4138)
+(4007,4140)
+(4007,4145)
+(4006,4147)
+(3996,4147)
+(3990,4163)
+(3988,4185)
+(3985,4194)
+(3980,4223)
+(3982,4253)
+(3982,4279)
+(3979,4301)
+(3978,4305)
+(3974,4309)
+(3974,4311)
+(3975,4316)
+(3973,4320)
+(3974,4322)
+(3974,4324)
+(3977,4334)
+(3978,4341)
+(3983,4344)
+(3988,4342)
+(3990,4345)
+(3991,4343)
+(3990,4337)
+(3993,4347)
+(3996,4348)
+(3999,4377)
+(4004,4380)
+(4005,4386)
+(4007,4392)
+(4010,4411)
+(4016,4418)
+(4019,4431)
+(4023,4432)
+(4024,4435)
+(4027,4434)
+(4033,4437)
+(4038,4435)
+(4045,4445)
+(4061,4484)
+(4076,4489)
+(4089,4484)
+(4094,4477)
+(4102,4460)
+(4110,4468)
+(4117,4465)
+(4123,4469)
+(4127,4480)
+(4134,4528)
+(4134,4537)
+(4136,4550)
+(4138,4567)
+(4139,4580)
+(4139,4593)
+(4138,4596)
+(4132,4602)
+(4128,4597)
+(4126,4598)
+(4119,4621)
+(4114,4626)
+(4115,4629)
+(4116,4626)
+(4116,4630)
+(4111,4639)
+(4107,4635)
+(4103,4638)
+(4098,4630)
+(4096,4631)
+(4094,4642)
+(4089,4638)
+(4086,4633)
+(4083,4635)
+(4079,4631)
+(4074,4638)
+(4070,4634)
+(4069,4630)
+(4071,4629)
+(4070,4625)
+(4067,4626)
+(4057,4660)
+(4054,4661)
+(4053,4661)
+(4054,4671)
+(4053,4674)
+(4054,4677)
+(4053,4679)
+(4052,4683)
+(4055,4695)
+(4053,4700)
+(4053,4709)
+(4055,4715)
+(4055,4720)
+(4055,4723)
+(4054,4732)
+(4053,4737)
+(4054,4743)
+(4056,4738)
+(4057,4730)
+(4058,4728)
+(4059,4732)
+(4059,4727)
+(4059,4723)
+(4057,4720)
+(4056,4715)
+(4057,4710)
+(4058,4708)
+(4058,4715)
+(4060,4717)
+(4060,4712)
+(4059,4710)
+(4062,4706)
+(4058,4704)
+(4060,4699)
+(4059,4694)
+(4060,4691)
+(4059,4688)
+(4061,4683)
+(4062,4679)
+(4061,4672)
+(4062,4672)
+(4063,4677)
+(4064,4670)
+(4066,4668)
+(4067,4666)
+(4064,4665)
+(4063,4659)
+(4064,4652)
+(4066,4648)
+(4074,4648)
+(4075,4649)
+(4076,4655)
+(4076,4651)
+(4079,4648)
+(4082,4651)
+(4085,4650)
+(4089,4654)
+(4093,4664)
+(4095,4689)
+(4096,4690)
+(4099,4685)
+(4101,4685)
+(4103,4678)
+(4107,4674)
+(4109,4677)
+(4111,4676)
+(4112,4673)
+(4111,4668)
+(4111,4666)
+(4114,4666)
+(4117,4663)
+(4121,4665)
+(4132,4662)
+(4134,4658)
+(4136,4644)
+(4139,4633)
+(4141,4615)
+(4146,4607)
+(4149,4598)
+(4148,4592)
+(4149,4582)
+(4154,4562)
+(4154,4546)
+(4156,4534)
+(4155,4529)
+(4151,4513)
+(4148,4506)
+(4146,4509)
+(4145,4485)
+(4148,4470)
+(4148,4451)
+(4144,4437)
+(4148,4428)
+(4150,4425)
+(4152,4425)
+(4161,4433)
+(4166,4434)
+(4173,4426)
+(4182,4413)
+(4185,4411)
+(4189,4418)
+(4197,4422)
+(4201,4422)
+(4205,4426)
+(4209,4421)
+(4218,4440)
+(4222,4444)
+(4225,4450)
+(4232,4460)
+(4241,4458)
+(4251,4436)
+(4258,4434)
+(4263,4424)
+(4276,4412)
+(4280,4400)
+(4285,4381)
+(4300,4410)
+(4303,4412)
+(4306,4408)
+(4309,4412)
+(4314,4432)
+(4316,4447)
+(4317,4455)
+(4318,4459)
+(4317,4461)
+(4327,4497)
+(4335,4506)
+(4343,4507)
+(4355,4504)
+(4362,4497)
+(4369,4484)
+(4373,4500)
+(4372,4505)
+(4370,4512)
+(4369,4520)
+(4365,4531)
+(4364,4532)
+(4362,4527)
+(4363,4524)
+(4361,4520)
+(4361,4525)
+(4358,4530)
+(4353,4543)
+(4352,4541)
+(4352,4534)
+(4349,4533)
+(4340,4541)
+(4339,4540)
+(4338,4546)
+(4336,4545)
+(4333,4536)
+(4329,4531)
+(4325,4532)
+(4322,4525)
+(4319,4526)
+(4317,4516)
+(4314,4517)
+(4310,4513)
+(4307,4513)
+(4304,4516)
+(4300,4530)
+(4298,4530)
+(4297,4523)
+(4294,4530)
+(4292,4532)
+(4290,4525)
+(4287,4526)
+(4288,4517)
+(4287,4514)
+(4282,4516)
+(4278,4527)
+(4274,4562)
+(4271,4567)
+(4274,4569)
+(4272,4583)
+(4273,4598)
+(4271,4614)
+(4269,4613)
+(4264,4615)
+(4267,4618)
+(4269,4616)
+(4271,4622)
+(4269,4661)
+(4266,4672)
+(4261,4673)
+(4258,4677)
+(4257,4683)
+(4256,4696)
+(4253,4704)
+(4253,4707)
+(4255,4713)
+(4255,4732)
+(4256,4734)
+(4256,4737)
+(4255,4737)
+(4256,4742)
+(4257,4744)
+(4258,4741)
+(4259,4745)
+(4261,4746)
+(4261,4742)
+(4259,4738)
+(4260,4730)
+(4259,4727)
+(4259,4734)
+(4256,4728)
+(4256,4723)
+(4258,4715)
+(4255,4706)
+(4260,4709)
+(4261,4708)
+(4263,4713)
+(4264,4710)
+(4266,4711)
+(4267,4707)
+(4266,4701)
+(4263,4710)
+(4262,4707)
+(4266,4695)
+(4267,4694)
+(4273,4699)
+(4275,4697)
+(4277,4682)
+(4275,4676)
+(4279,4674)
+(4281,4680)
+(4282,4680)
+(4281,4672)
+(4280,4672)
+(4279,4664)
+(4277,4665)
+(4277,4663)
+(4280,4647)
+(4278,4651)
+(4282,4632)
+(4285,4627)
+(4285,4620)
+(4288,4604)
+(4292,4593)
+(4294,4579)
+(4295,4575)
+(4298,4576)
+(4315,4560)
+(4320,4583)
+(4323,4614)
+(4315,4642)
+(4312,4646)
+(4310,4651)
+(4309,4662)
+(4313,4686)
+(4314,4690)
+(4318,4694)
+(4326,4681)
+(4327,4677)
+(4327,4668)
+(4324,4649)
+(4325,4643)
+(4327,4643)
+(4330,4649)
+(4333,4648)
+(4333,4651)
+(4331,4660)
+(4333,4665)
+(4339,4674)
+(4340,4684)
+(4343,4688)
+(4342,4696)
+(4343,4699)
+(4344,4706)
+(4343,4710)
+(4344,4711)
+(4342,4731)
+(4343,4758)
+(4342,4769)
+(4335,4788)
+(4331,4807)
+(4325,4850)
+(4322,4851)
+(4321,4849)
+(4322,4844)
+(4325,4847)
+(4324,4840)
+(4322,4838)
+(4311,4875)
+(4306,4878)
+(4303,4898)
+(4302,4900)
+(4302,4928)
+(4307,4969)
+(4306,4975)
+(4304,4979)
+(4304,4992)
+(4303,4996)
+(4301,4999)
+(4299,4998)
+(4294,4990)
+(4293,4981)
+(4287,4979)
+(4284,4982)
+(4282,4962)
+(4278,4942)
+(4276,4935)
+(4265,4941)
+(4260,4932)
+(4255,4938)
+(4250,4939)
+(4246,4945)
+(4241,4933)
+(4237,4932)
+(4234,4925)
+(4230,4929)
+(4217,4934)
+(4212,4941)
+(4224,4935)
+(4230,4934)
+(4235,4930)
+(4236,4948)
+(4241,4946)
+(4242,4949)
+(4245,4950)
+(4246,4954)
+(4248,4949)
+(4251,4955)
+(4254,4955)
+(4257,4961)
+(4258,4965)
+(4257,4966)
+(4257,4971)
+(4255,4972)
+(4260,4973)
+(4260,4974)
+(4255,4980)
+(4254,4986)
+(4252,4989)
+(4246,4988)
+(4240,4983)
+(4236,4984)
+(4234,4980)
+(4230,4983)
+(4225,4980)
+(4223,4974)
+(4215,4959)
+(4212,4960)
+(4210,4958)
+(4208,4969)
+(4205,4973)
+(4204,4984)
+(4205,4990)
+(4207,4992)
+(4212,4988)
+(4214,4983)
+(4219,4977)
+(4220,4981)
+(4219,4991)
+(4219,5000)
+(4220,5011)
+(4228,5026)
+(4230,5024)
+(4233,5026)
+(4242,5016)
+(4246,5016)
+(4248,5012)
+(4255,5009)
+(4258,5003)
+(4261,5004)
+(4263,5000)
+(4264,4990)
+(4267,4987)
+(4266,4994)
+(4267,4996)
+(4275,4989)
+(4277,4997)
+(4281,5002)
+(4288,5003)
+(4289,5011)
+(4291,5015)
+(4294,5018)
+(4297,5018)
+(4305,5005)
+(4308,5005)
+(4310,5003)
+(4312,4991)
+(4314,4968)
+(4312,4960)
+(4317,4957)
+(4320,4950)
+(4325,4931)
+(4328,4938)
+(4334,4937)
+(4337,4932)
+(4336,4927)
+(4340,4903)
+(4341,4870)
+(4348,4851)
+(4352,4843)
+(4353,4843)
+(4354,4847)
+(4357,4850)
+(4359,4841)
+(4364,4838)
+(4367,4845)
+(4371,4848)
+(4378,4849)
+(4384,4841)
+(4386,4826)
+(4387,4835)
+(4388,4834)
+(4390,4820)
+(4390,4814)
+(4392,4819)
+(4392,4829)
+(4393,4834)
+(4396,4833)
+(4397,4827)
+(4397,4820)
+(4399,4815)
+(4403,4821)
+(4403,4823)
+(4402,4825)
+(4405,4829)
+(4406,4835)
+(4410,4841)
+(4411,4838)
+(4409,4831)
+(4414,4831)
+(4415,4843)
+(4414,4851)
+(4415,4855)
+(4416,4875)
+(4417,4879)
+(4419,4891)
+(4419,4930)
+(4420,4949)
+(4419,5004)
+(4422,5025)
+(4422,5061)
+(4425,5075)
+(4426,5087)
+(4424,5094)
+(4423,5101)
+(4422,5100)
+(4423,5106)
+(4422,5113)
+(4423,5129)
+(4426,5128)
+(4429,5135)
+(4429,5152)
+(4432,5161)
+(4431,5175)
+(4433,5184)
+(4433,5200)
+(4434,5207)
+(4431,5226)
+(4427,5222)
+(4425,5211)
+(4423,5205)
+(4420,5197)
+(4420,5191)
+(4417,5181)
+(4415,5167)
+(4412,5159)
+(4410,5150)
+(4408,5147)
+(4400,5150)
+(4396,5173)
+(4391,5179)
+(4389,5191)
+(4387,5200)
+(4379,5207)
+(4384,5206)
+(4390,5198)
+(4391,5187)
+(4395,5180)
+(4399,5158)
+(4400,5153)
+(4408,5151)
+(4414,5173)
+(4414,5199)
+(4416,5212)
+(4416,5226)
+(4417,5231)
+(4422,5241)
+(4421,5235)
+(4424,5238)
+(4430,5258)
+(4434,5260)
+(4435,5252)
+(4430,5250)
+(4429,5246)
+(4430,5239)
+(4432,5232)
+(4436,5228)
+(4442,5216)
+(4443,5218)
+(4443,5232)
+(4440,5244)
+(4441,5245)
+(4443,5242)
+(4444,5211)
+(4446,5212)
+(4448,5203)
+(4451,5208)
+(4452,5206)
+(4455,5194)
+(4456,5164)
+(4457,5157)
+(4459,5158)
+(4461,5154)
+(4462,5158)
+(4462,5167)
+(4459,5175)
+(4459,5178)
+(4463,5176)
+(4464,5164)
+(4465,5164)
+(4465,5173)
+(4465,5175)
+(4467,5179)
+(4466,5183)
+(4467,5189)
+(4466,5195)
+(4464,5198)
+(4463,5196)
+(4463,5204)
+(4462,5208)
+(4463,5209)
+(4463,5217)
+(4461,5214)
+(4459,5202)
+(4458,5211)
+(4460,5214)
+(4460,5218)
+(4457,5218)
+(4456,5220)
+(4458,5223)
+(4461,5220)
+(4462,5221)
+(4461,5236)
+(4464,5224)
+(4466,5225)
+(4465,5207)
+(4468,5201)
+(4470,5193)
+(4472,5196)
+(4473,5207)
+(4474,5190)
+(4476,5179)
+(4477,5167)
+(4476,5157)
+(4478,5151)
+(4478,5145)
+(4480,5152)
+(4482,5150)
+(4483,5152)
+(4483,5164)
+(4486,5167)
+(4489,5162)
+(4489,5166)
+(4488,5169)
+(4489,5172)
+(4486,5183)
+(4485,5180)
+(4486,5173)
+(4482,5180)
+(4483,5191)
+(4482,5193)
+(4482,5198)
+(4480,5196)
+(4479,5201)
+(4477,5202)
+(4477,5211)
+(4476,5218)
+(4479,5214)
+(4481,5217)
+(4481,5206)
+(4482,5206)
+(4485,5212)
+(4485,5219)
+(4483,5221)
+(4483,5224)
+(4491,5224)
+(4496,5243)
+(4497,5242)
+(4497,5235)
+(4499,5231)
+(4500,5246)
+(4498,5249)
+(4497,5246)
+(4496,5253)
+(4496,5256)
+(4498,5254)
+(4499,5261)
+(4500,5261)
+(4501,5267)
+(4502,5266)
+(4502,5243)
+(4504,5235)
+(4505,5224)
+(4504,5215)
+(4507,5215)
+(4509,5220)
+(4510,5237)
+(4506,5279)
+(4508,5284)
+(4508,5288)
+(4510,5298)
+(4514,5299)
+(4515,5304)
+(4517,5311)
+(4516,5318)
+(4519,5313)
+(4520,5316)
+(4521,5327)
+(4522,5329)
+(4522,5326)
+(4524,5332)
+(4524,5345)
+(4526,5339)
+(4524,5324)
+(4527,5348)
+(4530,5355)
+(4528,5359)
+(4528,5364)
+(4526,5363)
+(4526,5383)
+(4528,5377)
+(4529,5377)
+(4531,5393)
+(4531,5403)
+(4532,5402)
+(4533,5395)
+(4535,5403)
+(4537,5438)
+(4538,5441)
+(4540,5454)
+(4538,5455)
+(4537,5459)
+(4540,5470)
+(4538,5471)
+(4538,5474)
+(4538,5497)
+(4542,5498)
+(4544,5503)
+(4543,5507)
+(4543,5523)
+(4545,5531)
+(4545,5544)
+(4546,5550)
+(4550,5601)
+(4555,5644)
+(4557,5650)
+(4557,5648)
+(4556,5644)
+(4554,5620)
+(4557,5613)
+(4555,5606)
+(4553,5609)
+(4552,5605)
+(4557,5596)
+(4558,5599)
+(4559,5597)
+(4556,5578)
+(4554,5586)
+(4554,5585)
+(4554,5573)
+(4555,5574)
+(4558,5570)
+(4559,5575)
+(4563,5575)
+(4564,5581)
+(4562,5586)
+(4561,5587)
+(4562,5592)
+(4564,5593)
+(4565,5587)
+(4566,5589)
+(4565,5595)
+(4566,5606)
+(4564,5600)
+(4562,5605)
+(4561,5605)
+(4563,5613)
+(4562,5618)
+(4563,5622)
+(4562,5625)
+(4563,5640)
+(4564,5637)
+(4566,5620)
+(4567,5620)
+(4567,5638)
+(4567,5646)
+(4566,5652)
+(4567,5663)
+(4563,5668)
+(4564,5676)
+(4566,5676)
+(4567,5684)
+(4569,5680)
+(4569,5674)
+(4569,5673)
+(4569,5686)
+(4567,5694)
+(4566,5703)
+(4567,5705)
+(4567,5716)
+(4568,5719)
+(4569,5725)
+(4568,5749)
+(4566,5769)
+(4565,5772)
+(4564,5760)
+(4563,5765)
+(4562,5759)
+(4559,5760)
+(4559,5753)
+(4554,5743)
+(4553,5734)
+(4551,5745)
+(4555,5749)
+(4557,5756)
+(4557,5778)
+(4558,5780)
+(4559,5776)
+(4561,5791)
+(4560,5793)
+(4559,5790)
+(4559,5797)
+(4558,5800)
+(4552,5787)
+(4553,5796)
+(4554,5800)
+(4553,5810)
+(4555,5810)
+(4556,5816)
+(4559,5823)
+(4562,5833)
+(4563,5842)
+(4559,5831)
+(4557,5835)
+(4556,5831)
+(4556,5840)
+(4558,5838)
+(4559,5841)
+(4560,5853)
+(4559,5869)
+(4560,5870)
+(4563,5863)
+(4563,5853)
+(4565,5860)
+(4566,5866)
+(4563,5874)
+(4565,5889)
+(4566,5893)
+(4566,5881)
+(4567,5876)
+(4569,5881)
+(4569,5884)
+(4568,5886)
+(4570,5889)
+(4570,5902)
+(4576,5928)
+(4572,5923)
+(4572,5931)
+(4573,5935)
+(4573,5942)
+(4572,5949)
+(4573,5957)
+(4572,5958)
+(4570,5952)
+(4570,5954)
+(4570,5945)
+(4568,5949)
+(4568,5954)
+(4569,5974)
+(4567,5976)
+(4566,5968)
+(4565,5975)
+(4564,5974)
+(4565,5978)
+(4563,5986)
+(4558,5981)
+(4551,5980)
+(4549,5972)
+(4546,5954)
+(4543,5956)
+(4540,5949)
+(4533,5946)
+(4528,5975)
+(4528,5985)
+(4525,5982)
+(4522,5986)
+(4518,6001)
+(4514,6002)
+(4511,6010)
+(4510,6011)
+(4512,6012)
+(4514,6005)
+(4517,6005)
+(4522,5988)
+(4528,5989)
+(4529,5976)
+(4532,5963)
+(4533,5954)
+(4534,5951)
+(4541,5955)
+(4542,5961)
+(4545,5957)
+(4546,5961)
+(4546,5975)
+(4551,5982)
+(4554,5993)
+(4557,5995)
+(4561,5989)
+(4565,5993)
+(4569,5988)
+(4572,5978)
+(4576,5976)
+(4577,5964)
+(4581,5956)
+(4581,5942)
+(4584,5941)
+(4588,5930)
+(4590,5929)
+(4591,5935)
+(4588,5966)
+(4589,6014)
+(4588,6018)
+(4590,6039)
+(4592,6051)
+(4589,6063)
+(4587,6061)
+(4588,6075)
+(4589,6079)
+(4587,6089)
+(4587,6102)
+(4584,6113)
+(4583,6135)
+(4584,6131)
+(4585,6119)
+(4588,6107)
+(4588,6094)
+(4590,6085)
+(4591,6062)
+(4593,6053)
+(4595,6064)
+(4604,6068)
+(4605,6074)
+(4606,6071)
+(4607,6060)
+(4610,6052)
+(4618,6055)
+(4619,6057)
+(4619,6073)
+(4623,6074)
+(4624,6070)
+(4626,6072)
+(4630,6087)
+(4634,6097)
+(4637,6111)
+(4643,6124)
+(4644,6129)
+(4643,6133)
+(4643,6137)
+(4650,6153)
+(4653,6175)
+(4655,6174)
+(4658,6183)
+(4659,6196)
+(4657,6201)
+(4658,6219)
+(4664,6244)
+(4664,6258)
+(4663,6260)
+(4662,6256)
+(4661,6256)
+(4660,6262)
+(4662,6277)
+(4662,6285)
+(4658,6288)
+(4655,6295)
+(4654,6314)
+(4652,6323)
+(4654,6339)
+(4654,6352)
+(4652,6350)
+(4651,6354)
+(4648,6355)
+(4645,6360)
+(4644,6367)
+(4642,6378)
+(4641,6371)
+(4642,6363)
+(4642,6344)
+(4640,6344)
+(4638,6337)
+(4637,6327)
+(4635,6331)
+(4634,6318)
+(4632,6316)
+(4630,6297)
+(4630,6292)
+(4630,6283)
+(4628,6271)
+(4628,6262)
+(4625,6247)
+(4625,6262)
+(4626,6282)
+(4627,6286)
+(4625,6295)
+(4625,6304)
+(4626,6309)
+(4625,6321)
+(4627,6336)
+(4627,6351)
+(4628,6355)
+(4625,6353)
+(4623,6344)
+(4622,6347)
+(4621,6327)
+(4618,6327)
+(4619,6332)
+(4618,6340)
+(4619,6346)
+(4619,6355)
+(4624,6372)
+(4622,6389)
+(4621,6390)
+(4621,6394)
+(4620,6399)
+(4620,6404)
+(4620,6406)
+(4622,6399)
+(4622,6406)
+(4623,6409)
+(4622,6421)
+(4621,6419)
+(4620,6420)
+(4621,6436)
+(4620,6434)
+(4617,6440)
+(4616,6450)
+(4614,6449)
+(4613,6436)
+(4612,6441)
+(4611,6432)
+(4610,6437)
+(4608,6433)
+(4608,6424)
+(4605,6423)
+(4604,6418)
+(4603,6418)
+(4602,6414)
+(4603,6405)
+(4603,6403)
+(4600,6408)
+(4595,6401)
+(4593,6395)
+(4596,6392)
+(4596,6387)
+(4596,6383)
+(4591,6384)
+(4590,6402)
+(4588,6409)
+(4590,6413)
+(4590,6421)
+(4592,6441)
+(4590,6458)
+(4592,6473)
+(4598,6480)
+(4600,6474)
+(4604,6477)
+(4604,6497)
+(4602,6498)
+(4603,6507)
+(4603,6528)
+(4604,6544)
+(4603,6549)
+(4605,6562)
+(4604,6565)
+(4604,6576)
+(4603,6581)
+(4603,6591)
+(4602,6593)
+(4602,6598)
+(4601,6602)
+(4604,6618)
+(4605,6627)
+(4606,6636)
+(4604,6638)
+(4603,6644)
+(4604,6655)
+(4605,6654)
+(4605,6666)
+(4605,6668)
+(4603,6664)
+(4601,6666)
+(4602,6674)
+(4601,6693)
+(4600,6689)
+(4599,6693)
+(4597,6687)
+(4597,6688)
+(4597,6699)
+(4596,6706)
+(4589,6732)
+(4580,6710)
+(4583,6721)
+(4587,6734)
+(4582,6759)
+(4580,6765)
+(4579,6759)
+(4576,6764)
+(4574,6761)
+(4573,6759)
+(4574,6750)
+(4572,6756)
+(4572,6767)
+(4568,6771)
+(4565,6768)
+(4563,6754)
+(4563,6776)
+(4564,6781)
+(4567,6782)
+(4568,6779)
+(4569,6786)
+(4569,6793)
+(4567,6798)
+(4568,6795)
+(4570,6797)
+(4573,6780)
+(4575,6776)
+(4575,6796)
+(4574,6798)
+(4573,6794)
+(4572,6794)
+(4572,6801)
+(4571,6804)
+(4568,6808)
+(4562,6807)
+(4561,6813)
+(4559,6810)
+(4557,6813)
+(4556,6806)
+(4556,6811)
+(4553,6814)
+(4552,6813)
+(4551,6809)
+(4552,6818)
+(4555,6817)
+(4555,6823)
+(4555,6825)
+(4556,6827)
+(4555,6831)
+(4553,6829)
+(4551,6834)
+(4543,6825)
+(4536,6823)
+(4532,6811)
+(4532,6805)
+(4537,6815)
+(4539,6816)
+(4540,6806)
+(4541,6798)
+(4540,6782)
+(4542,6788)
+(4544,6783)
+(4550,6756)
+(4551,6740)
+(4550,6747)
+(4546,6751)
+(4546,6761)
+(4542,6772)
+(4541,6769)
+(4542,6765)
+(4539,6773)
+(4535,6767)
+(4533,6770)
+(4533,6781)
+(4537,6780)
+(4539,6797)
+(4533,6796)
+(4531,6803)
+(4530,6813)
+(4531,6818)
+(4524,6823)
+(4524,6812)
+(4523,6813)
+(4523,6818)
+(4522,6820)
+(4517,6816)
+(4505,6786)
+(4504,6781)
+(4499,6773)
+(4495,6754)
+(4493,6728)
+(4491,6725)
+(4487,6723)
+(4486,6717)
+(4484,6714)
+(4483,6717)
+(4480,6708)
+(4480,6704)
+(4481,6696)
+(4481,6684)
+(4476,6667)
+(4476,6660)
+(4474,6663)
+(4473,6657)
+(4472,6649)
+(4469,6636)
+(4468,6630)
+(4469,6621)
+(4469,6617)
+(4466,6623)
+(4462,6612)
+(4462,6602)
+(4459,6594)
+(4459,6588)
+(4459,6587)
+(4459,6578)
+(4458,6573)
+(4458,6577)
+(4457,6583)
+(4458,6599)
+(4454,6597)
+(4451,6591)
+(4445,6570)
+(4444,6554)
+(4442,6545)
+(4438,6535)
+(4436,6526)
+(4429,6514)
+(4428,6510)
+(4429,6506)
+(4426,6509)
+(4418,6484)
+(4419,6486)
+(4420,6482)
+(4420,6478)
+(4417,6467)
+(4416,6465)
+(4418,6460)
+(4417,6446)
+(4418,6441)
+(4417,6439)
+(4417,6429)
+(4414,6426)
+(4413,6430)
+(4412,6430)
+(4406,6413)
+(4400,6408)
+(4398,6399)
+(4399,6393)
+(4399,6377)
+(4397,6364)
+(4389,6361)
+(4386,6351)
+(4380,6350)
+(4377,6342)
+(4374,6340)
+(4370,6321)
+(4368,6318)
+(4367,6304)
+(4366,6304)
+(4366,6327)
+(4369,6340)
+(4372,6346)
+(4373,6357)
+(4377,6360)
+(4378,6377)
+(4379,6373)
+(4386,6370)
+(4388,6372)
+(4389,6376)
+(4391,6381)
+(4388,6408)
+(4389,6415)
+(4391,6422)
+(4390,6464)
+(4391,6470)
+(4393,6477)
+(4395,6486)
+(4393,6493)
+(4393,6501)
+(4396,6503)
+(4396,6492)
+(4398,6494)
+(4399,6515)
+(4400,6523)
+(4401,6536)
+(4403,6549)
+(4405,6556)
+(4407,6552)
+(4408,6553)
+(4405,6565)
+(4407,6566)
+(4409,6559)
+(4411,6551)
+(4413,6550)
+(4413,6553)
+(4407,6570)
+(4407,6576)
+(4408,6589)
+(4410,6601)
+(4410,6606)
+(4413,6609)
+(4413,6605)
+(4415,6607)
+(4416,6625)
+(4418,6624)
+(4419,6628)
+(4419,6637)
+(4420,6640)
+(4421,6653)
+(4422,6655)
+(4424,6653)
+(4426,6655)
+(4427,6639)
+(4425,6636)
+(4425,6629)
+(4422,6616)
+(4422,6588)
+(4421,6585)
+(4420,6585)
+(4421,6579)
+(4425,6572)
+(4429,6571)
+(4430,6574)
+(4433,6590)
+(4438,6593)
+(4441,6604)
+(4441,6612)
+(4440,6634)
+(4437,6643)
+(4437,6647)
+(4435,6654)
+(4434,6660)
+(4437,6666)
+(4439,6664)
+(4441,6666)
+(4442,6672)
+(4443,6687)
+(4442,6694)
+(4440,6692)
+(4440,6687)
+(4439,6683)
+(4440,6676)
+(4439,6672)
+(4432,6678)
+(4426,6699)
+(4423,6721)
+(4422,6735)
+(4423,6749)
+(4424,6767)
+(4428,6777)
+(4433,6776)
+(4437,6769)
+(4440,6769)
+(4435,6779)
+(4433,6788)
+(4421,6804)
+(4416,6806)
+(4415,6804)
+(4414,6797)
+(4407,6788)
+(4405,6793)
+(4402,6796)
+(4400,6810)
+(4390,6809)
+(4386,6811)
+(4380,6807)
+(4377,6809)
+(4373,6798)
+(4372,6788)
+(4370,6785)
+(4363,6792)
+(4361,6798)
+(4357,6817)
+(4356,6845)
+(4357,6838)
+(4358,6823)
+(4361,6801)
+(4364,6793)
+(4371,6789)
+(4373,6802)
+(4378,6812)
+(4381,6811)
+(4386,6816)
+(4390,6812)
+(4395,6814)
+(4397,6819)
+(4399,6822)
+(4399,6831)
+(4400,6842)
+(4401,6838)
+(4401,6831)
+(4401,6826)
+(4406,6812)
+(4410,6809)
+(4412,6831)
+(4415,6846)
+(4415,6872)
+(4416,6892)
+(4421,6910)
+(4422,6926)
+(4422,6949)
+(4420,6968)
+(4420,6995)
+(4415,7035)
+(4415,7063)
+(4415,7077)
+(4414,7118)
+(4413,7130)
+(4409,7140)
+(4407,7135)
+(4408,7124)
+(4407,7121)
+(4409,7115)
+(4409,7109)
+(4405,7101)
+(4403,7102)
+(4402,7106)
+(4400,7102)
+(4397,7101)
+(4394,7104)
+(4392,7109)
+(4386,7139)
+(4384,7155)
+(4384,7172)
+(4380,7175)
+(4380,7180)
+(4376,7189)
+(4374,7216)
+(4372,7233)
+(4373,7234)
+(4374,7226)
+(4376,7210)
+(4377,7194)
+(4378,7189)
+(4380,7185)
+(4381,7189)
+(4379,7235)
+(4378,7242)
+(4376,7262)
+(4378,7283)
+(4378,7301)
+(4377,7305)
+(4378,7307)
+(4378,7312)
+(4377,7318)
+(4375,7315)
+(4373,7323)
+(4372,7345)
+(4369,7359)
+(4367,7383)
+(4364,7401)
+(4363,7408)
+(4365,7420)
+(4365,7427)
+(4363,7447)
+(4358,7461)
+(4358,7484)
+(4355,7488)
+(4352,7508)
+(4347,7515)
+(4345,7527)
+(4341,7537)
+(4340,7542)
+(4340,7553)
+(4336,7567)
+(4337,7575)
+(4341,7582)
+(4334,7595)
+(4331,7595)
+(4328,7605)
+(4321,7608)
+(4311,7628)
+(4306,7625)
+(4295,7632)
+(4284,7633)
+(4283,7637)
+(4289,7639)
+(4305,7631)
+(4310,7634)
+(4314,7640)
+(4318,7633)
+(4320,7623)
+(4324,7618)
+(4337,7614)
+(4343,7603)
+(4344,7603)
+(4344,7617)
+(4344,7631)
+(4341,7647)
+(4341,7660)
+(4335,7671)
+(4335,7665)
+(4334,7665)
+(4334,7672)
+(4331,7684)
+(4321,7706)
+(4318,7706)
+(4314,7712)
+(4313,7717)
+(4307,7719)
+(4304,7737)
+(4308,7751)
+(4320,7741)
+(4321,7744)
+(4312,7758)
+(4308,7758)
+(4303,7772)
+(4303,7771)
+(4304,7766)
+(4306,7758)
+(4303,7747)
+(4302,7734)
+(4299,7729)
+(4296,7731)
+(4296,7734)
+(4296,7746)
+(4295,7751)
+(4292,7755)
+(4290,7754)
+(4288,7759)
+(4280,7763)
+(4277,7771)
+(4276,7779)
+(4273,7782)
+(4268,7785)
+(4267,7784)
+(4265,7778)
+(4266,7793)
+(4265,7796)
+(4263,7796)
+(4265,7804)
+(4259,7813)
+(4258,7810)
+(4256,7819)
+(4256,7828)
+(4253,7830)
+(4252,7838)
+(4253,7842)
+(4257,7843)
+(4258,7848)
+(4250,7854)
+(4246,7853)
+(4245,7855)
+(4244,7861)
+(4245,7873)
+(4253,7892)
+(4266,7906)
+(4268,7905)
+(4269,7912)
+(4270,7912)
+(4271,7909)
+(4272,7911)
+(4274,7920)
+(4273,7931)
+(4274,7927)
+(4275,7917)
+(4278,7917)
+(4301,7936)
+(4313,7952)
+(4317,7964)
+(4310,7966)
+(4306,7963)
+(4304,7975)
+(4294,7990)
+(4288,8012)
+(4283,8044)
+(4282,8067)
+(4284,8077)
+(4282,8085)
+(4278,8079)
+(4276,8080)
+(4281,8086)
+(4285,8082)
+(4285,8086)
+(4289,8089)
+(4292,8101)
+(4292,8104)
+(4290,8107)
+(4292,8110)
+(4293,8114)
+(4292,8119)
+(4292,8125)
+(4294,8120)
+(4294,8122)
+(4297,8135)
+(4298,8152)
+(4297,8168)
+(4295,8175)
+(4294,8189)
+(4291,8191)
+(4290,8194)
+(4288,8193)
+(4291,8197)
+(4292,8203)
+(4290,8209)
+(4288,8213)
+(4287,8218)
+(4285,8224)
+(4284,8234)
+(4282,8236)
+(4282,8234)
+(4281,8237)
+(4282,8244)
+(4282,8241)
+(4281,8243)
+(4281,8249)
+(4279,8247)
+(4277,8249)
+(4277,8245)
+(4276,8250)
+(4274,8253)
+(4277,8262)
+(4275,8260)
+(4275,8264)
+(4273,8260)
+(4273,8254)
+(4272,8252)
+(4271,8263)
+(4267,8268)
+(4267,8271)
+(4269,8275)
+(4268,8278)
+(4267,8277)
+(4266,8279)
+(4268,8284)
+(4271,8281)
+(4272,8274)
+(4271,8271)
+(4272,8271)
+(4273,8265)
+(4274,8265)
+(4275,8270)
+(4273,8276)
+(4273,8283)
+(4274,8285)
+(4274,8290)
+(4276,8294)
+(4278,8280)
+(4279,8285)
+(4279,8302)
+(4280,8299)
+(4281,8283)
+(4280,8280)
+(4282,8276)
+(4283,8277)
+(4282,8273)
+(4283,8270)
+(4284,8273)
+(4287,8279)
+(4294,8284)
+(4297,8309)
+(4295,8304)
+(4294,8304)
+(4293,8306)
+(4292,8308)
+(4293,8315)
+(4295,8316)
+(4296,8313)
+(4299,8323)
+(4295,8335)
+(4294,8343)
+(4288,8347)
+(4287,8349)
+(4286,8347)
+(4285,8353)
+(4285,8361)
+(4288,8363)
+(4290,8367)
+(4289,8378)
+(4288,8381)
+(4287,8383)
+(4289,8391)
+(4288,8402)
+(4290,8399)
+(4292,8400)
+(4295,8390)
+(4300,8384)
+(4307,8381)
+(4311,8385)
+(4311,8388)
+(4312,8382)
+(4315,8377)
+(4317,8360)
+(4317,8378)
+(4320,8383)
+(4324,8383)
+(4330,8392)
+(4330,8397)
+(4328,8404)
+(4330,8412)
+(4332,8412)
+(4334,8402)
+(4334,8374)
+(4331,8366)
+(4330,8373)
+(4330,8362)
+(4331,8355)
+(4329,8356)
+(4328,8361)
+(4328,8360)
+(4330,8351)
+(4334,8345)
+(4340,8350)
+(4345,8360)
+(4345,8363)
+(4350,8372)
+(4350,8387)
+(4349,8399)
+(4348,8406)
+(4349,8424)
+(4350,8440)
+(4352,8446)
+(4352,8452)
+(4354,8456)
+(4355,8466)
+(4355,8457)
+(4361,8461)
+(4367,8445)
+(4368,8440)
+(4372,8435)
+(4374,8439)
+(4371,8481)
+(4366,8494)
+(4364,8512)
+(4362,8545)
+(4362,8556)
+(4361,8583)
+(4361,8613)
+(4359,8629)
+(4359,8648)
+(4358,8664)
+(4356,8680)
+(4354,8722)
+(4350,8749)
+(4347,8772)
+(4344,8791)
+(4341,8811)
+(4340,8805)
+(4341,8788)
+(4340,8779)
+(4341,8727)
+(4340,8721)
+(4344,8715)
+(4345,8710)
+(4344,8705)
+(4346,8698)
+(4344,8686)
+(4336,8675)
+(4333,8671)
+(4337,8664)
+(4338,8657)
+(4336,8654)
+(4336,8652)
+(4336,8646)
+(4333,8651)
+(4330,8664)
+(4330,8672)
+(4331,8678)
+(4334,8685)
+(4334,8694)
+(4336,8705)
+(4338,8763)
+(4339,8816)
+(4335,8812)
+(4322,8786)
+(4312,8761)
+(4311,8757)
+(4316,8760)
+(4322,8759)
+(4322,8766)
+(4328,8780)
+(4329,8774)
+(4330,8775)
+(4330,8772)
+(4330,8764)
+(4327,8764)
+(4324,8759)
+(4326,8756)
+(4329,8757)
+(4329,8751)
+(4331,8750)
+(4332,8754)
+(4334,8746)
+(4335,8737)
+(4333,8741)
+(4333,8745)
+(4325,8737)
+(4321,8741)
+(4322,8745)
+(4321,8748)
+(4316,8748)
+(4315,8745)
+(4315,8735)
+(4312,8721)
+(4315,8712)
+(4316,8705)
+(4318,8699)
+(4315,8698)
+(4313,8703)
+(4311,8713)
+(4310,8713)
+(4307,8704)
+(4307,8693)
+(4304,8695)
+(4300,8693)
+(4302,8698)
+(4300,8701)
+(4302,8705)
+(4301,8715)
+(4299,8719)
+(4304,8733)
+(4303,8745)
+(4306,8756)
+(4307,8764)
+(4312,8775)
+(4314,8781)
+(4325,8798)
+(4339,8828)
+(4340,8849)
+(4339,8896)
+(4338,8910)
+(4336,8923)
+(4333,8951)
+(4330,8972)
+(4327,8983)
+(4317,9001)
+(4313,9004)
+(4310,8999)
+(4309,8992)
+(4306,8983)
+(4306,8978)
+(4309,8974)
+(4314,8962)
+(4313,8957)
+(4312,8959)
+(4311,8958)
+(4309,8952)
+(4306,8949)
+(4306,8946)
+(4309,8930)
+(4306,8933)
+(4305,8942)
+(4302,8939)
+(4302,8931)
+(4300,8929)
+(4300,8940)
+(4302,8946)
+(4300,8966)
+(4299,8981)
+(4300,8998)
+(4295,9006)
+(4294,9000)
+(4296,9001)
+(4296,8998)
+(4294,8996)
+(4292,8998)
+(4290,8993)
+(4288,8992)
+(4290,9003)
+(4291,9016)
+(4290,9019)
+(4291,9026)
+(4290,9028)
+(4291,9033)
+(4290,9039)
+(4287,9039)
+(4284,9033)
+(4280,9031)
+(4279,9020)
+(4277,9018)
+(4276,9011)
+(4273,9001)
+(4272,9001)
+(4273,9009)
+(4276,9017)
+(4276,9023)
+(4280,9034)
+(4283,9038)
+(4283,9044)
+(4282,9040)
+(4276,9036)
+(4280,9047)
+(4282,9052)
+(4284,9062)
+(4282,9070)
+(4281,9087)
+(4278,9098)
+(4275,9104)
+(4271,9106)
+(4260,9128)
+(4259,9128)
+(4259,9124)
+(4258,9115)
+(4259,9099)
+(4259,9100)
+(4256,9122)
+(4253,9133)
+(4251,9152)
+(4247,9152)
+(4250,9155)
+(4250,9165)
+(4250,9185)
+(4251,9187)
+(4251,9199)
+(4252,9200)
+(4253,9207)
+(4252,9208)
+(4253,9217)
+(4251,9219)
+(4256,9250)
+(4258,9254)
+(4258,9265)
+(4262,9300)
+(4263,9330)
+(4260,9330)
+(4258,9332)
+(4264,9336)
+(4266,9356)
+(4265,9393)
+(4266,9409)
+(4263,9478)
+(4257,9515)
+(4249,9555)
+(4240,9580)
+(4237,9587)
+(4225,9602)
+(4217,9606)
+(4214,9605)
+(4212,9600)
+(4208,9597)
+(4207,9596)
+(4208,9581)
+(4206,9590)
+(4206,9595)
+(4202,9591)
+(4200,9592)
+(4197,9585)
+(4194,9581)
+(4190,9586)
+(4190,9584)
+(4188,9588)
+(4184,9584)
+(4188,9592)
+(4182,9611)
+(4183,9608)
+(4184,9610)
+(4182,9618)
+(4179,9619)
+(4181,9623)
+(4181,9634)
+(4179,9648)
+(4178,9652)
+(4178,9655)
+(4175,9660)
+(4168,9655)
+(4158,9661)
+(4154,9660)
+(4150,9663)
+(4146,9658)
+(4144,9662)
+(4143,9675)
+(4139,9685)
+(4135,9683)
+(4127,9673)
+(4121,9673)
+(4114,9664)
+(4113,9660)
+(4114,9645)
+(4112,9648)
+(4111,9657)
+(4112,9663)
+(4113,9668)
+(4121,9677)
+(4122,9680)
+(4124,9678)
+(4128,9679)
+(4135,9695)
+(4141,9694)
+(4144,9690)
+(4150,9688)
+(4153,9683)
+(4157,9688)
+(4160,9685)
+(4160,9688)
+(4161,9689)
+(4163,9686)
+(4165,9696)
+(4169,9701)
+(4170,9706)
+(4172,9709)
+(4171,9715)
+(4172,9720)
+(4175,9721)
+(4177,9732)
+(4178,9730)
+(4179,9732)
+(4179,9738)
+(4182,9740)
+(4180,9746)
+(4181,9756)
+(4179,9763)
+(4179,9770)
+(4183,9793)
+(4181,9816)
+(4182,9825)
+(4186,9841)
+(4185,9846)
+(4183,9849)
+(4178,9863)
+(4176,9872)
+(4175,9885)
+(4175,9938)
+(4174,9950)
+(4171,9968)
+(4171,9999)
+(4171,10002)
+(4170,10001)
+(4169,10012)
+(4174,10030)
+(4185,10059)
+(4187,10067)
+(4183,10075)
+(4183,10084)
+(4179,10075)
+(4173,10095)
+(4163,10092)
+(4157,10094)
+(4154,10097)
+(4153,10105)
+(4152,10124)
+(4146,10148)
+(4146,10155)
+(4145,10162)
+(4139,10166)
+(4130,10167)
+(4127,10175)
+(4127,10187)
+(4129,10221)
+(4128,10230)
+(4125,10237)
+(4128,10232)
+(4129,10234)
+(4130,10226)
+(4132,10227)
+(4135,10240)
+(4128,10242)
+(4130,10244)
+(4136,10241)
+(4139,10254)
+(4142,10257)
+(4143,10259)
+(4141,10263)
+(4142,10270)
+(4143,10262)
+(4149,10258)
+(4150,10253)
+(4154,10256)
+(4158,10255)
+(4163,10245)
+(4167,10244)
+(4168,10241)
+(4172,10240)
+(4176,10235)
+(4176,10228)
+(4175,10215)
+(4176,10210)
+(4177,10207)
+(4180,10209)
+(4184,10217)
+(4185,10230)
+(4187,10234)
+(4188,10233)
+(4193,10234)
+(4196,10231)
+(4204,10234)
+(4206,10232)
+(4207,10224)
+(4208,10228)
+(4206,10248)
+(4204,10283)
+(4200,10316)
+(4199,10329)
+(4198,10350)
+(4199,10364)
+(4194,10370)
+(4192,10382)
+(4191,10390)
+(4189,10393)
+(4187,10390)
+(4187,10393)
+(4187,10402)
+(4189,10408)
+(4191,10408)
+(4192,10404)
+(4195,10396)
+(4194,10392)
+(4193,10390)
+(4194,10390)
+(4196,10393)
+(4197,10408)
+(4193,10422)
+(4192,10421)
+(4190,10425)
+(4193,10426)
+(4191,10434)
+(4193,10442)
+(4193,10459)
+(4192,10467)
+(4191,10503)
+(4193,10523)
+(4192,10509)
+(4191,10509)
+(4191,10518)
+(4191,10526)
+(4193,10531)
+(4194,10543)
+(4193,10550)
+(4193,10567)
+(4188,10577)
+(4187,10574)
+(4185,10590)
+(4180,10604)
+(4178,10622)
+(4176,10647)
+(4173,10661)
+(4173,10656)
+(4172,10659)
+(4172,10664)
+(4170,10674)
+(4168,10685)
+(4166,10694)
+(4168,10698)
+(4168,10695)
+(4169,10700)
+(4168,10709)
+(4161,10740)
+(4159,10744)
+(4159,10733)
+(4161,10731)
+(4162,10721)
+(4163,10720)
+(4158,10720)
+(4157,10723)
+(4158,10733)
+(4157,10740)
+(4158,10744)
+(4156,10757)
+(4153,10761)
+(4140,10797)
+(4140,10790)
+(4147,10774)
+(4145,10775)
+(4144,10779)
+(4141,10780)
+(4139,10785)
+(4139,10800)
+(3904,10800)
+(3901,10788)
+(3896,10781)
+(3889,10769)
+(3889,10767)
+(3889,10765)
+(3888,10755)
+(3887,10749)
+(3876,10717)
+(3875,10710)
+(3877,10710)
+(3878,10722)
+(3880,10725)
+(3882,10724)
+(3879,10695)
+(3879,10696)
+(3881,10695)
+(3881,10685)
+(3880,10680)
+(3882,10675)
+(3882,10667)
+(3883,10657)
+(3885,10658)
+(3887,10653)
+(3887,10649)
+(3889,10650)
+(3889,10645)
+(3890,10643)
+(3891,10649)
+(3895,10646)
+(3896,10635)
+(3901,10630)
+(3905,10614)
+(3901,10595)
+(3905,10585)
+(3905,10583)
+(3903,10583)
+(3903,10578)
+(3902,10580)
+(3902,10586)
+(3900,10590)
+(3900,10594)
+(3900,10602)
+(3902,10609)
+(3903,10613)
+(3902,10618)
+(3900,10620)
+(3899,10624)
+(3895,10633)
+(3893,10635)
+(3891,10633)
+(3890,10638)
+(3889,10637)
+(3887,10631)
+(3886,10622)
+(3887,10620)
+(3888,10616)
+(3891,10613)
+(3891,10607)
+(3892,10605)
+(3892,10598)
+(3889,10592)
+(3888,10586)
+(3891,10584)
+(3895,10571)
+(3895,10565)
+(3897,10564)
+(3894,10556)
+(3892,10556)
+(3890,10552)
+(3887,10543)
+(3887,10533)
+(3886,10523)
+(3885,10519)
+(3886,10514)
+(3885,10509)
+(3886,10503)
+(3881,10486)
+(3881,10482)
+(3881,10466)
+(3880,10471)
+(3880,10479)
+(3880,10486)
+(3884,10503)
+(3884,10517)
+(3885,10529)
+(3885,10542)
+(3887,10550)
+(3894,10562)
+(3892,10572)
+(3890,10574)
+(3889,10577)
+(3886,10578)
+(3883,10585)
+(3879,10579)
+(3878,10569)
+(3872,10567)
+(3874,10568)
+(3877,10573)
+(3877,10580)
+(3881,10587)
+(3881,10590)
+(3877,10602)
+(3874,10604)
+(3876,10610)
+(3878,10611)
+(3882,10619)
+(3883,10629)
+(3887,10640)
+(3885,10649)
+(3879,10647)
+(3873,10642)
+(3866,10645)
+(3858,10660)
+(3855,10669)
+(3853,10677)
+(3852,10686)
+(3852,10691)
+(3854,10686)
+(3855,10685)
+(3857,10692)
+(3861,10697)
+(3865,10694)
+(3866,10692)
+(3864,10691)
+(3867,10691)
+(3856,10702)
+(3850,10706)
+(3842,10715)
+(3844,10711)
+(3844,10708)
+(3842,10704)
+(3840,10703)
+(3839,10709)
+(3838,10703)
+(3838,10705)
+(3838,10712)
+(3837,10715)
+(3837,10719)
+(3840,10718)
+(3834,10722)
+(3818,10726)
+(3819,10723)
+(3820,10716)
+(3817,10719)
+(3817,10723)
+(3816,10723)
+(3815,10718)
+(3817,10717)
+(3818,10711)
+(3817,10712)
+(3815,10710)
+(3816,10708)
+(3817,10708)
+(3818,10701)
+(3815,10696)
+(3814,10696)
+(3811,10702)
+(3811,10704)
+(3814,10708)
+(3815,10711)
+(3814,10720)
+(3814,10723)
+(3809,10723)
+(3807,10719)
+(3806,10718)
+(3805,10715)
+(3803,10721)
+(3804,10726)
+(3806,10730)
+(3812,10725)
+(3815,10725)
+(3815,10727)
+(3810,10728)
+(3799,10740)
+(3804,10730)
+(3803,10728)
+(3801,10729)
+(3800,10730)
+(3800,10734)
+(3798,10736)
+(3797,10743)
+(3794,10748)
+(3794,10752)
+(3793,10756)
+(3789,10765)
+(3783,10764)
+(3784,10762)
+(3783,10758)
+(3781,10755)
+(3780,10754)
+(3774,10759)
+(3772,10770)
+(3765,10776)
+(3762,10776)
+(3760,10773)
+(3757,10774)
+(3757,10766)
+(3752,10764)
+(3750,10761)
+(3750,10751)
+(3748,10746)
+(3745,10749)
+(3740,10749)
+(3737,10746)
+(3737,10744)
+(3741,10738)
+(3749,10697)
+(3753,10682)
+(3754,10663)
+(3755,10638)
+(3755,10640)
+(3757,10636)
+(3761,10640)
+(3764,10639)
+(3766,10640)
+(3766,10644)
+(3766,10646)
+(3767,10645)
+(3769,10647)
+(3768,10640)
+(3764,10635)
+(3763,10636)
+(3762,10632)
+(3763,10628)
+(3767,10629)
+(3770,10622)
+(3771,10622)
+(3772,10619)
+(3767,10620)
+(3766,10623)
+(3763,10618)
+(3762,10616)
+(3760,10616)
+(3757,10621)
+(3755,10623)
+(3755,10630)
+(3754,10636)
+(3752,10611)
+(3750,10601)
+(3751,10601)
+(3752,10603)
+(3752,10601)
+(3749,10596)
+(3748,10596)
+(3748,10598)
+(3744,10585)
+(3739,10577)
+(3734,10548)
+(3730,10532)
+(3724,10518)
+(3727,10524)
+(3726,10518)
+(3730,10516)
+(3723,10515)
+(3721,10510)
+(3716,10489)
+(3715,10486)
+(3716,10488)
+(3717,10487)
+(3717,10482)
+(3719,10476)
+(3717,10477)
+(3713,10484)
+(3712,10482)
+(3710,10476)
+(3708,10467)
+(3709,10462)
+(3710,10463)
+(3711,10461)
+(3708,10457)
+(3709,10451)
+(3708,10449)
+(3709,10452)
+(3709,10451)
+(3710,10444)
+(3710,10445)
+(3709,10440)
+(3707,10442)
+(3707,10446)
+(3705,10441)
+(3703,10439)
+(3702,10435)
+(3699,10428)
+(3701,10429)
+(3702,10422)
+(3705,10417)
+(3705,10414)
+(3699,10408)
+(3693,10409)
+(3693,10401)
+(3691,10397)
+(3688,10398)
+(3686,10393)
+(3683,10385)
+(3685,10379)
+(3687,10377)
+(3687,10375)
+(3688,10373)
+(3686,10363)
+(3682,10374)
+(3678,10377)
+(3677,10371)
+(3680,10360)
+(3676,10366)
+(3674,10360)
+(3672,10359)
+(3671,10353)
+(3674,10341)
+(3670,10342)
+(3668,10346)
+(3667,10339)
+(3668,10335)
+(3666,10338)
+(3666,10343)
+(3665,10345)
+(3664,10346)
+(3665,10349)
+(3663,10349)
+(3661,10343)
+(3661,10337)
+(3661,10333)
+(3664,10329)
+(3666,10321)
+(3662,10327)
+(3661,10330)
+(3658,10332)
+(3657,10331)
+(3656,10327)
+(3652,10324)
+(3651,10321)
+(3653,10319)
+(3655,10320)
+(3657,10317)
+(3651,10317)
+(3650,10311)
+(3651,10304)
+(3649,10300)
+(3648,10292)
+(3646,10297)
+(3645,10298)
+(3643,10289)
+(3641,10285)
+(3644,10288)
+(3647,10284)
+(3643,10284)
+(3641,10282)
+(3638,10282)
+(3633,10271)
+(3634,10265)
+(3632,10260)
+(3630,10251)
+(3632,10245)
+(3630,10245)
+(3630,10248)
+(3627,10247)
+(3625,10239)
+(3626,10237)
+(3627,10236)
+(3627,10231)
+(3626,10231)
+(3626,10235)
+(3623,10237)
+(3622,10236)
+(3621,10239)
+(3620,10240)
+(3616,10230)
+(3613,10228)
+(3598,10224)
+(3595,10215)
+(3599,10206)
+(3601,10207)
+(3602,10205)
+(3604,10196)
+(3611,10190)
+(3613,10191)
+(3614,10198)
+(3615,10193)
+(3614,10189)
+(3617,10185)
+(3625,10182)
+(3626,10176)
+(3628,10174)
+(3628,10172)
+(3633,10155)
+(3634,10156)
+(3633,10160)
+(3634,10162)
+(3637,10157)
+(3637,10153)
+(3635,10152)
+(3635,10148)
+(3634,10149)
+(3634,10142)
+(3633,10135)
+(3634,10126)
+(3633,10120)
+(3636,10109)
+(3636,10100)
+(3635,10091)
+(3632,10078)
+(3631,10069)
+(3633,10066)
+(3632,10065)
+(3629,10066)
+(3628,10061)
+(3627,10057)
+(3626,10052)
+(3628,10049)
+(3626,10048)
+(3625,10047)
+(3628,10040)
+(3624,10042)
+(3625,10037)
+(3623,10038)
+(3622,10038)
+(3621,10031)
+(3623,10027)
+(3625,10024)
+(3626,10021)
+(3619,10023)
+(3618,10014)
+(3617,10016)
+(3615,10016)
+(3613,10010)
+(3600,9993)
+(3591,9978)
+(3589,9967)
+(3590,9966)
+(3595,9966)
+(3598,9969)
+(3601,9968)
+(3607,9970)
+(3610,9975)
+(3612,9977)
+(3615,9976)
+(3620,9976)
+(3624,9974)
+(3623,9976)
+(3624,9980)
+(3627,9981)
+(3629,9984)
+(3630,9983)
+(3628,9979)
+(3629,9978)
+(3629,9973)
+(3626,9960)
+(3623,9955)
+(3622,9957)
+(3625,9963)
+(3627,9972)
+(3626,9963)
+(3623,9959)
+(3620,9951)
+(3617,9946)
+(3615,9939)
+(3613,9931)
+(3613,9927)
+(3615,9926)
+(3611,9926)
+(3608,9917)
+(3606,9915)
+(3605,9912)
+(3608,9909)
+(3609,9911)
+(3610,9911)
+(3608,9907)
+(3607,9903)
+(3608,9900)
+(3605,9900)
+(3604,9903)
+(3605,9904)
+(3605,9907)
+(3602,9909)
+(3599,9913)
+(3598,9909)
+(3590,9900)
+(3589,9895)
+(3587,9889)
+(3589,9886)
+(3591,9887)
+(3596,9884)
+(3602,9876)
+(3605,9872)
+(3607,9867)
+(3604,9861)
+(3605,9859)
+(3603,9859)
+(3601,9862)
+(3600,9861)
+(3599,9858)
+(3598,9850)
+(3595,9846)
+(3591,9851)
+(3592,9843)
+(3594,9842)
+(3595,9846)
+(3600,9852)
+(3599,9847)
+(3602,9842)
+(3602,9834)
+(3601,9831)
+(3602,9832)
+(3603,9830)
+(3603,9829)
+(3603,9824)
+(3602,9818)
+(3601,9817)
+(3599,9819)
+(3598,9821)
+(3598,9823)
+(3599,9828)
+(3593,9821)
+(3594,9810)
+(3591,9807)
+(3589,9802)
+(3577,9803)
+(3575,9800)
+(3575,9796)
+(3574,9790)
+(3573,9792)
+(3570,9790)
+(3566,9798)
+(3563,9800)
+(3555,9797)
+(3555,9794)
+(3558,9797)
+(3557,9792)
+(3558,9790)
+(3556,9785)
+(3554,9784)
+(3552,9785)
+(3552,9784)
+(3551,9787)
+(3549,9791)
+(3543,9792)
+(3542,9789)
+(3545,9790)
+(3547,9784)
+(3548,9784)
+(3550,9781)
+(3549,9779)
+(3550,9777)
+(3548,9776)
+(3548,9773)
+(3542,9780)
+(3542,9783)
+(3539,9782)
+(3537,9779)
+(3536,9771)
+(3537,9775)
+(3539,9773)
+(3534,9768)
+(3532,9760)
+(3530,9763)
+(3532,9763)
+(3531,9766)
+(3532,9767)
+(3530,9766)
+(3525,9751)
+(3520,9744)
+(3507,9728)
+(3484,9716)
+(3482,9716)
+(3474,9722)
+(3471,9726)
+(3468,9735)
+(3467,9746)
+(3464,9744)
+(3463,9740)
+(3461,9740)
+(3461,9742)
+(3466,9749)
+(3472,9748)
+(3475,9750)
+(3477,9753)
+(3477,9759)
+(3478,9762)
+(3476,9766)
+(3475,9771)
+(3471,9780)
+(3471,9792)
+(3466,9796)
+(3465,9797)
+(3460,9792)
+(3458,9793)
+(3456,9792)
+(3455,9787)
+(3449,9783)
+(3446,9771)
+(3441,9764)
+(3441,9766)
+(3433,9765)
+(3423,9770)
+(3413,9767)
+(3407,9767)
+(3404,9771)
+(3402,9775)
+(3404,9780)
+(3405,9785)
+(3404,9787)
+(3404,9793)
+(3402,9795)
+(3398,9793)
+(3394,9795)
+(3393,9794)
+(3389,9796)
+(3387,9794)
+(3383,9799)
+(3379,9800)
+(3378,9799)
+(3375,9800)
+(3372,9801)
+(3367,9788)
+(3362,9783)
+(3361,9782)
+(3362,9773)
+(3366,9765)
+(3369,9762)
+(3373,9755)
+(3373,9751)
+(3374,9756)
+(3376,9760)
+(3381,9763)
+(3382,9771)
+(3384,9775)
+(3386,9776)
+(3388,9784)
+(3391,9786)
+(3393,9779)
+(3391,9776)
+(3387,9776)
+(3386,9774)
+(3389,9765)
+(3389,9762)
+(3389,9758)
+(3385,9754)
+(3386,9751)
+(3384,9748)
+(3384,9744)
+(3383,9744)
+(3380,9749)
+(3376,9754)
+(3374,9751)
+(3374,9749)
+(3372,9746)
+(3370,9733)
+(3366,9726)
+(3364,9722)
+(3361,9723)
+(3357,9721)
+(3352,9716)
+(3348,9715)
+(3343,9709)
+(3338,9705)
+(3329,9703)
+(3322,9703)
+(3308,9709)
+(3307,9710)
+(3304,9713)
+(3301,9718)
+(3294,9724)
+(3292,9729)
+(3290,9729)
+(3289,9726)
+(3286,9727)
+(3282,9720)
+(3279,9719)
+(3275,9709)
+(3270,9704)
+(3271,9697)
+(3270,9691)
+(3271,9688)
+(3269,9678)
+(3271,9674)
+(3273,9673)
+(3275,9671)
+(3275,9667)
+(3273,9651)
+(3272,9643)
+(3271,9643)
+(3262,9624)
+(3255,9615)
+(3252,9606)
+(3247,9599)
+(3244,9599)
+(3239,9594)
+(3231,9591)
+(3225,9590)
+(3221,9592)
+(3219,9589)
+(3215,9595)
+(3220,9592)
+(3220,9594)
+(3214,9598)
+(3211,9598)
+(3208,9596)
+(3211,9591)
+(3212,9589)
+(3211,9588)
+(3210,9589)
+(3209,9588)
+(3209,9591)
+(3204,9593)
+(3203,9596)
+(3200,9595)
+(3200,9598)
+(3198,9598)
+(3196,9595)
+(3192,9598)
+(3196,9598)
+(3196,9601)
+(3186,9603)
+(3186,9598)
+(3189,9596)
+(3193,9586)
+(3195,9587)
+(3197,9589)
+(3196,9586)
+(3194,9583)
+(3196,9577)
+(3194,9569)
+(3189,9563)
+(3190,9557)
+(3185,9542)
+(3181,9535)
+(3173,9523)
+(3177,9520)
+(3179,9521)
+(3181,9518)
+(3183,9516)
+(3184,9512)
+(3182,9510)
+(3181,9506)
+(3180,9505)
+(3178,9507)
+(3177,9505)
+(3174,9507)
+(3175,9509)
+(3174,9512)
+(3176,9509)
+(3177,9511)
+(3176,9518)
+(3174,9519)
+(3172,9516)
+(3171,9518)
+(3169,9515)
+(3170,9513)
+(3167,9514)
+(3167,9510)
+(3165,9509)
+(3165,9510)
+(3164,9514)
+(3163,9516)
+(3159,9514)
+(3157,9512)
+(3159,9505)
+(3157,9507)
+(3156,9506)
+(3154,9511)
+(3151,9511)
+(3150,9510)
+(3149,9512)
+(3148,9508)
+(3146,9508)
+(3145,9505)
+(3146,9512)
+(3143,9514)
+(3141,9510)
+(3140,9513)
+(3138,9513)
+(3136,9511)
+(3136,9505)
+(3134,9506)
+(3133,9503)
+(3131,9506)
+(3127,9502)
+(3128,9500)
+(3127,9499)
+(3124,9500)
+(3122,9497)
+(3116,9497)
+(3114,9491)
+(3108,9487)
+(3106,9481)
+(3103,9479)
+(3100,9475)
+(3098,9475)
+(3098,9473)
+(3094,9466)
+(3093,9461)
+(3089,9452)
+(3086,9449)
+(3084,9451)
+(3083,9448)
+(3081,9448)
+(3080,9441)
+(3074,9435)
+(3072,9433)
+(3072,9429)
+(3064,9417)
+(3061,9409)
+(3057,9407)
+(3053,9402)
+(3053,9399)
+(3059,9405)
+(3064,9405)
+(3066,9402)
+(3071,9402)
+(3074,9400)
+(3075,9398)
+(3076,9394)
+(3079,9391)
+(3085,9391)
+(3088,9389)
+(3091,9388)
+(3105,9390)
+(3116,9390)
+(3137,9384)
+(3151,9377)
+(3150,9382)
+(3147,9382)
+(3149,9386)
+(3151,9386)
+(3151,9381)
+(3153,9378)
+(3154,9376)
+(3171,9366)
+(3175,9366)
+(3178,9366)
+(3181,9366)
+(3184,9365)
+(3186,9365)
+(3190,9364)
+(3194,9363)
+(3197,9363)
+(3200,9362)
+(3203,9361)
+(3207,9360)
+(3210,9360)
+(3213,9359)
+(3217,9358)
+(3220,9358)
+(3223,9357)
+(3226,9357)
+(3230,9355)
+(3231,9356)
+(3235,9354)
+(3238,9353)
+(3242,9353)
+(3245,9352)
+(3248,9351)
+(3251,9348)
+(3254,9347)
+(3258,9346)
+(3261,9345)
+(3264,9344)
+(3267,9343)
+(3271,9342)
+(3274,9341)
+(3277,9340)
+(3281,9340)
+(3284,9339)
+(3287,9338)
+(3289,9339)
+(3295,9336)
+(3308,9334)
+(3320,9333)
+(3334,9335)
+(3337,9337)
+(3355,9339)
+(3363,9341)
+(3366,9343)
+(3366,9346)
+(3368,9344)
+(3396,9356)
+(3400,9357)
+(3409,9367)
+(3411,9370)
+(3410,9370)
+(3406,9364)
+(3403,9364)
+(3407,9368)
+(3409,9372)
+(3411,9372)
+(3417,9387)
+(3421,9391)
+(3425,9392)
+(3426,9393)
+(3424,9399)
+(3422,9400)
+(3425,9403)
+(3427,9402)
+(3446,9419)
+(3452,9419)
+(3459,9416)
+(3464,9411)
+(3464,9405)
+(3468,9412)
+(3469,9414)
+(3471,9419)
+(3468,9424)
+(3466,9430)
+(3466,9440)
+(3467,9446)
+(3469,9450)
+(3473,9454)
+(3477,9455)
+(3479,9458)
+(3481,9459)
+(3481,9463)
+(3479,9468)
+(3479,9475)
+(3479,9483)
+(3481,9493)
+(3480,9496)
+(3477,9500)
+(3478,9501)
+(3480,9498)
+(3482,9497)
+(3482,9494)
+(3496,9520)
+(3505,9542)
+(3507,9546)
+(3511,9549)
+(3508,9554)
+(3512,9551)
+(3520,9564)
+(3521,9569)
+(3523,9570)
+(3528,9577)
+(3530,9577)
+(3532,9583)
+(3537,9585)
+(3541,9584)
+(3543,9587)
+(3545,9587)
+(3550,9594)
+(3554,9603)
+(3559,9612)
+(3561,9620)
+(3567,9627)
+(3573,9629)
+(3577,9652)
+(3583,9658)
+(3586,9666)
+(3591,9675)
+(3603,9688)
+(3604,9690)
+(3604,9695)
+(3606,9698)
+(3607,9703)
+(3610,9709)
+(3615,9716)
+(3619,9715)
+(3620,9715)
+(3619,9712)
+(3625,9715)
+(3629,9727)
+(3632,9732)
+(3633,9744)
+(3637,9750)
+(3636,9757)
+(3639,9766)
+(3646,9773)
+(3647,9781)
+(3646,9785)
+(3647,9787)
+(3648,9786)
+(3649,9791)
+(3649,9798)
+(3648,9798)
+(3645,9796)
+(3643,9799)
+(3645,9798)
+(3650,9804)
+(3652,9814)
+(3652,9822)
+(3656,9825)
+(3660,9811)
+(3660,9808)
+(3661,9808)
+(3663,9811)
+(3664,9816)
+(3667,9816)
+(3669,9818)
+(3674,9836)
+(3678,9837)
+(3680,9841)
+(3682,9841)
+(3686,9838)
+(3687,9831)
+(3685,9827)
+(3687,9825)
+(3694,9830)
+(3698,9831)
+(3701,9841)
+(3707,9844)
+(3710,9842)
+(3713,9844)
+(3719,9843)
+(3722,9846)
+(3726,9844)
+(3729,9846)
+(3732,9845)
+(3736,9847)
+(3740,9854)
+(3742,9864)
+(3745,9866)
+(3747,9871)
+(3748,9875)
+(3748,9883)
+(3745,9895)
+(3745,9905)
+(3743,9914)
+(3739,9917)
+(3739,9920)
+(3744,9914)
+(3747,9905)
+(3748,9908)
+(3749,9921)
+(3747,9928)
+(3746,9937)
+(3747,9939)
+(3750,9919)
+(3751,9902)
+(3753,9895)
+(3755,9882)
+(3761,9875)
+(3763,9862)
+(3761,9856)
+(3759,9837)
+(3756,9835)
+(3757,9824)
+(3754,9809)
+(3753,9796)
+(3751,9793)
+(3748,9793)
+(3747,9790)
+(3746,9793)
+(3744,9794)
+(3743,9799)
+(3741,9801)
+(3740,9794)
+(3738,9793)
+(3738,9790)
+(3737,9787)
+(3732,9785)
+(3727,9788)
+(3726,9785)
+(3724,9790)
+(3721,9786)
+(3719,9786)
+(3718,9782)
+(3716,9780)
+(3715,9783)
+(3708,9777)
+(3707,9779)
+(3705,9794)
+(3703,9798)
+(3701,9799)
+(3700,9797)
+(3699,9792)
+(3697,9793)
+(3698,9788)
+(3697,9786)
+(3696,9784)
+(3693,9785)
+(3691,9780)
+(3695,9777)
+(3695,9773)
+(3697,9774)
+(3698,9771)
+(3700,9776)
+(3703,9771)
+(3703,9768)
+(3701,9759)
+(3700,9758)
+(3698,9762)
+(3698,9765)
+(3696,9765)
+(3697,9760)
+(3700,9752)
+(3700,9744)
+(3698,9741)
+(3697,9737)
+(3695,9737)
+(3694,9733)
+(3692,9733)
+(3688,9725)
+(3687,9723)
+(3685,9722)
+(3683,9716)
+(3686,9713)
+(3681,9712)
+(3683,9708)
+(3678,9705)
+(3676,9699)
+(3676,9694)
+(3674,9697)
+(3672,9694)
+(3672,9688)
+(3670,9685)
+(3668,9686)
+(3665,9678)
+(3664,9673)
+(3660,9670)
+(3658,9662)
+(3655,9657)
+(3655,9654)
+(3648,9649)
+(3644,9648)
+(3647,9640)
+(3644,9637)
+(3644,9635)
+(3645,9634)
+(3643,9627)
+(3644,9624)
+(3645,9625)
+(3645,9623)
+(3643,9620)
+(3642,9621)
+(3640,9617)
+(3638,9616)
+(3635,9608)
+(3641,9607)
+(3641,9611)
+(3643,9611)
+(3644,9613)
+(3647,9613)
+(3650,9610)
+(3651,9614)
+(3654,9614)
+(3655,9618)
+(3654,9619)
+(3655,9621)
+(3657,9620)
+(3660,9624)
+(3662,9623)
+(3663,9626)
+(3664,9621)
+(3663,9610)
+(3659,9596)
+(3657,9595)
+(3656,9587)
+(3659,9588)
+(3662,9594)
+(3666,9596)
+(3667,9599)
+(3669,9596)
+(3671,9597)
+(3673,9594)
+(3675,9595)
+(3676,9591)
+(3675,9585)
+(3678,9590)
+(3679,9591)
+(3677,9596)
+(3679,9600)
+(3678,9595)
+(3680,9593)
+(3682,9597)
+(3683,9597)
+(3684,9598)
+(3683,9602)
+(3685,9602)
+(3687,9605)
+(3688,9601)
+(3691,9605)
+(3691,9610)
+(3694,9614)
+(3695,9613)
+(3698,9614)
+(3700,9617)
+(3702,9614)
+(3706,9622)
+(3709,9621)
+(3711,9622)
+(3712,9621)
+(3714,9622)
+(3715,9620)
+(3717,9621)
+(3717,9620)
+(3713,9609)
+(3713,9606)
+(3709,9598)
+(3707,9595)
+(3703,9590)
+(3704,9585)
+(3702,9583)
+(3703,9580)
+(3702,9580)
+(3700,9572)
+(3701,9569)
+(3703,9569)
+(3709,9572)
+(3709,9570)
+(3706,9567)
+(3710,9560)
+(3711,9563)
+(3713,9562)
+(3715,9552)
+(3713,9533)
+(3711,9530)
+(3709,9531)
+(3710,9518)
+(3707,9511)
+(3709,9507)
+(3709,9499)
+(3705,9487)
+(3704,9482)
+(3707,9474)
+(3708,9449)
+(3706,9442)
+(3702,9442)
+(3703,9437)
+(3702,9429)
+(3699,9421)
+(3696,9419)
+(3692,9412)
+(3692,9402)
+(3685,9398)
+(3680,9400)
+(3677,9398)
+(3673,9400)
+(3673,9395)
+(3671,9385)
+(3661,9366)
+(3653,9355)
+(3651,9354)
+(3643,9354)
+(3644,9349)
+(3640,9342)
+(3639,9339)
+(3637,9333)
+(3635,9331)
+(3635,9329)
+(3632,9329)
+(3631,9327)
+(3631,9325)
+(3632,9323)
+(3631,9320)
+(3628,9311)
+(3625,9308)
+(3624,9305)
+(3621,9296)
+(3616,9288)
+(3603,9272)
+(3595,9268)
+(3593,9269)
+(3591,9264)
+(3593,9266)
+(3594,9264)
+(3593,9254)
+(3583,9254)
+(3575,9262)
+(3575,9258)
+(3579,9253)
+(3573,9248)
+(3571,9244)
+(3568,9246)
+(3567,9248)
+(3567,9257)
+(3569,9261)
+(3571,9261)
+(3572,9263)
+(3570,9264)
+(3568,9263)
+(3565,9266)
+(3566,9270)
+(3570,9265)
+(3573,9265)
+(3572,9274)
+(3573,9278)
+(3569,9285)
+(3569,9290)
+(3567,9291)
+(3569,9294)
+(3570,9298)
+(3564,9304)
+(3562,9311)
+(3557,9308)
+(3555,9311)
+(3553,9308)
+(3550,9311)
+(3552,9304)
+(3551,9300)
+(3552,9286)
+(3550,9284)
+(3547,9286)
+(3548,9282)
+(3548,9279)
+(3552,9271)
+(3553,9267)
+(3552,9260)
+(3551,9259)
+(3547,9261)
+(3547,9258)
+(3545,9256)
+(3546,9249)
+(3543,9242)
+(3545,9234)
+(3550,9228)
+(3551,9220)
+(3553,9224)
+(3555,9224)
+(3556,9225)
+(3552,9215)
+(3553,9211)
+(3555,9202)
+(3553,9199)
+(3549,9199)
+(3548,9196)
+(3548,9199)
+(3545,9198)
+(3546,9189)
+(3544,9179)
+(3537,9173)
+(3534,9174)
+(3536,9169)
+(3534,9163)
+(3537,9158)
+(3537,9153)
+(3540,9148)
+(3541,9144)
+(3542,9144)
+(3543,9141)
+(3541,9141)
+(3540,9132)
+(3539,9127)
+(3535,9127)
+(3534,9125)
+(3531,9094)
+(3532,9087)
+(3530,9079)
+(3535,9077)
+(3537,9073)
+(3541,9071)
+(3542,9068)
+(3547,9064)
+(3545,9070)
+(3547,9080)
+(3549,9082)
+(3550,9084)
+(3550,9097)
+(3549,9100)
+(3548,9103)
+(3549,9108)
+(3549,9112)
+(3549,9123)
+(3552,9130)
+(3552,9137)
+(3554,9137)
+(3556,9130)
+(3558,9128)
+(3557,9125)
+(3556,9119)
+(3558,9112)
+(3558,9102)
+(3559,9100)
+(3561,9103)
+(3563,9100)
+(3566,9100)
+(3569,9096)
+(3570,9089)
+(3573,9087)
+(3574,9084)
+(3576,9082)
+(3576,9080)
+(3574,9078)
+(3574,9074)
+(3575,9066)
+(3574,9054)
+(3573,9052)
+(3570,9056)
+(3569,9055)
+(3568,9056)
+(3567,9052)
+(3567,9041)
+(3568,9041)
+(3569,9044)
+(3570,9043)
+(3571,9040)
+(3569,9026)
+(3571,9030)
+(3573,9044)
+(3574,9044)
+(3573,9031)
+(3575,9026)
+(3576,9027)
+(3577,9025)
+(3577,9021)
+(3579,9016)
+(3579,9008)
+(3582,9002)
+(3586,8977)
+(3585,8962)
+(3586,8961)
+(3585,8959)
+(3584,8961)
+(3584,8960)
+(3581,8951)
+(3579,8946)
+(3578,8942)
+(3577,8942)
+(3575,8946)
+(3573,8945)
+(3572,8951)
+(3570,8953)
+(3568,8953)
+(3570,8947)
+(3567,8938)
+(3568,8937)
+(3568,8934)
+(3569,8931)
+(3571,8930)
+(3572,8933)
+(3573,8931)
+(3569,8925)
+(3567,8922)
+(3563,8922)
+(3562,8927)
+(3564,8932)
+(3561,8932)
+(3563,8935)
+(3564,8935)
+(3563,8938)
+(3559,8935)
+(3555,8937)
+(3554,8934)
+(3555,8932)
+(3557,8928)
+(3555,8926)
+(3554,8923)
+(3556,8921)
+(3555,8913)
+(3556,8905)
+(3556,8904)
+(3558,8904)
+(3560,8902)
+(3561,8904)
+(3563,8902)
+(3565,8893)
+(3563,8870)
+(3561,8867)
+(3558,8870)
+(3557,8869)
+(3556,8862)
+(3558,8860)
+(3558,8856)
+(3557,8853)
+(3555,8853)
+(3554,8849)
+(3559,8838)
+(3559,8830)
+(3562,8820)
+(3561,8812)
+(3562,8804)
+(3565,8800)
+(3568,8792)
+(3567,8788)
+(3563,8779)
+(3556,8779)
+(3552,8781)
+(3551,8779)
+(3552,8771)
+(3549,8762)
+(3549,8757)
+(3553,8756)
+(3553,8751)
+(3556,8748)
+(3560,8752)
+(3561,8755)
+(3565,8755)
+(3564,8750)
+(3565,8749)
+(3563,8746)
+(3565,8740)
+(3566,8740)
+(3565,8737)
+(3563,8719)
+(3565,8717)
+(3565,8715)
+(3563,8704)
+(3563,8696)
+(3563,8686)
+(3563,8688)
+(3564,8686)
+(3564,8677)
+(3563,8678)
+(3562,8681)
+(3562,8665)
+(3563,8667)
+(3564,8663)
+(3564,8659)
+(3563,8657)
+(3565,8643)
+(3565,8634)
+(3564,8627)
+(3560,8612)
+(3560,8606)
+(3562,8600)
+(3563,8592)
+(3562,8588)
+(3561,8589)
+(3554,8555)
+(3547,8535)
+(3538,8519)
+(3529,8510)
+(3521,8502)
+(3519,8497)
+(3511,8480)
+(3509,8473)
+(3508,8465)
+(3498,8447)
+(3494,8441)
+(3485,8437)
+(3476,8431)
+(3469,8430)
+(3468,8425)
+(3465,8421)
+(3466,8417)
+(3463,8403)
+(3459,8396)
+(3451,8390)
+(3449,8382)
+(3447,8376)
+(3443,8374)
+(3439,8369)
+(3439,8364)
+(3438,8362)
+(3436,8350)
+(3429,8344)
+(3428,8344)
+(3429,8338)
+(3428,8337)
+(3424,8338)
+(3421,8334)
+(3423,8329)
+(3421,8329)
+(3420,8325)
+(3419,8318)
+(3412,8315)
+(3411,8309)
+(3404,8304)
+(3403,8298)
+(3401,8298)
+(3400,8296)
+(3398,8296)
+(3398,8293)
+(3394,8287)
+(3390,8289)
+(3389,8295)
+(3386,8294)
+(3387,8290)
+(3387,8285)
+(3384,8284)
+(3383,8281)
+(3383,8275)
+(3378,8273)
+(3375,8271)
+(3374,8266)
+(3372,8266)
+(3370,8264)
+(3369,8264)
+(3367,8254)
+(3363,8247)
+(3361,8247)
+(3360,8246)
+(3358,8246)
+(3357,8244)
+(3356,8245)
+(3358,8242)
+(3358,8240)
+(3356,8238)
+(3353,8230)
+(3348,8224)
+(3348,8219)
+(3346,8214)
+(3343,8209)
+(3339,8207)
+(3339,8205)
+(3340,8201)
+(3338,8196)
+(3338,8193)
+(3335,8191)
+(3335,8186)
+(3332,8181)
+(3326,8178)
+(3321,8171)
+(3318,8168)
+(3318,8164)
+(3315,8157)
+(3312,8152)
+(3312,8148)
+(3308,8143)
+(3307,8133)
+(3296,8113)
+(3292,8109)
+(3288,8110)
+(3283,8116)
+(3282,8114)
+(3283,8120)
+(3281,8128)
+(3280,8140)
+(3275,8142)
+(3274,8144)
+(3274,8160)
+(3276,8166)
+(3277,8173)
+(3276,8177)
+(3275,8192)
+(3279,8197)
+(3281,8200)
+(3278,8199)
+(3277,8202)
+(3279,8206)
+(3279,8209)
+(3276,8209)
+(3275,8213)
+(3271,8209)
+(3269,8210)
+(3268,8209)
+(3266,8210)
+(3265,8209)
+(3266,8206)
+(3265,8204)
+(3261,8206)
+(3259,8209)
+(3257,8205)
+(3255,8209)
+(3253,8205)
+(3249,8209)
+(3245,8206)
+(3243,8206)
+(3241,8202)
+(3236,8199)
+(3229,8201)
+(3226,8207)
+(3227,8209)
+(3230,8211)
+(3231,8217)
+(3231,8222)
+(3229,8225)
+(3228,8227)
+(3232,8232)
+(3242,8237)
+(3242,8230)
+(3248,8224)
+(3251,8230)
+(3253,8231)
+(3253,8235)
+(3256,8237)
+(3257,8242)
+(3258,8243)
+(3259,8249)
+(3258,8252)
+(3258,8257)
+(3258,8259)
+(3259,8261)
+(3259,8264)
+(3258,8264)
+(3254,8257)
+(3251,8255)
+(3249,8251)
+(3248,8251)
+(3247,8249)
+(3245,8249)
+(3245,8247)
+(3248,8247)
+(3249,8245)
+(3247,8238)
+(3243,8238)
+(3242,8246)
+(3238,8254)
+(3237,8256)
+(3238,8260)
+(3236,8265)
+(3238,8272)
+(3234,8267)
+(3233,8262)
+(3230,8256)
+(3227,8256)
+(3226,8253)
+(3223,8254)
+(3221,8250)
+(3220,8249)
+(3220,8241)
+(3217,8237)
+(3216,8233)
+(3215,8232)
+(3214,8233)
+(3212,8239)
+(3211,8243)
+(3212,8249)
+(3213,8261)
+(3214,8274)
+(3218,8281)
+(3220,8288)
+(3224,8297)
+(3234,8301)
+(3240,8315)
+(3239,8315)
+(3236,8314)
+(3232,8315)
+(3229,8314)
+(3221,8302)
+(3219,8301)
+(3216,8301)
+(3214,8294)
+(3212,8295)
+(3209,8293)
+(3211,8295)
+(3211,8297)
+(3211,8307)
+(3214,8313)
+(3220,8317)
+(3230,8322)
+(3231,8321)
+(3234,8321)
+(3237,8325)
+(3241,8327)
+(3244,8327)
+(3246,8326)
+(3244,8320)
+(3250,8324)
+(3252,8323)
+(3254,8325)
+(3256,8323)
+(3258,8319)
+(3259,8324)
+(3254,8340)
+(3251,8360)
+(3255,8378)
+(3259,8385)
+(3258,8389)
+(3254,8387)
+(3253,8389)
+(3252,8395)
+(3251,8394)
+(3247,8401)
+(3245,8409)
+(3243,8415)
+(3240,8414)
+(3238,8420)
+(3234,8415)
+(3232,8415)
+(3227,8422)
+(3225,8427)
+(3223,8432)
+(3221,8431)
+(3219,8433)
+(3214,8446)
+(3208,8466)
+(3210,8458)
+(3208,8456)
+(3206,8456)
+(3207,8460)
+(3204,8462)
+(3204,8467)
+(3202,8467)
+(3198,8474)
+(3199,8478)
+(3197,8485)
+(3193,8481)
+(3193,8485)
+(3191,8485)
+(3189,8486)
+(3187,8483)
+(3185,8482)
+(3184,8482)
+(3184,8481)
+(3185,8475)
+(3182,8471)
+(3181,8475)
+(3179,8473)
+(3179,8469)
+(3183,8458)
+(3184,8454)
+(3187,8452)
+(3187,8448)
+(3187,8442)
+(3186,8446)
+(3182,8451)
+(3181,8457)
+(3179,8456)
+(3176,8458)
+(3175,8463)
+(3173,8465)
+(3171,8471)
+(3171,8476)
+(3166,8472)
+(3164,8476)
+(3161,8477)
+(3159,8479)
+(3158,8477)
+(3155,8477)
+(3151,8473)
+(3148,8468)
+(3144,8468)
+(3141,8470)
+(3140,8474)
+(3137,8477)
+(3136,8480)
+(3133,8484)
+(3133,8492)
+(3129,8493)
+(3129,8492)
+(3130,8490)
+(3126,8481)
+(3125,8482)
+(3121,8478)
+(3117,8486)
+(3115,8485)
+(3113,8477)
+(3110,8473)
+(3106,8471)
+(3102,8467)
+(3100,8467)
+(3101,8465)
+(3100,8461)
+(3097,8455)
+(3090,8454)
+(3089,8450)
+(3087,8447)
+(3086,8449)
+(3085,8449)
+(3085,8454)
+(3082,8452)
+(3080,8448)
+(3080,8446)
+(3079,8441)
+(3076,8442)
+(3075,8443)
+(3073,8439)
+(3071,8441)
+(3068,8440)
+(3066,8442)
+(3063,8443)
+(3061,8442)
+(3060,8440)
+(3057,8441)
+(3055,8436)
+(3052,8432)
+(3049,8433)
+(3042,8428)
+(3037,8431)
+(3036,8429)
+(3032,8426)
+(3027,8430)
+(3020,8433)
+(3018,8431)
+(3013,8432)
+(3010,8431)
+(3005,8435)
+(3004,8435)
+(3005,8437)
+(3006,8441)
+(3005,8442)
+(3002,8438)
+(2999,8429)
+(2993,8426)
+(2992,8424)
+(2988,8428)
+(2986,8432)
+(2981,8431)
+(2974,8433)
+(2964,8427)
+(2957,8426)
+(2957,8420)
+(2956,8420)
+(2956,8424)
+(2952,8420)
+(2952,8422)
+(2950,8421)
+(2949,8422)
+(2946,8421)
+(2945,8421)
+(2945,8418)
+(2944,8420)
+(2942,8421)
+(2940,8413)
+(2940,8417)
+(2938,8415)
+(2938,8417)
+(2938,8418)
+(2939,8418)
+(2941,8421)
+(2939,8422)
+(2939,8424)
+(2934,8421)
+(2931,8415)
+(2926,8413)
+(2920,8411)
+(2915,8412)
+(2914,8410)
+(2911,8412)
+(2907,8411)
+(2905,8405)
+(2900,8402)
+(2898,8396)
+(2890,8384)
+(2884,8379)
+(2878,8371)
+(2875,8364)
+(2869,8357)
+(2864,8353)
+(2859,8352)
+(2858,8350)
+(2848,8343)
+(2845,8343)
+(2842,8339)
+(2839,8338)
+(2838,8333)
+(2831,8326)
+(2825,8317)
+(2822,8314)
+(2815,8310)
+(2812,8310)
+(2808,8305)
+(2804,8303)
+(2798,8301)
+(2792,8300)
+(2789,8294)
+(2787,8292)
+(2777,8287)
+(2773,8286)
+(2768,8281)
+(2766,8277)
+(2764,8276)
+(2756,8267)
+(2752,8262)
+(2748,8260)
+(2741,8251)
+(2736,8242)
+(2722,8228)
+(2720,8223)
+(2711,8209)
+(2705,8206)
+(2702,8201)
+(2702,8199)
+(2696,8193)
+(2693,8193)
+(2693,8192)
+(2690,8189)
+(2690,8187)
+(2686,8186)
+(2687,8182)
+(2685,8180)
+(2684,8178)
+(2682,8180)
+(2681,8176)
+(2680,8175)
+(2677,8173)
+(2675,8174)
+(2673,8172)
+(2671,8171)
+(2667,8164)
+(2667,8160)
+(2666,8159)
+(2664,8153)
+(2661,8150)
+(2659,8150)
+(2656,8148)
+(2654,8143)
+(2651,8141)
+(2650,8139)
+(2647,8140)
+(2642,8138)
+(2640,8133)
+(2639,8132)
+(2637,8132)
+(2637,8131)
+(2635,8131)
+(2637,8129)
+(2637,8127)
+(2635,8128)
+(2634,8128)
+(2633,8131)
+(2625,8125)
+(2625,8123)
+(2623,8121)
+(2623,8119)
+(2621,8116)
+(2623,8115)
+(2624,8115)
+(2624,8114)
+(2623,8113)
+(2623,8111)
+(2621,8114)
+(2618,8113)
+(2616,8110)
+(2610,8108)
+(2610,8104)
+(2607,8098)
+(2606,8097)
+(2603,8090)
+(2598,8086)
+(2598,8082)
+(2594,8076)
+(2594,8073)
+(2589,8065)
+(2587,8061)
+(2587,8059)
+(2586,8058)
+(2585,8051)
+(2580,8047)
+(2578,8042)
+(2572,8034)
+(2574,8032)
+(2571,8024)
+(2569,8023)
+(2571,8021)
+(2571,8016)
+(2569,8014)
+(2569,8012)
+(2569,8011)
+(2568,8009)
+(2565,8002)
+(2566,7999)
+(2565,7994)
+(2561,7990)
+(2561,7982)
+(2563,7980)
+(2564,7982)
+(2564,7985)
+(2568,7980)
+(2569,7980)
+(2569,7976)
+(2569,7974)
+(2566,7973)
+(2564,7971)
+(2566,7968)
+(2569,7968)
+(2570,7966)
+(2573,7966)
+(2574,7966)
+(2574,7964)
+(2572,7961)
+(2571,7961)
+(2571,7956)
+(2570,7955)
+(2572,7950)
+(2575,7950)
+(2576,7948)
+(2576,7944)
+(2575,7943)
+(2574,7941)
+(2571,7941)
+(2571,7939)
+(2573,7937)
+(2578,7937)
+(2581,7938)
+(2584,7937)
+(2585,7938)
+(2588,7940)
+(2590,7939)
+(2590,7941)
+(2592,7943)
+(2593,7942)
+(2593,7939)
+(2595,7938)
+(2597,7941)
+(2599,7938)
+(2599,7937)
+(2597,7937)
+(2594,7934)
+(2591,7926)
+(2587,7922)
+(2585,7919)
+(2585,7914)
+(2585,7913)
+(2587,7915)
+(2585,7910)
+(2592,7915)
+(2594,7920)
+(2597,7923)
+(2599,7923)
+(2599,7921)
+(2596,7919)
+(2598,7918)
+(2598,7910)
+(2600,7910)
+(2600,7909)
+(2597,7906)
+(2593,7905)
+(2592,7903)
+(2591,7906)
+(2590,7905)
+(2590,7904)
+(2591,7902)
+(2591,7900)
+(2590,7900)
+(2589,7899)
+(2590,7902)
+(2589,7901)
+(2582,7894)
+(2580,7894)
+(2579,7893)
+(2580,7891)
+(2580,7890)
+(2577,7890)
+(2576,7886)
+(2576,7883)
+(2575,7883)
+(2574,7885)
+(2573,7884)
+(2572,7888)
+(2570,7882)
+(2568,7881)
+(2566,7882)
+(2567,7879)
+(2566,7877)
+(2562,7875)
+(2560,7875)
+(2560,7873)
+(2557,7873)
+(2556,7874)
+(2554,7874)
+(2553,7872)
+(2554,7870)
+(2556,7872)
+(2557,7868)
+(2560,7867)
+(2558,7866)
+(2557,7866)
+(2559,7861)
+(2558,7858)
+(2556,7856)
+(2558,7849)
+(2558,7852)
+(2557,7856)
+(2559,7857)
+(2559,7853)
+(2558,7848)
+(2559,7847)
+(2560,7850)
+(2561,7850)
+(2561,7845)
+(2561,7843)
+(2560,7841)
+(2559,7840)
+(2557,7844)
+(2554,7844)
+(2556,7846)
+(2554,7847)
+(2553,7851)
+(2551,7852)
+(2551,7850)
+(2548,7850)
+(2547,7847)
+(2541,7845)
+(2537,7841)
+(2539,7839)
+(2543,7839)
+(2545,7836)
+(2550,7834)
+(2553,7834)
+(2555,7837)
+(2557,7836)
+(2561,7832)
+(2561,7828)
+(2562,7825)
+(2563,7824)
+(2565,7826)
+(2570,7838)
+(2570,7846)
+(2571,7847)
+(2573,7849)
+(2571,7852)
+(2571,7861)
+(2574,7863)
+(2575,7867)
+(2576,7868)
+(2578,7866)
+(2582,7866)
+(2588,7873)
+(2589,7873)
+(2592,7871)
+(2596,7876)
+(2602,7876)
+(2604,7879)
+(2607,7878)
+(2612,7872)
+(2613,7871)
+(2616,7873)
+(2617,7872)
+(2620,7873)
+(2622,7872)
+(2624,7873)
+(2629,7872)
+(2635,7875)
+(2638,7874)
+(2642,7875)
+(2643,7878)
+(2645,7877)
+(2648,7876)
+(2652,7875)
+(2655,7874)
+(2658,7873)
+(2661,7872)
+(2664,7871)
+(2667,7870)
+(2671,7869)
+(2674,7868)
+(2677,7867)
+(2681,7866)
+(2682,7864)
+(2685,7863)
+(2687,7860)
+(2690,7857)
+(2692,7863)
+(2693,7864)
+(2695,7864)
+(2696,7868)
+(2695,7873)
+(2695,7876)
+(2698,7880)
+(2698,7888)
+(2699,7889)
+(2707,7899)
+(2708,7899)
+(2710,7898)
+(2712,7899)
+(2713,7900)
+(2713,7905)
+(2720,7910)
+(2721,7912)
+(2720,7914)
+(2717,7916)
+(2714,7921)
+(2713,7926)
+(2712,7930)
+(2711,7935)
+(2710,7939)
+(2709,7944)
+(2708,7948)
+(2707,7952)
+(2706,7957)
+(2705,7961)
+(2704,7966)
+(2703,7970)
+(2701,7976)
+(2703,7982)
+(2707,7987)
+(2710,7988)
+(2715,7986)
+(2727,7989)
+(2730,7991)
+(2734,8002)
+(2734,8005)
+(2736,8005)
+(2737,8008)
+(2739,8007)
+(2740,8009)
+(2741,8009)
+(2742,8007)
+(2744,8009)
+(2746,8009)
+(2747,8010)
+(2748,8008)
+(2750,8009)
+(2750,8010)
+(2753,8011)
+(2753,8013)
+(2752,8015)
+(2754,8016)
+(2756,8017)
+(2756,8020)
+(2764,8023)
+(2769,8021)
+(2769,8025)
+(2772,8027)
+(2773,8028)
+(2772,8030)
+(2773,8031)
+(2774,8031)
+(2775,8034)
+(2778,8033)
+(2779,8035)
+(2780,8032)
+(2781,8033)
+(2782,8035)
+(2784,8036)
+(2785,8034)
+(2786,8031)
+(2788,8031)
+(2792,8034)
+(2794,8034)
+(2797,8039)
+(2800,8041)
+(2806,8043)
+(2809,8041)
+(2815,8044)
+(2818,8044)
+(2825,8048)
+(2825,8052)
+(2827,8053)
+(2828,8053)
+(2830,8051)
+(2832,8052)
+(2835,8049)
+(2839,8051)
+(2841,8054)
+(2845,8059)
+(2846,8069)
+(2848,8073)
+(2850,8074)
+(2854,8080)
+(2858,8081)
+(2862,8086)
+(2864,8086)
+(2868,8081)
+(2872,8080)
+(2874,8076)
+(2877,8076)
+(2880,8073)
+(2884,8075)
+(2886,8080)
+(2894,8081)
+(2896,8084)
+(2898,8077)
+(2902,8074)
+(2901,8069)
+(2903,8065)
+(2902,8055)
+(2900,8051)
+(2899,8043)
+(2898,8041)
+(2896,8039)
+(2896,8033)
+(2895,8025)
+(2891,8022)
+(2890,8016)
+(2886,8012)
+(2884,8011)
+(2884,8009)
+(2886,8004)
+(2886,7999)
+(2887,7993)
+(2886,7985)
+(2882,7981)
+(2880,7973)
+(2877,7970)
+(2876,7966)
+(2877,7965)
+(2877,7960)
+(2876,7959)
+(2872,7960)
+(2868,7955)
+(2864,7955)
+(2863,7952)
+(2865,7941)
+(2862,7930)
+(2862,7920)
+(2860,7915)
+(2861,7912)
+(2860,7909)
+(2862,7901)
+(2860,7897)
+(2859,7895)
+(2860,7893)
+(2863,7892)
+(2864,7885)
+(2864,7876)
+(2862,7870)
+(2860,7866)
+(2862,7859)
+(2863,7856)
+(2868,7857)
+(2874,7853)
+(2883,7841)
+(2886,7840)
+(2888,7840)
+(2891,7845)
+(2895,7846)
+(2897,7850)
+(2900,7849)
+(2901,7846)
+(2905,7844)
+(2909,7846)
+(2910,7844)
+(2909,7838)
+(2911,7837)
+(2914,7837)
+(2916,7831)
+(2928,7838)
+(2931,7840)
+(2932,7840)
+(2933,7837)
+(2931,7831)
+(2933,7828)
+(2934,7825)
+(2932,7817)
+(2932,7813)
+(2940,7799)
+(2942,7794)
+(2945,7795)
+(2947,7790)
+(2949,7791)
+(2950,7786)
+(2952,7784)
+(2956,7783)
+(2957,7781)
+(2956,7776)
+(2958,7773)
+(2963,7772)
+(2965,7769)
+(2965,7763)
+(2964,7762)
+(2961,7762)
+(2961,7759)
+(2963,7755)
+(2963,7752)
+(2961,7746)
+(2962,7743)
+(2966,7740)
+(2967,7735)
+(2968,7734)
+(2969,7731)
+(2968,7725)
+(2970,7725)
+(2972,7728)
+(2974,7727)
+(2975,7723)
+(2977,7720)
+(2974,7717)
+(2975,7710)
+(2974,7702)
+(2972,7700)
+(2973,7696)
+(2972,7693)
+(2972,7686)
+(2975,7680)
+(2976,7677)
+(2975,7674)
+(2975,7669)
+(2978,7666)
+(2980,7661)
+(2985,7660)
+(2988,7652)
+(2990,7650)
+(2995,7652)
+(2999,7649)
+(3003,7649)
+(3008,7654)
+(3012,7655)
+(3019,7640)
+(3025,7641)
+(3028,7637)
+(3034,7642)
+(3041,7637)
+(3044,7638)
+(3047,7633)
+(3055,7628)
+(3058,7622)
+(3063,7616)
+(3071,7614)
+(3077,7618)
+(3078,7619)
+(3080,7617)
+(3078,7612)
+(3076,7613)
+(3075,7614)
+(3074,7613)
+(3075,7611)
+(3076,7609)
+(3080,7609)
+(3080,7614)
+(3083,7615)
+(3084,7614)
+(3085,7607)
+(3087,7607)
+(3090,7609)
+(3092,7608)
+(3094,7600)
+(3096,7600)
+(3098,7604)
+(3100,7602)
+(3102,7603)
+(3103,7602)
+(3104,7600)
+(3105,7598)
+(3114,7591)
+(3116,7588)
+(3120,7586)
+(3122,7588)
+(3122,7591)
+(3128,7593)
+(3130,7588)
+(3132,7579)
+(3134,7580)
+(3137,7586)
+(3138,7579)
+(3143,7580)
+(3148,7576)
+(3148,7572)
+(3151,7573)
+(3152,7571)
+(3155,7564)
+(3154,7563)
+(3154,7561)
+(3157,7559)
+(3159,7559)
+(3161,7564)
+(3164,7562)
+(3165,7566)
+(3166,7566)
+(3167,7563)
+(3166,7558)
+(3171,7552)
+(3173,7552)
+(3174,7550)
+(3173,7539)
+(3175,7539)
+(3177,7543)
+(3179,7544)
+(3181,7539)
+(3183,7537)
+(3183,7534)
+(3182,7530)
+(3185,7528)
+(3192,7510)
+(3192,7504)
+(3190,7493)
+(3186,7494)
+(3185,7491)
+(3188,7488)
+(3188,7482)
+(3190,7482)
+(3191,7479)
+(3191,7470)
+(3193,7464)
+(3195,7460)
+(3202,7455)
+(3202,7451)
+(3200,7447)
+(3204,7441)
+(3206,7439)
+(3208,7433)
+(3210,7422)
+(3213,7417)
+(3212,7415)
+(3210,7412)
+(3212,7413)
+(3213,7410)
+(3210,7409)
+(3211,7407)
+(3213,7396)
+(3210,7389)
+(3209,7378)
+(3207,7369)
+(3207,7357)
+(3206,7345)
+(3209,7339)
+(3208,7335)
+(3208,7330)
+(3205,7326)
+(3205,7321)
+(3205,7318)
+(3205,7309)
+(3203,7304)
+(3203,7300)
+(3200,7290)
+(3199,7280)
+(3197,7274)
+(3196,7268)
+(3197,7264)
+(3197,7262)
+(3197,7252)
+(3196,7250)
+(3194,7250)
+(3191,7243)
+(3186,7238)
+(3181,7229)
+(3171,7216)
+(3168,7210)
+(3168,7207)
+(3166,7202)
+(3162,7203)
+(3157,7202)
+(3155,7204)
+(3155,7211)
+(3157,7217)
+(3157,7223)
+(3158,7226)
+(3152,7243)
+(3146,7241)
+(3140,7237)
+(3138,7239)
+(3134,7246)
+(3127,7247)
+(3124,7245)
+(3123,7242)
+(3119,7243)
+(3115,7239)
+(3114,7234)
+(3113,7233)
+(3113,7229)
+(3110,7228)
+(3110,7224)
+(3106,7219)
+(3100,7211)
+(3100,7206)
+(3097,7203)
+(3093,7203)
+(3090,7199)
+(3086,7199)
+(3083,7197)
+(3082,7193)
+(3080,7195)
+(3077,7192)
+(3076,7189)
+(3073,7189)
+(3072,7185)
+(3070,7187)
+(3069,7186)
+(3064,7185)
+(3060,7180)
+(3058,7175)
+(3056,7174)
+(3054,7171)
+(3053,7172)
+(3050,7170)
+(3048,7171)
+(3045,7170)
+(3041,7167)
+(3040,7163)
+(3038,7162)
+(3036,7157)
+(3027,7155)
+(3025,7152)
+(3025,7150)
+(3024,7148)
+(3022,7148)
+(3022,7151)
+(3021,7151)
+(3021,7161)
+(3019,7162)
+(3016,7160)
+(3010,7161)
+(3006,7160)
+(3001,7154)
+(2999,7144)
+(2999,7135)
+(2997,7123)
+(2997,7118)
+(2994,7112)
+(2989,7108)
+(2989,7103)
+(2987,7102)
+(2984,7094)
+(2980,7090)
+(2979,7087)
+(2976,7082)
+(2973,7074)
+(2970,7072)
+(2971,7067)
+(2977,7050)
+(2978,7037)
+(2979,7030)
+(2983,7018)
+(2990,7003)
+(2996,6997)
+(2998,6986)
+(3002,6973)
+(3000,6964)
+(2994,6948)
+(2993,6944)
+(2994,6938)
+(2994,6924)
+(3000,6912)
+(3009,6901)
+(3014,6891)
+(3015,6887)
+(3016,6880)
+(3015,6873)
+(3015,6867)
+(3017,6859)
+(3015,6851)
+(3011,6844)
+(3010,6840)
+(3005,6832)
+(3005,6827)
+(3001,6814)
+(2998,6809)
+(2996,6807)
+(2988,6792)
+(2980,6786)
+(2976,6785)
+(2975,6779)
+(2972,6774)
+(2970,6766)
+(2970,6762)
+(2972,6758)
+(2972,6749)
+(2966,6728)
+(2964,6718)
+(2964,6710)
+(2964,6701)
+(2961,6692)
+(2961,6689)
+(2962,6682)
+(2960,6678)
+(2958,6671)
+(2951,6657)
+(2949,6647)
+(2949,6642)
+(2952,6628)
+(2955,6624)
+(2951,6618)
+(2950,6612)
+(2951,6605)
+(2952,6594)
+(2951,6591)
+(2954,6585)
+(2954,6573)
+(2955,6570)
+(2957,6569)
+(2958,6566)
+(2960,6561)
+(2962,6552)
+(2960,6544)
+(2961,6537)
+(2961,6533)
+(2960,6513)
+(2966,6502)
+(2972,6496)
+(2973,6489)
+(2975,6484)
+(2977,6482)
+(2980,6482)
+(2980,6478)
+(2981,6477)
+(2985,6479)
+(2991,6477)
+(2997,6479)
+(2997,6474)
+(2998,6471)
+(2997,6469)
+(2999,6465)
+(2999,6445)
+(3001,6439)
+(3000,6436)
+(3002,6431)
+(3003,6429)
+(3005,6425)
+(3009,6422)
+(3012,6420)
+(3020,6404)
+(3021,6393)
+(3018,6375)
+(3020,6370)
+(3021,6364)
+(3023,6364)
+(3025,6359)
+(3026,6351)
+(3026,6348)
+(3026,6338)
+(3029,6321)
+(3028,6317)
+(3025,6311)
+(3024,6307)
+(3024,6301)
+(3022,6294)
+(3021,6290)
+(3021,6283)
+(3018,6278)
+(3018,6265)
+(3015,6261)
+(3014,6258)
+(3012,6256)
+(3010,6255)
+(3008,6244)
+(3012,6229)
+(3009,6224)
+(3008,6220)
+(3012,6208)
+(3012,6199)
+(3013,6197)
+(3018,6195)
+(3019,6191)
+(3018,6180)
+(3019,6175)
+(3023,6167)
+(3025,6157)
+(3031,6152)
+(3032,6149)
+(3033,6142)
+(3034,6140)
+(3039,6138)
+(3043,6141)
+(3045,6140)
+(3047,6136)
+(3050,6134)
+(3051,6134)
+(3054,6136)
+(3057,6134)
+(3059,6135)
+(3067,6130)
+(3072,6131)
+(3075,6129)
+(3078,6134)
+(3080,6133)
+(3083,6125)
+(3084,6120)
+(3085,6116)
+(3086,6109)
+(3087,6106)
+(3087,6100)
+(3089,6095)
+(3087,6083)
+(3091,6076)
+(3092,6069)
+(3094,6066)
+(3102,6042)
+(3103,6036)
+(3104,6033)
+(3104,6015)
+(3105,5997)
+(3107,5993)
+(3113,5984)
+(3114,5974)
+(3117,5959)
+(3120,5955)
+(3124,5942)
+(3127,5940)
+(3129,5936)
+(3127,5933)
+(3122,5932)
+(3110,5922)
+(3107,5917)
+(3103,5900)
+(3095,5895)
+(3091,5896)
+(3087,5894)
+(3087,5892)
+(3088,5887)
+(3087,5883)
+(3079,5876)
+(3073,5878)
+(3070,5875)
+(3064,5873)
+(3060,5870)
+(3056,5873)
+(3054,5877)
+(3052,5878)
+(3051,5881)
+(3047,5878)
+(3038,5884)
+(3034,5890)
+(3034,5896)
+(3031,5899)
+(3028,5900)
+(3024,5897)
+(3018,5897)
+(3003,5886)
+(2999,5877)
+(2996,5872)
+(2998,5867)
+(2996,5856)
+(2995,5855)
+(2993,5856)
+(2991,5855)
+(2987,5849)
+(2984,5840)
+(2984,5837)
+(2986,5830)
+(2988,5829)
+(2989,5825)
+(2994,5820)
+(2995,5803)
+(2992,5797)
+(2992,5796)
+(2996,5793)
+(2996,5790)
+(2994,5783)
+(2997,5778)
+(3000,5764)
+(2997,5758)
+(3001,5754)
+(3001,5750)
+(2997,5745)
+(2996,5736)
+(2994,5732)
+(2997,5725)
+(2997,5705)
+(3001,5701)
+(3003,5699)
+(3004,5690)
+(3001,5678)
+(3004,5676)
+(3007,5672)
+(3010,5671)
+(3011,5665)
+(3013,5663)
+(3018,5662)
+(3025,5661)
+(3030,5658)
+(3033,5658)
+(3034,5657)
+(3035,5613)
+(3037,5606)
+(3036,5601)
+(3037,5593)
+(3036,5586)
+(3037,5581)
+(3038,5581)
+(3039,5578)
+(3045,5580)
+(3047,5579)
+(3048,5568)
+(3043,5566)
+(3041,5562)
+(3041,5560)
+(3045,5554)
+(3047,5548)
+(3052,5545)
+(3052,5543)
+(3051,5540)
+(3045,5538)
+(3042,5533)
+(3041,5527)
+(3043,5515)
+(3042,5507)
+(3039,5500)
+(3034,5496)
+(3032,5488)
+(3029,5487)
+(3028,5486)
+(3029,5478)
+(3026,5470)
+(3026,5462)
+(3020,5452)
+(3018,5445)
+(3015,5444)
+(3013,5442)
+(3013,5439)
+(3013,5431)
+(3011,5427)
+(3011,5421)
+(3007,5415)
+(3005,5403)
+(3003,5401)
+(3000,5401)
+(2998,5399)
+(2997,5394)
+(2997,5387)
+(2995,5380)
+(2994,5378)
+(2991,5378)
+(2989,5380)
+(2988,5379)
+(2985,5384)
+(2983,5384)
+(2981,5378)
+(2979,5368)
+(2975,5363)
+(2978,5356)
+(2978,5354)
+(2977,5352)
+(2974,5354)
+(2972,5354)
+(2970,5351)
+(2968,5341)
+(2968,5339)
+(2972,5337)
+(2973,5335)
+(2972,5333)
+(2968,5333)
+(2968,5334)
+(2967,5334)
+(2966,5331)
+(2967,5324)
+(2970,5319)
+(2969,5314)
+(2969,5301)
+(2968,5293)
+(2962,5288)
+(2958,5290)
+(2956,5290)
+(2954,5283)
+(2951,5279)
+(2950,5270)
+(2950,5263)
+(2948,5256)
+(2948,5252)
+(2946,5250)
+(2945,5246)
+(2946,5239)
+(2950,5238)
+(2953,5236)
+(2955,5231)
+(2955,5226)
+(2955,5223)
+(2958,5220)
+(2958,5218)
+(2961,5214)
+(2964,5215)
+(2967,5209)
+(2970,5209)
+(2972,5207)
+(2974,5203)
+(2974,5200)
+(2977,5197)
+(2980,5199)
+(2982,5205)
+(2983,5207)
+(2988,5208)
+(2988,5203)
+(2988,5199)
+(2988,5197)
+(2985,5196)
+(2983,5192)
+(2981,5188)
+(2977,5183)
+(2976,5178)
+(2975,5175)
+(2972,5174)
+(2971,5172)
+(2968,5170)
+(2971,5167)
+(2971,5162)
+(2969,5159)
+(2970,5157)
+(2973,5156)
+(2973,5151)
+(2974,5146)
+(2973,5142)
+(2975,5137)
+(2976,5133)
+(2975,5127)
+(2974,5126)
+(2974,5122)
+(2976,5120)
+(2975,5117)
+(2978,5113)
+(2982,5112)
+(2985,5111)
+(2990,5107)
+(2993,5106)
+(2994,5101)
+(2996,5099)
+(3000,5099)
+(3000,5101)
+(3003,5101)
+(3005,5096)
+(3006,5091)
+(3008,5088)
+(3010,5082)
+(3011,5077)
+(3013,5071)
+(3015,5070)
+(3015,5068)
+(3013,5062)
+(3013,5060)
+(3016,5056)
+(3018,5054)
+(3021,5055)
+(3026,5053)
+(3030,5054)
+(3033,5052)
+(3036,5047)
+(3040,5043)
+(3042,5040)
+(3045,5038)
+(3049,5035)
+(3052,5030)
+(3054,5023)
+(3055,5019)
+(3057,5015)
+(3057,5009)
+(3059,5005)
+(3061,5006)
+(3060,5001)
+(3061,4995)
+(3060,4992)
+(3061,4987)
+(3057,4985)
+(3055,4981)
+(3054,4976)
+(3056,4969)
+(3056,4964)
+(3052,4963)
+(3049,4962)
+(3046,4954)
+(3046,4949)
+(3047,4943)
+(3047,4937)
+(3045,4933)
+(3045,4927)
+(3048,4922)
+(3048,4917)
+(3048,4910)
+(3049,4908)
+(3046,4906)
+(3046,4901)
+(3045,4896)
+(3045,4889)
+(3046,4887)
+(3049,4888)
+(3052,4888)
+(3052,4886)
+(3056,4886)
+(3059,4884)
+(3058,4878)
+(3057,4873)
+(3057,4867)
+(3057,4864)
+(3060,4865)
+(3063,4866)
+(3069,4869)
+(3072,4868)
+(3070,4864)
+(3073,4856)
+(3075,4856)
+(3076,4851)
+(3078,4845)
+(3078,4839)
+(3075,4838)
+(3073,4838)
+(3072,4837)
+(3073,4829)
+(3073,4827)
+(3068,4826)
+(3065,4829)
+(3061,4828)
+(3058,4828)
+(3058,4826)
+(3056,4823)
+(3056,4816)
+(3054,4812)
+(3050,4812)
+(3050,4806)
+(3051,4804)
+(3047,4804)
+(3046,4805)
+(3049,4802)
+(3053,4799)
+(3056,4796)
+(3060,4794)
+(3065,4789)
+(3069,4787)
+(3075,4782)
+(3078,4780)
+(3082,4777)
+(3085,4774)
+(3088,4772)
+(3091,4770)
+(3095,4767)
+(3098,4764)
+(3102,4762)
+(3105,4759)
+(3109,4756)
+(3112,4753)
+(3116,4750)
+(3120,4747)
+(3124,4743)
+(3128,4740)
+(3130,4737)
+(3134,4734)
+(3139,4731)
+(3142,4728)
+(3146,4724)
+(3149,4721)
+(3153,4717)
+(3156,4715)
+(3158,4712)
+(3162,4709)
+(3165,4707)
+(3171,4701)
+(3175,4697)
+(3177,4695)
+(3180,4692)
+(3184,4687)
+(3187,4684)
+(3190,4681)
+(3193,4679)
+(3196,4676)
+(3199,4672)
+(3202,4666)
+(3205,4662)
+(3207,4657)
+(3211,4651)
+(3214,4644)
+(3216,4640)
+(3218,4635)
+(3220,4631)
+(3223,4624)
+(3225,4620)
+(3228,4614)
+(3230,4610)
+(3232,4606)
+(3235,4600)
+(3238,4595)
+(3241,4592)
+(3245,4590)
+(3248,4586)
+(3249,4585)
+(3250,4586)
+(3250,4591)
+(3250,4597)
+(3248,4598)
+(3249,4603)
+(3252,4606)
+(3254,4611)
+(3258,4612)
+(3261,4612)
+(3263,4607)
+(3265,4613)
+(3266,4616)
+(3267,4616)
+(3265,4607)
+(3265,4605)
+(3262,4601)
+(3261,4595)
+(3260,4590)
+(3260,4584)
+(3260,4578)
+(3261,4575)
+(3258,4572)
+(3255,4569)
+(3254,4564)
+(3252,4558)
+(3251,4553)
+(3249,4548)
+(3248,4542)
+(3246,4537)
+(3247,4532)
+(3245,4525)
+(3242,4527)
+(3239,4528)
+(3237,4523)
+(3235,4519)
+(3233,4514)
+(3231,4510)
+(3228,4504)
+(3227,4502)
+(3229,4496)
+(3229,4491)
+(3229,4489)
+(3226,4487)
+(3225,4481)
+(3222,4480)
+(3220,4479)
+(3221,4473)
+(3221,4468)
+(3216,4466)
+(3215,4469)
+(3208,4465)
+(3208,4464)
+(3209,4457)
+(3213,4456)
+(3216,4455)
+(3216,4451)
+(3213,4449)
+(3213,4444)
+(3218,4444)
+(3219,4437)
+(3219,4434)
+(3216,4431)
+(3217,4425)
+(3217,4420)
+(3214,4419)
+(3214,4416)
+(3210,4413)
+(3207,4407)
+(3209,4403)
+(3212,4404)
+(3213,4400)
+(3214,4395)
+(3219,4397)
+(3221,4396)
+(3221,4399)
+(3225,4401)
+(3228,4401)
+(3229,4407)
+(3231,4406)
+(3233,4407)
+(3232,4415)
+(3232,4421)
+(3235,4423)
+(3240,4424)
+(3243,4425)
+(3244,4418)
+(3242,4416)
+(3240,4411)
+(3237,4412)
+(3239,4407)
+(3239,4405)
+(3238,4405)
+(3237,4399)
+(3238,4393)
+(3239,4385)
+(3243,4383)
+(3243,4379)
+(3246,4379)
+(3246,4370)
+(3248,4365)
+(3248,4356)
+(3245,4352)
+(3243,4351)
+(3243,4357)
+(3243,4359)
+(3240,4363)
+(3239,4363)
+(3237,4363)
+(3239,4353)
+(3235,4350)
+(3236,4344)
+(3237,4343)
+(3242,4345)
+(3245,4342)
+(3246,4342)
+(3247,4347)
+(3247,4349)
+(3248,4350)
+(3249,4344)
+(3251,4338)
+(3254,4339)
+(3255,4337)
+(3259,4336)
+(3262,4331)
+(3262,4324)
+(3260,4324)
+(3257,4328)
+(3255,4325)
+(3252,4330)
+(3251,4332)
+(3248,4330)
+(3249,4326)
+(3252,4324)
+(3254,4314)
+(3255,4306)
+(3252,4304)
+(3249,4305)
+(3247,4301)
+(3247,4295)
+(3247,4291)
+(3250,4289)
+(3251,4284)
+(3251,4279)
+(3247,4273)
+(3247,4270)
+(3251,4268)
+(3253,4264)
+(3256,4266)
+(3258,4261)
+(3261,4261)
+(3259,4269)
+(3259,4271)
+(3263,4274)
+(3267,4272)
+(3270,4272)
+(3275,4272)
+(3277,4278)
+(3280,4278)
+(3282,4272)
+(3284,4266)
+(3287,4263)
+(3291,4262)
+(3294,4260)
+(3299,4261)
+(3303,4261)
+(3307,4259)
+(3310,4256)
+(3314,4251)
+(3317,4250)
+(3318,4244)
+(3316,4239)
+(3316,4232)
+(3317,4229)
+(3316,4227)
+(3313,4225)
+(3311,4219)
+(3308,4214)
+(3308,4208)
+(3311,4203)
+(3312,4200)
+(3313,4195)
+(3317,4193)
+(3319,4188)
+(3320,4181)
+(3321,4176)
+(3320,4169)
+(3322,4164)
+(3321,4156)
+(3320,4152)
+(3323,4148)
+(3325,4143)
+(3326,4137)
+(3322,4135)
+(3320,4140)
+(3317,4140)
+(3319,4134)
+(3321,4129)
+(3320,4123)
+(3317,4122)
+(3314,4118)
+(3311,4117)
+(3312,4111)
+(3312,4104)
+(3311,4101)
+(3311,4095)
+(3311,4093)
+(3311,4091)
+(3308,4092)
+(3305,4096)
+(3301,4093)
+(3298,4093)
+(3297,4086)
+(3297,4081)
+(3298,4076)
+(3298,4071)
+(3295,4067)
+(3292,4063)
+(3291,4058)
+(3290,4053)
+(3291,4046)
+(3292,4041)
+(3292,4039)
+(3289,4036)
+(3288,4030)
+(3287,4024)
+(3287,4017)
+(3286,4011)
+(3285,4005)
+(3284,4004)
+(3283,3996)
+(3283,3991)
+(3282,3984)
+(3281,3978)
+(3279,3971)
+(3278,3963)
+(3277,3958)
+(3282,3958)
+(3282,3952)
+(3279,3949)
+(3276,3946)
+(3278,3940)
+(3278,3935)
+(3279,3930)
+(3279,3928)
+(3275,3929)
+(3274,3929)
+(3275,3923)
+(3274,3917)
+(3272,3913)
+(3267,3911)
+(3264,3914)
+(3260,3913)
+(3260,3907)
+(3264,3902)
+(3265,3897)
+(3263,3891)
+(3261,3885)
+(3264,3885)
+(3264,3879)
+(3262,3874)
+(3262,3869)
+(3260,3867)
+(3260,3861)
+(3259,3856)
+(3259,3850)
+(3259,3845)
+(3257,3841)
+(3258,3841)
+(3259,3840)
+(3257,3839)
+(3257,3833)
+(3256,3828)
+(3255,3823)
+(3254,3818)
+(3253,3813)
+(3252,3807)
+(3252,3800)
+(3252,3795)
+(3251,3790)
+(3248,3790)
+(3246,3785)
+(3246,3779)
+(3247,3773)
+(3247,3770)
+(3244,3766)
+(3242,3762)
+(3240,3758)
+(3238,3755)
+(3235,3754)
+(3234,3752)
+(3236,3747)
+(3239,3745)
+(3241,3749)
+(3243,3745)
+(3242,3740)
+(3242,3735)
+(3242,3728)
+(3243,3726)
+(3242,3721)
+(3239,3722)
+(3238,3723)
+(3237,3717)
+(3238,3712)
+(3241,3714)
+(3242,3711)
+(3239,3708)
+(3242,3704)
+(3240,3698)
+(3238,3698)
+(3237,3697)
+(3240,3694)
+(3242,3690)
+(3245,3688)
+(3245,3682)
+(3245,3680)
+(3242,3675)
+(3239,3677)
+(3236,3675)
+(3235,3675)
+(3235,3672)
+(3237,3670)
+(3237,3664)
+(3237,3662)
+(3234,3659)
+(3233,3664)
+(3233,3667)
+(3231,3671)
+(3229,3673)
+(3226,3671)
+(3223,3667)
+(3222,3663)
+(3219,3663)
+(3220,3656)
+(3217,3655)
+(3217,3661)
+(3216,3666)
+(3214,3670)
+(3214,3676)
+(3214,3681)
+(3216,3686)
+(3215,3691)
+(3212,3695)
+(3210,3695)
+(3208,3691)
+(3208,3685)
+(3209,3683)
+(3210,3678)
+(3210,3676)
+(3206,3674)
+(3204,3670)
+(3199,3670)
+(3196,3675)
+(3196,3680)
+(3195,3686)
+(3193,3691)
+(3193,3697)
+(3195,3700)
+(3193,3704)
+(3190,3708)
+(3188,3714)
+(3188,3719)
+(3187,3725)
+(3187,3727)
+(3184,3728)
+(3180,3728)
+(3178,3724)
+(3177,3719)
+(3181,3714)
+(3180,3708)
+(3180,3703)
+(3178,3699)
+(3180,3695)
+(3182,3690)
+(3182,3688)
+(3180,3684)
+(3180,3679)
+(3182,3674)
+(3180,3669)
+(3178,3667)
+(3179,3662)
+(3176,3664)
+(3173,3661)
+(3170,3657)
+(3168,3653)
+(3166,3650)
+(3165,3644)
+(3162,3643)
+(3159,3645)
+(3158,3650)
+(3155,3651)
+(3151,3651)
+(3150,3656)
+(3150,3658)
+(3146,3660)
+(3142,3663)
+(3138,3660)
+(3136,3656)
+(3134,3651)
+(3134,3648)
+(3131,3645)
+(3130,3640)
+(3130,3633)
+(3128,3628)
+(3126,3624)
+(3122,3620)
+(3120,3614)
+(3120,3609)
+(3119,3604)
+(3116,3603)
+(3113,3606)
+(3112,3611)
+(3113,3611)
+(3114,3610)
+(3113,3615)
+(3111,3620)
+(3109,3624)
+(3108,3631)
+(3104,3627)
+(3102,3624)
+(3099,3629)
+(3097,3636)
+(3097,3642)
+(3097,3647)
+(3097,3654)
+(3093,3656)
+(3090,3658)
+(3088,3662)
+(3087,3667)
+(3087,3668)
+(3087,3671)
+(3085,3677)
+(3084,3683)
+(3086,3687)
+(3084,3691)
+(3080,3693)
+(3078,3698)
+(3076,3701)
+(3075,3695)
+(3071,3694)
+(3068,3693)
+(3062,3691)
+(3059,3690)
+(3054,3689)
+(3050,3688)
+(3047,3683)
+(3045,3675)
+(3044,3671)
+(3042,3662)
+(3041,3656)
+(3040,3650)
+(3040,3641)
+(3040,3635)
+(3040,3629)
+(3041,3623)
+(3042,3619)
+(3045,3614)
+(3048,3611)
+(3050,3611)
+(3052,3605)
+(3050,3600)
+(3049,3600)
+(3046,3598)
+(3042,3596)
+(3039,3594)
+(3036,3590)
+(3034,3583)
+(3032,3577)
+(3031,3572)
+(3035,3571)
+(3039,3569)
+(3039,3563)
+(3040,3558)
+(3039,3557)
+(3041,3551)
+(3042,3542)
+(3042,3537)
+(3043,3532)
+(3045,3531)
+(3047,3527)
+(3050,3527)
+(3050,3522)
+(3049,3517)
+(3053,3514)
+(3056,3514)
+(3060,3516)
+(3064,3514)
+(3065,3509)
+(3065,3504)
+(3065,3502)
+(3069,3500)
+(3070,3498)
+(3068,3493)
+(3066,3493)
+(3064,3491)
+(3065,3486)
+(3066,3486)
+(3067,3486)
+(3068,3485)
+(3066,3481)
+(3066,3476)
+(3067,3471)
+(3068,3470)
+(3068,3468)
+(3068,3467)
+(3065,3465)
+(3060,3465)
+(3056,3464)
+(3055,3463)
+(3055,3461)
+(3057,3459)
+(3056,3454)
+(3055,3452)
+(3053,3452)
+(3053,3446)
+(3056,3441)
+(3059,3439)
+(3061,3436)
+(3064,3432)
+(3066,3431)
+(3064,3425)
+(3063,3420)
+(3064,3419)
+(3063,3414)
+(3065,3409)
+(3065,3404)
+(3061,3404)
+(3058,3404)
+(3059,3399)
+(3062,3395)
+(3064,3392)
+(3065,3391)
+(3065,3390)
+(3063,3388)
+(3059,3389)
+(3059,3388)
+(3058,3384)
+(3055,3383)
+(3055,3378)
+(3056,3373)
+(3055,3370)
+(3051,3369)
+(3048,3368)
+(3045,3367)
+(3043,3362)
+(3041,3357)
+(3039,3352)
+(3037,3346)
+(3035,3343)
+(3034,3342)
+(3036,3337)
+(3038,3332)
+(3040,3329)
+(3040,3324)
+(3039,3323)
+(3042,3318)
+(3045,3313)
+(3047,3309)
+(3049,3304)
+(3052,3306)
+(3054,3306)
+(3056,3303)
+(3055,3301)
+(3053,3300)
+(3052,3295)
+(3051,3294)
+(3051,3291)
+(3053,3290)
+(3053,3284)
+(3053,3283)
+(3049,3280)
+(3045,3280)
+(3041,3283)
+(3038,3284)
+(3035,3279)
+(3033,3278)
+(3032,3272)
+(3032,3270)
+(3035,3268)
+(3038,3265)
+(3041,3267)
+(3044,3267)
+(3047,3268)
+(3050,3271)
+(3052,3267)
+(3053,3259)
+(3056,3255)
+(3059,3252)
+(3061,3250)
+(3062,3252)
+(3063,3249)
+(3067,3248)
+(3068,3244)
+(3070,3242)
+(3071,3237)
+(3072,3232)
+(3072,3227)
+(3072,3225)
+(3074,3221)
+(3076,3219)
+(3079,3217)
+(3082,3218)
+(3085,3215)
+(3086,3210)
+(3089,3207)
+(3091,3203)
+(3090,3198)
+(3090,3193)
+(3091,3191)
+(3092,3192)
+(3092,3189)
+(3090,3190)
+(3089,3187)
+(3089,3186)
+(3089,3183)
+(3089,3178)
+(3088,3178)
+(3089,3177)
+(3090,3176)
+(3089,3175)
+(3089,3173)
+(3090,3173)
+(3090,3168)
+(3092,3167)
+(3090,3165)
+(3089,3161)
+(3088,3162)
+(3089,3160)
+(3087,3158)
+(3088,3156)
+(3088,3154)
+(3090,3151)
+(3093,3150)
+(3097,3147)
+(3099,3143)
+(3105,3142)
+(3106,3141)
+(3106,3140)
+(3103,3137)
+(3103,3131)
+(3100,3128)
+(3100,3123)
+(3100,3118)
+(3101,3111)
+(3098,3108)
+(3095,3105)
+(3092,3108)
+(3089,3103)
+(3088,3098)
+(3092,3098)
+(3092,3095)
+(3093,3094)
+(3094,3093)
+(3091,3091)
+(3089,3086)
+(3089,3079)
+(3090,3077)
+(3093,3075)
+(3094,3081)
+(3099,3082)
+(3100,3078)
+(3101,3077)
+(3101,3071)
+(3100,3064)
+(3101,3058)
+(3101,3053)
+(3104,3052)
+(3106,3046)
+(3106,3045)
+(3102,3044)
+(3100,3048)
+(3096,3047)
+(3094,3041)
+(3094,3040)
+(3098,3043)
+(3099,3037)
+(3099,3036)
+(3096,3033)
+(3096,3031)
+(3093,3030)
+(3089,3031)
+(3088,3028)
+(3087,3028)
+(3086,3022)
+(3083,3020)
+(3079,3018)
+(3078,3013)
+(3077,3007)
+(3075,3000)
+(3072,2992)
+(3069,2988)
+(3067,2984)
+(3067,2978)
+(3067,2973)
+(3067,2968)
+(3068,2965)
+(3066,2962)
+(3062,2961)
+(3060,2959)
+(3056,2964)
+(3053,2965)
+(3050,2960)
+(3050,2955)
+(3048,2949)
+(3046,2944)
+(3043,2941)
+(3040,2937)
+(3038,2932)
+(3036,2929)
+(3037,2923)
+(3040,2918)
+(3040,2916)
+(3039,2913)
+(3037,2914)
+(3035,2918)
+(3028,2920)
+(3025,2920)
+(3020,2921)
+(3015,2923)
+(3012,2926)
+(3008,2926)
+(3006,2926)
+(3005,2931)
+(3001,2933)
+(2998,2928)
+(2996,2924)
+(2994,2919)
+(2993,2914)
+(2990,2906)
+(2989,2906)
+(2990,2903)
+(2990,2901)
+(2992,2898)
+(2992,2897)
+(2992,2895)
+(2992,2893)
+(2996,2891)
+(3000,2888)
+(3003,2887)
+(3006,2885)
+(3008,2881)
+(3011,2878)
+(3014,2875)
+(3017,2871)
+(3020,2868)
+(3022,2864)
+(3024,2860)
+(3027,2855)
+(3027,2851)
+(3025,2847)
+(3022,2844)
+(3020,2844)
+(3020,2839)
+(3016,2838)
+(3012,2836)
+(3008,2840)
+(3003,2838)
+(3000,2836)
+(2996,2830)
+(2993,2820)
+(2992,2815)
+(2988,2813)
+(2985,2812)
+(2981,2812)
+(2978,2812)
+(2974,2810)
+(2971,2809)
+(2967,2808)
+(2963,2807)
+(2960,2807)
+(2958,2812)
+(2955,2818)
+(2953,2821)
+(2948,2823)
+(2944,2820)
+(2940,2816)
+(2938,2811)
+(2936,2807)
+(2931,2803)
+(2928,2802)
+(2925,2800)
+(2921,2798)
+(2917,2795)
+(2913,2793)
+(2910,2791)
+(2907,2790)
+(2905,2795)
+(2903,2801)
+(2902,2805)
+(2900,2813)
+(2900,2815)
+(2896,2820)
+(2893,2824)
+(2893,2826)
+(2890,2827)
+(2886,2826)
+(2885,2831)
+(2882,2828)
+(2880,2821)
+(2877,2824)
+(2874,2827)
+(2871,2829)
+(2869,2827)
+(2866,2830)
+(2863,2836)
+(2861,2841)
+(2861,2842)
+(2864,2844)
+(2867,2845)
+(2868,2844)
+(2867,2850)
+(2866,2855)
+(2865,2860)
+(2865,2867)
+(2865,2875)
+(2866,2880)
+(2865,2885)
+(2862,2890)
+(2858,2893)
+(2855,2896)
+(2850,2899)
+(2848,2902)
+(2845,2906)
+(2845,2912)
+(2845,2915)
+(2842,2917)
+(2839,2918)
+(2835,2919)
+(2830,2921)
+(2825,2924)
+(2822,2926)
+(2818,2930)
+(2814,2934)
+(2810,2938)
+(2807,2940)
+(2804,2938)
+(2802,2935)
+(2801,2930)
+(2801,2925)
+(2804,2922)
+(2806,2919)
+(2806,2915)
+(2804,2911)
+(2801,2909)
+(2799,2909)
+(2798,2913)
+(2796,2914)
+(2796,2918)
+(2794,2920)
+(2793,2925)
+(2790,2928)
+(2789,2929)
+(2787,2934)
+(2786,2938)
+(2784,2942)
+(2783,2946)
+(2782,2950)
+(2783,2953)
+(2781,2953)
+(2778,2954)
+(2775,2958)
+(2775,2957)
+(2776,2955)
+(2777,2949)
+(2779,2949)
+(2780,2950)
+(2780,2948)
+(2775,2943)
+(2774,2947)
+(2769,2947)
+(2769,2946)
+(2771,2944)
+(2772,2942)
+(2770,2941)
+(2770,2939)
+(2768,2936)
+(2766,2937)
+(2765,2937)
+(2769,2933)
+(2766,2933)
+(2768,2932)
+(2768,2930)
+(2765,2933)
+(2764,2931)
+(2767,2930)
+(2768,2927)
+(2766,2929)
+(2763,2929)
+(2765,2927)
+(2768,2922)
+(2767,2922)
+(2767,2920)
+(2765,2920)
+(2765,2918)
+(2764,2922)
+(2761,2924)
+(2759,2923)
+(2758,2919)
+(2758,2924)
+(2756,2926)
+(2755,2924)
+(2753,2925)
+(2752,2927)
+(2751,2927)
+(2750,2927)
+(2751,2926)
+(2750,2923)
+(2749,2923)
+(2752,2921)
+(2753,2922)
+(2753,2920)
+(2757,2916)
+(2758,2914)
+(2756,2910)
+(2756,2907)
+(2752,2904)
+(2753,2902)
+(2751,2902)
+(2751,2904)
+(2750,2904)
+(2750,2897)
+(2746,2895)
+(2746,2893)
+(2743,2895)
+(2743,2894)
+(2744,2892)
+(2744,2889)
+(2743,2888)
+(2745,2884)
+(2743,2882)
+(2742,2880)
+(2743,2879)
+(2743,2876)
+(2741,2874)
+(2743,2873)
+(2743,2871)
+(2739,2870)
+(2738,2871)
+(2736,2869)
+(2741,2866)
+(2742,2860)
+(2744,2859)
+(2745,2857)
+(2746,2853)
+(2744,2853)
+(2745,2855)
+(2743,2855)
+(2743,2858)
+(2740,2858)
+(2740,2856)
+(2738,2856)
+(2737,2859)
+(2735,2858)
+(2734,2859)
+(2733,2858)
+(2734,2857)
+(2739,2853)
+(2741,2846)
+(2743,2847)
+(2743,2850)
+(2743,2849)
+(2745,2843)
+(2740,2845)
+(2738,2853)
+(2734,2854)
+(2732,2853)
+(2735,2850)
+(2734,2849)
+(2730,2853)
+(2729,2850)
+(2725,2849)
+(2725,2843)
+(2724,2844)
+(2724,2847)
+(2723,2848)
+(2722,2845)
+(2718,2843)
+(2711,2843)
+(2711,2838)
+(2698,2832)
+(2698,2830)
+(2696,2829)
+(2697,2826)
+(2692,2827)
+(2687,2825)
+(2691,2821)
+(2694,2821)
+(2695,2820)
+(2689,2821)
+(2686,2818)
+(2686,2816)
+(2684,2812)
+(2682,2810)
+(2682,2807)
+(2679,2805)
+(2679,2803)
+(2674,2802)
+(2673,2803)
+(2671,2801)
+(2667,2802)
+(2664,2806)
+(2663,2808)
+(2664,2810)
+(2662,2821)
+(2660,2823)
+(2654,2826)
+(2652,2831)
+(2653,2832)
+(2653,2834)
+(2645,2837)
+(2642,2841)
+(2635,2845)
+(2633,2846)
+(2632,2848)
+(2629,2846)
+(2629,2849)
+(2626,2850)
+(2624,2846)
+(2621,2847)
+(2617,2844)
+(2616,2843)
+(2617,2842)
+(2613,2843)
+(2612,2844)
+(2610,2844)
+(2610,2846)
+(2612,2848)
+(2618,2848)
+(2621,2850)
+(2623,2850)
+(2628,2852)
+(2632,2852)
+(2634,2858)
+(2632,2862)
+(2630,2859)
+(2623,2855)
+(2614,2852)
+(2611,2852)
+(2607,2849)
+(2598,2849)
+(2597,2850)
+(2600,2854)
+(2598,2855)
+(2592,2849)
+(2587,2849)
+(2585,2847)
+(2581,2848)
+(2577,2853)
+(2577,2855)
+(2574,2857)
+(2572,2862)
+(2566,2863)
+(2563,2862)
+(2558,2864)
+(2556,2872)
+(2548,2877)
+(2543,2881)
+(2540,2887)
+(2530,2894)
+(2526,2898)
+(2516,2903)
+(2514,2906)
+(2513,2912)
+(2511,2910)
+(2507,2908)
+(2504,2907)
+(2500,2906)
+(2497,2904)
+(2494,2899)
+(2492,2896)
+(2490,2892)
+(2490,2887)
+(2489,2883)
+(2486,2882)
+(2483,2879)
+(2481,2876)
+(2478,2875)
+(2474,2874)
+(2473,2873)
+(2473,2868)
+(2471,2865)
+(2473,2862)
+(2474,2858)
+(2473,2854)
+(2474,2850)
+(2475,2850)
+(2476,2846)
+(2477,2842)
+(2478,2838)
+(2479,2836)
+(2483,2835)
+(2485,2833)
+(2489,2831)
+(2491,2830)
+(2494,2827)
+(2495,2827)
+(2493,2824)
+(2493,2821)
+(2496,2819)
+(2498,2820)
+(2498,2818)
+(2501,2815)
+(2503,2815)
+(2504,2811)
+(2507,2807)
+(2510,2806)
+(2511,2806)
+(2512,2805)
+(2510,2802)
+(2509,2797)
+(2508,2795)
+(2509,2793)
+(2512,2792)
+(2513,2788)
+(2514,2785)
+(2517,2783)
+(2516,2779)
+(2519,2776)
+(2520,2775)
+(2519,2771)
+(2521,2767)
+(2520,2767)
+(2519,2766)
+(2522,2764)
+(2522,2763)
+(2522,2758)
+(2522,2757)
+(2524,2754)
+(2527,2752)
+(2527,2748)
+(2529,2744)
+(2531,2740)
+(2533,2737)
+(2537,2738)
+(2537,2743)
+(2538,2744)
+(2541,2744)
+(2546,2746)
+(2549,2746)
+(2550,2740)
+(2552,2735)
+(2552,2731)
+(2553,2727)
+(2552,2722)
+(2552,2721)
+(2554,2718)
+(2557,2716)
+(2560,2712)
+(2562,2709)
+(2562,2705)
+(2564,2700)
+(2565,2696)
+(2564,2692)
+(2560,2689)
+(2557,2687)
+(2561,2684)
+(2564,2683)
+(2565,2679)
+(2565,2671)
+(2564,2667)
+(2563,2664)
+(2563,2659)
+(2561,2655)
+(2558,2653)
+(2557,2650)
+(2557,2645)
+(2556,2641)
+(2554,2638)
+(2554,2634)
+(2555,2629)
+(2555,2627)
+(2558,2624)
+(2560,2626)
+(2563,2628)
+(2565,2628)
+(2566,2623)
+(2568,2619)
+(2570,2616)
+(2572,2613)
+(2573,2609)
+(2574,2604)
+(2574,2600)
+(2575,2596)
+(2576,2592)
+(2580,2587)
+(2582,2583)
+(2584,2582)
+(2586,2582)
+(2587,2578)
+(2587,2576)
+(2590,2574)
+(2590,2570)
+(2591,2565)
+(2590,2561)
+(2589,2561)
+(2590,2557)
+(2591,2553)
+(2592,2549)
+(2593,2548)
+(2594,2548)
+(2595,2547)
+(2595,2543)
+(2593,2539)
+(2593,2537)
+(2594,2533)
+(2593,2529)
+(2592,2525)
+(2592,2523)
+(2593,2519)
+(2594,2513)
+(2595,2513)
+(2592,2510)
+(2593,2506)
+(2594,2504)
+(2593,2503)
+(2593,2498)
+(2595,2494)
+(2596,2491)
+(2598,2486)
+(2601,2485)
+(2602,2482)
+(2600,2479)
+(2602,2474)
+(2603,2470)
+(2604,2468)
+(2603,2466)
+(2603,2464)
+(2606,2460)
+(2606,2456)
+(2608,2454)
+(2609,2450)
+(2611,2446)
+(2612,2442)
+(2613,2441)
+(2614,2439)
+(2611,2435)
+(2612,2431)
+(2613,2427)
+(2613,2422)
+(2614,2418)
+(2615,2414)
+(2615,2410)
+(2613,2406)
+(2611,2404)
+(2607,2402)
+(2604,2401)
+(2603,2401) \ No newline at end of file
diff --git a/macros/latex/contrib/profcollege/metapost/datastest/russie3bis.dat b/macros/latex/contrib/profcollege/metapost/datastest/russie3bis.dat
new file mode 100644
index 0000000000..0d7eb74191
--- /dev/null
+++ b/macros/latex/contrib/profcollege/metapost/datastest/russie3bis.dat
@@ -0,0 +1,465 @@
+464%
+(4135,-10786)
+(4134,-10775)
+(4135,-10771)
+(4137,-10773)
+(4137,-10771)
+(4134,-10766)
+(4132,-10760)
+(4131,-10761)
+(4131,-10765)
+(4129,-10764)
+(4129,-10753)
+(4127,-10750)
+(4126,-10735)
+(4115,-10709)
+(4116,-10714)
+(4120,-10725)
+(4112,-10724)
+(4110,-10706)
+(4109,-10703)
+(4109,-10695)
+(4106,-10682)
+(4100,-10677)
+(4096,-10685)
+(4095,-10684)
+(4095,-10678)
+(4097,-10677)
+(4100,-10662)
+(4112,-10701)
+(4113,-10703)
+(4104,-10670)
+(4098,-10653)
+(4097,-10648)
+(4098,-10656)
+(4097,-10658)
+(4095,-10666)
+(4093,-10661)
+(4093,-10657)
+(4091,-10658)
+(4093,-10653)
+(4095,-10642)
+(4092,-10630)
+(4092,-10636)
+(4090,-10634)
+(4089,-10635)
+(4088,-10630)
+(4090,-10624)
+(4074,-10569)
+(4070,-10554)
+(4061,-10524)
+(4060,-10518)
+(4059,-10518)
+(4059,-10522)
+(4053,-10516)
+(4052,-10510)
+(4050,-10508)
+(4051,-10516)
+(4050,-10513)
+(4047,-10513)
+(4041,-10523)
+(4041,-10512)
+(4042,-10506)
+(4047,-10503)
+(4049,-10505)
+(4045,-10496)
+(4045,-10497)
+(4044,-10496)
+(4043,-10492)
+(4043,-10490)
+(4038,-10487)
+(4037,-10488)
+(4039,-10490)
+(4037,-10494)
+(4026,-10497)
+(4019,-10495)
+(4016,-10488)
+(4016,-10484)
+(4014,-10488)
+(4012,-10486)
+(4004,-10485)
+(4005,-10486)
+(4005,-10492)
+(4003,-10493)
+(4002,-10497)
+(4001,-10497)
+(4000,-10500)
+(3997,-10494)
+(3995,-10479)
+(3992,-10469)
+(3987,-10465)
+(3988,-10469)
+(3987,-10471)
+(3983,-10470)
+(3981,-10465)
+(3980,-10470)
+(3978,-10468)
+(3978,-10466)
+(3979,-10461)
+(3981,-10464)
+(3984,-10459)
+(3985,-10453)
+(3988,-10456)
+(3988,-10452)
+(3989,-10449)
+(3989,-10441)
+(3987,-10439)
+(3984,-10443)
+(3981,-10439)
+(3979,-10444)
+(3975,-10445)
+(3973,-10441)
+(3976,-10439)
+(3979,-10431)
+(3980,-10436)
+(3981,-10430)
+(3982,-10427)
+(3987,-10425)
+(3989,-10433)
+(3991,-10435)
+(3993,-10453)
+(3995,-10458)
+(4001,-10441)
+(4000,-10439)
+(4001,-10437)
+(4002,-10440)
+(4011,-10441)
+(4014,-10445)
+(4016,-10445)
+(4019,-10447)
+(4019,-10458)
+(4020,-10459)
+(4021,-10455)
+(4023,-10457)
+(4022,-10472)
+(4023,-10474)
+(4024,-10466)
+(4025,-10465)
+(4023,-10477)
+(4024,-10479)
+(4025,-10477)
+(4026,-10463)
+(4025,-10430)
+(4026,-10425)
+(4028,-10421)
+(4026,-10411)
+(4025,-10410)
+(4023,-10412)
+(4022,-10411)
+(4022,-10408)
+(4025,-10406)
+(4023,-10388)
+(4023,-10394)
+(4024,-10398)
+(4022,-10398)
+(4021,-10391)
+(4020,-10393)
+(4020,-10398)
+(4018,-10401)
+(4017,-10401)
+(4015,-10400)
+(4015,-10402)
+(4013,-10400)
+(4012,-10402)
+(4010,-10402)
+(4010,-10393)
+(4012,-10389)
+(4013,-10393)
+(4015,-10392)
+(4015,-10397)
+(4017,-10393)
+(4019,-10393)
+(4020,-10387)
+(4017,-10385)
+(4016,-10382)
+(4014,-10367)
+(4016,-10359)
+(4015,-10355)
+(4016,-10346)
+(4018,-10353)
+(4022,-10383)
+(4023,-10384)
+(4023,-10383)
+(4021,-10357)
+(4020,-10350)
+(4021,-10367)
+(4018,-10340)
+(4017,-10323)
+(4019,-10317)
+(4017,-10315)
+(4017,-10304)
+(4016,-10301)
+(4011,-10302)
+(4008,-10296)
+(4006,-10285)
+(4005,-10284)
+(4003,-10286)
+(3999,-10280)
+(3994,-10266)
+(3991,-10253)
+(3987,-10244)
+(3981,-10235)
+(3979,-10225)
+(3978,-10234)
+(3977,-10233)
+(3974,-10239)
+(3974,-10233)
+(3978,-10227)
+(3978,-10219)
+(3972,-10208)
+(3971,-10211)
+(3972,-10218)
+(3971,-10220)
+(3969,-10214)
+(3969,-10211)
+(3970,-10209)
+(3968,-10196)
+(3970,-10195)
+(3971,-10202)
+(3968,-10183)
+(3964,-10181)
+(3960,-10187)
+(3959,-10189)
+(3961,-10196)
+(3962,-10200)
+(3961,-10207)
+(3951,-10237)
+(3951,-10233)
+(3950,-10231)
+(3946,-10234)
+(3944,-10232)
+(3940,-10232)
+(3937,-10235)
+(3936,-10241)
+(3937,-10253)
+(3939,-10254)
+(3941,-10265)
+(3942,-10272)
+(3946,-10276)
+(3949,-10285)
+(3950,-10292)
+(3949,-10289)
+(3945,-10286)
+(3944,-10279)
+(3943,-10282)
+(3940,-10277)
+(3938,-10268)
+(3936,-10264)
+(3936,-10261)
+(3929,-10263)
+(3929,-10270)
+(3932,-10284)
+(3929,-10324)
+(3930,-10316)
+(3931,-10309)
+(3932,-10310)
+(3932,-10322)
+(3933,-10324)
+(3934,-10327)
+(3932,-10334)
+(3933,-10340)
+(3935,-10337)
+(3938,-10342)
+(3940,-10341)
+(3940,-10345)
+(3941,-10354)
+(3941,-10357)
+(3942,-10359)
+(3941,-10368)
+(3942,-10371)
+(3940,-10368)
+(3940,-10360)
+(3938,-10361)
+(3937,-10360)
+(3936,-10344)
+(3932,-10346)
+(3929,-10340)
+(3928,-10348)
+(3925,-10344)
+(3926,-10337)
+(3930,-10329)
+(3921,-10335)
+(3915,-10335)
+(3914,-10335)
+(3916,-10337)
+(3916,-10343)
+(3915,-10352)
+(3914,-10355)
+(3916,-10357)
+(3916,-10360)
+(3915,-10362)
+(3914,-10361)
+(3913,-10357)
+(3913,-10338)
+(3912,-10335)
+(3908,-10331)
+(3908,-10335)
+(3905,-10332)
+(3906,-10328)
+(3905,-10328)
+(3895,-10348)
+(3895,-10350)
+(3895,-10352)
+(3894,-10356)
+(3893,-10362)
+(3892,-10365)
+(3891,-10368)
+(3893,-10377)
+(3892,-10383)
+(3891,-10385)
+(3889,-10386)
+(3887,-10392)
+(3887,-10390)
+(3891,-10378)
+(3887,-10367)
+(3886,-10367)
+(3884,-10372)
+(3883,-10372)
+(3883,-10378)
+(3880,-10385)
+(3880,-10383)
+(3881,-10374)
+(3880,-10372)
+(3877,-10377)
+(3875,-10381)
+(3875,-10377)
+(3877,-10373)
+(3878,-10367)
+(3876,-10364)
+(3875,-10360)
+(3874,-10353)
+(3873,-10348)
+(3870,-10346)
+(3866,-10337)
+(3865,-10347)
+(3864,-10350)
+(3863,-10358)
+(3865,-10364)
+(3865,-10368)
+(3868,-10366)
+(3870,-10369)
+(3871,-10370)
+(3871,-10376)
+(3870,-10377)
+(3870,-10381)
+(3868,-10384)
+(3868,-10375)
+(3867,-10373)
+(3865,-10374)
+(3860,-10374)
+(3859,-10378)
+(3857,-10380)
+(3855,-10391)
+(3859,-10406)
+(3862,-10405)
+(3867,-10396)
+(3867,-10399)
+(3871,-10397)
+(3873,-10401)
+(3875,-10400)
+(3875,-10403)
+(3877,-10405)
+(3870,-10401)
+(3868,-10402)
+(3864,-10408)
+(3861,-10415)
+(3861,-10421)
+(3865,-10443)
+(3873,-10447)
+(3878,-10461)
+(3879,-10457)
+(3880,-10457)
+(3880,-10467)
+(3887,-10491)
+(3889,-10500)
+(3891,-10499)
+(3892,-10501)
+(3887,-10501)
+(3887,-10508)
+(3887,-10524)
+(3887,-10529)
+(3889,-10531)
+(3890,-10525)
+(3891,-10525)
+(3891,-10532)
+(3893,-10534)
+(3895,-10538)
+(3897,-10549)
+(3901,-10555)
+(3904,-10549)
+(3910,-10547)
+(3917,-10555)
+(3918,-10553)
+(3921,-10556)
+(3924,-10556)
+(3929,-10566)
+(3929,-10571)
+(3929,-10580)
+(3933,-10594)
+(3937,-10624)
+(3935,-10633)
+(3930,-10644)
+(3929,-10650)
+(3929,-10662)
+(3929,-10692)
+(3929,-10702)
+(3931,-10713)
+(3933,-10714)
+(3934,-10711)
+(3937,-10712)
+(3938,-10709)
+(3944,-10708)
+(3945,-10711)
+(3945,-10717)
+(3946,-10719)
+(3947,-10718)
+(3947,-10721)
+(3951,-10727)
+(3953,-10732)
+(3955,-10734)
+(3956,-10732)
+(3963,-10739)
+(3959,-10727)
+(3961,-10722)
+(3967,-10720)
+(3967,-10716)
+(3970,-10713)
+(3971,-10714)
+(3974,-10711)
+(3976,-10712)
+(3978,-10710)
+(3984,-10710)
+(3984,-10712)
+(3982,-10714)
+(3982,-10715)
+(3982,-10718)
+(3979,-10719)
+(3972,-10727)
+(3970,-10738)
+(3972,-10744)
+(3975,-10747)
+(3978,-10745)
+(3983,-10747)
+(3985,-10751)
+(3981,-10751)
+(3977,-10751)
+(3978,-10758)
+(3979,-10760)
+(3981,-10765)
+(3971,-10755)
+(3968,-10763)
+(3967,-10778)
+(3968,-10781)
+(3968,-10775)
+(3969,-10775)
+(3971,-10782)
+(3967,-10786)
+(3957,-10789)
+(3948,-10785)
+(3938,-10760)
+(3936,-10762)
+(3932,-10759)
+(3926,-10772)
+(3916,-10774)
+(3910,-10782)
+(3909,-10789) \ No newline at end of file