OK, so re-config and re-make got past that. However, check.p puked all over the place including: dyld: Library not loaded: libOverture.dylib (full log file attached). Best, Joe
On Mar 5, 2012, at 4:58 PM, J. P. Bernstein wrote: > Sorry all. I mean that I DID do make clean before. > > On Mar 5, 2012, at 4:56 PM, J. P. Bernstein wrote: > >> That must be it. >> >> Kyle, the output says it wrote the file. I just did a reconfig, and the file >> was there. Indeed, I did not make clean before. >> >> Best, >> >> Joe >> >> >> On Mar 5, 2012, at 4:52 PM, Erik Wilson wrote: >> >>> >>> If I remember correctly a "make clean" removes that file, which has bit me >>> in the past. >>> >>> >>> On 03/05/2012 03:46 PM, Kyle K. Chand wrote: >>>> Well, that is funny, one of the last things Overture's configure script >>>> does (supposed to do!) is write configure.options... There is even a >>>> check to make sure it opened correctly. >>>> What is the output when you run Overture's configure script? You might >>>> want to do this in another build directory so it does not mess up all the >>>> dependencies. >>>> >>>> Kyle >>>> >>>> mailto: chand1@xxxxxxxx >>>> phoneto: (925) 422 7740 >>>> >>>> >>>> >>>> On Mar 5, 2012, at 2:37 PM, J. P. Bernstein wrote: >>>> >>>>> Thanks, Kyle. >>>>> >>>>> That worked. After several fixes for library location issues, make >>>>> concluded without errors (is there supposed to be a "success" message)? I >>>>> will send an email to the list recounting each step that I had to do to >>>>> build Overture on Mac OSX Lion once I am able to run the tests (see >>>>> below). >>>>> >>>>> When I tried to run check.p, I got: >>>>> >>>>> [alcfwl150:local/ztar/Overture.v24] root# ./check.p >>>>> unable to open /usr/local/Overture.v24/configure.options. Check your >>>>> Overture env variable. >>>>> 1 at ./check.p line 30. >>>>> >>>>> The file in question is, indeed, missing from $Overture. Has it been >>>>> superseded, or something? >>>>> >>>>> Best, >>>>> >>>>> Joe >>>>> >>>>> On Mar 5, 2012, at 12:48 PM, Kyle K. Chand wrote: >>>>> >>>>>> Hi Joe, >>>>>> >>>>>> I have two fixes for this, one is nice and cryptic. I can't remember >>>>>> what exactly is broken about the configure (I thought it was fixed) but >>>>>> the configure script think you are using a build of Mesa rather than a >>>>>> distribution on the system or Macports (hence the relative directory >>>>>> references in the include file). What is your OpenGL set to? >>>>>> >>>>>> fix 1: Change $Overture/include/OvertureDefines.h so that the >>>>>> OV_USE_MESA variable is set to: >>>>>> #define OV_USE_MESA 2 >>>>>> Note you will need to manually change this every time you do a configure >>>>>> >>>>>> fix 2: Build your own copy of the Mesa libraries somewhere and set your >>>>>> OpenGL environment variable accordingly. The nice thing about this fix >>>>>> is that you will get offscreen rendering for hardcopies (and no worries >>>>>> upon re-running configure). >>>>>> >>>>>> Regards, >>>>>> Kyle >>>>>> >>>>>> mailto: chand1@xxxxxxxx >>>>>> phoneto: (925) 422 7740 >>>>>> >>>>>> >>>>>> >>>>>> On Mar 5, 2012, at 9:31 AM, J. P. Bernstein wrote: >>>>>> >>>>>>> Hello Kyle, >>>>>>> >>>>>>> The command you suggested did not work (see below). I was able to work >>>>>>> around the issue by doing "sudo tcsh" to open a root shell and making a >>>>>>> symbolic line to the Mesa lib (again, see below). >>>>>>> >>>>>>> The make ran for some time and then failed with: >>>>>>> >>>>>>> -------------------- >>>>>>> osRender.C:215:45: error: GL/../../src/mesa/main/context.h: No such >>>>>>> file or directory >>>>>>> osRender.C:230: error: 'GLcontext' does not name a type >>>>>>> osRender.C:231: error: ISO C++ forbids declaration of 'GLvisual' with >>>>>>> no type >>>>>>> osRender.C:231: error: expected ';' before '*' token >>>>>>> osRender.C:232: error: ISO C++ forbids declaration of 'GLframebuffer' >>>>>>> with no type >>>>>>> osRender.C:232: error: expected ';' before '*' token >>>>>>> osRender.C:241: error: ISO C++ forbids declaration of 'GLchan' with no >>>>>>> type >>>>>>> osRender.C:241: error: expected ';' before '*' token >>>>>>> osRender.C: In member function 'int >>>>>>> GL_GraphicsInterface::offScreenRenderMesa(const char*, >>>>>>> GraphicsParameters&)': >>>>>>> osRender.C:299: error: 'GLcontext' was not declared in this scope >>>>>>> osRender.C:299: error: 'CC' was not declared in this scope >>>>>>> osRender.C:299: error: expected primary-expression before ')' token >>>>>>> osRender.C:299: error: expected `;' before 'OSMesaGetCurrentContext' >>>>>>> osRender.C:313: error: 'oldCC' was not declared in this scope >>>>>>> osRender.C:313: error: expected primary-expression before ')' token >>>>>>> osRender.C:313: error: 'struct osmesa_context' has no member named >>>>>>> 'gl_ctx' >>>>>>> osRender.C:314: error: 'struct osmesa_context' has no member named >>>>>>> 'gl_ctx' >>>>>>> osRender.C:314: error: expected primary-expression before ')' token >>>>>>> osRender.C:314: error: expected `;' before 'CC' >>>>>>> osRender.C:322: error: expected primary-expression before ')' token >>>>>>> osRender.C:322: error: 'struct osmesa_context' has no member named >>>>>>> 'gl_ctx' >>>>>>> osRender.C:322: error: '_mesa_copy_context' was not declared in this >>>>>>> scope >>>>>>> osRender.C:359: error: 'struct osmesa_context' has no member named >>>>>>> 'gl_ctx' >>>>>>> osRender.C:359: error: expected primary-expression before ')' token >>>>>>> osRender.C:359: error: expected `)' before 'oldCC' >>>>>>> make[1]: *** [osRender.o] Error 1 >>>>>>> make: *** [all] Error 2 >>>>>>> -------------------- >>>>>>> >>>>>>> Any thoughts? >>>>>>> >>>>>>> Best, >>>>>>> >>>>>>> Joe >>>>>>> >>>>>>> >>>>>>> ++++++++++sudo and source issue++++++++++ >>>>>>> sudo "source defenv; ./configure darwin useHDF5 FC=gfortran" >>>>>>> >>>>>>> resulted in: >>>>>>> >>>>>>> -------------------- >>>>>>> usage: sudo -h | -K | -k | -L | -V >>>>>>> usage: sudo -v [-AknS] [-g groupname|#gid] [-p prompt] [-u user >>>>>>> name|#uid] >>>>>>> usage: sudo -l[l] [-AknS] [-g groupname|#gid] [-p prompt] [-U user >>>>>>> name] [-u user >>>>>>> name|#uid] [-g groupname|#gid] [command] >>>>>>> usage: sudo [-AbEHknPS] [-C fd] [-g groupname|#gid] [-p prompt] [-u >>>>>>> user name|#uid] >>>>>>> [-g groupname|#gid] [VAR=value] [-i|-s] [<command>] >>>>>>> usage: sudo -e [-AknS] [-C fd] [-g groupname|#gid] [-p prompt] [-u user >>>>>>> name|#uid] >>>>>>> file ... >>>>>>> -------------------- >>>>>>> >>>>>>> So I tried this: >>>>>>> >>>>>>> -------------------- >>>>>>> alcfwl150:Overture.v24 jpbernst$ sudo source defenv; sudo ./configure >>>>>>> darwin useHDF5 FC=gfortran >>>>>>> Password: >>>>>>> sudo: source: command not found >>>>>>> *** configure for machine = darwin **** >>>>>>> *** machineType = [x86_64] **** >>>>>>> First checking for proper definition of Overture environmental >>>>>>> variables: >>>>>>> ERROR: environmental variable APlusPlus = DOES NOT EXIST >>>>>>> ERROR: environmental variable OpenGL = DOES NOT EXIST >>>>>>> ERROR: environmental variable HDF = DOES NOT EXIST >>>>>>> ERROR: environmental variable Overture = DOES NOT EXIST >>>>>>> ERROR: environmental variable XLIBS = DOES NOT EXIST >>>>>>> ERROR: Unable to find OpenGL library libGL or libMesaGL in /lib64 >>>>>>> Check the OpenGL environmental variable and try again >>>>>>> INFO: I am going to copy my version of the GLw files into >>>>>>> Overture/static directory >>>>>>> Checking for the Motif header files in /include/Xm/ >>>>>>> Unable to find the Motif or Lesstif file /include/Xm/Xm.h >>>>>>> Check your MOTIF environmental variable, MOTIF=[]. It seems to be >>>>>>> incorrect. >>>>>>> -------------------- >>>>>>> >>>>>>> I then tried the following, which worked, as far as the env vars are >>>>>>> concerned, but uncovered a Mesa location issue: >>>>>>> >>>>>>> -------------------- >>>>>>> alcfwl150:Overture.v24 jpbernst$ sudo tcsh >>>>>>> [alcfwl150:/usr/local/Overture.v24] root# source defenv >>>>>>> [alcfwl150:/usr/local/Overture.v24] root# ./configure darwin useHDF5 >>>>>>> FC=gfortran >>>>>>> *** configure for machine = darwin **** >>>>>>> *** machineType = [x86_64] **** >>>>>>> First checking for proper definition of Overture environmental >>>>>>> variables: >>>>>>> APlusPlus = /usr/local/A++P++-0.8.0/A++/install >>>>>>> OpenGL = /opt/local >>>>>>> HDF = /opt/local >>>>>>> Overture = /usr/local/Overture.v24 >>>>>>> XLIBS = /opt/local >>>>>>> ERROR: Unable to find OpenGL library libGL or libMesaGL in >>>>>>> /opt/local/lib64 >>>>>>> -------------------- >>>>>>> >>>>>>> I devised the following fix: >>>>>>> >>>>>>> -------------------- >>>>>>> [alcfwl150:/usr/local/Overture.v24] root# mkdir /opt/local/lib64 >>>>>>> [alcfwl150:/usr/local/Overture.v24] root# ln -s >>>>>>> /opt/local/lib/libOSMesa.7.dylib /opt/local/lib64/libMesaGL.dylib >>>>>>> [alcfwl150:/usr/local/Overture.v24] root# ./configure darwin useHDF5 >>>>>>> FC=gfortran *** configure for machine = darwin **** >>>>>>> *** machineType = [x86_64] **** >>>>>>> First checking for proper definition of Overture environmental >>>>>>> variables: >>>>>>> APlusPlus = /usr/local/A++P++-0.8.0/A++/install >>>>>>> OpenGL = /opt/local >>>>>>> HDF = /opt/local >>>>>>> Overture = /usr/local/Overture.v24 >>>>>>> XLIBS = /opt/local >>>>>>> Using Mesa `OpenGL' libraries since libMesaGL found in /opt/local/lib64 >>>>>>> Mesa has GLwDrawA.h in the include dir >>>>>>> INFO: I am going to copy my version of the GLw files into >>>>>>> Overture/static directory >>>>>>> Checking for the Motif header files in /opt/local/include/Xm/ >>>>>>> Using motif. >>>>>>> perlloc = [/opt/local/lib/perl5/5.12.3/darwin-multi-2level/CORE] >>>>>>> Using perl headers and lib from >>>>>>> perllibs=[/opt/local/lib/perl5/5.12.3/darwin-multi-2level/CORE] >>>>>>> Will link to the libraries perllibs=[-lperl -ldl -lm -lutil -lc] >>>>>>> Using configuration file config/MakeDefs.darwin >>>>>>> Using hdf 5 >>>>>>> Using Compilers: C++=g++, C=gcc, Fortran=gfortran (base version: >>>>>>> C++=g++, C=gcc, Fortran=gfortran) >>>>>>> Using g++ version g++ (GCC) 4.3.6 >>>>>>> gcc lib directory = /opt/local/lib64 >>>>>>> **Overture will be compiled in double precision >>>>>>> debugging turned on, using debugFlag=-g. >>>>>>> Checking for bool support >>>>>>> bool is supported. >>>>>>> Checking for exceptions support >>>>>>> exceptions are supported. >>>>>>> Checking for STL availability. $STLINC= >>>>>>> stl is available using std include format >>>>>>> the compiler understands namespaces >>>>>>> >>>>>>> the compiler understands default template arguments >>>>>>> >>>>>>> the compiler understands explicit >>>>>>> Create the Makefile for directory: mapUtil >>>>>>> Create the Makefile for directory: phoneyFiles >>>>>>> Create the Makefile for directory: Cad >>>>>>> Create the Makefile for directory: DataBase >>>>>>> Create the Makefile for directory: Grid >>>>>>> Create the Makefile for directory: GridFunction >>>>>>> Create the Makefile for directory: GridGenerator >>>>>>> Create the Makefile for directory: Mapping >>>>>>> Create the Makefile for directory: Oges >>>>>>> Create the Makefile for directory: Ogshow >>>>>>> Create the Makefile for directory: otherStuff >>>>>>> Create the Makefile for directory: bin >>>>>>> Create the Makefile for directory: boxlib >>>>>>> Create the Makefile for directory: lib >>>>>>> Create the Makefile for directory: primer >>>>>>> Create the Makefile for directory: sampleGrids >>>>>>> Create the Makefile for directory: static >>>>>>> Create the Makefile for directory: templates >>>>>>> Create the Makefile for directory: examples >>>>>>> Create the Makefile for directory: Ogmg >>>>>>> Create the Makefile for directory: tests >>>>>>> >>>>>>> configuration options written to file configure.options >>>>>>> >>>>>>> Make options saved to file make.options. >>>>>>> >>>>>>> Build the Makefile in the main directory >>>>>>> done configuration. >>>>>>> >>>>>>> **************************************************************************************************** >>>>>>> WARNING: Environment variable LANG=en_US.UTF-8 -- Overture may not work >>>>>>> with this language. >>>>>>> European languages may reverse the meaning of `.' and ',' in numbers >>>>>>> such a 3,14 or 3.14 >>>>>>> and then Overture will not parse command files properly. >>>>>>> Type `locale' to see your language settings. You may need to change >>>>>>> to the language `en_US' >>>>>>> **************************************************************************************************** >>>>>>> type `make' to build Overture (or 'make -j2' for a parallel make with 2 >>>>>>> processes). >>>>>>> type `make rapsodi' to build the Rapsodi libraries and rap. >>>>>>> -------------------- >>>>>>> >>>>>>> On Mar 2, 2012, at 5:02 PM, Kyle K. Chand wrote: >>>>>>> >>>>>>>> Joe, >>>>>>>> >>>>>>>> The sudo might be breaking it as it probably starts a new shell. You >>>>>>>> can try this: >>>>>>>> sudo "source defenv; ./configure darwin useHDF5 FC=gfortran" >>>>>>>> Note that you will then have to do >>>>>>>> sudo "source defenv; make" >>>>>>>> to actually build it, assuming this works. This will not work if the >>>>>>>> default shell for root is something other than csh. For example, if it >>>>>>>> is bash then you will need to >>>>>>>> write a bash version of defenv that you can execute in the sudo >>>>>>>> command. >>>>>>>> >>>>>>>> Or login as root and do the install if you need it to have root >>>>>>>> ownership. >>>>>>>> >>>>>>>> regards, >>>>>>>> Kyle >>>>>>>> >>>>>>>> mailto: chand1@xxxxxxxx >>>>>>>> phoneto: (925) 422 7740 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Mar 2, 2012, at 2:28 PM, J. P. Bernstein wrote: >>>>>>>> >>>>>>>>> Thanks, Kyle. That worked with: >>>>>>>>> >>>>>>>>> sudo ./configure --with-CC="/opt/local/bin/gcc -I/usr/include/malloc" >>>>>>>>> --with-CXX="/opt/local/bin/g++ -I/usr/include/malloc" --prefix=`pwd` >>>>>>>>> >>>>>>>>> Moving on to the next step, the enviers set in defenv are not being >>>>>>>>> inherited when trying to build Overture. I have the following set: >>>>>>>>> >>>>>>>>> % cat defenv >>>>>>>>> #! /bin/csh -f >>>>>>>>> # >>>>>>>>> # Define environment variables for Overture >>>>>>>>> # >>>>>>>>> # see the install notes on the web for further explanation or >>>>>>>>> Overture/doc/install.tex >>>>>>>>> # >>>>>>>>> # edit this file and change as appropriate for your system, >>>>>>>>> # then type 'source defenv' >>>>>>>>> >>>>>>>>> # You will need to change the following: >>>>>>>>> setenv XLIBS /opt/local >>>>>>>>> setenv MOTIF /opt/local >>>>>>>>> setenv OpenGL /opt/local >>>>>>>>> setenv HDF /opt/local >>>>>>>>> setenv APlusPlus /usr/local/A++P++-0.8.0/A++/install >>>>>>>>> setenv Overture /usr/local/Overture.v24 >>>>>>>>> >>>>>>>>> >>>>>>>>> but get: >>>>>>>>> >>>>>>>>> % sudo ./configure darwin useHDF5 FC=gfortran >>>>>>>>> Password: >>>>>>>>> *** configure for machine = darwin **** >>>>>>>>> *** machineType = [x86_64] **** >>>>>>>>> First checking for proper definition of Overture environmental >>>>>>>>> variables: >>>>>>>>> ERROR: environmental variable APlusPlus = DOES NOT EXIST >>>>>>>>> ERROR: environmental variable OpenGL = DOES NOT EXIST >>>>>>>>> ERROR: environmental variable HDF = DOES NOT EXIST >>>>>>>>> ERROR: environmental variable Overture = DOES NOT EXIST >>>>>>>>> ERROR: environmental variable XLIBS = DOES NOT EXIST >>>>>>>>> ERROR: Unable to find OpenGL library libGL or libMesaGL in /lib64 >>>>>>>>> Check the OpenGL environmental variable and try again >>>>>>>>> INFO: I am going to copy my version of the GLw files into >>>>>>>>> Overture/static directory >>>>>>>>> Checking for the Motif header files in /include/Xm/ >>>>>>>>> Unable to find the Motif or Lesstif file /include/Xm/Xm.h >>>>>>>>> Check your MOTIF environmental variable, MOTIF=[]. It seems to be >>>>>>>>> incorrect. >>>>>>>>> >>>>>>>>> Any thoughts? >>>>>>>>> >>>>>>>>> Sorry for the basic questions; while I am very experienced with >>>>>>>>> linux, I am rather new to mac. >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> >>>>>>>>> Joe >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mar 1, 2012, at 4:52 PM, Kyle K. Chand wrote: >>>>>>>>> >>>>>>>>>> Joe, >>>>>>>>>> >>>>>>>>>> Below are some more recent instructions for a parallel build of >>>>>>>>>> Overture on a Mac, including an A++P++ configure line which does not >>>>>>>>>> include -mlongcall (that was for older PowerPC macs, I believe). >>>>>>>>>> For a serial build, the A++ configure line I currently use (on a OS >>>>>>>>>> X 10.5.8 machine) is: >>>>>>>>>> % ./configure --with-CC="/Users/chand1/MacPorts/bin/gcc >>>>>>>>>> -I/usr/include/malloc" --with-CXX="/Users/chand1/MacPorts/bin/g++ >>>>>>>>>> -I/usr/include/malloc" >>>>>>>>>> --prefix="/Users/chand1/Overture/A++P++/A++P++-0.7.9d/gcc4.3.3" >>>>>>>>>> Note, my MacPorts is not installed in /opt/local, you will need to >>>>>>>>>> adjust the configure line appropriately. >>>>>>>>>> >>>>>>>>>> For Overture, one would use >>>>>>>>>> % configure darwin useHDF5 FC=gfortran >>>>>>>>>> or something similar. >>>>>>>>>> >>>>>>>>>> Regards, >>>>>>>>>> Kyle >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> mailto: chand1@xxxxxxxx >>>>>>>>>> phoneto: (925) 422 7740 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Begin forwarded message: >>>>>>>>>> >>>>>>>>>>> From: Kyle K.Chand <chand1@xxxxxxxx> >>>>>>>>>>> Date: September 24, 2010 3:44:20 PM PDT >>>>>>>>>>> To: Ramesh Balakrishnan <bramesh@xxxxxxxxxxxx> >>>>>>>>>>> Cc: "overture@xxxxxxxxxxxxx" <overture@xxxxxxxxxxxxx> >>>>>>>>>>> Subject: [overture] Parallel Overture on Mac >>>>>>>>>>> Reply-To: "overture@xxxxxxxxxxxxx" <overture@xxxxxxxxxxxxx> >>>>>>>>>>> >>>>>>>>>>> Hi Ramesh, >>>>>>>>>>> >>>>>>>>>>> I managed to build Overture on the Mac. There were a few odd >>>>>>>>>>> things. >>>>>>>>>>> >>>>>>>>>>> 0) It appears that openmpi is on the mac by default in /usr, I had >>>>>>>>>>> not >>>>>>>>>>> known that. >>>>>>>>>>> You can also use the openmpi and mpich or lam mpi from macports. >>>>>>>>>>> >>>>>>>>>>> 1) the configure line for A++P++ is: >>>>>>>>>>> >>>>>>>>>>> ./configure --prefix=`pwd` --without-PADRE --disable-shared >>>>>>>>>>> --disable- >>>>>>>>>>> mpirun-check --enable-PXX --with-CC="gcc -I/usr/include/malloc" >>>>>>>>>>> --with- >>>>>>>>>>> CXX="g++ -I/usr/include/malloc" --with-mpi-libs="-lmpi_cxx -lmpi" >>>>>>>>>>> >>>>>>>>>>> 2) To build A++P++, use : >>>>>>>>>>> make MAKE=make install >>>>>>>>>>> >>>>>>>>>>> 3) make sure you have a parallel build of HDF5 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> 4) configure Overture using something like: >>>>>>>>>>> ./configure darwin parallel useHDF5 FC=gfortran >>>>>>>>>>> >>>>>>>>>>> 5) Now you need to fix the PFLAGS variable in >>>>>>>>>>> $Overture/GridFunction/ >>>>>>>>>>> Makefile in order to add -I/usr/include/malloc >>>>>>>>>>> >>>>>>>>>>> 6) In the primer directory Makefile, eliminate the -Wl-weak- >>>>>>>>>>> framework,VecLib option from all the make variables >>>>>>>>>>> >>>>>>>>>>> 7) Fix ParallelUtility.C, the bool version of broadCast should be: >>>>>>>>>>> void >>>>>>>>>>> broadCast( bool & value, const int & fromProcessor ) >>>>>>>>>>> { >>>>>>>>>>> #ifdef USE_PPP >>>>>>>>>>> if( Communication_Manager::Number_Of_Processors==0 ) >>>>>>>>>>> return; >>>>>>>>>>> >>>>>>>>>>> int tmpValue = value; >>>>>>>>>>> MPI_Bcast( &tmpValue, 1, MPI_INT, fromProcessor, MPI_COMM_WORLD); >>>>>>>>>>> value = tmpValue; >>>>>>>>>>> >>>>>>>>>>> #endif >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> 8) Now you should be able to build Overture and also build the >>>>>>>>>>> examples primer/pppWave and primer/pwave >>>>>>>>>>> >>>>>>>>>>> I was able to build and run pppWave and pwave with two MPI tasks on >>>>>>>>>>> my >>>>>>>>>>> mac laptop. We are working the fixes >>>>>>>>>>> into the next release. >>>>>>>>>>> >>>>>>>>>>> Let me know how this works! >>>>>>>>>>> Kyle >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> mailto: chand1@xxxxxxxx >>>>>>>>>>> phoneto: (925) 422 7740 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>>> >>> >>> >> >> > >