Some errors at startup

Home Forums AR Sandbox Forum Some errors at startup

This topic contains 11 replies, has 4 voices, and was last updated by  Stephan 3 years, 3 months ago.

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #101536

    Stephan
    Participant

    Hi,

    thank You for that great software. 🙂

    I installed all necessary software and calibrated step by step everything. I used the videos, the webpage and the readme file. This works very well.
    But when I try to start the SARndbox program, sometimes it gives me an error and exits.

    I started the program from the “~/src/SARandbox-1.6” directory with “./bin/SARndbox -ftp” or “./bin/SARndbox -ftp -ws 0.0 0” (without water simulation)

    Sometimes the error is:
    *** Error in `./bin/SARndbox’: double free or corruption (!prev): 0x0000000003512070 ***

    Sometimes it is:
    *** Error in `./bin/SARndbox’: corrupted double-linked list: 0x0000000002a71b10 ***

    And sometimes:
    Speicherzugriffsfehler
    (This means an memoryerror)

    Othertimes the program starts, but only gives me a green surface. It not shows different highs and its not interactive. Looks like it stocks, but I can open the menue by pressing a key and can exit by pressing esc.

    My Hardware is older and so I tried to start SARndbox also without water simulation, but this didn’t help.

    Hardware:
    Acer Travelmate 5720 Notebook
    CPU Intel Core 2 Duo
    GPU Intel GMA X3100
    4 GB Ram

    Software:
    Mint 17.2 with Mate (clean install)
    Vrui-3.1-004
    Kinect-2.8-002
    SARndbox 1.6

    I don’t know what is the problem. Can anybody help?

    #101539

    Oliver Kreylos
    Keymaster

    The required command line parameter is -fpv (“fix projector view”) not -ftp. This shouldn’t cause an issue, but could you please try again?

    Also, what is the full output from SARndbox when it crashes?

    #101541

    Stephan
    Participant

    Hi Oliver,

    thank You for the answer.

    Of course it is “-fpv”. I only wrote it wrong in the post. Was late and my brain tired.

    There is no “full output” when it crashes. It looks like this:

    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    Speicherzugriffsfehler
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    Speicherzugriffsfehler
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    *** Error in ./bin/SARndbox': double free or corruption (!prev): 0x0000000002347c40 ***
    Abgebrochen
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    Speicherzugriffsfehler
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    Speicherzugriffsfehler
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    Speicherzugriffsfehler
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    Speicherzugriffsfehler
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    Speicherzugriffsfehler
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    *** Error in ./bin/SARndbox': double free or corruption (!prev): 0x0000000001f162c0 ***
    Abgebrochen
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    *** Error in ./bin/SARndbox': corrupted double-linked list: 0x000000000235ccc0 ***
    Abgebrochen
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ ./bin/SARndbox -fpv
    0.124335 x 0.11346
    Speicherzugriffsfehler
    stephan@stephan-TravelMate-5720 ~/src/SARndbox-1.6 $ 
    

    If the error is “Speicherzugriffsfehler”, the window isn’t coming up.
    The two other errors happen, if the windows with the green surface come up, nothing happens and I press esc. In this case there is the word “Abgebrochen” what means canceled.

    IMO there are only two things I did not pefectly like I should do:
    1.) The GPU is very old and slow and not the Nvidia GeForce GTX 970.
    2.) I used the Mint 17.2 (64 bit) / Mate “No codecs” (WITHOUT multimedia support).

    Maybe one of those are the problem?

    • This reply was modified 3 years, 3 months ago by  Stephan.
    #101556

    Oliver Kreylos
    Keymaster

    The (lack of) output is a good data point.

    What GPU (and driver) do you have? Please run

    $ lspci | grep VGA

    and

    $ glxinfo

    in a terminal and post the results here.

    #101558

    Stephan
    Participant

    Here we go:

    $ lspci | grep VGA
    00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (primary) (rev 03)
    

    and

    $ glxinfo
    name of display: :0.0
    display: :0  screen: 0
    direct rendering: Yes
    server glx vendor string: SGI
    server glx version string: 1.4
    server glx extensions:
        GLX_ARB_create_context, GLX_ARB_create_context_profile, 
        GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample, 
        GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB, 
        GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
        GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
        GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig, 
        GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
    client glx vendor string: Mesa Project and SGI
    client glx version string: 1.4
    client glx extensions:
        GLX_ARB_create_context, GLX_ARB_create_context_profile, 
        GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float, 
        GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
        GLX_EXT_create_context_es2_profile, GLX_EXT_fbconfig_packed_float, 
        GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, 
        GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
        GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
        GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
        GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
        GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
        GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
        GLX_SGI_swap_control, GLX_SGI_video_sync
    GLX version: 1.4
    GLX extensions:
        GLX_ARB_create_context, GLX_ARB_create_context_profile, 
        GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, 
        GLX_ARB_get_proc_address, GLX_ARB_multisample, 
        GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB, 
        GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, 
        GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 
        GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 
        GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 
        GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
        GLX_SGIX_visual_select_group, GLX_SGI_make_current_read, 
        GLX_SGI_swap_control, GLX_SGI_video_sync
    OpenGL vendor string: Intel Open Source Technology Center
    OpenGL renderer string: Mesa DRI Intel(R) 965GM 
    OpenGL version string: 2.1 Mesa 10.1.3
    OpenGL shading language version string: 1.20
    OpenGL extensions:
        GL_3DFX_texture_compression_FXT1, GL_AMD_seamless_cubemap_per_texture, 
        GL_AMD_shader_trinary_minmax, GL_ANGLE_texture_compression_dxt3, 
        GL_ANGLE_texture_compression_dxt5, GL_APPLE_object_purgeable, 
        GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object, 
        GL_ARB_ES2_compatibility, GL_ARB_clear_buffer_object, 
        GL_ARB_color_buffer_float, GL_ARB_copy_buffer, GL_ARB_debug_output, 
        GL_ARB_depth_buffer_float, GL_ARB_depth_clamp, GL_ARB_depth_texture, 
        GL_ARB_draw_buffers, GL_ARB_draw_elements_base_vertex, 
        GL_ARB_draw_instanced, GL_ARB_explicit_attrib_location, 
        GL_ARB_fragment_coord_conventions, GL_ARB_fragment_program, 
        GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader, 
        GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB, 
        GL_ARB_get_program_binary, GL_ARB_half_float_pixel, 
        GL_ARB_half_float_vertex, GL_ARB_instanced_arrays, 
        GL_ARB_internalformat_query, GL_ARB_invalidate_subdata, 
        GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multisample, 
        GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_occlusion_query2, 
        GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite, 
        GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects, 
        GL_ARB_seamless_cube_map, GL_ARB_shader_bit_encoding, 
        GL_ARB_shader_objects, GL_ARB_shader_texture_lod, 
        GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_sync, 
        GL_ARB_texture_border_clamp, GL_ARB_texture_compression, 
        GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map, 
        GL_ARB_texture_env_add, GL_ARB_texture_env_combine, 
        GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, 
        GL_ARB_texture_float, GL_ARB_texture_mirror_clamp_to_edge, 
        GL_ARB_texture_mirrored_repeat, GL_ARB_texture_non_power_of_two, 
        GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui, 
        GL_ARB_texture_storage, GL_ARB_texture_swizzle, GL_ARB_transpose_matrix, 
        GL_ARB_vertex_array_bgra, GL_ARB_vertex_array_object, 
        GL_ARB_vertex_attrib_binding, GL_ARB_vertex_buffer_object, 
        GL_ARB_vertex_program, GL_ARB_vertex_shader, 
        GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_window_pos, 
        GL_ATI_blend_equation_separate, GL_ATI_draw_buffers, 
        GL_ATI_envmap_bumpmap, GL_ATI_separate_stencil, 
        GL_ATI_texture_env_combine3, GL_ATI_texture_float, GL_EXT_abgr, 
        GL_EXT_bgra, GL_EXT_blend_color, GL_EXT_blend_equation_separate, 
        GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract, 
        GL_EXT_compiled_vertex_array, GL_EXT_copy_texture, GL_EXT_draw_buffers2, 
        GL_EXT_draw_instanced, GL_EXT_draw_range_elements, GL_EXT_fog_coord, 
        GL_EXT_framebuffer_blit, GL_EXT_framebuffer_object, 
        GL_EXT_framebuffer_sRGB, GL_EXT_gpu_program_parameters, 
        GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil, 
        GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object, 
        GL_EXT_point_parameters, GL_EXT_polygon_offset, GL_EXT_provoking_vertex, 
        GL_EXT_rescale_normal, GL_EXT_secondary_color, 
        GL_EXT_separate_shader_objects, GL_EXT_separate_specular_color, 
        GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, 
        GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D, 
        GL_EXT_texture_array, GL_EXT_texture_compression_dxt1, 
        GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc, 
        GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp, 
        GL_EXT_texture_env_add, GL_EXT_texture_env_combine, 
        GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic, 
        GL_EXT_texture_integer, GL_EXT_texture_lod_bias, GL_EXT_texture_object, 
        GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, 
        GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm, 
        GL_EXT_texture_swizzle, GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, 
        GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip, 
        GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate, GL_KHR_debug, 
        GL_MESA_pack_invert, GL_MESA_texture_signed_rgba, GL_MESA_window_pos, 
        GL_NV_blend_square, GL_NV_conditional_render, GL_NV_depth_clamp, 
        GL_NV_light_max_exponent, GL_NV_packed_depth_stencil, 
        GL_NV_primitive_restart, GL_NV_texgen_reflection, 
        GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_OES_EGL_image, 
        GL_OES_read_format, GL_S3_s3tc, GL_SGIS_generate_mipmap, 
        GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp, 
        GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays
    
    12 GLX Visuals
        visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
      id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
    ----------------------------------------------------------------------------
    0x020 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x021 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x075 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
    0x076 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
    0x077 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x078 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
    0x079 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
    0x07a 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
    0x07b 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x07c 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x07d 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
    0x05c 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    
    24 GLXFBConfigs:
        visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
      id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
    ----------------------------------------------------------------------------
    0x05d  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
    0x05e  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
    0x05f  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
    0x060  0 tc  0  16  0 r  . .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
    0x061 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
    0x062 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
    0x063 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x064 24 tc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x065  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
    0x066  0 tc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
    0x067 32 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x068 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
    0x069  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
    0x06a  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0  0  0  0  0  0  0  0 0 None
    0x06b  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
    0x06c  0 dc  0  16  0 r  . .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
    0x06d 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
    0x06e 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0  0  0  0  0  0  0  0 0 None
    0x06f 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x070 24 dc  0  32  0 r  . .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x071  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0  0  0  0  0  0 0 None
    0x072  0 dc  0  16  0 r  y .   5  6  5  0 .  .  0 16  0 16 16 16  0  0 0 Slow
    0x073 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None
    0x074 24 dc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow
    
    #101559

    Jensen
    Participant

    Is compositing enabled? Sometimes it is disabled by default in MATE.

    If your brave, you could try out the the new OpenSWR-mesa drivers, they’re supposedly give you 30x-50x faster software rendering, might do the X3100 some good.
    https://github.com/OpenSWR/openswr-mesa

    Other than that, i would try reinstalling mesa, maybe enable a the third party software sources. I’m sure Oliver Kreylos will be able to give you a better rundown on wether or not your output looks good, but to me it seems like its all ok.

    #101565

    INTPTT
    Participant

    I may be talking out of order here… but I think you’re gonna have a bad time with just the Intel integrated graphics and a lower-end CPU. I realize you’re running without the water, which would be a requirement, but I have a feeling it’s not going to be very happy on that hardware. Oliver could certainly expand on that thought more (or tell me I’m completely wrong.) =)

    #101577

    Stephan
    Participant

    Thanks for the reply.

    Composing is enabled. Thats not the problem.

    I tried to install OpenSWR it, but I’m not quite sure, if I do it correct. There some problems when compile OpenSWR with scons. It says

    fatal: Not a git repository (or any of the parent directories): .git
    warning: LLVM disabled: not building llvmpipe
    warning: LLVM disabled: not building swr

    Don’t know what to do…

    Reinstalling mesa did not work ether. :-/

    • This reply was modified 3 years, 3 months ago by  Stephan.
    #101579

    Stephan
    Participant

    Of course a faster system is much better, but I think the problem is not the speed. And may be we can show that an older system is enough for the basic funcionality.

    #101581

    Oliver Kreylos
    Keymaster

    Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller

    That’s not going to work. Intel’s GMA X3100 graphics adapter, which is based on the GM965/GL960 chipset, is from 2007, before several graphics features required by the AR Sandbox even existed. When SARndbox requests those features, the Mesa OpenGL library falls back to software emulation mode, which is not only orders of magnitude slower than hardware rendering, but also quite buggy, especially in the modern features that don’t make sense in software emulation, and are therefore hardly used or tested. My guess is the crashes you are getting are happening inside the Mesa library itself, not in SARndbox.

    Regarding speed: I just tested the AR Sandbox software on my new laptop, which has an Intel Core i5-5200U CPU with integrated HD 5500 graphics adapter. This is a 2015 CPU, and still doesn’t support the framebuffer / shader features required to run the water simulation. Without water simulation, the sandbox ran at a rate of around 25 frames per second, with visible glitches in contour line rendering (which hint at graphics driver bugs).

    According to the wikipedia article I linked above, this GPU is on the order of 50 times faster than the GMA X3100 (based on comparing core clock rate times number of computing units).

    #101582

    Oliver Kreylos
    Keymaster

    SWR is neat, but the 29x – 52x speed-up can not be expected for this application. The primary difference between SWR and vanilla Mesa is multi-threading in the vertex processing stage, meaning that SWR can use multiple CPU cores for geometry-heavy workloads like the isosurface/slice rendering for large 3D data sets they are targeting, i.e., tens of millions of triangles per frame. The 29x speed-up for 3M triangle geometries is achieved on a machine with 36 CPU cores.

    Furthermore, the AR Sandbox is fill-limited, not geometry-limited. The rendered surface consists of exactly 612,162 triangles ( (640-1)*(480-1)*2 ), and the majority of work is per-pixel work in the fragment shader. The water simulation is even more extreme; it only renders 2 (two) triangles per computation step, and everything is done in fragment shaders.

    The fragment processing stage of SWR is not architecturally different from vanilla Mesa, which is already multi-threaded.

    SWR is meant for one specific application: visualization of tera-scale 3D data on massively parallel supercomputers, using fixed-function OpenGL as employed by Vtk/ParaView/VisIt. It probably won’t help much on a typical gaming PC or laptop with 2-4 CPU cores, and with fill-limited software using complex shaders.

    #101594

    Stephan
    Participant

    Ok, thank you very much for the Info. Then I try to find a faster Computer.

    • This reply was modified 3 years, 3 months ago by  Stephan.
Viewing 12 posts - 1 through 12 (of 12 total)

You must be logged in to reply to this topic.

Comments are closed.