Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 928733 - app-office/libreoffice-24.2.2.2 fails to compile: error: no member named 'TranslateDocumentCancellable' in namespace 'SwTranslateHelper'
Summary: app-office/libreoffice-24.2.2.2 fails to compile: error: no member named 'Tra...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Gentoo Office Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: nonbash
  Show dependency tree
 
Reported: 2024-04-06 13:33 UTC by foearb
Modified: 2024-05-21 15:17 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
emerge --info (file_928733.txt,8.51 KB, text/plain)
2024-04-06 13:40 UTC, foearb
Details
libreoffice-24.2.3.1:20240502-091225.log.gz (libreoffice-24.2.3.1:20240502-091225.log.gz,917.77 KB, application/gzip)
2024-05-02 09:30 UTC, Paolo Pedroni
Details
# equery -N -C g --linear ... (LO.list.txt,9.88 KB, text/plain)
2024-05-18 08:33 UTC, Manfred Knick
Details
Patch configure.ac (configure-test.patch,869 bytes, patch)
2024-05-18 16:16 UTC, Chris Mayo
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description foearb 2024-04-06 13:33:27 UTC
Fails to compile with GCC 14

Reproducible: Always
Comment 1 foearb 2024-04-06 13:40:58 UTC
Created attachment 889587 [details]
emerge --info
Comment 2 foearb 2024-04-06 13:50:57 UTC
build.log
http://0x0.st/XiM3.txt
Comment 3 foearb 2024-04-06 14:09:50 UTC
And GCC 14 is irrelevant since I used clang anyway... :D
Comment 4 Paolo Pedroni 2024-04-17 15:49:28 UTC
Same thing in libreoffice-24.2.3.1
Comment 5 Paolo Pedroni 2024-05-02 09:30:21 UTC
Created attachment 892136 [details]
libreoffice-24.2.3.1:20240502-091225.log.gz

I tried with both gcc-13.2 and clang-17: same error.

