/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R E F E R E N C E S   A U X   D O N N E S   C O M M U N E S  :                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    Dans ce fichier, se trouvent                                                                                   */
/*                  toutes les references aux donnees                                                                                */
/*                  communes de 'v image_image_ALEATOIRES_1_FON'                                                                     */
/*                  et utiles aux autres modules.                                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xiii/aleat.1$EXT' sur 'LACT19' :                                                                               */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20240828092326).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R E F E R E N C E S   A U X   D O N N E S   C O M M U N E S  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#ifndef   DejaInclus__image_image_ALEATOIRES_1_EXT

#    ifdef     DECLARATIONS_DES_FONCTIONS_ET_DE_LEURS_ARGUMENTS_VERSION_01

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0001  */
DEFV(Ailleurs,DEFV(Float,Irandom_niveaux_____maximum_ouvert));
DEFV(Ailleurs,DEFV(Float,ValeurParDefautDe_____Irandom_niveaux_____maximum_ouvert));
DEFV(Ailleurs,DEFV(Float,Irandom_niveaux_____maximum_ferme));
DEFV(Ailleurs,DEFV(Float,ValeurParDefautDe_____Irandom_niveaux_____maximum_ferme));
DEFV(Ailleurs,DEFV(Positive,Irandom_niveaux_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_niveaux())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0001  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0002  */
DEFV(Ailleurs,DEFV(Positive,IFrandom_niveaux_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionF,POINTERF(IFrandom_niveaux())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0002  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0003  */
DEFV(Ailleurs,DEFV(Positive,Irandom_niveaux_a_periodicite_parametrable_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_niveaux_a_periodicite_parametrable())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0003  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0004  */
DEFV(Ailleurs,DEFV(Positive,IFrandom_niveaux_a_periodicite_parametrable_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionF,POINTERF(IFrandom_niveaux_a_periodicite_parametrable())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0004  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0005  */
DEFV(Ailleurs,DEFV(Positive,Irandom_positions_____nombre_de_points_marques));
DEFV(Ailleurs,DEFV(Positive,ValeurParDefautDe_____Irandom_positions_____nombre_de_points_marques));
DEFV(Ailleurs,DEFV(genere_p,Irandom_positions_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(genere_p,ValeurParDefautDe_____Irandom_positions_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(Positive,Irandom_positions_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_positions())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0005  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0006  */
DEFV(Ailleurs,DEFV(Logical,Irandom_shuffling_____compatibilite_20160201));
DEFV(Ailleurs,DEFV(Logical,ValeurParDefautDe_____Irandom_shuffling_____compatibilite_20160201));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____increment_1_coordonnee_X));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____increment_1_coordonnee_X));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____increment_1_coordonnee_Y));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____increment_1_coordonnee_Y));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____increment_2_coordonnee_X));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____increment_2_coordonnee_X));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____increment_2_coordonnee_Y));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____increment_2_coordonnee_Y));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____nombre_maximal_de_collisions));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____nombre_maximal_de_collisions));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____limite_du_detecteur_de_collisions));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____limite_du_detecteur_de_collisions));
DEFV(Ailleurs,DEFV(Positive,Irandom_shuffling_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_shuffling())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0006  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0007  */
DEFV(Ailleurs,DEFV(genere_p,Irandom_coordonnees_____niveau_du_fond));
DEFV(Ailleurs,DEFV(genere_p,ValeurParDefautDe_____Irandom_coordonnees_____niveau_du_fond));
DEFV(Ailleurs,DEFV(genere_p,Irandom_coordonnees_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(genere_p,ValeurParDefautDe_____Irandom_coordonnees_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(Logical,Irandom_coordonnees_____unicite_des_marquages));
DEFV(Ailleurs,DEFV(Logical,ValeurParDefautDe_____Irandom_coordonnees_____unicite_des_marquages));
DEFV(Ailleurs,DEFV(Int,Irandom_coordonnees_____translation_de_la_graine_pour_X));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_coordonnees_____translation_de_la_graine_pour_X));
DEFV(Ailleurs,DEFV(Int,Irandom_coordonnees_____translation_de_la_graine_pour_Y));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_coordonnees_____translation_de_la_graine_pour_Y));
DEFV(Ailleurs,DEFV(Positive,Irandom_coordonnees_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_coordonnees())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0007  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0008  */
DEFV(Ailleurs,DEFV(genere_p,Irandom_positions_variable_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(genere_p,ValeurParDefautDe_____Irandom_positions_variable_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(Positive,Irandom_positions_variable_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_positions_variable())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0008  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0009  */
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0009  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0010  */
DEFV(Ailleurs,DEFV(Logical,Ishuffling_inverse_____compatibilite_20040106));
DEFV(Ailleurs,DEFV(Logical,ValeurParDefautDe_____Ishuffling_inverse_____compatibilite_20040106));
DEFV(Ailleurs,DEFV(Positive,Ishuffling_inverse_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Ishuffling_inverse())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0010  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0011  */
DEFV(Ailleurs,DEFV(Positive,IFdispersion_aleatoire_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionF,POINTERF(IFdispersion_aleatoire())));
DEFV(Ailleurs,DEFV(Positive,IFdispersion_aleatoire_back_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionF,POINTERF(IFdispersion_aleatoire_back())));
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0011  */

#    Aifdef    DECLARATIONS_DES_FONCTIONS_ET_DE_LEURS_ARGUMENTS_VERSION_01
#    Eifdef    DECLARATIONS_DES_FONCTIONS_ET_DE_LEURS_ARGUMENTS_VERSION_01

#    ifdef     DECLARATIONS_DES_FONCTIONS_ET_DE_LEURS_ARGUMENTS_VERSION_02
/* -------------------------------------------------------------------------------------------------------------------- Bblock=0001  */
DEFV(Ailleurs,DEFV(Float,Irandom_niveaux_____maximum_ouvert));
DEFV(Ailleurs,DEFV(Float,ValeurParDefautDe_____Irandom_niveaux_____maximum_ouvert));
DEFV(Ailleurs,DEFV(Float,Irandom_niveaux_____maximum_ferme));
DEFV(Ailleurs,DEFV(Float,ValeurParDefautDe_____Irandom_niveaux_____maximum_ferme));
DEFV(Ailleurs,DEFV(Positive,Irandom_niveaux_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_niveaux(DEFV(Argument,DEFV(image,Argument_____imageR))
                                                     ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                     ,DEFV(Argument,DEFV(Float,Argument_____borne_inferieure))
                                                     ,DEFV(Argument,DEFV(Float,Argument_____borne_superieure))
                                                      )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0001  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0002  */
DEFV(Ailleurs,DEFV(Positive,IFrandom_niveaux_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionF,POINTERF(IFrandom_niveaux(DEFV(Argument,DEFV(imageF,Argument_____imageR))
                                                      ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                      ,DEFV(Argument,DEFV(Float,Argument_____borne_inferieure))
                                                      ,DEFV(Argument,DEFV(Float,Argument_____borne_superieure))
                                                       )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0002  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0003  */
DEFV(Ailleurs,DEFV(Positive,Irandom_niveaux_a_periodicite_parametrable_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_niveaux_a_periodicite_parametrable(DEFV(Argument,DEFV(image,Argument_____imageR))
                                                                                 )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0003  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0004  */
DEFV(Ailleurs,DEFV(Positive,IFrandom_niveaux_a_periodicite_parametrable_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionF,POINTERF(IFrandom_niveaux_a_periodicite_parametrable(DEFV(Argument,DEFV(imageF,Argument_____imageR))
                                                                                  )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0004  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0005  */
DEFV(Ailleurs,DEFV(Positive,Irandom_positions_____nombre_de_points_marques));
DEFV(Ailleurs,DEFV(Positive,ValeurParDefautDe_____Irandom_positions_____nombre_de_points_marques));
DEFV(Ailleurs,DEFV(genere_p,Irandom_positions_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(genere_p,ValeurParDefautDe_____Irandom_positions_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(Positive,Irandom_positions_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_positions(DEFV(Argument,DEFV(image,Argument_____imageR))
                                                       ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                       ,DEFV(Argument,DEFV(Float,Argument_____seuil_de_generation))
                                                        )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0005  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0006  */
DEFV(Ailleurs,DEFV(Logical,Irandom_shuffling_____compatibilite_20160201));
DEFV(Ailleurs,DEFV(Logical,ValeurParDefautDe_____Irandom_shuffling_____compatibilite_20160201));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____increment_1_coordonnee_X));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____increment_1_coordonnee_X));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____increment_1_coordonnee_Y));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____increment_1_coordonnee_Y));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____increment_2_coordonnee_X));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____increment_2_coordonnee_X));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____increment_2_coordonnee_Y));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____increment_2_coordonnee_Y));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____nombre_maximal_de_collisions));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____nombre_maximal_de_collisions));
DEFV(Ailleurs,DEFV(Int,Irandom_shuffling_____limite_du_detecteur_de_collisions));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_shuffling_____limite_du_detecteur_de_collisions));
DEFV(Ailleurs,DEFV(Positive,Irandom_shuffling_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_shuffling(DEFV(Argument,DEFV(image,Argument_____imageR))
                                                       ,DEFV(Argument,DEFV(image,Argument_____imageA))
                                                       ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                       ,DEFV(Argument,DEFV(Float,Argument_____seuil_de_generation))
                                                        )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0006  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0007  */
DEFV(Ailleurs,DEFV(genere_p,Irandom_coordonnees_____niveau_du_fond));
DEFV(Ailleurs,DEFV(genere_p,ValeurParDefautDe_____Irandom_coordonnees_____niveau_du_fond));
DEFV(Ailleurs,DEFV(genere_p,Irandom_coordonnees_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(genere_p,ValeurParDefautDe_____Irandom_coordonnees_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(Logical,Irandom_coordonnees_____unicite_des_marquages));
DEFV(Ailleurs,DEFV(Logical,ValeurParDefautDe_____Irandom_coordonnees_____unicite_des_marquages));
DEFV(Ailleurs,DEFV(Int,Irandom_coordonnees_____translation_de_la_graine_pour_X));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_coordonnees_____translation_de_la_graine_pour_X));
DEFV(Ailleurs,DEFV(Int,Irandom_coordonnees_____translation_de_la_graine_pour_Y));
DEFV(Ailleurs,DEFV(Int,ValeurParDefautDe_____Irandom_coordonnees_____translation_de_la_graine_pour_Y));
DEFV(Ailleurs,DEFV(Positive,Irandom_coordonnees_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_coordonnees(DEFV(Argument,DEFV(image,Argument_____imageR))
                                                         ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                         ,DEFV(Argument,DEFV(Positive,Argument_____nombre_de_points_a_marquer))
                                                          )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0007  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0008  */
DEFV(Ailleurs,DEFV(genere_p,Irandom_positions_variable_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(genere_p,ValeurParDefautDe_____Irandom_positions_variable_____niveau_des_points_probables));
DEFV(Ailleurs,DEFV(Positive,Irandom_positions_variable_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Irandom_positions_variable(DEFV(Argument,DEFV(image,Argument_____imageR))
                                                                ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                                ,DEFV(Argument,DEFV(Float,Argument_____facteur_des_niveaux))
                                                                ,DEFV(Argument,DEFV(image,Argument_____image_de_contrainte))
                                                                 )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0008  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0009  */
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0009  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0010  */
DEFV(Ailleurs,DEFV(Logical,Ishuffling_inverse_____compatibilite_20040106));
DEFV(Ailleurs,DEFV(Logical,ValeurParDefautDe_____Ishuffling_inverse_____compatibilite_20040106));
DEFV(Ailleurs,DEFV(Positive,Ishuffling_inverse_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionP,POINTERp(Ishuffling_inverse(DEFV(Argument,DEFV(image,Argument_____imageR))
                                                        ,DEFV(Argument,DEFV(image,Argument_____imageA))
                                                        ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                        ,DEFV(Argument,DEFV(Float,Argument_____force_le_long_de_OX))
                                                        ,DEFV(Argument,DEFV(Float,Argument_____force_le_long_de_OY))
                                                         )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0010  */

/* -------------------------------------------------------------------------------------------------------------------- Bblock=0011  */
DEFV(Ailleurs,DEFV(Positive,IFdispersion_aleatoire_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionF,POINTERF(IFdispersion_aleatoire(DEFV(Argument,DEFV(imageF,Argument_____imageR))
                                                            ,DEFV(Argument,DEFV(imageF,Argument_____imageA))
                                                            ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                            ,DEFV(Argument,DEFV(Int,Argument_____nombre_de_points_du_nuage))
                                                            ,DEFV(Argument,DEFV(Int,Argument_____dispersion_inferieure_des_X))
                                                            ,DEFV(Argument,DEFV(Int,Argument_____dispersion_superieure_des_X))
                                                            ,DEFV(Argument,DEFV(Int,Argument_____dispersion_inferieure_des_Y))
                                                            ,DEFV(Argument,DEFV(Int,Argument_____dispersion_superieure_des_Y))
                                                            ,DEFV(Argument,DEFV(Float,Argument_____dispersion_inferieure_des_niveaux))
                                                            ,DEFV(Argument,DEFV(Float,Argument_____dispersion_superieure_des_niveaux))
                                                            ,DEFV(Argument,DEFV(Logical,Argument_____prendre_le_maximum))
                                                             )
                                      )
                   )
     );
DEFV(Ailleurs,DEFV(Positive,IFdispersion_aleatoire_back_____Fcompteur_DAppel));
DEFV(Ailleurs,DEFV(FonctionF,POINTERF(IFdispersion_aleatoire_back(DEFV(Argument,DEFV(imageF,Argument_____imageR))
                                                                 ,DEFV(Argument,DEFV(imageF,Argument_____imageA))
                                                                 ,DEFV(Argument,DEFV(Int,Argument_____graine))
                                                                 ,DEFV(Argument,DEFV(Int,Argument_____nombre_de_points_du_nuage))
                                                                 ,DEFV(Argument,DEFV(Int,Argument_____dispersion_inferieure_des_X))
                                                                 ,DEFV(Argument,DEFV(Int,Argument_____dispersion_superieure_des_X))
                                                                 ,DEFV(Argument,DEFV(Int,Argument_____dispersion_inferieure_des_Y))
                                                                 ,DEFV(Argument,DEFV(Int,Argument_____dispersion_superieure_des_Y))
                                                                 ,DEFV(Argument,DEFV(Float,Argument_____dispersion_inferieure_des_niveaux))
                                                                 ,DEFV(Argument,DEFV(Float,Argument_____dispersion_superieure_des_niveaux))
                                                                 ,DEFV(Argument,DEFV(Logical,Argument_____prendre_le_maximum))
                                                                  )
                                      )
                   )
     );
/* -------------------------------------------------------------------------------------------------------------------- Eblock=0011  */

#    Aifdef    DECLARATIONS_DES_FONCTIONS_ET_DE_LEURS_ARGUMENTS_VERSION_02
#    Eifdef    DECLARATIONS_DES_FONCTIONS_ET_DE_LEURS_ARGUMENTS_VERSION_02

#    ifdef     NePasInclure_____ARG
#    Aifdef    NePasInclure_____ARG
#         include   image_image_ALEATOIRES_1_ARG
#    Eifdef    NePasInclure_____ARG

#    define    DejaInclus__image_image_ALEATOIRES_1_EXT

#Aifndef  DejaInclus__image_image_ALEATOIRES_1_EXT
#Eifndef  DejaInclus__image_image_ALEATOIRES_1_EXT




Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.