The attached log is for the gcc-13.2 build.
Comment 6 Paolo Pedroni 2024-05-02 09:31:58 UTC
# emerge --info =app-office/libreoffice-24.2.3.1
Portage 3.0.61 (python 3.11.9-final-0, default/linux/amd64/23.0/desktop/plasma/systemd, gcc-13, glibc-2.38-r13, 6.6.21-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-6.6.21-gentoo-x86_64-AMD_Ryzen_9_7950X3D_16-Core_Processor-with-glibc2.38
KiB Mem:   131010028 total,  59823120 free
KiB Swap:  134217724 total, 134165756 free
Timestamp of repository gentoo: Thu, 02 May 2024 06:15:00 +0000
Head commit of repository gentoo: b2bbc714a89b726b74244dbb5bd5aef205cd96ae
sh dash 0.5.12
ld GNU ld (Gentoo 2.41 p5) 2.41.0
distcc 3.4 x86_64-pc-linux-gnu [disabled]
ccache version 4.9.1 [disabled]
app-misc/pax-utils:        1.3.7::gentoo
app-shells/bash:           5.1_p16-r6::gentoo
dev-build/autoconf:        2.71-r7::gentoo
dev-build/automake:        1.16.5-r2::gentoo
dev-build/cmake:           3.28.3::gentoo
dev-build/libtool:         2.4.7-r4::gentoo
dev-build/make:            4.4.1-r1::gentoo
dev-build/meson:           1.4.0-r1::gentoo
dev-java/java-config:      2.3.3-r1::gentoo
dev-lang/perl:             5.38.2-r2::gentoo
dev-lang/python:           3.11.9::gentoo, 3.12.3::gentoo
dev-lang/rust:             1.77.1::gentoo
dev-util/ccache:           4.9.1::gentoo
sys-apps/baselayout:       2.15::gentoo
sys-apps/sandbox:          2.38::gentoo
sys-apps/systemd:          255.4::gentoo
sys-devel/binutils:        2.41-r5::gentoo
sys-devel/binutils-config: 5.5::gentoo
sys-devel/clang:           17.0.6::gentoo
sys-devel/gcc:             13.2.1_p20240210::gentoo
sys-devel/gcc-config:      2.11::gentoo
sys-devel/lld:             17.0.6::gentoo
sys-devel/llvm:            17.0.6::gentoo
sys-kernel/linux-headers:  6.6-r1::gentoo (virtual/os-headers)
sys-libs/glibc:            2.38-r13::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.europe.gentoo.org/gentoo-portage
    priority: -1000
    volatile: True
    sync-rsync-verify-metamanifest: yes
    sync-rsync-extra-opts: 
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-jobs: 1

x-portage
    location: /usr/local/portage
    masters: gentoo
    priority: 0
    volatile: True

Binary Repositories:

gentoobinhost
    priority: 1
    sync-uri: https://gentoo.osuosl.org/releases/amd64/binpackages/23.0/x86-64-v3

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE"
AR="/usr/bin/gcc-ar"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -frecord-gcc-switches -march=znver4 -mshstk -flto=16 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/easy-rsa /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d"
CXXFLAGS="-O2 -pipe -frecord-gcc-switches -march=znver4 -mshstk -flto=16 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
DISTDIR="/var/cache/distfiles"
EMERGE_DEFAULT_OPTS="--keep-going y --with-bdeps y"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME"
FCFLAGS="-O2 -pipe -frecord-gcc-switches -march=znver4 -mshstk -flto=16 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live compress-build-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms sign split-elog split-log strict test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe -frecord-gcc-switches -march=znver4 -mshstk -flto=16 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
GENTOO_MIRRORS="https://gentoo.mirror.garr.it/ https://mirror.netcologne.de/gentoo/ https://mirrors.evoluso.com/gentoo/ https://gentoo.mirrors.ovh.net/gentoo-distfiles/"
LANG="it_IT.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,--hash-style=gnu -Wl,--sort-common"
LEX="flex"
MAKEOPTS="-j32 -l32"
NM="/usr/bin/gcc-nm"
PKGDIR="/var/cache/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
RANLIB="/usr/bin/gcc-ranlib"
SHELL="/bin/bash"
USE="X a52 aac aalib acl acpi activities adns alsa amd64 ao audiofile avif bash-completion bluetooth branding brotli bzip2 cairo caps cdda cddb cdparanoia cdr cet colord crypt css cups curl dbus declarative dga djvu dri dts dvd dvdr encode exif expat fbcon ffmpeg fftw flac fontconfig foomaticdb fortran ftp gd gdbm geoip gif gimp gles2 gmp gnutls gphoto2 gpm graphviz gstreamer gtk gui guile handbook heif http2 iconv icu idn imagemagick imlib introspection ipv6 java javascript jbig jemalloc jpeg jpeg2k jpegxl kde kf6compat kwallet lame lapack lcms libass libnotify libsamplerate libtirpc lm-sensors lto lua lz4 lzma lzo mad magic man mhash mmap mng mp3 mp4 mpeg multilib musicbrainz ncurses nls offensive ogg openal opencl opengl openmp opus pam pango pcre pdf pipewire plasma png policykit postscript ppds pulseaudio qml qt5 qt6 rdesktop readline recode samba screencast sctp sdl seccomp sndfile sockets sound speex spell sqlite ssl startup-notification svg symlink syslog systemd sysvipc taglib telemetry test test-rust theora threads tidy tiff truetype udev udisks unicode upower usb v4l vaapi vala verify-sig vim-syntax vnc vorbis vulkan wavpack wayland webp widgets win32codecs wmf wxwidgets x264 xattr xcb xft xinerama xml xpm xscreensaver xv xvid yahoo zip zlib zstd" ABI_X86="64" ADA_TARGET="gcc_12" ALSA_CARDS="hda-intel virmidi" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 avx512_bf16 avx512_bitalg avx512_vbmi2 avx512_vnni avx512_vpopcntdq avx512bw avx512cd avx512dq avx512f avx512ifma avx512vbmi avx512vl f16c fma3 mmx mmxext pclmul popcnt rdrand sha sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 vpclmulqdq" CURL_SSL="gnutls" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 ntrip navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="libinput" KERNEL="linux" L10N="it en" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LLVM_TARGETS="AMDGPU" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-1" POSTGRES_TARGETS="postgres15" PYTHON_SINGLE_TARGET="python3_11" PYTHON_TARGETS="python3_11" RUBY_TARGETS="ruby31" VIDEO_CARDS="amdgpu radeon radeonsi" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account"
Unset:  ADDR2LINE, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PYTHONPATH, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS

# emerge -1pqv =app-office/libreoffice-24.2.3.1
[ebuild     U ] app-office/libreoffice-24.2.3.1 [7.6.6.3] USE="bluetooth branding cups dbus googledrive gstreamer java kde mariadb pdfimport qt6%* vulkan -accessibility -base -clang* -coinmp -custom-cflags -debug -eds -firebird -gtk -ldap -odk -postgres -qt5% (-test) -valgrind" LIBREOFFICE_EXTENSIONS="-nlpsolver -scripting-beanshell -scripting-javascript -wiki-publisher" PYTHON_SINGLE_TARGET="python3_11 -python3_10 -python3_12"
Comment 7 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-05-02 09:32:15 UTC
(In reply to foearb from comment #2)
> build.log
> http://0x0.st/XiM3.txt

Paolo has done it here so no need, but in future, please always attach logs (compressed if necessary), as pastebins expire or may not be accessible via firewalls.
Comment 8 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-05-02 09:33:57 UTC
I don't remember what changed here recently? Did this version build fine for ou before?
Comment 9 Paolo Pedroni 2024-05-02 10:08:32 UTC
(In reply to Sam James from comment #8)
> I don't remember what changed here recently? Did this version build fine for
> ou before?

No, never built for me. I just published some logs as I've seen they never had been before.
Comment 10 foearb 2024-05-02 10:43:31 UTC
The log was too large, even xz-compressed...

If I remember correctly it built with clang+libc++ before version 24.2.2.2, but since then it fails with either standard library.
Comment 11 Manfred Knick 2024-05-12 16:46:32 UTC
WORKSFORME:

 =app-office/libreoffice-24.2.3.2:0                     **
 =app-office/libreoffice-l10n-24.2.3.2:0                **


equery list gcc

[IP-] [  ] sys-devel/gcc-13.2.1_p20240503:13


equery list app-office/libreoffice  app-office/libreoffice-l10n

[IP-] [  ] app-office/libreoffice-24.2.3.2:0
[IP-] [  ] app-office/libreoffice-l10n-24.2.3.2:0


Hth
Kind regards
Manfred
Comment 12 Paolo Pedroni 2024-05-15 08:39:29 UTC
(In reply to Manfred Knick from comment #11)
> WORKSFORME:
> 
>  =app-office/libreoffice-24.2.3.2:0                     **
>  =app-office/libreoffice-l10n-24.2.3.2:0                **
> 
> 
> equery list gcc
> 
> [IP-] [  ] sys-devel/gcc-13.2.1_p20240503:13
> 
> 
> equery list app-office/libreoffice  app-office/libreoffice-l10n
> 
> [IP-] [  ] app-office/libreoffice-24.2.3.2:0
> [IP-] [  ] app-office/libreoffice-l10n-24.2.3.2:0
> 
> 
> Hth
> Kind regards
> Manfred

Ehm, no:
/var/tmp/portage/app-office/libreoffice-24.2.3.2/work/libreoffice-24.2.3.2/sw/source/ui/misc/translatelangselect.cxx:160:24: error: no member named 'TranslateDocumentCancellable' in namespace 'SwTranslateHelper'
  160 |     SwTranslateHelper::TranslateDocumentCancellable(m_rWrtSh, aConfig, m_bCancelTranslation);
      |     ~~~~~~~~~~~~~~~~~~~^

What are you USE flags?

For me it's:
# emerge -1pqv =libreoffice-24.2.3.2
[ebuild     U ] app-office/libreoffice-24.2.3.2 [7.6.6.3] USE="bluetooth branding clang cups dbus googledrive gstreamer java kde mariadb pdfimport qt6%* vulkan -accessibility -base -coinmp -custom-cflags -debug -eds -firebird -gtk -ldap -odk -postgres -qt5% (-test) -valgrind" LIBREOFFICE_EXTENSIONS="-nlpsolver -scripting-beanshell -scripting-javascript -wiki-publisher" PYTHON_SINGLE_TARGET="python3_11 -python3_10 -python3_12"
Comment 13 Manfred Knick 2024-05-15 10:25:31 UTC
(In reply to Paolo Pedroni from comment #12)

> WORKSFORME:

> Ehm, no:

Sorry, but you are not entitled to deny that LO *does* work for me.

Concerning the difference:

- I use plain standard USE flags plus "clang java".

- AFAICS, Foearb and you have enabled a whole bunch of additional USE flags,
    enabling
- - bluetooth
- - googledrive
- - gstreamer
- - kde
- - pdfimport
- - qt6%* 

So I suggest disclosure and due differential analysis.
Comment 15 Paolo Pedroni 2024-05-17 12:16:56 UTC
(In reply to Manfred Knick from comment #13)
> (In reply to Paolo Pedroni from comment #12)
> 
> > WORKSFORME:
> 
> > Ehm, no:
> 
> Sorry, but you are not entitled to deny that LO *does* work for me.

Sorry if that bothered you, I didn't mean to. It was more or less in jest.

> So I suggest disclosure and due differential analysis.

Working on that: libreoffice is quite a cumbersome and long package to build, so it will take its time.
Comment 16 Paolo Pedroni 2024-05-17 14:11:37 UTC
This is weird. Even replicating (more or less) Manfred's USE flags, I still get the error.

These are the flags I've used in my last attempt:

 * USE:        abi_x86_64 amd64 branding clang cups dbus elibc_glibc gtk java kernel_linux mariadb python_single_target_python3_11 vulkan

And still:
/var/tmp/portage/app-office/libreoffice-24.2.3.2/work/libreoffice-24.2.3.2/sw/source/ui/misc/translatelangselect.cxx:160:24: error: no member named 'TranslateDocumentCancellable' in namespace 'SwTranslateHelper'
  160 |     SwTranslateHelper::TranslateDocumentCancellable(m_rWrtSh, aConfig, m_bCancelTranslation);

I'm stumped.

Manfred, please, can you check the USE flags you're using against the ones above and see if there's any difference?

Thanks in advance.

BTW, which version of java are you using?
Comment 17 Paolo Pedroni 2024-05-17 14:28:40 UTC
And while we're at it, what is the output of

# equery -N -C g --linear =libreoffice-24.2.3.2 | grep -v keyword

on your system?
Comment 18 Manfred Knick 2024-05-17 19:58:21 UTC
(In reply to Paolo Pedroni from comment #16)

>  * USE:        abi_x86_64 amd64 branding clang cups dbus elibc_glibc gtk
> java kernel_linux mariadb python_single_target_python3_11 vulkan

I'm on 
[46]  default/linux/amd64/23.0/split-usr/desktop (stable) *
in a mostly standard, up-to-date fashion.

You are on 
default/linux/amd64/23.0/desktop/plasma/systemd
which may explain "kde" etc

Nevertheless:
from /usr/portage/app-office/libreoffice/libreoffice-24.2.3.2.ebuild :

IUSE="accessibility base bluetooth +branding clang coinmp +cups custom-cflags +dbus debug eds firebird
googledrive gstreamer +gtk kde ldap +mariadb odk pdfimport postgres qt5 qt6 test valgrind vulkan

and - @ my place -

# emerge -pv app-office/libreoffice
...  USE="branding clang cups dbus gtk java mariadb qt5 vulkan - ..."

? Where do you get your explicit additional ones from ?
  abi_x86_64 amd64 ... elibc_glibc ... kernel_linux ...
  python_single_target_python3_11 ...
None of these I find in IUSE !

Please, do excuse my question:
Do you have your system up-to-date ?

Perhaps you might try strictly restricted to only those USE flags from IUSE 
with a "+" attached in front, first.

If that succeeds, you may test enabling additional USE flags.

But if that fails already, you have to severely check your system setup, I fear.

Without that basic test first, 
it would feel like "guessing from a glass ball" to me.

Hth


BTW:
# equery list java*
[IP-] [  ] dev-java/java-config-2.3.3-r1:2     <--- only.
Comment 19 Manfred Knick 2024-05-18 08:29:59 UTC
In order to minimize the burden of consecutive builds, you might try

      FEATURES="${FEATURES} keeptemp keepwork"

( further explanation, as far as I can remember: 
      gentoo > wiki > etc/portage/package.env    )
Comment 20 Manfred Knick 2024-05-18 08:33:33 UTC
Created attachment 893301 [details]
# equery -N -C g --linear ...

# equery -N -C g --linear =libreoffice-24.2.3.2 | grep -v keyword

Hth
Comment 21 Manfred Knick 2024-05-18 13:13:39 UTC
NOTABENE:

- The OP and it's attachments are against libreoffice-24.2.3.1
  which is not in tree any more

- My WORKSFORME in comment  12 is against libreoffice-24.2.3.2

- Latest comments from Paolo seem to be against libreoffice-24.2.3.2 as well

@ Paolo:
Perhaps you might consider an updated attachment,
(btw obsoleting the old ones) ?
Comment 22 Chris Mayo 2024-05-18 16:16:00 UTC
Created attachment 893321 [details, diff]
Patch configure.ac

I think this is bash/dash rather than USE flags.

Submitted:
https://gerrit.libreoffice.org/c/core/+/167831
Comment 23 Paolo Pedroni 2024-05-20 09:53:04 UTC
(In reply to Chris Mayo from comment #22)
> Created attachment 893321 [details, diff] [details, diff]
> Patch configure.ac
> 
> I think this is bash/dash rather than USE flags.
> 
> Submitted:
> https://gerrit.libreoffice.org/c/core/+/167831

That made it. Thanks Chris.
Comment 24 Paolo Pedroni 2024-05-20 09:56:03 UTC
(In reply to Paolo Pedroni from comment #23)
> (In reply to Chris Mayo from comment #22)
> > Created attachment 893321 [details, diff] [details, diff] [details, diff]
> > Patch configure.ac
> > 
> > I think this is bash/dash rather than USE flags.
> > 
> > Submitted:
> > https://gerrit.libreoffice.org/c/core/+/167831
> 
> That made it. Thanks Chris.

Or better: I didn't actually try the patch, I just set CONFIG_SHELL=/bin/bash, and it compiled fine.

I will test the patch later, anyway.
Comment 25 Larry the Git Cow gentoo-dev 2024-05-21 15:14:15 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=05375d418d2b826c23438985d3f75e6c85d8f86a

commit 05375d418d2b826c23438985d3f75e6c85d8f86a
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2024-05-21 15:08:42 +0000
Commit:     Andreas Sturmlechner <asturm@gentoo.org>
CommitDate: 2024-05-21 15:13:57 +0000

    app-office/libreoffice: Fix bashism
    
    Closes: https://bugs.gentoo.org/928733
    Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>

 .../files/libreoffice-24.2.3.2-fix-bashism.patch   | 55 ++++++++++++++++++++++
 app-office/libreoffice/libreoffice-24.2.3.2.ebuild |  3 ++
 2 files changed, 58 insertions(+)